diff --git a/@AresModAchillesExpansion/addons/data_f_achilles.pbo b/@AresModAchillesExpansion/addons/data_f_achilles.pbo index 88b88138..c6294ca2 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.5.bisign b/@AresModAchillesExpansion/addons/data_f_achilles.pbo.Achilles_0.0.5.bisign deleted file mode 100644 index fc44c17b..00000000 Binary files a/@AresModAchillesExpansion/addons/data_f_achilles.pbo.Achilles_0.0.5.bisign and /dev/null differ diff --git a/@AresModAchillesExpansion/addons/data_f_achilles.pbo.Achilles_0.0.6.bisign b/@AresModAchillesExpansion/addons/data_f_achilles.pbo.Achilles_0.0.6.bisign new file mode 100644 index 00000000..5f71b49f Binary files /dev/null and b/@AresModAchillesExpansion/addons/data_f_achilles.pbo.Achilles_0.0.6.bisign differ diff --git a/@AresModAchillesExpansion/addons/data_f_achilles/config.cpp b/@AresModAchillesExpansion/addons/data_f_achilles/config.cpp index 4535561c..a654d608 100644 --- a/@AresModAchillesExpansion/addons/data_f_achilles/config.cpp +++ b/@AresModAchillesExpansion/addons/data_f_achilles/config.cpp @@ -12,7 +12,10 @@ class CfgPatches units[] = {}; - requiredAddons[] = {"A3_Structures_F","A3_Structures_F_Mil"}; + requiredAddons[] = {"A3_Structures_F"}; + + // this prevents any patched class from requiring this addon + addonRootClass = "A3_Structures_F"; }; }; @@ -24,90 +27,6 @@ class CfgVehicles { scopeCurator = 2; }; - class RoadBarrier_small_F : RoadCone_L_F - { - scopeCurator = 2; - }; - - class Static : All {}; - - class HBarrier_base_F : Static {}; - class Land_HBarrierTower_F : HBarrier_base_F - { - scopeCurator = 2; - }; - class Land_HBarrier_1_F : HBarrier_base_F - { - scopeCurator = 2; - }; - class Land_HBarrierWall_corridor_F : HBarrier_base_F - { - scopeCurator = 2; - }; - class Land_HBarrierWall6_F : HBarrier_base_F - { - scopeCurator = 2; - }; - class Land_HBarrierWall_corner_F : HBarrier_base_F - { - scopeCurator = 2; - }; - class Land_HBarrierBig_F : HBarrier_base_F {}; - class Land_HBarrier_Big_F : Land_HBarrierBig_F - { - scopeCurator = 2; - }; - class Land_HBarrier_3_F : HBarrier_base_F - { - scopeCurator = 2; - }; - class Land_HBarrier_5_F : HBarrier_base_F - { - scopeCurator = 2; - }; - class Land_HBarrierWall4_F : HBarrier_base_F - { - scopeCurator = 2; - }; - - class BagFence_base_F : Static {}; - class Land_BagFence_Short_F : BagFence_base_F - { - scopeCurator = 2; - }; - class Land_BagFence_Round_F : BagFence_base_F - { - scopeCurator = 2; - }; - class Land_BagFence_Long_F : BagFence_base_F - { - scopeCurator = 2; - }; - class Land_BagFence_End_F : BagFence_base_F - { - scopeCurator = 2; - }; - class Land_BagFence_Corner_F : BagFence_base_F - { - scopeCurator = 2; - }; }; - - - - - - - - - - - - - - - - - #include "cfgMusic.hpp" \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/data_f_ares.pbo b/@AresModAchillesExpansion/addons/data_f_ares.pbo index d7fb7ca2..3fca07e0 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.5.bisign b/@AresModAchillesExpansion/addons/data_f_ares.pbo.Achilles_0.0.5.bisign deleted file mode 100644 index 198f61b1..00000000 Binary files a/@AresModAchillesExpansion/addons/data_f_ares.pbo.Achilles_0.0.5.bisign and /dev/null differ diff --git a/@AresModAchillesExpansion/addons/data_f_ares.pbo.Achilles_0.0.6.bisign b/@AresModAchillesExpansion/addons/data_f_ares.pbo.Achilles_0.0.6.bisign new file mode 100644 index 00000000..2db4890e Binary files /dev/null and b/@AresModAchillesExpansion/addons/data_f_ares.pbo.Achilles_0.0.6.bisign differ diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles.pbo b/@AresModAchillesExpansion/addons/functions_f_achilles.pbo index 0f024389..310d3dbe 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.5.bisign b/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.Achilles_0.0.5.bisign deleted file mode 100644 index 56e730d8..00000000 Binary files a/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.Achilles_0.0.5.bisign and /dev/null differ diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.Achilles_0.0.6.bisign b/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.Achilles_0.0.6.bisign new file mode 100644 index 00000000..45f89bbb Binary files /dev/null and b/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.Achilles_0.0.6.bisign differ diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/cfgFunctions.hpp b/@AresModAchillesExpansion/addons/functions_f_achilles/cfgFunctions.hpp index ca160da3..8ad26b9c 100644 --- a/@AresModAchillesExpansion/addons/functions_f_achilles/cfgFunctions.hpp +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/cfgFunctions.hpp @@ -23,12 +23,15 @@ class CfgFunctions class HigherConfigHierarchyLevel; class ClassNamesWhichInheritsFromCfgClass; class getAllTurretConfig; + class weaponsAllTurrets; class getVehicleAmmoDef; class getUnitAmmoDef; class setUnitAmmoDef; class checkLineOfFire2D; class matrixTranspose; class vectorMap; + class dikToLetter; + class getCuratorSelected; }; class functions_f_features @@ -54,6 +57,8 @@ class CfgFunctions class ungroupObjects; class setCuratorVisionModes; class damageBuildings; + class vehicleArsenal; + class preplaceMode; }; }; class A3_Functions_F_Curator @@ -61,12 +66,14 @@ class CfgFunctions class Curator { delete showCuratorAttributes; + delete curatorObjectPlaced; }; class Achilles { file = "\achilles\functions_f_achilles\functions\replacement"; class showCuratorAttributes; + class curatorObjectPlaced; }; }; }; diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_dikToLetter.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_dikToLetter.sqf new file mode 100644 index 00000000..01585808 --- /dev/null +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_dikToLetter.sqf @@ -0,0 +1,16 @@ +#include "\a3\editor_f\Data\Scripts\dikCodes.h" + +#define DIK_LETTERS [DIK_A, DIK_B, DIK_C, DIK_D, DIK_E, DIK_F, DIK_G, DIK_H, DIK_I, DIK_J, DIK_K, DIK_L, DIK_M, DIK_N, DIK_O, DIK_P, DIK_Q, DIK_R, DIK_S, DIK_T, DIK_U, DIK_V, DIK_W, DIK_X, DIK_Y, DIK_Z, DIK_0, DIK_1, DIK_2, DIK_3, DIK_4, DIK_5, DIK_6, DIK_7, DIK_8, DIK_9] +#define STR_LETTERS [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] + +params ["_dikKey"]; + +_index = DIK_LETTERS find _dikKey; + +if (_index == -1) then +{ + "" +} else +{ + STR_LETTERS select _index +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getCuratorSelected.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getCuratorSelected.sqf new file mode 100644 index 00000000..91cf2186 --- /dev/null +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getCuratorSelected.sqf @@ -0,0 +1,66 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// AUTHOR: Kex +// DATE: 2/26/17 +// VERSION: 1.0 +// DESCRIPTION: Get current selected units, vehicles , waypoints or groups by curator +// +// ARGUMENTS: +// _this select 0: STRING - either "man" (units including crew), "vehicle" (vehicles), "cargo" (any object that can store items), "group" (groups), "wp" (waypoints) +// +// RETURNS: +// _this: ARRAY - array of selected objects, waypoints or groups +// +// Example: +// ["man"] call Achilles_fnc_getCuratorSelected; +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +private ["_unaddedCrew","_intersection"]; +private _mode = toLower param [0, "man",[""]]; +private _selected = []; + +switch (_mode) do +{ + case "man": + { + { + if (_x isKindOf "Man") then + { + _selected pushBack _x; + } else + { + if (_x isKindOf "LandVehicle" or _x isKindOf "Air" or _x isKindOf "Ship") then + { + _unaddedCrew = (crew _x) select {not (_x in _selected)}; + _selected append _unaddedCrew; + }; + }; + } forEach (curatorSelected select 0); + }; + case "vehicle": + { + { + if (_x isKindOf "LandVehicle" or _x isKindOf "Air" or _x isKindOf "Ship") then + { + _selected pushBack _x; + }; + } forEach (curatorSelected select 0); + }; + case "cargo": + { + { + if (getNumber (configfile >> "CfgVehicles" >> typeOf _x >> "transportMaxMagazines") > 0) then + { + _selected pushBack _x; + }; + } forEach (curatorSelected select 0); + }; + case "group": + { + _selected = (curatorSelected select 1); + }; + case "wp": + { + _selected = (curatorSelected select 2); + }; +}; +_selected; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_weaponsAllTurrets.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_weaponsAllTurrets.sqf new file mode 100644 index 00000000..640d3351 --- /dev/null +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_weaponsAllTurrets.sqf @@ -0,0 +1,49 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// AUTHOR: Kex +// DATE: 8/3/16 +// VERSION: 1.0 +// DESCRIPTION: Returns all weapons of a vehicle (including turrets) +// +// ARGUMENTS: +// _this select 0: OBJECT - vehicle for which all turret weapons shall be found +// _this select 1: BOOL - (default: false) if true, empty weapons are not considered +// +// RETURNS: +// _this: ARRAY - array weapon classes (string) +// +// Example: +// _weapons = [_vehicle] call Achilles_fnc_weaponsAllTurrets; +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +private ["_path","_weapon","_cfgMagazines"]; +private _vehicle = param [0, objNull, [objNull]]; +private _non_empty_only = param [1, false, [false]]; +private _weapons = []; +private _magazinesAllTurrets = []; +{ + if (_x select 2 > 0) then + { + _magazinesAllTurrets pushBack (_x select 0); + }; +} forEach (magazinesAllTurrets _vehicle); + +{ + _path = _x; + { + _weapon = _x; + if (_non_empty_only) then + { + _cfgMagazines = getArray (configfile >> "CfgWeapons" >> _weapon >> "magazines"); + { + if (_x in _cfgMagazines) exitWith + { + _weapons pushBack _weapon; + }; + } forEach _magazinesAllTurrets; + } else + { + _weapons pushBack _weapon; + }; + } forEach (_vehicle weaponsTurret _path); +} forEach ([[-1]] + allTurrets _vehicle); +_weapons; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_PreplaceMode.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_PreplaceMode.sqf new file mode 100644 index 00000000..fda00f3a --- /dev/null +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_PreplaceMode.sqf @@ -0,0 +1,103 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// AUTHOR: Kex +// DATE: 18/2/17 +// VERSION: 1.0 +// DESCRIPTION: Define position for object in advance +// +// ARGUMENTS: +// _this select 0: OBJECT - Object that shall be placed +// +// RETURNS: +// _this: ARRAY - New world position coordinates +// NIL - If mode was cancled +// +// Example: +// _position = [_object] call Achilles_fnc_PreplaceMode; +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" + +private ["_center_object", "_objects_list","_pos"]; +_entity = param [0, objNull, [objNull, grpNull]]; +if (isNull _entity) exitWith {}; + +if (typeName _entity == typeName grpNull) then +{ + _center_object = leader _entity; + _objects_list = units _entity; +} else +{ + _center_object = _entity; + _objects_list = [_entity]; +}; + +private _center_pos = position _center_object; +private _pos_list = []; +{ + _pos = (position _x) vectorDiff _center_pos; + _pos_list pushBack _pos; + _x enableSimulation false; + _x setPos [0,0,0]; +} forEach _objects_list; + +private _logic_group = createGroup sideLogic; +private _logic = _logic_group createUnit ["Module_f", _center_pos, [], 0, "NONE"]; +[[_logic], true] call Ares_fnc_AddUnitsToCurator; + +disableSerialization; +private _display = finddisplay IDD_RSCDISPLAYCURATOR; +private _ctrlMessage = _display displayctrl IDC_RSCDISPLAYCURATOR_FEEDBACKMESSAGE; + +Achilles_var_submit_selection = nil; + +// 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; + +// 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}; +}]; + +// executed when the choice is submitted or cancled +WaitUntil {!isNil "Achilles_var_submit_selection"}; + +// remove the key handler and the message +_display displayRemoveEventHandler ["KeyDown", _handler_id]; +_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"; + deleteVehicle _logic; + deleteGroup _logic_group; + { + {deleteVehicle _x} forEach (crew _x); + deleteVehicle _x; + } forEach _objects_list; + nil +}; + +// if enter was pressed +[localize "STR_SELECTION_SUBMITTED"] call Ares_fnc_ShowZeusMessage; + +_center_pos = position _logic; +{ + _x setPos ((_pos_list select _forEachIndex) vectorAdd _center_pos); + _x enableSimulation true; +} forEach _objects_list; +deleteVehicle _logic; +deleteGroup _logic_group; +_center_pos; 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 4f06694e..a944ab61 100644 --- a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeAbility.sqf +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeAbility.sqf @@ -14,7 +14,7 @@ // [_unit] call Achilles_fnc_changeAbility; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -#define ABILITIES ["AIMINGERROR","ANIM","AUTOCOMBAT","AUTOTARGET","CHECKVISIBLE","COVER","FSM","MOVE","SUPPRESSION","TARGET"] +#define ABILITIES ["AIMINGERROR","ANIM","AUTOCOMBAT","AUTOTARGET","CHECKVISIBLE","COVER","FSM","MOVE","SUPPRESSION","TARGET","PATH"] private ["_selection","_dialogResult","_mode"]; @@ -33,7 +33,8 @@ _dialogResult = ["FSM:",["true","false"]], ["Move:",["true","false"]], ["Suppression:",["true","false"]], - ["Target:",["true","false"]] + ["Target:",["true","false"]], + ["Path:",["true","false"]] ] ] call Ares_fnc_ShowChooseDialog; diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeSkills.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeSkills.sqf index faa1ea43..42e094c5 100644 --- a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeSkills.sqf +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeSkills.sqf @@ -1,7 +1,7 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // AUTHOR: Kex -// DATE: 1/1/17 -// VERSION: 2.0 +// DATE: 1/27/17 +// VERSION: 3.0 // DESCRIPTION: function that allows changing units skills // // ARGUMENTS: @@ -14,55 +14,156 @@ // [_unit] call Achilles_fnc_changeSkills; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -#define SKILLS ["aimingAccuracy","aimingShake","aimingSpeed","endurance","spotDistance","spotTime","courage","reloadSpeed","commanding"] +#define SKILLS ["aimingAccuracy","aimingShake","aimingSpeed","endurance","spotDistance","spotTime","courage","reloadSpeed","commanding"] +#define ACE_TRAITS ["ace_medical_medicClass","ACE_IsEngineer","ACE_isEOD"] +#define VANILLA_TRAITS ["medic","engineer","explosiveSpecialist"] -private ["_selection","_dialogResult","_mode"]; +private ["_dialogResult","_mode","_number_of_traits","_trait_values","_choices"]; -_entity = _this select 0; -_units = if (typeName _entity == "OBJECT") then {[_entity]} else {units _entity}; +_entity = param [0, ObjNull, [grpNull, ObjNull]]; +_is_single_unit = (typeName _entity == "OBJECT"); +_ace_loaded = isClass (configfile >> "CfgPatches" >> "ace_main"); + +_skill_choices = +[ + [localize "STR_AIMING_ACCURACY","SLIDER"], + [localize "STR_AIMING_SHAKE","SLIDER"], + [localize "STR_AIMING_SPEED","SLIDER"], + [localize "STR_ENDURANCE","SLIDER"], + [localize "STR_SPOT_DISTANCE","SLIDER"], + [localize "STR_SPOT_TIME","SLIDER"], + [localize "STR_COURAGE","SLIDER"], + [localize "STR_RELOAD_SPEED","SLIDER"], + [localize "STR_COMMANIDNG","SLIDER"] +]; + +_curatorSelected = []; +if (_is_single_unit) then +{ + _mode = if (_entity isKindOf "Man") then {"man"} else {"vehicle"}; + _curatorSelected = [_mode] call Achilles_fnc_getCuratorSelected; + _choices = if (_ace_loaded) then + { + _number_of_traits = count ACE_TRAITS; + [ + [localize "STR_MEDICINE",[localize "STR_FALSE", localize "STR_CLS", localize "STR_DOCTOR"]], + [localize "STR_ENGINEER",[localize "STR_FALSE", localize "STR_TRUE"]], + [localize "STR_EXPLOSIVE_SPECIALIST",[localize "STR_FALSE", localize "STR_TRUE"]] + ] + } else + { + _number_of_traits = count VANILLA_TRAITS; + [ + [localize "STR_MEDICINE",[localize "STR_FALSE", localize "STR_TRUE"]], + [localize "STR_ENGINEER",[localize "STR_FALSE", localize "STR_TRUE"]], + [localize "STR_EOD",[localize "STR_FALSE", localize "STR_TRUE"]] + ] + }; + _choices append _skill_choices; +} else +{ + _mode = "group"; + _curatorSelectedGrps = [_mode] call Achilles_fnc_getCuratorSelected; + {_curatorSelected append units _x} forEach _curatorSelectedGrps; + _number_of_traits = 0; + _units = units _entity; + _choices = _skill_choices; +}; _dialogResult = [ localize "STR_SKILL", - [ - [localize "STR_AIMING_ACCURACY","SLIDER"], - [localize "STR_AIMING_SHAKE","SLIDER"], - [localize "STR_AIMING_SPEED","SLIDER"], - [localize "STR_ENDURANCE","SLIDER"], - [localize "STR_SPOT_DISTANCE","SLIDER"], - [localize "STR_SPOT_TIME","SLIDER"], - [localize "STR_COURAGE","SLIDER"], - [localize "STR_RELOAD_SPEED","SLIDER"], - [localize "STR_COMMANIDNG","SLIDER"] - ], + _choices, "Achilles_fnc_RscDisplayAtttributes_ChangeSkills" ] call Ares_fnc_ShowChooseDialog; if (count _dialogResult == 0) exitWith {}; -if (isNull (_units select 0)) then +_trait_values = if (_is_single_unit) then { - _units = [localize "STR_UNITS"] call Achilles_fnc_SelectUnits; + _dialogResult select [0,_number_of_traits]; }; -if (isNil "_units") exitWith {}; -if (count _units == 0) exitWith {}; +_skill_values = _dialogResult select [_number_of_traits,count SKILLS]; +if (_is_single_unit) then { - [_x,_dialogResult] spawn + if (_ace_loaded) then { - _unit = _this select 0; - _attribute_values = _this select 1; + _code = { - _skill_type = _x; - _skill_value = _attribute_values select _forEachIndex; - _skill_value = linearConversion [0,1,_skill_value,0.2,1]; + params ["_unit", "_skill_values"]; + { + _skill_type = _x; + _skill_value = _skill_values select _forEachIndex; + _skill_value = linearConversion [0,1,_skill_value,0.2,1]; + _unit setSkill [_skill_type, _skill_value]; + } forEach SKILLS; + }; + { + _unit = _x; + { + _trait_type = _x; + _trait_value = _trait_values select _forEachIndex; + _unit setVariable [_trait_type,_trait_value,true]; + } forEach ACE_TRAITS; + if (local _unit) then { + [_unit, _skill_values] spawn _code; + } else + { + [[_unit, _skill_values], _code] remoteExec ["spawn", _x]; + }; + } forEach _curatorSelected; + } else + { + _code = + { + params ["_unit", "_trait_values", "_skill_values"]; + { + _trait_type = _x; + _trait_value = if (_trait_values select _forEachIndex == 0) then {false} else {true}; + _unit setUnitTrait [_trait_type, _trait_value]; + } forEach VANILLA_TRAITS; + + { + _skill_type = _x; + _skill_value = _skill_values select _forEachIndex; + _skill_value = linearConversion [0,1,_skill_value,0.2,1]; _unit setSkill [_skill_type, _skill_value]; + } forEach SKILLS; + }; + { + _unit = _x; + if (local _unit) then + { + [_unit, _trait_values, _skill_values] spawn _code; } else { - [_unit, [_skill_type, _skill_value]] remoteExec ["setSkill", _unit]; + [[_unit, _trait_values, _skill_values], _code] remoteExec ["spawn", _x]; }; - } forEach SKILLS; + } forEach _curatorSelected; + }; +} else +{ + _code = + { + params ["_unit", "_skill_values"]; + { + _skill_type = _x; + _skill_value = _skill_values select _forEachIndex; + _skill_value = linearConversion [0,1,_skill_value,0.2,1]; + _unit setSkill [_skill_type, _skill_value]; + } forEach SKILLS; }; -} forEach _units; \ No newline at end of file + { + _unit = _x; + if (local _unit) then + { + [_unit, _skill_values] spawn _code; + } else + { + [[_unit, _skill_values], _code] remoteExec ["spawn", _x]; + }; + } forEach _curatorSelected; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_damageComponents.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_damageComponents.sqf index 61d5c2c7..4b43d8f6 100644 --- a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_damageComponents.sqf +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_damageComponents.sqf @@ -1,7 +1,7 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // AUTHOR: Kex -// DATE: 1/1/17 -// VERSION: 3.0 +// DATE: 2/4/17 +// VERSION: 4.0 // DESCRIPTION: opens the "damage components" dialog for vehicles. // // ARGUMENTS: @@ -16,11 +16,17 @@ // get params _vehicle = _this select 0; -_components = (getAllHitPointsDamage _vehicle) select 0; -// truncation of array given by dialog space (important components are usually below the truncation) -_components = _components select [0,14]; -_entries = _components apply {[_x,"SLIDER"]}; +_entries = []; + +_allHitPointsDamage = getAllHitPointsDamage _vehicle; + +for "_i" from 0 to (count (_allHitPointsDamage select 0) - 1) do +{ + _component = _allHitPointsDamage select 0 select _i; + if (_component == "") then {_component = _allHitPointsDamage select 1 select _i}; + _entries pushBack [_component,"SLIDER"]; +}; _dialogResult = [ @@ -31,19 +37,25 @@ _dialogResult = if (count _dialogResult == 0) exitWith {}; +_curatorSelected = ["vehicle"] call Achilles_fnc_getCuratorSelected; + if (local _vehicle) then { { - _vehicle setHitIndex [_forEachIndex,_x]; - } forEach _dialogResult; + { + _x setHitIndex [_forEachIndex,_x]; + } forEach _dialogResult; + } forEach _curatorSelected; } else { - [[_vehicle,_dialogResult], { - _vehicle = _this select 0; - _attribute_values = _this select 1; + [[_x,_dialogResult], { - _vehicle setHitIndex [_forEachIndex,_x]; - } forEach _attribute_values; - }] remoteExec ["spawn",_vehicle]; + _vehicle = _this select 0; + _attribute_values = _this select 1; + { + _vehicle setHitIndex [_forEachIndex,_x]; + } forEach _attribute_values; + }] remoteExec ["spawn",_x]; + } forEach _curatorSelected; }; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_vehicleArsenal.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_vehicleArsenal.sqf new file mode 100644 index 00000000..3e554aaf --- /dev/null +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_vehicleArsenal.sqf @@ -0,0 +1,1165 @@ +#include "\A3\ui_f\hpp\defineDIKCodes.inc" +#include "\A3\Ui_f\hpp\defineResinclDesign.inc" + +#define FADE_DELAY 0.15 + +disableserialization; + +_mode = [_this,0,"Open",[displaynull,""]] call bis_fnc_param; +_this = [_this,1,[]] call bis_fnc_param; +_fullVersion = missionnamespace getvariable ["BIS_fnc_arsenal_fullGarage",false]; + +//--- Rewrite left side IDCs to 3DEN specific ones +#define IDC_RSCDISPLAYGARAGE_TAB_CAR -1 +#define IDC_RSCDISPLAYGARAGE_TAB_ARMOR -1 +#define IDC_RSCDISPLAYGARAGE_TAB_HELI -1 +#define IDC_RSCDISPLAYGARAGE_TAB_PLANE -1 +#define IDC_RSCDISPLAYGARAGE_TAB_NAVAL -1 +#define IDC_RSCDISPLAYGARAGE_TAB_STATIC -1 + +#define IDC_RSCDISPLAYGARAGE_TAB_SUBCREW -1 +#define IDC_RSCDISPLAYGARAGE_TAB_SUBANIMATION IDC_RSCDISPLAYGARAGE3DEN_TAB_SUBANIMATION +#define IDC_RSCDISPLAYGARAGE_TAB_SUBTEXTURE IDC_RSCDISPLAYGARAGE3DEN_TAB_SUBTEXTURE + +#define IDCS_LEFT\ + IDC_RSCDISPLAYGARAGE_TAB_SUBANIMATION,\ + IDC_RSCDISPLAYGARAGE_TAB_SUBTEXTURE + +#define IDCS_RIGHT +#define INITTYPES + +#define IDCS [IDCS_LEFT] + + +#define STATS\ + ["maxspeed","armor","fuelcapacity","threat"],\ + [false,true,false,false] + + +#define CONDITION(LIST) (_fullVersion || {"%ALL" in LIST} || {{_item == _x} count LIST > 0}) +#define ERROR if !(_item in _disabledItems) then {_disabledItems set [count _disabledItems,_item];}; + +switch _mode do { + + /////////////////////////////////////////////////////////////////////////////////////////// + case "Open": { + if !(isnull (uinamespace getvariable ["BIS_fnc_arsenal_cam",objnull])) exitwith {"Garage Viewer is already running" call bis_fnc_logFormat;}; + missionnamespace setvariable ["BIS_fnc_arsenal_fullGarage",[_this,0,false,[false]] call bis_fnc_param]; + + with missionnamespace do { + BIS_fnc_garage_center = [_this,1,missionnamespace getvariable ["BIS_fnc_garage_center",player],[objnull]] call bis_fnc_param; + }; + with uinamespace do { + _displayMission = [] call (uinamespace getvariable "bis_fnc_displayMission"); + _displayClass = "RscDisplayGarage3DEN"; + if !(isnull finddisplay 312) then {_displayMission = finddisplay 312;}; + _displayMission createdisplay _displayClass; + }; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "Init": { + ["BIS_fnc_arsenal"] call bis_fnc_startloadingscreen; + _display = _this select 0; + _toggleSpace = uinamespace getvariable ["BIS_fnc_arsenal_toggleSpace",false]; + BIS_fnc_arsenal_type = 1; //--- 0 - Arsenal, 1 - Garage + BIS_fnc_arsenal_toggleSpace = nil; + BIS_fnc_garage_turretPaths = []; + if (isnil "BIS_fnc_garage_centerType") then {BIS_fnc_garage_centerType = "";}; + setstatvalue ["MarkVirtualVehicleInspection",1]; + + with missionnamespace do { + BIS_fnc_arsenal_group = creategroup side group player; + BIS_fnc_arsenal_center = missionnamespace getvariable ["BIS_fnc_garage_center",player]; + }; + + //--- Show specific class + _classDefault = uinamespace getvariable ["bis_fnc_garage_defaultClass",""]; + if (isclass (configfile >> "cfgvehicles" >> _classDefault)) then { + bis_fnc_garage_centerType = gettext (configfile >> "cfgvehicles" >> _classDefault >> "model"); + }; + uinamespace setvariable ["bis_fnc_garage_defaultClass",nil]; + + //--- Load stats + if (isnil {uinamespace getvariable "BIS_fnc_garage_stats"}) then { + _defaultCrew = gettext (configfile >> "cfgvehicles" >> "all" >> "crew"); + uinamespace setvariable [ + "BIS_fnc_garage_stats", + [ + //("isclass _x && getnumber (_x >> 'scope') == 2") configclasses (configfile >> "cfgvehicles"), + ("isclass _x && {getnumber (_x >> 'scope') == 2} && {gettext (_x >> 'crew') != _defaultCrew}" configclasses (configfile >> "cfgvehicles")), + STATS + ] call bis_fnc_configExtremes + ]; + }; + + INITTYPES + ["InitGUI",[_display,"bis_fnc_garage"]] call bis_fnc_arsenal; + ["Preload"] call BIS_fnc_garage; + ["ListAdd",[_display]] call BIS_fnc_garage; + //["ListSelectCurrent",[_display]] call BIS_fnc_garage; + if (BIS_fnc_garage_centerType == "") then {["buttonRandom",[_display]] call BIS_fnc_garage;}; + ["MouseZChanged",[controlnull,0]] call BIS_fnc_arsenal; //--- Reset zoom + { + _ctrl = _display displayctrl _x; + _ctrl ctrlsetfade 0; + } foreach [IDC_RSCDISPLAYARSENAL_LINETABLEFT]; + + _ctrl = _display displayctrl IDC_RSCDISPLAYARSENAL_LINEICON; + _ctrl ctrlshow false; + + with missionnamespace do { + [missionnamespace,"garageOpened",[_display,_toggleSpace]] call bis_fnc_callscriptedeventhandler; + }; + ["BIS_fnc_arsenal"] call bis_fnc_endloadingscreen; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "Exit": { + with missionnamespace do { + BIS_fnc_garage_center = BIS_fnc_arsenal_center; +/* + { + BIS_fnc_arsenal_center deletevehiclecrew _x; + } foreach crew BIS_fnc_arsenal_center; + deletevehicle BIS_fnc_arsenal_center; + BIS_fnc_arsenal_group = nil; +*/ + }; + BIS_fnc_garage_turretPaths = nil; + + with missionnamespace do { + [missionnamespace,"garageClosed",[displaynull,uinamespace getvariable ["BIS_fnc_arsenal_toggleSpace",false]]] call bis_fnc_callscriptedeventhandler; + }; + "Exit" call bis_fnc_arsenal; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "Preload": { + + //--- 3DEN specific, load only animations and textures + ["bis_fnc_garage_preload"] call bis_fnc_startloadingscreen; + private ["_data"]; + _data = []; + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + _centerFaction = faction _center; + { + _items = []; + { + _configName = configname _x; + _displayName = gettext (_x >> "displayName"); + _factions = getarray (_x >> "factions"); + if (count _factions == 0) then {_factions = [_centerFaction];}; + if ( + _displayName != "" + && + {getnumber (_x >> "scope") > 1 || !isnumber (_x >> "scope")} + && + {{_x == _centerFaction} count _factions > 0} + ) then { + _items pushback [_x,_displayName]; + }; + } foreach (configproperties [_x,"isclass _x",true]); + _data pushback _items; + } foreach [ + configfile >> "cfgvehicles" >> typeof _center >> "animationSources", + configfile >> "cfgvehicles" >> typeof _center >> "textureSources" + ]; + + missionnamespace setvariable ["bis_fnc_garage_data",_data]; + ["bis_fnc_garage_preload"] call bis_fnc_endloadingscreen; + BIS_fnc_garage_centerType = typeof _center; + true + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "ListAdd": { + _display = _this select 0; + _data = missionnamespace getvariable "bis_fnc_garage_data"; + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + _checkboxTextures = [ + tolower gettext (configfile >> "RscCheckBox" >> "textureUnchecked"), + tolower gettext (configfile >> "RscCheckBox" >> "textureChecked") + ]; + _centerTextures = getobjecttextures _center; + _ctrlList = controlnull; //--- Used by ShowItemInfo + _cursel = -1; //--- Used by ShowItemInfo + { + _items = _x; + _idc = _foreachindex; + _ctrlList = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + _foreachindex); + { + _configName = configname (_x select 0); + _displayName = _x select 1; + _lbAdd = _ctrlList lbadd _displayName; + _ctrlList lbsetdata [_lbAdd,_configName]; + _ctrlList lbsettooltip [_lbAdd,_displayName]; + if (_idc == 0) then { + _ctrlList lbsetpicture [_lbAdd,_checkboxTextures select ((_center animationphase _configName) max 0)]; + } else { + _configTextures = getarray (configfile >> "cfgvehicles" >> typeof _center >> "texturesources" >> _configName >> "textures"); + _selected = true; + if (count _configTextures == count _centerTextures) then { + {if (tolower _x find (_centerTextures select _foreachindex) < 0) exitwith {_selected = false;};} foreach _configTextures; + } else { + _selected = false; + }; + _ctrlList lbsetpicture [_lbAdd,_checkboxTextures select _selected]; + }; + } foreach _items; + + _ctrlListDisabled = _display displayctrl (IDC_RSCDISPLAYARSENAL_LISTDISABLED + _foreachindex); + _ctrlListDisabled ctrlshow (lbsize _ctrlList == 0); + } foreach _data; + + _cfg = configfile >> "cfgvehicles" >> typeof _center; + ["ShowItemInfo",[_cfg,gettext (_cfg >> "displayName")]] call bis_fnc_arsenal; + ["ShowItemStats",[_cfg]] call bis_fnc_garage; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "TabSelectLeft": { + _display = _this select 0; + _index = _this select 1; + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); +/* + { + _ctrlList = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + _x); + _ctrlList lbsetcursel -1; + lbclear _ctrlList; + } foreach [IDCS_RIGHT]; +*/ + { + _idc = _x; + _active = _idc == _index; + + { + _ctrlList = _display displayctrl (_x + _idc); + _ctrlList ctrlenable _active; + _ctrlList ctrlsetfade ([1,0] select _active); + _ctrlList ctrlcommit FADE_DELAY; + } foreach [IDC_RSCDISPLAYARSENAL_LIST,IDC_RSCDISPLAYARSENAL_LISTDISABLED]; + + _ctrlTab = _display displayctrl (IDC_RSCDISPLAYARSENAL_TAB + _idc); + _ctrlTab ctrlenable !_active; + + _ctrlList = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + _idc); + if (_active) then { + _ctrlLineTabLeft = _display displayctrl IDC_RSCDISPLAYARSENAL_LINETABLEFT; + _ctrlLineTabLeft ctrlsetfade 0; + _ctrlTabPos = ctrlposition _ctrlTab; + _ctrlLineTabPosX = (_ctrlTabPos select 0) + (_ctrlTabPos select 2) - 0.01; + _ctrlLineTabPosY = (_ctrlTabPos select 1); + _ctrlLineTabLeft ctrlsetposition [ + safezoneX,//_ctrlLineTabPosX, + _ctrlLineTabPosY, + (ctrlposition _ctrlList select 0) - safezoneX,//_ctrlLineTabPosX, + ctrlposition _ctrlTab select 3 + ]; + _ctrlLineTabLeft ctrlcommit 0; + ctrlsetfocus _ctrlList; + ['SelectItem',[_display,_display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + _idc),_idc]] call bis_fnc_garage; + } else { + if ((_center getvariable "bis_fnc_arsenal_idc") != _idc) then {_ctrlList lbsetcursel -1;}; + }; + + _ctrlIcon = _display displayctrl (IDC_RSCDISPLAYARSENAL_ICON + _idc); + //_ctrlIcon ctrlsetfade ([1,0] select _active); + _ctrlIcon ctrlshow _active; + _ctrlIcon ctrlenable !_active; + } foreach [IDCS_LEFT]; + + { + _ctrl = _display displayctrl _x; + _ctrl ctrlsetfade 0; + _ctrl ctrlcommit FADE_DELAY; + } foreach [ + //IDC_RSCDISPLAYARSENAL_LINETABLEFT, + IDC_RSCDISPLAYARSENAL_FRAMELEFT, + IDC_RSCDISPLAYARSENAL_BACKGROUNDLEFT + ]; + + //--- Right lists + { + _idc = _x; + _ctrl = _display displayctrl (IDC_RSCDISPLAYARSENAL_TAB + _x); + _ctrl ctrlenable true; + _ctrl ctrlsetfade 0; + _ctrl ctrlcommit 0;//FADE_DELAY; + { + _ctrlList = _display displayctrl (_idc + _x); + _ctrlList ctrlenable true; + _ctrlList ctrlsetfade 0; + _ctrlList ctrlcommit FADE_DELAY; + } foreach [IDC_RSCDISPLAYARSENAL_LIST,IDC_RSCDISPLAYARSENAL_LISTDISABLED]; + } foreach [IDCS_RIGHT]; + + ['TabSelectRight',[_display,IDC_RSCDISPLAYGARAGE_TAB_SUBCREW]] call bis_fnc_garage; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "TabSelectRight": { + _display = _this select 0; + _index = _this select 1; + _ctrFrameRight = _display displayctrl IDC_RSCDISPLAYARSENAL_FRAMERIGHT; + _ctrBackgroundRight = _display displayctrl IDC_RSCDISPLAYARSENAL_BACKGROUNDRIGHT; + + { + _idc = _x; + _active = _idc == _index; + + { + _ctrlList = _display displayctrl (_x + _idc); + _ctrlList ctrlenable _active; + _ctrlList ctrlsetfade ([1,0] select _active); + _ctrlList ctrlcommit FADE_DELAY; + } foreach [IDC_RSCDISPLAYARSENAL_LIST,IDC_RSCDISPLAYARSENAL_LISTDISABLED]; + + _ctrlTab = _display displayctrl (IDC_RSCDISPLAYARSENAL_TAB + _idc); + _ctrlTab ctrlenable (!_active && ctrlfade _ctrlTab == 0); + + if (_active) then { + _ctrlList = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + _idc); + _ctrlLineTabRight = _display displayctrl IDC_RSCDISPLAYARSENAL_LINETABRIGHT; + _ctrlLineTabRight ctrlsetfade 0; + _ctrlTabPos = ctrlposition _ctrlTab; + _ctrlLineTabPosX = (ctrlposition _ctrlList select 0) + (ctrlposition _ctrlList select 2); + _ctrlLineTabPosY = (_ctrlTabPos select 1); + _ctrlLineTabRight ctrlsetposition [ + _ctrlLineTabPosX, + _ctrlLineTabPosY, + safezoneX + safezoneW - _ctrlLineTabPosX,//(_ctrlTabPos select 0) - _ctrlLineTabPosX + 0.01, + ctrlposition _ctrlTab select 3 + ]; + _ctrlLineTabRight ctrlcommit 0; + ctrlsetfocus _ctrlList; + + _ctrlLoadCargo = _display displayctrl IDC_RSCDISPLAYARSENAL_LOADCARGO; + _ctrlListPos = ctrlposition _ctrlList; + _ctrlListPos set [3,(_ctrlListPos select 3) + (ctrlposition _ctrlLoadCargo select 3)]; + { + _x ctrlsetposition _ctrlListPos; + _x ctrlcommit 0; + } foreach [_ctrFrameRight,_ctrBackgroundRight]; + + if (_idc in [IDC_RSCDISPLAYARSENAL_TAB_CARGOMAG,IDC_RSCDISPLAYARSENAL_TAB_CARGOTHROW,IDC_RSCDISPLAYARSENAL_TAB_CARGOPUT,IDC_RSCDISPLAYARSENAL_TAB_CARGOMISC]) then { + ["SelectItemRight",[_display,_ctrlList,_index]] call bis_fnc_arsenal; + }; + }; + + _ctrlIcon = _display displayctrl (IDC_RSCDISPLAYARSENAL_ICON + _idc); + //_ctrlIcon ctrlenable false; + _ctrlIcon ctrlshow _active; + _ctrlIcon ctrlenable (!_active && ctrlfade _ctrlTab == 0); + } foreach [IDCS_RIGHT]; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "SelectItem": { + private ["_ctrlList","_index","_cursel"]; + _display = _this select 0; + _ctrlList = _this select 1; + _idc = _this select 2; + _cursel = lbcursel _ctrlList; + if (_cursel < 0) exitwith {}; + _index = _ctrlList lbvalue _cursel; + + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + _group = (missionnamespace getvariable ["BIS_fnc_arsenal_group",group player]); + _cfg = configfile >> "dummy"; + //_cfg = configfile >> "cfgvehicles" >> typeof _center; + _cfgStats = _cfg; + _checkboxTextures = [ + tolower gettext (configfile >> "RscCheckBox" >> "textureUnchecked"), + tolower gettext (configfile >> "RscCheckBox" >> "textureChecked") + ]; + _colors = [[1,1,1,1],[1,1,1,0.25]]; + _initVehicle = false; + + switch _idc do { + case IDC_RSCDISPLAYGARAGE_TAB_CAR; + case IDC_RSCDISPLAYGARAGE_TAB_ARMOR; + case IDC_RSCDISPLAYGARAGE_TAB_HELI; + case IDC_RSCDISPLAYGARAGE_TAB_PLANE; + case IDC_RSCDISPLAYGARAGE_TAB_NAVAL; + case IDC_RSCDISPLAYGARAGE_TAB_STATIC: { + _item = if (ctrltype _ctrlList == 102) then {_ctrlList lnbdata [_cursel,0]} else {_ctrlList lbdata _cursel}; + _target = (missionnamespace getvariable ["BIS_fnc_arsenal_target",player]); + _centerType = if !(simulationenabled _center) then {""} else {typeof _center}; //--- Accept only previous vehicle, not player during init + _centerSizeOld = ((boundingboxreal _center select 0) vectordistance (boundingboxreal _center select 1));//sizeof _centerType; + _data = missionnamespace getvariable "bis_fnc_garage_data"; + _modelData = (_data select _idc) select (_index + 1); + _cfg = _modelData select 0; + _cfgStats = _cfg; + _class = configname _cfg; + + if (_class != _centerType || !alive _center) then { + _centerPos = position _center; + _centerPos set [2,0]; + _players = []; + _crew = []; + { + _member = _x select 0; + _role = _x select 1; + _index = if (_role == "turret") then {_x select 3} else {_x select 2}; + _crew pushback [typeof _member,_role,_index]; + } foreach fullcrew _center; + { + if (isplayer _x) then { + _players pushback [_x,assignedvehiclerole _x]; + moveout _x; + } else { + _center deletevehiclecrew _x; + }; + } foreach crew _center; + if (getnumber (configfile >> "cfgvehicles" >> typeof _center >> "isUAV") > 0) then {_crew = [];}; //--- Don't restore UAV crew + + if (_center != player) then {_center setpos [10,10,00];}; + deletevehicle _center; + _center = _class createvehiclelocal _centerPos; + _center setpos _centerPos; + if ((_center getvariable ["bis_fnc_arsenal_idc",-1]) >= 0) then {_center setpos _centerPos;}; //--- Move vehicle only when previous vehicle was created by Garage + _center allowdamage false; + _center setvelocity [0,0,0]; + _center setvariable ["bis_fnc_arsenal_idc",_idc]; + if (_fullVersion) then {_center setvehicletipars [0.5,0.5,0.5];}; //--- Heat vehicle parts so user can preview them + bis_fnc_garage_centerType = _item; + missionnamespace setvariable ["BIS_fnc_arsenal_center",_center]; + _target attachto [_center,BIS_fnc_arsenal_campos select 3,""]; + + //--- Restore player seats + { + _player = _x select 0; + _roleArray = _x select 1; + _role = _roleArray select 0; + switch (tolower _role) do { + case "driver": { + if (_center emptypositions _role > 0) then {_player moveindriver _center;} else {_player moveinany _center;}; + }; + case "gunner"; + case "commander"; + case "turret": { + if (count (allturrets _center) > 0) then {_player moveinturret [_center,(allturrets _center) select 0];} else {_player moveinany _center;}; + }; + case "cargo": { + if (_center emptypositions _role > 0) then {_player moveincargo _center;} else {_player moveinany _center;}; + }; + }; + } foreach _players; + if (getnumber (_cfg >> "isUAV") < 1) then { + _crewUnits = [_center,_crew,true,nil,true] call bis_fnc_initVehicleCrew; + { + //_x disableai "move"; + _x setbehaviour "careless"; + _x call bis_fnc_vrHitpart; + } foreach _crewUnits; + }; + + //--- Set the same relative distance and position + _centerSize = ((boundingboxreal _center select 0) vectordistance (boundingboxreal _center select 1));//sizeof typeof _center; + if (_centerSizeOld != 0) then { + _dis = BIS_fnc_arsenal_campos select 0; + _disCoef = _dis / _centerSizeOld; + BIS_fnc_arsenal_campos set [0,_centerSize * _disCoef]; + + _targetPos = BIS_fnc_arsenal_campos select 3; + _coefX = (_targetPos select 0) / _centerSizeOld; + _coefY = (_targetPos select 1) / _centerSizeOld; + _coefZ = (_targetPos select 2) / _centerSizeOld; + BIS_fnc_arsenal_campos set [3,[_centerSize * _coefX,_centerSize * _coefY,_centerSize * _coefZ]]; + }; + }; + + //--- Reset the vehicle state + _center setdir direction _center; + _center setvelocity [0,0,0]; + + //--- Crew positions + _ctrlButtonTry = _display displayctrl IDC_RSCDISPLAYARSENAL_CONTROLSBAR_BUTTONTRY; + _ctrlListCrew = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + IDC_RSCDISPLAYGARAGE_TAB_SUBCREW); + lbclear _ctrlListCrew; + + if (getnumber (_cfg >> "isUAV") < 1) then { + //_lbAdd = _ctrlListCrew lbadd "All crew"; //--- ToDo: Localize + //_ctrlListCrew lbsetdata [_lbAdd,"Driver"]; + //_lbAdd = _ctrlListCrew lbadd "All passengers"; //--- ToDo: Localize + //_ctrlListCrew lbsetdata [_lbAdd,"Driver"]; + _colorMe = getarray (configfile >> "CfgInGameUI" >> "IslandMap" >> "colorMe"); + + //--- Driver + if (getnumber (_cfg >> "hasdriver") > 0) then { + _text = if (_center iskindof "air") then {localize "str_pilot"} else {localize "str_driver"}; + _isPlayer = isplayer driver _center; + if (_isPlayer) then {_text = format ["%1 (%2)",_text,name player];}; + _lbAdd = _ctrlListCrew lbadd _text; + _ctrlListCrew lbsetdata [_lbAdd,"Driver"]; + _ctrlListCrew lbsetpicture [_lbAdd,_checkboxTextures select !(isnull driver _center)]; + if (_isPlayer) then {_ctrlListCrew lbsetcolor [_lbAdd,_colorMe];}; + }; + + //--- Turrets + BIS_fnc_garage_turretPaths = []; + _proxyIndexes = []; + { + _value = _foreachindex; + _value = _value + 1; //--- Index must not be 0 to allow negative values + _cfgTurret = _cfg; + {_cfgTurret = (_cfgTurret >> "turrets") select _x;} foreach _x; + _lbAdd = _ctrlListCrew lbadd gettext (_cfgTurret >> "gunnerName"); + _locked = _center lockedturret _x; + _ctrlListCrew lbsetdata [_lbAdd,"Turret"]; + _ctrlListCrew lbsetvalue [_lbAdd,if (_locked) then {-_value} else {_value}]; + _ctrlListCrew lbsetpicture [_lbAdd,_checkboxTextures select !(isnull (_center turretunit _x))]; + BIS_fnc_garage_turretPaths pushback _x; + + //--- Count number of cargo turrets + //if (gettext (_cfgTurret >> "proxyType") == "CPCargo") then { + if (getnumber (_cfgTurret >> "isPersonTurret") > 0 && getnumber (_cfg >> "hideProxyInCombat") == 0) then { // ToDo: onlyPersonTurret + //_proxyIndexes pushback (count _proxyIndexes + 1); + _proxyIndexes pushback getnumber (_cfgTurret >> "proxyIndex"); + }; + } foreach (allturrets [_center,true]); + + //--- Cargo + _occupiedSeats = []; + { + if ((_x select 1) == "cargo") then {_occupiedSeats pushback (_x select 2);}; + } foreach fullcrew _center; + _getInProxyOrder = getarray (_cfg >> "getInProxyOrder"); + _transportSoldier = getnumber (_cfg >> "transportSoldier"); + + _cargoProxyIndexes = []; + if (count _getInProxyOrder == 0) then { + for "_i" from 1 to _transportSoldier do {_getInProxyOrder pushback _i;}; + _turretCount = count _proxyIndexes; + for "_i" from (1 + _turretCount) to (_transportSoldier + _turretCount) do {_cargoProxyIndexes pushback _i;}; + } else { + { + if !(_x in _proxyIndexes) then {_cargoProxyIndexes pushback (_foreachindex + 1);}; + } foreach _getInProxyOrder; + }; + _cargoProxyIndexes resize (_transportSoldier min (count _cargoProxyIndexes)); //--- Do not let cargoProxyIndexes be larger than transportSoldier. Added because of misconfigured HEMTTs + { + _locked = _center lockedcargo (_x - 1); + _lbAdd = _ctrlListCrew lbadd format ["%1 #%2",localize "STR_GETIN_POS_PASSENGER",_foreachindex + 1]; + _ctrlListCrew lbsetdata [_lbAdd,"Cargo"]; + _ctrlListCrew lbsetvalue [_lbAdd,if (_locked) then {-_x} else {_x}]; + _ctrlListCrew lbsetpicture [_lbAdd,_checkboxTextures select ((_x - 1) in _occupiedSeats)]; + _ctrlListCrew lbsetcolor [_lbAdd,_colors select _locked]; + _ctrlListCrew lbsetpicturecolor [_lbAdd,_colors select _locked]; + } foreach _cargoProxyIndexes; + + _ctrlButtonTry ctrlenable _fullVersion; + } else { + createvehiclecrew _center; + if (_fullVersion) then {{_x setbehaviour "careless";} foreach crew _center;}; + _ctrlButtonTry ctrlenable false; + }; + _ctrlListCrewDisabled = _display displayctrl (IDC_RSCDISPLAYARSENAL_LISTDISABLED + IDC_RSCDISPLAYGARAGE_TAB_SUBCREW); + _ctrlListCrewDisabled ctrlshow (lbsize _ctrlListCrew == 0); + + //--- Animations + _ctrlListAnimations = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + IDC_RSCDISPLAYGARAGE_TAB_SUBANIMATION); + lbclear _ctrlListAnimations; + { + _configName = configname _x; + _displayName = gettext (_x >> "displayName"); + if (_displayName != "" && {getnumber (_x >> "scope") > 1 || !isnumber (_x >> "scope")}) then { + _lbAdd = _ctrlListAnimations lbadd _displayName; + _ctrlListAnimations lbsetdata [_lbAdd,_configName]; + _ctrlListAnimations lbsetpicture [_lbAdd,_checkboxTextures select ((_center animationphase _configName) max 0)]; + }; + } foreach (configproperties [_cfg >> "animationSources","isclass _x",true]); + lbsort _ctrlListAnimations; + _ctrlListAnimationsDisabled = _display displayctrl (IDC_RSCDISPLAYARSENAL_LISTDISABLED + IDC_RSCDISPLAYGARAGE_TAB_SUBANIMATION); + _ctrlListAnimationsDisabled ctrlshow (lbsize _ctrlListAnimations == 0); + + //--- Textures + _currentTextures = getobjecttextures _center; + _current = ""; + _ctrlListTextures = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + IDC_RSCDISPLAYGARAGE_TAB_SUBTEXTURE); + lbclear _ctrlListTextures; + { + _displayName = gettext (_x >> "displayName"); + if (_displayName != "") then { + _textures = getarray (_x >> "textures"); + _selected = true; + if (count _textures == count _currentTextures) then { + {if (tolower _x find (_currentTextures select _foreachindex) < 0) exitwith {_selected = false;};} foreach _textures; + } else { + _selected = false; + }; + _lbAdd = _ctrlListTextures lbadd _displayName; + _ctrlListTextures lbsetdata [_lbAdd,configname _x]; + _ctrlListTextures lbsetpicture [_lbAdd,_checkboxTextures select 0]; + if (_selected) then {_current = configname _x;}; + }; + } foreach (configproperties [_cfg >> "textureSources","isclass _x",true]); + lbsort _ctrlListTextures; + for "_i" from 0 to (lbsize _ctrlListTextures - 1) do { + if ((_ctrlListTextures lbdata _i) == _current) then { + _ctrlListTextures lbsetcursel _i; + }; + }; + _ctrlListTexturesDisabled = _display displayctrl (IDC_RSCDISPLAYARSENAL_LISTDISABLED + IDC_RSCDISPLAYGARAGE_TAB_SUBTEXTURE); + _ctrlListTexturesDisabled ctrlshow (lbsize _ctrlListTextures == 0); + + //--- Mark the tab as selected + _ctrlTab = _display displayctrl (IDC_RSCDISPLAYARSENAL_TAB + _idc); + _ctrlLineTab = _display displayctrl IDC_RSCDISPLAYARSENAL_LINETABLEFTSELECTED; + _ctrlLineTabPos = ctrlposition _ctrlLineTab; + _ctrlLineTabPos set [1,ctrlposition _ctrlTab select 1]; + _ctrlLineTab ctrlsetposition _ctrlLineTabPos; + _ctrlLineTab ctrlcommit 0; + }; + case IDC_RSCDISPLAYGARAGE_TAB_SUBCREW: { + _role = _ctrlList lbdata _cursel; + _roleIndex = _ctrlList lbvalue _cursel; + if (_roleIndex < 0) exitwith {}; + _roleIndex = _roleIndex - 1; //--- Value was increased by 1 to allow negative values, revert back + + _checked = false; + _fnc_createUnit = { + //_unit = (creategroup (side group player)) createunit ["B_soldier_vr_f",position _center,[],0,"none"]; + _unit = createagent ["B_soldier_vr_f",position _center,[],0,"none"]; + _unit call bis_fnc_vrHitpart; + if (_fullVersion) then {_unit setbehaviour "careless";}; //--- Turn out + _unit + }; + _fnc_deleteUnit = { + _group = group _unit; + _center deletevehiclecrew _unit; + deletegroup _group; + }; + switch _role do { + case "Driver": { + _unit = driver _center; + if !(isplayer _unit) then { + if (isnull _unit) then { + _unit = call _fnc_createUnit; + _unit moveindriver _center; + _checked = true; + } else { + call _fnc_deleteUnit; + }; + } else { + _checked = true; + }; + }; + case "Turret": { + _roleIndexArray = BIS_fnc_garage_turretPaths select _roleIndex; + _unit = _center turretunit _roleIndexArray; + if !(isplayer _unit) then { + if (isnull _unit) then { + _unit = call _fnc_createUnit; + _unit moveinturret [_center,_roleIndexArray]; + _checked = true; + } else { + call _fnc_deleteUnit; + }; + } else { + _checked = true; + }; + }; + case "Cargo": { + _unit = objnull; + { + if ((_x select 1) == "cargo" && (_x select 2) == _roleIndex) exitwith {_unit = _x select 0;}; + } foreach fullcrew _center; + if !(isplayer _unit) then { + if (isnull _unit) then { + _unit = call _fnc_createUnit; + _unit moveincargo [_center,_roleIndex]; + _checked = true; + } else { + call _fnc_deleteUnit; + }; + } else { + _checked = true; + }; + }; + }; + //_ctrlListCrew = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + IDC_RSCDISPLAYGARAGE_TAB_SUBCREW); + _ctrlList lbsetpicture [_cursel,_checkboxTextures select _checked]; + }; + + case IDC_RSCDISPLAYGARAGE_TAB_SUBANIMATION: { + _selected = _checkboxTextures find (_ctrlList lbpicture _cursel); + _ctrlList lbsetpicture [_cursel,_checkboxTextures select ((_selected + 1) % 2)]; + _initVehicle = true; + }; + case IDC_RSCDISPLAYGARAGE_TAB_SUBTEXTURE: { + _selected = _checkboxTextures find (_ctrlList lbpicture _cursel); + for "_i" from 0 to (lbsize _ctrlList - 1) do { + _ctrlList lbsetpicture [_i,_checkboxTextures select 0]; + }; + _ctrlList lbsetpicture [_cursel,_checkboxTextures select 1]; + _initVehicle = true; + }; +/* + case IDC_RSCDISPLAYGARAGE_TAB_SUBANIMATION: { + _animationClass = _ctrlList lbdata _cursel; + _cfg = configfile >> "cfgvehicles" >> typeof _center >> "animationsources" >> _animationClass; + _animationPhase = round ((_center animationphase _animationClass) + 1) % 2; + _center animate [_animationClass,_animationPhase]; + _ctrlList lbsetpicture [_cursel,_checkboxTextures select _animationPhase]; + }; + case IDC_RSCDISPLAYGARAGE_TAB_SUBTEXTURE: { + _textureClass = _ctrlList lbdata _cursel; + _cfg = configfile >> "cfgvehicles" >> typeof _center >> "texturesources" >> _textureClass; + { + _center setobjecttexture [_foreachindex,_x]; + } foreach getarray (_cfg >> "textures"); + }; +*/ + }; + if (_initVehicle) then { + _ctrlListTextures = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + IDC_RSCDISPLAYGARAGE_TAB_SUBTEXTURE); + _ctrlListAnimations = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + IDC_RSCDISPLAYGARAGE_TAB_SUBANIMATION); + _textures = ""; + _animations = []; + for "_i" from 0 to (lbsize _ctrlListTextures - 1) do { + if ((_ctrlListTextures lbpicture _i) == (_checkboxTextures select 1)) exitwith {_textures = [_ctrlListTextures lbdata _i,1];}; + }; + for "_i" from 0 to (lbsize _ctrlListAnimations - 1) do { + _animations pushback (_ctrlListAnimations lbdata _i); + _animations pushback (_checkboxTextures find (_ctrlListAnimations lbpicture _i)); + }; + [_center,_textures,_animations] call bis_fnc_initVehicle; + }; + + ["SetCrewStatus",[_display]] call bis_fnc_garage; + if (isclass _cfg) then { + ["ShowItemInfo",[_cfg]] call bis_fnc_arsenal; + ["ShowItemStats",[_cfgStats]] call bis_fnc_garage; + }; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "SetCrewStatus": { + _display = _this select 0; + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + _checkboxTextures = [ + tolower gettext (configfile >> "RscCheckBox" >> "textureUnchecked"), + tolower gettext (configfile >> "RscCheckBox" >> "textureChecked") + ]; + _colors = [[1,1,1,1],[1,1,1,0.25]]; + + _ctrlListCrew = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + IDC_RSCDISPLAYGARAGE_TAB_SUBCREW); + _lockedIndexes = []; + _colorMe = getarray (configfile >> "CfgInGameUI" >> "IslandMap" >> "colorMe"); + _iconPlayer = gettext (configfile >> "CfgInGameUI" >> "IslandMap" >> "iconPlayer"); + _emptyPositions = 0; + for "_i" from 0 to (lbsize _ctrlListCrew - 1) do { + _role = _ctrlListCrew lbdata _i; + _roleIndex = abs (_ctrlListCrew lbvalue _i) - 1; + _value = abs (_ctrlListCrew lbvalue _i); + _locked = false; + _unit = objnull; + + //--- ToDo: lockCargoAnimationPhase + switch (tolower _role) do { + case "cargo": { + _unit = objnull; + {if ((_x select 2) == _roleIndex) exitwith {_unit = _x select 0;};} foreach fullcrew _center; + _locked = _center lockedcargo _roleIndex; + if (_locked) then {_lockedIndexes pushback _roleIndex;}; + }; + case "gunner"; + case "commander"; + case "turret": { + _turretPath = BIS_fnc_garage_turretPaths select _roleIndex; + _unit = _center turretunit _turretPath; + _locked = _center lockedturret _turretPath; + if (_locked) then {_lockedIndexes pushback _turretPath;}; + }; + case "driver": { + _unit = driver _center; + _locked = lockeddriver _center; + }; + }; + _isPlayer = isplayer _unit; + if (_locked && !isnull _unit) then { + moveout _unit; + _isPlayer = false; + if (_fullVersion) then { + if (_unit == player) then {_unit hideobject true;} else {deletevehicle _unit;}; + }; + }; + _ctrlListCrew lbsetcolor [_i,_colors select _locked]; + _ctrlListCrew lbsetvalue [_i,[_value,-_value] select _locked]; + if (_isPlayer) then { + _ctrlListCrew lbsetpicture [_i,_iconPlayer]; + _ctrlListCrew lbsetpicturecolor [_i,_colorMe]; + _emptyPositions = _emptyPositions + 1; + } else { + _isOccupied = !isnull _unit && !_locked; + _ctrlListCrew lbsetpicturecolor [_i,_colors select _locked]; + _ctrlListCrew lbsetpicture [_i,_checkboxTextures select _isOccupied]; + if !(_isOccupied) then {_emptyPositions = _emptyPositions + 1;}; + }; + }; + + //--- Delete crew on locked seats + { + _delete = switch (tolower (_x select 1)) do { + case "cargo": {(_x select 2) in _lockedIndexes}; + case "gunner"; + case "commander"; + case "turret": {(_x select 3) in _lockedIndexes}; + default {false} + }; + if (_delete) then { + _center deletevehiclecrew (_x select 0); + }; + } foreach (fullcrew _center); + + //--- Disable TRY button when there's no space + _ctrlButtonTry = _display displayctrl IDC_RSCDISPLAYARSENAL_CONTROLSBAR_BUTTONTRY; + _ctrlButtonTry ctrlenable (_emptyPositions > 0); + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "ShowItemStats": { + _itemCfg = _this select 0; + if (isclass _itemCfg) then { + _ctrlStats = _display displayctrl IDC_RSCDISPLAYARSENAL_STATS_STATS; + _ctrlStatsPos = ctrlposition _ctrlStats; + _ctrlStatsPos set [0,0]; + _ctrlStatsPos set [1,0]; + _ctrlBackground = _display displayctrl IDC_RSCDISPLAYARSENAL_STATS_STATSBACKGROUND; + _barMin = 0.01; + _barMax = 1; + + _statControls = [ + [IDC_RSCDISPLAYARSENAL_STATS_STAT1,IDC_RSCDISPLAYARSENAL_STATS_STATTEXT1], + [IDC_RSCDISPLAYARSENAL_STATS_STAT2,IDC_RSCDISPLAYARSENAL_STATS_STATTEXT2], + [IDC_RSCDISPLAYARSENAL_STATS_STAT3,IDC_RSCDISPLAYARSENAL_STATS_STATTEXT3], + [IDC_RSCDISPLAYARSENAL_STATS_STAT4,IDC_RSCDISPLAYARSENAL_STATS_STATTEXT4], + [IDC_RSCDISPLAYARSENAL_STATS_STAT5,IDC_RSCDISPLAYARSENAL_STATS_STATTEXT5] + ]; + _rowH = 1 / (count _statControls + 1); + _fnc_showStats = { + _h = _rowH; + { + _ctrlStat = _display displayctrl ((_statControls select _foreachindex) select 0); + _ctrlText = _display displayctrl ((_statControls select _foreachindex) select 1); + if (count _x > 0) then { + _ctrlStat progresssetposition (_x select 0); + _ctrlText ctrlsettext toupper (_x select 1); + _ctrlText ctrlsetfade 0; + _ctrlText ctrlcommit 0; + //_ctrlText ctrlshow true; + _h = _h + _rowH; + } else { + _ctrlStat progresssetposition 0; + _ctrlText ctrlsetfade 1; + _ctrlText ctrlcommit 0; + //_ctrlText ctrlshow false; + }; + } foreach _this; + _ctrlStatsPos set [1,(_ctrlStatsPos select 3) * (1 - _h)]; + _ctrlStatsPos set [3,(_ctrlStatsPos select 3) * _h]; + _ctrlBackground ctrlsetposition _ctrlStatsPos; + _ctrlBackground ctrlcommit 0; + }; + + _ctrlStats ctrlsetfade 0; + _statsExtremes = uinamespace getvariable "BIS_fnc_garage_stats"; + if !(isnil "_statsExtremes") then { + _statsMin = _statsExtremes select 0; + _statsMax = _statsExtremes select 1; + + _stats = [ + [_itemCfg], + STATS, + _statsMin + ] call bis_fnc_configExtremes; + _stats = _stats select 1; + + _statMaxSpeed = linearConversion [_statsMin select 0,_statsMax select 0,_stats select 0,_barMin,_barMax]; + _statArmor = linearConversion [_statsMin select 1,_statsMax select 1,_stats select 1,_barMin,_barMax]; + _statFuelCapacity = linearConversion [_statsMin select 2,_statsMax select 2,_stats select 2,_barMin,_barMax]; + _statThreat = linearConversion [_statsMin select 3,_statsMax select 3,_stats select 3,_barMin,_barMax]; + [ + [],[],[], + [_statMaxSpeed,"Max speed"], + [_statArmor,"Armor"]/* + [_statFuelCapacity,"Fuel capacity"], + [_statThreat,"Threat"]*/ + ] call _fnc_showStats; + }; + + _ctrlStats ctrlcommit FADE_DELAY; + } else { + _ctrlStats = _display displayctrl IDC_RSCDISPLAYARSENAL_STATS_STATS; + _ctrlStats ctrlsetfade 1; + _ctrlStats ctrlcommit FADE_DELAY; + }; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "buttonImport": { + startloadingscreen [""]; + _display = _this select 0; + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + _centerCfg = configfile >> "cfgvehicles" >> typeof _center; + + _import = copyfromclipboard; + _importArray = [_import," ;='"",[]" + tostring [13,10]] call bis_fnc_splitString; + + _textures = []; + _animations = []; + _crew = []; + + if (count _importArray == 1) then { + //--- Import vehicle class + _class = _importArray select 0; + } else { + //--- Import specific items + _importArray = _importArray + [""]; + _isVehicle = false; + { + if (_x == "createvehicle" && !_isVehicle) then { + _vehClass = _importArray select _foreachindex + 1; //--- ToDo: Detect old createVehicle syntax + _vehModel = tolower gettext (configfile >> "cfgvehicles" >> _vehClass >> "model"); + + if (_vehModel == gettext (_centerCfg >> "model")) then { + _isVehicle = true; + } else { + + //--- Only settings of the same object can be imported in 3DEN + [ + "showMessage", + [ + _display, + format [ + "Cannot import settings of %1 to %2!", // ToDo: Localize + gettext (configfile >> "cfgvehicles" >> _vehClass >> "displayName"), + gettext (_centerCfg >> "displayName") + ] + ] + ] call bis_fnc_arsenal; + }; + }; + if (_isVehicle) then { + switch true do { + case (isclass (_centerCfg >> "animationsources" >> _x)): { + _probability = parsenumber (_importArray select _foreachindex + 1); + _animations pushback _x; + _animations pushback _probability; + }; + case (isclass (_centerCfg >> "texturesources" >> _x)): { + _probability = parsenumber (_importArray select _foreachindex + 1); + _textures pushback _x; + _textures pushback _probability; + }; + case (_x == "driver"): { + _crew pushback ["B_Soldier_VR_F",_x]; + }; + case ((tolower _x) in ["turret","commander","gunner"]): { + _turretPath = []; + _maxTurretSize = 0; + {_maxTurretSize = _maxTurretSize max (count _x)} foreach (allturrets _center); + for "_t" from (_foreachindex + 1) to (_foreachindex + _maxTurretSize) do { + if (_t < count _importArray) then { + _turretPathValue = _importArray select _t; + if (_turretPathValue in ["0","1","2","3","4","5","6","7","8","9"]) then { + _turretPath pushback parsenumber _turretPathValue; + }; + }; + }; + _crew pushback ["B_Soldier_VR_F",_x,_turretPath]; + }; + case (_x == "cargo"): { + _crew pushback ["B_Soldier_VR_F",_x,parsenumber (_importArray select _foreachindex + 1)]; + }; + }; + }; + } foreach _importArray; + + [_center,_textures,_animations] call bis_fnc_initVehicle; + }; + endloadingscreen; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "buttonExport": { + _display = _this select 0; + _exportMode = _this select 1; + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + _centerType = ""; + + _br = tostring [13,10]; + _export = ""; + if (_centerType == "") then {_centerType = typeof _center;}; + _export = _export + ([_center,_centerType] call bis_fnc_exportVehicle); + _export spawn {copytoclipboard _this;}; + ['showMessage',[_display,localize "STR_a3_RscDisplayArsenal_message_clipboard"]] call bis_fnc_arsenal; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "buttonRandom": { + _display = _this select 0; + + //--- Select random animations + _ctrlList = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + IDC_RSCDISPLAYGARAGE_TAB_SUBANIMATION); + for "_i" from 0 to (lbsize _ctrlList - 1) do { + if (random 1 > 0.5) then {_ctrlList lbsetcursel _i;}; + }; + + //--- Select random texture + _ctrlList = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + IDC_RSCDISPLAYGARAGE_TAB_SUBTEXTURE); + _ctrlList lbsetcursel floor random (lbsize _ctrlList); + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "showTemplates": { + _display = _this select 0; + _ctrlList = _display displayctrl IDC_RSCDISPLAYARSENAL_TEMPLATE_VALUENAME; + lnbclear _ctrlList; + _data = missionnamespace getvariable ["bis_fnc_garage_data",[]]; + _savedData = profilenamespace getvariable ["bis_fnc_saveVehicle_data",[]]; + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + _centerType = typeof _center; + + for "_i" from 0 to (count _savedData - 1) step 2 do { + _name = _savedData select _i; + _vehData = _savedData select (_i + 1); + _vehType = _vehData select 0; + if (!is3DEN || {is3DEN && _vehType == _centerType}) then { + _vehModel = tolower gettext (configfile >> "cfgvehicles" >> _vehType >> "model"); + if (getnumber (configfile >> "cfgvehicles" >> _vehType >> "forceInGarage") > 0) then {_vehModel = _vehModel + ":" + _vehType;}; + _lbAdd = _ctrlList lnbaddrow [_name]; + _categoryIndex = -1; + _categoryIndex = 0; + _ctrlList lbsetvalue [_lbAdd,_categoryIndex]; + + if (_categoryIndex < 0) then {_ctrlList lnbsetcolor [[_lbAdd,0],[1,1,1,0.25]];}; + }; + }; + ["templateSelChanged",[_display]] call bis_fnc_arsenal; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "buttonTemplateOK": { + _display = _this select 0; + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + _hideTemplate = true; + + _ctrlTemplateName = _display displayctrl IDC_RSCDISPLAYARSENAL_TEMPLATE_EDITNAME; + if (ctrlenabled _ctrlTemplateName) then { + //--- Save + [ + _center, + [profilenamespace,ctrltext _ctrlTemplateName] + ] call bis_fnc_saveVehicle; + } else { + //--- Load + _ctrlTemplateValue = _display displayctrl IDC_RSCDISPLAYARSENAL_TEMPLATE_VALUENAME; + _categoryIndex = _ctrlTemplateValue lbvalue lnbcurselrow _ctrlTemplateValue; + + if (_categoryIndex >= 0) then { + _savedData = profilenamespace getvariable ["bis_fnc_saveVehicle_data",[]]; + _name = _ctrlTemplateValue lnbtext [lnbcurselrow _ctrlTemplateValue,0]; + _nameID = _savedData find _name; + if (_nameID >= 0) then { + _vehData = _savedData select (_nameID + 1); + _vehType = _vehData select 0; + _vehModel = tolower gettext (configfile >> "cfgvehicles" >> _vehType >> "model"); + if (getnumber (configfile >> "cfgvehicles" >> _vehType >> "forceInGarage") > 0) then {_vehModel = _vehModel + ":" + _vehType;}; + _ctrlList = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + _categoryIndex); + for "_i" from 0 to (lbsize _ctrlList - 1) do { + if (_ctrlList lbdata _i == _vehModel) exitwith {_ctrlList lbsetcursel _i;}; + }; + + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + [_center,_name,_categoryIndex,_display] spawn { //--- Must be spawned, animations cannot be applied immediately + disableserialization; + _center = _this select 0; + _name = _this select 1; + _categoryIndex = _this select 2; + _display = _this select 3; + + [_center,[profilenamespace,_name]] call bis_fnc_loadvehicle; + ['SelectItem',[_display,_display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + _categoryIndex),_categoryIndex]] call bis_fnc_garage; + }; + }; + } else { + _hideTemplate = false; + }; + }; + if (_hideTemplate) then { + _ctrlTemplate = _display displayctrl IDC_RSCDISPLAYARSENAL_TEMPLATE_TEMPLATE; + _ctrlTemplate ctrlsetfade 1; + _ctrlTemplate ctrlcommit 0; + _ctrlTemplate ctrlenable false; + + _ctrlMouseBlock = _display displayctrl IDC_RSCDISPLAYARSENAL_MOUSEBLOCK; + _ctrlMouseBlock ctrlenable false; + }; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "buttonTry": { + _display = _this select 0; + _display closedisplay 2; + + ["#(argb,8,8,3)color(0,0,0,1)",false,nil,0,[0,0.5]] call bis_fnc_textTiles; + + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + if (_fullVersion && vehicle player != _center) then { + player setpos ([_center,135,(sizeof typeof _center) / 2] call bis_fnc_relpos); + player setdir (direction _center - 45); + player moveinany _center; + }; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "buttonOK": { + _display = _this select 0; + _display closedisplay 2; + ["#(argb,8,8,3)color(0,0,0,1)",false,nil,0,[0,0.5]] call bis_fnc_textTiles; + + + //--- Apply the look on all selected objects + if (is3DEN) then { + _center = (missionnamespace getvariable ["BIS_fnc_arsenal_center",player]); + _centerType = typeof _center; + _customization = _center call bis_fnc_getVehicleCustomization; + _texture = _customization select 0 select 0; + _anims = _customization select 1; + _objects = []; + { + if (_centerType == typeof _x) then {_objects pushback _x;}; //--- Change only objects of the same type + } foreach get3DENSelected "object"; + set3DENAttributes [[_objects,"VehicleCustomization",[[],_anims]]]; + set3DENAttributes [[_objects,"ObjectTexture",_texture]]; + }; + }; + + /////////////////////////////////////////////////////////////////////////////////////////// + case "loadVehicle": { + disableserialization; + _vehClass = [_this,0,"",[""]] call bis_fnc_param; + _vehCfg = configfile >> "cfgvehicles" >> _vehClass; + if (isclass _vehCfg) then { + _vehID = -1; + _vehModel = tolower gettext (_vehCfg >> "model"); + _vehModelForced = _vehModel + ":" + _vehClass; + _isVehicle = false; + _display = uinamespace getvariable ["bis_fnc_arsenal_display",displaynull]; + { + _ctrlList = _display displayctrl (IDC_RSCDISPLAYARSENAL_LIST + _x); + for "_l" from 0 to (lbsize _ctrlList - 1) do { + _lbData = _ctrlList lbdata _l; + if (_lbData == _vehModel && !_isVehicle) then {_vehID = _l; _isVehicle = true;}; + if (_lbData == _vehModelForced) exitwith {_vehID = _l; _isVehicle = true;}; + }; + if (_isVehicle) exitwith { + if (_vehID >= 0) then {_ctrlList lbsetcursel _vehID;}; + }; + } foreach [IDCS_LEFT]; + }; + }; +}; \ No newline at end of file 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 c64eeb87..f05ec25b 100644 --- a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/init/fn_onCuratorStart.sqf +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/init/fn_onCuratorStart.sqf @@ -54,7 +54,15 @@ Achilles_var_reloadVisionModes = nil; // Add curator event handlers _curatorModule = getassignedcuratorLogic player; _curatorModule addEventHandler ["CuratorObjectPlaced", { _this call Achilles_fnc_HandleCuratorObjectPlaced; }]; +_curatorModule addEventHandler ["CuratorGroupPlaced", { _this call Achilles_fnc_HandleCuratorGroupPlaced; }]; _curatorModule addEventHandler ["CuratorObjectDoubleClicked", { _this call Achilles_fnc_HandleCuratorObjectDoubleClicked; }]; _curatorModule addEventHandler ["CuratorObjectEdited", {_this call Achilles_fnc_HandleCuratorObjectEdited; }]; +// Unlock all available attributes +_curatorModule setVariable ["BIS_fnc_curatorAttributesplayer",["%ALL"]]; +_curatorModule setVariable ["BIS_fnc_curatorAttributesobject",["%ALL"]]; +_curatorModule setVariable ["BIS_fnc_curatorAttributesgroup",["%ALL"]]; +_curatorModule setVariable ["BIS_fnc_curatorAttributeswaypoint",["%ALL"]]; +_curatorModule setVariable ["BIS_fnc_curatorAttributesmarker",["%ALL"]]; + _display_reload; diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/replacement/fn_curatorObjectPlaced.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/replacement/fn_curatorObjectPlaced.sqf new file mode 100644 index 00000000..5e2e947c --- /dev/null +++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/replacement/fn_curatorObjectPlaced.sqf @@ -0,0 +1,29 @@ +/* + Author: Karel Moricky + + Description: + Code executed when curator object is placed. + + Parameter(s): + 0: OBJECT - curator module + 1: OBJECT - edited object + + Returns: + BOOL +*/ + +//--- Simplified argument loading to save performance +_object = _this select 1; +_group = group _object; + +_object call bis_fnc_curatorAttachObject; +if (!isnull _group && side _group in [east,west,resistance,civilian]) then {[effectivecommander _object,"CuratorObjectPlaced"] call bis_fnc_curatorSayMessage;}; + +bis_fnc_curatorObjectPlaced_mouseOver = curatormouseover; + +_curatorInfoType = gettext (configfile >> "cfgvehicles" >> typeof _object >> "curatorInfoType"); +_filterAttributes = getnumber (configfile >> _curatorInfoType >> "filterAttributes"); + +if (_filterAttributes == 0 and ([configfile >> "CfgVehicles" >> typeOf _object, "transportMaxMagazines", 0] call BIS_fnc_returnConfigEntry == 0)) then {_object call bis_fnc_showCuratorAttributes;}; + +true \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/functions_f_ares.pbo b/@AresModAchillesExpansion/addons/functions_f_ares.pbo index 4d2ccad0..0f07ac2b 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.5.bisign b/@AresModAchillesExpansion/addons/functions_f_ares.pbo.Achilles_0.0.5.bisign deleted file mode 100644 index 595cb4b5..00000000 Binary files a/@AresModAchillesExpansion/addons/functions_f_ares.pbo.Achilles_0.0.5.bisign and /dev/null differ diff --git a/@AresModAchillesExpansion/addons/functions_f_ares.pbo.Achilles_0.0.6.bisign b/@AresModAchillesExpansion/addons/functions_f_ares.pbo.Achilles_0.0.6.bisign new file mode 100644 index 00000000..aa8227e3 Binary files /dev/null and b/@AresModAchillesExpansion/addons/functions_f_ares.pbo.Achilles_0.0.6.bisign differ diff --git a/@AresModAchillesExpansion/addons/language_f.pbo b/@AresModAchillesExpansion/addons/language_f.pbo index 40077df9..f61cfdc9 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.5.bisign b/@AresModAchillesExpansion/addons/language_f.pbo.Achilles_0.0.5.bisign deleted file mode 100644 index 743ec41a..00000000 Binary files a/@AresModAchillesExpansion/addons/language_f.pbo.Achilles_0.0.5.bisign and /dev/null differ diff --git a/@AresModAchillesExpansion/addons/language_f.pbo.Achilles_0.0.6.bisign b/@AresModAchillesExpansion/addons/language_f.pbo.Achilles_0.0.6.bisign new file mode 100644 index 00000000..4f7779d9 Binary files /dev/null and b/@AresModAchillesExpansion/addons/language_f.pbo.Achilles_0.0.6.bisign differ diff --git a/@AresModAchillesExpansion/addons/language_f/stringtable.xml b/@AresModAchillesExpansion/addons/language_f/stringtable.xml index 3d290b3b..2a1f69a4 100644 --- a/@AresModAchillesExpansion/addons/language_f/stringtable.xml +++ b/@AresModAchillesExpansion/addons/language_f/stringtable.xml @@ -514,19 +514,31 @@ Подавление Unterstützungsfeuer + + Create CAS Target + Create CAS Target + Créez un cible de AAR + Definiere ein Luftunterstützungsziel + + + Advanced CAS + Advanced CAS + AAR (avancée) + Erweiterte Luftunterstützung + Create new RP Create new RP Créer un noveau RV Создать точку встречи - Definire ein neuer Tpt + Definiere ein neuer Tpt Create new LZ Create new LZ Créer une nouvelle ZA Создать зону посадки - Definiere ein neues LZ + Definiere eine neue LZ Spawn Units @@ -547,14 +559,14 @@ Add/Remove editable Objects Ajoutez/Supprimez l'objet éditable Добавить/Убрать объекты Зевса - Entferne/Füge edierbare Objekte (hinzu) + Entferne/Füge editierbare Objekte (hinzu) Hide Zeus Hide Zeus Cachez Zeus Скрыть Зевса - Versteck Zeus + Verstecke Zeus Hint @@ -654,15 +666,15 @@ Verletzungen (ohne ACE) - Add filtered ... - Add filtered ... + Add filtered Arsenal... + Add filtered Arsenal... Ajoutez Arsenal filtrée ... Добавить ограниченный... - Gefiltert hinzufügen ... + Gefiltertes Arsenal hinzufügen ... - Add full - Add full + Add Arsenal full + Add Arsenal full Ajoutez Arsenal complète Добавить полный Komplettes Arsenal hinzufügen @@ -735,7 +747,7 @@ Attach To Attchez l'objet à Присоединить - An andres Objekt befestigen + An anderem Objekt befestigen Change altitude @@ -828,21 +840,21 @@ You have to place a target marker first! On a besoin d'un marqueur de cible! Сначала вы должны разместить маркер цели! - Du brauchst zuerst ein Ziel Marker! + Du brauchst zuerst einen Ziel Marker! No LZ available! No LZ available! Il n'y a pas de ZA disponible! Нет точки встречи! - Kein LZ verfügbar! + Keine LZ verfügbar! No RP available! No RP available! Il n'y a pas de RV sont disponible! Нет точки встречи! - Kein Tpt verfügbar! + Kein Sammelpunkt verfügbar! Random @@ -919,7 +931,7 @@ Vehicle Behaviour Comportement du Véhicule Поведение транспорта - Varhalten des Fahrzeuges + Verhalten des Fahrzeuges LZ/DZ @@ -933,7 +945,7 @@ Group RP RV du groupe Точка встречи группы - Tpt der Gruppe + Sammelpunkt der Gruppe Infantry Group @@ -954,14 +966,14 @@ RTB and Despawn Retournez et déspawn Вернуться на базу(деспаун) - Komm zurück und Despawn + Zurück zur Basis und Despawn Stay at LZ Stay at LZ Restez à ZA Оставаться на зоне посадки - Bleit beim LZ + Bleibt bei LZ Default @@ -1017,7 +1029,7 @@ Teleported %1 players to %2 %1 joueurs ont été téléportés à %2 Телепортировано %1 игроков к %2 - %1 Spieler wuren nach %2 teleportiert + %1 Spieler wurden nach %2 teleportiert All objects in mission @@ -1163,7 +1175,7 @@ This modul has to be placed on a unit! Il faut mettre ce module sur une unité! Этот модуль должен быть установлен на юните! - Dieses Modul muss auf eine Einheit plaziert werden! + Dieses Modul muss auf eine Einheit platziert werden! No group selected! @@ -1177,24 +1189,24 @@ No target available! Il n'y a pas de cible disponible! Нет цели! - Keine Ziel verfügbar! + Kein Ziel verfügbar! No target in range! No target in range! Il n'y a pas de cible à portée! Нет цели в диапазоне! - Keine Ziel in Reichweite! + Kein Ziel in Reichweite! Entire map Entire map tout la carte Вся карта - Die gesammte Karte + Die gesamte Karte - Entire m + Entire group Entire group tout le groupe Целая группа @@ -1202,7 +1214,7 @@ Select players - Selected players + Select players Choisissez le joueurs Выбранные игроки Wähle die Spieler aus @@ -1219,7 +1231,7 @@ No player in selection! Pas de joueur a été choisi! Игрок не выбран! - Keine Spiler ausgewählt! + Keine Spieler ausgewählt! Select %1 to which the module should be applied! @@ -1247,7 +1259,7 @@ Extend Etendue Расширить - Ausmass + Ausmaß @@ -1313,7 +1325,7 @@ Loading ... Charger ... Загрузка... - Ladet ... + Lädt ... Blue Light @@ -1341,7 +1353,7 @@ White Light Lumière blanche Белый свет - Weisses Licht + Weißes Licht Yellow Light @@ -1369,14 +1381,14 @@ Medium Oily Smoke Moyenne fumée huileuse Средний дым от топлива - Mittelgrosser Öl-Rauch + Mittelgroßer Öl-Rauch Large Oily Smoke Large Oily Smoke Grande fumée huileuse Большой дым от топлива - Grosser Öl-Rauch + Großer Öl-Rauch Small Wood Smoke @@ -1390,14 +1402,14 @@ Medium Wood Smoke Moyenne fumée de bois Средний древесный дым - Mittelgrosser Holzrauch + Mittelgroßer Holzrauch Large Wood Smoke Large Wood Smoke Grande fumée de bois Большой древесный дым - Grosser Holzrauch + Großer Holzrauch Small Mixed Smoke @@ -1411,7 +1423,7 @@ Large Mixed Smoke Grande fumée mixte Большой смешанный дым - Grosser gemischter Rauch + Großer gemischter Rauch You are being teleported... @@ -1420,6 +1432,12 @@ Вас телепортируют... Sie werden teleportiert... + + CAS Target %1 + CAS Target %1 + Le cible de AAR %1 + Luftunterstützungsziel %1 + Suppress %1 Suppress %1 @@ -1593,7 +1611,7 @@ Delete object on completion Supprimez l'objet à la fin Удалить объект после выполнения - Nach das Objekt am Ende löschen + Danach das Objekt am Ende löschen Action text @@ -1729,6 +1747,12 @@ Aucune Kein + + Out of ammunition! + Out of ammunition! + Il n'y a pas de munition! + Keine Munition! + Full Full @@ -1768,7 +1792,7 @@ smooth harmonieuse Плавно - fliessend + fließend Overcast @@ -1964,7 +1988,7 @@ Number of mines Nombre de mines Кол-во мин - Anzahl Minen + Anzahl der Minen Radius @@ -1985,7 +2009,7 @@ Object attached! L'object a été attaché! Объект присоединен! - Objekt wurde befestigen! + Objekt wurde befestigt! Object detached! @@ -2083,7 +2107,7 @@ Do you want to delete %1? Voulez-vous supprimer %1? Вы хотите удалить %1? - Do you want to delete %1? + Möchtest du %1 löschen? Entry already exists! @@ -2152,7 +2176,7 @@ Fire mode Le mode de tir Режим стрельбы - Schiessmodus + Feuermodus automatic @@ -2166,7 +2190,7 @@ burst le tir en rafales Очередями - Feuerstoss + Feuerstoß semi-automatic @@ -2215,35 +2239,35 @@ Hold fire Ne pas tirer Удерживаться от огня - Nicht schiessen + Feuer halten Hold fire, defend only Hold fire, defend only Ne pas tirer, défendre seulement Удерживаться от огня, обороняться - Nicht schiessen, nur verteidigen + Nicht schießen, nur verteidigen Hold fire, engage at will Hold fire, engage at will Ne pas tirer, attaquer à volonté Удерживаться от огня, уничтожать по желанию - Nicht schiessen, angreiffen nach Belieben + Nicht schießen, angreifen nach Belieben Fire at will Fire at will Feu à volonté Стрелять по желанию - Nach Belieben schiessen + Nach Belieben schießen Fire at will, engage at will Fire at will, engage at will Feu à volonté, attaquer à volonté Стрелять по желанию, уничтожать по желанию - Nach Belieben schiessen und angreiffen + Nach Belieben schießen und angreifen Headlight/Searchlight @@ -2425,7 +2449,7 @@ Applied module to %1 objects! Vous avez appliqué le module à 1% objets! Применен модуль к %1 объекту(ам)! - Modul wurde an %1 Objekte angewendet! + Modul wurde an %1 Objekten angewendet! Applied module to %1 units! @@ -2484,6 +2508,54 @@ Sous-catégorie Unterkategorie + + Weapon-specific + Weapon-specific + Spécifique à l'arme + Waffenspezifisch + + + Variable + Variable + Variable + Variable + + + Combat Lifesaver + Combat Lifesaver + Infirmier + Feldsanitäter + + + Doctor + Doctor + Docteur + Arzt + + + Medicine + Medicine + Médecine + Medizin + + + Engineer + Engineer + Réparateur + Reparateur + + + EOD + EOD + EOD + Kampfmittelbeseitigung + + + Move spawn position logic and press ENTER + Move spawn position logic and press ENTER + Déplacez la position de spawn et appuiez sur la touche entrée + Verschiebe die Spawnposition und drücke ENTER + @@ -2543,6 +2615,7 @@ Placing Modules Установка модулей + Module platzieren @@ -2562,6 +2635,9 @@ Модули, примененные на объекты или юнитов, чаще всего могут быть либо поставлены на объект, либо на землю, чтобы применить модуль для большего количества объектов. + + Du kannst Module auf mehrere Objekte oder Einheiten anwenden, indem du die Module auf eine Einheit platzierst oder in der Nähe, um sie auf mehrere Einheiten anzuwenden. + Selection Option @@ -2719,53 +2795,75 @@ Symbole de DLC DLC Symbole + + Collapse module tree by default + Collapse module tree by default + Réduirez l'arbre de modules par défaut + Modul-Baum standardmäßig schließen + Achilles - Curator Vision Modes + Achilles - Zeus Sichtmodis Enable NVG + Aktiviere Nachtsicht Enable Thermal - White Hot + Aktiviere Thermal - Weiß = Heiß Enable Thermal - Black Hot + Aktiviere Thermal - Schwarz = Warm Enable Thermal - Green Hot / Green Cold + Aktiviere Thermal - Grün = Heiß / Schwarz = Kalt Enable Thermal - Black Hot / Green Cold + Aktiviere Thermal - Schwarz = Heiß / Grün = Kalt Enable Thermal - Red Hot + Aktiviere Thermal - Rot = Heiß Enable Thermal - Black Hot / Red Cold + Aktiviere Thermal - Schwarz = Heiß / Rot = Kalt Enable Thermal - White Hot / Red Cold + Aktiviere Thermal - Weiß = Heiß / Rot = Kalt Enable Thermal - Red/Green / White Hot + Aktiviere Thermal - Rot/Grün / Weiß = Heiß Eject/paradrop passengers of selected vehicle + Insassen des ausgewählten Fahrzeugs auswerfen Deep copy selected units + Einheiten mit allen Eigenschaften kopieren Paste deep copied units + Einheiten mit allen Eigenschaften einfügen Selected unit throws smoke / uses countermeasure + Ausgewählte Einheit wirft Rauch / nutzt Kontermaßnahmen Group selected objects + Ausgewählte Objekte gruppieren Ungroup selected objects + Gruppierung von ausgewählten Objekten aufheben diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles.pbo b/@AresModAchillesExpansion/addons/modules_f_achilles.pbo index 26540217..f8522d3c 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.5.bisign b/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.Achilles_0.0.5.bisign deleted file mode 100644 index cecba44e..00000000 Binary files a/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.Achilles_0.0.5.bisign and /dev/null differ diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.Achilles_0.0.6.bisign b/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.Achilles_0.0.6.bisign new file mode 100644 index 00000000..ba837ff7 Binary files /dev/null and b/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.Achilles_0.0.6.bisign differ diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/cfgVehiclesModulesACE.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/cfgVehiclesModulesACE.hpp index 12fd6253..ccc88c4d 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/cfgVehiclesModulesACE.hpp +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/cfgVehiclesModulesACE.hpp @@ -1,7 +1,7 @@ class Achilles_ACE_Module_Base : Achilles_Module_Base { //subCategory = "ACE"; - category = "ACE"; + category = "ace_zeus_Medical"; icon = "achilles\data_f_achilles\icons\icon_default_unit.paa"; picture = "achilles\data_f_achilles\icons\icon_default_unit.paa"; portrait = "achilles\data_f_achilles\icons\icon_default_unit.paa"; diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ACEHeal.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ACEHeal.sqf index 47c57510..3b5295c2 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ACEHeal.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ACEHeal.sqf @@ -33,11 +33,16 @@ if (isClass (configfile >> "CfgPatches" >> "ace_main")) then if (count _selected_units == 0) exitWith {}; { - [_x, _x] call ace_medical_fnc_treatmentAdvanced_fullHealLocal; + if (local _x) then + { + [_x, _x] call ace_medical_fnc_treatmentAdvanced_fullHealLocal; + } else + { + [_x, _x] remoteExec ["ace_medical_fnc_treatmentAdvanced_fullHealLocal", _x]; + }; } forEach _selected_units; } else { - if (_mode == "single") then { ["Headled"] call Ares_fnc_ShowZeusMessage; @@ -53,10 +58,6 @@ if (isClass (configfile >> "CfgPatches" >> "ace_main")) then // Vanilla Injury System { - _x setHitPointDamage ["hitHead", 0]; - _x setHitPointDamage ["hitBody", 0]; - _x setHitPointDamage ["hitHands", 0]; - _x setHitPointDamage ["hitLegs", 0]; _x setDamage 0; } forEach _selected_units; }; diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/functions/fn_DevToolsBindVariable.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/functions/fn_DevToolsBindVariable.sqf index ca8dd042..2a05bcf8 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/functions/fn_DevToolsBindVariable.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/functions/fn_DevToolsBindVariable.sqf @@ -12,15 +12,22 @@ _object = [_logic, false] call Ares_fnc_GetUnitUnderCursor; if (isNull _object) exitWith {["No object selected!"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"}; _dialogResult = [ - "Bind object to variable:", + localize "STR_BIND_VAR", [ - ["Variable:",""] + [localize "STR_VAR",""], + [localize "STR_MODE",["Local","Public"]] ] ] call Ares_fnc_ShowChooseDialog; if (count _dialogResult > 0) then { _var = _dialogResult select 0; - _object call compile format["%1 = _this;",_var]; + if (_dialogResult select 1 == 0) then + { + _object call compile format["%1 = _this;",_var]; + } else + { + [_object, compile format["%1 = _this;",_var]] remoteExec ["spawn",0]; + }; }; #include "\achilles\modules_f_ares\module_footer.hpp" \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Environment/functions/fn_EnvironmentSetWeatherModule.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/Environment/functions/fn_EnvironmentSetWeatherModule.sqf index 87d84199..024aa75c 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/Environment/functions/fn_EnvironmentSetWeatherModule.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Environment/functions/fn_EnvironmentSetWeatherModule.sqf @@ -1,6 +1,6 @@ #include "\achilles\modules_f_ares\module_header.hpp" -#define SHARP_DECAY_VALUE 0.2 -#define SMOOTH_DECAY_VALUE 0.002 +#define SHARP_DECAY_VALUE 1 +#define SMOOTH_DECAY_VALUE 0.01 _altitudes = [0, 5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80, 100, 125, 150, 200, 300]; _altitudeDisplayValues = []; diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/cfgFunctionsFireSupport.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/cfgFunctionsFireSupport.hpp index c05193c9..83f42bcb 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/cfgFunctionsFireSupport.hpp +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/cfgFunctionsFireSupport.hpp @@ -3,4 +3,6 @@ class Achilles_FireSupport_Function_Base file = "\achilles\modules_f_achilles\FireSupport\functions"; class FireSupportSuppressiveFire {}; class FireSupportCreateSuppressionTarget {}; + class FireSupportCAS {}; + class FireSupportCreateCASTarget {}; }; diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/cfgVehiclesModulesFireSupport.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/cfgVehiclesModulesFireSupport.hpp index 5c0e7931..3e1d99b5 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/cfgVehiclesModulesFireSupport.hpp +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/cfgVehiclesModulesFireSupport.hpp @@ -22,4 +22,24 @@ class Achilles_Create_Suppression_Target_Module : Achilles_Fire_Support_Module_B function = "Achilles_fnc_FireSupportCreateSuppressionTarget"; icon = "\achilles\data_f_achilles\icons\icon_target.paa"; portrait = "\achilles\data_f_achilles\icons\icon_target.paa"; +}; + +class Achilles_CAS_Module : Achilles_Fire_Support_Module_Base +{ + scopeCurator = 2; + _generalMacro = "Achilles_CAS_Module"; + displayName = "$STR_ADVANCED_CAS"; + function = "Achilles_fnc_FireSupportCAS"; + icon = "\achilles\data_f_achilles\icons\icon_unit.paa"; + portrait = "\achilles\data_f_achilles\icons\icon_unit.paa"; +}; + +class Achilles_Create_CAS_Target_Module : Achilles_Fire_Support_Module_Base +{ + scopeCurator = 2; + _generalMacro = "Achilles_Create_CAS_Target_Module"; + displayName = "$STR_CREATE_CAS_TARGET"; + function = "Achilles_fnc_FireSupportCreateCASTarget"; + icon = "\achilles\data_f_ares\icons\icon_artillery_target.paa"; + portrait = "\achilles\data_f_ares\icons\icon_artillery_target.paa"; }; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/functions/fn_FireSupportCAS.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/functions/fn_FireSupportCAS.sqf new file mode 100644 index 00000000..59a020d9 --- /dev/null +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/functions/fn_FireSupportCAS.sqf @@ -0,0 +1,141 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// AUTHOR: Kex +// DATE: 1/3/17 +// VERSION: 6.0 +// DESCRIPTION: Function for suppressive fire module +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#include "\achilles\modules_f_ares\module_header.hpp" + +_unit_capture_trajectory = [[0,[64.53,245.3,118.076],[-0.27318,-0.95957,-0.067809],[-0.0173246,-0.0655712,0.997697],[-0.061191,-0.275012,-2.92498]],[0.04199,[64.52,245.29,117.982],[-0.273193,-0.959501,-0.0687267],[-0.0176043,-0.0664457,0.997634],[-0.0677973,-0.300067,-2.86514]],[0.0839801,[64.52,245.27,117.846],[-0.273189,-0.959416,-0.0699256],[-0.0179694,-0.0675884,0.997552],[-0.0783615,-0.339977,-2.75104]],[0.14697,[64.51,245.25,117.716],[-0.272672,-0.95946,-0.0713201],[-0.0183973,-0.0689159,0.997453],[-0.0896733,-0.382557,-2.60771]],[0.16821,[64.51,245.23,117.637],[-0.271613,-0.959625,-0.0731145],[-0.0189314,-0.0706284,0.997323],[-0.0975067,-0.41196,-2.50286]],[0.2102,[64.5,245.22,117.564],[-0.27019,-0.959788,-0.0761897],[-0.0198073,-0.0735751,0.997093],[-0.1057,-0.442598,-2.38907]],[0.25415,[64.48,245.19,117.469],[-0.267618,-0.959899,-0.0835114],[-0.0218175,-0.0806136,0.996507],[-0.11882,-0.491379,-2.20924]],[0.29712,[64.47,245.16,117.415],[-0.26573,-0.95984,-0.08997],[-0.0235484,-0.0868349,0.995944],[-0.128348,-0.526648,-2.08341]],[0.33911,[64.46,245.12,117.347],[-0.262811,-0.959476,-0.101663],[-0.026617,-0.0981168,0.994819],[-0.143773,-0.583567,-1.90005]],[0.3811,[64.4401,245.09,117.309],[-0.260849,-0.959022,-0.110606],[-0.0289228,-0.106757,0.993864],[-0.155255,-0.62589,-1.78645]],[0.4231,[64.42,245.04,117.264],[-0.258121,-0.957928,-0.125484],[-0.0327016,-0.121148,0.992096],[-0.173281,-0.692392,-1.63572]],[0.46509,[64.41,245,117.239],[-0.256603,-0.956867,-0.136238],[-0.0354,-0.131559,0.990676],[-0.186194,-0.740197,-1.56071]],[0.50708,[64.39,244.94,117.21],[-0.255024,-0.954685,-0.153427],[-0.0396852,-0.148206,0.98816],[-0.207632,-0.819785,-1.43196]],[0.5481,[64.38,244.89,117.196],[-0.254469,-0.952817,-0.165486],[-0.0426842,-0.159886,0.986212],[-0.22407,-0.881124,-1.33977]],[0.59009,[64.36,244.81,117.183],[-0.254429,-0.949363,-0.184324],[-0.0473862,-0.178129,0.982865],[-0.249299,-0.975534,-1.22994]],[0.63208,[64.35,244.76,117.178],[-0.254893,-0.946626,-0.197302],[-0.0506558,-0.19069,0.980342],[-0.268177,-1.04647,-1.15652]],[0.67407,[64.34,244.67,117.177],[-0.25625,-0.941872,-0.217285],[-0.0557609,-0.210012,0.976107],[-0.297616,-1.15717,-1.06183]],[0.71606,[64.3199,244.58,117.18],[-0.258348,-0.936504,-0.237099],[-0.0609358,-0.229144,0.971483],[-0.328909,-1.27482,-0.998775]],[0.75806,[64.3101,244.51,117.181],[-0.260153,-0.932818,-0.249339],[-0.0642121,-0.240945,0.968412],[-0.35233,-1.3628,-0.940959]],[0.80005,[64.29,244.41,117.181],[-0.263201,-0.927507,-0.265435],[-0.0686386,-0.256436,0.964121],[-0.389761,-1.5031,-0.861651]],[0.84204,[64.28,244.34,117.18],[-0.265311,-0.924184,-0.274762],[-0.0712877,-0.265392,0.961501],[-0.415779,-1.60031,-0.814367]],[0.88403,[64.26,244.23,117.175],[-0.268482,-0.919572,-0.286888],[-0.0748453,-0.277008,0.957948],[-0.456809,-1.75294,-0.747529]],[0.92602,[64.25,244.15,117.17],[-0.270615,-0.916756,-0.293813],[-0.0769549,-0.283624,0.955843],[-0.485286,-1.85841,-0.703508]],[0.96899,[64.23,244.04,117.161],[-0.273694,-0.912986,-0.30257],[-0.0797297,-0.291963,0.9531],[-0.529242,-2.02032,-0.644776]],[1.01099,[64.21,243.95,117.155],[-0.275631,-0.910775,-0.307434],[-0.0813398,-0.296577,0.951539],[-0.55926,-2.13035,-0.607905]],[1.05298,[64.1901,243.83,117.143],[-0.278394,-0.907862,-0.313502],[-0.0834422,-0.302311,0.94955],[-0.605637,-2.29937,-0.553229]],[1.09619,[64.17,243.74,117.134],[-0.280132,-0.906167,-0.316839],[-0.0846591,-0.305447,0.948438],[-0.63582,-2.40882,-0.533146]],[1.13818,[64.14,243.61,117.121],[-0.282444,-0.903967,-0.321044],[-0.0862649,-0.30938,0.947018],[-0.683425,-2.58061,-0.486658]],[1.20215,[64.1,243.42,117.104],[-0.284938,-0.90157,-0.325549],[-0.088082,-0.313564,0.945473],[-0.748161,-2.81241,-0.429576]],[1.22314,[64.09,243.37,117.099],[-0.28547,-0.901053,-0.326511],[-0.0884849,-0.314453,0.94514],[-0.763488,-2.86711,-0.426393]],[1.26611,[64.0601,243.26,117.09],[-0.286441,-0.900107,-0.328268],[-0.0892358,-0.316071,0.94453],[-0.795596,-2.98119,-0.408745]],[1.31421,[64.02,243.1,117.077],[-0.287689,-0.898881,-0.330526],[-0.090234,-0.318141,0.943739],[-0.844437,-3.15418,-0.379359]],[1.33813,[63.99,242.99,117.069],[-0.2884,-0.898179,-0.331814],[-0.0908223,-0.319316,0.943286],[-0.876418,-3.26698,-0.369644]],[1.38916,[63.95,242.82,117.056],[-0.289313,-0.897271,-0.333469],[-0.0916018,-0.320817,0.942701],[-0.925704,-3.44025,-0.34547]],[1.41602,[63.9301,242.76,117.052],[-0.289582,-0.897004,-0.333955],[-0.0918366,-0.321256,0.942529],[-0.942759,-3.50007,-0.331855]],[1.46509,[63.89,242.58,117.039],[-0.290294,-0.896292,-0.335245],[-0.0924739,-0.322417,0.94207],[-0.992335,-3.67345,-0.310914]],[1.48901,[63.85,242.45,117.031],[-0.290699,-0.895885,-0.335981],[-0.0928478,-0.323075,0.941808],[-1.02488,-3.78692,-0.304404]],[1.53809,[63.8,242.25,117.019],[-0.291221,-0.895361,-0.336925],[-0.0933413,-0.323916,0.94147],[-1.07463,-3.95996,-0.287616]],[1.56421,[63.78,242.18,117.016],[-0.291374,-0.895207,-0.337203],[-0.0934894,-0.324162,0.94137],[-1.09181,-4.01962,-0.27653]],[1.61401,[63.73,241.98,117.004],[-0.29178,-0.894797,-0.337938],[-0.0938904,-0.324812,0.941107],[-1.14173,-4.19264,-0.261725]],[1.63818,[63.6901,241.83,116.997],[-0.292011,-0.894563,-0.338357],[-0.0941248,-0.325179,0.940956],[-1.1745,-4.30599,-0.258278]],[1.68799,[63.63,241.61,116.986],[-0.292308,-0.894263,-0.338894],[-0.0944331,-0.325649,0.940763],[-1.22463,-4.47908,-0.24491]],[1.71411,[63.61,241.53,116.982],[-0.292395,-0.894175,-0.339052],[-0.0945254,-0.325786,0.940706],[-1.24195,-4.53881,-0.234719]],[1.76318,[63.55,241.3,116.972],[-0.292626,-0.893941,-0.339469],[-0.0947745,-0.326147,0.940556],[-1.29223,-4.71202,-0.221975]],[1.78711,[63.5,241.14,116.966],[-0.292757,-0.893808,-0.339706],[-0.0949197,-0.326351,0.94047],[-1.32523,-4.82553,-0.219484]],[1.83813,[63.4301,240.89,116.956],[-0.292925,-0.893637,-0.34001],[-0.0951099,-0.326611,0.940361],[-1.37569,-4.99889,-0.20711]],[1.86401,[63.41,240.81,116.953],[-0.292974,-0.893587,-0.340099],[-0.0951668,-0.326687,0.940329],[-1.39312,-5.05872,-0.197168]],[1.91309,[63.34,240.55,116.944],[-0.293104,-0.893456,-0.340333],[-0.0953197,-0.326886,0.940244],[-1.44369,-5.23221,-0.184901]],[1.93701,[63.29,240.37,116.938],[-0.293178,-0.893381,-0.340466],[-0.0954085,-0.326998,0.940197],[-1.47686,-5.3459,-0.182562]],[1.98804,[63.22,240.1,116.93],[-0.293271,-0.893286,-0.340635],[-0.0955243,-0.327139,0.940136],[-1.52756,-5.51952,-0.170277]],[2.01416,[63.1901,240,116.928],[-0.293299,-0.893258,-0.340685],[-0.0955588,-0.32718,0.940118],[-1.54506,-5.57943,-0.160343]],[2.06299,[63.11,239.72,116.92],[-0.29337,-0.893185,-0.340814],[-0.0956512,-0.327287,0.940071],[-1.59583,-5.75314,-0.147988]],[2.08716,[63.0601,239.52,116.916],[-0.293411,-0.893144,-0.340887],[-0.0957045,-0.327347,0.940045],[-1.62912,-5.86695,-0.145533]],[2.13721,[62.97,239.23,116.909],[-0.293461,-0.893093,-0.340978],[-0.0957737,-0.327421,0.940012],[-1.67997,-6.04074,-0.133047]],[2.16309,[62.95,239.12,116.907],[-0.293476,-0.893078,-0.341004],[-0.0957942,-0.327442,0.940003],[-1.69751,-6.1007,-0.123048]],[2.21411,[62.86,238.81,116.901],[-0.293514,-0.893039,-0.341073],[-0.0958488,-0.327497,0.939978],[-1.74839,-6.27447,-0.110621]],[2.23804,[62.8,238.6,116.898],[-0.293535,-0.893018,-0.34111],[-0.09588,-0.327527,0.939965],[-1.78171,-6.38823,-0.108291]],[2.28711,[62.71,238.28,116.893],[-0.29356,-0.892992,-0.341156],[-0.09592,-0.327562,0.939948],[-1.8322,-6.56057,-0.0999027]],[2.31299,[62.6801,238.17,116.892],[-0.293567,-0.892985,-0.341169],[-0.0959317,-0.327572,0.939943],[-1.84966,-6.62014,-0.090997]],[2.36304,[62.58,237.83,116.887],[-0.293586,-0.892967,-0.341201],[-0.0959626,-0.327596,0.939932],[-1.90028,-6.79285,-0.081448]],[2.38721,[62.52,237.6,116.885],[-0.293595,-0.892957,-0.341218],[-0.0959799,-0.327608,0.939926],[-1.93344,-6.90599,-0.0807931]],[2.43701,[62.42,237.25,116.881],[-0.293606,-0.892946,-0.341237],[-0.0960016,-0.327621,0.939919],[-1.98366,-7.07726,-0.0752389]],[2.46313,[62.39,237.13,116.88],[-0.293595,-0.892979,-0.341161],[-0.0959805,-0.327548,0.939947],[-2.00104,-7.13653,-0.0670895]],[2.51318,[62.29,236.77,116.873],[-0.292787,-0.89365,-0.340097],[-0.0955527,-0.326558,0.940335],[-2.05143,-7.30837,-0.0597271]],[2.53711,[62.21,236.53,116.869],[-0.291515,-0.894429,-0.339141],[-0.0950864,-0.325689,0.940683],[-2.08442,-7.42094,-0.0597405]],[2.58716,[62.1,236.15,116.862],[-0.289676,-0.895544,-0.337771],[-0.0943811,-0.324455,0.941181],[-2.13388,-7.59008,-0.0571376]],[2.61304,[62.0699,236.03,116.86],[-0.289109,-0.895889,-0.337342],[-0.0941521,-0.324072,0.941336],[-2.15101,-7.64875,-0.0491826]],[2.66309,[61.95,235.64,116.854],[-0.286645,-0.89716,-0.336062],[-0.0932629,-0.322985,0.941797],[-2.20007,-7.81734,-0.0450682]],[2.68701,[61.87,235.38,116.85],[-0.283459,-0.898491,-0.335209],[-0.0923989,-0.322331,0.942107],[-2.23139,-7.92565,-0.0522684]],[2.73706,[61.75,234.99,116.844],[-0.277719,-0.90075,-0.333949],[-0.0909993,-0.321394,0.942563],[-2.27932,-8.09264,-0.0483862]],[2.76318,[61.7,234.85,116.842],[-0.275873,-0.901469,-0.333538],[-0.0905338,-0.321092,0.942711],[-2.29585,-8.1506,-0.0400005]],[2.81299,[61.58,234.45,116.837],[-0.270793,-0.903457,-0.332321],[-0.0891422,-0.320201,0.943146],[-2.3426,-8.31613,-0.0379384]],[2.83716,[61.49,234.17,116.833],[-0.267663,-0.904698,-0.331478],[-0.0881947,-0.319581,0.943446],[-2.3735,-8.42675,-0.0347446]],[2.88721,[61.36,233.75,116.826],[-0.26309,-0.906651,-0.329799],[-0.0865989,-0.318269,0.944036],[-2.41893,-8.59103,-0.0334078]],[2.91309,[61.3199,233.61,116.824],[-0.261633,-0.907279,-0.32923],[-0.0860609,-0.317824,0.944236],[-2.43332,-8.64349,-0.0393667]],[2.96118,[61.1901,233.17,116.818],[-0.257574,-0.909009,-0.327656],[-0.084508,-0.316606,0.944785],[-2.47777,-8.80726,-0.0363485]],[2.98315,[61.1,232.88,116.814],[-0.255105,-0.91005,-0.326697],[-0.08352,-0.315873,0.945118],[-2.50596,-8.91243,-0.0448579]],[3.0271,[61.01,232.59,116.81],[-0.252804,-0.911016,-0.325791],[-0.0825656,-0.315187,0.945431],[-2.53496,-9.02183,-0.0398358]],[3.07007,[60.87,232.13,116.804],[-0.249699,-0.912317,-0.324543],[-0.0812157,-0.314247,0.945861],[-2.57682,-9.18189,-0.0425963]],[3.11304,[60.78,231.83,116.801],[-0.247878,-0.91308,-0.32379],[-0.0803829,-0.313684,0.946119],[-2.60502,-9.29091,-0.0365226]],[3.15601,[60.65,231.36,116.796],[-0.245475,-0.914089,-0.322775],[-0.0792318,-0.31293,0.946465],[-2.64583,-9.45031,-0.0384764]],[3.198,[60.5601,231.04,116.793],[-0.24407,-0.914679,-0.322169],[-0.0785283,-0.312483,0.946672],[-2.67237,-9.55533,-0.0424444]],[3.24219,[60.42,230.56,116.789],[-0.242264,-0.915434,-0.321385],[-0.0775837,-0.311913,0.946938],[-2.71226,-9.71432,-0.0431713]],[3.26416,[60.37,230.4,116.788],[-0.241734,-0.915655,-0.321154],[-0.0772965,-0.311747,0.947016],[-2.72543,-9.76733,-0.0429999]],[3.30615,[60.23,229.91,116.784],[-0.240329,-0.91624,-0.320539],[-0.0765108,-0.31131,0.947223],[-2.76461,-9.92565,-0.0441389]],[3.34814,[60.09,229.41,116.78],[-0.239166,-0.916724,-0.320026],[-0.0758279,-0.310951,0.947396],[-2.80318,-10.0831,-0.0467059]],[3.39014,[59.99,229.07,116.778],[-0.238504,-0.917,-0.319731],[-0.0754237,-0.310747,0.947495],[-2.82909,-10.1896,-0.0435476]],[3.4331,[59.85,228.56,116.775],[-0.237654,-0.917353,-0.319348],[-0.0748853,-0.310485,0.947624],[-2.86762,-10.3489,-0.0391809]],[3.47705,[59.75,228.21,116.773],[-0.237171,-0.917556,-0.319126],[-0.0745673,-0.310336,0.947698],[-2.89208,-10.4507,-0.0496464]],[3.521,[59.61,227.68,116.769],[-0.236551,-0.917816,-0.318837],[-0.0741448,-0.310142,0.947795],[-2.92932,-10.6062,-0.0559947]],[3.56421,[59.51,227.33,116.766],[-0.236209,-0.917942,-0.318728],[-0.0739156,-0.310086,0.94783],[-2.95106,-10.6976,-0.097392]],[3.6062,[59.36,226.79,116.76],[-0.236372,-0.917679,-0.319365],[-0.0740933,-0.310699,0.947616],[-2.98099,-10.8238,-0.192366]],[3.64819,[59.21,226.24,116.749],[-0.236986,-0.917172,-0.320365],[-0.0745733,-0.311612,0.947278],[-3.00793,-10.9376,-0.325996]],[3.69214,[59.11,225.87,116.737],[-0.237465,-0.916811,-0.321042],[-0.07494,-0.312221,0.947049],[-3.02451,-11.0075,-0.433803]],[3.73608,[58.96,225.32,116.712],[-0.238202,-0.91633,-0.321869],[-0.0754654,-0.312944,0.946769],[-3.04811,-11.1066,-0.613434]],[3.77905,[58.86,224.94,116.689],[-0.238683,-0.916067,-0.322259],[-0.0757782,-0.313268,0.946636],[-3.06299,-11.1689,-0.745064]],[3.82104,[58.7,224.38,116.646],[-0.239357,-0.915754,-0.322648],[-0.0761881,-0.313568,0.946504],[-3.08454,-11.2589,-0.953425]],[3.88403,[58.5,223.63,116.571],[-0.24009,-0.915514,-0.322787],[-0.0765736,-0.313616,0.946457],[-3.11207,-11.3732,-1.24859]],[3.90601,[58.45,223.44,116.549],[-0.240245,-0.915481,-0.322765],[-0.0766419,-0.313576,0.946465],[-3.11879,-11.401,-1.32472]],[3.95019,[58.29,222.86,116.475],[-0.240645,-0.9154,-0.322697],[-0.0768222,-0.313461,0.946489],[-3.13867,-11.4831,-1.55677]],[3.97217,[58.24,222.67,116.447],[-0.240757,-0.915367,-0.322707],[-0.0768842,-0.313456,0.946485],[-3.1452,-11.51,-1.6354]],[4.01611,[58.08,222.09,116.359],[-0.24101,-0.915074,-0.323348],[-0.0772102,-0.314035,0.946267],[-3.1646,-11.5899,-1.87393]],[4.06006,[57.98,221.7,116.295],[-0.24113,-0.91474,-0.324201],[-0.0775305,-0.314833,0.945975],[-3.17734,-11.6422,-2.03579]],[4.10303,[57.8199,221.12,116.189],[-0.24129,-0.914168,-0.325693],[-0.0780679,-0.316237,0.945462],[-3.19618,-11.7195,-2.2828]],[4.14502,[57.71,220.72,116.112],[-0.241391,-0.913775,-0.32672],[-0.0784361,-0.317203,0.945109],[-3.20851,-11.77,-2.45132]],[4.18799,[57.55,220.13,115.985],[-0.241519,-0.913177,-0.328292],[-0.0789888,-0.318684,0.944564],[-3.22683,-11.8448,-2.70736]],[4.23315,[57.39,219.53,115.848],[-0.241449,-0.912355,-0.330623],[-0.0796606,-0.320918,0.943751],[-3.24491,-11.9184,-2.96802]],[4.25513,[57.33,219.33,115.8],[-0.241356,-0.912012,-0.331634],[-0.0799166,-0.321897,0.943396],[-3.25092,-11.9429,-3.05537]],[4.29712,[57.17,218.72,115.649],[-0.240832,-0.910767,-0.335415],[-0.0807612,-0.325583,0.942058],[-3.26856,-12.0147,-3.32374]],[4.33911,[57.05,218.31,115.542],[-0.240313,-0.909842,-0.338285],[-0.0813211,-0.328402,0.941031],[-3.28012,-12.0617,-3.50631]],[4.38306,[56.89,217.7,115.369],[-0.239365,-0.908517,-0.342492],[-0.0820074,-0.332568,0.939507],[-3.29694,-12.1304,-3.78831]],[4.42602,[56.77,217.29,115.245],[-0.238685,-0.907738,-0.345023],[-0.0823381,-0.335096,0.938579],[-3.30797,-12.1755,-3.97948]],[4.46899,[56.61,216.67,115.046],[-0.237721,-0.906712,-0.34837],[-0.0827132,-0.338452,0.937341],[-3.3242,-12.2422,-4.27094]],[4.51318,[56.4401,216.05,114.831],[-0.236878,-0.905829,-0.35123],[-0.0830011,-0.341329,0.936272],[-3.34017,-12.3083,-4.56658]],[4.53516,[56.38,215.85,114.755],[-0.236625,-0.905561,-0.352091],[-0.0830846,-0.342196,0.935948],[-3.34557,-12.3307,-4.66444]],[4.5791,[56.27,215.43,114.6],[-0.236159,-0.90505,-0.353714],[-0.0832453,-0.343829,0.935335],[-3.3562,-12.3749,-4.86231]],[4.62305,[56.1,214.81,114.353],[-0.235549,-0.904343,-0.35592],[-0.0834711,-0.346046,0.934497],[-3.37225,-12.442,-5.15835]],[4.66699,[55.9301,214.18,114.091],[-0.235029,-0.90369,-0.357917],[-0.0836897,-0.34805,0.933733],[-3.38831,-12.5093,-5.45487]],[4.71118,[55.8101,213.76,113.908],[-0.234723,-0.903279,-0.359156],[-0.0838341,-0.34929,0.933257],[-3.3993,-12.5552,-5.65052]],[4.73315,[55.7,213.34,113.718],[-0.234446,-0.902885,-0.360323],[-0.0839766,-0.350458,0.932806],[-3.41026,-12.601,-5.84676]],[4.7771,[55.58,212.91,113.521],[-0.234196,-0.902514,-0.361414],[-0.0841141,-0.351548,0.932383],[-3.42136,-12.6475,-6.04167]],[4.82007,[55.41,212.28,113.213],[-0.233872,-0.902026,-0.362841],[-0.0842919,-0.352974,0.931828],[-3.43806,-12.7176,-6.33375]],[4.86401,[55.24,211.63,112.89],[-0.233602,-0.901616,-0.364032],[-0.0844358,-0.354166,0.931363],[-3.4549,-12.7885,-6.62478]],[4.90698,[55.12,211.21,112.667],[-0.233448,-0.901383,-0.364706],[-0.0845142,-0.354841,0.931099],[-3.46629,-12.8364,-6.81708]],[4.97314,[54.89,210.34,112.2],[-0.233195,-0.900972,-0.365881],[-0.0846613,-0.356015,0.930637],[-3.49019,-12.9372,-7.1897]],[4.99512,[54.83,210.13,112.079],[-0.233141,-0.900873,-0.36616],[-0.0847023,-0.356292,0.930527],[-3.49685,-12.9654,-7.27532]],[5.03906,[54.65,209.47,111.71],[-0.233,-0.900575,-0.366981],[-0.0848381,-0.357105,0.930203],[-3.51816,-13.0553,-7.51781]],[5.08301,[54.48,208.82,111.329],[-0.232882,-0.900276,-0.36779],[-0.0849927,-0.3579,0.929884],[-3.54158,-13.1543,-7.73741]],[5.12598,[54.36,208.37,111.069],[-0.232796,-0.900033,-0.368437],[-0.0851247,-0.358534,0.929627],[-3.55757,-13.2219,-7.8799]],[5.17017,[54.1801,207.71,110.673],[-0.232556,-0.899403,-0.370124],[-0.085455,-0.360191,0.928956],[-3.58373,-13.3324,-8.07018]],[5.19214,[54.12,207.48,110.54],[-0.232447,-0.899145,-0.370818],[-0.0855796,-0.360874,0.92868],[-3.59267,-13.3702,-8.13154]],[5.23608,[53.9401,206.81,110.133],[-0.232067,-0.898359,-0.372955],[-0.0859111,-0.362993,0.927823],[-3.6202,-13.4867,-8.30852]],[5.28003,[53.8101,206.35,109.858],[-0.231781,-0.897852,-0.374353],[-0.0860827,-0.364391,0.927259],[-3.63979,-13.5697,-8.41389]],[5.32397,[53.63,205.66,109.438],[-0.231322,-0.897141,-0.376334],[-0.0862579,-0.36639,0.926455],[-3.67038,-13.6995,-8.55985]],[5.36719,[53.4401,204.97,109.012],[-0.230879,-0.896345,-0.378498],[-0.0865121,-0.368555,0.925571],[-3.70148,-13.832,-8.70129]],[5.41113,[53.3199,204.5,108.725],[-0.230604,-0.895675,-0.380247],[-0.0868164,-0.370282,0.924854],[-3.72409,-13.9285,-8.77599]],[5.45508,[53.13,203.8,108.29],[-0.230255,-0.894549,-0.383098],[-0.0874318,-0.373067,0.923676],[-3.75773,-14.0723,-8.89242]],[5.521,[52.88,202.84,107.703],[-0.229908,-0.892917,-0.387092],[-0.0884792,-0.376922,0.922009],[-3.80475,-14.2736,-9.0292]],[5.54321,[52.8101,202.6,107.555],[-0.229844,-0.892512,-0.388065],[-0.0887624,-0.377855,0.9216],[-3.81703,-14.3261,-9.05916]],[5.58716,[52.62,201.87,107.107],[-0.229674,-0.891334,-0.390862],[-0.0896006,-0.380528,0.920418],[-3.85337,-14.4814,-9.15594]],[5.6311,[52.49,201.38,106.805],[-0.229563,-0.890578,-0.392647],[-0.0901362,-0.382235,0.919659],[-3.87837,-14.5879,-9.21535]],[5.67505,[52.29,200.64,106.35],[-0.22938,-0.889481,-0.395231],[-0.0908804,-0.384712,0.918552],[-3.91773,-14.7553,-9.28778]],[5.71899,[52.09,199.9,105.889],[-0.229168,-0.888456,-0.397652],[-0.0915221,-0.387047,0.917506],[-3.95682,-14.9213,-9.36701]],[5.76318,[51.96,199.39,105.581],[-0.229009,-0.887803,-0.3992],[-0.091897,-0.388549,0.916834],[-3.98454,-15.0388,-9.40485]],[5.78516,[51.83,198.89,105.271],[-0.228827,-0.887147,-0.400761],[-0.0922421,-0.390071,0.916153],[-4.01242,-15.1571,-9.4424]],[5.8291,[51.6901,198.38,104.96],[-0.228625,-0.886481,-0.402345],[-0.092567,-0.391624,0.915457],[-4.04059,-15.2765,-9.47828]],[5.87305,[51.49,197.6,104.491],[-0.228303,-0.885475,-0.404737],[-0.0930279,-0.393973,0.914402],[-4.08264,-15.4548,-9.53623]],[5.91699,[51.28,196.82,104.019],[-0.227968,-0.884484,-0.407086],[-0.0934501,-0.396289,0.913358],[-4.12511,-15.6351,-9.59278]],[5.96118,[51.14,196.29,103.703],[-0.22774,-0.883838,-0.408613],[-0.0937066,-0.397799,0.912674],[-4.15472,-15.761,-9.6188]],[5.98315,[51.0699,196.02,103.545],[-0.227622,-0.883517,-0.409373],[-0.0938257,-0.398552,0.912334],[-4.16953,-15.824,-9.63231]],[6.0271,[50.86,195.22,103.069],[-0.227243,-0.882551,-0.411661],[-0.0941385,-0.400832,0.911302],[-4.21435,-16.0148,-9.66996]],[6.07104,[50.65,194.41,102.591],[-0.22683,-0.881605,-0.413909],[-0.0943662,-0.403093,0.910281],[-4.26011,-16.2101,-9.70026]],[6.11306,[50.5,193.86,102.271],[-0.226538,-0.880988,-0.415379],[-0.0944668,-0.404582,0.909609],[-4.29027,-16.3392,-9.72494]],[6.15696,[50.28,193.03,101.791],[-0.226052,-0.880036,-0.417657],[-0.0945487,-0.406909,0.908563],[-4.3363,-16.5367,-9.75495]],[6.20116,[50.0601,192.19,101.31],[-0.225472,-0.87894,-0.420269],[-0.0945786,-0.409592,0.907353],[-4.38255,-16.7362,-9.78363]],[6.22316,[49.99,191.91,101.149],[-0.225258,-0.878542,-0.421216],[-0.0945749,-0.410568,0.906912],[-4.39822,-16.804,-9.79082]],[6.26706,[49.77,191.06,100.668],[-0.224535,-0.877227,-0.424331],[-0.0945097,-0.413793,0.905452],[-4.44493,-17.0073,-9.81577]],[6.31106,[49.62,190.48,100.347],[-0.224005,-0.87632,-0.426478],[-0.0943778,-0.416037,0.904437],[-4.47627,-17.1445,-9.83062]],[6.35496,[49.39,189.61,99.864],[-0.223162,-0.874982,-0.429657],[-0.0940237,-0.419396,0.902921],[-4.52349,-17.3529,-9.85078]],[6.39916,[49.24,189.03,99.541],[-0.222594,-0.874137,-0.431668],[-0.0937025,-0.421544,0.901954],[-4.55481,-17.4929,-9.86508]],[6.42116,[49.08,188.43,99.218],[-0.22204,-0.873341,-0.433558],[-0.0933437,-0.423576,0.901038],[-4.58675,-17.6365,-9.87283]],[6.46506,[48.9301,187.84,98.894],[-0.221502,-0.872585,-0.435352],[-0.0929636,-0.425513,0.900164],[-4.61734,-17.7754,-9.89255]],[6.48806,[48.77,187.24,98.569],[-0.220967,-0.871801,-0.437192],[-0.0925988,-0.427493,0.899264],[-4.64849,-17.918,-9.90596]],[6.53196,[48.62,186.63,98.244],[-0.220427,-0.87097,-0.439118],[-0.0922543,-0.429557,0.898315],[-4.6797,-18.0621,-9.9177]],[6.57616,[48.38,185.72,97.757],[-0.219605,-0.869646,-0.442142],[-0.0917448,-0.432787,0.896815],[-4.72612,-18.2788,-9.93744]],[6.62016,[48.14,184.79,97.269],[-0.218746,-0.868232,-0.445335],[-0.091173,-0.436205,0.895216],[-4.77265,-18.4991,-9.95395]],[6.66306,[47.98,184.16,96.944],[-0.218152,-0.867259,-0.447517],[-0.0907312,-0.438552,0.894114],[-4.80361,-18.6474,-9.96425]],[6.70706,[47.74,183.22,96.454],[-0.217257,-0.865802,-0.450762],[-0.0899953,-0.442058,0.892461],[-4.8493,-18.869,-9.98498]],[6.75096,[47.5699,182.58,96.128],[-0.216676,-0.864862,-0.452842],[-0.0894808,-0.444314,0.891391],[-4.8803,-19.0221,-9.99126]],[6.77416,[47.41,181.94,95.8],[-0.216121,-0.863974,-0.454798],[-0.0889632,-0.446443,0.890378],[-4.91163,-19.1782,-9.99303]],[6.81816,[47.16,180.96,95.308],[-0.215362,-0.862773,-0.457429],[-0.0882196,-0.449316,0.889006],[-4.95721,-19.4081,-10.0071]],[6.86206,[46.99,180.31,94.979],[-0.214914,-0.862078,-0.458947],[-0.0877637,-0.450979,0.888209],[-4.98776,-19.5645,-10.0127]],[6.90596,[46.74,179.32,94.484],[-0.214331,-0.861196,-0.460872],[-0.0871638,-0.453091,0.887192],[-5.03337,-19.8008,-10.0203]],[6.95016,[46.5699,178.65,94.153],[-0.213996,-0.860704,-0.461946],[-0.0868201,-0.454271,0.886623],[-5.06355,-19.9587,-10.0261]],[6.97216,[46.4,177.98,93.822],[-0.213699,-0.860277,-0.462878],[-0.0865156,-0.455296,0.886127],[-5.0931,-20.1145,-10.0369]],[7.01616,[46.23,177.3,93.49],[-0.213435,-0.859907,-0.463686],[-0.0862457,-0.456185,0.885696],[-5.12359,-20.2762,-10.0371]],[7.06006,[45.97,176.28,92.991],[-0.21309,-0.859445,-0.464701],[-0.0858972,-0.457304,0.885153],[-5.16889,-20.518,-10.04]],[7.10396,[45.71,175.24,92.491],[-0.212796,-0.859075,-0.465518],[-0.085606,-0.458206,0.884714],[-5.21358,-20.7585,-10.0471]],[7.17016,[45.36,173.84,91.8236],[-0.212469,-0.858698,-0.466363],[-0.0852905,-0.459141,0.884259],[-5.27336,-21.0822,-10.052]],[7.19316,[45.28,173.49,91.6567],[-0.212397,-0.858621,-0.466537],[-0.0852226,-0.459335,0.884165],[-5.28874,-21.1657,-10.0483]],[7.23706,[45.01,172.42,91.1552],[-0.212211,-0.858446,-0.466943],[-0.0850757,-0.459783,0.883947],[-5.33285,-21.4062,-10.0574]],[7.28096,[44.83,171.71,90.8199],[-0.212139,-0.858484,-0.466907],[-0.0850184,-0.459757,0.883965],[-5.3627,-21.5694,-10.0582]],[7.30416,[44.65,170.98,90.4839],[-0.212101,-0.858604,-0.466703],[-0.0850193,-0.459546,0.884075],[-5.39234,-21.7316,-10.0608]],[7.34816,[44.47,170.26,90.1477],[-0.21209,-0.858776,-0.466392],[-0.0850889,-0.459209,0.884243],[-5.42239,-21.896,-10.0589]],[7.39206,[44.2,169.15,89.6431],[-0.212111,-0.859076,-0.465829],[-0.0853246,-0.458575,0.88455],[-5.46739,-22.142,-10.0566]],[7.41506,[44.11,168.78,89.4749],[-0.212126,-0.859182,-0.465628],[-0.0854353,-0.458342,0.88466],[-5.48261,-22.225,-10.0538]],[7.46216,[43.83,167.67,88.9702],[-0.212175,-0.859499,-0.465019],[-0.0857854,-0.457635,0.884992],[-5.52723,-22.4676,-10.0566]],[7.48606,[43.74,167.29,88.8019],[-0.21219,-0.859597,-0.464832],[-0.0859035,-0.457414,0.885095],[-5.54189,-22.5469,-10.0602]],[7.53196,[43.46,166.16,88.2974],[-0.21223,-0.859861,-0.464325],[-0.0862448,-0.456814,0.885371],[-5.58728,-22.7918,-10.057]],[7.55516,[43.27,165.39,87.9612],[-0.212252,-0.860012,-0.464036],[-0.086475,-0.456463,0.88553],[-5.61687,-22.9508,-10.0626]],[7.60106,[43.08,164.63,87.625],[-0.21227,-0.860145,-0.463779],[-0.0867083,-0.456145,0.885671],[-5.6471,-23.1125,-10.0623]],[7.62406,[42.89,163.85,87.2889],[-0.212284,-0.860265,-0.463552],[-0.0869356,-0.455857,0.885797],[-5.67744,-23.274,-10.0623]],[7.67116,[42.61,162.68,86.7848],[-0.212301,-0.860433,-0.463231],[-0.087273,-0.455448,0.885974],[-5.7226,-23.5135,-10.0668]],[7.71706,[42.42,161.89,86.4486],[-0.212313,-0.860546,-0.463015],[-0.0875048,-0.455172,0.886093],[-5.7532,-23.675,-10.0655]],[7.73906,[42.22,161.1,86.1125],[-0.212325,-0.86066,-0.462798],[-0.087737,-0.454894,0.886213],[-5.78413,-23.8377,-10.0617]],[7.78196,[42.03,160.3,85.7764],[-0.212336,-0.860775,-0.462578],[-0.0879671,-0.454614,0.886334],[-5.81466,-23.9979,-10.0624]],[7.82616,[41.74,159.1,85.2724],[-0.212352,-0.860951,-0.462245],[-0.0883101,-0.45419,0.886517],[-5.86083,-24.2391,-10.061]],[7.84816,[41.64,158.69,85.1044],[-0.212356,-0.861009,-0.462135],[-0.0884214,-0.454051,0.886577],[-5.87636,-24.3199,-10.0595]],[7.89206,[41.34,157.47,84.6006],[-0.212363,-0.861167,-0.461837],[-0.0887273,-0.453672,0.886741],[-5.92274,-24.5606,-10.058]],[7.93606,[41.05,156.23,84.0969],[-0.212359,-0.861306,-0.46158],[-0.0889779,-0.453348,0.886881],[-5.96906,-24.7999,-10.0585]],[7.97996,[40.85,155.4,83.7613],[-0.212352,-0.86139,-0.461427],[-0.0891145,-0.453158,0.886965],[-6.00026,-24.9606,-10.056]],[8.02416,[40.54,154.15,83.2579],[-0.212333,-0.861506,-0.461219],[-0.0892816,-0.452904,0.887078],[-6.04693,-25.2003,-10.0544]],[8.04616,[40.4401,153.73,83.0902],[-0.212326,-0.861542,-0.461154],[-0.0893285,-0.452827,0.887113],[-6.06276,-25.2814,-10.0513]],[8.09006,[40.14,152.45,82.5874],[-0.212277,-0.861544,-0.461173],[-0.0894511,-0.452815,0.887106],[-6.10873,-25.5168,-10.0574]],[8.13406,[39.83,151.17,82.0872],[-0.212114,-0.861104,-0.462068],[-0.0893909,-0.453748,0.886635],[-6.15534,-25.7551,-10.0574]],[8.17796,[39.63,150.3,81.7546],[-0.211966,-0.86065,-0.462982],[-0.0893778,-0.454689,0.886154],[-6.18634,-25.9138,-10.058]],[8.20116,[39.52,149.87,81.5884],[-0.211896,-0.860425,-0.463432],[-0.0895029,-0.455122,0.885919],[-6.20206,-25.9945,-10.0561]],[8.26906,[39,147.68,80.7561],[-0.21158,-0.859392,-0.465488],[-0.0909608,-0.456889,0.884861],[-6.27884,-26.3884,-10.0667]],[8.26906,[39,147.68,80.7561],[-0.21158,-0.859392,-0.465488],[-0.0909608,-0.456889,0.884861],[-6.27884,-26.3884,-10.0667]],[8.31296,[38.79,146.79,80.423],[-0.21146,-0.858981,-0.4663],[-0.0918331,-0.457517,0.884446],[-6.31047,-26.5494,-10.0653]],[8.35716,[38.47,145.46,79.9237],[-0.211272,-0.858312,-0.467617],[-0.0933765,-0.458504,0.883773],[-6.35826,-26.7904,-10.065]],[8.38016,[38.36,145.01,79.7573],[-0.211206,-0.858072,-0.468086],[-0.0939284,-0.458856,0.883532],[-6.3742,-26.8698,-10.067]],[8.42606,[38.04,143.65,79.2585],[-0.210997,-0.857289,-0.469613],[-0.095596,-0.460029,0.882743],[-6.42333,-27.1126,-10.0646]],[8.44896,[37.9301,143.2,79.0923],[-0.210923,-0.857009,-0.470156],[-0.0961551,-0.460454,0.88246],[-6.43936,-27.1908,-10.0696]],[8.49516,[37.6,141.83,78.5934],[-0.210701,-0.856159,-0.471801],[-0.0977746,-0.461758,0.8816],[-6.4889,-27.4306,-10.0747]],[8.51806,[37.49,141.37,78.4271],[-0.210629,-0.855884,-0.472333],[-0.0982798,-0.462185,0.881321],[-6.50597,-27.5122,-10.0738]],[8.56416,[37.17,139.98,77.9279],[-0.210426,-0.855128,-0.473789],[-0.0996408,-0.463356,0.880552],[-6.55731,-27.7559,-10.0736]],[8.58716,[36.95,139.05,77.5945],[-0.210301,-0.854672,-0.474667],[-0.100448,-0.464065,0.880087],[-6.59119,-27.9151,-10.0806]],[8.63306,[36.72,138.11,77.262],[-0.210144,-0.854068,-0.475822],[-0.101271,-0.465056,0.87947],[-6.62643,-28.0794,-10.0783]],[8.65596,[36.5,137.17,76.9306],[-0.20995,-0.853298,-0.477286],[-0.102153,-0.46635,0.878682],[-6.66221,-28.2451,-10.0741]],[8.70216,[36.16,135.74,76.4341],[-0.209618,-0.851961,-0.479816],[-0.10359,-0.468606,0.877312],[-6.7143,-28.4847,-10.0864]],[8.72506,[36.05,135.26,76.2687],[-0.209499,-0.851479,-0.480722],[-0.104098,-0.469415,0.87682],[-6.73214,-28.5663,-10.0869]],[8.76906,[35.71,133.82,75.7728],[-0.209122,-0.849957,-0.483571],[-0.105703,-0.47196,0.87526],[-6.78592,-28.8102,-10.093]],[8.81296,[35.48,132.85,75.4424],[-0.208856,-0.848876,-0.485581],[-0.106822,-0.473757,0.874153],[-6.82265,-28.9755,-10.0937]],[8.85716,[35.13,131.39,74.9477],[-0.208411,-0.847064,-0.488925],[-0.10856,-0.476778,0.872294],[-6.87841,-29.2243,-10.0957]],[8.88016,[35.02,130.9,74.783],[-0.208255,-0.846428,-0.490092],[-0.109133,-0.47784,0.871642],[-6.89709,-29.3069,-10.098]],[8.92606,[34.67,129.41,74.29],[-0.207718,-0.844226,-0.494101],[-0.110948,-0.481526,0.869381],[-6.95373,-29.5561,-10.104]],[8.94796,[34.55,128.92,74.1264],[-0.207503,-0.843337,-0.495708],[-0.111632,-0.483013,0.868468],[-6.97259,-29.6385,-10.1087]],[8.99216,[34.2,127.41,73.6355],[-0.206831,-0.840572,-0.500659],[-0.113773,-0.487588,0.865629],[-7.02943,-29.8856,-10.1247]],[9.01416,[34.08,126.91,73.4712],[-0.206623,-0.839725,-0.502164],[-0.114468,-0.488969,0.864758],[-7.04811,-29.9661,-10.1351]],[9.05806,[33.72,125.4,72.9754],[-0.20607,-0.837489,-0.506109],[-0.116457,-0.492545,0.86246],[-7.10454,-30.2081,-10.1673]],[9.10206,[33.36,123.87,72.4754],[-0.205613,-0.835669,-0.509294],[-0.118296,-0.495374,0.860587],[-7.16119,-30.4484,-10.2077]],[9.14596,[33.12,122.85,72.14],[-0.205355,-0.834657,-0.511054],[-0.119405,-0.496915,0.859545],[-7.20003,-30.6118,-10.2307]],[9.19016,[32.75,121.3,71.634],[-0.205032,-0.833404,-0.513225],[-0.120855,-0.498795,0.858253],[-7.25933,-30.8592,-10.2632]],[9.21316,[32.63,120.79,71.4646],[-0.204941,-0.833053,-0.513831],[-0.121285,-0.499313,0.85789],[-7.27949,-30.9427,-10.2731]],[9.25706,[32.26,119.23,70.9548],[-0.20471,-0.832177,-0.51534],[-0.122437,-0.500584,0.856986],[-7.34126,-31.1974,-10.2958]],[9.30106,[31.89,117.65,70.4429],[-0.204536,-0.831536,-0.516443],[-0.1234,-0.501484,0.856321],[-7.40499,-31.4581,-10.3101]],[9.36816,[31.39,115.54,69.7583],[-0.204381,-0.830986,-0.517389],[-0.12443,-0.502204,0.85575],[-7.49332,-31.8169,-10.3111]],[9.36816,[31.39,115.54,69.7583],[-0.204381,-0.830986,-0.517389],[-0.12443,-0.502204,0.85575],[-7.49332,-31.8169,-10.3111]],[9.41206,[31.14,114.47,69.4156],[-0.204335,-0.830838,-0.517644],[-0.124849,-0.502363,0.855596],[-7.53893,-32.0011,-10.3036]],[9.45706,[30.76,112.87,68.9014],[-0.204303,-0.830761,-0.517779],[-0.125369,-0.502375,0.855513],[-7.60869,-32.2818,-10.2852]],[9.47996,[30.64,112.33,68.7301],[-0.2043,-0.830768,-0.517771],[-0.125517,-0.502329,0.855518],[-7.63245,-32.377,-10.2762]],[9.52616,[30.25,110.7,68.2164],[-0.204313,-0.830865,-0.517609],[-0.125915,-0.502065,0.855615],[-7.70286,-32.6587,-10.2556]],[9.54906,[30.12,110.15,68.0452],[-0.204326,-0.830931,-0.517499],[-0.126039,-0.50192,0.855681],[-7.72642,-32.7526,-10.2485]],[9.59526,[29.73,108.51,67.5318],[-0.204395,-0.831251,-0.516957],[-0.126364,-0.501282,0.856007],[-7.79631,-33.0307,-10.2331]],[9.61816,[29.47,107.4,67.1894],[-0.204452,-0.831507,-0.516523],[-0.126551,-0.500789,0.856268],[-7.84194,-33.2117,-10.2299]],[9.66406,[29.21,106.29,66.8473],[-0.204512,-0.831774,-0.516069],[-0.12672,-0.500279,0.856541],[-7.88922,-33.3987,-10.2156]],[9.68706,[28.95,105.18,66.5054],[-0.204576,-0.832049,-0.515599],[-0.126882,-0.499755,0.856823],[-7.93473,-33.5782,-10.2137]],[9.73316,[28.55,103.49,65.9921],[-0.204727,-0.832679,-0.514522],[-0.12709,-0.498593,0.857469],[-8.00582,-33.8578,-10.1918]],[9.75606,[28.41,102.93,65.8205],[-0.204805,-0.832993,-0.513982],[-0.127135,-0.498026,0.857792],[-8.02767,-33.9435,-10.197]],[9.80006,[28.01,101.22,65.3042],[-0.20511,-0.834212,-0.511879],[-0.127234,-0.495834,0.859046],[-8.09636,-34.212,-10.1914]],[9.84396,[27.74,100.08,64.9596],[-0.20536,-0.835197,-0.51017],[-0.127296,-0.494057,0.86006],[-8.14337,-34.3951,-10.1791]],[9.91016,[27.1901,97.79,64.265],[-0.206162,-0.8383,-0.504727],[-0.127118,-0.488492,0.863259],[-8.23543,-34.7512,-10.1663]],[9.93306,[26.92,96.6396,63.9138],[-0.206774,-0.840637,-0.500574],[-0.126691,-0.484318,0.86567],[-8.28298,-34.9338,-10.1484]],[9.97896,[26.65,95.48,63.563],[-0.207425,-0.843109,-0.496128],[-0.126128,-0.479876,0.868223],[-8.33458,-35.1309,-10.1009]],[10.001,[26.37,94.3101,63.2153],[-0.208038,-0.845415,-0.491928],[-0.125532,-0.475695,0.870606],[-8.38976,-35.3406,-10.0262]],[10.0452,[26.09,93.1396,62.8714],[-0.208614,-0.84757,-0.487961],[-0.124896,-0.471765,0.872834],[-8.44784,-35.5603,-9.92811]],[10.0672,[25.8101,91.96,62.5312],[-0.209191,-0.84972,-0.483958],[-0.124113,-0.467835,0.875058],[-8.5085,-35.7889,-9.8088]],[10.1111,[25.53,90.77,62.1949],[-0.209784,-0.851929,-0.4798],[-0.123151,-0.463789,0.877345],[-8.57053,-36.0221,-9.67592]],[10.1551,[25.1,88.9697,61.699],[-0.210693,-0.85532,-0.473325],[-0.12143,-0.457544,0.880857],[-8.66614,-36.3809,-9.4504]],[10.199,[24.67,87.1597,61.2119],[-0.211755,-0.8593,-0.465578],[-0.119308,-0.450089,0.884977],[-8.76506,-36.7523,-9.18639]],[10.2222,[24.52,86.5498,61.0512],[-0.212162,-0.860827,-0.462562],[-0.118539,-0.447172,0.886558],[-8.79768,-36.8748,-9.09859]],[10.2671,[24.08,84.7197,60.576],[-0.213523,-0.865927,-0.452304],[-0.116557,-0.437094,0.891832],[-8.90046,-37.2612,-8.7824]],[10.2891,[23.9401,84.1001,60.4201],[-0.214019,-0.867769,-0.448522],[-0.116128,-0.433302,0.893736],[-8.9344,-37.3887,-8.67639]],[10.3321,[23.49,82.25,59.9626],[-0.21562,-0.8736,-0.436269],[-0.115793,-0.420751,0.899756],[-9.04332,-37.7942,-8.28836]],[10.376,[23.1901,81,59.6669],[-0.216775,-0.877671,-0.427436],[-0.115826,-0.411632,0.90396],[-9.11811,-38.0673,-8.00715]],[10.4183,[22.74,79.1099,59.2413],[-0.218613,-0.883931,-0.41337],[-0.115248,-0.397264,0.910439],[-9.23806,-38.4929,-7.51875]],[10.4622,[22.4301,77.8398,58.9706],[-0.21987,-0.888096,-0.40366],[-0.114266,-0.387492,0.914764],[-9.31982,-38.7755,-7.17314]],[10.5061,[21.97,75.9199,58.5868],[-0.221802,-0.894367,-0.388474],[-0.111916,-0.372415,0.921294],[-9.44679,-39.2053,-6.60662]],[10.5481,[21.5,73.98,58.2321],[-0.223756,-0.900585,-0.372666],[-0.109323,-0.356757,0.927778],[-9.57911,-39.643,-5.96423]],[10.5901,[21.1801,72.6699,58.0116],[-0.225067,-0.904665,-0.361838],[-0.108033,-0.345905,0.932029],[-9.66015,-39.9067,-5.57747]],[10.6331,[20.7,70.6997,57.7058],[-0.227028,-0.910559,-0.345457],[-0.106965,-0.32926,0.938161],[-9.7803,-40.2885,-4.98357]],[10.6751,[20.38,69.3701,57.519],[-0.228262,-0.914091,-0.335161],[-0.106917,-0.318633,0.941829],[-9.85383,-40.5148,-4.63422]],[10.719,[19.88,67.3599,57.2671],[-0.22989,-0.918468,-0.321817],[-0.107459,-0.304696,0.946368],[-9.96171,-40.8347,-4.12264]],[10.7622,[19.38,65.3301,57.0471],[-0.231239,-0.921814,-0.311106],[-0.108122,-0.293443,0.949843],[-10.0667,-41.1283,-3.63791]],[10.8042,[19.05,63.96,56.9159],[-0.232007,-0.923596,-0.305192],[-0.108547,-0.287211,0.951697],[-10.1306,-41.3,-3.36943]],[10.8462,[18.54,61.8999,56.7394],[-0.233001,-0.925759,-0.297794],[-0.109129,-0.279397,0.953954],[-10.2234,-41.5396,-2.99538]],[10.8882,[18.2,60.52,56.633],[-0.233573,-0.926927,-0.293684],[-0.109466,-0.275051,0.955178],[-10.2793,-41.6793,-2.79932]],[10.9312,[17.6801,58.4399,56.4877],[-0.234322,-0.928364,-0.288503],[-0.109852,-0.26958,0.956692],[-10.3606,-41.8766,-2.52863]],[10.9971,[16.99,55.6499,56.3166],[-0.235156,-0.929831,-0.283046],[-0.110184,-0.263832,0.958255],[-10.4634,-42.1183,-2.21789]],[11.0181,[16.8199,54.9497,56.2772],[-0.235352,-0.930163,-0.281792],[-0.110161,-0.262538,0.958613],[-10.4871,-42.1729,-2.15764]],[11.0601,[16.29,52.8398,56.1639],[-0.23602,-0.931351,-0.277273],[-0.109055,-0.258146,0.959931],[-10.5621,-42.3434,-1.94327]],[11.1021,[15.9401,51.4399,56.0903],[-0.236592,-0.932453,-0.273049],[-0.106992,-0.254316,0.961185],[-10.6088,-42.4483,-1.82597]],[11.1441,[15.42,49.3198,55.9817],[-0.237644,-0.934637,-0.264534],[-0.101224,-0.247025,0.963708],[-10.678,-42.6041,-1.64231]],[11.188,[15.0699,47.9097,55.9109],[-0.238421,-0.936364,-0.257638],[-0.0959397,-0.241282,0.965701],[-10.7217,-42.7041,-1.52361]],[11.2322,[14.54,45.79,55.8093],[-0.239615,-0.939231,-0.245822],[-0.0862751,-0.231597,0.968978],[-10.7854,-42.8544,-1.32524]],[11.2742,[14.1901,44.3701,55.7455],[-0.240385,-0.941265,-0.237139],[-0.0787148,-0.224595,0.971268],[-10.8248,-42.9541,-1.17359]],[11.3162,[13.67,42.2397,55.6569],[-0.241441,-0.944414,-0.223133],[-0.0665882,-0.213271,0.974721],[-10.879,-43.0987,-0.944758]],[11.3582,[13.3101,40.8101,55.6037],[-0.242057,-0.946535,-0.213261],[-0.0586193,-0.205129,0.976978],[-10.911,-43.1961,-0.759047]],[11.4012,[12.78,38.6699,55.5343],[-0.24284,-0.949685,-0.197804],[-0.0476548,-0.191982,0.980241],[-10.9535,-43.3373,-0.474739]],[11.4451,[12.24,36.52,55.4795],[-0.243463,-0.952733,-0.181726],[-0.0382898,-0.177777,0.983325],[-10.9889,-43.478,-0.131464]],[11.4891,[11.88,35.0898,55.4518],[-0.243795,-0.954677,-0.170747],[-0.0324786,-0.167924,0.985265],[-11.0083,-43.5658,0.101195]],[11.532,[11.34,32.9297,55.426],[-0.244176,-0.957433,-0.153949],[-0.0246424,-0.152577,0.987984],[-11.0327,-43.6937,0.484867]],[11.574,[10.98,31.48,55.4198],[-0.244362,-0.959145,-0.142574],[-0.0204404,-0.141903,0.989669],[-11.0449,-43.7749,0.777877]],[11.6163,[10.4301,29.3101,55.4286],[-0.244573,-0.961501,-0.1253],[-0.0162218,-0.125149,0.992005],[-11.0591,-43.8868,1.21345]],[11.6412,[10.25,28.5898,55.4364],[-0.244635,-0.962224,-0.119495],[-0.0154699,-0.119351,0.992732],[-11.0627,-43.9215,1.37481]],[11.6932,[9.69006,26.4199,55.4762],[-0.244827,-0.964173,-0.102123],[-0.0154439,-0.101437,0.994722],[-11.072,-44.0166,1.84692]],[11.7161,[9.31995,24.96,55.5185],[-0.24498,-0.965217,-0.0913293],[-0.0172659,-0.0898415,0.995807],[-11.0781,-44.0728,2.19154]],[11.7662,[8.77002,22.7798,55.609],[-0.24526,-0.966348,-0.0775752],[-0.0218208,-0.0744962,0.996982],[-11.0885,-44.1413,2.69342]],[11.792,[8.57996,22.0498,55.6464],[-0.245367,-0.966625,-0.0736925],[-0.0236016,-0.0700374,0.997265],[-11.0923,-44.1597,2.84444]],[11.8431,[8.02002,19.8501,55.7794],[-0.245717,-0.967241,-0.0637748],[-0.0289538,-0.0584389,0.997871],[-11.1076,-44.2056,3.3172]],[11.8672,[7.65002,18.3799,55.8837],[-0.245967,-0.967518,-0.0583816],[-0.032076,-0.0520741,0.998128],[-11.1204,-44.2278,3.61417]],[11.917,[7.08997,16.1797,56.06],[-0.246346,-0.967799,-0.0517486],[-0.0358793,-0.0442507,0.998376],[-11.141,-44.25,3.98937]],[11.9441,[6.90002,15.4497,56.1234],[-0.246471,-0.967866,-0.0498645],[-0.0369405,-0.0420323,0.998433],[-11.1478,-44.2548,4.09151]],[11.9913,[6.33997,13.2397,56.3251],[-0.246846,-0.968021,-0.0447499],[-0.0396202,-0.0360587,0.998564],[-11.1697,-44.2639,4.38036]],[12.0122,[5.96997,11.77,56.4657],[-0.247123,-0.968118,-0.0409586],[-0.0411008,-0.0317589,0.99865],[-11.1845,-44.266,4.54378]],[12.0762,[5.41003,9.56006,56.6804],[-0.247629,-0.968279,-0.0334071],[-0.0421565,-0.02368,0.99883],[-11.2061,-44.2632,4.73642]],[12.0972,[5.03003,8.1001,56.8255],[-0.248027,-0.968376,-0.0270379],[-0.0422343,-0.0170746,0.998962],[-11.2207,-44.2586,4.85908]],[12.1392,[4.66003,6.62988,56.9722],[-0.248462,-0.96844,-0.0197905],[-0.0417692,-0.00970042,0.99908],[-11.2351,-44.2509,4.97276]],[12.1822,[4.09998,4.42969,57.1972],[-0.249159,-0.968433,-0.0075886],[-0.0399113,0.0024387,0.9992],[-11.2576,-44.2335,5.17257]],[12.2271,[3.72998,2.96973,57.3511],[-0.249632,-0.96834,0.00127962],[-0.0375435,0.0109989,0.999234],[-11.2722,-44.2175,5.31023]],[12.25,[3.35999,1.5,57.5093],[-0.250093,-0.968164,0.0106218],[-0.034293,0.019821,0.999215],[-11.287,-44.1975,5.47436]],[12.3001,[2.80005,-0.689941,57.7556],[-0.250728,-0.967725,0.0253635],[-0.0282214,0.0334961,0.99904],[-11.3072,-44.1596,5.73943]],[12.3262,[2.62,-1.41992,57.8403],[-0.250919,-0.967529,0.0304388],[-0.025993,0.0381678,0.998933],[-11.3132,-44.1451,5.82546]],[12.376,[2.06006,-3.62012,58.1047],[-0.251418,-0.966782,0.046052],[-0.0188876,0.052472,0.998444],[-11.329,-44.0917,6.14335]],[12.4002,[1.69006,-5.08008,58.29],[-0.251681,-0.966146,0.0567274],[-0.0140031,0.0622433,0.997963],[-11.3369,-44.0476,6.38949]],[12.4502,[1.13,-7.26025,58.5828],[-0.251963,-0.964976,0.0730476],[-0.0066243,0.0772009,0.996993],[-11.3439,-43.9709,6.76988]],[12.4771,[0.940063,-7.99023,58.6845],[-0.252028,-0.964526,0.0785542],[-0.00418779,0.0822608,0.996602],[-11.3451,-43.9434,6.89019]],[12.5281,[0.380005,-10.1699,59.0039],[-0.252129,-0.962997,0.0952272],[0.00295507,0.0976397,0.995217],[-11.3439,-43.8462,7.3111]],[12.552,[0.0100098,-11.6201,59.2291],[-0.252123,-0.961823,0.106444],[0.00755294,0.108038,0.994118],[-11.3392,-43.7703,7.62081]],[12.6021,[-0.550049,-13.8003,59.5855],[-0.252007,-0.959828,0.123379],[0.0143716,0.123767,0.992207],[-11.3268,-43.6449,8.0819]],[12.6282,[-0.73999,-14.52,59.7095],[-0.251938,-0.959101,0.129045],[0.0167622,0.129002,0.991503],[-11.3216,-43.6016,8.22452]],[12.678,[-1.29004,-16.6802,60.0979],[-0.251632,-0.956733,0.146089],[0.0248511,0.144509,0.989191],[-11.3002,-43.4533,8.70783]],[12.7022,[-1.66003,-18.1201,60.3707],[-0.251329,-0.955005,0.157475],[0.0313364,0.154584,0.987482],[-11.2809,-43.3419,9.05269]],[12.751,[-2.21997,-20.27,60.8009],[-0.250693,-0.952197,0.17457],[0.0423657,0.169364,0.984642],[-11.2447,-43.1639,9.55395]],[12.7771,[-2.40002,-20.9902,60.9499],[-0.250427,-0.951204,0.180268],[0.0464532,0.174181,0.983617],[-11.2312,-43.1039,9.70662]],[12.8282,[-2.94995,-23.1299,61.4145],[-0.249446,-0.948065,0.197352],[0.0596157,0.188373,0.980286],[-11.1799,-42.904,10.2152]],[12.8521,[-3.30994,-24.5503,61.7389],[-0.248638,-0.945854,0.208661],[0.0685533,0.197701,0.977862],[-11.1369,-42.7584,10.5718]],[12.9012,[-3.85999,-26.6699,62.2471],[-0.247197,-0.942342,0.225577],[0.0812821,0.211815,0.973924],[-11.0626,-42.5328,11.0824]],[12.927,[-4.04004,-27.3799,62.4224],[-0.246671,-0.941151,0.23106],[0.0851535,0.216456,0.972572],[-11.0366,-42.4582,11.2362]],[12.9771,[-4.57996,-29.4902,62.9685],[-0.245062,-0.937709,0.246265],[0.0950098,0.22956,0.968646],[-10.945,-42.2135,11.7424]],[13.001,[-4.93994,-30.8901,63.3498],[-0.244044,-0.935661,0.254912],[0.0997492,0.237246,0.966315],[-10.8767,-42.0402,12.0857]],[13.0511,[-5.47998,-32.98,63.948],[-0.242779,-0.933266,0.264712],[0.103454,0.246411,0.963628],[-10.773,-41.7832,12.5461]],[13.0772,[-5.66003,-33.6699,64.1537],[-0.242428,-0.932628,0.267272],[0.103929,0.24894,0.962927],[-10.7399,-41.7015,12.6754]],[13.1512,[-6.55005,-37.1201,65.2188],[-0.240993,-0.930084,0.277249],[0.104161,0.259232,0.960182],[-10.577,-41.2948,13.2591]],[13.1512,[-6.55005,-37.1201,65.2188],[-0.240993,-0.930084,0.277249],[0.104161,0.259232,0.960182],[-10.577,-41.2948,13.2591]],[13.2012,[-7.07996,-39.1802,65.8805],[-0.240341,-0.928978,0.281489],[0.104,0.263676,0.958988],[-10.4909,-41.0728,13.4984]],[13.2271,[-7.25,-39.8604,66.1039],[-0.240151,-0.928666,0.282679],[0.103954,0.264924,0.95865],[-10.4646,-41.0041,13.5563]],[13.2771,[-7.77002,-41.8999,66.7803],[-0.239641,-0.927861,0.285738],[0.103864,0.268124,0.957769],[-10.3884,-40.8026,13.7044]],[13.3001,[-8.12,-43.2603,67.2345],[-0.239307,-0.927324,0.287753],[0.103981,0.270184,0.957177],[-10.341,-40.6752,13.7731]],[13.3501,[-8.63,-45.2803,67.9157],[-0.238667,-0.926141,0.292063],[0.104715,0.274457,0.955881],[-10.2751,-40.4967,13.8265]],[13.3772,[-8.80005,-45.96,68.142],[-0.238392,-0.925583,0.294051],[0.105287,0.276364,0.955268],[-10.2545,-40.4404,13.8319]],[13.4261,[-9.31995,-47.9702,68.818],[-0.237368,-0.923383,0.301694],[0.107896,0.283588,0.952857],[-10.1921,-40.2693,13.8483]],[13.4502,[-9.65002,-49.3101,69.2669],[-0.236532,-0.921525,0.307966],[0.110471,0.289399,0.950813],[-10.1491,-40.1512,13.8654]],[13.501,[-10.16,-51.3101,69.9384],[-0.235067,-0.918223,0.318762],[0.115082,0.299352,0.947177],[-10.082,-39.9678,13.8992]],[13.5271,[-10.3199,-51.9702,70.1621],[-0.234525,-0.916997,0.322669],[0.116874,0.302921,0.945822],[-10.0592,-39.9059,13.9096]],[13.5772,[-10.8199,-53.96,70.8343],[-0.232739,-0.912975,0.335125],[0.123358,0.314092,0.941344],[-9.98382,-39.7024,13.982]],[13.6001,[-11.15,-55.27,71.2847],[-0.231444,-0.910114,0.343696],[0.128298,0.321648,0.938127],[-9.92757,-39.5531,14.0587]],[13.6502,[-11.64,-57.2402,71.9673],[-0.229507,-0.905986,0.355692],[0.135806,0.332063,0.93343],[-9.83702,-39.3171,14.1899]],[13.7002,[-12.13,-59.2002,72.6599],[-0.227613,-0.902145,0.366506],[0.143022,0.34133,0.928998],[-9.73807,-39.0657,14.3421]],[13.7261,[-12.29,-59.8501,72.8928],[-0.226982,-0.900902,0.369939],[0.145359,0.34426,0.927554],[-9.70512,-38.983,14.3858]],[13.7762,[-12.77,-61.79,73.5973],[-0.225038,-0.897152,0.380099],[0.152242,0.352938,0.923178],[-9.5986,-38.7209,14.5404]],[13.8001,[-13.08,-63.0801,74.0722],[-0.223755,-0.894764,0.386432],[0.156633,0.35832,0.920366],[-9.52369,-38.5403,14.648]],[13.8501,[-13.55,-64.9902,74.7936],[-0.222024,-0.891732,0.394359],[0.162554,0.364941,0.91673],[-9.4108,-38.2721,14.7883]],[13.876,[-13.71,-65.6299,75.0363],[-0.221502,-0.890872,0.396592],[0.16433,0.366777,0.91568],[-9.37423,-38.186,14.8239]],[13.9261,[-14.17,-67.5303,75.7704],[-0.220082,-0.888676,0.402267],[0.169077,0.371385,0.912955],[-9.26115,-37.9236,14.9317]],[13.9502,[-14.48,-68.79,76.2636],[-0.219234,-0.88747,0.40538],[0.171734,0.373901,0.911431],[-9.18638,-37.7524,14.9885]],[14,[-14.9301,-70.6699,77.0061],[-0.218,-0.885791,0.409696],[0.175017,0.377505,0.909318],[-9.07987,-37.5107,15.0316]],[14.0262,[-15.08,-71.3003,77.2542],[-0.217613,-0.885293,0.410976],[0.175914,0.378596,0.908691],[-9.04634,-37.4349,15.0333]],[14.0762,[-15.53,-73.1602,77.9996],[-0.216547,-0.884015,0.414275],[0.178087,0.381456,0.90707],[-8.94621,-37.2099,15.0285]],[14.1001,[-15.83,-74.3999,78.4966],[-0.215906,-0.883324,0.41608],[0.179167,0.383055,0.906183],[-8.8817,-37.0654,15.0095]],[14.1502,[-16.27,-76.2402,79.2407],[-0.215033,-0.882483,0.418312],[0.180344,0.385084,0.905089],[-8.79077,-36.8617,14.9477]],[14.1761,[-16.42,-76.8604,79.4881],[-0.21476,-0.882241,0.418961],[0.180628,0.385692,0.904773],[-8.76224,-36.7977,14.9174]],[14.2261,[-16.85,-78.6899,80.2272],[-0.213974,-0.881589,0.420732],[0.18116,0.387423,0.903927],[-8.6786,-36.6101,14.8149]],[14.25,[-17.14,-79.9102,80.7169],[-0.213476,-0.881205,0.421789],[0.181286,0.388512,0.903434],[-8.62531,-36.4902,14.7334]],[14.3001,[-17.5699,-81.73,81.4459],[-0.21276,-0.880689,0.423226],[0.1812,0.390068,0.902781],[-8.54994,-36.3199,14.5879]],[14.3262,[-17.72,-82.3301,81.6872],[-0.212527,-0.880528,0.423678],[0.181083,0.390583,0.902582],[-8.5261,-36.2658,14.533]],[14.376,[-18.14,-84.1401,82.4055],[-0.21184,-0.880054,0.425005],[0.180132,0.392265,0.902043],[-8.45621,-36.1064,14.3606]],[14.4002,[-18.4301,-85.3403,82.8793],[-0.211399,-0.879761,0.42583],[0.179087,0.393436,0.90174],[-8.41141,-36.0035,14.2375]],[14.4512,[-18.85,-87.1299,83.5821],[-0.21077,-0.87936,0.426967],[0.177365,0.395128,0.901341],[-8.34753,-35.8551,14.0384]],[14.4771,[-18.99,-87.73,83.8141],[-0.210568,-0.879234,0.427327],[0.176789,0.395672,0.901215],[-8.32718,-35.8074,13.9678]],[14.5262,[-19.41,-89.5103,84.503],[-0.209962,-0.878839,0.428436],[0.175017,0.397342,0.900826],[-8.26746,-35.6659,13.7517]],[14.5501,[-19.6801,-90.7002,84.956],[-0.209564,-0.87857,0.429183],[0.173849,0.398457,0.90056],[-8.22897,-35.5736,13.6026]],[14.6001,[-20.1,-92.4702,85.6261],[-0.208984,-0.878176,0.430269],[0.172217,0.400059,0.900164],[-8.17341,-35.4387,13.3701]],[14.626,[-20.23,-93.0601,85.8468],[-0.208796,-0.87805,0.430619],[0.171724,0.400565,0.900033],[-8.15551,-35.3949,13.29]],[14.6761,[-20.64,-94.8301,86.5009],[-0.208222,-0.877635,0.43174],[0.170387,0.402118,0.899594],[-8.10251,-35.264,13.0479]],[14.7002,[-20.91,-96,86.9298],[-0.207811,-0.877277,0.432665],[0.169624,0.4033,0.899209],[-8.06794,-35.1777,12.8839]],[14.7762,[-21.45,-98.3403,87.7709],[-0.206983,-0.876518,0.434597],[0.168394,0.405669,0.898374],[-8.00052,-35.0078,12.5493]],[14.7762,[-21.45,-98.3403,87.7709],[-0.206983,-0.876518,0.434597],[0.168394,0.405669,0.898374],[-8.00052,-35.0078,12.5493]],[14.8262,[-21.85,-100.08,88.3872],[-0.206384,-0.875982,0.435959],[0.167614,0.407314,0.897775],[-7.95065,-34.8805,12.2971]],[14.8501,[-22.12,-101.24,88.7912],[-0.206,-0.875653,0.436802],[0.167128,0.408334,0.897403],[-7.9176,-34.7956,12.1288]],[14.9002,[-22.51,-102.98,89.3868],[-0.205455,-0.875224,0.437916],[0.166424,0.4097,0.896911],[-7.86884,-34.6696,11.8729]],[14.9261,[-22.65,-103.56,89.5826],[-0.205282,-0.875099,0.438247],[0.166187,0.410113,0.896766],[-7.85289,-34.6282,11.7863]],[14.9761,[-23.04,-105.28,90.1615],[-0.204785,-0.874774,0.439128],[0.165469,0.411239,0.896383],[-7.80509,-34.5034,11.5269]],[15,[-23.3,-106.43,90.5403],[-0.204471,-0.874596,0.439629],[0.165007,0.411895,0.896167],[-7.77356,-34.4207,11.3529]],[15.0501,[-23.6899,-108.15,91.0978],[-0.204021,-0.874369,0.440288],[0.164321,0.412781,0.895885],[-7.72722,-34.2984,11.0879]],[15.0762,[-23.8199,-108.72,91.2807],[-0.203875,-0.874302,0.440489],[0.164091,0.413056,0.8958],[-7.71207,-34.2583,10.9982]],[15.126,[-24.2,-110.43,91.8205],[-0.203449,-0.874127,0.441034],[0.163431,0.413815,0.895571],[-7.66696,-34.1383,10.728]],[15.1502,[-24.46,-111.56,92.1729],[-0.203174,-0.874028,0.441356],[0.163011,0.414273,0.895436],[-7.63733,-34.0591,10.5462]],[15.2002,[-24.84,-113.26,92.69],[-0.202774,-0.873906,0.441782],[0.162392,0.414897,0.895259],[-7.59373,-33.942,10.2698]],[15.2261,[-24.97,-113.83,92.859],[-0.202645,-0.873874,0.441904],[0.16219,0.415083,0.89521],[-7.57944,-33.9035,10.1766]],[15.3001,[-25.6,-116.64,93.684],[-0.202009,-0.873728,0.442483],[0.161153,0.415986,0.894978],[-7.50126,-33.6927,9.74969]],[15.3001,[-25.6,-116.64,93.684],[-0.202009,-0.873728,0.442483],[0.161153,0.415986,0.894978],[-7.50126,-33.6927,9.74969]],[15.3501,[-25.97,-118.32,94.164],[-0.20164,-0.873666,0.442773],[0.160553,0.416461,0.894865],[-7.44718,-33.5471,9.53501]],[15.376,[-26.1,-118.88,94.322],[-0.201519,-0.873649,0.442863],[0.160357,0.416612,0.89483],[-7.42815,-33.4959,9.46927]],[15.4251,[-26.47,-120.55,94.788],[-0.20116,-0.873603,0.443117],[0.159782,0.417042,0.894732],[-7.36925,-33.337,9.28324]],[15.449,[-26.71,-121.66,95.095],[-0.200925,-0.87358,0.443269],[0.159412,0.417307,0.894674],[-7.3285,-33.2268,9.16836]],[15.4991,[-27.08,-123.31,95.547],[-0.200585,-0.873573,0.443435],[0.1589,0.41763,0.894615],[-7.26535,-33.0558,9.00849]],[15.5252,[-27.2,-123.86,95.696],[-0.200474,-0.873578,0.443476],[0.158735,0.417721,0.894602],[-7.24383,-32.9974,8.95815]],[15.5752,[-27.5599,-125.51,96.139],[-0.20015,-0.873609,0.443563],[0.158251,0.417954,0.894579],[-7.17846,-32.8197,8.81269]],[15.5992,[-27.8,-126.6,96.431],[-0.199938,-0.873637,0.443602],[0.157914,0.418093,0.894573],[-7.13425,-32.6993,8.72007]],[15.6492,[-28.16,-128.22,96.862],[-0.199624,-0.873687,0.443645],[0.157398,0.418288,0.894573],[-7.06713,-32.5161,8.58692]],[15.6751,[-28.28,-128.77,97.004],[-0.19952,-0.873706,0.443654],[0.157223,0.418348,0.894576],[-7.04457,-32.4544,8.54391]],[15.7251,[-28.63,-130.38,97.427],[-0.199205,-0.873747,0.443715],[0.15668,0.418568,0.894568],[-6.97662,-32.2682,8.41744]],[15.7491,[-28.86,-131.45,97.706],[-0.198991,-0.873759,0.443787],[0.156292,0.418753,0.89455],[-6.93111,-32.1431,8.33527]],[15.7991,[-29.21,-133.05,98.118],[-0.198664,-0.873759,0.443936],[0.155698,0.419075,0.894503],[-6.86252,-31.9541,8.21519]],[15.8492,[-29.55,-134.65,98.524],[-0.198332,-0.873738,0.444124],[0.155096,0.419439,0.894436],[-6.79366,-31.7636,8.09838]],[15.875,[-29.66,-135.17,98.659],[-0.198221,-0.873727,0.444195],[0.154894,0.419569,0.89441],[-6.77066,-31.6998,8.06009]],[15.9251,[-30,-136.75,99.057],[-0.197897,-0.873717,0.44436],[0.154337,0.419898,0.894352],[-6.70156,-31.5075,7.94703]],[15.949,[-30.22,-137.8,99.32],[-0.197689,-0.873728,0.44443],[0.15401,0.420064,0.894331],[-6.65544,-31.3788,7.87292]],[15.9991,[-30.55,-139.36,99.71],[-0.197391,-0.87378,0.444461],[0.153592,0.420217,0.894331],[-6.58629,-31.1852,7.76285]],[16.0252,[-30.66,-139.88,99.839],[-0.197295,-0.873806,0.444452],[0.153471,0.420244,0.894339],[-6.56327,-31.1207,7.72633]],[16.0752,[-30.99,-141.43,100.222],[-0.197015,-0.873907,0.444378],[0.153151,0.420264,0.894384],[-6.49432,-30.9269,7.61697]],[16.0992,[-31.21,-142.46,100.474],[-0.196835,-0.873989,0.444296],[0.152971,0.420235,0.894429],[-6.44849,-30.7979,7.54397]],[16.1492,[-31.53,-143.99,100.848],[-0.196572,-0.874132,0.444131],[0.152739,0.420139,0.894513],[-6.37995,-30.6047,7.43408]],[16.1751,[-31.63,-144.5,100.971],[-0.196485,-0.874184,0.444067],[0.152671,0.420095,0.894545],[-6.35715,-30.5404,7.39736]],[16.2251,[-31.95,-146.02,101.338],[-0.19623,-0.874351,0.443852],[0.152489,0.419934,0.894652],[-6.28897,-30.348,7.28659]],[16.2491,[-32.16,-147.03,101.579],[-0.196062,-0.874469,0.443692],[0.152385,0.419806,0.89473],[-6.24368,-30.2201,7.21225]],[16.2991,[-32.47,-148.53,101.937],[-0.195813,-0.874657,0.443433],[0.152248,0.419589,0.894855],[-6.17595,-30.0287,7.10022]],[16.3252,[-32.5699,-149.03,102.055],[-0.195731,-0.874721,0.443343],[0.152207,0.419511,0.894899],[-6.15341,-29.965,7.06281]],[16.375,[-32.88,-150.52,102.404],[-0.195485,-0.874919,0.44306],[0.152097,0.419262,0.895034],[-6.08599,-29.7744,6.94986]],[16.3992,[-33.08,-151.51,102.635],[-0.195322,-0.875055,0.442863],[0.152032,0.419087,0.895127],[-6.04118,-29.6477,6.8741]]]; +_unit_capture_firing = [7.01516,7.08106,8.06716,8.13306,9.14526,9.21216]; + +_vehicle = [_logic, false] call Ares_fnc_GetUnitUnderCursor; +_pilot = driver _vehicle; +_group = group _pilot; +if (not (_vehicle isKindOf "Helicopter")) exitWith {["This module currently only works on attack choppers!"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"}; +_weapons = [_vehicle,true] call Achilles_fnc_weaponsAllTurrets; +_weapons = _weapons select {getText (configfile >> "CfgWeapons" >> _x >> "cursorAim") in ["missile","rocket"] or (getText (configfile >> "CfgWeapons" >> _x >> "cursor") in ["missile","rocket"])}; +if (count _weapons == 0) exitWith {[localize "STR_NO_AMMO"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"}; + +_allTargetsUnsorted = allMissionObjects "Achilles_Create_CAS_Target_Module"; +if (count _allTargetsUnsorted == 0) exitWith {[localize "STR_NO_TARGET_MARKER"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"}; +_allTargets = [_allTargetsUnsorted, [], { _x getVariable ["SortOrder", 0]; }, "ASCEND"] call BIS_fnc_sortBy; +_targetChoices = [localize "STR_RANDOM", localize "STR_NEAREST", localize "STR_FARTHEST"]; +{ + _targetChoices pushBack (name _x); +} forEach _allTargets; +if (count _targetChoices == 3) exitWith {[localize "STR_NO_TARGET_AVAIABLE"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"}; + +_dialogResult = +[ + localize "STR_ADVANCED_CAS", + [ + [format[localize "STR_TARGET", " "], _targetChoices], + [localize "STR_AMMO", _weapons apply {getText (configfile >> "CfgWeapons" >> _x >> "displayName")}] + ] +] call Ares_fnc_showChooseDialog; + +if (count _dialogResult == 0) exitWith {}; + +_targetChooseAlgorithm = _dialogResult select 0; +_selectedTarget = objNull; +switch (_targetChooseAlgorithm) do +{ + case 0: + { + _selectedTarget = _allTargets call BIS_fnc_selectRandom; + }; + case 1: + { + _selectedTarget = [position _logic, _allTargets] call Ares_fnc_GetNearest; + }; + case 2: + { + _selectedTarget = [position _logic, _allTargets] call Ares_fnc_GetFarthest; + }; + default + { + _selectedTarget = _allTargets select (_targetChooseAlgorithm - 3); + }; +}; + +_target_pos = getPosWorld _selectedTarget; +_direction = 180 - ([_vehicle, _target_pos] call BIS_fnc_dirTo); + +{ + _x set [1,([_x select 1, _direction] call BIS_fnc_rotateVector2D) vectorAdd _target_pos]; + _x set [2,[_x select 2, _direction] call BIS_fnc_rotateVector2D]; + _x set [3,[_x select 3, _direction] call BIS_fnc_rotateVector2D]; + _x set [4,[_x select 4, _direction] call BIS_fnc_rotateVector2D]; + _unit_capture_trajectory set [_forEachIndex,_x]; +} forEach _unit_capture_trajectory; + +_end_data = _unit_capture_trajectory select 0; +_end_pos = _end_data select 1; +_end_velocity = _end_data select 1; +_end_vecDir = _end_data select 2; +_end_vecUp = _end_data select 3; + +_vehicle flyInHeight 80; + +_wp_index = currentwaypoint _group; +_group addWaypoint [_target_pos, 100, _wp_index]; +waitUntil {sleep 1; (not alive driver _vehicle or not canMove _vehicle or (_end_pos distance2D _vehicle < 200))}; +if (not alive driver _vehicle or not canMove _vehicle) exitWith {}; + +_start_pos = getPosASL _vehicle; +_start_velocity = velocity _vehicle; +_start_vecDir = vectorDir _vehicle; +_start_vecUp = vectorUp _vehicle; + +_speed = 60 /3.6; +_vehicle forceSpeed _speed * 3.6; +_duration = (_end_pos distance _start_pos)/_speed; + +_time = time; +waitUntil +{ + _delta_time = time - _time; + _vehicle setVelocityTransformation + [ + _start_pos, + _end_pos, + _start_velocity, + _end_velocity, + _start_vecDir, + _end_vecDir, + _start_vecUp, + _end_vecUp, + _delta_time / _duration + ]; + _vehicle setVelocity [0,0,0]; + sleep 0.01; + ((_delta_time >= _duration) or (not canMove _vehicle) or (not alive _pilot)) +}; +if (not alive driver _vehicle or not canMove _vehicle) exitWith {}; +[_vehicle, _unit_capture_trajectory] spawn BIS_fnc_UnitPlay; + +_weapon = _weapons select (_dialogResult select 1); +_mode = "Burst"; +_modes = getArray (configfile >> "CfgWeapons" >> _weapon >> "modes"); +switch (true) do +{ + case (_modes select 0 == "this"): {_mode = _weapon}; + case ("Burst" in _modes): {}; + default {_mode = _modes select 0}; +}; + +_prev_time = 0; +_eff_commander = effectiveCommander _vehicle; +_gunner = gunner _vehicle; +{ + _curr_time = _x; + _dt = _curr_time - _prev_time; + sleep _dt; + _eff_commander forceWeaponFire [_weapon,_mode]; + _gunner forceWeaponFire [_weapon,_mode]; + _prev_time = _curr_time; +} forEach _unit_capture_firing; + +#include "\achilles\modules_f_ares\module_footer.hpp" diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/functions/fn_FireSupportCreateCASTarget.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/functions/fn_FireSupportCreateCASTarget.sqf new file mode 100644 index 00000000..5c9054a2 --- /dev/null +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/functions/fn_FireSupportCreateCASTarget.sqf @@ -0,0 +1,27 @@ +#include "\achilles\modules_f_ares\module_header.hpp" + +if (isNil "Ares_CASTargetCount") then +{ + Ares_CASTargetCount = 0; +}; + +// Don't delete this module when we're done the script. +_deleteModuleOnExit = false; + +_targetPhoneticName = [Ares_CASTargetCount] call Ares_fnc_GetPhoneticName; +_target_name = format [localize "STR_CAS_X", _targetPhoneticName]; +_dialogResult = +[ + localize "STR_CREATE_CAS_TARGET", + [ + [localize "STR_NAME", "", _target_name] + ] +] call Ares_fnc_ShowChooseDialog; +if (count _dialogResult == 0) exitWith {_deleteModuleOnExit = true}; +_logic setName (_dialogResult select 0); +_logic setVariable ["SortOrder", Ares_CASTargetCount]; +[objNull, format [localize "STR_CREATED_SUPPRESSION_TARGET", _targetPhoneticName]] call bis_fnc_showCuratorFeedbackMessage; +Ares_CASTargetCount = Ares_CASTargetCount + 1; +publicVariable "Ares_CASTargetCount"; + +#include "\achilles\modules_f_ares\module_footer.hpp" diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/functions/fn_FireSupportCreateSuppressionTarget.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/functions/fn_FireSupportCreateSuppressionTarget.sqf index c0afaaf6..7e20016c 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/functions/fn_FireSupportCreateSuppressionTarget.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/FireSupport/functions/fn_FireSupportCreateSuppressionTarget.sqf @@ -9,7 +9,16 @@ if (isNil "Ares_SuppressionTargetCount") then _deleteModuleOnExit = false; _targetPhoneticName = [Ares_SuppressionTargetCount] call Ares_fnc_GetPhoneticName; -_logic setName format [localize "STR_SUPPRESS_X", _targetPhoneticName]; +_target_name = format [localize "STR_SUPPRESS_X", _targetPhoneticName]; +_dialogResult = +[ + localize "STR_CREATE_SUPPRESSION_TARGET", + [ + [localize "STR_NAME", "", _target_name] + ] +] call Ares_fnc_ShowChooseDialog; +if (count _dialogResult == 0) exitWith {_deleteModuleOnExit = true}; +_logic setName (_dialogResult select 0); _logic setVariable ["SortOrder", Ares_SuppressionTargetCount]; [objNull, format [localize "STR_CREATED_SUPPRESSION_TARGET", _targetPhoneticName]] call bis_fnc_showCuratorFeedbackMessage; Ares_SuppressionTargetCount = Ares_SuppressionTargetCount + 1; 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 44e19336..803641bf 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/MissionFlow/functions/fn_SpawnCreateEditIntel.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/MissionFlow/functions/fn_SpawnCreateEditIntel.sqf @@ -26,7 +26,7 @@ _dialog_options = [localize "STR_ACTION_DURATION","","1"], [localize "STR_DELETE_OBJECT_ON_COMPLETION",[localize "STR_TRUE",localize "STR_FALSE"]], [localize "STR_INTEL_TITLE",""], - [localize "STR_INTEL_TEXT", ""], + [localize "STR_INTEL_TEXT", "MESSAGE"], [localize "STR_INTEL_SHARED_WITH", [localize "STR_SIDE", localize "STR_GROUP", localize "STR_NO_ONE"]] ]; @@ -52,6 +52,7 @@ if (_dialogCount == 7) then { _type = INTEL_OBJECTS select (_dialogResult select 0); _object = _type createVehicle (position _logic); + [_object, false] remoteExec ["enableSimulationGlobal", 2]; _object setPos (position _logic); [[_object], true] call Ares_fnc_AddUnitsToCurator; diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Replacement/cfgFunctionsReplacement.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/Replacement/cfgFunctionsReplacement.hpp new file mode 100644 index 00000000..0cfb046a --- /dev/null +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Replacement/cfgFunctionsReplacement.hpp @@ -0,0 +1,6 @@ +class Achilles_Replacement_Function_Base +{ + file = "\achilles\modules_f_achilles\Replacement\functions"; + + class moduleMine; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Replacement/cfgVehiclesModulesReplacement.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/Replacement/cfgVehiclesModulesReplacement.hpp new file mode 100644 index 00000000..93cd284c --- /dev/null +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Replacement/cfgVehiclesModulesReplacement.hpp @@ -0,0 +1,4 @@ +class ModuleMine_F : ModuleEmpty_F +{ + function = "Achilles_fnc_moduleMine"; +}; diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Replacement/functions/fn_moduleMine.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/Replacement/functions/fn_moduleMine.sqf new file mode 100644 index 00000000..68e798df --- /dev/null +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Replacement/functions/fn_moduleMine.sqf @@ -0,0 +1,18 @@ +_logic = _this select 0; +_units = _this select 1; +_activated = _this select 2; + +if (_activated) then { + _explosive = gettext (configfile >> "cfgvehicles" >> typeof _logic >> "explosive"); + if (_explosive != "") then { + _explosive = createvehicle [_explosive,position _logic,[],0,"none"]; + _explosive attachto [_logic]; + + //--- Show hint to curator who placed the object + [[["Curator","PlaceMines"],nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",_logic] call bis_fnc_mp; + + waituntil {sleep 0.1; isnull _explosive || isnull _logic || !alive _logic}; + if (isnull _logic) then {deletevehicle _explosive;} else {_explosive setdamage 1;}; + deletevehicle _logic; + }; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFactionClasses.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFactionClasses.hpp index 36c52cd3..7750f965 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFactionClasses.hpp +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFactionClasses.hpp @@ -3,7 +3,7 @@ class CfgFactionClasses { class NO_CATEGORY; - class ACE: NO_CATEGORY {displayName = "ACE";}; + class ace_zeus_Medical: NO_CATEGORY {displayName = "ACE Medical";}; class Buildings: NO_CATEGORY {displayName = "$STR_BUILDINGS";}; class Objects: NO_CATEGORY {displayName = "$STR_OBJECTS";}; }; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFunctions.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFunctions.hpp index 5586f26d..38ca639c 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFunctions.hpp +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFunctions.hpp @@ -12,6 +12,7 @@ class CfgFunctions #include "Effects\cfgFunctionsEffects.hpp" #include "MissionFlow\cfgFunctionsMissionFlow.hpp" #include "Objects\cfgFunctionsObjects.hpp" + #include "Replacement\cfgFunctionsReplacement.hpp" #include "Spawn\cfgFunctionsSpawn.hpp" }; }; diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/cfgVehiclesModuleBase.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/cfgVehiclesModuleBase.hpp index 14269aff..8a6a47a0 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/cfgVehiclesModuleBase.hpp +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/cfgVehiclesModuleBase.hpp @@ -56,6 +56,7 @@ class CfgVehicles #include "Environment\cfgVehiclesModulesEnvironment.hpp" #include "MissionFlow\cfgVehiclesModulesMissionFlow.hpp" #include "Objects\cfgVehiclesModulesObjects.hpp" + #include "Replacement\cfgVehiclesModulesReplacement.hpp" #include "Spawn\cfgVehiclesModulesSpawn.hpp" // config replacement: remove vanilla effect modules and training category diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/config.cpp b/@AresModAchillesExpansion/addons/modules_f_achilles/config.cpp index 2a736c22..59439e6b 100644 --- a/@AresModAchillesExpansion/addons/modules_f_achilles/config.cpp +++ b/@AresModAchillesExpansion/addons/modules_f_achilles/config.cpp @@ -26,6 +26,8 @@ class CfgPatches "Achilles_Earthquake_Module", "Achilles_Suppressive_Fire_Module", "Achilles_Create_Suppression_Target_Module", + "Achilles_CAS_Module", + "Achilles_Create_CAS_Target_Module", "Achilles_Toggle_Simulation_Module", "Achilles_Transfer_Ownership_Module", "Achilles_Attach_To_Module", diff --git a/@AresModAchillesExpansion/addons/modules_f_ares.pbo b/@AresModAchillesExpansion/addons/modules_f_ares.pbo index 5c58f048..448a59ee 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.5.bisign b/@AresModAchillesExpansion/addons/modules_f_ares.pbo.Achilles_0.0.5.bisign deleted file mode 100644 index 3dd43b01..00000000 Binary files a/@AresModAchillesExpansion/addons/modules_f_ares.pbo.Achilles_0.0.5.bisign and /dev/null differ diff --git a/@AresModAchillesExpansion/addons/modules_f_ares.pbo.Achilles_0.0.6.bisign b/@AresModAchillesExpansion/addons/modules_f_ares.pbo.Achilles_0.0.6.bisign new file mode 100644 index 00000000..23b79e8a Binary files /dev/null and b/@AresModAchillesExpansion/addons/modules_f_ares.pbo.Achilles_0.0.6.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 c56ab3a3..0c0db0b8 100644 --- a/@AresModAchillesExpansion/addons/modules_f_ares/Behaviours/functions/fn_BehaviourPatrol.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_ares/Behaviours/functions/fn_BehaviourPatrol.sqf @@ -97,13 +97,19 @@ if (not isNull _groupUnderCursor) then { deleteWaypoint ((waypoints _groupUnderCursor) select 0); }; - - if (vehicle (leader _groupUnderCursor) isKindOf "Air") then + _leader_vehicle = vehicle (leader _groupUnderCursor); + if (_leader_vehicle isKindOf "Air") then { // aircrafts: Loiter in the area - _centerPoint = position vehicle (leader _groupUnderCursor); + _centerPoint = position _leader_vehicle; _centerPoint set [2,0]; - _waypoint = _groupUnderCursor addWaypoint [_centerPoint,0]; + _wp_id = 0; + if (not isEngineOn _leader_vehicle) then + { + _waypoint = _groupUnderCursor addWaypoint [_centerPoint vectorAdd ((vectorDir _leader_vehicle) vectorMultiply 300), _wp_id]; + _wp_id = 1; + }; + _waypoint = _groupUnderCursor addWaypoint [_centerPoint, _wp_id]; _waypoint setWaypointType "LOITER"; _waypoint setWaypointLoiterRadius _radius; if (not _moveClockwise) then diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/FireSupport/functions/fn_FireSupportArtilleryFireMission.sqf b/@AresModAchillesExpansion/addons/modules_f_ares/FireSupport/functions/fn_FireSupportArtilleryFireMission.sqf index f2646ac5..a1dbe16b 100644 --- a/@AresModAchillesExpansion/addons/modules_f_ares/FireSupport/functions/fn_FireSupportArtilleryFireMission.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_ares/FireSupport/functions/fn_FireSupportArtilleryFireMission.sqf @@ -139,7 +139,7 @@ if (_mode == 0) then format ["%1 (%2)",localize "STR_ARTILLERY_FIRE_MISSION",localize "STR_MARKER"], [ [localize "STR_NUMBER_OF_UNITS_INVOLVED", _numberOfGuns], - [localize "STR_ROUNDS", ["1", "2", "3", "4", "5"]], + [localize "STR_ROUNDS", ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]], [localize "STR_AMMO", _artilleryAmmo], [format [localize "STR_TARGET"," "], _targetChoices, 1] ]] call Ares_fnc_ShowChooseDialog; diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/FireSupport/functions/fn_FireSupportCreateArtilleryTarget.sqf b/@AresModAchillesExpansion/addons/modules_f_ares/FireSupport/functions/fn_FireSupportCreateArtilleryTarget.sqf index 52524111..2cee402c 100644 --- a/@AresModAchillesExpansion/addons/modules_f_ares/FireSupport/functions/fn_FireSupportCreateArtilleryTarget.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_ares/FireSupport/functions/fn_FireSupportCreateArtilleryTarget.sqf @@ -9,7 +9,16 @@ if (isNil "Ares_ArtilleryTargetCount") then _deleteModuleOnExit = false; _targetPhoneticName = [Ares_ArtilleryTargetCount] call Ares_fnc_GetPhoneticName; -_logic setName format [localize "STR_TARGET", _targetPhoneticName]; +_target_name = format [localize "STR_TARGET", _targetPhoneticName]; +_dialogResult = +[ + localize "STR_CREATE_EDIT_INTEL", + [ + [localize "STR_NAME", "", _target_name] + ] +] call Ares_fnc_showChooseDialog; +if (count _dialogResult == 0) exitWith {_deleteModuleOnExit = true}; +_logic setName (_dialogResult select 0); _logic setVariable ["SortOrder", Ares_ArtilleryTargetCount]; [objNull, format [localize "STR_CREATED_ARTILLERY_TARGET", _targetPhoneticName]] call bis_fnc_showCuratorFeedbackMessage; Ares_ArtilleryTargetCount = Ares_ArtilleryTargetCount + 1; diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/Reinforcements/functions/fn_ReinforcementsCreateLz.sqf b/@AresModAchillesExpansion/addons/modules_f_ares/Reinforcements/functions/fn_ReinforcementsCreateLz.sqf index c9522bea..772aaa9e 100644 --- a/@AresModAchillesExpansion/addons/modules_f_ares/Reinforcements/functions/fn_ReinforcementsCreateLz.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_ares/Reinforcements/functions/fn_ReinforcementsCreateLz.sqf @@ -8,7 +8,16 @@ if (isNil "Ares_ReinforcementLzCount") then _deleteModuleOnExit = false; _targetPhoneticName = [Ares_ReinforcementLzCount] call Ares_fnc_GetPhoneticName; -_logic setName format ["LZ %1", _targetPhoneticName]; +_target_name = format ["LZ %1", _targetPhoneticName]; +_dialogResult = +[ + localize "STR_CREATE_NEW_LZ", + [ + [localize "STR_NAME", "", _target_name] + ] +] call Ares_fnc_showChooseDialog; +if (count _dialogResult == 0) exitWith {_deleteModuleOnExit = true}; +_logic setName (_dialogResult select 0); _logic setVariable ["SortOrder", Ares_ReinforcementLzCount]; [objNull, format ["Created LZ '%1'", _targetPhoneticName]] call bis_fnc_showCuratorFeedbackMessage; Ares_ReinforcementLzCount = Ares_ReinforcementLzCount + 1; diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/Reinforcements/functions/fn_ReinforcementsCreateRp.sqf b/@AresModAchillesExpansion/addons/modules_f_ares/Reinforcements/functions/fn_ReinforcementsCreateRp.sqf index 06f883bc..494ce98b 100644 --- a/@AresModAchillesExpansion/addons/modules_f_ares/Reinforcements/functions/fn_ReinforcementsCreateRp.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_ares/Reinforcements/functions/fn_ReinforcementsCreateRp.sqf @@ -8,7 +8,16 @@ if (isNil "Ares_ReinforcementRpCount") then _deleteModuleOnExit = false; _targetPhoneticName = [Ares_ReinforcementRpCount] call Ares_fnc_GetPhoneticName; -_logic setName format ["RP %1", _targetPhoneticName]; +_target_name = format ["RP %1", _targetPhoneticName]; +_dialogResult = +[ + localize "STR_CREATE_NEW_RP", + [ + [localize "STR_NAME", "", _target_name] + ] +] call Ares_fnc_showChooseDialog; +if (count _dialogResult == 0) exitWith {_deleteModuleOnExit = true}; +_logic setName (_dialogResult select 0); _logic setVariable ["SortOrder", Ares_ReinforcementRpCount]; [objNull, format ["Created RP '%1'", _targetPhoneticName]] call bis_fnc_showCuratorFeedbackMessage; Ares_ReinforcementRpCount = Ares_ReinforcementRpCount + 1; 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 37b24af0..87ea7f43 100644 --- a/@AresModAchillesExpansion/addons/modules_f_ares/Zeus/functions/fn_ZeusAddRemoveEditableObjects.sqf +++ b/@AresModAchillesExpansion/addons/modules_f_ares/Zeus/functions/fn_ZeusAddRemoveEditableObjects.sqf @@ -43,7 +43,7 @@ if (_range_mode == 0) then case 0: {nearestObjects [_center_pos,[],_radius]}; case 1: { - _units = nearestObjects [_center_pos,["Man","Car","Tank","Air","Ship"],_radius]; + _units = nearestObjects [_center_pos,["LandVehicle","Tank","Air","Ship"],_radius]; if (_dialogResult select 4 == 1) then { _side = [(_dialogResult select 5) - 1] call BIS_fnc_sideType; @@ -53,7 +53,7 @@ if (_range_mode == 0) then _units; }; }; - case 2: {nearestObjects [_center_pos,["Car","Tank","Air","Ship"],_radius]}; + case 2: {nearestObjects [_center_pos,["LandVehicle","Air","Ship"],_radius]}; case 3: {nearestObjects [_center_pos,["Static"],_radius]}; case 4: {nearestObjects [_center_pos,["Logic"],_radius]}; }; diff --git a/@AresModAchillesExpansion/addons/settings_f.pbo b/@AresModAchillesExpansion/addons/settings_f.pbo index 763a45aa..baec4a80 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.5.bisign b/@AresModAchillesExpansion/addons/settings_f.pbo.Achilles_0.0.5.bisign deleted file mode 100644 index a346710a..00000000 Binary files a/@AresModAchillesExpansion/addons/settings_f.pbo.Achilles_0.0.5.bisign and /dev/null differ diff --git a/@AresModAchillesExpansion/addons/settings_f.pbo.Achilles_0.0.6.bisign b/@AresModAchillesExpansion/addons/settings_f.pbo.Achilles_0.0.6.bisign new file mode 100644 index 00000000..fb860be5 Binary files /dev/null and b/@AresModAchillesExpansion/addons/settings_f.pbo.Achilles_0.0.6.bisign differ diff --git a/@AresModAchillesExpansion/addons/settings_f/scripts/XEH_preInit.sqf b/@AresModAchillesExpansion/addons/settings_f/scripts/XEH_preInit.sqf index b8e0c954..7682cf8f 100644 --- a/@AresModAchillesExpansion/addons/settings_f/scripts/XEH_preInit.sqf +++ b/@AresModAchillesExpansion/addons/settings_f/scripts/XEH_preInit.sqf @@ -10,7 +10,7 @@ * ["Test_Setting_4", "COLOR", ["-test color-", "-tooltip-"], "My Category", [1,1,0], false, {diag_log text format ["Color Setting Changed: %1", _this];}] call cba_settings_fnc_init; */ -#include "module_icons.sqf" +#include "module_tree.sqf" #include "curator_vision.sqf" #include "available_factions.sqf" #include "keybindings.sqf" diff --git a/@AresModAchillesExpansion/addons/settings_f/scripts/available_factions.sqf b/@AresModAchillesExpansion/addons/settings_f/scripts/available_factions.sqf index 695c1b9b..10353afe 100644 --- a/@AresModAchillesExpansion/addons/settings_f/scripts/available_factions.sqf +++ b/@AresModAchillesExpansion/addons/settings_f/scripts/available_factions.sqf @@ -26,14 +26,14 @@ _faction_names = []; params [""_value""]; if (_value) then { - Achilles_var_excludedFactions = Achilles_var_excludedFactions - ['" + _faction_name + "'] + Achilles_var_excludedFactions = Achilles_var_excludedFactions - [""" + _faction_name + """] } else { - Achilles_var_excludedFactions pushBack '" + _faction_name + "'; + Achilles_var_excludedFactions pushBack """ + _faction_name + """; }; Achilles_var_reloadDisplay = true; ") ] call cba_settings_fnc_init; }; }; -} forEach _factions; \ No newline at end of file +} forEach _factions; diff --git a/@AresModAchillesExpansion/addons/settings_f/scripts/module_icons.sqf b/@AresModAchillesExpansion/addons/settings_f/scripts/module_tree.sqf similarity index 66% rename from @AresModAchillesExpansion/addons/settings_f/scripts/module_icons.sqf rename to @AresModAchillesExpansion/addons/settings_f/scripts/module_tree.sqf index 7a1ae091..2a699237 100644 --- a/@AresModAchillesExpansion/addons/settings_f/scripts/module_icons.sqf +++ b/@AresModAchillesExpansion/addons/settings_f/scripts/module_tree.sqf @@ -19,4 +19,14 @@ true, false, {Achilles_var_reloadDisplay = true} +] call cba_settings_fnc_init; + +[ + "Achilles_var_moduleTreeCollapse", + "CHECKBOX", + localize "STR_COLLAPSE_TREE_BY_DEFAULT", + localize "STR_MODULE_INTERFACE", + true, + false, + {Achilles_var_reloadDisplay = true} ] call cba_settings_fnc_init; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f.pbo b/@AresModAchillesExpansion/addons/ui_f.pbo index a740949d..66b8774f 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.5.bisign b/@AresModAchillesExpansion/addons/ui_f.pbo.Achilles_0.0.5.bisign deleted file mode 100644 index d799c082..00000000 Binary files a/@AresModAchillesExpansion/addons/ui_f.pbo.Achilles_0.0.5.bisign and /dev/null differ diff --git a/@AresModAchillesExpansion/addons/ui_f.pbo.Achilles_0.0.6.bisign b/@AresModAchillesExpansion/addons/ui_f.pbo.Achilles_0.0.6.bisign new file mode 100644 index 00000000..56f6f878 Binary files /dev/null and b/@AresModAchillesExpansion/addons/ui_f.pbo.Achilles_0.0.6.bisign differ diff --git a/@AresModAchillesExpansion/addons/ui_f/cfgFunctions.hpp b/@AresModAchillesExpansion/addons/ui_f/cfgFunctions.hpp index c113c666..96fc7f4a 100644 --- a/@AresModAchillesExpansion/addons/ui_f/cfgFunctions.hpp +++ b/@AresModAchillesExpansion/addons/ui_f/cfgFunctions.hpp @@ -29,6 +29,7 @@ class CfgFunctions class HandleRemoteKeyPressed; class HandleCuratorObjectDoubleClicked; class HandleCuratorObjectPlaced; + class HandleCuratorGroupPlaced; class HandleCuratorObjectEdited; }; diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscAttributeInventory.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscAttributeInventory.hpp new file mode 100644 index 00000000..120308a5 --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscAttributeInventory.hpp @@ -0,0 +1,79 @@ + +class RscAttributeInventory: RscControlsGroupNoScrollbars +{ + onSetFocus = "[_this,""RscAttributeInventory"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; + + class controls + { + class ArrowLeft: RscButtonMenu + { + + class Attributes + { + font = "RobotoCondensed"; + color = "#ffffff"; + align = "center"; + shadow = "false"; + }; + + class TextPos + { + left = 0; + top = 0; + right = 0; + bottom = 0; + }; + idc = 24468; + text = "-"; + size = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 2)"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 2)"; + sizeExSecondary = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 2)"; + x = "0 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + y = "-1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "1 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + + class WeaponSpecificLable: RscText + { + idc = 24081; + colorSelectBackground[] = {1, 1, 1, 0.250000}; + shadow = 0; + text = ""; + x = "0 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + y = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "26 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + + class ButtonVA: ArrowLeft + { + idc = 24470; + text = "Virtual Arsenal"; + size = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeExSecondary = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + x = "20 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + y = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "6 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + + class List: RscListNBox + { + columns[] = {0.070000, 0.230000, 0.760000, 0.830000}; + drawSideArrows = 1; + rowHeight = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + idcLeft = 24468; + idcRight = 24469; + colorSelect2[] = {0.950000, 0.950000, 0.950000, 1}; + colorSelectBackground[] = {1, 1, 1, 0.250000}; + colorSelectBackground2[] = {1, 1, 1, 0.250000}; + idc = 24368; + x = "0 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + y = "3 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "26 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "12.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + }; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscAttributes.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscAttributes.hpp index 31eb5ddc..c6366744 100644 --- a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscAttributes.hpp +++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscAttributes.hpp @@ -74,19 +74,34 @@ class RscAttributeAmmo: RscControlsGroupNoScrollbars // modify script +class RscAttributeRank: RscControlsGroupNoScrollbars +{ + onSetFocus = "[_this,""RscAttributeRank"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; +}; + class RscAttributeSkill: RscControlsGroupNoScrollbars { onSetFocus = "[_this,""RscAttributeSkill"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; }; -class RscAttributeUnitPos: RscControlsGroupNoScrollbars +class RscAttributeFuel: RscControlsGroupNoScrollbars { - onSetFocus = "[_this,""RscAttributeUnitPos"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; + onSetFocus = "[_this,""RscAttributeFuel"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; }; -class RscAttributeRank: RscControlsGroupNoScrollbars +class RscAttributeDamage: RscControlsGroupNoScrollbars { - onSetFocus = "[_this,""RscAttributeRank"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; + onSetFocus = "[_this,""RscAttributeDamage"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; +}; + +class RscAttributeLock: RscControlsGroupNoScrollbars +{ + onSetFocus = "[_this,""RscAttributeLock"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; +}; + +class RscAttributeUnitPos: RscControlsGroupNoScrollbars +{ + onSetFocus = "[_this,""RscAttributeUnitPos"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; }; class RscAttributeFormation: RscControlsGroupNoScrollbars @@ -99,6 +114,27 @@ class RscAttributeSpeedMode: RscControlsGroupNoScrollbars onSetFocus = "[_this,""RscAttributeSpeedMode"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; }; +class RscAttributeRespawnVehicle : RscControlsGroupNoScrollbars +{ + onSetFocus = "[_this,""RscAttributeRespawnVehicle"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; +}; + +class RscAttributeRespawnPosition: RscControlsGroupNoScrollbars +{ + onSetFocus = "[_this,""RscAttributeRespawnPosition"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; + + class controls + { + class Title: RscText {}; + class Background: RscText {}; + class West: RscActivePicture {}; + class East: West {}; + class Guer: West {}; + class Civ: West {}; + class Disabled: West {}; + }; +}; + // define class name class RscAttributeName: RscControlsGroupNoScrollbars diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesGroup.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesGroup.hpp index 6a2dcc87..9a7e06fe 100644 --- a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesGroup.hpp +++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesGroup.hpp @@ -1,6 +1,11 @@ class RscDisplayAttributesGroup: RscDisplayAttributes { + scriptName = "RscDisplayAttributesGroup"; + scriptPath = "AresDisplays"; + onLoad = "[""onLoad"",_this,""RscDisplayAttributesGroup"",'AresDisplays'] call (uinamespace getvariable 'BIS_fnc_initDisplay')"; + onUnload = "[""onUnload"",_this,""RscDisplayAttributesGroup"",'AresDisplays'] call (uinamespace getvariable 'BIS_fnc_initDisplay')"; + class Controls : Controls { class Content: Content diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesMan.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesMan.hpp index 463fdd5e..4aed8fe1 100644 --- a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesMan.hpp +++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesMan.hpp @@ -42,7 +42,15 @@ class RscDisplayAttributesMan: RscDisplayAttributes class ButtonCargo : ButtonCustomLeft { text = "$STR_ARSENAL"; - onMouseButtonClick = "(findDisplay -1) closeDisplay 1; [""Open"",[true,nil,BIS_fnc_initCuratorAttributes_target]] call bis_fnc_arsenal;"; + onMouseButtonClick = "(findDisplay -1) closeDisplay 1; \ + [""Open"",[true,nil,BIS_fnc_initCuratorAttributes_target]] call bis_fnc_arsenal; \ + [BIS_fnc_initCuratorAttributes_target] spawn { \ + waitUntil { sleep 1; isnull ( uinamespace getvariable ""RSCDisplayArsenal"" ) }; \ + params [""_template_unit""]; \ + _loadout = getUnitLoadout _template_unit; \ + _curatorSelected = [""man""] call Achilles_fnc_getCuratorSelected; \ + {_x setUnitLoadout _loadout} forEach _curatorSelected; \ + }"; colorBackground[] = {0.518,0.016,0,0.8}; }; }; diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesModuleTree.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesModuleTree.hpp new file mode 100644 index 00000000..e943668e --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesModuleTree.hpp @@ -0,0 +1,142 @@ +class Add: RscControlsGroupNoScrollbars +{ + class controls + { + class CreateUnitsWest: RscTree + { + //h = "safezoneH - 15.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + h = "safezoneH - 11.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + + + //////////////////////////////////////////////////////// + // GUI EDITOR OUTPUT START (by Kex, v1.063, #Lekizy) + //////////////////////////////////////////////////////// + + class Ares_Title_Attr: RscText + { + idc = 1000; + moving = 1; + + text = "Spawn Attributes"; //--- ToDo: Localize; + x = "2 * (((safezoneW / safezoneH) min 1.2) / 40)"; + //y= "safezoneH - 10.2 * (( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + y = "safezoneH - 6.5 * (( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "19 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + colorBackground[] = {0.518,0.016,0,0.8}; + sizeEx = 1.2 * GUI_GRID_H; + }; + class Ares_Icon_Background_Attr: IGUIBack + { + idc = 2020; + + x = "0.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + //y = "safezoneH - 10.2 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + y = "safezoneH - 6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "2.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + colorBackground[] = {0.518,0.016,0,0.8}; + }; + class Ares_Icon_Attr: RscPicture + { + idc = 2030; + + text = "\achilles\data_f_achilles\icons\icon_achilles_dialog.paa"; + x = "0.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + //y = "safezoneH - 10.2 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + y = "safezoneH - 6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "2.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + class Ares_Background_Attr: IGUIBack + { + idc = 2000; + + x = "0.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + //y = "safezoneH - 8.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + y = "safezoneH - 5.0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "11.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + //h = "7.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + h = "3.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + colorBackground[] = {0.2,0.2,0.2,0.8}; + }; + /* + class Ares_Button_Unit: RscButtonMenu + { + idc = 2401; + text = "Unit"; //--- ToDo: Localize; + x = "0.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + y = "safezoneH - 8.2 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "10.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + class Ares_Button_Vehicle: RscButtonMenu + { + idc = 2402; + text = "Vehicle"; //--- ToDo: Localize; + x = "0.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + y = "safezoneH - 7.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "10.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + class Ares_Button_Group: RscButtonMenu + { + idc = 2400; + text = "Group"; //--- ToDo: Localize; + x = "0.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + y = "safezoneH - 6.0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "10.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + */ + class Ares_Label_Crew: RscText + { + idc = 1020; + + text = "Include crew"; //--- ToDo: Localize; + shadow = 0; + font = "PuristaLight"; + x = "0.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + y = "safezoneH - 4.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "10.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + colorBackground[] = {0,0,0,0.6}; + }; + class Ares_Checkbox_Crew: RscCheckbox + { + idc = 2801; + checked = 1; + onCheckedChanged = "Achilles_var_deleteCrewOnSpawn = if (_this select 1 == 0) then {true} else {nil}"; + x = "9.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + y = "safezoneH - 4.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "1.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + class Ares_Label_Position: RscText + { + idc = 1020; + + text = "Specify position"; //--- ToDo: Localize; + shadow = 0; + font = "PuristaLight"; + x = "0.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + y = "safezoneH - 3.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "10.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + colorBackground[] = {0,0,0,0.6}; + }; + class Ares_Checkbox_Position: RscCheckbox + { + idc = 2800; + onCheckedChanged = "Achilles_var_specifyPositionBeforeSpawn = if (_this select 1 == 0) then {nil} else {true}"; + x = "9.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + y = "safezoneH - 3.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "1.0 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + //////////////////////////////////////////////////////// + // GUI EDITOR OUTPUT END + //////////////////////////////////////////////////////// + }; +}; diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayWaypointAttributes.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayWaypointAttributes.hpp index 27fc8568..e85864c0 100644 --- a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayWaypointAttributes.hpp +++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayWaypointAttributes.hpp @@ -44,6 +44,11 @@ class RscAttributeWaypointType: RscControlsGroupNoScrollbars }; }; +class RscAttributeWaypointTimeout: RscControlsGroupNoScrollbars +{ + onSetFocus = "[_this,""RscAttributeWaypointTimeout"",'AresDisplays'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute"")"; +}; + // include combat modes attribute class RscDisplayAttributesWaypoint: RscDisplayAttributes { diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/new2.py b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/new2.py new file mode 100644 index 00000000..3d4d1071 --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/new2.py @@ -0,0 +1,24 @@ +with open("RscDisplayAttributesModuleTree.hpp","r") as input_file: + with open("out_RscDisplayAttributesModuleTree.hpp","w") as output_file: + for line in input_file.readlines(): + index_x = line.find("x =") + index_y = line.find("y =") + index_w = line.find("w =") + index_h = line.find("h =") + if index_x is not -1: + value = float(line.split()[2]) + value -= 53.5 + output_file.write("\t\t\tx = \"{} * (((safezoneW / safezoneH) min 1.2) / 40)\";\n".format(value)) + elif index_y is not -1: + value = float(line.split()[2]) + value = 36.5 - value + output_file.write("\t\t\ty = \"safezoneH - {} * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)\";\n".format(value)) + elif index_w is not -1: + value = float(line.split()[2]) + output_file.write("\t\t\tw = \"{} * (((safezoneW / safezoneH) min 1.2) / 40)\";\n".format(value)) + elif index_h is not -1: + value = float(line.split()[2]) + output_file.write("\t\t\th = \"{} * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)\";\n".format(value)) + else: + output_file.write(line) + \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/RscBaseClasses.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/RscBaseClasses.hpp index 9cb04eeb..feac0093 100644 --- a/@AresModAchillesExpansion/addons/ui_f/dialogs/RscBaseClasses.hpp +++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/RscBaseClasses.hpp @@ -109,7 +109,9 @@ class RscTitle; class RscText; class RscStructuredText; class RscToolbox; +class RscCheckbox; class RscCombo; +class RscListNBox; class RscButton; class RscButtonMenu; class RscButtonMenuOK; @@ -117,8 +119,23 @@ class RscButtonMenuCancel; class RscButtonImages; class RscSlider; class RscXSliderH; +class ScrollBar; class RscControlsGroup; +class RscControlsGroupNoScrollbars; +class RscControlsGroupNoHScrollbars; class RscMapControl; class RscActivePicture; class RscPicture; class RscTree; + +// Achilles base classes +class RscAchillesEdit: RscEdit +{ + autocomplete = "general"; +}; +class RscAchillesMessageEdit: RscAchillesEdit +{ + style = 16; + linespacing = 1; + default = 1; +}; diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDialogDynamic.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDialogDynamic.hpp index 89d5028c..3b0d924f 100644 --- a/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDialogDynamic.hpp +++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDialogDynamic.hpp @@ -32,6 +32,14 @@ class Ares_Dynamic_Dialog h = 22.5 * GUI_GRID_H; colorBackground[] = {0.2,0.2,0.2,0.8}; }; + class Ares_Content: RscControlsGroup + { + idc = 7000 + x = 0 * GUI_GRID_W + GUI_GRID_X; + y = 1.9 * GUI_GRID_H + GUI_GRID_Y; + w = 40 * GUI_GRID_W; + h = 22.5 * GUI_GRID_H; + }; class Ares_Dialog_Bottom: IGUIBack { idc = 2010; diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDisplayReplacement.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDisplayReplacement.hpp index ed7eb9e4..822f8b3c 100644 --- a/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDisplayReplacement.hpp +++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDisplayReplacement.hpp @@ -17,17 +17,10 @@ class RscDisplayCurator { // couple achilles init with curator display onLoad = "[_this select 0] call Achilles_fnc_onDisplayCuratorLoad;"; - - /* - // change remove map satelite texture - class ControlsBackground + class Controls { - class Map: RscMapControl - { - maxSatelliteAlpha = 0; - }; + #include "Replacement\RscDisplayAttributesModuleTree.hpp" }; - */ }; /* @@ -45,33 +38,15 @@ class RscDisplayMain: RscStandardDisplay }; */ // load external resources -class RscControlsGroupNoScrollbars; -class RscControlsGroupNoHScrollbars; class RscAttributeOwners : RscControlsGroupNoScrollbars {}; // load external attributes -class RscAttributeDamage : RscControlsGroupNoScrollbars {}; -class RscAttributeFuel : RscControlsGroupNoScrollbars {}; -class RscAttributeLock : RscControlsGroupNoScrollbars {}; class RscAttributeExec : RscControlsGroupNoScrollbars {}; class RscAttributeGroupID: RscControlsGroupNoScrollbars {}; -class RscAttributeRespawnVehicle : RscControlsGroupNoScrollbars {}; -class RscAttributeRespawnPosition : RscControlsGroupNoScrollbars -{ - class controls - { - class Title: RscText {}; - class Background: RscText {}; - class West: RscActivePicture {}; - class East: West {}; - class Guer: West {}; - class Civ: West {}; - class Disabled: West {}; - }; -}; // include modified attributes #include "Replacement\RscAttributes.hpp" +#include "Replacement\RscAttributeInventory.hpp" // include modified dialogs and displays #include "Replacement\RscDisplayAttributesMan.hpp" diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_ChangeSkills.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_ChangeSkills.sqf index 106f875a..ea8c1cc5 100644 --- a/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_ChangeSkills.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_ChangeSkills.sqf @@ -1,5 +1,7 @@ #define SKILLS ["aimingAccuracy","aimingShake","aimingSpeed","endurance","spotDistance","spotTime","courage","reloadSpeed","commanding"] +#define ACE_TRAITS ["ace_medical_medicClass","ACE_IsEngineer","ACE_isEOD"] +#define VANILLA_TRAITS ["medic","engineer","explosiveSpecialist"] #define IDD_DYNAMIC_GUI 133798 #define IDC_CTRL_BASE 20000 @@ -17,16 +19,41 @@ switch (_mode) do { case "LOADED": { - // get current damage - _entity = BIS_fnc_initCuratorAttributes_target; - _unit = if (typeName _entity == "OBJECT") then {_entity} else {leader _entity}; + // get current skills + _is_single_unit = (typeName BIS_fnc_initCuratorAttributes_target == "OBJECT"); + _ace_loaded = isClass (configfile >> "CfgPatches" >> "ace_main"); + _unit = if (_is_single_unit) then {_entity} else {leader _entity}; + private _i = 0; // set initial slider values + if (_is_single_unit) then { - _ctrl = _dialog displayCtrl (IDC_CTRL_BASE + _forEachIndex); + if (_ace_loaded) then + { + { + _trait_value = _unit getVariable [_x, 0]; + _ctrl = _dialog displayCtrl (IDC_CTRL_BASE + _i); + _ctrl lbSetCurSel _trait_value; + uiNamespace setVariable [format ["Ares_ChooseDialog_ReturnValue_%1", _i], _trait_value]; + _i = _i + 1; + } forEach ACE_TRAITS; + } else + { + { + _trait_value = if (_unit getUnitTrait _x) then {1} else {0}; + _ctrl = _dialog displayCtrl (IDC_CTRL_BASE + _i); + _ctrl lbSetCurSel _trait_value; + uiNamespace setVariable [format ["Ares_ChooseDialog_ReturnValue_%1", _i], _trait_value]; + _i = _i + 1; + } forEach VANILLA_TRAITS; + }; + }; + { + _ctrl = _dialog displayCtrl (IDC_CTRL_BASE + _i); _value = linearConversion [0.2,1,_unit skill _x,0,1,true]; _ctrl sliderSetPosition _value; - uiNamespace setVariable [format ["Ares_ChooseDialog_ReturnValue_%1",_forEachIndex], _value]; + uiNamespace setVariable [format ["Ares_ChooseDialog_ReturnValue_%1",_i], _value]; + _i = _i + 1; } forEach SKILLS; }; case "UNLOAD" : {}; diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_DamageComponents.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_DamageComponents.sqf index 069a308a..6e53fb42 100644 --- a/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_DamageComponents.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_DamageComponents.sqf @@ -19,9 +19,6 @@ switch (_mode) do _vehicle = BIS_fnc_initCuratorAttributes_target; _damageValues = (getAllHitPointsDamage _vehicle) select 2; - // truncation of array given by dialog space (important components are usually below the truncation) - _damageValues = _damageValues select [0,14]; - // set initial slider values { _ctrl = _dialog displayCtrl (IDC_CTRL_BASE + _forEachIndex); diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_onModuleTreeLoad.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_onModuleTreeLoad.sqf index 7415222e..99ffb973 100644 --- a/@AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_onModuleTreeLoad.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_onModuleTreeLoad.sqf @@ -116,39 +116,48 @@ _categoryIndex = _tree_ctrl tvAdd [[],_categoryName]; */ //collapse unit tree or remove faction +if (count Achilles_var_excludedFactions > 0 or Achilles_var_moduleTreeCollapse) then { - _tree_ctrl = _display displayCtrl _x; - for "_i" from ((_tree_ctrl tvCount []) - 1) to 0 step -1 do { - _path = [_i]; - _faction_name = _tree_ctrl tvText _path; - if (_faction_name in Achilles_var_excludedFactions) then + _tree_ctrl = _display displayCtrl _x; + for "_i" from ((_tree_ctrl tvCount []) - 1) to 0 step -1 do { - _tree_ctrl tvDelete _path; - } else - { - _tree_ctrl tvCollapse _path; + _path = [_i]; + _faction_name = _tree_ctrl tvText _path; + if (_faction_name in Achilles_var_excludedFactions) then + { + _tree_ctrl tvDelete _path; + } else + { + if (Achilles_var_moduleTreeCollapse) then + { + _tree_ctrl tvCollapse _path; + }; + }; }; - }; -} forEach -[ - IDC_RSCDISPLAYCURATOR_CREATE_UNITS_WEST, - IDC_RSCDISPLAYCURATOR_CREATE_UNITS_EAST, - IDC_RSCDISPLAYCURATOR_CREATE_UNITS_GUER -]; + } forEach + [ + IDC_RSCDISPLAYCURATOR_CREATE_UNITS_WEST, + IDC_RSCDISPLAYCURATOR_CREATE_UNITS_EAST, + IDC_RSCDISPLAYCURATOR_CREATE_UNITS_GUER + ]; +}; //collapse unit trees +if (Achilles_var_moduleTreeCollapse) then { - _tree_ctrl = _display displayCtrl _x; - for "_i" from 0 to ((_tree_ctrl tvCount []) - 1) do { - _tree_ctrl tvCollapse [_i]; - }; -} forEach -[ - IDC_RSCDISPLAYCURATOR_CREATE_UNITS_CIV, - IDC_RSCDISPLAYCURATOR_CREATE_UNITS_EMPTY -]; + _tree_ctrl = _display displayCtrl _x; + for "_i" from 0 to ((_tree_ctrl tvCount []) - 1) do + { + _tree_ctrl tvCollapse [_i]; + }; + } forEach + [ + IDC_RSCDISPLAYCURATOR_CREATE_UNITS_CIV, + IDC_RSCDISPLAYCURATOR_CREATE_UNITS_EMPTY + ]; +}; //collapse group trees or remove faction { diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/dynamic/fn_ShowChooseDialog.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/dynamic/fn_ShowChooseDialog.sqf index fe6a45ef..9a88fb35 100644 --- a/@AresModAchillesExpansion/addons/ui_f/functions/dynamic/fn_ShowChooseDialog.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/functions/dynamic/fn_ShowChooseDialog.sqf @@ -13,11 +13,11 @@ */ disableSerialization; -_titleText = _this param [0,"",[""]]; -_choicesArray = _this param [1,["placeholder"],["",[]]]; -_ResourceScript = _this param [2,"",[""]]; - -private "_defaultChoice"; +private ["_defaultChoice","_defaultVariableId"]; +private _titleText = _this param [0,"",[""]]; +private _choicesArray = _this param [1,["placeholder"],["",[]]]; +private _ResourceScript = _this param [2,"",[""]]; +private _ResourceScript = _this param [2,"",[""]]; /* if ((count _this) == 2 && typeName (_choicesArray select 0) == typeName "") then @@ -44,10 +44,12 @@ if ((count _this) == 2 && typeName (_choicesArray select 0) == typeName "") then #define DYNAMIC_GUI_IDD 133798 #define DYNAMIC_TITLE_IDC 1000 #define DYNAMIC_BG_IDC 2000 +#define DYNAMIC_CTRL_GROUP 7000 #define DYNAMIC_BOTTOM_IDCs [2010,3000,3010] #define BG_WIDTH (40 * GUI_GRID_W) -#define START_ROW_Y (2 * GUI_GRID_H + GUI_GRID_Y) +#define START_ROW_Y (0 * GUI_GRID_H + GUI_GRID_Y) +#define MAX_ROW_Y (29.4 * GUI_GRID_H + GUI_GRID_Y) #define LABEL_COMBO_DELTA_Y (0.5 * GUI_GRID_H + GUI_GRID_Y) #define LABEL_COLUMN_X (0.5 * GUI_GRID_W + GUI_GRID_X) #define LABEL_WIDTH (39 * GUI_GRID_W) @@ -70,17 +72,36 @@ if ((count _this) == 2 && typeName (_choicesArray select 0) == typeName "") then #define SIDE_BASE_IDC (12000) // Bring up the dialog frame we are going to add things to. -_createdDialogOk = createDialog "Ares_Dynamic_Dialog"; -_dialog = findDisplay DYNAMIC_GUI_IDD; +createDialog "Ares_Dynamic_Dialog"; +private _dialog = findDisplay DYNAMIC_GUI_IDD; // translate the bottom line of the dialog -_row_heights = _choicesArray apply {_choices = _x select 1; if (_choices in ["ALLSIDE","SIDE"]) then {GtC_H(4.1)} else {TOTAL_ROW_HEIGHT};}; -_yCoord = (_row_heights call Achilles_fnc_sum) + TOTAL_ROW_HEIGHT + GtC_H(0.4); +private _row_heights = _choicesArray apply +{ + _choices = _x select 1; + switch (_choices) do + { + case "ALLSIDE"; case "SIDE": {GtC_H(4.1)}; + case "MESSAGE": {TOTAL_ROW_HEIGHT + 4*COMBO_HEIGHT}; + default {TOTAL_ROW_HEIGHT}; + }; +}; +private _tot_height = _row_heights call Achilles_fnc_sum; +if (_tot_height > MAX_ROW_Y) then {_tot_height = MAX_ROW_Y}; + +private _yCoord = _tot_height + TOTAL_ROW_HEIGHT + GtC_H(0.4); -_yCoord = _yCoord + (0.4 * GUI_GRID_H); +// Resize ctrl group +private _ctrl_group = _dialog displayCtrl DYNAMIC_CTRL_GROUP; +private _pos = ctrlPosition _ctrl_group; +_pos set [3,_yCoord-(_pos select 1)]; +_ctrl_group ctrlSetPosition _pos; +_ctrl_group ctrlCommit 0; + +_yCoord = _yCoord + GtC_H(0.4); { - _bottomCtrl = _dialog displayCtrl _x; + private _bottomCtrl = _dialog displayCtrl _x; _pos = ctrlPosition _bottomCtrl; _pos set [1,_yCoord]; _bottomCtrl ctrlSetPosition _pos; @@ -90,7 +111,7 @@ _yCoord = _yCoord + (0.4 * GUI_GRID_H); _yCoord = _yCoord + TOTAL_ROW_HEIGHT; // Resize the background -_background = _dialog displayCtrl DYNAMIC_BG_IDC; +private _background = _dialog displayCtrl DYNAMIC_BG_IDC; _pos = ctrlPosition _background; _pos set [3,_yCoord-(_pos select 1)]; _background ctrlSetPosition _pos; @@ -99,7 +120,7 @@ _background ctrlCommit 0; // set dialog title if (_titleText != "") then { - _ctrlTitle = _dialog displayCtrl DYNAMIC_TITLE_IDC; + private _ctrlTitle = _dialog displayCtrl DYNAMIC_TITLE_IDC; _ctrlTitle ctrlSetText _titleText; }; @@ -108,13 +129,13 @@ if (_titleText != "") then _yCoord = START_ROW_Y; // Get the ID for use when looking up previously selected values. -_titleText_varName = _titleText call Achilles_fnc_TextToVariableName; -_titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleText_varName]; +private _titleText_varName = _titleText call Achilles_fnc_TextToVariableName; +private _titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleText_varName]; { - _choiceName = _x select 0; - _choices = _x select 1; + private _choiceName = _x select 0; + private _choices = _x select 1; - _choiceName_varName = _choiceName call Achilles_fnc_TextToVariableName; + private _choiceName_varName = _choiceName call Achilles_fnc_TextToVariableName; _defaultChoice = 0; if (count _x > 2) then @@ -130,7 +151,7 @@ _titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleT }; // Create the label for this entry - _choiceLabel = _dialog ctrlCreate ["RscText", BASE_IDC_LABEL + _forEachIndex]; + private _choiceLabel = _dialog ctrlCreate ["RscText", BASE_IDC_LABEL + _forEachIndex, _ctrl_group]; _choiceLabel ctrlSetText _choiceName; _choiceLabel ctrlSetBackgroundColor [0,0,0,0.6]; @@ -142,7 +163,7 @@ _titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleT _choiceLabel ctrlCommit 0; // Create the combo box for this entry and populate it. - _choiceCombo = _dialog ctrlCreate ["RscCombo", BASE_IDC_CTRL + _forEachIndex]; + private _choiceCombo = _dialog ctrlCreate ["RscCombo", BASE_IDC_CTRL + _forEachIndex, _ctrl_group]; _choiceCombo ctrlSetPosition [COMBO_COLUMN_X, _yCoord+LABEL_COMBO_DELTA_Y, COMBO_WIDTH, COMBO_HEIGHT]; _choiceLabel ctrlSetBackgroundColor [0,0,0,0.5]; _choiceCombo ctrlCommit 0; @@ -152,7 +173,7 @@ _titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleT // Set the current choice, record it in the global variable, and setup the event handler to update it. - _comboScript = ""; + private _comboScript = ""; if (_ResourceScript != "") then { @@ -176,6 +197,7 @@ _titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleT } else { + private _choices = toUpper _choices; if (_choices in ["ALLSIDE","SIDE"]) then { // set entry label position @@ -183,7 +205,7 @@ _titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleT _choiceLabel ctrlCommit 0; // create entry background - _ctrl = _dialog ctrlCreate ["RscText", BASE_IDC_CTRL + _forEachIndex]; + private _ctrl = _dialog ctrlCreate ["RscText", BASE_IDC_CTRL + _forEachIndex, _ctrl_group]; _yCoord = _yCoord + GtC_H(0.5); _ctrl ctrlSetBackgroundColor [1,1,1,0.1]; _ctrl ctrlSetPosition [GtC_X(8),_yCoord,GtC_W(31),GtC_H(3)]; @@ -191,13 +213,13 @@ _titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleT // create Active Entry Pictures _yCoord = _yCoord + GtC_H(0.5); - _xCoord = GtC_X(12.5); + private _xCoord = GtC_X(12.5); { - _icon = _x; - _ctrl = _dialog ctrlCreate ["RscActivePicture", SIDE_BASE_IDC + 10*_forEachIndex]; + private _icon = _x; + _ctrl = _dialog ctrlCreate ["RscActivePicture", SIDE_BASE_IDC + 10*_forEachIndex, _ctrl_group]; _ctrl ctrlSetBackgroundColor [1,1,1,1]; _ctrl ctrlSetActiveColor [1,1,1,1]; - _side_name = toUpper (if (_foreachindex == 0) then {"ZEUS"} else {(_foreachindex - 1) call bis_fnc_sideName}); + private _side_name = toUpper (if (_foreachindex == 0) then {"ZEUS"} else {(_foreachindex - 1) call bis_fnc_sideName}); _ctrl ctrlSetTooltip _side_name; _ctrl ctrlSetText _icon; _ctrl ctrlSetPosition [_xCoord,_yCoord,GtC_W(2.4),GtC_H(2)]; @@ -214,7 +236,7 @@ _titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleT } else { // include side logic - defaultChoice = if (typeName _defaultChoice == "SCALAR" and _defaultChoice != -1) then {_defaultChoice} else {1}; + _defaultChoice = if (typeName _defaultChoice == "SCALAR" and _defaultChoice != -1) then {_defaultChoice} else {1}; }; ["onLoad",_dialog,_forEachIndex,_defaultChoice] call Achilles_fnc_sideTab; @@ -222,15 +244,21 @@ _titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleT _yCoord = _yCoord + GtC_H(3.1); } else { - + private _add_height = if (_choices == "MESSAGE") then {4*COMBO_HEIGHT} else {0}; + // set entry label position - _choiceLabel ctrlSetPosition [LABEL_COLUMN_X, _yCoord, LABEL_WIDTH, LABEL_HEIGHT]; + _choiceLabel ctrlSetPosition [LABEL_COLUMN_X, _yCoord, LABEL_WIDTH, LABEL_HEIGHT + _add_height]; _choiceLabel ctrlCommit 0; // create the control element - _ctrl_type = if (_choices == "SLIDER") then {"RscXSliderH"} else {"RscEdit"}; - _ctrl = _dialog ctrlCreate [_ctrl_type, BASE_IDC_CTRL + _forEachIndex]; - _ctrl ctrlSetPosition [COMBO_COLUMN_X, _yCoord+LABEL_COMBO_DELTA_Y, COMBO_WIDTH, COMBO_HEIGHT]; + private _ctrl_type = switch (_choices) do + { + case "SLIDER": {"RscXSliderH"}; + case "MESSAGE": {"RscAchillesMessageEdit"}; + default {"RscAchillesEdit"}; + }; + private _ctrl = _dialog ctrlCreate [_ctrl_type, BASE_IDC_CTRL + _forEachIndex, _ctrl_group]; + _ctrl ctrlSetPosition [COMBO_COLUMN_X, _yCoord+LABEL_COMBO_DELTA_Y, COMBO_WIDTH, COMBO_HEIGHT + _add_height]; _ctrl ctrlCommit 0; if (_choices == "SLIDER") then { @@ -256,7 +284,7 @@ _titleVariableIdentifier = format ["Ares_ChooseDialog_DefaultValues_%1", _titleT uiNamespace setVariable [format["Ares_ChooseDialog_ReturnValue_%1",_forEachIndex], _defaultChoice]; // Move onto the next row - _yCoord = _yCoord + TOTAL_ROW_HEIGHT; + _yCoord = _yCoord + TOTAL_ROW_HEIGHT + _add_height; }; }; } forEach _choicesArray; @@ -265,14 +293,16 @@ uiNamespace setVariable ["Ares_ChooseDialog_Result", -1]; if (_ResourceScript != "") then {call compile format["[""LOADED""] call %1;",_ResourceScript]}; -waitUntil { !dialog }; +Ares_var_showChooseDialog = true; +_dialog displayAddEventHandler ["unload",{Ares_var_showChooseDialog = nil}]; +waitUntil { isNil "Ares_var_showChooseDialog" }; if (_ResourceScript != "") then {call compile format["[""UNLOAD""] call %1;",_ResourceScript]}; // Check whether the user confirmed the selection or not, and return the appropriate values. if (uiNamespace getVariable "Ares_ChooseDialog_Result" == 1) then { - _returnValue = []; + private _returnValue = []; { _returnValue set [_forEachIndex, uiNamespace getVariable (format["Ares_ChooseDialog_ReturnValue_%1",_forEachIndex])]; }forEach _choicesArray; diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorGroupPlaced.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorGroupPlaced.sqf new file mode 100644 index 00000000..5683e3ea --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorGroupPlaced.sqf @@ -0,0 +1,16 @@ +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" + +disableSerialization; +private ["_curator","_placedGroup"]; +_curator = _this select 0; +_placedGroup = _this select 1; + +if (not isNil "Achilles_var_specifyPositionBeforeSpawn") then +{ + _curatorDisplay = findDisplay IDD_RSCDISPLAYCURATOR; + _ctrlModeUnits = _curatorDisplay displayCtrl IDC_RSCDISPLAYCURATOR_MODEGROUPS; + if (ctrlScale _ctrlModeUnits == 1) then + { + [_placedGroup] spawn Achilles_fnc_PreplaceMode; + }; +}; \ 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 74974aab..0ae27154 100644 --- a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectPlaced.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectPlaced.sqf @@ -1,3 +1,6 @@ +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" + +disableSerialization; private ["_curator","_placedObject"]; _curator = _this select 0; _placedObject = _this select 1; @@ -11,3 +14,24 @@ else { [format ["NON-LOCAL Placed Object %1 with %2 under mouse at position %3", _placedObject, str(Ares_CuratorObjectPlaced_UnitUnderCursor), str(Ares_CuratorObjectPlaces_LastPlacedObjectPosition)]] call Ares_fnc_LogMessage; }; + +if (not isNil "Achilles_var_deleteCrewOnSpawn") then +{ + _curatorDisplay = findDisplay IDD_RSCDISPLAYCURATOR; + _ctrlModeGroups = _curatorDisplay displayCtrl IDC_RSCDISPLAYCURATOR_MODEGROUPS; + _crew = crew _placedObject; + if (ctrlScale _ctrlModeGroups != 1 and count _crew > 0) then + { + {_placedObject deleteVehicleCrew _x} forEach _crew; + }; +}; + +if (not isNil "Achilles_var_specifyPositionBeforeSpawn") then +{ + _curatorDisplay = findDisplay IDD_RSCDISPLAYCURATOR; + _ctrlModeUnits = _curatorDisplay displayCtrl IDC_RSCDISPLAYCURATOR_MODEUNITS; + if (ctrlScale _ctrlModeUnits == 1) then + { + [_placedObject] spawn Achilles_fnc_PreplaceMode; + }; +}; diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeAmmo.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeAmmo.sqf index 85cf2b02..25b3aaf1 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeAmmo.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeAmmo.sqf @@ -1,8 +1,7 @@ #define IDC_RSCATTRIBUTEAMMO_VALUE 14375 //Broadcast set ammo function -if (isNil "Achilles_var_setammo_init_done") then -{ +if (isNil "Achilles_var_setammo_init_done") then { publicVariable "Achilles_fnc_setUnitAmmoDef"; Achilles_var_setammo_init_done = true; }; @@ -11,28 +10,44 @@ _mode = _this select 0; _params = _this select 1; _unit = _this select 2; -switch _mode do -{ - case "onLoad": - { +switch _mode do { + case "onLoad": { _display = _params select 0; _ctrlSlider = _display displayctrl IDC_RSCATTRIBUTEAMMO_VALUE; _ammo = if (_unit isKindOf "Man") then {_unit call Achilles_fnc_getUnitAmmoDef} else {_unit call Achilles_fnc_getVehicleAmmoDef}; _ctrlSlider slidersetposition (_ammo * 10); _ctrlSlider ctrlEnable alive _unit; }; - case "confirmed": - { + case "confirmed": { _display = _params select 0; _ctrlSlider = _display displayctrl IDC_RSCATTRIBUTEAMMO_VALUE; _ammo = sliderposition _ctrlSlider * 0.1; - _previousAmmo = if (_unit isKindOf "Man") then {_unit call Achilles_fnc_getUnitAmmoDef} else {_unit call Achilles_fnc_getVehicleAmmoDef}; - if (abs(_previousAmmo - _ammo) < 0.01) exitwith {}; - - if (local _unit) then { - if (_unit isKindOf "Man") then {[_unit, _ammo] call Achilles_fnc_setUnitAmmoDef} else {_unit setVehicleAmmoDef _ammo}; + if (_unit isKindOf "Man") then { + _previousAmmo = _unit call Achilles_fnc_getUnitAmmoDef; + if (abs(_previousAmmo - _ammo) < 0.01) exitWith {}; + _curatorSelected = ["man"] call Achilles_fnc_getCuratorSelected; + if (local _unit) then { + {[_x, _ammo] call Achilles_fnc_setUnitAmmoDef} forEach _curatorSelected; + } else { + [[_curatorSelected, _ammo], { + _entities = _this select 0; + _ammo = _this select 1; + {[_x, _ammo] call Achilles_fnc_setUnitAmmoDef} foreach _entities; + }] remoteExec ["spawn", _unit]; + }; } else { - if (_unit isKindOf "Man") then {[_unit,_ammo] remoteExec ["Achilles_fnc_setUnitAmmoDef",_unit]} else {[_unit,_ammo] remoteExec ["setVehicleAmmoDef",_unit]}; + _previousAmmo = _unit call Achilles_fnc_getVehicleAmmoDef; + if (abs(_previousAmmo - _ammo) < 0.01) exitWith {}; + _curatorSelected = ["vehicle"] call Achilles_fnc_getCuratorSelected; + if (local _unit) then { + {_x setVehicleAmmoDef _ammo} forEach _curatorSelected; + } else { + [[_curatorSelected, _ammo], { + _entities = _this select 0; + _ammo = _this select 1; + {_x setVehicleAmmoDef _ammo} foreach _entities; + }] remoteExec ["spawn", _unit]; + }; }; }; case "onUnload": {}; diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeBehaviour.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeBehaviour.sqf index b2a5463d..9d6096ba 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeBehaviour.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeBehaviour.sqf @@ -82,30 +82,40 @@ switch _mode do { _display = _params select 0; _selectedIndex = uinamespace getvariable ["RscAttributeBehaviour_selected",0]; _selected = _states select _selectedIndex; + if (typename _entity == typename []) then { - _group = _entity select 0; - _wp_id = _entity select 1; - if (currentwaypoint _group == _wp_id && _selected != "UNCHANGED") then + if (waypointbehaviour _entity == _selected) exitWith {}; + _curatorSelectedWPs = ["wp"] call Achilles_fnc_getCuratorSelected; { - if (local _group) then + _group = _x select 0; + _wp_id = _x select 1; + if (currentwaypoint _group == _wp_id && _selected != "UNCHANGED") then { - _group setbehaviour _selected; - } else - { - [_group,_selected] remoteExec ["setbehaviour", leader _group]; + if (local _group) then + { + _group setbehaviour _selected; + } else + { + [_group,_selected] remoteExec ["setbehaviour", leader _group]; + }; }; - }; - _entity setwaypointbehaviour _selected; + _x setwaypointbehaviour _selected; + } forEach _curatorSelectedWPs; } else { - if (local leader _entity) then + if (behaviour leader _entity == _selected) exitWith {}; + _curatorSelectedGrps = ["group"] call Achilles_fnc_getCuratorSelected; { - _entity setbehaviour _selected; - } else - { - [_entity,_selected] remoteExec ["setbehaviour", leader _entity]; - }; + _leader = leader _x; + if (local _leader) then + { + _x setbehaviour _selected; + } else + { + [_x, _selected] remoteExec ["setbehaviour", _leader]; + }; + } forEach _curatorSelectedGrps; _entity setvariable ["updated",true,true]; }; false diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeCombatMode.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeCombatMode.sqf index 7b805851..8ea6d0d0 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeCombatMode.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeCombatMode.sqf @@ -89,28 +89,37 @@ switch _mode do { _selected = _states select _selectedIndex; if (typename _entity == typename []) then { - _group = _entity select 0; - _wp_id = _entity select 1; - if (currentwaypoint _group == _wp_id && _selected != "UNCHANGED") then + if (waypointCombatMode _entity == _selected) exitWith {}; + _curatorSelectedWPs = ["wp"] call Achilles_fnc_getCuratorSelected; { - if (local _group) then + _group = _x select 0; + _wp_id = _x select 1; + if (currentwaypoint _group == _wp_id && _selected != "NO CHANGE") then { - _group setcombatmode _selected; - } else - { - [_group,_selected] remoteExec ["setcombatmode", leader _group]; + if (local _group) then + { + _group setcombatmode _selected; + } else + { + [_group, _selected] remoteExec ["setcombatmode", leader _group]; + }; }; - }; - _entity setwaypointcombatmode _selected; + _x setwaypointcombatmode _selected; + } forEach _curatorSelectedWPs; } else { - if (local _entity) then + if (combatMode leader _entity == _selected) exitWith {}; + _curatorSelectedGrps = ["group"] call Achilles_fnc_getCuratorSelected; { - _entity setcombatmode _selected; - } else - { - [_entity,_selected] remoteExec ["setcombatmode", leader _entity]; - }; + _leader = leader _x; + if (local _leader) then + { + _x setcombatmode _selected; + } else + { + [_x,_selected] remoteExec ["setcombatmode", _leader]; + }; + } forEach _curatorSelectedGrps; _entity setvariable ["updated",true,true]; }; false diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeDamage.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeDamage.sqf new file mode 100644 index 00000000..69876bd6 --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeDamage.sqf @@ -0,0 +1,29 @@ +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" + +_mode = _this select 0; +_params = _this select 1; +_unit = _this select 2; + +switch _mode do +{ + case "onLoad": + { + _display = _params select 0; + _ctrlSlider = _display displayctrl IDC_RSCATTRIBUTEDAMAGE_VALUE; + _ctrlSlider slidersetposition (1 - damage _unit) * 10; + _ctrlSlider ctrlenable alive _unit; + }; + case "confirmed": + { + _display = _params select 0; + _ctrlSlider = _display displayctrl IDC_RSCATTRIBUTEDAMAGE_VALUE; + _damage = 1 - sliderposition _ctrlSlider * 0.1; + if (abs (_damage - damage _unit) > 0.01) then + { + _mode = if (_unit isKindOf "Man") then {"man"} else {"vehicle"}; + _curatorSelected = [_mode] call Achilles_fnc_getCuratorSelected; + {_x setdamage _damage} forEach _curatorSelected; + }; + }; + case "onUnload": {}; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeFormation.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeFormation.sqf index 24a651fe..98863edf 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeFormation.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeFormation.sqf @@ -76,28 +76,37 @@ switch _mode do { if (typename _entity == typename []) then { - _group = _entity select 0; - _wp_id = _entity select 1; - if (currentwaypoint _group == _wp_id && _selected != "NO CHANGE") then + if (waypointformation _entity == _selected) exitWith {}; + _curatorSelectedWPs = ["wp"] call Achilles_fnc_getCuratorSelected; { - if (local _group) then + _group = _x select 0; + _wp_id = _x select 1; + if (currentwaypoint _group == _wp_id && _selected != "NO CHANGE") then { - _group setformation _selected; - } else - { - [_group,_selected] remoteExec ["setformation", leader _group]; + if (local _group) then + { + _group setformation _selected; + } else + { + [_group,_selected] remoteExec ["setformation", leader _group]; + }; }; - }; - _entity setwaypointformation _selected; + _x setwaypointformation _selected; + } forEach _curatorSelectedWPs; } else { - if (local _entity) then + if (formation leader _entity == _selected) exitWith {}; + _curatorSelectedGrps = ["group"] call Achilles_fnc_getCuratorSelected; { - _entity setformation _selected; - } else - { - [_entity,_selected] remoteExec ["setformation", leader _entity]; - }; + _leader = leader _x; + if (local _leader) then + { + _x setformation _selected; + } else + { + [_x,_selected] remoteExec ["setformation", _leader]; + }; + } forEach _curatorSelectedGrps; _entity setvariable ["updated",true,true]; }; false diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeFuel.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeFuel.sqf new file mode 100644 index 00000000..847ad1b0 --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeFuel.sqf @@ -0,0 +1,32 @@ +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" + +_mode = _this select 0; +_params = _this select 1; +_unit = _this select 2; + +switch _mode do { + case "onLoad": { + _display = _params select 0; + _ctrlSlider = _display displayctrl IDC_RSCATTRIBUTEFUEL_VALUE; + _ctrlSlider slidersetposition (fuel _unit * 10); + _ctrlSlider ctrlenable alive _unit; + }; + case "confirmed": { + _display = _params select 0; + _ctrlSlider = _display displayctrl IDC_RSCATTRIBUTEFUEL_VALUE; + _fuel = sliderposition _ctrlSlider * 0.1; + if (abs(fuel _unit - _fuel) < 0.01) exitwith {}; + _curatorSelected = ["vehicle"] call Achilles_fnc_getCuratorSelected; + if (local _unit) then { + {_x setfuel _fuel} forEach _curatorSelected; + } else { + [[_curatorSelected, _fuel], { + _entities = _this select 0; + _fuel = _this select 1; + {_x setFuel _fuel} foreach _entities; + }] remoteExec ["spawn", _unit]; + }; + }; + case "onUnload": { + }; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeHeadlight.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeHeadlight.sqf index 1861e7e6..bbeb5838 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeHeadlight.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeHeadlight.sqf @@ -72,25 +72,31 @@ switch _mode do _selectedIndex = uinamespace getvariable ["RscAttributeHeadlight_selected",0]; _light = _states select _selectedIndex; if ((_entity getVariable ["headlight","auto"]) isEqualTo _light) exitwith {}; - _entity setVariable ["headlight",_light,true]; - if (_light isEqualTo "auto") exitWith {}; - _codeBlock = + _curatorSelected = ["vehicle"] call Achilles_fnc_getCuratorSelected; + if (_light isEqualTo "auto") exitWith { - _entity = _this select 0; - _light = _this select 1; - while {(alive _entity) and ((_entity getVariable ["headlight","auto"]) isEqualTo _light)} do - { - sleep 0.01; - _entity setpilotlight _light; - }; + {_x setVariable ["headlight","auto",true]} forEach _curatorSelected; }; - if (local _entity) then - { - [_entity,_light] spawn _codeBlock; - } else { - [[_entity,_light],_codeBlock] remoteExec ["BIS_fnc_spawn", _entity]; - }; + _x setVariable ["headlight",_light,true]; + _codeBlock = + { + _entity = _this select 0; + _light = _this select 1; + while {(alive _entity) and ((_entity getVariable ["headlight","auto"]) isEqualTo _light)} do + { + sleep 0.01; + _entity setpilotlight _light; + }; + }; + if (local _x) then + { + [_x,_light] spawn _codeBlock; + } else + { + [[_x,_light],_codeBlock] remoteExec ["spawn", _x]; + }; + } forEach _curatorSelected; _entity setvariable ["updated",true,true]; false }; diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeInventory.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeInventory.sqf new file mode 100644 index 00000000..fdb25ef2 --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeInventory.sqf @@ -0,0 +1,642 @@ +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" +#include "\a3\editor_f\Data\Scripts\dikCodes.h" + +#define VALUE_NUMBER "#(argb,1,1,1)color(0,0,0,0)" + +#define IDC_RSCATTRIBUTEINVENTORY_FILTER13 24081 +#define IDC_RSCATTRIBUTEINVENTORY_BUTTON_VA 24470 + +_mode = _this select 0; +_params = _this select 1; +_entity = _this select 2; + +_filterIDCs = [ + IDC_RSCATTRIBUTEINVENTORY_FILTER0, + IDC_RSCATTRIBUTEINVENTORY_FILTER1, + IDC_RSCATTRIBUTEINVENTORY_FILTER2, + IDC_RSCATTRIBUTEINVENTORY_FILTER3, + IDC_RSCATTRIBUTEINVENTORY_FILTER4, + IDC_RSCATTRIBUTEINVENTORY_FILTER5, + IDC_RSCATTRIBUTEINVENTORY_FILTER6, + IDC_RSCATTRIBUTEINVENTORY_FILTER7, + IDC_RSCATTRIBUTEINVENTORY_FILTER8, + IDC_RSCATTRIBUTEINVENTORY_FILTER9, + IDC_RSCATTRIBUTEINVENTORY_FILTER10, + IDC_RSCATTRIBUTEINVENTORY_FILTER11, + IDC_RSCATTRIBUTEINVENTORY_FILTER12 +]; + +switch _mode do { + case "onLoad": { + if (isNil "RscAttributeInventory_list") then + { + //--- Get weapons and magazines from curator addons + _curator = getassignedcuratorlogic player; + _weaponAddons = missionnamespace getvariable ["RscAttrbuteInventory_weaponAddons",[]]; + _types = [ + ["AssaultRifle","Shotgun","Rifle","SubmachineGun"], + ["MachineGun"], + ["SniperRifle"], + ["Launcher","MissileLauncher","RocketLauncher"], + ["Handgun"], + ["UnknownWeapon"], + ["AccessoryMuzzle","AccessoryPointer","AccessorySights","AccessoryBipod"], + ["Uniform"], + ["Vest"], + ["Backpack"], + ["Headgear","Glasses"], + ["Binocular","Compass","FirstAidKit","GPS","LaserDesignator","Map","Medikit","MineDetector","NVGoggles","Radio","Toolkit","Watch","UAVTerminal"] + ]; + _typeMagazine = _types find "Magazine"; + _list = [[],[],[],[],[],[],[],[],[],[],[],[]]; + _magazines = []; //--- Store magazines in an array and mark duplicates, so nthey don't appear in the list of all items + { + _addon = tolower _x; + _addonList = [[],[],[],[],[],[],[],[],[],[],[],[]]; + _addonID = _weaponAddons find _addon; + if (_addonID < 0) then { + { + _weapon = tolower _x; + _weaponType = (_weapon call bis_fnc_itemType); + _weaponTypeCategory = _weaponType select 0; + _weaponTypeSpecific = _weaponType select 1; + _weaponTypeID = -1; + { + if (_weaponTypeSpecific in _x) exitwith {_weaponTypeID = _foreachindex;}; + } foreach _types; + //_weaponTypeID = _types find (_weaponType select 0); + if (_weaponTypeCategory != "VehicleWeapon" and _weaponTypeID >= 0 and (_weapon == [_weapon] call bis_fnc_baseWeapon)) then { + _weaponCfg = configfile >> "cfgweapons" >> _weapon; + _weaponPublic = getnumber (_weaponCfg >> "scope") == 2; + _addonListType = _addonList select _weaponTypeID; + if (_weaponPublic) then { + _displayName = gettext (_weaponCfg >> "displayName"); + _picture = gettext (_weaponCfg >> "picture"); + { + _item = gettext (_x >> "item"); + _itemName = gettext (configfile >> "cfgweapons" >> _item >> "displayName"); + _displayName = _displayName + " + " + _itemName; + } foreach ((_weaponCfg >> "linkeditems") call bis_fnc_returnchildren); + _displayNameShort = _displayName; + _displayNameShortArray = toarray _displayNameShort; + if (count _displayNameShortArray > 41) then { //--- Cut when the name is too long (41 chars is approximate) + _displayNameShortArray resize 41; + _displayNameShort = tostring _displayNameShortArray + "..."; + }; + _type = if (getnumber (configfile >> "cfgweapons" >> _weapon >> "type") in [4096,131072]) then {1} else {0}; + _addonListType pushback [_weapon,_displayName,_displayNameShort,_picture,_type,false]; + }; + //--- Add magazines compatible with the weapon + if (_weaponPublic || _weapon in ["throw","put"]) then { + //_addonListType = _addonList select _typeMagazine; + { + _muzzle = if (_x == "this") then {_weaponCfg} else {_weaponCfg >> _x}; + { + _mag = tolower _x; + if ({(_x select 0) == _mag} count _addonListType == 0) then { + _magCfg = configfile >> "cfgmagazines" >> _mag; + if (getnumber (_magCfg >> "scope") == 2) then { + _displayName = gettext (_magCfg >> "displayName"); + _displayNameArray = toarray _displayName; + if (count _displayNameArray > 41) then { //--- Cut when the name is too long (41 chars is approximate) + _displayNameArray resize 41; + _displayName = tostring _displayNameArray + "..."; + }; + _picture = gettext (_magCfg >> "picture"); + _addonListType pushback [_mag,_displayName,_displayName,_picture,2,_mag in _magazines]; + _magazines pushback _mag; + }; + }; + } foreach getarray (_muzzle >> "magazines"); + } foreach getarray (_weaponCfg >> "muzzles"); + }; + }; + } foreach getarray (configfile >> "cfgpatches" >> _x >> "weapons"); + { + _weapon = tolower _x; + _weaponType = _weapon call bis_fnc_itemType; + _weaponTypeSpecific = _weaponType select 1; + _weaponTypeID = -1; + { + if (_weaponTypeSpecific in _x) exitwith {_weaponTypeID = _foreachindex;}; + } foreach _types; + //_weaponTypeID = _types find (_weaponType select 0); + if (_weaponTypeID >= 0) then { + _weaponCfg = configfile >> "cfgvehicles" >> _weapon; + if (getnumber (_weaponCfg >> "scope") == 2) then { + _displayName = gettext (_weaponCfg >> "displayName"); + _picture = gettext (_weaponCfg >> "picture"); + _addonListType = _addonList select _weaponTypeID; + _addonListType pushback [_weapon,_displayName,_displayName,_picture,3,false]; + }; + }; + } foreach getarray (configfile >> "cfgpatches" >> _x >> "units"); + + _weaponTypeID = -1; + { + if ("Glasses" in _x) exitwith {_weaponTypeID = _foreachindex;}; + } foreach _types; + { + _glassesCfg = _x; + _glasses = configName _glassesCfg; + _displayName = gettext (_glassesCfg >> "displayName"); + _picture = gettext (_glassesCfg >> "picture"); + _addonListType = _addonList select _weaponTypeID; + _addonListType pushback [_glasses,_displayName,_displayName,_picture,1,false]; + } forEach ([configfile >> "CfgGlasses", 0, true] call BIS_fnc_returnChildren); + _weaponAddons set [count _weaponAddons,_addon]; + _weaponAddons set [count _weaponAddons,_addonList]; + } else { + _addonList = _weaponAddons select (_addonID + 1); + }; + { + _current = _list select _foreachindex; + _list set [_foreachindex,_current + (_x - _current)]; + } foreach _addonList; + } foreach (curatoraddons _curator); + missionnamespace setvariable ["RscAttrbuteInventory_weaponAddons",_weaponAddons]; + _list = _list apply {[_x,[],{_x select 1}] call BIS_fnc_sortBy}; + RscAttributeInventory_list = _list; + }; + + //--- Get current cargo + _cargo = [ + getitemcargo _entity, + getweaponcargo _entity, + getmagazinecargo _entity, + getbackpackcargo _entity + ]; + _virtualCargo = [ + _entity call bis_fnc_getVirtualItemCargo, + _entity call bis_fnc_getVirtualWeaponCargo, + _entity call bis_fnc_getVirtualMagazineCargo, + _entity call bis_fnc_getVirtualBackpackCargo + ]; + RscAttributeInventory_cargoVirtual = []; + { + _xCargo = _cargo select _foreachindex; + { + _index = (_xCargo select 0) find _x; + if (_index < 0) then { + (_xCargo select 0) pushBack (tolower _x); + (_xCargo select 1) pushBack 0; + }; + if (isClass (configfile >> "CfgGlasses" >> _x)) then + { + RscAttributeInventory_cargoVirtual pushBack _x; + } else + { + RscAttributeInventory_cargoVirtual pushBack (tolower _x); + }; + } foreach _x; + } foreach _virtualCargo; + + RscAttributeInventory_cargo = [[],[]]; + { + RscAttributeInventory_cargo set [0,(RscAttributeInventory_cargo select 0) + (_x select 0)]; + RscAttributeInventory_cargo set [1,(RscAttributeInventory_cargo select 1) + (_x select 1)]; + } foreach _cargo; + + _classes = RscAttributeInventory_cargo select 0; + {_classes set [_foreachindex,tolower _x];} foreach _classes; + + //--- Get limits + _cfgEntity = configfile >> "cfgvehicles" >> typeof _entity; + RscAttributeInventory_Capacity = [_cfgEntity,"maximumLoad",1e10] call BIS_fnc_returnConfigEntry; + + //--- Init UI + _display = _params select 0; + + { + _ctrl = _display displayctrl _x; + _ctrl ctrladdeventhandler [ + "buttonclick", + format ["with uinamespace do {['filterChanged',[ctrlparent (_this select 0),%1],objnull] call RscAttributeInventory;};",_foreachindex] + ]; + } foreach _filterIDCs; + RscAttributeInventory_selected = 0; + ["filterChanged",[_display],objnull] call RscAttributeInventory; + + _ctrlList = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_LIST; + _ctrlList ctrladdeventhandler ["lbselchanged",{with uinamespace do {["listSelect",[ctrlparent (_this select 0)],objnull] call RscAttributeInventory;};}]; + _ctrlList ctrladdeventhandler ["lbdblclick",{with uinamespace do {["toggleWeaponSpecific",[ctrlparent (_this select 0), _this select 0],objnull] call RscAttributeInventory;};}]; + _ctrlList ctrladdeventhandler ["keyDown",{with uinamespace do {["keyDown",_this,objnull] call RscAttributeInventory;}; true}]; + + _ctrlButtonVA = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_BUTTON_VA; + _ctrlButtonVA ctrladdeventhandler ["buttonclick",{with uinamespace do {["virutalArsenal",[ctrlparent (_this select 0)],objnull] call RscAttributeInventory;};}]; + + _ctrlArrowLeft = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_ARROWLEFT; + _ctrlArrowLeft ctrladdeventhandler ["buttonclick",{with uinamespace do {["listModify",[ctrlparent (_this select 0),-1],objnull] call RscAttributeInventory;};}]; + _ctrlArrowRight = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_ARROWRIGHT; + _ctrlArrowRight ctrladdeventhandler ["buttonclick",{with uinamespace do {["listModify",[ctrlparent (_this select 0),+1],objnull] call RscAttributeInventory;};}]; + + _ctrlButtonCustom = _Display displayctrl IDC_RSCDISPLAYATTRIBUTES_BUTTONCUSTOM; + _ctrlButtonCustom ctrlsettext localize "str_disp_arcmap_clear"; + _ctrlButtonCustom ctrladdeventhandler ["buttonclick",{with uinamespace do {["clear",[ctrlparent (_this select 0)],objnull] call RscAttributeInventory;};}]; + }; + case "filterChanged": { + _display = _params select 0; + _ctrlLable = _display displayCtrl IDC_RSCATTRIBUTEINVENTORY_FILTER13; + _ctrlLable ctrlSetText ""; + //_ctrlFilter = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_FILTER; + //_cursel = lbcursel _ctrlFilter; + _cursel = if (count _params > 1) then {_params select 1} else {RscAttributeInventory_selected}; + RscAttributeInventory_selected = _cursel; + _ctrlList = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_LIST; + _ctrlList setVariable ["WeaponSpecific",nil]; + _ctrlLoad = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_LOAD; + _ctrlFilterBackground = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_FILTERBACKGROUND; + _list = uinamespace getvariable ["RscAttributeInventory_list",[[],[],[],[],[],[],[],[],[],[],[],[]]]; + _items = []; + + if (_cursel > 0) then { + _items = _list select (_cursel - 1); + } else { + _ctrlLoad progresssetposition 0; + {_items = _items + _x;} foreach _list; + }; + + lnbclear _ctrlList; + { + _types = _x; + { + _class = _x select 0; // all classes are already in lower case except faceware which must not be lowered for virtual arsenal + _classLowered = tolower _class; + _displayName = _x select 1; + _displayNameShort = _x select 2; + _picture = _x select 3; + _type = _x select 4; + _isDuplicate = _x select 5; + + if (_type in _types && (!_isDuplicate || _cursel > 0)) then { + + _classes = RscAttributeInventory_cargo select 0; + _values = RscAttributeInventory_cargo select 1; + _index = _classes find _classLowered; + _value = if (_index < 0) then { + _index = count _classes; + _classes set [_index,_classLowered]; + _values set [_index,0]; + 0 + } else { + _values select _index + }; + _arsenal = if (_class in RscAttributeInventory_cargoVirtual) then {true} else {false}; + + if ((_cursel == 0 and (_value != 0 or _arsenal)) or (_cursel > 0)) then { + _lnbAdd = _ctrlList lnbaddrow ["",_displayNameShort,str _value,""]; + _ctrlList lnbsetdata [[_lnbAdd,0],_class]; + _ctrlList lnbsetvalue [[_lnbAdd,0],_value]; + _ctrlList lnbsetvalue [[_lnbAdd,1],_type]; + _ctrlList lnbsetpicture [[_lnbAdd,0],_picture]; + _alpha = if (_value != 0 or _arsenal) then {1} else {0.5}; + _ctrlList lnbsetcolor [[_lnbAdd,1],[1,1,1,_alpha]]; + _ctrlList lnbsetcolor [[_lnbAdd,2],[1,1,1,_alpha]]; + _ctrlList lnbsetcolor [[_lnbAdd,3],[1,1,1,_alpha]]; + if (_arsenal) then + { + _ctrlList lnbsettext [[_lnbAdd,3],"VA"]; + _ctrlList lnbsetvalue [[_lnbAdd,3],1]; + }; + _ctrlList lbsettooltip [_lnbAdd,_displayName]; + + if (_cursel == 0 && _value != 0) then { + _coef = switch _type do { + case 0: {[configfile >> "cfgweapons" >> _class >> "WeaponSlotsInfo","mass",0] call BIS_fnc_returnConfigEntry}; + case 1: {[configfile >> "cfgweapons" >> _class >> "ItemInfo","mass",0] call BIS_fnc_returnConfigEntry}; + case 2: {[configfile >> "cfgmagazines" >> _class,"mass",0] call BIS_fnc_returnConfigEntry}; + case 3: {[configfile >> "cfgvehicles" >> _class,"mass",0] call BIS_fnc_returnConfigEntry}; + default {0}; + }; + _ctrlLoad progresssetposition (progressposition _ctrlLoad + (_value max 0) * _coef / RscAttributeInventory_Capacity); + }; + }; + }; + } foreach _items; + } foreach [[0,1,3],[2]]; + _prevSelRow = _params param [2,0,[0]]; + _ctrlList lnbsetcurselrow _prevSelRow; + ["listSelect",[_display],objnull] call RscAttributeInventory; + + //--- Update UI + _delay = if (isnil "_curator") then {0.1} else {0}; + { + _ctrl = _display displayctrl _x; + _color = [1,1,1,0.5]; + _scale = 0.75; + if (_foreachindex == _cursel) then { + _color = [1,1,1,1]; + _scale = 1; + }; + _ctrl ctrlsettextcolor _color; + _pos = [_ctrl,_scale,_delay] call bis_fnc_ctrlsetscale; + + if (_foreachindex == _cursel) then { + _ctrlFilterBackground ctrlsetposition _pos; + _ctrlFilterBackground ctrlcommit 0; + }; + } foreach _filterIDCs; + }; + case "listModify": { + _display = _params select 0; + _add = _params select 1; + _ctrlList = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_LIST; + _ctrlLoad = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_LOAD; + _cursel = lnbcurselrow _ctrlList; + _class = _ctrlList lnbdata [_cursel,0]; + _classLowered = tolower _class; + _value = _ctrlList lnbvalue [_cursel,0]; + _type = _ctrlList lnbvalue [_cursel,1]; + + _classes = RscAttributeInventory_cargo select 0; + _values = RscAttributeInventory_cargo select 1; + _index = _classes find _classLowered; + if (_index >= 0) then { + _coef = switch _type do { + case 0: {[configfile >> "cfgweapons" >> _class >> "WeaponSlotsInfo","mass",0] call BIS_fnc_returnConfigEntry}; + case 1: {[configfile >> "cfgweapons" >> _class >> "ItemInfo","mass",0] call BIS_fnc_returnConfigEntry}; + case 2: {[configfile >> "cfgmagazines" >> _class,"mass",0] call BIS_fnc_returnConfigEntry}; + case 3: {[configfile >> "cfgvehicles" >> _class,"mass",0] call BIS_fnc_returnConfigEntry}; + default {0}; + }; + + _value = _value + _add; + //if (_value < 0 || (_value == 0 && _add > 0)) then {_add = -_add;}; + _load = progressposition _ctrlLoad + _add * _coef / RscAttributeInventory_Capacity; + if ((_load <= 1 and _value > 0) || _value == 0) then { + if (_value > 0 || (_value == 0 && _add < 0)) then {_ctrlLoad progresssetposition _load}; + _values set [_index,_value]; + _ctrlList lnbsetvalue [[_cursel,0],_value]; + _ctrlList lnbsettext [[_cursel,2],if (_value < 0) then {""} else {str _value}]; + _arsenal = if (_class in RscAttributeInventory_cargoVirtual) then {true} else {false}; + _alpha = if (_value != 0 or _arsenal) then {1} else {0.5}; + _ctrlList lnbsetcolor [[_cursel,1],[1,1,1,_alpha]]; + _ctrlList lnbsetcolor [[_cursel,2],[1,1,1,_alpha]]; + _ctrlList lnbsetcolor [[_cursel,3],[1,1,1,_alpha]]; + ["listSelect",[_display],objnull] call RscAttributeInventory; + }; + }; + }; + case "listSelect": { + private ["_display","_ctrlList","_cursel","_value","_ctrlArrowLeft"]; + _display = _params select 0; + _ctrlList = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_LIST; + _cursel = lnbcurselrow _ctrlList; + _value = _ctrlList lnbvalue [_cursel,0]; + + _ctrlArrowLeft = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_ARROWLEFT; + _ctrlArrowLeft ctrlenable (_value > 0); + }; + + case "virutalArsenal": { + _display = _params select 0; + _ctrlList = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_LIST; + + _cursel = lnbcurselrow _ctrlList; + _arsenal = _ctrlList lnbvalue [_cursel,3]; + _value = _ctrlList lnbvalue [_cursel,0]; + _arsenal = 1 - _arsenal; + _ctrlList lnbsetvalue [[_cursel,3], _arsenal]; + _alpha = if (_arsenal == 1 or _value > 0) then {1} else {0.5}; + _ctrlList lnbsetcolor [[_cursel,1],[1,1,1,_alpha]]; + _ctrlList lnbsetcolor [[_cursel,2],[1,1,1,_alpha]]; + _ctrlList lnbsetcolor [[_cursel,3],[1,1,1,_alpha]]; + _class = _ctrlList lnbdata [_cursel,0]; + _text = if (_arsenal == 1) then + { + RscAttributeInventory_cargoVirtual pushBack _class; + "VA" + } else + { + RscAttributeInventory_cargoVirtual = RscAttributeInventory_cargoVirtual - [_class]; + "" + }; + _ctrlList lnbsettext [[_cursel,3], _text]; + }; + + case "keyDown": { + _ctrlList = _params select 0; + _key = _params select 1; + switch true do + { + case (_key == DIK_MULTIPLY): + { + ["virutalArsenal",[ctrlparent _ctrlList],objnull] call RscAttributeInventory; + }; + case (_key == DIK_DIVIDE): + { + ["toggleWeaponSpecific",[ctrlparent _ctrlList, _ctrlList],objnull] call RscAttributeInventory; + }; + case (_key == DIK_ADD): + { + ["listModify",[ctrlparent _ctrlList,+1],objnull] call RscAttributeInventory; + }; + case (_key == DIK_SUBTRACT): + { + ["listModify",[ctrlparent _ctrlList,-1],objnull] call RscAttributeInventory; + }; + default + { + _letter = [_key] call Achilles_fnc_dikToLetter; + if (_letter != "") then + { + for "_i" from 0 to ((lnbSize _ctrlList select 0) - 1) do + { + _displayName = _ctrlList lnbText [_i,1]; + if (toupper (_displayName select [0,1]) == _letter) exitWith + { + _ctrlList lnbSetCurSelRow _i; + }; + }; + }; + }; + }; + }; + case "toggleWeaponSpecific": { + _display = _params select 0; + _ctrlList = _params select 1; + + _classes = RscAttributeInventory_cargo select 0; + _values = RscAttributeInventory_cargo select 1; + + _cursel = _ctrlList getVariable ["WeaponSpecific",nil]; + if (not isNil "_cursel") exitWith + { + ["filterChanged",[_display,RscAttributeInventory_selected,_cursel],objnull] call RscAttributeInventory; + }; + + _cursel = lnbCurSelRow _ctrlList; + _weapon = _ctrlList lnbdata [_cursel,0]; + + if (not isclass (configfile >> "cfgweapons" >> _weapon)) exitWith {}; + if (getnumber (configfile >> "cfgweapons" >> _weapon >> "type") in [4096,131072]) exitWith {}; + + _ctrlList setVariable ["WeaponSpecific",_cursel]; + _ctrlLable = _display displayCtrl IDC_RSCATTRIBUTEINVENTORY_FILTER13; + _ctrlLable ctrlSetText (localize "STR_WEAPON_SPECIFIC"); + + _reducedClasses = [_weapon]; + _index = _classes find _weapon; + _reducedValues = [_values select _index]; + _weaponCfg = configfile >> "cfgweapons" >> _weapon; + _magazines = []; + + { + _muzzle = if (_x == "this") then {_weaponCfg} else {_weaponCfg >> _x}; + { + _mag = tolower _x; + if (getnumber (configfile >> "cfgmagazines" >> _mag >> "scope") == 2) then { + _index = _classes find _mag; + if (_index != -1) then + { + _reducedClasses pushBack _mag; + _reducedValues pushBack (_values select _index); + }; + }; + } foreach getarray (_muzzle >> "magazines"); + } foreach getarray (_weaponCfg >> "muzzles"); + + _list = uinamespace getvariable ["RscAttributeInventory_list",[[],[],[],[],[],[],[],[],[],[],[],[]]]; + _items = []; + {_items = _items + _x;} foreach _list; + + lnbclear _ctrlList; + { + _types = _x; + { + _class = _x select 0; + _displayName = _x select 1; + _displayNameShort = _x select 2; + _picture = _x select 3; + _type = _x select 4; + _isDuplicate = _x select 5; + + if (_type in _types && (!_isDuplicate or (RscAttributeInventory_selected > 0))) then { + + _index = _reducedClasses find _class; + if (_index == -1) exitWith {}; + + _value = _reducedValues select _index; + _arsenal = if (_class in RscAttributeInventory_cargoVirtual) then {true} else {false}; + + _lnbAdd = _ctrlList lnbaddrow ["",_displayNameShort,str _value,""]; + _ctrlList lnbsetdata [[_lnbAdd,0],_class]; + _ctrlList lnbsetvalue [[_lnbAdd,0],_value]; + _ctrlList lnbsetvalue [[_lnbAdd,1],_type]; + _ctrlList lnbsetpicture [[_lnbAdd,0],_picture]; + _alpha = if (_value != 0 or _arsenal) then {1} else {0.5}; + _ctrlList lnbsetcolor [[_lnbAdd,1],[1,1,1,_alpha]]; + _ctrlList lnbsetcolor [[_lnbAdd,2],[1,1,1,_alpha]]; + _ctrlList lnbsetcolor [[_lnbAdd,3],[1,1,1,_alpha]]; + if (_arsenal) then + { + _ctrlList lnbsettext [[_lnbAdd,3],"VA"]; + _ctrlList lnbsetvalue [[_lnbAdd,3],1]; + }; + _ctrlList lbsettooltip [_lnbAdd,_displayName]; + }; + } foreach _items; + } foreach [[0,1,3],[2]]; + _ctrlList lnbsetcurselrow 0; + ["listSelect",[_display],objnull] call RscAttributeInventory; + }; + + + case "clear": { + _values = RscAttributeInventory_cargo select 1; + { + _values set [_foreachindex,0]; + } foreach _values; + RscAttributeInventory_cargoVirtual = []; + ["filterChanged",_params,objnull] call RscAttributeInventory; + + _display = _params select 0; + _ctrlLoad = _display displayctrl IDC_RSCATTRIBUTEINVENTORY_LOAD; + _ctrlLoad progresssetposition 0; + }; + + case "confirmed": { + _display = _params select 0; + + _classes = RscAttributeInventory_cargo select 0; + _values = RscAttributeInventory_cargo select 1; + + _items = []; + _weapons = []; + _magazines = []; + _backpacks = []; + + { + if (_x != 0) then { + _class = _classes select _foreachindex; + switch true do { + case (getnumber (configfile >> "cfgweapons" >> _class >> "type") in [4096,131072] or isClass (configfile >> "CfgGlasses" >> _class)): { + _items pushBack [_class,abs _x]; + }; + case (isclass (configfile >> "cfgweapons" >> _class)): { + _weapons pushBack [_class,abs _x]; + }; + case (isclass (configfile >> "cfgmagazines" >> _class)): { + _magazines pushBack [_class,abs _x]; + }; + case (isclass (configfile >> "cfgvehicles" >> _class)): { + _backpacks pushBack [_class,abs _x]; + }; + }; + }; + } foreach _values; + + _virtual_items = []; + _virtual_weapons = []; + _virtual_magazines = []; + _virtual_backpacks = []; + + { + switch true do { + case (getnumber (configfile >> "cfgweapons" >> _x >> "type") in [4096,131072] or isClass (configfile >> "CfgGlasses" >> _x)): { + _virtual_items pushBack _x; + }; + case (isclass (configfile >> "cfgweapons" >> _x)): { + _virtual_weapons pushBack _x; + }; + case (isclass (configfile >> "cfgmagazines" >> _x)): { + _virtual_magazines pushBack _x; + }; + case (isclass (configfile >> "cfgvehicles" >> _x)): { + _virtual_backpacks pushBack _x; + }; + }; + } forEach RscAttributeInventory_cargoVirtual; + + _curatorSelected = ["cargo"] call Achilles_fnc_getCuratorSelected; + { + _box = _x; + + clearitemcargoglobal _box; + clearweaponcargoglobal _box; + clearmagazinecargoglobal _box; + clearbackpackcargoglobal _box; + + _box call bis_fnc_removeVirtualItemCargo; + _box call bis_fnc_removeVirtualWeaponCargo; + _box call bis_fnc_removeVirtualMagazineCargo; + _box call bis_fnc_removeVirtualBackpackCargo; + + {_box additemcargoglobal _x} forEach _items; + {_box addweaponcargoglobal _x} forEach _weapons; + {_box addmagazinecargoglobal _x} forEach _magazines; + {_box addbackpackcargoglobal _x} forEach _backpacks; + [_box, _virtual_items,true] call bis_fnc_addVirtualItemCargo; + [_box, _virtual_weapons,true] call bis_fnc_addVirtualWeaponCargo; + [_box, _virtual_magazines,true] call bis_fnc_addVirtualMagazineCargo; + [_box, _virtual_backpacks,true] call bis_fnc_addVirtualBackpackCargo; + } forEach _curatorSelected; + }; + case "onUnload": { + //RscAttributeInventory_list = nil; + RscAttributeInventory_cargo = nil; + RscAttributeInventory_cargoVirtual = nil; + RscAttributeInventory_selected = nil; + RscAttributeInventory_Capacity = nil; + }; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeLock.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeLock.sqf new file mode 100644 index 00000000..4e01b929 --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeLock.sqf @@ -0,0 +1,82 @@ +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" + +_mode = _this select 0; +_params = _this select 1; +_entity = _this select 2; + +_idcs = [ + IDC_RSCATTRIBUTELOCK_LOCKED, + IDC_RSCATTRIBUTELOCK_UNLOCKED, + IDC_RSCATTRIBUTELOCK_UNLOCKED +]; +_states = [2,1,0]; + +switch _mode do { + case "onLoad": { + + _display = _params select 0; + + //--- Not available for destroyed object + if !(alive _entity) exitwith { + { + _ctrl = _display displayctrl _x; + _ctrl ctrlenable false; + _ctrl ctrlshow false; + } foreach _idcs; + _ctrlBackground = _display displayctrl IDC_RSCATTRIBUTELOCK_BACKGROUND; + _ctrlBackground ctrlsettext localize "str_lib_info_na"; + }; + + //--- Add handlers to all buttons + { + _ctrl = _display displayctrl _x; + _ctrl ctrladdeventhandler ["buttonclick","with uinamespace do {['onButtonClick',[_this select 0,0.1]] call RscAttributeLock};"]; + } foreach _idcs; + + //--- Select the current state + _selected = locked _entity; + _selectedIndex = _states find _selected; + _selectedIDC = _idcs select _selectedIndex; + ['onButtonClick',[_display displayctrl _selectedIDC,0]] call RscAttributeLock; + }; + case "onButtonClick": { + _ctrlSelected = _params select 0; + _delay = _params select 1; + _display = ctrlparent _ctrlSelected; + { + _ctrl = _display displayctrl _x; + _ctrl ctrladdeventhandler ["buttonclick","with uinamespace do {['onButtonClick',[_this select 0,0.1]] call RscAttributeLock};"]; + _scale = 1; + _color = [1,1,1,0.4]; + if (_ctrl == _ctrlSelected) then { + _scale = 1.25; + _color = [1,1,1,1]; + }; + _ctrl ctrlsettextcolor _color; + [_ctrl,_scale,_delay] call bis_fnc_ctrlsetscale; + } foreach _idcs; + + RscAttributeLock_selected = _idcs find (ctrlidc _ctrlSelected); + }; + case "confirmed": { + _display = _params select 0; + _selectedIndex = uinamespace getvariable ["RscAttributeLock_selected",0]; + _lock = _states select _selectedIndex; + if (locked _entity == _lock) exitwith {}; + _curatorSelected = ["vehicle"] call Achilles_fnc_getCuratorSelected; + if (local _entity) then { + {_x lock _lock} forEach _curatorSelected; + } else { + [[_curatorSelected, _lock], { + _entities = _this select 0; + _lock = _this select 1; + {_x lock _lock} foreach _entities; + }] remoteExec ["spawn", _entity]; + }; + _entity setvariable ["updated",true,true]; + false + }; + case "onUnload": { + RscAttributeLock_selected = nil; + }; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeName.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeName.sqf index 8decc005..3abd900b 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeName.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeName.sqf @@ -19,7 +19,12 @@ switch _mode do _text = ctrltext _ctrlValue; if (_text != name _entity) then { - [_entity, _text] remoteExec ["setName",0,_entity]; + _curatorSelected = ["man"] call Achilles_fnc_getCuratorSelected; + [[_curatorSelected, _text], { + _entities = _this select 0; + _text = _this select 1; + {if (alive _x) then {_x setName _text}} foreach _entities; + }] remoteExec ["spawn", -2, _entity]; }; }; case "onUnload": {}; diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeRank.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeRank.sqf index 5f6fca71..2c3e8ab3 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeRank.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeRank.sqf @@ -50,8 +50,15 @@ switch _mode do { _display = _params select 0; _rankID = uinamespace getvariable ["RscAttributeRank_rank",0]; - _rank = _rankID call bis_fnc_rankparams; - _unit setUnitRank _rank; + _mode = if (_unit isKindOf "Man") then {"man"} else {"vehicle"}; + if (_rankID != rankID _unit) then + { + _rank = _rankID call bis_fnc_rankparams; + _curatorSelected = [_mode] call Achilles_fnc_getCuratorSelected; + { + _x setUnitRank _rank; + } forEach _curatorSelected; + }; false }; case "onUnload": { diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeRespawnPosition.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeRespawnPosition.sqf new file mode 100644 index 00000000..c9a0bc43 --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeRespawnPosition.sqf @@ -0,0 +1,120 @@ +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" + +private ["_mode","_params","_entity"]; +_mode = _this select 0; +_params = _this select 1; +_entity = _this select 2; + +_idcs = [ + IDC_RSCATTRIBUTERESPAWNPOSITION_EAST, + IDC_RSCATTRIBUTERESPAWNPOSITION_WEST, + IDC_RSCATTRIBUTERESPAWNPOSITION_GUER, + IDC_RSCATTRIBUTERESPAWNPOSITION_CIV, + IDC_RSCATTRIBUTERESPAWNPOSITION_DISABLED +]; +_colorsActive = [ + east call bis_fnc_sidecolor, + west call bis_fnc_sidecolor, + resistance call bis_fnc_sidecolor, + civilian call bis_fnc_sidecolor, + [1,1,1,1] +]; +_colorsText = +_colorsActive; +{_x set [3,0.5];} foreach _colorsText; + +switch _mode do { + case "onLoad": { + + _display = _params select 0; + _IDs = _entity getvariable ["RscAttributeRespawnPosition_ids",[[],[],[],[],[]]]; + if (typename _entity == typename grpnull) then {_entity = leader _entity;}; + + //--- Not available for destroyed object + if (!alive _entity || !canmove _entity) exitwith { + { + _ctrl = _display displayctrl _x; + _ctrl ctrlenable false; + _ctrl ctrlshow false; + } foreach _idcs; + _ctrlBackground = _display displayctrl IDC_RSCATTRIBUTERESPAWNPOSITION_BACKGROUND; + _ctrlBackground ctrlsettext localize "str_lib_info_na"; + }; + + //--- Add handlers to all buttons + _playerside = player call bis_fnc_objectside; + _selected = 4; + { + _ctrl = _display displayctrl _x; + _side = _foreachindex call bis_fnc_sideType; + if (([_side,_playerside] call bis_fnc_arefriendly && playableslotsnumber _side > 0) || _foreachindex == 4) then { + _ctrl ctrladdeventhandler ["buttonclick","with uinamespace do {['onButtonClick',[_this select 0,0.1]] call RscAttributeRespawnPosition};"]; + _ctrl ctrlsetactivecolor (_colorsActive select _foreachindex); + _ctrl ctrlsettextcolor (_colorsText select _foreachindex); + _ctrl ctrlcommit 0; + if (count (_IDs select _foreachindex) > 0) then {_selected = _foreachindex;}; + } else { + _ctrl ctrlshow false; + }; + } foreach _idcs; + + RscAttributeRespawnPosition_selected = _selected; + _selectedIdc = _idcs select _selected; + ['onButtonClick',[_display displayctrl _selectedIdc,0]] call RscAttributeRespawnPosition; + _selected = 4; + }; + case "onButtonClick": { + private ["_display"]; + _ctrlSelected = _params select 0; + _delay = _params select 1; + _display = ctrlparent _ctrlSelected; + { + _ctrl = _display displayctrl _x; + _ctrl ctrlsettextcolor (_colorsText select _foreachindex); + [_ctrl,1,_delay] call bis_fnc_ctrlsetscale; + } foreach _idcs; + + RscAttributeRespawnPosition_selected = _idcs find (ctrlidc _ctrlSelected); + _ctrlSelected ctrlsettextcolor (_colorsActive select RscAttributeRespawnPosition_selected); + [_ctrlSelected,1.25,_delay] call bis_fnc_ctrlsetscale; + }; + case "confirmed": { + private "_mode"; + _display = _params select 0; + _selected = uinamespace getvariable ["RscAttributeRespawnPosition_selected",4]; + + switch true do { + case (typeName _entity == "GROUP"): { + _mode = "group"; + }; + case (_entity isKindOf "Man"): { + _mode = "man"; + }; + default { + _mode = "vehicle"; + }; + }; + _curatorSelected = [_mode] call Achilles_fnc_getCuratorSelected; + { + _IDs = _x getvariable ["RscAttributeRespawnPosition_ids",[]]; + + //--- Remove + {_x call bis_fnc_removerespawnposition;} foreach _IDs; + _IDs = [[],[],[],[],[]]; + + if (_selected != 4) then { + //--- Add + _side = _selected call bis_fnc_sideType; + _respawnID = [_side,_x] call bis_fnc_addrespawnposition; + _IDs set [_selected,_respawnID]; + _x setvariable ["RscAttributeRespawnPosition_ids",_IDs,true]; + } else { + _x setvariable ["RscAttributeRespawnPosition_ids",nil,true]; + }; + } forEach _curatorSelected; + _entity setvariable ["updated",true,true]; + false + }; + case "onUnload": { + RscAttributeRespawnPosition_selected = nil; + }; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeRespawnVehicle.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeRespawnVehicle.sqf new file mode 100644 index 00000000..a8cb8891 --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeRespawnVehicle.sqf @@ -0,0 +1,113 @@ +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" + +_mode = _this select 0; +_params = _this select 1; +_unit = _this select 2; + +_idcs = [ + IDC_RSCATTRIBUTERESPAWNVEHICLE_EAST, + IDC_RSCATTRIBUTERESPAWNVEHICLE_WEST, + IDC_RSCATTRIBUTERESPAWNVEHICLE_GUER, + IDC_RSCATTRIBUTERESPAWNVEHICLE_CIV, + IDC_RSCATTRIBUTERESPAWNVEHICLE_START, + IDC_RSCATTRIBUTERESPAWNVEHICLE_DISABLED +]; +_colorsActive = [ + east call bis_fnc_sidecolor, + west call bis_fnc_sidecolor, + resistance call bis_fnc_sidecolor, + civilian call bis_fnc_sidecolor, + [1,1,1,1], + [1,1,1,1] +]; +_colorsText = +_colorsActive; +{_x set [3,0.5];} foreach _colorsText; + +switch _mode do { + case "onLoad": { + + _display = _params select 0; + + //--- Add handlers to all buttons + _playerside = player call bis_fnc_objectside; + { + _ctrl = _display displayctrl _x; + _side = _foreachindex call bis_fnc_sideType; + if (([_side,_playerside] call bis_fnc_arefriendly && playableslotsnumber _side > 0) || _foreachindex > 3) then { + _ctrl ctrladdeventhandler ["buttonclick","with uinamespace do {['onButtonClick',[_this select 0,0.1]] call RscAttributeRespawnVehicle};"]; + _ctrl ctrlsetactivecolor (_colorsActive select _foreachindex); + _ctrl ctrlsettextcolor (_colorsText select _foreachindex); + _ctrl ctrlcommit 0; + } else { + _ctrl ctrlshow false; + }; + } foreach _idcs; + + _respawnID = [_unit,false] call bis_fnc_modulerespawnvehicle; + _selected = switch _respawnID do { + case 0; + case 1; + case 7: {4}; + case 2; + case 3; + case 4; + case 5; + case 6: { + if (_respawnID == 2) then {_respawnID = (_unit call bis_fnc_objectside) call bis_fnc_sideID;}; + _respawnID - 3 + }; + default {5}; + }; + + RscAttributeRespawnVehicle_selected = _selected; + _selectedIdc = _idcs select _selected; + ['onButtonClick',[_display displayctrl _selectedIdc,0]] call RscAttributeRespawnVehicle; + }; + case "onButtonClick": { + _ctrlSelected = _params select 0; + _delay = _params select 1; + _display = ctrlparent _ctrlSelected; + { + _ctrl = _display displayctrl _x; + _ctrl ctrlsettextcolor (_colorsText select _foreachindex); + [_ctrl,1,_delay] call bis_fnc_ctrlsetscale; + } foreach _idcs; + + RscAttributeRespawnVehicle_selected = _idcs find (ctrlidc _ctrlSelected); + _ctrlSelected ctrlsettextcolor (_colorsActive select RscAttributeRespawnVehicle_selected); + [_ctrlSelected,1.25,_delay] call bis_fnc_ctrlsetscale; + }; + case "confirmed": { + _display = _params select 0; + _selected = uinamespace getvariable ["RscAttributeRespawnVehicle_selected",5]; + _respawnID = [_unit,false] call bis_fnc_modulerespawnvehicle; + + _selected = switch (_selected) do { + case 0: {3}; + case 1: {4}; + case 2: {5}; + case 3: {6}; + case 4: {0}; + default {-1}; + }; + + if (_selected != _respawnID) then + { + _curatorSelected = ["vehicle"] call Achilles_fnc_getCuratorSelected; + { + //--- Remove + [[_x,true],"bis_fnc_modulerespawnvehicle",false] call bis_fnc_mp; + + //--- Add + if (_selected >= 0) then { + [[_x,nil,nil,nil,{_this call bis_fnc_curatorrespawn;},_selected],"bis_fnc_modulerespawnvehicle",false] call bis_fnc_mp; + }; + } forEach _curatorSelected; + }; + _unit setvariable ["updated",true,true]; + false + }; + case "onUnload": { + RscAttributeRespawnVehicle_selected = nil; + }; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeSkill.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeSkill.sqf index 5a39fa24..2bc1169d 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeSkill.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeSkill.sqf @@ -17,31 +17,31 @@ switch _mode do }; case "confirmed": { - private "_leader"; + private ["_mode", "_unit","_curatorSelected"]; _display = _params select 0; _ctrlValue = _display displayctrl IDC_RSCATTRIBUTESKILL_VALUE; _skill_value = (sliderposition _ctrlValue) * 0.1; - if (typename _entity == typename grpnull) then - { - _leader = leader _entity; - _entity = units _entity - } else - { - _leader = _entity; - _entity = [_entity]; + if (typename _entity == typename grpnull) then { + _selectedGroups = ["group"] call Achilles_fnc_getCuratorSelected; + _curatorSelected = []; + {_curatorSelected append units _x} forEach _selectedGroups; + _unit = leader _entity; + } else { + _curatorSelected = ["man"] call Achilles_fnc_getCuratorSelected; + _unit = _entity; }; - if (abs (skill _leader - _skill_value) < 0.01) exitWith {}; - if (local _leader) then - { - {_x setskill _skill_value;} foreach _entity; - } else - { - [[_entity,_skill_value], + _previousSkillValue = skill _unit; + if (abs (_skill_value - _previousSkillValue) > 0.01) then { + if (local _entity) then { - _entity = _this select 0; - _skill_value = _this select 1; - {_x setskill _skill_value;} foreach _entity; - }] remoteExec ["spawn",_leader]; + {_x setskill _skill_value;} foreach _curatorSelected; + } else { + [[_curatorSelected, _skill_value], { + _entities = _this select 0; + _skill_value = _this select 1; + {_x setskill _skill_value;} foreach _entities; + }] remoteExec ["spawn", _unit]; + }; }; }; case "onUnload": {}; diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeSpeedMode.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeSpeedMode.sqf index 10af86f0..a0a29432 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeSpeedMode.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeSpeedMode.sqf @@ -61,27 +61,36 @@ switch _mode do { diag_log _selected; if (typename _entity == typename []) then { - _group = _entity select 0; - _wp_id = _entity select 1; - if (currentwaypoint _group == _wp_id && _selected != "UNCHANGED") then + if (waypointSpeed _entity == _selected) exitWith {}; + _curatorSelectedWPs = ["wp"] call Achilles_fnc_getCuratorSelected; { - if (local _group) then + _group = _x select 0; + _wp_id = _x select 1; + if (currentwaypoint _group == _wp_id && _selected != "UNCHANGED") then { - _group setspeedmode _selected; - } else - { - [_group, _selected] remoteExec ["setspeedmode",leader _group]; + if (local _group) then + { + _group setspeedmode _selected; + } else + { + [_group, _selected] remoteExec ["setspeedmode",leader _group]; + }; }; - }; - _entity setwaypointspeed _selected; + _x setwaypointspeed _selected; + } forEach _curatorSelectedWPs; } else { - if (local _entity) then + if (speedMode leader _entity == _selected) exitWith {}; + _curatorSelectedGrps = ["group"] call Achilles_fnc_getCuratorSelected; { - _entity setspeedmode _selected; - } else - { - [_entity, _selected] remoteExec ["setspeedmode",leader _entity]; - }; + _leader = leader _x; + if (local _leader) then + { + _x setspeedmode _selected; + } else + { + [_x, _selected] remoteExec ["setspeedmode", _leader]; + }; + } forEach _curatorSelectedGrps; _entity setvariable ["updated",true,true]; }; false diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeUnitPos.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeUnitPos.sqf index 4ac44a09..95746a82 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeUnitPos.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeUnitPos.sqf @@ -44,15 +44,24 @@ switch _mode do { RscAttributeUnitPos_selected = _idcs find (ctrlidc _control); }; case "confirmed": { + private ["_previousStanceId", "_entities"]; _display = _params select 0; _selected = uinamespace getvariable ["RscAttributeUnitPos_selected",0]; - _entities = if (typename _entity == typename grpnull) then {units _entity} else {[_entity]}; - if (local _entity) then - { - {_x setunitpos (_stances select _selected);} foreach _entities; - } else - { - [[_entities,(_stances select _selected)], + if (typename _entity == typename grpnull) then { + _selectedGroups = ["group"] call Achilles_fnc_getCuratorSelected; + _entities = []; + {_entities append units _x} forEach _selectedGroups; + _previousStanceId = _stances find (tolower unitpos leader _entity); + } else { + _entities = ["man"] call Achilles_fnc_getCuratorSelected; + _previousStanceId = _stances find (tolower unitpos _entity); + }; + if (_previousStanceId == _selected) exitWith {}; + _stance = _stances select _selected; + if (local _entity) then { + {_x setunitpos _stance} foreach _entities; + } else { + [[_entities, _stance], { _entities = _this select 0; _stance = _this select 1; diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeWaypointTimeout.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeWaypointTimeout.sqf new file mode 100644 index 00000000..1806ca97 --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeWaypointTimeout.sqf @@ -0,0 +1,60 @@ +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" + +_mode = _this select 0; +_params = _this select 1; +_entity = _this select 2; + +_idcs = [ + IDC_RSCATTRIBUTEWAYPOINTTIMEOUT_BUTTONTIME00, + IDC_RSCATTRIBUTEWAYPOINTTIMEOUT_BUTTONTIME05, + IDC_RSCATTRIBUTEWAYPOINTTIMEOUT_BUTTONTIME10, + IDC_RSCATTRIBUTEWAYPOINTTIMEOUT_BUTTONTIME15, + IDC_RSCATTRIBUTEWAYPOINTTIMEOUT_BUTTONTIME20, + IDC_RSCATTRIBUTEWAYPOINTTIMEOUT_BUTTONTIME25, + IDC_RSCATTRIBUTEWAYPOINTTIMEOUT_BUTTONTIME30 +]; + +switch _mode do { + case "onLoad": { + _display = _params select 0; + _daytime = (ceil (daytime * 12)) / 12; + _statements = ["true"]; + _selected = parsenumber (waypointstatements _entity select 0); + _selectedIDC = _idcs select 0; + { + _ctrl = _display displayctrl _x; + _ctrl ctrladdeventhandler ["buttonclick",{with uinamespace do {["buttonClick",_this,[]] call RscAttributeWaypointTimeout;};}]; + if (_foreachindex > 0) then { + _time = _daytime + _foreachindex * (1/12); + _statements set [count _statements,format ["%1; daytime > %1",_time]]; + _ctrl ctrlsettext ([_time + 1/120,"HH:MM"] call bis_fnc_timetostring); + if (abs (_time - _selected) < 0.01) then {_selectedIDC = _x;}; + } else { + _ctrl ctrlsettext toupper ctrltext _ctrl; + }; + } foreach _idcs; + RscAttributeWaypointTimeout_statements = _statements; + ["buttonClick",[_display displayctrl _selectedIDC],[]] call RscAttributeWaypointTimeout; + }; + case "buttonClick": { + _ctrlButton = _params select 0; + _display = ctrlparent _ctrlButton; + _buttonID = _idcs find (ctrlidc _ctrlButton); + { + (_display displayctrl _x) ctrlenable (_foreachindex != _buttonID); + } foreach _idcs; + }; + case "confirmed": { + _display = _params select 0; + _buttonID = 0; + { + if !(ctrlenabled (_display displayctrl _x)) exitwith {_buttonID = _foreachindex;}; + } foreach _idcs; + + _statements = uinamespace getvariable ["RscAttributeWaypointTimeout_statements",["true","true","true","true","true","true","true"]]; + _entity setwaypointstatements [_statements select _buttonID,""]; + }; + case "onUnload": { + RscAttributeWaypointTimeout_statements = nil; + }; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeWaypointType.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeWaypointType.sqf index 023981fb..732548c3 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeWaypointType.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeWaypointType.sqf @@ -39,10 +39,17 @@ switch _mode do { _value = _values select _valueID; _valueConfig = [_value,configfile] call bis_fnc_configpath; if (isclass _valueConfig) then { - _entity setwaypointtype "SCRIPTED"; - _entity setwaypointscript gettext (_valueConfig >> "file"); + _curatorSelectedWPs = ["wp"] call Achilles_fnc_getCuratorSelected; + { + _x setwaypointtype "SCRIPTED"; + _x setwaypointscript gettext (_valueConfig >> "file"); + } forEach _curatorSelectedWPs; } else { - _entity setwaypointtype _value; + if (_value == waypointtype _entity) exitWith {}; + _curatorSelectedWPs = ["wp"] call Achilles_fnc_getCuratorSelected; + { + _x setwaypointtype _value; + } forEach _curatorSelectedWPs; }; }; }; diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributes.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributes.sqf new file mode 100644 index 00000000..5fd01dad --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributes.sqf @@ -0,0 +1,141 @@ +#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" + +_mode = _this select 0; +_params = _this select 1; +_class = _this select 2; + +switch _mode do +{ + case "onLoad": + { + _display = _params select 0; + _displayConfig = configfile >> _class; + + _ctrlBackground = _display displayctrl IDC_RSCDISPLAYATTRIBUTES_BACKGROUND; + _ctrlTitle = _display displayctrl IDC_RSCDISPLAYATTRIBUTES_TITLE; + _ctrlContent = _display displayctrl IDC_RSCDISPLAYATTRIBUTES_CONTENT; + _ctrlButtonOK = _display displayctrl IDC_OK; + _ctrlButtonCancel = _display displayctrl IDC_CANCEL; + _ctrlButtonCustom = _display displayctrl IDC_RSCDISPLAYATTRIBUTES_BUTTONCUSTOM; + + _ctrlBackgroundPos = ctrlposition _ctrlBackground; + _ctrlTitlePos = ctrlposition _ctrlTitle; + _ctrlContentPos = ctrlposition _ctrlContent; + _ctrlButtonOKPos = ctrlposition _ctrlButtonOK; + _ctrlButtonCancelPos = ctrlposition _ctrlButtonCancel; + _ctrlButtonCustomPos = ctrlposition _ctrlButtonCustom; + + _ctrlTitleOffsetY = (_ctrlBackgroundPos select 1) - (_ctrlTitlePos select 1) - (_ctrlTitlePos select 3); + _ctrlContentOffsetY = (_ctrlContentPos select 1) - (_ctrlBackgroundPos select 1); + + //--- Show fake map in the background + _ctrlMap = _display displayctrl IDC_RSCDISPLAYCURATOR_MAINMAP; + _ctrlMap ctrlenable false; + if (visiblemap) then + { + _ctrlCuratorMap = (finddisplay IDD_RSCDISPLAYCURATOR) displayctrl IDC_RSCDISPLAYCURATOR_MAINMAP; + _ctrlMap ctrlmapanimadd [0,ctrlmapscale _ctrlCuratorMap,_ctrlCuratorMap ctrlmapscreentoworld [0.5,0.5]]; + ctrlmapanimcommit _ctrlMap; + } else { + _ctrlMap ctrlshow false; + }; + + //--- Load default attributes + _attributes = if (getnumber (_displayConfig >> "filterAttributes") > 0) then {missionnamespace getvariable ["BIS_fnc_initCuratorAttributes_attributes",[]]} else {["%ALL"]}; + _allAttributes = "%ALL" in _attributes; + + //--- Initialize attributes + _posY = _ctrlContentOffsetY; + _contentControls = _displayConfig >> "Controls" >> "Content" >> "Controls"; + _enableDebugConsole = ["DebugConsole",getnumber (missionconfigfile >> "enableDebugConsole")] call bis_fnc_getParamValue; + _enableAdmin = (_enableDebugConsole == 1 && (isserver || serverCommandAvailable "#shutdown")) || _enableDebugConsole == 2; + for "_i" from 0 to (count _contentControls - 1) do { + _cfgControl = _contentControls select _i; + if (isclass _cfgControl) then { + _idc = getnumber (_cfgControl >> "idc"); + _control = _display displayctrl _idc; + + //--- Admin specific attribute + _show = if (getnumber (_cfgControl >> "adminOnly") > 0) then {_enableAdmin} else {true}; + + if ((_allAttributes || {_x == configname _cfgControl} count _attributes > 0) && _show) then { + _controlPos = ctrlposition _control; + _controlPos set [0,0]; + _controlPos set [1,_posY]; + _control ctrlsetposition _controlPos; + _control ctrlcommit 0; + _posY = _posY + (_controlPos select 3) + 0.005; + ctrlsetfocus _control; + } else { + _control ctrlsetposition [0,0,0,0]; + _control ctrlcommit 0; + _control ctrlshow false; + }; + }; + }; + _posH = ((_posY + _ctrlContentOffsetY) min 1.5) * 0.5; + + _target = missionnamespace getvariable ["BIS_fnc_initCuratorAttributes_target",objnull]; + _name = switch (typename _target) do { + case (typename objnull): {gettext (configfile >> "cfgvehicles" >> typeof _target >> "displayname")}; + case (typename grpnull): {groupid _target}; + case (typename []): {format ["%1: %3 #%2",groupid (_target select 0),_target select 1,localize "str_a3_cfgmarkers_waypoint_0"]}; + case (typename ""): {markertext _target}; + }; + _ctrlTitle ctrlsettext format [ctrltext _ctrlTitle,toupper _name]; + + _ctrlTitlePos set [1,(0.5 - _posH) - (_ctrlTitlePos select 3) - _ctrlTitleOffsetY]; + _ctrlTitle ctrlsetposition _ctrlTitlePos; + _ctrlTitle ctrlcommit 0; + + _ctrlContentPos set [1,0.5 - _posH]; + _ctrlContentPos set [3,_posH * 2]; + _ctrlContent ctrlsetposition _ctrlContentPos; + _ctrlContent ctrlcommit 0; + + _ctrlBackgroundPos set [1,0.5 - _posH]; + _ctrlBackgroundPos set [3,_posH * 2]; + _ctrlBackground ctrlsetposition _ctrlBackgroundPos; + _ctrlBackground ctrlcommit 0; + + _ctrlButtonOKPos set [1,0.5 + _posH + _ctrlTitleOffsetY]; + _ctrlButtonOK ctrlsetposition _ctrlButtonOKPos; + _ctrlButtonOK ctrlcommit 0; + ctrlsetfocus _ctrlButtonOK; + + _ctrlButtonCancelPos set [1,0.5 + _posH + _ctrlTitleOffsetY]; + _ctrlButtonCancel ctrlsetposition _ctrlButtonCancelPos; + _ctrlButtonCancel ctrlcommit 0; + + _ctrlButtonCustomPos set [1,0.5 + _posH + _ctrlTitleOffsetY]; + _ctrlButtonCustom ctrlsetposition _ctrlButtonCustomPos; + _ctrlButtonCustom ctrlcommit 0; + + //--- Close the display when entity is altered + [_display] spawn + { + disableserialization; + _display = _this select 0; + _target = missionnamespace getvariable ["BIS_fnc_initCuratorAttributes_target",objnull]; + switch (typename _target) do { + case (typename objnull): { + _isAlive = alive _target; + waituntil {isnull _display || (_isAlive && !alive _target)}; + }; + case (typename grpnull): { + waituntil {isnull _display || isnull _target}; + }; + case (typename []): { + _grp = _target select 0; + _wpCount = count waypoints _grp; + waituntil {isnull _display || (count waypoints _grp != _wpCount)}; + }; + case (typename ""): { + waituntil {isnull _display || markertype _target == ""}; + }; + }; + _display closedisplay 2; + }; + }; + case "onUnload": {}; +}; \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesGroup.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesGroup.sqf new file mode 100644 index 00000000..c334bf48 --- /dev/null +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesGroup.sqf @@ -0,0 +1 @@ +#include "RscDisplayAttributes.sqf" \ No newline at end of file diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesMan.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesMan.sqf index 7c3367d4..32697549 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesMan.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesMan.sqf @@ -1,22 +1,8 @@ -// fix available attributes for players -_show_skill = true; -_available_attributes = missionnamespace getvariable ["BIS_fnc_initCuratorAttributes_attributes",[]]; -if (not ("%ALL" in _available_attributes)) then -{ - _available_attributes = ["Rank2","Damage2","Ammo","RespawnPosition2"]; - missionnamespace setvariable ["BIS_fnc_initCuratorAttributes_attributes",_available_attributes]; - _show_skill = false; -}; -#include "\a3\ui_f_curator\UI\displays\RscDisplayAttributes.sqf" +#include "RscDisplayAttributes.sqf" _ctrlButtonCustom = _display displayctrl 30004; -if (not _show_skill) then -{ - _ctrlButtonCustom ctrlSetFade 0.8; - _ctrlButtonCustom ctrlEnable false; - _ctrlButtonCustom ctrlCommit 0; -}; + _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); { diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesVehicle.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesVehicle.sqf index 539e5db5..968e6879 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesVehicle.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesVehicle.sqf @@ -1,22 +1,7 @@ -// fix available attributes for players -_show_skill = true; -_available_attributes = missionnamespace getvariable ["BIS_fnc_initCuratorAttributes_attributes",[]]; -if (not ("%ALL" in _available_attributes)) then -{ - _available_attributes = ["Rank","Damage","Fuel","Ammo","RespawnVehicle2","RespawnPosition2"]; - missionnamespace setvariable ["BIS_fnc_initCuratorAttributes_attributes",_available_attributes]; - _show_skill = false; -}; -#include "\a3\ui_f_curator\UI\displays\RscDisplayAttributes.sqf" +#include "RscDisplayAttributes.sqf" _ctrlButtonCustom = _display displayctrl 30004; -if (not _show_skill) then -{ - _ctrlButtonCustom ctrlSetFade 0.8; - _ctrlButtonCustom ctrlEnable false; - _ctrlButtonCustom ctrlCommit 0; -}; _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); diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesWaypoint.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesWaypoint.sqf index 28c60175..c334bf48 100644 --- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesWaypoint.sqf +++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesWaypoint.sqf @@ -1,141 +1 @@ -#include "\A3\ui_f_curator\ui\defineResinclDesign.inc" - -_mode = _this select 0; -_params = _this select 1; -_class = _this select 2; - -switch _mode do -{ - case "onLoad": - { - _display = _params select 0; - _displayConfig = configfile >> _class; - - _ctrlBackground = _display displayctrl IDC_RSCDISPLAYATTRIBUTES_BACKGROUND; - _ctrlTitle = _display displayctrl IDC_RSCDISPLAYATTRIBUTES_TITLE; - _ctrlContent = _display displayctrl IDC_RSCDISPLAYATTRIBUTES_CONTENT; - _ctrlButtonOK = _display displayctrl IDC_OK; - _ctrlButtonCancel = _display displayctrl IDC_CANCEL; - _ctrlButtonCustom = _display displayctrl IDC_RSCDISPLAYATTRIBUTES_BUTTONCUSTOM; - - _ctrlBackgroundPos = ctrlposition _ctrlBackground; - _ctrlTitlePos = ctrlposition _ctrlTitle; - _ctrlContentPos = ctrlposition _ctrlContent; - _ctrlButtonOKPos = ctrlposition _ctrlButtonOK; - _ctrlButtonCancelPos = ctrlposition _ctrlButtonCancel; - _ctrlButtonCustomPos = ctrlposition _ctrlButtonCustom; - - _ctrlTitleOffsetY = (_ctrlBackgroundPos select 1) - (_ctrlTitlePos select 1) - (_ctrlTitlePos select 3); - _ctrlContentOffsetY = (_ctrlContentPos select 1) - (_ctrlBackgroundPos select 1); - - //--- Show fake map in the background - _ctrlMap = _display displayctrl IDC_RSCDISPLAYCURATOR_MAINMAP; - _ctrlMap ctrlenable false; - if (visiblemap) then - { - _ctrlCuratorMap = (finddisplay IDD_RSCDISPLAYCURATOR) displayctrl IDC_RSCDISPLAYCURATOR_MAINMAP; - _ctrlMap ctrlmapanimadd [0,ctrlmapscale _ctrlCuratorMap,_ctrlCuratorMap ctrlmapscreentoworld [0.5,0.5]]; - ctrlmapanimcommit _ctrlMap; - } else { - _ctrlMap ctrlshow false; - }; - - //--- Load default attributes - _attributes = if (getnumber (_displayConfig >> "filterAttributes") > 0) then {missionnamespace getvariable ["BIS_fnc_initCuratorAttributes_attributes",[]]} else {["%ALL"]}; - _allAttributes = "%ALL" in _attributes; - - //--- Initialize attributes - _posY = _ctrlContentOffsetY; - _contentControls = _displayConfig >> "Controls" >> "Content" >> "Controls"; - _enableDebugConsole = ["DebugConsole",getnumber (missionconfigfile >> "enableDebugConsole")] call bis_fnc_getParamValue; - _enableAdmin = (_enableDebugConsole == 1 && (isserver || serverCommandAvailable "#shutdown")) || _enableDebugConsole == 2; - for "_i" from 0 to (count _contentControls - 1) do { - _cfgControl = _contentControls select _i; - if (isclass _cfgControl) then { - _idc = getnumber (_cfgControl >> "idc"); - _control = _display displayctrl _idc; - - //--- Admin specific attribute - _show = if (getnumber (_cfgControl >> "adminOnly") > 0) then {_enableAdmin} else {true}; - - if ((_allAttributes || {_x == configname _cfgControl} count _attributes > 0) && _show) then { - _controlPos = ctrlposition _control; - _controlPos set [0,0]; - _controlPos set [1,_posY]; - _control ctrlsetposition _controlPos; - _control ctrlcommit 0; - _posY = _posY + (_controlPos select 3) + 0.005; - ctrlsetfocus _control; - } else { - _control ctrlsetposition [0,0,0,0]; - _control ctrlcommit 0; - _control ctrlshow false; - }; - }; - }; - _posH = ((_posY + _ctrlContentOffsetY) min 1.2) * 0.5; - - _target = missionnamespace getvariable ["BIS_fnc_initCuratorAttributes_target",objnull]; - _name = switch (typename _target) do { - case (typename objnull): {gettext (configfile >> "cfgvehicles" >> typeof _target >> "displayname")}; - case (typename grpnull): {groupid _target}; - case (typename []): {format ["%1: %3 #%2",groupid (_target select 0),_target select 1,localize "str_a3_cfgmarkers_waypoint_0"]}; - case (typename ""): {markertext _target}; - }; - _ctrlTitle ctrlsettext format [ctrltext _ctrlTitle,toupper _name]; - - _ctrlTitlePos set [1,(0.5 - _posH) - (_ctrlTitlePos select 3) - _ctrlTitleOffsetY]; - _ctrlTitle ctrlsetposition _ctrlTitlePos; - _ctrlTitle ctrlcommit 0; - - _ctrlContentPos set [1,0.5 - _posH]; - _ctrlContentPos set [3,_posH * 2]; - _ctrlContent ctrlsetposition _ctrlContentPos; - _ctrlContent ctrlcommit 0; - - _ctrlBackgroundPos set [1,0.5 - _posH]; - _ctrlBackgroundPos set [3,_posH * 2]; - _ctrlBackground ctrlsetposition _ctrlBackgroundPos; - _ctrlBackground ctrlcommit 0; - - _ctrlButtonOKPos set [1,0.5 + _posH + _ctrlTitleOffsetY]; - _ctrlButtonOK ctrlsetposition _ctrlButtonOKPos; - _ctrlButtonOK ctrlcommit 0; - ctrlsetfocus _ctrlButtonOK; - - _ctrlButtonCancelPos set [1,0.5 + _posH + _ctrlTitleOffsetY]; - _ctrlButtonCancel ctrlsetposition _ctrlButtonCancelPos; - _ctrlButtonCancel ctrlcommit 0; - - _ctrlButtonCustomPos set [1,0.5 + _posH + _ctrlTitleOffsetY]; - _ctrlButtonCustom ctrlsetposition _ctrlButtonCustomPos; - _ctrlButtonCustom ctrlcommit 0; - - //--- Close the display when entity is altered - [_display] spawn - { - disableserialization; - _display = _this select 0; - _target = missionnamespace getvariable ["BIS_fnc_initCuratorAttributes_target",objnull]; - switch (typename _target) do { - case (typename objnull): { - _isAlive = alive _target; - waituntil {isnull _display || (_isAlive && !alive _target)}; - }; - case (typename grpnull): { - waituntil {isnull _display || isnull _target}; - }; - case (typename []): { - _grp = _target select 0; - _wpCount = count waypoints _grp; - waituntil {isnull _display || (count waypoints _grp != _wpCount)}; - }; - case (typename ""): { - waituntil {isnull _display || markertype _target == ""}; - }; - }; - _display closedisplay 2; - }; - }; - case "onUnload": {}; -}; \ No newline at end of file +#include "RscDisplayAttributes.sqf" \ No newline at end of file diff --git a/@AresModAchillesExpansion/keys/Achilles_0.0.5.bikey b/@AresModAchillesExpansion/keys/Achilles_0.0.5.bikey deleted file mode 100644 index 51a00762..00000000 Binary files a/@AresModAchillesExpansion/keys/Achilles_0.0.5.bikey and /dev/null differ diff --git a/@AresModAchillesExpansion/keys/Achilles_0.0.6.bikey b/@AresModAchillesExpansion/keys/Achilles_0.0.6.bikey new file mode 100644 index 00000000..e1e494df Binary files /dev/null and b/@AresModAchillesExpansion/keys/Achilles_0.0.6.bikey differ diff --git a/@AresModAchillesExpansion/license.txt b/@AresModAchillesExpansion/license.txt index 8a136495..9b3bc07e 100644 --- a/@AresModAchillesExpansion/license.txt +++ b/@AresModAchillesExpansion/license.txt @@ -15,15 +15,16 @@ Ares integrates code from the following mods or scripts: * 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 ) + * 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) -* Grezvany13 (several contributions & support) +* Shukari (Available factions bug fix) Achilles integrates code from the following mods or scripts: @@ -37,7 +38,7 @@ Achilles integrates code from the following mods or scripts: Translations: * English (by Kex) * French (by Kex) -* German (by Kex) +* German (by Kex; revised by KiritoKun223) * Russian (by Igor Nikolaev) diff --git a/@AresModAchillesExpansion/mod.cpp b/@AresModAchillesExpansion/mod.cpp index 60241dec..3da63a8c 100644 --- a/@AresModAchillesExpansion/mod.cpp +++ b/@AresModAchillesExpansion/mod.cpp @@ -1,14 +1,14 @@ -name = "Ares Mod - Achilles Expansion (0.0.5)"; +name = "Ares Mod - Achilles Expansion (0.0.6)"; 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.5)"; +description = "Ares Mod - Achilles Expansion (0.0.6)"; 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.5)"; +tooltip = "Ares Mod - Achilles Expansion (0.0.6)"; 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.5)"; \ No newline at end of file +overviewText = "Ares Mod - Achilles Expansion (0.0.6)"; \ No newline at end of file diff --git a/@AresModAchillesExpansion/readme.txt b/@AresModAchillesExpansion/readme.md similarity index 89% rename from @AresModAchillesExpansion/readme.txt rename to @AresModAchillesExpansion/readme.md index 109bc85b..53058027 100644 --- a/@AresModAchillesExpansion/readme.txt +++ b/@AresModAchillesExpansion/readme.md @@ -10,6 +10,37 @@ As of V.1.8.0 Ares requires @CBA_A3 for some functionality. Please ensure it is You can download the latest version of CBA from the developer website here: http://dev.withsix.com/projects/cca/wiki/CBA Changelists +V.0.0.6 (Achilles Expansion (alpha version)) +* Change: Create Intel: Simulation of new created intel is no longer enabled. +* Change: Ammo box inventory is no longer opened automatically on spawn. +* Change: Add/Remove editable objects: Extend search pattern to static turrets for type "units" and "vehicles". +* Change: Update ACE module category name to ACE3 3.9.0. +* Change: "Bind variable to object" module: Global variable is optional. +* Change: Enlarge Attributes window to prevent the need of scroll bars. +* Change: Intel: enlarge description section. +* Change: Maximal # rounds for arty changed to 10. +* Change: Improve inventory dialog (improved performance by caching data; separated virtual arsenal (VA) from normal inventory; numpad keybinding: +/- (useful to make fast changes), * = VA, / = weapon sepecific); double click on weapon => weapon specific; sorted alphabetic, press letter/number to switch between entries; include faceware) +* Feature: Fire Support: Attack chopper CAS (target logic + module; might be laggy) +* Feature: Names of target/LZ/RP logics can be specified. +* Feature: Ares_fnc_showChooseDialog: New control type: "MESSAGE" (see [Achilles Wiki](https://github.com/oOKexOo/AresModAchillesExpansion/wiki/Custom-Modules)) +* Feature: Settings: Auto-collapse module tree is optional +* Feature: Implement scroll bar for Ares_fnc_showChooseDialog +* Feature: Pre-placing mode (Allows defining spawn position prior to spawning the asset/module; especially useful for carriers). +* Feature: Additional way to spawn vehicles without crew. +* Feature: Edit unit attributes: Change unit traits (Medic, EOD, engineer); Vanilla & ACE3 version. +* Feature: Change Ability: PATH (by @Grezvany13). +* Feature: Attributes window: Changed attributes are applied on all selected units/vehicles/ammo boxes/groups (as in Eden editor; real game changer!). +* Fix: Healing module did not work for non-local units. +* Fix: Patrol/Loiter Module: Fails when chopper is not in the air. +* Fix: Ares_fnc_ShowChooseDialog: Variable scope issue ([BIS forum](https://forums.bistudio.com/topic/191113-ares-mod-achilles-expansion/?do=findComment&comment=3157509)) +* Fix: If fog decay was set to 0 a strange behaviour was observed (see [youtube](https://www.youtube.com/watch?v=vksk_BiC3o4)). +* Fix: Achilles object attributes are incomptatible with "Set Attributes - X" modules. +* Fix: Damage vehicle components: Not all components were available and some component names went missing. +* Fix: Translation corrections for German (by @KiritoKun223) +* Fix: Factions with apostrophe in the name lead to errors (fixed by @shukari). +* Fix: Unessecary creation of dependency on achilles_data_f_achilles when placing compositions in Eden ([BIS Forum](https://forums.bistudio.com/topic/191113-ares-mod-achilles-expansion/?do=findComment&comment=3140115)). +* Fix: Mines were still revealed to players (0.0.5 only removed the map markers...). + V.0.0.5 (Achilles Expansion (alpha version)) * Change: Garrison module: Replace searching pattern "House" by "Building" (=> more buildings are available e.g. Tanoa WW2 bunkers). * Change: Moved "Create/Edit intel" module from "spawn" to "scenario flow" category (see #40) diff --git "a/Arma 3 - Verkn\303\274pfung.lnk" "b/Arma 3 - Verkn\303\274pfung.lnk" deleted file mode 100644 index ea4c2ad2..00000000 Binary files "a/Arma 3 - Verkn\303\274pfung.lnk" and /dev/null differ diff --git a/Experimental/attack_chopper_CAS.sqf b/Experimental/attack_chopper_CAS.sqf new file mode 100644 index 00000000..aed12b74 --- /dev/null +++ b/Experimental/attack_chopper_CAS.sqf @@ -0,0 +1,177 @@ + + + +Achilles_fnc_weaponsAllTurrets = +{ + _vehicle = param [0, objNull, [objNull]]; + _non_empty_only = param [1, false, [false]]; + _weapons = []; + _magazinesAllTurrets = []; + { + if (_x select 2 > 0) then + { + _magazinesAllTurrets pushBack (_x select 0); + }; + } forEach (magazinesAllTurrets _vehicle); + + { + _path = _x; + { + _weapon = _x; + if (_non_empty_only) then + { + _cfgMagazines = getArray (configfile >> "CfgWeapons" >> _weapon >> "magazines"); + { + if (_x in _cfgMagazines) exitWith + { + _weapons pushBack _weapon; + }; + } forEach _magazinesAllTurrets; + } else + { + _weapons pushBack _weapon; + }; + } forEach (_vehicle weaponsTurret _path); + } forEach ([[-1]] + allTurrets _vehicle); + _weapons; +}; + +["Achilles Experimental","Attack chopper CAS", +{ + + _unit_capture_trajectory = + [[0,[64.53,245.3,118.076],[-0.27318,-0.95957,-0.067809],[-0.0173246,-0.0655712,0.997697],[-0.061191,-0.275012,-2.92498]],[0.04199,[64.52,245.29,117.982],[-0.273193,-0.959501,-0.0687267],[-0.0176043,-0.0664457,0.997634],[-0.0677973,-0.300067,-2.86514]],[0.0839801,[64.52,245.27,117.846],[-0.273189,-0.959416,-0.0699256],[-0.0179694,-0.0675884,0.997552],[-0.0783615,-0.339977,-2.75104]],[0.14697,[64.51,245.25,117.716],[-0.272672,-0.95946,-0.0713201],[-0.0183973,-0.0689159,0.997453],[-0.0896733,-0.382557,-2.60771]],[0.16821,[64.51,245.23,117.637],[-0.271613,-0.959625,-0.0731145],[-0.0189314,-0.0706284,0.997323],[-0.0975067,-0.41196,-2.50286]],[0.2102,[64.5,245.22,117.564],[-0.27019,-0.959788,-0.0761897],[-0.0198073,-0.0735751,0.997093],[-0.1057,-0.442598,-2.38907]],[0.25415,[64.48,245.19,117.469],[-0.267618,-0.959899,-0.0835114],[-0.0218175,-0.0806136,0.996507],[-0.11882,-0.491379,-2.20924]],[0.29712,[64.47,245.16,117.415],[-0.26573,-0.95984,-0.08997],[-0.0235484,-0.0868349,0.995944],[-0.128348,-0.526648,-2.08341]],[0.33911,[64.46,245.12,117.347],[-0.262811,-0.959476,-0.101663],[-0.026617,-0.0981168,0.994819],[-0.143773,-0.583567,-1.90005]],[0.3811,[64.4401,245.09,117.309],[-0.260849,-0.959022,-0.110606],[-0.0289228,-0.106757,0.993864],[-0.155255,-0.62589,-1.78645]],[0.4231,[64.42,245.04,117.264],[-0.258121,-0.957928,-0.125484],[-0.0327016,-0.121148,0.992096],[-0.173281,-0.692392,-1.63572]],[0.46509,[64.41,245,117.239],[-0.256603,-0.956867,-0.136238],[-0.0354,-0.131559,0.990676],[-0.186194,-0.740197,-1.56071]],[0.50708,[64.39,244.94,117.21],[-0.255024,-0.954685,-0.153427],[-0.0396852,-0.148206,0.98816],[-0.207632,-0.819785,-1.43196]],[0.5481,[64.38,244.89,117.196],[-0.254469,-0.952817,-0.165486],[-0.0426842,-0.159886,0.986212],[-0.22407,-0.881124,-1.33977]],[0.59009,[64.36,244.81,117.183],[-0.254429,-0.949363,-0.184324],[-0.0473862,-0.178129,0.982865],[-0.249299,-0.975534,-1.22994]],[0.63208,[64.35,244.76,117.178],[-0.254893,-0.946626,-0.197302],[-0.0506558,-0.19069,0.980342],[-0.268177,-1.04647,-1.15652]],[0.67407,[64.34,244.67,117.177],[-0.25625,-0.941872,-0.217285],[-0.0557609,-0.210012,0.976107],[-0.297616,-1.15717,-1.06183]],[0.71606,[64.3199,244.58,117.18],[-0.258348,-0.936504,-0.237099],[-0.0609358,-0.229144,0.971483],[-0.328909,-1.27482,-0.998775]],[0.75806,[64.3101,244.51,117.181],[-0.260153,-0.932818,-0.249339],[-0.0642121,-0.240945,0.968412],[-0.35233,-1.3628,-0.940959]],[0.80005,[64.29,244.41,117.181],[-0.263201,-0.927507,-0.265435],[-0.0686386,-0.256436,0.964121],[-0.389761,-1.5031,-0.861651]],[0.84204,[64.28,244.34,117.18],[-0.265311,-0.924184,-0.274762],[-0.0712877,-0.265392,0.961501],[-0.415779,-1.60031,-0.814367]],[0.88403,[64.26,244.23,117.175],[-0.268482,-0.919572,-0.286888],[-0.0748453,-0.277008,0.957948],[-0.456809,-1.75294,-0.747529]],[0.92602,[64.25,244.15,117.17],[-0.270615,-0.916756,-0.293813],[-0.0769549,-0.283624,0.955843],[-0.485286,-1.85841,-0.703508]],[0.96899,[64.23,244.04,117.161],[-0.273694,-0.912986,-0.30257],[-0.0797297,-0.291963,0.9531],[-0.529242,-2.02032,-0.644776]],[1.01099,[64.21,243.95,117.155],[-0.275631,-0.910775,-0.307434],[-0.0813398,-0.296577,0.951539],[-0.55926,-2.13035,-0.607905]],[1.05298,[64.1901,243.83,117.143],[-0.278394,-0.907862,-0.313502],[-0.0834422,-0.302311,0.94955],[-0.605637,-2.29937,-0.553229]],[1.09619,[64.17,243.74,117.134],[-0.280132,-0.906167,-0.316839],[-0.0846591,-0.305447,0.948438],[-0.63582,-2.40882,-0.533146]],[1.13818,[64.14,243.61,117.121],[-0.282444,-0.903967,-0.321044],[-0.0862649,-0.30938,0.947018],[-0.683425,-2.58061,-0.486658]],[1.20215,[64.1,243.42,117.104],[-0.284938,-0.90157,-0.325549],[-0.088082,-0.313564,0.945473],[-0.748161,-2.81241,-0.429576]],[1.22314,[64.09,243.37,117.099],[-0.28547,-0.901053,-0.326511],[-0.0884849,-0.314453,0.94514],[-0.763488,-2.86711,-0.426393]],[1.26611,[64.0601,243.26,117.09],[-0.286441,-0.900107,-0.328268],[-0.0892358,-0.316071,0.94453],[-0.795596,-2.98119,-0.408745]],[1.31421,[64.02,243.1,117.077],[-0.287689,-0.898881,-0.330526],[-0.090234,-0.318141,0.943739],[-0.844437,-3.15418,-0.379359]],[1.33813,[63.99,242.99,117.069],[-0.2884,-0.898179,-0.331814],[-0.0908223,-0.319316,0.943286],[-0.876418,-3.26698,-0.369644]],[1.38916,[63.95,242.82,117.056],[-0.289313,-0.897271,-0.333469],[-0.0916018,-0.320817,0.942701],[-0.925704,-3.44025,-0.34547]],[1.41602,[63.9301,242.76,117.052],[-0.289582,-0.897004,-0.333955],[-0.0918366,-0.321256,0.942529],[-0.942759,-3.50007,-0.331855]],[1.46509,[63.89,242.58,117.039],[-0.290294,-0.896292,-0.335245],[-0.0924739,-0.322417,0.94207],[-0.992335,-3.67345,-0.310914]],[1.48901,[63.85,242.45,117.031],[-0.290699,-0.895885,-0.335981],[-0.0928478,-0.323075,0.941808],[-1.02488,-3.78692,-0.304404]],[1.53809,[63.8,242.25,117.019],[-0.291221,-0.895361,-0.336925],[-0.0933413,-0.323916,0.94147],[-1.07463,-3.95996,-0.287616]],[1.56421,[63.78,242.18,117.016],[-0.291374,-0.895207,-0.337203],[-0.0934894,-0.324162,0.94137],[-1.09181,-4.01962,-0.27653]],[1.61401,[63.73,241.98,117.004],[-0.29178,-0.894797,-0.337938],[-0.0938904,-0.324812,0.941107],[-1.14173,-4.19264,-0.261725]],[1.63818,[63.6901,241.83,116.997],[-0.292011,-0.894563,-0.338357],[-0.0941248,-0.325179,0.940956],[-1.1745,-4.30599,-0.258278]],[1.68799,[63.63,241.61,116.986],[-0.292308,-0.894263,-0.338894],[-0.0944331,-0.325649,0.940763],[-1.22463,-4.47908,-0.24491]],[1.71411,[63.61,241.53,116.982],[-0.292395,-0.894175,-0.339052],[-0.0945254,-0.325786,0.940706],[-1.24195,-4.53881,-0.234719]],[1.76318,[63.55,241.3,116.972],[-0.292626,-0.893941,-0.339469],[-0.0947745,-0.326147,0.940556],[-1.29223,-4.71202,-0.221975]],[1.78711,[63.5,241.14,116.966],[-0.292757,-0.893808,-0.339706],[-0.0949197,-0.326351,0.94047],[-1.32523,-4.82553,-0.219484]],[1.83813,[63.4301,240.89,116.956],[-0.292925,-0.893637,-0.34001],[-0.0951099,-0.326611,0.940361],[-1.37569,-4.99889,-0.20711]],[1.86401,[63.41,240.81,116.953],[-0.292974,-0.893587,-0.340099],[-0.0951668,-0.326687,0.940329],[-1.39312,-5.05872,-0.197168]],[1.91309,[63.34,240.55,116.944],[-0.293104,-0.893456,-0.340333],[-0.0953197,-0.326886,0.940244],[-1.44369,-5.23221,-0.184901]],[1.93701,[63.29,240.37,116.938],[-0.293178,-0.893381,-0.340466],[-0.0954085,-0.326998,0.940197],[-1.47686,-5.3459,-0.182562]],[1.98804,[63.22,240.1,116.93],[-0.293271,-0.893286,-0.340635],[-0.0955243,-0.327139,0.940136],[-1.52756,-5.51952,-0.170277]],[2.01416,[63.1901,240,116.928],[-0.293299,-0.893258,-0.340685],[-0.0955588,-0.32718,0.940118],[-1.54506,-5.57943,-0.160343]],[2.06299,[63.11,239.72,116.92],[-0.29337,-0.893185,-0.340814],[-0.0956512,-0.327287,0.940071],[-1.59583,-5.75314,-0.147988]],[2.08716,[63.0601,239.52,116.916],[-0.293411,-0.893144,-0.340887],[-0.0957045,-0.327347,0.940045],[-1.62912,-5.86695,-0.145533]],[2.13721,[62.97,239.23,116.909],[-0.293461,-0.893093,-0.340978],[-0.0957737,-0.327421,0.940012],[-1.67997,-6.04074,-0.133047]],[2.16309,[62.95,239.12,116.907],[-0.293476,-0.893078,-0.341004],[-0.0957942,-0.327442,0.940003],[-1.69751,-6.1007,-0.123048]],[2.21411,[62.86,238.81,116.901],[-0.293514,-0.893039,-0.341073],[-0.0958488,-0.327497,0.939978],[-1.74839,-6.27447,-0.110621]],[2.23804,[62.8,238.6,116.898],[-0.293535,-0.893018,-0.34111],[-0.09588,-0.327527,0.939965],[-1.78171,-6.38823,-0.108291]],[2.28711,[62.71,238.28,116.893],[-0.29356,-0.892992,-0.341156],[-0.09592,-0.327562,0.939948],[-1.8322,-6.56057,-0.0999027]],[2.31299,[62.6801,238.17,116.892],[-0.293567,-0.892985,-0.341169],[-0.0959317,-0.327572,0.939943],[-1.84966,-6.62014,-0.090997]],[2.36304,[62.58,237.83,116.887],[-0.293586,-0.892967,-0.341201],[-0.0959626,-0.327596,0.939932],[-1.90028,-6.79285,-0.081448]],[2.38721,[62.52,237.6,116.885],[-0.293595,-0.892957,-0.341218],[-0.0959799,-0.327608,0.939926],[-1.93344,-6.90599,-0.0807931]],[2.43701,[62.42,237.25,116.881],[-0.293606,-0.892946,-0.341237],[-0.0960016,-0.327621,0.939919],[-1.98366,-7.07726,-0.0752389]],[2.46313,[62.39,237.13,116.88],[-0.293595,-0.892979,-0.341161],[-0.0959805,-0.327548,0.939947],[-2.00104,-7.13653,-0.0670895]],[2.51318,[62.29,236.77,116.873],[-0.292787,-0.89365,-0.340097],[-0.0955527,-0.326558,0.940335],[-2.05143,-7.30837,-0.0597271]],[2.53711,[62.21,236.53,116.869],[-0.291515,-0.894429,-0.339141],[-0.0950864,-0.325689,0.940683],[-2.08442,-7.42094,-0.0597405]],[2.58716,[62.1,236.15,116.862],[-0.289676,-0.895544,-0.337771],[-0.0943811,-0.324455,0.941181],[-2.13388,-7.59008,-0.0571376]],[2.61304,[62.0699,236.03,116.86],[-0.289109,-0.895889,-0.337342],[-0.0941521,-0.324072,0.941336],[-2.15101,-7.64875,-0.0491826]],[2.66309,[61.95,235.64,116.854],[-0.286645,-0.89716,-0.336062],[-0.0932629,-0.322985,0.941797],[-2.20007,-7.81734,-0.0450682]],[2.68701,[61.87,235.38,116.85],[-0.283459,-0.898491,-0.335209],[-0.0923989,-0.322331,0.942107],[-2.23139,-7.92565,-0.0522684]],[2.73706,[61.75,234.99,116.844],[-0.277719,-0.90075,-0.333949],[-0.0909993,-0.321394,0.942563],[-2.27932,-8.09264,-0.0483862]],[2.76318,[61.7,234.85,116.842],[-0.275873,-0.901469,-0.333538],[-0.0905338,-0.321092,0.942711],[-2.29585,-8.1506,-0.0400005]],[2.81299,[61.58,234.45,116.837],[-0.270793,-0.903457,-0.332321],[-0.0891422,-0.320201,0.943146],[-2.3426,-8.31613,-0.0379384]],[2.83716,[61.49,234.17,116.833],[-0.267663,-0.904698,-0.331478],[-0.0881947,-0.319581,0.943446],[-2.3735,-8.42675,-0.0347446]],[2.88721,[61.36,233.75,116.826],[-0.26309,-0.906651,-0.329799],[-0.0865989,-0.318269,0.944036],[-2.41893,-8.59103,-0.0334078]],[2.91309,[61.3199,233.61,116.824],[-0.261633,-0.907279,-0.32923],[-0.0860609,-0.317824,0.944236],[-2.43332,-8.64349,-0.0393667]],[2.96118,[61.1901,233.17,116.818],[-0.257574,-0.909009,-0.327656],[-0.084508,-0.316606,0.944785],[-2.47777,-8.80726,-0.0363485]],[2.98315,[61.1,232.88,116.814],[-0.255105,-0.91005,-0.326697],[-0.08352,-0.315873,0.945118],[-2.50596,-8.91243,-0.0448579]],[3.0271,[61.01,232.59,116.81],[-0.252804,-0.911016,-0.325791],[-0.0825656,-0.315187,0.945431],[-2.53496,-9.02183,-0.0398358]],[3.07007,[60.87,232.13,116.804],[-0.249699,-0.912317,-0.324543],[-0.0812157,-0.314247,0.945861],[-2.57682,-9.18189,-0.0425963]],[3.11304,[60.78,231.83,116.801],[-0.247878,-0.91308,-0.32379],[-0.0803829,-0.313684,0.946119],[-2.60502,-9.29091,-0.0365226]],[3.15601,[60.65,231.36,116.796],[-0.245475,-0.914089,-0.322775],[-0.0792318,-0.31293,0.946465],[-2.64583,-9.45031,-0.0384764]],[3.198,[60.5601,231.04,116.793],[-0.24407,-0.914679,-0.322169],[-0.0785283,-0.312483,0.946672],[-2.67237,-9.55533,-0.0424444]],[3.24219,[60.42,230.56,116.789],[-0.242264,-0.915434,-0.321385],[-0.0775837,-0.311913,0.946938],[-2.71226,-9.71432,-0.0431713]],[3.26416,[60.37,230.4,116.788],[-0.241734,-0.915655,-0.321154],[-0.0772965,-0.311747,0.947016],[-2.72543,-9.76733,-0.0429999]],[3.30615,[60.23,229.91,116.784],[-0.240329,-0.91624,-0.320539],[-0.0765108,-0.31131,0.947223],[-2.76461,-9.92565,-0.0441389]],[3.34814,[60.09,229.41,116.78],[-0.239166,-0.916724,-0.320026],[-0.0758279,-0.310951,0.947396],[-2.80318,-10.0831,-0.0467059]],[3.39014,[59.99,229.07,116.778],[-0.238504,-0.917,-0.319731],[-0.0754237,-0.310747,0.947495],[-2.82909,-10.1896,-0.0435476]],[3.4331,[59.85,228.56,116.775],[-0.237654,-0.917353,-0.319348],[-0.0748853,-0.310485,0.947624],[-2.86762,-10.3489,-0.0391809]],[3.47705,[59.75,228.21,116.773],[-0.237171,-0.917556,-0.319126],[-0.0745673,-0.310336,0.947698],[-2.89208,-10.4507,-0.0496464]],[3.521,[59.61,227.68,116.769],[-0.236551,-0.917816,-0.318837],[-0.0741448,-0.310142,0.947795],[-2.92932,-10.6062,-0.0559947]],[3.56421,[59.51,227.33,116.766],[-0.236209,-0.917942,-0.318728],[-0.0739156,-0.310086,0.94783],[-2.95106,-10.6976,-0.097392]],[3.6062,[59.36,226.79,116.76],[-0.236372,-0.917679,-0.319365],[-0.0740933,-0.310699,0.947616],[-2.98099,-10.8238,-0.192366]],[3.64819,[59.21,226.24,116.749],[-0.236986,-0.917172,-0.320365],[-0.0745733,-0.311612,0.947278],[-3.00793,-10.9376,-0.325996]],[3.69214,[59.11,225.87,116.737],[-0.237465,-0.916811,-0.321042],[-0.07494,-0.312221,0.947049],[-3.02451,-11.0075,-0.433803]],[3.73608,[58.96,225.32,116.712],[-0.238202,-0.91633,-0.321869],[-0.0754654,-0.312944,0.946769],[-3.04811,-11.1066,-0.613434]],[3.77905,[58.86,224.94,116.689],[-0.238683,-0.916067,-0.322259],[-0.0757782,-0.313268,0.946636],[-3.06299,-11.1689,-0.745064]],[3.82104,[58.7,224.38,116.646],[-0.239357,-0.915754,-0.322648],[-0.0761881,-0.313568,0.946504],[-3.08454,-11.2589,-0.953425]],[3.88403,[58.5,223.63,116.571],[-0.24009,-0.915514,-0.322787],[-0.0765736,-0.313616,0.946457],[-3.11207,-11.3732,-1.24859]],[3.90601,[58.45,223.44,116.549],[-0.240245,-0.915481,-0.322765],[-0.0766419,-0.313576,0.946465],[-3.11879,-11.401,-1.32472]],[3.95019,[58.29,222.86,116.475],[-0.240645,-0.9154,-0.322697],[-0.0768222,-0.313461,0.946489],[-3.13867,-11.4831,-1.55677]],[3.97217,[58.24,222.67,116.447],[-0.240757,-0.915367,-0.322707],[-0.0768842,-0.313456,0.946485],[-3.1452,-11.51,-1.6354]],[4.01611,[58.08,222.09,116.359],[-0.24101,-0.915074,-0.323348],[-0.0772102,-0.314035,0.946267],[-3.1646,-11.5899,-1.87393]],[4.06006,[57.98,221.7,116.295],[-0.24113,-0.91474,-0.324201],[-0.0775305,-0.314833,0.945975],[-3.17734,-11.6422,-2.03579]],[4.10303,[57.8199,221.12,116.189],[-0.24129,-0.914168,-0.325693],[-0.0780679,-0.316237,0.945462],[-3.19618,-11.7195,-2.2828]],[4.14502,[57.71,220.72,116.112],[-0.241391,-0.913775,-0.32672],[-0.0784361,-0.317203,0.945109],[-3.20851,-11.77,-2.45132]],[4.18799,[57.55,220.13,115.985],[-0.241519,-0.913177,-0.328292],[-0.0789888,-0.318684,0.944564],[-3.22683,-11.8448,-2.70736]],[4.23315,[57.39,219.53,115.848],[-0.241449,-0.912355,-0.330623],[-0.0796606,-0.320918,0.943751],[-3.24491,-11.9184,-2.96802]],[4.25513,[57.33,219.33,115.8],[-0.241356,-0.912012,-0.331634],[-0.0799166,-0.321897,0.943396],[-3.25092,-11.9429,-3.05537]],[4.29712,[57.17,218.72,115.649],[-0.240832,-0.910767,-0.335415],[-0.0807612,-0.325583,0.942058],[-3.26856,-12.0147,-3.32374]],[4.33911,[57.05,218.31,115.542],[-0.240313,-0.909842,-0.338285],[-0.0813211,-0.328402,0.941031],[-3.28012,-12.0617,-3.50631]],[4.38306,[56.89,217.7,115.369],[-0.239365,-0.908517,-0.342492],[-0.0820074,-0.332568,0.939507],[-3.29694,-12.1304,-3.78831]],[4.42602,[56.77,217.29,115.245],[-0.238685,-0.907738,-0.345023],[-0.0823381,-0.335096,0.938579],[-3.30797,-12.1755,-3.97948]],[4.46899,[56.61,216.67,115.046],[-0.237721,-0.906712,-0.34837],[-0.0827132,-0.338452,0.937341],[-3.3242,-12.2422,-4.27094]],[4.51318,[56.4401,216.05,114.831],[-0.236878,-0.905829,-0.35123],[-0.0830011,-0.341329,0.936272],[-3.34017,-12.3083,-4.56658]],[4.53516,[56.38,215.85,114.755],[-0.236625,-0.905561,-0.352091],[-0.0830846,-0.342196,0.935948],[-3.34557,-12.3307,-4.66444]],[4.5791,[56.27,215.43,114.6],[-0.236159,-0.90505,-0.353714],[-0.0832453,-0.343829,0.935335],[-3.3562,-12.3749,-4.86231]],[4.62305,[56.1,214.81,114.353],[-0.235549,-0.904343,-0.35592],[-0.0834711,-0.346046,0.934497],[-3.37225,-12.442,-5.15835]],[4.66699,[55.9301,214.18,114.091],[-0.235029,-0.90369,-0.357917],[-0.0836897,-0.34805,0.933733],[-3.38831,-12.5093,-5.45487]],[4.71118,[55.8101,213.76,113.908],[-0.234723,-0.903279,-0.359156],[-0.0838341,-0.34929,0.933257],[-3.3993,-12.5552,-5.65052]],[4.73315,[55.7,213.34,113.718],[-0.234446,-0.902885,-0.360323],[-0.0839766,-0.350458,0.932806],[-3.41026,-12.601,-5.84676]],[4.7771,[55.58,212.91,113.521],[-0.234196,-0.902514,-0.361414],[-0.0841141,-0.351548,0.932383],[-3.42136,-12.6475,-6.04167]],[4.82007,[55.41,212.28,113.213],[-0.233872,-0.902026,-0.362841],[-0.0842919,-0.352974,0.931828],[-3.43806,-12.7176,-6.33375]],[4.86401,[55.24,211.63,112.89],[-0.233602,-0.901616,-0.364032],[-0.0844358,-0.354166,0.931363],[-3.4549,-12.7885,-6.62478]],[4.90698,[55.12,211.21,112.667],[-0.233448,-0.901383,-0.364706],[-0.0845142,-0.354841,0.931099],[-3.46629,-12.8364,-6.81708]],[4.97314,[54.89,210.34,112.2],[-0.233195,-0.900972,-0.365881],[-0.0846613,-0.356015,0.930637],[-3.49019,-12.9372,-7.1897]],[4.99512,[54.83,210.13,112.079],[-0.233141,-0.900873,-0.36616],[-0.0847023,-0.356292,0.930527],[-3.49685,-12.9654,-7.27532]],[5.03906,[54.65,209.47,111.71],[-0.233,-0.900575,-0.366981],[-0.0848381,-0.357105,0.930203],[-3.51816,-13.0553,-7.51781]],[5.08301,[54.48,208.82,111.329],[-0.232882,-0.900276,-0.36779],[-0.0849927,-0.3579,0.929884],[-3.54158,-13.1543,-7.73741]],[5.12598,[54.36,208.37,111.069],[-0.232796,-0.900033,-0.368437],[-0.0851247,-0.358534,0.929627],[-3.55757,-13.2219,-7.8799]],[5.17017,[54.1801,207.71,110.673],[-0.232556,-0.899403,-0.370124],[-0.085455,-0.360191,0.928956],[-3.58373,-13.3324,-8.07018]],[5.19214,[54.12,207.48,110.54],[-0.232447,-0.899145,-0.370818],[-0.0855796,-0.360874,0.92868],[-3.59267,-13.3702,-8.13154]],[5.23608,[53.9401,206.81,110.133],[-0.232067,-0.898359,-0.372955],[-0.0859111,-0.362993,0.927823],[-3.6202,-13.4867,-8.30852]],[5.28003,[53.8101,206.35,109.858],[-0.231781,-0.897852,-0.374353],[-0.0860827,-0.364391,0.927259],[-3.63979,-13.5697,-8.41389]],[5.32397,[53.63,205.66,109.438],[-0.231322,-0.897141,-0.376334],[-0.0862579,-0.36639,0.926455],[-3.67038,-13.6995,-8.55985]],[5.36719,[53.4401,204.97,109.012],[-0.230879,-0.896345,-0.378498],[-0.0865121,-0.368555,0.925571],[-3.70148,-13.832,-8.70129]],[5.41113,[53.3199,204.5,108.725],[-0.230604,-0.895675,-0.380247],[-0.0868164,-0.370282,0.924854],[-3.72409,-13.9285,-8.77599]],[5.45508,[53.13,203.8,108.29],[-0.230255,-0.894549,-0.383098],[-0.0874318,-0.373067,0.923676],[-3.75773,-14.0723,-8.89242]],[5.521,[52.88,202.84,107.703],[-0.229908,-0.892917,-0.387092],[-0.0884792,-0.376922,0.922009],[-3.80475,-14.2736,-9.0292]],[5.54321,[52.8101,202.6,107.555],[-0.229844,-0.892512,-0.388065],[-0.0887624,-0.377855,0.9216],[-3.81703,-14.3261,-9.05916]],[5.58716,[52.62,201.87,107.107],[-0.229674,-0.891334,-0.390862],[-0.0896006,-0.380528,0.920418],[-3.85337,-14.4814,-9.15594]],[5.6311,[52.49,201.38,106.805],[-0.229563,-0.890578,-0.392647],[-0.0901362,-0.382235,0.919659],[-3.87837,-14.5879,-9.21535]],[5.67505,[52.29,200.64,106.35],[-0.22938,-0.889481,-0.395231],[-0.0908804,-0.384712,0.918552],[-3.91773,-14.7553,-9.28778]],[5.71899,[52.09,199.9,105.889],[-0.229168,-0.888456,-0.397652],[-0.0915221,-0.387047,0.917506],[-3.95682,-14.9213,-9.36701]],[5.76318,[51.96,199.39,105.581],[-0.229009,-0.887803,-0.3992],[-0.091897,-0.388549,0.916834],[-3.98454,-15.0388,-9.40485]],[5.78516,[51.83,198.89,105.271],[-0.228827,-0.887147,-0.400761],[-0.0922421,-0.390071,0.916153],[-4.01242,-15.1571,-9.4424]],[5.8291,[51.6901,198.38,104.96],[-0.228625,-0.886481,-0.402345],[-0.092567,-0.391624,0.915457],[-4.04059,-15.2765,-9.47828]],[5.87305,[51.49,197.6,104.491],[-0.228303,-0.885475,-0.404737],[-0.0930279,-0.393973,0.914402],[-4.08264,-15.4548,-9.53623]],[5.91699,[51.28,196.82,104.019],[-0.227968,-0.884484,-0.407086],[-0.0934501,-0.396289,0.913358],[-4.12511,-15.6351,-9.59278]],[5.96118,[51.14,196.29,103.703],[-0.22774,-0.883838,-0.408613],[-0.0937066,-0.397799,0.912674],[-4.15472,-15.761,-9.6188]],[5.98315,[51.0699,196.02,103.545],[-0.227622,-0.883517,-0.409373],[-0.0938257,-0.398552,0.912334],[-4.16953,-15.824,-9.63231]],[6.0271,[50.86,195.22,103.069],[-0.227243,-0.882551,-0.411661],[-0.0941385,-0.400832,0.911302],[-4.21435,-16.0148,-9.66996]],[6.07104,[50.65,194.41,102.591],[-0.22683,-0.881605,-0.413909],[-0.0943662,-0.403093,0.910281],[-4.26011,-16.2101,-9.70026]],[6.11306,[50.5,193.86,102.271],[-0.226538,-0.880988,-0.415379],[-0.0944668,-0.404582,0.909609],[-4.29027,-16.3392,-9.72494]],[6.15696,[50.28,193.03,101.791],[-0.226052,-0.880036,-0.417657],[-0.0945487,-0.406909,0.908563],[-4.3363,-16.5367,-9.75495]],[6.20116,[50.0601,192.19,101.31],[-0.225472,-0.87894,-0.420269],[-0.0945786,-0.409592,0.907353],[-4.38255,-16.7362,-9.78363]],[6.22316,[49.99,191.91,101.149],[-0.225258,-0.878542,-0.421216],[-0.0945749,-0.410568,0.906912],[-4.39822,-16.804,-9.79082]],[6.26706,[49.77,191.06,100.668],[-0.224535,-0.877227,-0.424331],[-0.0945097,-0.413793,0.905452],[-4.44493,-17.0073,-9.81577]],[6.31106,[49.62,190.48,100.347],[-0.224005,-0.87632,-0.426478],[-0.0943778,-0.416037,0.904437],[-4.47627,-17.1445,-9.83062]],[6.35496,[49.39,189.61,99.864],[-0.223162,-0.874982,-0.429657],[-0.0940237,-0.419396,0.902921],[-4.52349,-17.3529,-9.85078]],[6.39916,[49.24,189.03,99.541],[-0.222594,-0.874137,-0.431668],[-0.0937025,-0.421544,0.901954],[-4.55481,-17.4929,-9.86508]],[6.42116,[49.08,188.43,99.218],[-0.22204,-0.873341,-0.433558],[-0.0933437,-0.423576,0.901038],[-4.58675,-17.6365,-9.87283]],[6.46506,[48.9301,187.84,98.894],[-0.221502,-0.872585,-0.435352],[-0.0929636,-0.425513,0.900164],[-4.61734,-17.7754,-9.89255]],[6.48806,[48.77,187.24,98.569],[-0.220967,-0.871801,-0.437192],[-0.0925988,-0.427493,0.899264],[-4.64849,-17.918,-9.90596]],[6.53196,[48.62,186.63,98.244],[-0.220427,-0.87097,-0.439118],[-0.0922543,-0.429557,0.898315],[-4.6797,-18.0621,-9.9177]],[6.57616,[48.38,185.72,97.757],[-0.219605,-0.869646,-0.442142],[-0.0917448,-0.432787,0.896815],[-4.72612,-18.2788,-9.93744]],[6.62016,[48.14,184.79,97.269],[-0.218746,-0.868232,-0.445335],[-0.091173,-0.436205,0.895216],[-4.77265,-18.4991,-9.95395]],[6.66306,[47.98,184.16,96.944],[-0.218152,-0.867259,-0.447517],[-0.0907312,-0.438552,0.894114],[-4.80361,-18.6474,-9.96425]],[6.70706,[47.74,183.22,96.454],[-0.217257,-0.865802,-0.450762],[-0.0899953,-0.442058,0.892461],[-4.8493,-18.869,-9.98498]],[6.75096,[47.5699,182.58,96.128],[-0.216676,-0.864862,-0.452842],[-0.0894808,-0.444314,0.891391],[-4.8803,-19.0221,-9.99126]],[6.77416,[47.41,181.94,95.8],[-0.216121,-0.863974,-0.454798],[-0.0889632,-0.446443,0.890378],[-4.91163,-19.1782,-9.99303]],[6.81816,[47.16,180.96,95.308],[-0.215362,-0.862773,-0.457429],[-0.0882196,-0.449316,0.889006],[-4.95721,-19.4081,-10.0071]],[6.86206,[46.99,180.31,94.979],[-0.214914,-0.862078,-0.458947],[-0.0877637,-0.450979,0.888209],[-4.98776,-19.5645,-10.0127]],[6.90596,[46.74,179.32,94.484],[-0.214331,-0.861196,-0.460872],[-0.0871638,-0.453091,0.887192],[-5.03337,-19.8008,-10.0203]],[6.95016,[46.5699,178.65,94.153],[-0.213996,-0.860704,-0.461946],[-0.0868201,-0.454271,0.886623],[-5.06355,-19.9587,-10.0261]],[6.97216,[46.4,177.98,93.822],[-0.213699,-0.860277,-0.462878],[-0.0865156,-0.455296,0.886127],[-5.0931,-20.1145,-10.0369]],[7.01616,[46.23,177.3,93.49],[-0.213435,-0.859907,-0.463686],[-0.0862457,-0.456185,0.885696],[-5.12359,-20.2762,-10.0371]],[7.06006,[45.97,176.28,92.991],[-0.21309,-0.859445,-0.464701],[-0.0858972,-0.457304,0.885153],[-5.16889,-20.518,-10.04]],[7.10396,[45.71,175.24,92.491],[-0.212796,-0.859075,-0.465518],[-0.085606,-0.458206,0.884714],[-5.21358,-20.7585,-10.0471]],[7.17016,[45.36,173.84,91.8236],[-0.212469,-0.858698,-0.466363],[-0.0852905,-0.459141,0.884259],[-5.27336,-21.0822,-10.052]],[7.19316,[45.28,173.49,91.6567],[-0.212397,-0.858621,-0.466537],[-0.0852226,-0.459335,0.884165],[-5.28874,-21.1657,-10.0483]],[7.23706,[45.01,172.42,91.1552],[-0.212211,-0.858446,-0.466943],[-0.0850757,-0.459783,0.883947],[-5.33285,-21.4062,-10.0574]],[7.28096,[44.83,171.71,90.8199],[-0.212139,-0.858484,-0.466907],[-0.0850184,-0.459757,0.883965],[-5.3627,-21.5694,-10.0582]],[7.30416,[44.65,170.98,90.4839],[-0.212101,-0.858604,-0.466703],[-0.0850193,-0.459546,0.884075],[-5.39234,-21.7316,-10.0608]],[7.34816,[44.47,170.26,90.1477],[-0.21209,-0.858776,-0.466392],[-0.0850889,-0.459209,0.884243],[-5.42239,-21.896,-10.0589]],[7.39206,[44.2,169.15,89.6431],[-0.212111,-0.859076,-0.465829],[-0.0853246,-0.458575,0.88455],[-5.46739,-22.142,-10.0566]],[7.41506,[44.11,168.78,89.4749],[-0.212126,-0.859182,-0.465628],[-0.0854353,-0.458342,0.88466],[-5.48261,-22.225,-10.0538]],[7.46216,[43.83,167.67,88.9702],[-0.212175,-0.859499,-0.465019],[-0.0857854,-0.457635,0.884992],[-5.52723,-22.4676,-10.0566]],[7.48606,[43.74,167.29,88.8019],[-0.21219,-0.859597,-0.464832],[-0.0859035,-0.457414,0.885095],[-5.54189,-22.5469,-10.0602]],[7.53196,[43.46,166.16,88.2974],[-0.21223,-0.859861,-0.464325],[-0.0862448,-0.456814,0.885371],[-5.58728,-22.7918,-10.057]],[7.55516,[43.27,165.39,87.9612],[-0.212252,-0.860012,-0.464036],[-0.086475,-0.456463,0.88553],[-5.61687,-22.9508,-10.0626]],[7.60106,[43.08,164.63,87.625],[-0.21227,-0.860145,-0.463779],[-0.0867083,-0.456145,0.885671],[-5.6471,-23.1125,-10.0623]],[7.62406,[42.89,163.85,87.2889],[-0.212284,-0.860265,-0.463552],[-0.0869356,-0.455857,0.885797],[-5.67744,-23.274,-10.0623]],[7.67116,[42.61,162.68,86.7848],[-0.212301,-0.860433,-0.463231],[-0.087273,-0.455448,0.885974],[-5.7226,-23.5135,-10.0668]],[7.71706,[42.42,161.89,86.4486],[-0.212313,-0.860546,-0.463015],[-0.0875048,-0.455172,0.886093],[-5.7532,-23.675,-10.0655]],[7.73906,[42.22,161.1,86.1125],[-0.212325,-0.86066,-0.462798],[-0.087737,-0.454894,0.886213],[-5.78413,-23.8377,-10.0617]],[7.78196,[42.03,160.3,85.7764],[-0.212336,-0.860775,-0.462578],[-0.0879671,-0.454614,0.886334],[-5.81466,-23.9979,-10.0624]],[7.82616,[41.74,159.1,85.2724],[-0.212352,-0.860951,-0.462245],[-0.0883101,-0.45419,0.886517],[-5.86083,-24.2391,-10.061]],[7.84816,[41.64,158.69,85.1044],[-0.212356,-0.861009,-0.462135],[-0.0884214,-0.454051,0.886577],[-5.87636,-24.3199,-10.0595]],[7.89206,[41.34,157.47,84.6006],[-0.212363,-0.861167,-0.461837],[-0.0887273,-0.453672,0.886741],[-5.92274,-24.5606,-10.058]],[7.93606,[41.05,156.23,84.0969],[-0.212359,-0.861306,-0.46158],[-0.0889779,-0.453348,0.886881],[-5.96906,-24.7999,-10.0585]],[7.97996,[40.85,155.4,83.7613],[-0.212352,-0.86139,-0.461427],[-0.0891145,-0.453158,0.886965],[-6.00026,-24.9606,-10.056]],[8.02416,[40.54,154.15,83.2579],[-0.212333,-0.861506,-0.461219],[-0.0892816,-0.452904,0.887078],[-6.04693,-25.2003,-10.0544]],[8.04616,[40.4401,153.73,83.0902],[-0.212326,-0.861542,-0.461154],[-0.0893285,-0.452827,0.887113],[-6.06276,-25.2814,-10.0513]],[8.09006,[40.14,152.45,82.5874],[-0.212277,-0.861544,-0.461173],[-0.0894511,-0.452815,0.887106],[-6.10873,-25.5168,-10.0574]],[8.13406,[39.83,151.17,82.0872],[-0.212114,-0.861104,-0.462068],[-0.0893909,-0.453748,0.886635],[-6.15534,-25.7551,-10.0574]],[8.17796,[39.63,150.3,81.7546],[-0.211966,-0.86065,-0.462982],[-0.0893778,-0.454689,0.886154],[-6.18634,-25.9138,-10.058]],[8.20116,[39.52,149.87,81.5884],[-0.211896,-0.860425,-0.463432],[-0.0895029,-0.455122,0.885919],[-6.20206,-25.9945,-10.0561]],[8.26906,[39,147.68,80.7561],[-0.21158,-0.859392,-0.465488],[-0.0909608,-0.456889,0.884861],[-6.27884,-26.3884,-10.0667]],[8.26906,[39,147.68,80.7561],[-0.21158,-0.859392,-0.465488],[-0.0909608,-0.456889,0.884861],[-6.27884,-26.3884,-10.0667]],[8.31296,[38.79,146.79,80.423],[-0.21146,-0.858981,-0.4663],[-0.0918331,-0.457517,0.884446],[-6.31047,-26.5494,-10.0653]],[8.35716,[38.47,145.46,79.9237],[-0.211272,-0.858312,-0.467617],[-0.0933765,-0.458504,0.883773],[-6.35826,-26.7904,-10.065]],[8.38016,[38.36,145.01,79.7573],[-0.211206,-0.858072,-0.468086],[-0.0939284,-0.458856,0.883532],[-6.3742,-26.8698,-10.067]],[8.42606,[38.04,143.65,79.2585],[-0.210997,-0.857289,-0.469613],[-0.095596,-0.460029,0.882743],[-6.42333,-27.1126,-10.0646]],[8.44896,[37.9301,143.2,79.0923],[-0.210923,-0.857009,-0.470156],[-0.0961551,-0.460454,0.88246],[-6.43936,-27.1908,-10.0696]],[8.49516,[37.6,141.83,78.5934],[-0.210701,-0.856159,-0.471801],[-0.0977746,-0.461758,0.8816],[-6.4889,-27.4306,-10.0747]],[8.51806,[37.49,141.37,78.4271],[-0.210629,-0.855884,-0.472333],[-0.0982798,-0.462185,0.881321],[-6.50597,-27.5122,-10.0738]],[8.56416,[37.17,139.98,77.9279],[-0.210426,-0.855128,-0.473789],[-0.0996408,-0.463356,0.880552],[-6.55731,-27.7559,-10.0736]],[8.58716,[36.95,139.05,77.5945],[-0.210301,-0.854672,-0.474667],[-0.100448,-0.464065,0.880087],[-6.59119,-27.9151,-10.0806]],[8.63306,[36.72,138.11,77.262],[-0.210144,-0.854068,-0.475822],[-0.101271,-0.465056,0.87947],[-6.62643,-28.0794,-10.0783]],[8.65596,[36.5,137.17,76.9306],[-0.20995,-0.853298,-0.477286],[-0.102153,-0.46635,0.878682],[-6.66221,-28.2451,-10.0741]],[8.70216,[36.16,135.74,76.4341],[-0.209618,-0.851961,-0.479816],[-0.10359,-0.468606,0.877312],[-6.7143,-28.4847,-10.0864]],[8.72506,[36.05,135.26,76.2687],[-0.209499,-0.851479,-0.480722],[-0.104098,-0.469415,0.87682],[-6.73214,-28.5663,-10.0869]],[8.76906,[35.71,133.82,75.7728],[-0.209122,-0.849957,-0.483571],[-0.105703,-0.47196,0.87526],[-6.78592,-28.8102,-10.093]],[8.81296,[35.48,132.85,75.4424],[-0.208856,-0.848876,-0.485581],[-0.106822,-0.473757,0.874153],[-6.82265,-28.9755,-10.0937]],[8.85716,[35.13,131.39,74.9477],[-0.208411,-0.847064,-0.488925],[-0.10856,-0.476778,0.872294],[-6.87841,-29.2243,-10.0957]],[8.88016,[35.02,130.9,74.783],[-0.208255,-0.846428,-0.490092],[-0.109133,-0.47784,0.871642],[-6.89709,-29.3069,-10.098]],[8.92606,[34.67,129.41,74.29],[-0.207718,-0.844226,-0.494101],[-0.110948,-0.481526,0.869381],[-6.95373,-29.5561,-10.104]],[8.94796,[34.55,128.92,74.1264],[-0.207503,-0.843337,-0.495708],[-0.111632,-0.483013,0.868468],[-6.97259,-29.6385,-10.1087]],[8.99216,[34.2,127.41,73.6355],[-0.206831,-0.840572,-0.500659],[-0.113773,-0.487588,0.865629],[-7.02943,-29.8856,-10.1247]],[9.01416,[34.08,126.91,73.4712],[-0.206623,-0.839725,-0.502164],[-0.114468,-0.488969,0.864758],[-7.04811,-29.9661,-10.1351]],[9.05806,[33.72,125.4,72.9754],[-0.20607,-0.837489,-0.506109],[-0.116457,-0.492545,0.86246],[-7.10454,-30.2081,-10.1673]],[9.10206,[33.36,123.87,72.4754],[-0.205613,-0.835669,-0.509294],[-0.118296,-0.495374,0.860587],[-7.16119,-30.4484,-10.2077]],[9.14596,[33.12,122.85,72.14],[-0.205355,-0.834657,-0.511054],[-0.119405,-0.496915,0.859545],[-7.20003,-30.6118,-10.2307]],[9.19016,[32.75,121.3,71.634],[-0.205032,-0.833404,-0.513225],[-0.120855,-0.498795,0.858253],[-7.25933,-30.8592,-10.2632]],[9.21316,[32.63,120.79,71.4646],[-0.204941,-0.833053,-0.513831],[-0.121285,-0.499313,0.85789],[-7.27949,-30.9427,-10.2731]],[9.25706,[32.26,119.23,70.9548],[-0.20471,-0.832177,-0.51534],[-0.122437,-0.500584,0.856986],[-7.34126,-31.1974,-10.2958]],[9.30106,[31.89,117.65,70.4429],[-0.204536,-0.831536,-0.516443],[-0.1234,-0.501484,0.856321],[-7.40499,-31.4581,-10.3101]],[9.36816,[31.39,115.54,69.7583],[-0.204381,-0.830986,-0.517389],[-0.12443,-0.502204,0.85575],[-7.49332,-31.8169,-10.3111]],[9.36816,[31.39,115.54,69.7583],[-0.204381,-0.830986,-0.517389],[-0.12443,-0.502204,0.85575],[-7.49332,-31.8169,-10.3111]],[9.41206,[31.14,114.47,69.4156],[-0.204335,-0.830838,-0.517644],[-0.124849,-0.502363,0.855596],[-7.53893,-32.0011,-10.3036]],[9.45706,[30.76,112.87,68.9014],[-0.204303,-0.830761,-0.517779],[-0.125369,-0.502375,0.855513],[-7.60869,-32.2818,-10.2852]],[9.47996,[30.64,112.33,68.7301],[-0.2043,-0.830768,-0.517771],[-0.125517,-0.502329,0.855518],[-7.63245,-32.377,-10.2762]],[9.52616,[30.25,110.7,68.2164],[-0.204313,-0.830865,-0.517609],[-0.125915,-0.502065,0.855615],[-7.70286,-32.6587,-10.2556]],[9.54906,[30.12,110.15,68.0452],[-0.204326,-0.830931,-0.517499],[-0.126039,-0.50192,0.855681],[-7.72642,-32.7526,-10.2485]],[9.59526,[29.73,108.51,67.5318],[-0.204395,-0.831251,-0.516957],[-0.126364,-0.501282,0.856007],[-7.79631,-33.0307,-10.2331]],[9.61816,[29.47,107.4,67.1894],[-0.204452,-0.831507,-0.516523],[-0.126551,-0.500789,0.856268],[-7.84194,-33.2117,-10.2299]],[9.66406,[29.21,106.29,66.8473],[-0.204512,-0.831774,-0.516069],[-0.12672,-0.500279,0.856541],[-7.88922,-33.3987,-10.2156]],[9.68706,[28.95,105.18,66.5054],[-0.204576,-0.832049,-0.515599],[-0.126882,-0.499755,0.856823],[-7.93473,-33.5782,-10.2137]],[9.73316,[28.55,103.49,65.9921],[-0.204727,-0.832679,-0.514522],[-0.12709,-0.498593,0.857469],[-8.00582,-33.8578,-10.1918]],[9.75606,[28.41,102.93,65.8205],[-0.204805,-0.832993,-0.513982],[-0.127135,-0.498026,0.857792],[-8.02767,-33.9435,-10.197]],[9.80006,[28.01,101.22,65.3042],[-0.20511,-0.834212,-0.511879],[-0.127234,-0.495834,0.859046],[-8.09636,-34.212,-10.1914]],[9.84396,[27.74,100.08,64.9596],[-0.20536,-0.835197,-0.51017],[-0.127296,-0.494057,0.86006],[-8.14337,-34.3951,-10.1791]],[9.91016,[27.1901,97.79,64.265],[-0.206162,-0.8383,-0.504727],[-0.127118,-0.488492,0.863259],[-8.23543,-34.7512,-10.1663]],[9.93306,[26.92,96.6396,63.9138],[-0.206774,-0.840637,-0.500574],[-0.126691,-0.484318,0.86567],[-8.28298,-34.9338,-10.1484]],[9.97896,[26.65,95.48,63.563],[-0.207425,-0.843109,-0.496128],[-0.126128,-0.479876,0.868223],[-8.33458,-35.1309,-10.1009]],[10.001,[26.37,94.3101,63.2153],[-0.208038,-0.845415,-0.491928],[-0.125532,-0.475695,0.870606],[-8.38976,-35.3406,-10.0262]],[10.0452,[26.09,93.1396,62.8714],[-0.208614,-0.84757,-0.487961],[-0.124896,-0.471765,0.872834],[-8.44784,-35.5603,-9.92811]],[10.0672,[25.8101,91.96,62.5312],[-0.209191,-0.84972,-0.483958],[-0.124113,-0.467835,0.875058],[-8.5085,-35.7889,-9.8088]],[10.1111,[25.53,90.77,62.1949],[-0.209784,-0.851929,-0.4798],[-0.123151,-0.463789,0.877345],[-8.57053,-36.0221,-9.67592]],[10.1551,[25.1,88.9697,61.699],[-0.210693,-0.85532,-0.473325],[-0.12143,-0.457544,0.880857],[-8.66614,-36.3809,-9.4504]],[10.199,[24.67,87.1597,61.2119],[-0.211755,-0.8593,-0.465578],[-0.119308,-0.450089,0.884977],[-8.76506,-36.7523,-9.18639]],[10.2222,[24.52,86.5498,61.0512],[-0.212162,-0.860827,-0.462562],[-0.118539,-0.447172,0.886558],[-8.79768,-36.8748,-9.09859]],[10.2671,[24.08,84.7197,60.576],[-0.213523,-0.865927,-0.452304],[-0.116557,-0.437094,0.891832],[-8.90046,-37.2612,-8.7824]],[10.2891,[23.9401,84.1001,60.4201],[-0.214019,-0.867769,-0.448522],[-0.116128,-0.433302,0.893736],[-8.9344,-37.3887,-8.67639]],[10.3321,[23.49,82.25,59.9626],[-0.21562,-0.8736,-0.436269],[-0.115793,-0.420751,0.899756],[-9.04332,-37.7942,-8.28836]],[10.376,[23.1901,81,59.6669],[-0.216775,-0.877671,-0.427436],[-0.115826,-0.411632,0.90396],[-9.11811,-38.0673,-8.00715]],[10.4183,[22.74,79.1099,59.2413],[-0.218613,-0.883931,-0.41337],[-0.115248,-0.397264,0.910439],[-9.23806,-38.4929,-7.51875]],[10.4622,[22.4301,77.8398,58.9706],[-0.21987,-0.888096,-0.40366],[-0.114266,-0.387492,0.914764],[-9.31982,-38.7755,-7.17314]],[10.5061,[21.97,75.9199,58.5868],[-0.221802,-0.894367,-0.388474],[-0.111916,-0.372415,0.921294],[-9.44679,-39.2053,-6.60662]],[10.5481,[21.5,73.98,58.2321],[-0.223756,-0.900585,-0.372666],[-0.109323,-0.356757,0.927778],[-9.57911,-39.643,-5.96423]],[10.5901,[21.1801,72.6699,58.0116],[-0.225067,-0.904665,-0.361838],[-0.108033,-0.345905,0.932029],[-9.66015,-39.9067,-5.57747]],[10.6331,[20.7,70.6997,57.7058],[-0.227028,-0.910559,-0.345457],[-0.106965,-0.32926,0.938161],[-9.7803,-40.2885,-4.98357]],[10.6751,[20.38,69.3701,57.519],[-0.228262,-0.914091,-0.335161],[-0.106917,-0.318633,0.941829],[-9.85383,-40.5148,-4.63422]],[10.719,[19.88,67.3599,57.2671],[-0.22989,-0.918468,-0.321817],[-0.107459,-0.304696,0.946368],[-9.96171,-40.8347,-4.12264]],[10.7622,[19.38,65.3301,57.0471],[-0.231239,-0.921814,-0.311106],[-0.108122,-0.293443,0.949843],[-10.0667,-41.1283,-3.63791]],[10.8042,[19.05,63.96,56.9159],[-0.232007,-0.923596,-0.305192],[-0.108547,-0.287211,0.951697],[-10.1306,-41.3,-3.36943]],[10.8462,[18.54,61.8999,56.7394],[-0.233001,-0.925759,-0.297794],[-0.109129,-0.279397,0.953954],[-10.2234,-41.5396,-2.99538]],[10.8882,[18.2,60.52,56.633],[-0.233573,-0.926927,-0.293684],[-0.109466,-0.275051,0.955178],[-10.2793,-41.6793,-2.79932]],[10.9312,[17.6801,58.4399,56.4877],[-0.234322,-0.928364,-0.288503],[-0.109852,-0.26958,0.956692],[-10.3606,-41.8766,-2.52863]],[10.9971,[16.99,55.6499,56.3166],[-0.235156,-0.929831,-0.283046],[-0.110184,-0.263832,0.958255],[-10.4634,-42.1183,-2.21789]],[11.0181,[16.8199,54.9497,56.2772],[-0.235352,-0.930163,-0.281792],[-0.110161,-0.262538,0.958613],[-10.4871,-42.1729,-2.15764]],[11.0601,[16.29,52.8398,56.1639],[-0.23602,-0.931351,-0.277273],[-0.109055,-0.258146,0.959931],[-10.5621,-42.3434,-1.94327]],[11.1021,[15.9401,51.4399,56.0903],[-0.236592,-0.932453,-0.273049],[-0.106992,-0.254316,0.961185],[-10.6088,-42.4483,-1.82597]],[11.1441,[15.42,49.3198,55.9817],[-0.237644,-0.934637,-0.264534],[-0.101224,-0.247025,0.963708],[-10.678,-42.6041,-1.64231]],[11.188,[15.0699,47.9097,55.9109],[-0.238421,-0.936364,-0.257638],[-0.0959397,-0.241282,0.965701],[-10.7217,-42.7041,-1.52361]],[11.2322,[14.54,45.79,55.8093],[-0.239615,-0.939231,-0.245822],[-0.0862751,-0.231597,0.968978],[-10.7854,-42.8544,-1.32524]],[11.2742,[14.1901,44.3701,55.7455],[-0.240385,-0.941265,-0.237139],[-0.0787148,-0.224595,0.971268],[-10.8248,-42.9541,-1.17359]],[11.3162,[13.67,42.2397,55.6569],[-0.241441,-0.944414,-0.223133],[-0.0665882,-0.213271,0.974721],[-10.879,-43.0987,-0.944758]],[11.3582,[13.3101,40.8101,55.6037],[-0.242057,-0.946535,-0.213261],[-0.0586193,-0.205129,0.976978],[-10.911,-43.1961,-0.759047]],[11.4012,[12.78,38.6699,55.5343],[-0.24284,-0.949685,-0.197804],[-0.0476548,-0.191982,0.980241],[-10.9535,-43.3373,-0.474739]],[11.4451,[12.24,36.52,55.4795],[-0.243463,-0.952733,-0.181726],[-0.0382898,-0.177777,0.983325],[-10.9889,-43.478,-0.131464]],[11.4891,[11.88,35.0898,55.4518],[-0.243795,-0.954677,-0.170747],[-0.0324786,-0.167924,0.985265],[-11.0083,-43.5658,0.101195]],[11.532,[11.34,32.9297,55.426],[-0.244176,-0.957433,-0.153949],[-0.0246424,-0.152577,0.987984],[-11.0327,-43.6937,0.484867]],[11.574,[10.98,31.48,55.4198],[-0.244362,-0.959145,-0.142574],[-0.0204404,-0.141903,0.989669],[-11.0449,-43.7749,0.777877]],[11.6163,[10.4301,29.3101,55.4286],[-0.244573,-0.961501,-0.1253],[-0.0162218,-0.125149,0.992005],[-11.0591,-43.8868,1.21345]],[11.6412,[10.25,28.5898,55.4364],[-0.244635,-0.962224,-0.119495],[-0.0154699,-0.119351,0.992732],[-11.0627,-43.9215,1.37481]],[11.6932,[9.69006,26.4199,55.4762],[-0.244827,-0.964173,-0.102123],[-0.0154439,-0.101437,0.994722],[-11.072,-44.0166,1.84692]],[11.7161,[9.31995,24.96,55.5185],[-0.24498,-0.965217,-0.0913293],[-0.0172659,-0.0898415,0.995807],[-11.0781,-44.0728,2.19154]],[11.7662,[8.77002,22.7798,55.609],[-0.24526,-0.966348,-0.0775752],[-0.0218208,-0.0744962,0.996982],[-11.0885,-44.1413,2.69342]],[11.792,[8.57996,22.0498,55.6464],[-0.245367,-0.966625,-0.0736925],[-0.0236016,-0.0700374,0.997265],[-11.0923,-44.1597,2.84444]],[11.8431,[8.02002,19.8501,55.7794],[-0.245717,-0.967241,-0.0637748],[-0.0289538,-0.0584389,0.997871],[-11.1076,-44.2056,3.3172]],[11.8672,[7.65002,18.3799,55.8837],[-0.245967,-0.967518,-0.0583816],[-0.032076,-0.0520741,0.998128],[-11.1204,-44.2278,3.61417]],[11.917,[7.08997,16.1797,56.06],[-0.246346,-0.967799,-0.0517486],[-0.0358793,-0.0442507,0.998376],[-11.141,-44.25,3.98937]],[11.9441,[6.90002,15.4497,56.1234],[-0.246471,-0.967866,-0.0498645],[-0.0369405,-0.0420323,0.998433],[-11.1478,-44.2548,4.09151]],[11.9913,[6.33997,13.2397,56.3251],[-0.246846,-0.968021,-0.0447499],[-0.0396202,-0.0360587,0.998564],[-11.1697,-44.2639,4.38036]],[12.0122,[5.96997,11.77,56.4657],[-0.247123,-0.968118,-0.0409586],[-0.0411008,-0.0317589,0.99865],[-11.1845,-44.266,4.54378]],[12.0762,[5.41003,9.56006,56.6804],[-0.247629,-0.968279,-0.0334071],[-0.0421565,-0.02368,0.99883],[-11.2061,-44.2632,4.73642]],[12.0972,[5.03003,8.1001,56.8255],[-0.248027,-0.968376,-0.0270379],[-0.0422343,-0.0170746,0.998962],[-11.2207,-44.2586,4.85908]],[12.1392,[4.66003,6.62988,56.9722],[-0.248462,-0.96844,-0.0197905],[-0.0417692,-0.00970042,0.99908],[-11.2351,-44.2509,4.97276]],[12.1822,[4.09998,4.42969,57.1972],[-0.249159,-0.968433,-0.0075886],[-0.0399113,0.0024387,0.9992],[-11.2576,-44.2335,5.17257]],[12.2271,[3.72998,2.96973,57.3511],[-0.249632,-0.96834,0.00127962],[-0.0375435,0.0109989,0.999234],[-11.2722,-44.2175,5.31023]],[12.25,[3.35999,1.5,57.5093],[-0.250093,-0.968164,0.0106218],[-0.034293,0.019821,0.999215],[-11.287,-44.1975,5.47436]],[12.3001,[2.80005,-0.689941,57.7556],[-0.250728,-0.967725,0.0253635],[-0.0282214,0.0334961,0.99904],[-11.3072,-44.1596,5.73943]],[12.3262,[2.62,-1.41992,57.8403],[-0.250919,-0.967529,0.0304388],[-0.025993,0.0381678,0.998933],[-11.3132,-44.1451,5.82546]],[12.376,[2.06006,-3.62012,58.1047],[-0.251418,-0.966782,0.046052],[-0.0188876,0.052472,0.998444],[-11.329,-44.0917,6.14335]],[12.4002,[1.69006,-5.08008,58.29],[-0.251681,-0.966146,0.0567274],[-0.0140031,0.0622433,0.997963],[-11.3369,-44.0476,6.38949]],[12.4502,[1.13,-7.26025,58.5828],[-0.251963,-0.964976,0.0730476],[-0.0066243,0.0772009,0.996993],[-11.3439,-43.9709,6.76988]],[12.4771,[0.940063,-7.99023,58.6845],[-0.252028,-0.964526,0.0785542],[-0.00418779,0.0822608,0.996602],[-11.3451,-43.9434,6.89019]],[12.5281,[0.380005,-10.1699,59.0039],[-0.252129,-0.962997,0.0952272],[0.00295507,0.0976397,0.995217],[-11.3439,-43.8462,7.3111]],[12.552,[0.0100098,-11.6201,59.2291],[-0.252123,-0.961823,0.106444],[0.00755294,0.108038,0.994118],[-11.3392,-43.7703,7.62081]],[12.6021,[-0.550049,-13.8003,59.5855],[-0.252007,-0.959828,0.123379],[0.0143716,0.123767,0.992207],[-11.3268,-43.6449,8.0819]],[12.6282,[-0.73999,-14.52,59.7095],[-0.251938,-0.959101,0.129045],[0.0167622,0.129002,0.991503],[-11.3216,-43.6016,8.22452]],[12.678,[-1.29004,-16.6802,60.0979],[-0.251632,-0.956733,0.146089],[0.0248511,0.144509,0.989191],[-11.3002,-43.4533,8.70783]],[12.7022,[-1.66003,-18.1201,60.3707],[-0.251329,-0.955005,0.157475],[0.0313364,0.154584,0.987482],[-11.2809,-43.3419,9.05269]],[12.751,[-2.21997,-20.27,60.8009],[-0.250693,-0.952197,0.17457],[0.0423657,0.169364,0.984642],[-11.2447,-43.1639,9.55395]],[12.7771,[-2.40002,-20.9902,60.9499],[-0.250427,-0.951204,0.180268],[0.0464532,0.174181,0.983617],[-11.2312,-43.1039,9.70662]],[12.8282,[-2.94995,-23.1299,61.4145],[-0.249446,-0.948065,0.197352],[0.0596157,0.188373,0.980286],[-11.1799,-42.904,10.2152]],[12.8521,[-3.30994,-24.5503,61.7389],[-0.248638,-0.945854,0.208661],[0.0685533,0.197701,0.977862],[-11.1369,-42.7584,10.5718]],[12.9012,[-3.85999,-26.6699,62.2471],[-0.247197,-0.942342,0.225577],[0.0812821,0.211815,0.973924],[-11.0626,-42.5328,11.0824]],[12.927,[-4.04004,-27.3799,62.4224],[-0.246671,-0.941151,0.23106],[0.0851535,0.216456,0.972572],[-11.0366,-42.4582,11.2362]],[12.9771,[-4.57996,-29.4902,62.9685],[-0.245062,-0.937709,0.246265],[0.0950098,0.22956,0.968646],[-10.945,-42.2135,11.7424]],[13.001,[-4.93994,-30.8901,63.3498],[-0.244044,-0.935661,0.254912],[0.0997492,0.237246,0.966315],[-10.8767,-42.0402,12.0857]],[13.0511,[-5.47998,-32.98,63.948],[-0.242779,-0.933266,0.264712],[0.103454,0.246411,0.963628],[-10.773,-41.7832,12.5461]],[13.0772,[-5.66003,-33.6699,64.1537],[-0.242428,-0.932628,0.267272],[0.103929,0.24894,0.962927],[-10.7399,-41.7015,12.6754]],[13.1512,[-6.55005,-37.1201,65.2188],[-0.240993,-0.930084,0.277249],[0.104161,0.259232,0.960182],[-10.577,-41.2948,13.2591]],[13.1512,[-6.55005,-37.1201,65.2188],[-0.240993,-0.930084,0.277249],[0.104161,0.259232,0.960182],[-10.577,-41.2948,13.2591]],[13.2012,[-7.07996,-39.1802,65.8805],[-0.240341,-0.928978,0.281489],[0.104,0.263676,0.958988],[-10.4909,-41.0728,13.4984]],[13.2271,[-7.25,-39.8604,66.1039],[-0.240151,-0.928666,0.282679],[0.103954,0.264924,0.95865],[-10.4646,-41.0041,13.5563]],[13.2771,[-7.77002,-41.8999,66.7803],[-0.239641,-0.927861,0.285738],[0.103864,0.268124,0.957769],[-10.3884,-40.8026,13.7044]],[13.3001,[-8.12,-43.2603,67.2345],[-0.239307,-0.927324,0.287753],[0.103981,0.270184,0.957177],[-10.341,-40.6752,13.7731]],[13.3501,[-8.63,-45.2803,67.9157],[-0.238667,-0.926141,0.292063],[0.104715,0.274457,0.955881],[-10.2751,-40.4967,13.8265]],[13.3772,[-8.80005,-45.96,68.142],[-0.238392,-0.925583,0.294051],[0.105287,0.276364,0.955268],[-10.2545,-40.4404,13.8319]],[13.4261,[-9.31995,-47.9702,68.818],[-0.237368,-0.923383,0.301694],[0.107896,0.283588,0.952857],[-10.1921,-40.2693,13.8483]],[13.4502,[-9.65002,-49.3101,69.2669],[-0.236532,-0.921525,0.307966],[0.110471,0.289399,0.950813],[-10.1491,-40.1512,13.8654]],[13.501,[-10.16,-51.3101,69.9384],[-0.235067,-0.918223,0.318762],[0.115082,0.299352,0.947177],[-10.082,-39.9678,13.8992]],[13.5271,[-10.3199,-51.9702,70.1621],[-0.234525,-0.916997,0.322669],[0.116874,0.302921,0.945822],[-10.0592,-39.9059,13.9096]],[13.5772,[-10.8199,-53.96,70.8343],[-0.232739,-0.912975,0.335125],[0.123358,0.314092,0.941344],[-9.98382,-39.7024,13.982]],[13.6001,[-11.15,-55.27,71.2847],[-0.231444,-0.910114,0.343696],[0.128298,0.321648,0.938127],[-9.92757,-39.5531,14.0587]],[13.6502,[-11.64,-57.2402,71.9673],[-0.229507,-0.905986,0.355692],[0.135806,0.332063,0.93343],[-9.83702,-39.3171,14.1899]],[13.7002,[-12.13,-59.2002,72.6599],[-0.227613,-0.902145,0.366506],[0.143022,0.34133,0.928998],[-9.73807,-39.0657,14.3421]],[13.7261,[-12.29,-59.8501,72.8928],[-0.226982,-0.900902,0.369939],[0.145359,0.34426,0.927554],[-9.70512,-38.983,14.3858]],[13.7762,[-12.77,-61.79,73.5973],[-0.225038,-0.897152,0.380099],[0.152242,0.352938,0.923178],[-9.5986,-38.7209,14.5404]],[13.8001,[-13.08,-63.0801,74.0722],[-0.223755,-0.894764,0.386432],[0.156633,0.35832,0.920366],[-9.52369,-38.5403,14.648]],[13.8501,[-13.55,-64.9902,74.7936],[-0.222024,-0.891732,0.394359],[0.162554,0.364941,0.91673],[-9.4108,-38.2721,14.7883]],[13.876,[-13.71,-65.6299,75.0363],[-0.221502,-0.890872,0.396592],[0.16433,0.366777,0.91568],[-9.37423,-38.186,14.8239]],[13.9261,[-14.17,-67.5303,75.7704],[-0.220082,-0.888676,0.402267],[0.169077,0.371385,0.912955],[-9.26115,-37.9236,14.9317]],[13.9502,[-14.48,-68.79,76.2636],[-0.219234,-0.88747,0.40538],[0.171734,0.373901,0.911431],[-9.18638,-37.7524,14.9885]],[14,[-14.9301,-70.6699,77.0061],[-0.218,-0.885791,0.409696],[0.175017,0.377505,0.909318],[-9.07987,-37.5107,15.0316]],[14.0262,[-15.08,-71.3003,77.2542],[-0.217613,-0.885293,0.410976],[0.175914,0.378596,0.908691],[-9.04634,-37.4349,15.0333]],[14.0762,[-15.53,-73.1602,77.9996],[-0.216547,-0.884015,0.414275],[0.178087,0.381456,0.90707],[-8.94621,-37.2099,15.0285]],[14.1001,[-15.83,-74.3999,78.4966],[-0.215906,-0.883324,0.41608],[0.179167,0.383055,0.906183],[-8.8817,-37.0654,15.0095]],[14.1502,[-16.27,-76.2402,79.2407],[-0.215033,-0.882483,0.418312],[0.180344,0.385084,0.905089],[-8.79077,-36.8617,14.9477]],[14.1761,[-16.42,-76.8604,79.4881],[-0.21476,-0.882241,0.418961],[0.180628,0.385692,0.904773],[-8.76224,-36.7977,14.9174]],[14.2261,[-16.85,-78.6899,80.2272],[-0.213974,-0.881589,0.420732],[0.18116,0.387423,0.903927],[-8.6786,-36.6101,14.8149]],[14.25,[-17.14,-79.9102,80.7169],[-0.213476,-0.881205,0.421789],[0.181286,0.388512,0.903434],[-8.62531,-36.4902,14.7334]],[14.3001,[-17.5699,-81.73,81.4459],[-0.21276,-0.880689,0.423226],[0.1812,0.390068,0.902781],[-8.54994,-36.3199,14.5879]],[14.3262,[-17.72,-82.3301,81.6872],[-0.212527,-0.880528,0.423678],[0.181083,0.390583,0.902582],[-8.5261,-36.2658,14.533]],[14.376,[-18.14,-84.1401,82.4055],[-0.21184,-0.880054,0.425005],[0.180132,0.392265,0.902043],[-8.45621,-36.1064,14.3606]],[14.4002,[-18.4301,-85.3403,82.8793],[-0.211399,-0.879761,0.42583],[0.179087,0.393436,0.90174],[-8.41141,-36.0035,14.2375]],[14.4512,[-18.85,-87.1299,83.5821],[-0.21077,-0.87936,0.426967],[0.177365,0.395128,0.901341],[-8.34753,-35.8551,14.0384]],[14.4771,[-18.99,-87.73,83.8141],[-0.210568,-0.879234,0.427327],[0.176789,0.395672,0.901215],[-8.32718,-35.8074,13.9678]],[14.5262,[-19.41,-89.5103,84.503],[-0.209962,-0.878839,0.428436],[0.175017,0.397342,0.900826],[-8.26746,-35.6659,13.7517]],[14.5501,[-19.6801,-90.7002,84.956],[-0.209564,-0.87857,0.429183],[0.173849,0.398457,0.90056],[-8.22897,-35.5736,13.6026]],[14.6001,[-20.1,-92.4702,85.6261],[-0.208984,-0.878176,0.430269],[0.172217,0.400059,0.900164],[-8.17341,-35.4387,13.3701]],[14.626,[-20.23,-93.0601,85.8468],[-0.208796,-0.87805,0.430619],[0.171724,0.400565,0.900033],[-8.15551,-35.3949,13.29]],[14.6761,[-20.64,-94.8301,86.5009],[-0.208222,-0.877635,0.43174],[0.170387,0.402118,0.899594],[-8.10251,-35.264,13.0479]],[14.7002,[-20.91,-96,86.9298],[-0.207811,-0.877277,0.432665],[0.169624,0.4033,0.899209],[-8.06794,-35.1777,12.8839]],[14.7762,[-21.45,-98.3403,87.7709],[-0.206983,-0.876518,0.434597],[0.168394,0.405669,0.898374],[-8.00052,-35.0078,12.5493]],[14.7762,[-21.45,-98.3403,87.7709],[-0.206983,-0.876518,0.434597],[0.168394,0.405669,0.898374],[-8.00052,-35.0078,12.5493]],[14.8262,[-21.85,-100.08,88.3872],[-0.206384,-0.875982,0.435959],[0.167614,0.407314,0.897775],[-7.95065,-34.8805,12.2971]],[14.8501,[-22.12,-101.24,88.7912],[-0.206,-0.875653,0.436802],[0.167128,0.408334,0.897403],[-7.9176,-34.7956,12.1288]],[14.9002,[-22.51,-102.98,89.3868],[-0.205455,-0.875224,0.437916],[0.166424,0.4097,0.896911],[-7.86884,-34.6696,11.8729]],[14.9261,[-22.65,-103.56,89.5826],[-0.205282,-0.875099,0.438247],[0.166187,0.410113,0.896766],[-7.85289,-34.6282,11.7863]],[14.9761,[-23.04,-105.28,90.1615],[-0.204785,-0.874774,0.439128],[0.165469,0.411239,0.896383],[-7.80509,-34.5034,11.5269]],[15,[-23.3,-106.43,90.5403],[-0.204471,-0.874596,0.439629],[0.165007,0.411895,0.896167],[-7.77356,-34.4207,11.3529]],[15.0501,[-23.6899,-108.15,91.0978],[-0.204021,-0.874369,0.440288],[0.164321,0.412781,0.895885],[-7.72722,-34.2984,11.0879]],[15.0762,[-23.8199,-108.72,91.2807],[-0.203875,-0.874302,0.440489],[0.164091,0.413056,0.8958],[-7.71207,-34.2583,10.9982]],[15.126,[-24.2,-110.43,91.8205],[-0.203449,-0.874127,0.441034],[0.163431,0.413815,0.895571],[-7.66696,-34.1383,10.728]],[15.1502,[-24.46,-111.56,92.1729],[-0.203174,-0.874028,0.441356],[0.163011,0.414273,0.895436],[-7.63733,-34.0591,10.5462]],[15.2002,[-24.84,-113.26,92.69],[-0.202774,-0.873906,0.441782],[0.162392,0.414897,0.895259],[-7.59373,-33.942,10.2698]],[15.2261,[-24.97,-113.83,92.859],[-0.202645,-0.873874,0.441904],[0.16219,0.415083,0.89521],[-7.57944,-33.9035,10.1766]],[15.3001,[-25.6,-116.64,93.684],[-0.202009,-0.873728,0.442483],[0.161153,0.415986,0.894978],[-7.50126,-33.6927,9.74969]],[15.3001,[-25.6,-116.64,93.684],[-0.202009,-0.873728,0.442483],[0.161153,0.415986,0.894978],[-7.50126,-33.6927,9.74969]],[15.3501,[-25.97,-118.32,94.164],[-0.20164,-0.873666,0.442773],[0.160553,0.416461,0.894865],[-7.44718,-33.5471,9.53501]],[15.376,[-26.1,-118.88,94.322],[-0.201519,-0.873649,0.442863],[0.160357,0.416612,0.89483],[-7.42815,-33.4959,9.46927]],[15.4251,[-26.47,-120.55,94.788],[-0.20116,-0.873603,0.443117],[0.159782,0.417042,0.894732],[-7.36925,-33.337,9.28324]],[15.449,[-26.71,-121.66,95.095],[-0.200925,-0.87358,0.443269],[0.159412,0.417307,0.894674],[-7.3285,-33.2268,9.16836]],[15.4991,[-27.08,-123.31,95.547],[-0.200585,-0.873573,0.443435],[0.1589,0.41763,0.894615],[-7.26535,-33.0558,9.00849]],[15.5252,[-27.2,-123.86,95.696],[-0.200474,-0.873578,0.443476],[0.158735,0.417721,0.894602],[-7.24383,-32.9974,8.95815]],[15.5752,[-27.5599,-125.51,96.139],[-0.20015,-0.873609,0.443563],[0.158251,0.417954,0.894579],[-7.17846,-32.8197,8.81269]],[15.5992,[-27.8,-126.6,96.431],[-0.199938,-0.873637,0.443602],[0.157914,0.418093,0.894573],[-7.13425,-32.6993,8.72007]],[15.6492,[-28.16,-128.22,96.862],[-0.199624,-0.873687,0.443645],[0.157398,0.418288,0.894573],[-7.06713,-32.5161,8.58692]],[15.6751,[-28.28,-128.77,97.004],[-0.19952,-0.873706,0.443654],[0.157223,0.418348,0.894576],[-7.04457,-32.4544,8.54391]],[15.7251,[-28.63,-130.38,97.427],[-0.199205,-0.873747,0.443715],[0.15668,0.418568,0.894568],[-6.97662,-32.2682,8.41744]],[15.7491,[-28.86,-131.45,97.706],[-0.198991,-0.873759,0.443787],[0.156292,0.418753,0.89455],[-6.93111,-32.1431,8.33527]],[15.7991,[-29.21,-133.05,98.118],[-0.198664,-0.873759,0.443936],[0.155698,0.419075,0.894503],[-6.86252,-31.9541,8.21519]],[15.8492,[-29.55,-134.65,98.524],[-0.198332,-0.873738,0.444124],[0.155096,0.419439,0.894436],[-6.79366,-31.7636,8.09838]],[15.875,[-29.66,-135.17,98.659],[-0.198221,-0.873727,0.444195],[0.154894,0.419569,0.89441],[-6.77066,-31.6998,8.06009]],[15.9251,[-30,-136.75,99.057],[-0.197897,-0.873717,0.44436],[0.154337,0.419898,0.894352],[-6.70156,-31.5075,7.94703]],[15.949,[-30.22,-137.8,99.32],[-0.197689,-0.873728,0.44443],[0.15401,0.420064,0.894331],[-6.65544,-31.3788,7.87292]],[15.9991,[-30.55,-139.36,99.71],[-0.197391,-0.87378,0.444461],[0.153592,0.420217,0.894331],[-6.58629,-31.1852,7.76285]],[16.0252,[-30.66,-139.88,99.839],[-0.197295,-0.873806,0.444452],[0.153471,0.420244,0.894339],[-6.56327,-31.1207,7.72633]],[16.0752,[-30.99,-141.43,100.222],[-0.197015,-0.873907,0.444378],[0.153151,0.420264,0.894384],[-6.49432,-30.9269,7.61697]],[16.0992,[-31.21,-142.46,100.474],[-0.196835,-0.873989,0.444296],[0.152971,0.420235,0.894429],[-6.44849,-30.7979,7.54397]],[16.1492,[-31.53,-143.99,100.848],[-0.196572,-0.874132,0.444131],[0.152739,0.420139,0.894513],[-6.37995,-30.6047,7.43408]],[16.1751,[-31.63,-144.5,100.971],[-0.196485,-0.874184,0.444067],[0.152671,0.420095,0.894545],[-6.35715,-30.5404,7.39736]],[16.2251,[-31.95,-146.02,101.338],[-0.19623,-0.874351,0.443852],[0.152489,0.419934,0.894652],[-6.28897,-30.348,7.28659]],[16.2491,[-32.16,-147.03,101.579],[-0.196062,-0.874469,0.443692],[0.152385,0.419806,0.89473],[-6.24368,-30.2201,7.21225]],[16.2991,[-32.47,-148.53,101.937],[-0.195813,-0.874657,0.443433],[0.152248,0.419589,0.894855],[-6.17595,-30.0287,7.10022]],[16.3252,[-32.5699,-149.03,102.055],[-0.195731,-0.874721,0.443343],[0.152207,0.419511,0.894899],[-6.15341,-29.965,7.06281]],[16.375,[-32.88,-150.52,102.404],[-0.195485,-0.874919,0.44306],[0.152097,0.419262,0.895034],[-6.08599,-29.7744,6.94986]],[16.3992,[-33.08,-151.51,102.635],[-0.195322,-0.875055,0.442863],[0.152032,0.419087,0.895127],[-6.04118,-29.6477,6.8741]]] + ; + _unit_capture_firing = + [7.01516,7.08106,8.06716,8.13306,9.14526,9.21216] + ; + + _vehicle = _this select 1; + _pilot = driver _vehicle; + _group = group _pilot; + if (not (_vehicle isKindOf "Helicopter")) exitWith {systemChat "HH"}; + _weapons = [_vehicle,true] call Achilles_fnc_weaponsAllTurrets; + systemChat str _weapons; + _weapons = _weapons select {getText (configfile >> "CfgWeapons" >> _x >> "cursorAim") in ["missile","rocket"] or (getText (configfile >> "CfgWeapons" >> _x >> "cursor") in ["missile","rocket"])}; + if (count _weapons == 0) exitWith {systemChat "WW"}; + + _allTargetsUnsorted = allMissionObjects "Achilles_Create_Suppression_Target_Module"; + if (count _allTargetsUnsorted == 0) exitWith {[localize "STR_NO_TARGET_MARKER"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"}; + _allTargets = [_allTargetsUnsorted, [], { _x getVariable ["SortOrder", 0]; }, "ASCEND"] call BIS_fnc_sortBy; + _targetChoices = [localize "STR_RANDOM", localize "STR_NEAREST", localize "STR_FARTHEST"]; + { + _targetChoices pushBack (name _x); + } forEach _allTargets; + if (count _targetChoices == 3) exitWith {[localize "STR_NO_TARGET_AVAIABLE"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"}; + + _dialogResult = + [ + "Title", + [ + ["Target", _targetChoices], + ["Missile",_weapons apply {getText (configfile >> "CfgWeapons" >> _x >> "displayName")}] + ] + ] call Ares_fnc_showChooseDialog; + + if (count _dialogResult == 0) exitWith {}; + + _targetChooseAlgorithm = _dialogResult select 0; + _selectedTarget = objNull; + switch (_targetChooseAlgorithm) do + { + case 0: + { + _selectedTarget = _allTargets call BIS_fnc_selectRandom; + }; + case 1: + { + _selectedTarget = [position _logic, _allTargets] call Ares_fnc_GetNearest; + }; + case 2: + { + _selectedTarget = [position _logic, _allTargets] call Ares_fnc_GetFarthest; + }; + default + { + _selectedTarget = _allTargets select (_targetChooseAlgorithm - 3); + }; + }; + + _target_pos = getPosWorld _selectedTarget; + _direction = 180 - ([_vehicle, _target_pos] call BIS_fnc_dirTo); + + { + _x set [1,([_x select 1, _direction] call BIS_fnc_rotateVector2D) vectorAdd _target_pos]; + _x set [2,[_x select 2, _direction] call BIS_fnc_rotateVector2D]; + _x set [3,[_x select 3, _direction] call BIS_fnc_rotateVector2D]; + _x set [4,[_x select 4, _direction] call BIS_fnc_rotateVector2D]; + _unit_capture_trajectory set [_forEachIndex,_x]; + } forEach _unit_capture_trajectory; + + _end_data = _unit_capture_trajectory select 0; + _end_pos = _end_data select 1; + _end_velocity = _end_data select 1; + _end_vecDir = _end_data select 2; + _end_vecUp = _end_data select 3; + + _vehicle flyInHeight 80; + + _wp_index = currentwaypoint _group; + _group addWaypoint [_target_pos, 100, _wp_index]; + waitUntil {sleep 1; (not alive driver _vehicle or not canMove _vehicle or (_end_pos distance2D _vehicle < 200))}; + if (not alive driver _vehicle or not canMove _vehicle) exitWith {}; + + _start_pos = getPosASL _vehicle; + _start_velocity = velocity _vehicle; + _start_vecDir = vectorDir _vehicle; + _start_vecUp = vectorUp _vehicle; + + _speed = 60 /3.6; + _vehicle forceSpeed _speed * 3.6; + _duration = (_end_pos distance _start_pos)/_speed; + + _time = time; + waitUntil + { + _delta_time = time - _time; + _vehicle setVelocityTransformation + [ + _start_pos, + _end_pos, + _start_velocity, + _end_velocity, + _start_vecDir, + _end_vecDir, + _start_vecUp, + _end_vecUp, + _delta_time / _duration + ]; + _vehicle setVelocity [0,0,0]; + sleep 0.01; + ((_delta_time >= _duration) or (not canMove _vehicle) or (not alive _pilot)) + }; + if (not alive driver _vehicle or not canMove _vehicle) exitWith {}; + [_this select 1, _unit_capture_trajectory] spawn BIS_fnc_UnitPlay; + + _weapon = _weapons select (_dialogResult select 1); + _mode = "Burst"; + _modes = getArray (configfile >> "CfgWeapons" >> _weapon >> "modes"); + switch (true) do + { + case (_modes select 0 == "this"): {_mode = _weapon}; + case ("Burst" in _modes): {}; + default {_mode = _modes select 0}; + }; + + _prev_time = 0; + { + _curr_time = _x; + _dt = _curr_time - _prev_time; + sleep _dt; + effectiveCommander (_this select 1) forceWeaponFire [_weapon,_mode]; + gunner (_this select 1) forceWeaponFire [_weapon,_mode]; + _prev_time = _curr_time; + } forEach _unit_capture_firing; +}] call Ares_fnc_RegisterCustomModule; + + diff --git a/Experimental/force_AI_to_fire_launcher.sqf b/Experimental/force_AI_to_fire_launcher.sqf new file mode 100644 index 00000000..c127c121 --- /dev/null +++ b/Experimental/force_AI_to_fire_launcher.sqf @@ -0,0 +1,44 @@ +_u = _this select 1; +_w = secondaryWeapon _u; + +_u reveal [tt,4]; +_u doTarget tt; + +_u forceWeaponFire [_w,"single"]; +sleep 0.1; +_u disableAI "ANIM"; +systemChat str _w; + +_u disableAI "AUTOTARGET"; +_u disableAI "TARGET"; +sleep 4; +_u forceWeaponFire [_w,"single"]; +sleep 4; + +_u enableAI "AUTOTARGET"; +_u enableAI "TARGET"; +_u enableAI "ANIM"; +systemChat str "JJ" + + + +_u = _this select 1; +_w = secondaryWeapon _u; +_u reveal [tt,4]; +_u doTarget tt; +sleep 4; +_u forceWeaponFire [_w,"single"]; +sleep 0.1; +_u disableAI "ANIM"; +systemChat str _w; + +sleep 4; +_u forceWeaponFire [_w,"single"]; +sleep 4; +_u doWatch ObjNull; +_u doTarget ObjNull;_u enableAI "ANIM"; +systemChat str "JJ" + + +[group (_this select 1),_this select 0,_this select 0] call BIS_fnc_unpackStaticWeapon +_gunner action ["Assemble",unitbackpack _gunner]; \ No newline at end of file diff --git a/Experimental/idea_for_improved_remote_control.sqf b/Experimental/idea_for_improved_remote_control.sqf new file mode 100644 index 00000000..56f31322 --- /dev/null +++ b/Experimental/idea_for_improved_remote_control.sqf @@ -0,0 +1,97 @@ +//["onUnload",[]]execVM "A3\ui_f_curator\UI\displays\RscDisplayCurator.sqf"; + +[_this select 1] spawn +{ + _unit = _this select 0; + _vehicle = vehicle _unit; + _cam = "camera" camcreate getposatl curatorcamera; + _cam cameraeffect ["internal","back"]; + _cam campreparetarget (screentoworld [0.5,0.5]); + _cam camcommitprepared 0; + _cam campreparetarget _unit; + _cam campreparefov 0.1; + _cam camcommitprepared 1; + sleep 0.75; + + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black out",0.25]; + sleep 0.25; + + player remotecontrol _unit; + + if (cameraon != _vehicle) then { + _vehicle switchcamera cameraview; + _vehicle cameraeffect ["terminate","back"]; + }; + + _cam cameraeffect ["terminate","back"]; + camdestroy _cam; + + _curator = getassignedcuratorlogic player; + [_curator,"curatorObjectRemoteControlled",[_curator,player,_unit,true]] call bis_fnc_callScriptedEventHandler; + [["Curator","RemoteControl"],nil,nil,nil,nil,nil,nil,true] call bis_fnc_advHint; + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black in",0.5]; + + hint "remote camera"; + + _eh_id = (findDisplay 312) displayAddEventHandler ["KeyDown", + { + _handled = false; + switch (_this select 1) do + { + case 14: {(findDisplay 312) createDisplay "RscDisplayMission"; _handled = true}; + case 21: {Achilles_var_exitRemote = true; _handled = true}; + }; + _handled; + }]; + + _vehicle = vehicle _unit; + _vehicleRole = str assignedvehiclerole _unit; + _rating = rating player; + _time = time; + _delay = 5; + Achilles_var_exitRemote = false; + waituntil + { + if ((vehicle _unit != _vehicle || str assignedvehiclerole _unit != _vehicleRole) && {alive _unit}) then { + player remotecontrol _unit; + _vehicle = vehicle _unit; + _vehicleRole = str assignedvehiclerole _unit; + }; + if (rating player < _rating) then { + player addrating (-rating player + _rating); + }; + sleep 0.01; + (cameraon == vehicle player) + || + {!alive _unit} + || + {!alive player} + || + {isnull getassignedcuratorlogic player} + || + {Achilles_var_exitRemote} + }; + + (findDisplay 312) displayRemoveEventHandler ["keyDown",_eh_id]; + hint "curator camera"; + player addrating (-rating player + _rating); + ObjNull remotecontrol _unit; + _unit setvariable ["bis_fnc_moduleRemoteControl_owner",nil,true]; + [_curator,"curatorObjectRemoteControlled",[_curator,player,_unit,false]] call bis_fnc_callScriptedEventHandler; + + curatorCamera switchcamera cameraview; + curatorCamera cameraEffect ["internal", "BACK"]; +}; +/* + _unit = (allunits select 1); + _curator = getassignedcuratorlogic player; + _rating = rating player; + hint "curator camera"; + player addrating (-rating player + _rating); + ObjNull remotecontrol _unit; + _unit setvariable ["bis_fnc_moduleRemoteControl_owner",nil,true]; + [_curator,"curatorObjectRemoteControlled",[_curator,player,_unit,false]] call bis_fnc_callScriptedEventHandler; + + curatorCamera switchcamera cameraview; + curatorCamera cameraeffect ["terminate","external"]; +*/ \ No newline at end of file diff --git a/Achilles_Logo_Github.png b/Pictures/Achilles_Logo_Github.png similarity index 100% rename from Achilles_Logo_Github.png rename to Pictures/Achilles_Logo_Github.png diff --git a/Pictures/wiki_ace_weather.png b/Pictures/wiki_ace_weather.png new file mode 100644 index 00000000..bcc82d3e Binary files /dev/null and b/Pictures/wiki_ace_weather.png differ diff --git a/Pictures/wiki_achilles_keybindings.png b/Pictures/wiki_achilles_keybindings.png new file mode 100644 index 00000000..59c0c08a Binary files /dev/null and b/Pictures/wiki_achilles_keybindings.png differ diff --git a/wiki_dynamic_dialog.png b/Pictures/wiki_dynamic_dialog.png similarity index 100% rename from wiki_dynamic_dialog.png rename to Pictures/wiki_dynamic_dialog.png diff --git a/wiki_placing_modules.png b/Pictures/wiki_placing_modules.png similarity index 100% rename from wiki_placing_modules.png rename to Pictures/wiki_placing_modules.png diff --git a/wiki_selection_option.png b/Pictures/wiki_selection_option.png similarity index 100% rename from wiki_selection_option.png rename to Pictures/wiki_selection_option.png diff --git a/Pictures/wiki_zeus_keybindings.png b/Pictures/wiki_zeus_keybindings.png new file mode 100644 index 00000000..31198b83 Binary files /dev/null and b/Pictures/wiki_zeus_keybindings.png differ diff --git a/README.md b/README.md index b3ad0d71..7044aba2 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Notes: ###Links: - [Check Achilles Wiki.](https://github.com/oOKexOo/AresModAchillesExpansion/wiki) - [Check licence and full list of contributers.](https://github.com/oOKexOo/AresModAchillesExpansion/blob/master/%40AresModAchillesExpansion/license.txt) -- [Check full change logs.](https://github.com/oOKexOo/AresModAchillesExpansion/blob/master/%40AresModAchillesExpansion/readme.txt) +- [Check full change logs.](https://github.com/oOKexOo/AresModAchillesExpansion/blob/master/%40AresModAchillesExpansion/readme.md) - [Check progress of upcomming updates.](https://github.com/oOKexOo/AresModAchillesExpansion/issues/32)

[](http://steamcommunity.com/sharedfiles/filedetails/?id=723217262) [](http://withsix.com/p/Arma-3/mods/mc1X_8GXVEG0STlO_DWjNA/Ares-Mod-Achilles-Expansion) diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/Custom/edit_custom_module_script.py b/Tools/edit_custom_module_script.py similarity index 100% rename from @AresModAchillesExpansion/addons/modules_f_ares/Custom/edit_custom_module_script.py rename to Tools/edit_custom_module_script.py diff --git a/Tools/markdown_changeLog_to_steam.py b/Tools/markdown_changeLog_to_steam.py new file mode 100644 index 00000000..5451379c --- /dev/null +++ b/Tools/markdown_changeLog_to_steam.py @@ -0,0 +1,58 @@ +from sys import argv, exit +from os.path import basename +from time import sleep + +def get_and_check_file(extension): + ''' + function get and check file + + This function reads the passed file and checkes if it is valid or not + + input: extension (str) the valid file extension + output: file_path and file_name (str) if valid + ''' + extension_length = len(extension) + try: + # get arguments + file, file_path = argv + if file_path[1] == "'": + file_path = file_path[1:-1] + except ValueError: + print '\nMissing a valid file as argument! Drag and drop a *.{} file on {}! \n\n'.format(extension,basename(__file__)) + raw_input ('Close program with ENTER...') + exit() + file_name = basename(file_path) + if file_name[-extension_length:] != extension: + print '\nFile must be of type *.{}!\n\n'.format(extension) + raw_input ('Close program with ENTER...') + exit() + return (file_path,file_name) + +if __name__ == "__main__": + file_path, file_name = get_and_check_file("txt") + print "\nConverting {}...".format(file_name) + with open(file_path,"r") as old_file: + with open(file_path[:-4] + "_steam.txt","w") as new_file: + for line in old_file.readlines(): + #handle issue id's + start_index = line.find("see #") + 5 + if start_index > 4: + end_index = line.find(")",start_index) + issue_id = line[start_index:end_index] + line = line[:(start_index-1)] + "[url=https://github.com/oOKexOo/AresModAchillesExpansion/issues/{0}]#{0}[/url]".format(issue_id) + line [end_index:] + else: + #handle normal links + start_index = line.find("see [") + 5 + if start_index > 4: + end_index = line.find("]",start_index) + link_text = line[start_index:end_index] + new_line = line[:(start_index-1)] + "[url=" + start_index = end_index + 2 + end_index = line.find(")",start_index) + link = line[start_index:end_index] + new_line += link + "]" + link_text + "[/url]" + line[(end_index+1):] + line = new_line + new_file.write(line) + sleep(1) + print "\nConversion completed!" + sleep(2) \ No newline at end of file diff --git a/Tools/markdown_test.txt b/Tools/markdown_test.txt new file mode 100644 index 00000000..3c0413c9 --- /dev/null +++ b/Tools/markdown_test.txt @@ -0,0 +1,30 @@ +* Change: Garrison module: Replace searching pattern "House" by "Building" (=> more buildings are available e.g. Tanoa WW2 bunkers). +* Change: Moved "Create/Edit intel" module from "spawn" to "scenario flow" category (see #40) +* Change: "Destroy Buildings" Module was changed to "Damage Buildings" Module (=more options). +* Change: "Patrol" module was changed to "Patrol/Loiter (Heli)" => Loiter waypoint for aircrafts. +* Change: Default assigned hotkey to eject passengers has changed from `LEFT SHIFT` + `G` to `V`. +* Change: For logged-in admins the "execute code" module is in any case available. +* Change: "Bind variable to object" variable is no longer public, but still global. +* Change: Postpone initialization of global functions to the point they are needed (like CED version). +* Feature: Toggle street lamps module +* Feature: Autocollapse Tree (see #26) +* Feature: Apex symbol in front of apex objects and warning message. +* Feature: CBA settings framework (by @Grezvany13). +* Feature: Settings: Helmet & DLC icons for module tree (by @Grezvany13). +* Feature: Settings: Zeus vison modes (by @Grezvany13). +* Feature: Settings: Set available factions for module tree (especially useful for addons like CUP). +* Feature: Settings: Customizable hotkeys. +* Feature: Waypoint: Paradrop waypoint. +* Feature: Waypoint: Improved fastroping waypoint; ACE3 or Advanced Rappeling (AR) is needed. The latter is used if both are loaded. (Note that ACE3 fastroping does not work properly in MP in contrast to AR) +* Feature: Reinforcement Module: Type of waypoint can be selected: Land, fastroping or paradrop. +* Feature: JIP option for execute code. +* Feature: Module "Change Altitude": Change altitude for aircrafts, divers and submarines (Note: In some cases you have to place a waypoint to get the desired effect!). +* Feature: Improve "Add objects to Zeus" module (shorter radius, Filters) +* Fix: Non-local surrendered units stuck after release in cetain cases. +* Fix: Implement solution similar to CED (see #27). +* Fix: Player manned vehicles cannot be edited (see [BIS forum](https://forums.bistudio.com/topic/191113-ares-mod-achilles-expansion/?do=findComment&comment=3132117)) +* Fix: Advanced attributes do not work for non-local units (see #38) +* Fix: "Garrison building instant" module does not work for non-local units. +* Fix: Suppressive fire does not work properly with move waypoints. +* Fix: Mines were marked on map (check ACE3 solution?) +* Fix: Mortar only fire one shell (see #36) \ No newline at end of file diff --git a/Tools/markdown_test_steam.txt b/Tools/markdown_test_steam.txt new file mode 100644 index 00000000..675bb0e6 --- /dev/null +++ b/Tools/markdown_test_steam.txt @@ -0,0 +1,30 @@ +* Change: Garrison module: Replace searching pattern "House" by "Building" (=> more buildings are available e.g. Tanoa WW2 bunkers). +* Change: Moved "Create/Edit intel" module from "spawn" to "scenario flow" category (see [url=https://github.com/oOKexOo/AresModAchillesExpansion/issues/40]#40[/url]) +* Change: "Destroy Buildings" Module was changed to "Damage Buildings" Module (=more options). +* Change: "Patrol" module was changed to "Patrol/Loiter (Heli)" => Loiter waypoint for aircrafts. +* Change: Default assigned hotkey to eject passengers has changed from `LEFT SHIFT` + `G` to `V`. +* Change: For logged-in admins the "execute code" module is in any case available. +* Change: "Bind variable to object" variable is no longer public, but still global. +* Change: Postpone initialization of global functions to the point they are needed (like CED version). +* Feature: Toggle street lamps module +* Feature: Autocollapse Tree (see [url=https://github.com/oOKexOo/AresModAchillesExpansion/issues/26]#26[/url]) +* Feature: Apex symbol in front of apex objects and warning message. +* Feature: CBA settings framework (by @Grezvany13). +* Feature: Settings: Helmet & DLC icons for module tree (by @Grezvany13). +* Feature: Settings: Zeus vison modes (by @Grezvany13). +* Feature: Settings: Set available factions for module tree (especially useful for addons like CUP). +* Feature: Settings: Customizable hotkeys. +* Feature: Waypoint: Paradrop waypoint. +* Feature: Waypoint: Improved fastroping waypoint; ACE3 or Advanced Rappeling (AR) is needed. The latter is used if both are loaded. (Note that ACE3 fastroping does not work properly in MP in contrast to AR) +* Feature: Reinforcement Module: Type of waypoint can be selected: Land, fastroping or paradrop. +* Feature: JIP option for execute code. +* Feature: Module "Change Altitude": Change altitude for aircrafts, divers and submarines (Note: In some cases you have to place a waypoint to get the desired effect!). +* Feature: Improve "Add objects to Zeus" module (shorter radius, Filters) +* Fix: Non-local surrendered units stuck after release in cetain cases. +* Fix: Implement solution similar to CED (see [url=https://github.com/oOKexOo/AresModAchillesExpansion/issues/27]#27[/url]). +* Fix: Player manned vehicles cannot be edited (see [url=https://forums.bistudio.com/topic/191113-ares-mod-achilles-expansion/?do=findComment&comment=3132117]BIS forum[/url]) +* Fix: Advanced attributes do not work for non-local units (see [url=https://github.com/oOKexOo/AresModAchillesExpansion/issues/38]#38[/url]) +* Fix: "Garrison building instant" module does not work for non-local units. +* Fix: Suppressive fire does not work properly with move waypoints. +* Fix: Mines were marked on map (check ACE3 solution?) +* Fix: Mortar only fire one shell (see [url=https://github.com/oOKexOo/AresModAchillesExpansion/issues/36]#36[/url]) \ No newline at end of file diff --git a/ingame_controls_settings.png b/ingame_controls_settings.png deleted file mode 100644 index 5ae3c6ac..00000000 Binary files a/ingame_controls_settings.png and /dev/null differ