BB_Functions.sqf ?UM BB_Reload.sqf ?UZ clear_vehicle.sqf ?U! description.ext U: hull3\briefing\blufor.sqf U hull3\briefing\civilian.sqf U hull3\briefing\indfor.sqf U hull3\briefing\opfor.sqf U hull3\hull3.h U init.sqf 'dA initPlayerLocal.sqf 0db Kami_Macros.h ?U mission.sqm dG_ #include "Kami_Macros.h"
#define BB_WEAPON_TO_REMOVE "missiles_DAR"
#define BB_WEAPON_TO_ADD "Gatling_30mm_Plane_CAS_01_F"
#define BB_AMMO_TO_ADD "1000Rnd_Gatling_30mm_Plane_CAS_01_F"
#define BB_RELOAD_DELAY 30 // seconds
#define BLU_BB_AMOUNT 16
#define OPF_BB_AMOUNT 16
#define TOTAL_BB_AMOUNT (BLU_BB_AMOUNT + OPF_BB_AMOUNT)
#define BB_TRACKING_MARKER_DELAY 5
#define BB_HELI_CLASSNAME "B_Heli_Light_01_armed_F"
BB_Init ={
[] call BB_InitDebug;
BB_ReloadCountdown = true;
BB_ReloadMe = nil;
if (isServer) then {
[] call BB_BuildHeliArray;
[] call BB_InitAllHelis;
[] call BB_InitAllPilots;
[["Server init finished."]] call BB_DebugLog;
};
if (!isServer || !isMultiplayer) then {
[player] call BB_Addaction_RequestReload;
};
};
BB_InitDebug = {
BB_Debug = if (isMultiplayer) then {
false;
} else {
true;
};
};
BB_DebugLog = {
FUN_ARGS_1(_message);
if (BB_Debug) then
{
hint format ["%1 - [BB]: %2",time,(format _message)];
diag_log format ["%1 - [BB]: %2",time,(format _message)];
};
};
BB_InitAllPilots = {
{
[_x,_forEachIndex] call BB_InitPilot;
//sleep 0.1;
} forEach allUnits;
};
BB_InitPilot = {
FUN_ARGS_2(_pilot,_index);
[_pilot,false] call BB_SetReloadInProgress;
[_pilot] call BB_InitPilotMarker;
[["Initialising Pilot: %1 at Index: %2",_pilot,_index]] call BB_DebugLog;
};
BB_InitPilotMarker = {
FUN_ARGS_1(_pilot);
if (side _pilot == west) then {
[_pilot,"ColorBlue"] spawn BB_InitTrackingMarker;
} else {
[_pilot,"ColorRed"] spawn BB_InitTrackingMarker;
};
};
BB_InitTrackingMarker = {
FUN_ARGS_2(_unit,_colour);
DECLARE(_marker) = [_unit] call BB_CreateMarker;
_marker setMarkerColor _colour;
[_unit,_marker] spawn BB_TrackingMarkerLoop;
};
BB_TrackingMarkerLoop = {
FUN_ARGS_2(_unit,_marker);
while {alive _unit} do
{
_marker setMarkerPos [(getposATL _unit) select 0,(getposATL _unit) select 1];
_marker setMarkerDir (getDir _unit);
sleep BB_TRACKING_MARKER_DELAY;
};
deleteMarker _marker;
};
BB_CreateMarker = {
FUN_ARGS_1(_unit);
DECLARE(_name_str) = "BB_tracker_" + str(_unit);
DECLARE(_marker) = createMarker [_name_str,[0,0,0]];
_marker setMarkerShape "ICON";
_marker setMarkerType "mil_triangle";
_marker setMarkerSize [0.6,0.6];
_marker setMarkerText str(name _unit);
_marker;
};
BB_BuildHeliArray = {
PVT_2(_i,_plane_name);
DECLARE(_plane_array) = [];
for "_i" from 1 to TOTAL_BB_AMOUNT do {
_plane_name = "helo_" + str(_i);
_plane_name = missionNamespace getVariable _plane_name;
_plane_array pushBack _plane_name;
[["Current Plane: %1",_plane_name]] call BB_DebugLog;
//sleep 0.1;
};
[["Final plane array: %1",_plane_array]] call BB_DebugLog;
BB_FullHeliArray = _plane_array; // make available to all scopes
//publicVariable "BB_FullHeliArray";
};
BB_InitAllHelis = {
{
[_x,_forEachIndex] call BB_InitHeli;
null = [_x] execVM "clear_vehicle.sqf";
//sleep 0.1;
} forEach BB_FullHeliArray;
};
BB_InitHeli = {
FUN_ARGS_2(_plane,_plane_index);
[["Initialising Plane: %1 at index %2",_plane,_plane_index]] call BB_DebugLog;
_plane setVehicleAmmo 0.5;
[_plane] call BB_RemoveBBOrdnance;
[_plane] call BB_AddBBOrdnance;
[_plane,_plane_index] call BB_SetHeliTexture;
};
BB_SetHeliTexture = {
FUN_ARGS_2(_plane,_index);
INC(_index);
if (_index <= BLU_BB_AMOUNT) then {
_plane setObjectTextureGlobal [0,"\ca\ca_e\data\flag_blufor_co.paa"];
//_plane setObjectTextureGlobal [1,"\ca\ca_e\data\flag_blufor_co.paa"];
_chemlight = "Chemlight_blue" createVehicle (position _plane);
_chemlight attachto [_plane,[0,0,0]];
} else {
_plane setObjectTextureGlobal [0,"\ca\ca_e\data\flag_opfor_co.paa"];
//_plane setObjectTextureGlobal [1,"\ca\ca_e\data\flag_opfor_co.paa"];
_chemlight = "Chemlight_red" createVehicle (position _plane);
_chemlight attachto [_plane,[0,0,0]];
};
};
BB_RemoveBBOrdnance = {
FUN_ARGS_1(_plane);
_plane removeWeaponTurret [BB_WEAPON_TO_REMOVE,[-1]]
};
BB_AddBBOrdnance = {
FUN_ARGS_1(_plane);
_plane addWeaponTurret [BB_WEAPON_TO_ADD,[-1]];
_plane addMagazineTurret [BB_AMMO_TO_ADD,[-1]];
};
BB_Addaction_RequestReload = {
FUN_ARGS_1(_pilot);
_pilot addAction ["Request Reload","BB_Reload.sqf",nil,1000,false,true,"","(vehicle _this == vehicle _target) && !([_this] call BB_GetReloadInProgress) && ([_this] call BB_PlayerInBB) && ([_this] call BB_ReloadValid)"];
};
BB_PlayerInBB = {
FUN_ARGS_1(_player);
DECLARE(_in_BB) = false;
if ((typeOf (vehicle _player)) == BB_HELI_CLASSNAME) then {
_in_BB = true;
};
_in_BB;
};
BB_ReloadValid = {
FUN_ARGS_1(_player);
DECLARE(_ammo_level) = (vehicle _player) ammo "1000Rnd_Gatling_30mm_Plane_CAS_01_F";
DECLARE(_valid) = false;
if (_ammo_level == 0) then {
_valid = true;
};
_valid;
};
BB_SetReloadInProgress = {
FUN_ARGS_2(_pilot,_status);
_pilot setVariable ["BB_ReloadInProgress",_status,true];
};
BB_GetReloadInProgress = {
FUN_ARGS_1(_pilot);
DECLARE(_variable) = _pilot getVariable ["BB_ReloadInProgress",false];
_variable;
};
BB_Reload = {
FUN_ARGS_1(_player);
if ([_player] call BB_ReloadValid) then {
[_player,true] call BB_SetReloadInProgress;
for "_i" from BB_RELOAD_DELAY to 1 step -1 do
{
sleep 1;
hintSilent format ["Weapon Reload in: %1s",_i];
};
sleep 1;
(vehicle _player) setVehicleAmmo 1.0;
hintSilent "Weapon successfully reloaded!";
sleep 2;
[_player,false] call BB_SetReloadInProgress;
} else {
hintSilent "Weapon magazine is not empty yet!";
sleep 2;
hintSilent "";
};
};#include "Kami_Macros.h"
// _this select 1: caller
[(_this select 1)] spawn BB_Reload;// Add:
// null = [this] execVM "clear_vehicle.sqf";
// to the unit's init line.
if (!isServer) exitWith {};
private "_vehicle";
_vehicle = _this select 0;
clearMagazineCargoGlobal _vehicle;
clearWeaponCargoGlobal _vehicle;
clearItemCargoGlobal _vehicle;
clearBackpackCargoGlobal _vehicle;#include "hull3\hull3.h"
enableDebugConsole = 1;
disableChannels[]={2,4,6};
onLoadName = "Aerial Warfare";
onLoadMission = "Made with Hull3";
author = "Winter";
loadScreen = "x\ark\addons\hull3\resources\hull3_logo.paa";
class Header
{
gameType = Coop;
minPlayers = 1;
maxPlayers = 32;
};
respawn = 0;
respawndelay = 3;
respawnTemplates[] = {"Hull3_RespawnHandler"};
class Params {
class Hull3_Date {
title = "Moon Phase";
values[] = {0,1};
texts[] = {"New Moon", "Full Moon"};
default = 1;
code = "hull3_mission_date = %1";
};
class Hull3_TimeOfDay {
title = "Time of Day";
values[] = {0,1,2,3,4,5,6,7};
texts[] = {"Dawn", "Early Morning", "Morning", "Noon", "Afternoon", "Evening", "Dusk", "Night"};
default = 7;
code = "hull3_mission_timeOfDay = %1";
};
class Hull3_Fog {
title = "Fog";
values[] = {0,1,2};
texts[] = {"None", "Light", "Heavy"};
default = 0;
code = "hull3_mission_fog = %1";
};
class Hull3_Weather {
title = "Weather";
values[] = {0,1,2,3,4,5,6,7,8,9};
texts[] = {"Random", "Clear (Calm)", "Clear (Light Winds)", "Clear (Strong Winds)", "Overcast (Calm)", "Overcast (Light Winds)", "Overcast (Strong Winds)", "Rain (Light Winds)", "Rain (Strong Winds)", "Storm"};
default = 1;
code = "hull3_mission_weather = %1";
};
class Hull3_SafetyTimer {
title = "Safety Timer";
values[] = {9999,0};
texts[] = {"On", "Off"};
default = 0;
code = "hull3_mission_safetyTimerEnd = %1";
};
};
class CfgDebriefingSections {
class acex_killTracker {
title = "Acex Killed Events";
variable = "acex_killTracker_outputText";
};
};
allowProfileGlasses = 0;
// BLUFOR Notes
// Mission
player createDiaryRecord ["Diary", ["Mission","
Take to the skies and kill the enemy
"]];
// Credits
player createDiaryRecord ["Diary", ["Credits", "
Made by Winter
"]];
// BLUFOR Notes
// Situation
player createDiaryRecord ["Diary", ["Situation","
*** Insert general information about the situation here.***
ENEMY FORCES
*** Insert information about enemy forces here.***
FRIENDLY FORCES
*** Insert information about friendly forces here.***
"]];
// Mission
player createDiaryRecord ["Diary", ["Mission","
*** Insert the mission here. ***
"]];
// Execution
player createDiaryRecord ["Diary", ["Execution","
COMMANDER'S INTENT
*** Insert very short summary of plan here. ***
MOVEMENT PLAN
*** Insert movement instructions here. ***
FIRE SUPPORT PLAN
*** Insert fire support instructions here. ***
SPECIAL TASKS
*** Insert instructions for specific units here. ***
"]];
// Administration
player createDiaryRecord ["Diary", ["Administration","
*** Insert information on administration and logistics here. ***
"]];
// Credits
player createDiaryRecord ["Diary", ["Credits", "
Made by
"]];
// BLUFOR Notes
// Situation
player createDiaryRecord ["Diary", ["Situation","
*** Insert general information about the situation here.***
ENEMY FORCES
*** Insert information about enemy forces here.***
FRIENDLY FORCES
*** Insert information about friendly forces here.***
"]];
// Mission
player createDiaryRecord ["Diary", ["Mission","
*** Insert the mission here. ***
"]];
// Execution
player createDiaryRecord ["Diary", ["Execution","
COMMANDER'S INTENT
*** Insert very short summary of plan here. ***
MOVEMENT PLAN
*** Insert movement instructions here. ***
FIRE SUPPORT PLAN
*** Insert fire support instructions here. ***
SPECIAL TASKS
*** Insert instructions for specific units here. ***
"]];
// Administration
player createDiaryRecord ["Diary", ["Administration","
*** Insert information on administration and logistics here. ***
"]];
// Credits
player createDiaryRecord ["Diary", ["Credits", "
Made by
"]];
// OPFOR Notes
// Mission
player createDiaryRecord ["Diary", ["Mission","
Take to the skies and kill the enemy
"]];
// Credits
player createDiaryRecord ["Diary", ["Credits", "
Made by Winter
"]];
class Hull3 {
isEnabled = 1;
class Briefing {
blufor = "hull3\briefing\blufor.sqf";
opfor = "hull3\briefing\opfor.sqf";
indfor = "hull3\briefing\indfor.sqf";
civilian = "hull3\briefing\civilian.sqf";
};
};call compile preprocessFile "BB_Functions.sqf";
[] call BB_Init;0 spawn {
sleep 1;
setAperture 2;
setViewDistance 4000;
setTerrainGrid 50;
};#ifndef KAMI_MACROS_H
#define KAMI_MACROS_H
// WARNING
// Macros are sensitive for "," (comma), "(", ")" (parenthese) and " " (space).
// Provide only the asked numbers of arguments, without additional commas and without spaces beetween commas.
// Example:
// PUSH_ALL(_units, [_unit] call getPlayersAroundUnit);
// This will work as intended.
// PUSH_ALL(_units, [_unit, 100] call getPlayersAroundUnit);
// This won't work, as the macro identifies 100 as a third parameter.
// Use AS_ARRAY_* instead of passing actual arrays.
// PUSH_ALL(_units, AS_ARRAY_2(_unit, 100) call getPlayersAroundUnit);
// Creates private declaritions for arguments.
// Example:
// GIVEN:
// WHEN:
// PVT_3(_unit,_group,_trigger);
// THEN:
// private ["_unit","_group","_trigger"];
#define PVT_1(VAR1) private #VAR1
#define PVT_2(VAR1,VAR2) private [#VAR1,#VAR2]
#define PVT_3(VAR1,VAR2,VAR3) private [#VAR1,#VAR2,#VAR3]
#define PVT_4(VAR1,VAR2,VAR3,VAR4) private [#VAR1,#VAR2,#VAR3,#VAR4]
#define PVT_5(VAR1,VAR2,VAR3,VAR4,VAR5) private [#VAR1,#VAR2,#VAR3,#VAR4,#VAR5]
#define PVT_6(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6) private [#VAR1,#VAR2,#VAR3,#VAR4,#VAR5,#VAR6]
#define PVT_7(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7) private [#VAR1,#VAR2,#VAR3,#VAR4,#VAR5,#VAR6,#VAR7]
#define PVT_8(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8) private [#VAR1,#VAR2,#VAR3,#VAR4,#VAR5,#VAR6,#VAR7,#VAR8]
#define PVT_9(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8,VAR9) private [#VAR1,#VAR2,#VAR3,#VAR4,#VAR5,#VAR6,#VAR7,#VAR8,#VAR9]
// Creates array selection for arguments. Only works if the array is a variable!
// Example:
// GIVEN:
// _strings = ["unit", "group", "trigger"];
// WHEN:
// SELECT_3(_strings,_unit,_group,_trigger);
// THEN:
// _unit == "unit";
// _group == "group";
// _trigger == "trigger";
#define SELECT_1(ARRAY,VAR1) VAR1 = (ARRAY) select 0
#define SELECT_2(ARRAY,VAR1,VAR2) SELECT_1(ARRAY,VAR1); VAR2 = (ARRAY) select 1
#define SELECT_3(ARRAY,VAR1,VAR2,VAR3) SELECT_2(ARRAY,VAR1,VAR2); VAR3 = (ARRAY) select 2
#define SELECT_4(ARRAY,VAR1,VAR2,VAR3,VAR4) SELECT_3(ARRAY,VAR1,VAR2,VAR3); VAR4 = (ARRAY) select 3
#define SELECT_5(ARRAY,VAR1,VAR2,VAR3,VAR4,VAR5) SELECT_4(ARRAY,VAR1,VAR2,VAR3,VAR4); VAR5 = (ARRAY) select 4
#define SELECT_6(ARRAY,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6) SELECT_5(ARRAY,VAR1,VAR2,VAR3,VAR4,VAR5); VAR6 = (ARRAY) select 5
#define SELECT_7(ARRAY,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7) SELECT_6(ARRAY,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6); VAR7 = (ARRAY) select 6
#define SELECT_8(ARRAY,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8) SELECT_7(ARRAY,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7); VAR8 = (ARRAY) select 7
#define SELECT_9(ARRAY,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8,VAR9) SELECT_8(ARRAY,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8); VAR9 = (ARRAY) select 8
// Creates private declarations and selection from _this array for arguments.
// Recommended for function/script argument processing.
// Example:
// GIVEN:
// _this = ["unit", "group", "trigger"];
// WHEN:
// FUN_ARGS_3(_unit,_group,_trigger);
// THEN:
// private ["_unit","_group","_trigger"];
// _unit == "unit";
// _group == "group";
// _trigger == "trigger";
#define FUN_ARGS_1(VAR1) \
PVT_1(VAR1); \
SELECT_1(_this,VAR1)
#define FUN_ARGS_2(VAR1,VAR2) \
PVT_2(VAR1,VAR2); \
SELECT_2(_this,VAR1,VAR2)
#define FUN_ARGS_3(VAR1,VAR2,VAR3) \
PVT_3(VAR1,VAR2,VAR3); \
SELECT_3(_this,VAR1,VAR2,VAR3)
#define FUN_ARGS_4(VAR1,VAR2,VAR3,VAR4) \
PVT_4(VAR1,VAR2,VAR3,VAR4); \
SELECT_4(_this,VAR1,VAR2,VAR3,VAR4)
#define FUN_ARGS_5(VAR1,VAR2,VAR3,VAR4,VAR5) \
PVT_5(VAR1,VAR2,VAR3,VAR4,VAR5); \
SELECT_5(_this,VAR1,VAR2,VAR3,VAR4,VAR5)
#define FUN_ARGS_6(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6) \
PVT_6(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6); \
SELECT_6(_this,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6)
#define FUN_ARGS_7(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7) \
PVT_7(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7); \
SELECT_7(_this,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7)
#define FUN_ARGS_8(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8) \
PVT_8(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8); \
SELECT_8(_this,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8)
#define FUN_ARGS_9(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8,VAR9) \
PVT_9(VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8,VAR9); \
SELECT_9(_this,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8,VAR9)
// Adds a value to the end of an array.
// Example:
// GIVEN:
// _numbers = [1, 3, 5, 1];
// _number = 1;
// WHEN:
// PUSH(_numbers, _number);
// THEN:
// _numbers == [1, 3, 5, 1, 1];
#define PUSH(ARRAY,VAL) (ARRAY) set [count (ARRAY), (VAL)]
// Adds all values from one array to another.
// Example:
// GIVEN:
// _numbers = [5, 9, 6];
// _otherNumbers = [1, 3, 8];
// WHEN:
// PUSH_ALL(_numbers, _otherNumbers);
// THEN:
// _numbers == [5, 9, 6, 1, 3, 8];
#define PUSH_ALL(TO,FROM) { PUSH(TO,_x); } foreach (FROM)
// Filters the FROM array with a condition and adds the values that return true to the TO array.
// The values from the FROM array can be referenced by variable "_x".
// Example:
// GIVEN:
// _numbers = [];
// _otherNumbers = [1, 2, 3, 6, 8];
// _condition = {_x % 2 == 0};
// WHEN:
// FILTER_PUSH_ALL(_numbers, _otherNumbers, _condition);
// THEN:
// _numbers == [2, 6, 8];
#define FILTER_PUSH_ALL(TO,FROM,COND) { if (call COND) then { PUSH(TO,_x); }; } foreach (FROM)
// Selects a random value from an array.
// Example:
// GIVEN:
// _behaviours = ['AWARE', 'SAFE'];
// WHEN:
// _random = SELECT_RAND(_behaviours);
// THEN:
// _random == 'AWARE' or _random == 'AWARE'
#define SELECT_RAND(ARRAY) (ARRAY) select (floor (random (count (ARRAY))))
// Adds 1 to the variable.
// Example:
// GIVEN:
// _i = 0;
// WHEN:
// INC(_i);
// THEN:
// _i == 1;
#define INC(VAR) VAR = VAR + 1
// Subtracts 1 from the variable.
// Example:
// GIVEN:
// _i = 3;
// WHEN:
// DEC(_i);
// THEN:
// _i == 2;
#define DEC(VAR) VAR = VAR - 1
// Creates an array from given arguments.
// Example:
// GIVEN:
// WHEN:
// _array = AS_ARRAY_2('AWARE','SAFE');
// THEN:
// _array == ['AWARE', 'SAFE'];
#define AS_ARRAY_1(VAL1) [VAL1]
#define AS_ARRAY_2(VAL1,VAL2) [VAL1,VAL2]
#define AS_ARRAY_3(VAL1,VAL2,VAL3) [VAL1,VAL2,VAL3]
#define AS_ARRAY_4(VAL1,VAL2,VAL3,VAL4) [VAL1,VAL2,VAL3,VAL4]
#define AS_ARRAY_5(VAL1,VAL2,VAL3,VAL4,VAL5) [VAL1,VAL2,VAL3,VAL4,VAL5]
// Returns the longest axis of trigger.
// Example:
// GIVEN:
// _trigger = trigger;
// triggerArea _trigger == [300, 400, -31.2, false];
// WHEN:
// _longestAxis = LONGEST_AXIS(_trigger);
// THEN:
// _longestAxis == 400;
#define LONGEST_AXIS(TRG) (if ((triggerArea (TRG)) select 0 > (triggerArea (TRG)) select 1) then {(triggerArea (TRG)) select 0} else {(triggerArea (TRG)) select 1})
// Creates a private declaration for a variable and enables instant assigment.
// Example:
// GIVEN:
// WHEN:
// DECLARE(_group) = _x;
// THEN:
// private "_group"; _group = _x;
#define DECLARE(VAR) private #VAR; VAR
#endif //KAMI_MACROS_H raP C_ version 6 EditorData > sourceName ark_gtvt32_aerial_warfare addons CUP_BaseConfigs A3_Ui_F A3_Air_F_Heli_Light_01 A3_Characters_F ace_nouniformrestrictions ace_parachute AddonsMetaData [ randomSeed {uq ScenarioData R Intro g Mission OutroLoose ] OutroWin *^ C_ moveGridStep ?angleGridStep
>scaleGridStep ?autoGroupingDist Atoggles ItemIDProvider MarkerIDProvider Camera [ nextID c nextID pos rEZקB܌Cdir l?վ5.?up >eh?>aside l@? 0([ List k R items Item0 Item1 Item2 j Item3 Item4 f Item5 R className CUP_BaseConfigs name CUP_BaseConfigs className A3_Ui_F name Arma 3 - User Interface author Bohemia Interactive url https://www.arma3.com j className A3_Air_F name Arma 3 Alpha - Aircraft author Bohemia Interactive url https://www.arma3.com className A3_Characters_F name Arma 3 Alpha - Characters and Clothing author Bohemia Interactive url https://www.arma3.com f className ace_nouniformrestrictions name ACE3 - No Uniform Restrictions author ACE-Team url https://ace3.acemod.org/ className ace_parachute name ACE3 - Parachute author ACE-Team url https://ace3.acemod.org/ R author Cyruz g Intel x timeOfChanges DstartWeather >startWind =startWaves =forecastWeather >forecastWind =forecastWaves =forecastLightnings =year month day hour minute startFogDecay T<forecastFogDecay T< Intel Entities ] briefingName ark_gtvt32_aerial_warfare overviewText AH9 vs AH9 | No Safety timeOfChanges FstartWeather >startWind =startWaves =forecastWeather >forecastWind =forecastWaves =forecastLightnings =wavesForced windForced year month day hour minute startFogDecay T<forecastFogDecay T< Ditems C Item0 E Item1 Item2 0 Item3 Item4 n
Item5 A Item6 Item7 Item8 Item9 Item10 ` Item11 3 Item12 Item13 Item14 Item15 Item16 U Item17 ) Item18 Item19 Item20 Item21 y Item22 M Item23 1 Item24 Item25 Item26 Item27 Item28 e! Item29 9" Item30
# Item31 # Item32 $ Item33 % Item34 ]&