diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 47a517a42..74935d5dd 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -7,23 +7,21 @@ assignees: ''
---
-(Use English only.)
+
-## Before reporting
+
**Arma 3 Version:** `x.xx` (stable / rc / dev)
**CBA Version:** `3.x.x` (stable / dev + commit hash)
**ACE3 Version:** `3.x.x` (stable / dev + commit hash)
-**RHS USAF Version:** `0.x.x` (stable / dev + commit hash)
**Hearts and minds Version:** `1.x.x` (stable / dev + commit hash)
**Mods:**
```
- CBA_A3
- ace
-- RHS USAF
```
**Description:**
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
index 0805f9f85..53f4e88ca 100644
--- a/.github/ISSUE_TEMPLATE/question.md
+++ b/.github/ISSUE_TEMPLATE/question.md
@@ -7,4 +7,5 @@ assignees: ''
---
-(Use English only.)
+
+
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index d8df67e73..d7b202d79 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,4 +1,4 @@
-(Use English only.)
+
- FIX/Add: here write the line will be used in the changelog (@Author1, @Author2 ...).
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
index 086016438..fd0d67af7 100644
--- a/.github/release-drafter.yml
+++ b/.github/release-drafter.yml
@@ -8,9 +8,9 @@ template: |
Requires [ACE3](http://www.armaholic.com/page.php?id=28557).
_[Optionals :](https://github.com/Vdauphin/HeartsAndMinds/files/5147451/All.Hearts.and.Minds.mods.html.zip)_
+ - [CUP units and vehicles mod](https://forums.bistudio.com/topic/179326-community-upgrade-project-cup/), [Community Factions Project](https://github.com/tupolov/cfp/releases),
- [RHS USAF](http://www.armaholic.com/page.php?id=27149), [RHS AFRF](http://www.armaholic.com/page.php?id=27150), [RHS GREF](http://www.armaholic.com/page.php?id=30998), [RHS SAF](http://www.armaholic.com/page.php?id=32203),
- [RDS A2 Civilian Pack mod](https://forums.bistudio.com/topic/170165-rds-a2-civilian-pack/),
- - [CUP units and vehicles mod](https://forums.bistudio.com/topic/179326-community-upgrade-project-cup/), [Community Factions Project](https://github.com/tupolov/cfp/releases),
- [3CB Factions](https://steamcommunity.com/sharedfiles/filedetails/?id=1673456286), [Project OPFOR](https://forums.bistudio.com/topic/193185-project-opfor/), [Iraqi-Syrian Conflic](http://www.armaholic.com/page.php?id=28406), [Central African Rebels [SFF-R]](http://www.armaholic.com/page.php?id=32465),
- [FAP Units (Foes & Allies Pack)](http://www.armaholic.com/page.php?id=30706), [VETERAN](https://steamcommunity.com/workshop/filedetails/?id=1132375156),
- [Taliban Fighters by EricJ](http://www.armaholic.com/page.php?id=29543),
@@ -18,7 +18,7 @@ template: |
- [Iron Front 3 Lite](http://www.armaholic.com/page.php?id=24714), [Face of War WW2](http://www.armaholic.com/page.php?id=31945),
- [Operation: TREBUCHET](http://www.armaholic.com/page.php?id=28614), [Operation: TREBUCHET First Contact](https://steamcommunity.com/workshop/filedetails/?id=1572627279), [OPCAN - OPTRE Reskin Pack](https://steamcommunity.com/sharedfiles/filedetails/?id=2016312756).
- [Changelog](https://github.com/Vdauphin/HeartsAndMinds/milestone/62?closed=1):
+ [Changelog](https://github.com/Vdauphin/HeartsAndMinds/milestone/52?closed=1):
- Mission.sqm/Param.hpp not changed.
$CHANGES
\ No newline at end of file
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/mission.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/mission.sqf
index 9881d16b3..361020af2 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/mission.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/mission.sqf
@@ -1,5 +1,5 @@
-btc_version = [1, 20, 10];
+btc_version = [1, 21, 0];
diag_log format (["=BTC= HEARTS AND MINDS VERSION %1.%2.%3"] + btc_version);
//Param
@@ -8,6 +8,14 @@ btc_p_time = "btc_p_time" call BIS_fnc_getParamValue;
btc_p_acctime = "btc_p_acctime" call BIS_fnc_getParamValue;
private _p_db = ("btc_p_load" call BIS_fnc_getParamValue) isEqualTo 1;
btc_p_auto_db = "btc_p_auto_db" call BIS_fnc_getParamValue isEqualTo 1;
+btc_p_db_autoRestart = "btc_p_db_autoRestart" call BIS_fnc_getParamValue;
+btc_p_db_autoRestartTime = "btc_p_db_autoRestartTime" call BIS_fnc_getParamValue;
+
+//<< Respawn options >>
+btc_p_respawn_location = "btc_p_respawn_location" call BIS_fnc_getParamValue;
+btc_p_respawn_fromFOBToBase = ("btc_p_respawn_fromFOBToBase" call BIS_fnc_getParamValue) isEqualTo 1;
+btc_p_rallypointTimer = "btc_p_rallypointTimer" call BIS_fnc_getParamValue;
+btc_p_respawn_arsenal = ("btc_p_respawn_arsenal" call BIS_fnc_getParamValue) isEqualTo 1;
//<< Faction options >>
private _p_en = "btc_p_en" call BIS_fnc_getParamValue;
@@ -28,9 +36,6 @@ private _cache_info_def = "btc_p_cache_info_def" call BIS_fnc_getParamValue;
private _cache_info_ratio = "btc_p_cache_info_ratio" call BIS_fnc_getParamValue;
private _info_chance = "btc_p_info_chance" call BIS_fnc_getParamValue;
-//<< Medical options >>
-btc_p_redeploy = ("btc_p_redeploy" call BIS_fnc_getParamValue) isEqualTo 1;
-
//<< Skill options >>
btc_p_set_skill = ("btc_p_set_skill" call BIS_fnc_getParamValue) isEqualTo 1;
private _p_skill = [
@@ -49,7 +54,9 @@ private _p_skill = [
//<< Spawn options >>
btc_p_is_free_prob = ("btc_p_is_free_prob" call BIS_fnc_getParamValue)/100;
btc_p_mil_group_ratio = ("btc_p_mil_group_ratio" call BIS_fnc_getParamValue)/100;
+btc_p_mil_static_group_ratio = ("btc_p_mil_static_group_ratio" call BIS_fnc_getParamValue)/100;
btc_p_civ_group_ratio = ("btc_p_civ_group_ratio" call BIS_fnc_getParamValue)/100;
+btc_p_animals_group_ratio = ("btc_p_animals_group_ratio" call BIS_fnc_getParamValue)/100;
private _wp_house_probability = ("btc_p_wp_house_probability" call BIS_fnc_getParamValue)/100;
btc_p_veh_armed_ho = ("btc_p_veh_armed_ho" call BIS_fnc_getParamValue) isEqualTo 1;
btc_p_veh_armed_spawn_more = ("btc_p_veh_armed_spawn_more" call BIS_fnc_getParamValue) isEqualTo 1;
@@ -70,11 +77,12 @@ btc_p_autoloadout = "btc_p_autoloadout" call BIS_fnc_getParamValue;
//<< Other options >>
private _p_rep = "btc_p_rep" call BIS_fnc_getParamValue;
+btc_p_rep_notify = ("btc_p_rep_notify" call BIS_fnc_getParamValue) isEqualTo 1;
private _p_city_radius = ("btc_p_city_radius" call BIS_fnc_getParamValue) * 100;
btc_p_trigger = if (("btc_p_trigger" call BIS_fnc_getParamValue) isEqualTo 1) then {
- "this && !btc_db_is_saving && (false in (thisList apply {_x isKindOf 'Plane'})) && (false in (thisList apply {(_x isKindOf 'Helicopter') && (speed _x > 190)}))"
+ "this && (false in (thisList apply {_x isKindOf 'Plane'})) && (false in (thisList apply {(_x isKindOf 'Helicopter') && (speed _x > 190)}))"
} else {
- "this && !btc_db_is_saving"
+ "this"
};
btc_p_auto_headless = ("btc_p_auto_headless" call BIS_fnc_getParamValue) isEqualTo 1;
btc_p_debug = "btc_p_debug" call BIS_fnc_getParamValue;
@@ -109,6 +117,7 @@ private _allClassSorted = _allClassVehicles select {getNumber (_cfgVehicles >> _
if (isServer) then {
btc_final_phase = false;
+ btc_delay_createUnit = 0;
//City
btc_city_radius = _p_city_radius;
@@ -118,22 +127,22 @@ if (isServer) then {
btc_civ_veh_active = [];
//Database
- btc_db_is_saving = false;
btc_db_load = _p_db;
+ btc_db_serverCommandPassword = "btc_password"; //Define the same password in server.cfg like this: serverCommandPassword = "btc_password";
//Hideout
btc_hideouts = [];
btc_hideouts_id = 0;
- btc_hideouts_radius = 400;
+ btc_hideouts_radius = 800;
btc_hideout_n = _hideout_n;
if (btc_hideout_n isEqualTo 99) then {
btc_hideout_n = round random 5;
};
btc_hideout_safezone = 4000;
btc_hideout_range = 3500;
- btc_hideout_rinf_time = 600;
btc_hideout_cap_time = 1800;
btc_hideout_cap_checking = false;
+ btc_hideout_minRange = btc_hideout_range;
//IED
btc_ied_suic_time = 900;
@@ -143,7 +152,7 @@ if (isServer) then {
//FOB
btc_fobs = [[], [], []];
- btc_fob_rallypointTicket = 2;
+ btc_fob_rallypointTimer = 60 * btc_p_rallypointTimer;
//MIL
btc_p_mil_wp_ratios = [_wp_house_probability, (1 - _wp_house_probability) / 1.5 + _wp_house_probability];
@@ -159,41 +168,49 @@ if (isServer) then {
btc_global_reputation = _p_rep;
btc_rep_militia_call_time = 600;
btc_rep_militia_called = - btc_rep_militia_call_time;
+ btc_rep_delayed = [0, []];
//Chem
btc_chem_decontaminate = [btc_bigShower];
- missionNamespace setVariable ["btc_chem_contaminated", [], true];
+ btc_chem_contaminated = []; publicVariable "btc_chem_contaminated"; //Preserve reference
//Spect
- missionNamespace setVariable ["btc_spect_emp", [], true];
+ btc_spect_emp = []; publicVariable "btc_spect_emp"; //Preserve reference
//Cache
btc_cache_type = [
_allClassSorted select {
_x isKindOf "ReammoBox_F" &&
- getText(_cfgVehicles >> _x >> "model") isEqualTo "\A3\weapons_F\AmmoBoxes\AmmoBox_F"
+ {getText(_cfgVehicles >> _x >> "model") isEqualTo "\A3\weapons_F\AmmoBoxes\AmmoBox_F"}
},
["Land_PlasticCase_01_small_black_CBRN_F", "Land_PlasticCase_01_small_olive_CBRN_F", "Land_PlasticCase_01_small_CBRN_F"]
];
- private _weapons_usefull = "true" configClasses (configFile >> "CfgWeapons") select {(getNumber (_x >> 'type') isEqualTo 1) AND !(getArray(_x >> 'magazines') isEqualTo []) AND (getNumber (_x >> 'scope') isEqualTo 2)};
+ private _weapons_usefull = "true" configClasses (configFile >> "CfgWeapons") select {
+ getNumber (_x >> 'type') isEqualTo 1 &&
+ {!(getArray (_x >> 'magazines') isEqualTo [])} &&
+ {getNumber (_x >> 'scope') isEqualTo 2}
+ };
btc_cache_weapons_type = _weapons_usefull apply {configName _x};
//Hideout classname
btc_type_campfire = ["MetalBarrel_burning_F"] + (_allClassSorted select {_x isKindOf "Land_Campfire_F"});
btc_type_Scrapyard = _allClassSorted select {
_x isKindOf "Scrapyard_base_F" &&
- {(toLower _x find "scrap") isEqualTo -1}
+ {!("scrap" in toLower _x)}
};
btc_type_bigbox = ["Box_FIA_Ammo_F", "Box_East_AmmoVeh_F", "CargoNet_01_box_F", "O_CargoNet_01_ammo_F"] + btc_type_Scrapyard;
btc_type_seat = ["Land_WoodenLog_F", "Land_CampingChair_V2_F", "Land_CampingChair_V1_folded_F", "Land_CampingChair_V1_F"];
btc_type_sleepingbag = _allClassSorted select {_x isKindOf "Land_Sleeping_bag_F"};
- btc_type_tent = ["Land_TentA_F", "Land_TentDome_F"] + (_allClassSorted select {_x isKindOf "Land_TentSolar_01_base_F" && !(_x isKindOf "Land_TentSolar_01_folded_base_F")});
+ btc_type_tent = ["Land_TentA_F", "Land_TentDome_F"] + (_allClassSorted select {
+ _x isKindOf "Land_TentSolar_01_base_F" &&
+ {!(_x isKindOf "Land_TentSolar_01_folded_base_F")}
+ });
btc_type_camonet = ["Land_IRMaskingCover_02_F"] + (_allClassSorted select {_x isKindOf "Shelter_base_F"});
btc_type_satelliteAntenna = _allClassSorted select {_x isKindOf "Land_SatelliteAntenna_01_F"};
//Side
btc_side_ID = 0;
- btc_side_list = ["supply", "mines", "vehicle", "get_city", "tower", "civtreatment", "checkpoint", "convoy", "rescue", "capture_officer", "hostage", "hack", "kill", "EMP"]; // On ground (Side "convoy" and "capture_officer" are not design for map with different islands. Start and end city can be on different islands.)
+ btc_side_list = ["supply", "mines", "vehicle", "get_city", "tower", "civtreatment", "checkpoint", "convoy", "rescue", "capture_officer", "hostage", "hack", "kill", "EMP", "removeRubbish"]; // On ground (Side "convoy" and "capture_officer" are not design for map with different islands. Start and end city can be on different islands.)
if (btc_p_sea) then {btc_side_list append ["civtreatment_boat", "underwater_generator"]}; // On sea
if (btc_p_chem) then {btc_side_list pushBack "chemicalLeak"};
btc_side_list_use = [];
@@ -214,14 +231,14 @@ if (isServer) then {
btc_type_portable_light = _allClassSorted select {_x isKindOf "Land_PortableLight_single_F"};
btc_type_portableLamp = _allClassSorted select {
_x isKindOf "Land_PortableLight_02_base_F" ||
- _x isKindOf "TentLamp_01_standing_base_F"
+ {_x isKindOf "TentLamp_01_standing_base_F"}
};
btc_type_tentLamp = _allClassSorted select {_x isKindOf "TentLamp_01_base_F"};
btc_type_first_aid_kits = ["Land_FirstAidKit_01_open_F", "Land_FirstAidKit_01_closed_F"];
btc_type_body_bags = _allClassSorted select {
_x isKindOf "Land_Bodybag_01_base_F" ||
- _x isKindOf "Land_Bodybag_01_empty_base_F" ||
- _x isKindOf "Land_Bodybag_01_folded_base_F"
+ {_x isKindOf "Land_Bodybag_01_empty_base_F"} ||
+ {_x isKindOf "Land_Bodybag_01_folded_base_F"}
};
btc_type_signs = _allClassSorted select {_x isKindOf "Land_Sign_Mines_F"};
btc_type_bloods = _allClassSorted select {_x isKindOf "Blood_01_Base_F"};
@@ -231,23 +248,26 @@ if (isServer) then {
btc_type_foodSack = _allClassSorted select {_x isKindOf "Land_FoodSack_01_empty_base_F"};
btc_type_PaperBox = _allClassSorted select {
_x isKindOf "Land_PaperBox_01_small_ransacked_base_F" ||
- _x isKindOf "Land_PaperBox_01_small_open_base_F" ||
- _x isKindOf "Land_PaperBox_01_small_destroyed_base_F"
+ {_x isKindOf "Land_PaperBox_01_small_open_base_F"} ||
+ {_x isKindOf "Land_PaperBox_01_small_destroyed_base_F"}
};
btc_type_EmergencyBlanket = _allClassSorted select {_x isKindOf "Land_EmergencyBlanket_01_base_F"};
- btc_type_Sponsor = _allClassSorted select {_x isKindOf "SignAd_Sponsor_F" && {(toLower _x find "idap") != -1}};
+ btc_type_Sponsor = _allClassSorted select {
+ _x isKindOf "SignAd_Sponsor_F" &&
+ {"idap" in toLower _x}
+ };
btc_type_PlasticCase = _allClassSorted select {_x isKindOf "PlasticCase_01_base_F"};
btc_type_MedicalTent = _allClassSorted select {_x isKindOf "Land_MedicalTent_01_base_F"};
btc_type_cargo_ruins = _allClassSorted select {
_x isKindOf "Ruins_F" &&
{
- (toLower _x find "cargo40") != -1 ||
- (toLower _x find "cargo20") != -1
+ "cargo40" in toLower _x ||
+ "cargo20" in toLower _x
}
};
btc_type_spill = ["Oil_Spill_F", "Land_DirtPatch_01_6x8_F"] + (_allClassSorted select {
_x isKindOf "Land_DirtPatch_02_base_F" ||
- _x isKindOf "WaterSpill_01_Base_F"
+ {_x isKindOf "WaterSpill_01_Base_F"}
});
btc_type_tarp = _allClassSorted select {_x isKindOf "Tarp_01_base_F"};
btc_type_SCBA = _allClassSorted select {_x isKindOf "SCBACylinder_01_base_F"};
@@ -262,7 +282,7 @@ if (isServer) then {
btc_type_solarPanel = _allClassSorted select {_x isKindOf "Land_SolarPanel_04_base_F"};
//BTC Vehicles in missions.sqm
- btc_vehicles = [btc_veh_1, btc_veh_2, btc_veh_3, btc_veh_4, btc_veh_5, btc_veh_6, btc_veh_7, btc_veh_8, btc_veh_9, btc_veh_10, btc_veh_11, btc_veh_12, btc_veh_13, btc_veh_14, btc_veh_15, btc_veh_16];
+ btc_vehicles = [btc_veh_1, btc_veh_2, btc_veh_3, btc_veh_4, btc_veh_5, btc_veh_6, btc_veh_7, btc_veh_8, btc_veh_9, btc_veh_10, btc_veh_11, btc_veh_12, btc_veh_13, btc_veh_14, btc_veh_15, btc_veh_16, btc_veh_17, btc_veh_18];
btc_helo = [btc_helo_1];
// The two arrays below are prefixes of buildings and their multiplier.
@@ -295,22 +315,39 @@ if (isServer) then {
];
btc_buildings_changed = [];
+ //TAGS
+ btc_type_tags = ["Land_Graffiti_01_F", "Land_Graffiti_02_F", "Land_Graffiti_03_F", "Land_Graffiti_04_F", "Land_Graffiti_05_F"];
+ btc_type_tags_sentences = [
+ "STR_BTC_HAM_TAG_GO",
+ "STR_BTC_HAM_TAG_LN",
+ "STR_BTC_HAM_TAG_WWKY",
+ "STR_BTC_HAM_TAG_BA",
+ "STR_BTC_HAM_TAG_GH",
+ "STR_BTC_HAM_TAG_IE",
+ "STR_BTC_HAM_TAG_DWY",
+ "STR_BTC_HAM_TAG_WHY",
+ "STR_BTC_HAM_TAG_YGD"
+ ];
+ btc_tags_player = [];
+ btc_tags_server = [];
+
//IED
private _ieds = ["Land_GarbageContainer_closed_F", "Land_GarbageContainer_open_F", "Land_Portable_generator_F", "Land_WoodenBox_F", "Land_BarrelTrash_grey_F", "Land_Sacks_heap_F", "Land_Wreck_Skodovka_F", "Land_WheelieBin_01_F", "Land_GarbageBin_03_F"] + btc_type_pallet + btc_type_barrel + (_allClassSorted select {
_x isKindOf "GasTank_base_F" ||
- _x isKindOf "Garbage_base_F" ||
+ {_x isKindOf "Garbage_base_F"} ||
(_x isKindOf "Constructions_base_F" &&
{
- (toLower _x find "bricks") != -1
+ "bricks" in toLower _x
}) ||
(_x isKindOf "Wreck_base_F" &&
{
- (toLower _x find "car") != -1 ||
- (toLower _x find "offroad") != -1
+ "car" in toLower _x ||
+ "offroad" in toLower _x
})
});
- _ieds = _ieds - ["Land_Garbage_line_F","Land_Garbage_square3_F","Land_Garbage_square5_F"];
- btc_model_ieds = _ieds apply {(toLower getText(_cfgVehicles >> _x >> "model")) select [1]};
+ btc_type_ieds = _ieds - ["Land_Garbage_line_F","Land_Garbage_square3_F","Land_Garbage_square5_F"];
+ btc_model_ieds = btc_type_ieds apply {(toLower getText(_cfgVehicles >> _x >> "model")) select [1]};
+ btc_type_blacklist = btc_type_tags + ["UserTexture1m_F"]; publicVariable "btc_type_blacklist";
btc_groundWeaponHolder = [];
};
@@ -321,7 +358,7 @@ if (isServer) then {
private _allfaction = ["AFGCIV","CIV_F","DEFAULT","CFP_C_AFG","CFP_C_AFRCHRISTIAN","CFP_C_AFRISLAMIC","CFP_C_ASIA","CFP_C_CHERNO_WIN","CFP_C_MALDEN","CFP_C_ME","CUP_C_RU","CUP_C_CHERNARUS","CUP_C_SAHRANI","CUP_C_TK","GM_FC_GC_CIV","GM_FC_GE_CIV","LIB_CIV","LOP_AFR_CIV","LOP_CHR_CIV","LOP_TAK_CIV","CIV_IDAP_F","OPTRE_UEG_CIV","RDS_RUS_CIV","UK3CB_ADC_C","UK3CB_CHC_C","UK3CB_TKC_C","UNSUNG_C"]; //All factions
_p_civ = _allfaction select _p_civ; //Select faction selected from mission parameter
_p_civ_veh = _allfaction select _p_civ_veh; //Select faction selected from mission parameter
-private _allclasse = [[_p_civ]] call btc_fnc_civ_class; //Create classes from factions, you can combine factions from the SAME side : [[_p_civ , "btc_ac","LOP_TAK_CIV"]] call btc_fnc_civ_class.
+private _allclasse = [[_p_civ]] call btc_fnc_civ_class; //Create classes from factions, you can combine factions from the SAME side : [[_p_civ, "btc_ac","LOP_TAK_CIV"]] call btc_fnc_civ_class.
//Save class name to global variable
btc_civ_type_units = _allclasse select 0;
@@ -329,17 +366,25 @@ _allclasse = [[_p_civ_veh]] call btc_fnc_civ_class;
btc_civ_type_veh = _allclasse select 2;
btc_civ_type_boats = _allclasse select 1;
-btc_w_civs = ["V_Rangemaster_belt", "arifle_Mk20_F", "30Rnd_556x45_Stanag", "hgun_ACPC2_F", "9Rnd_45ACP_Mag"];
+btc_w_civs = [
+ ["srifle_DMR_06_hunter_F", "sgun_HunterShotgun_01_F", "srifle_DMR_06_hunter_khs_F", "sgun_HunterShotgun_01_Sawedoff_F", "Hgun_PDW2000_F", "arifle_AKM_F", "arifle_AKS_F"],
+ ["hgun_Pistol_heavy_02_F", "hgun_Rook40_F", "hgun_Pistol_01_F"]
+];
btc_g_civs = ["HandGrenade", "MiniGrenade", "ACE_M84", "ACE_M84"];
+// ANIMALS
+btc_animals_type = ["Hen_random_F", "Cock_random_F", "Fin_random_F", "Alsatian_Random_F", "Goat_random_F", "Sheep_random_F"];
+
//FOB
btc_fob_mat = "Land_Cargo20_blue_F";
btc_fob_structure = "Land_Cargo_HQ_V1_F";
btc_fob_flag = "Flag_NATO_F";
btc_fob_id = 0;
+btc_fob_minDistance = 1500;
//IED
btc_type_ieds_ace = ["IEDLandBig_F", "IEDLandSmall_F"];
+btc_ied_deleteOn = -1;
//Int
btc_int_radius_orders = 25;
@@ -362,10 +407,10 @@ btc_supplies_mat = [
//Hazmat
btc_type_hazmat = ["HazmatBag_01_F", "Land_MetalBarrel_F"] + (_allClassSorted select {
_x isKindOf "Land_GarbageBarrel_02_base_F" ||
- _x isKindOf "Land_FoodContainer_01_F" ||
- _x isKindOf "Land_CanisterFuel_F" ||
- _x isKindOf "CBRNContainer_01_base_F" ||
- _x isKindOf "PlasticCase_01_base_F"
+ {_x isKindOf "Land_FoodContainer_01_F"} ||
+ {_x isKindOf "Land_CanisterFuel_F"} ||
+ {_x isKindOf "CBRNContainer_01_base_F"} ||
+ {_x isKindOf "PlasticCase_01_base_F"}
});
//Containers
@@ -382,12 +427,12 @@ if (isServer) then {
//"Static"
] + (_allClassSorted select {(
_x isKindOf "GMG_TriPod" ||
- _x isKindOf "StaticMortar" ||
- _x isKindOf "HMG_01_base_F" ||
- _x isKindOf "AA_01_base_F" ||
- _x isKindOf "AT_01_base_F") && (
+ {_x isKindOf "StaticMortar"} ||
+ {_x isKindOf "HMG_01_base_F"} ||
+ {_x isKindOf "AA_01_base_F"} ||
+ {_x isKindOf "AT_01_base_F"}) && {
getNumber (_cfgVehicles >> _x >> "side") isEqualTo ([east, west, independent, civilian] find btc_player_side)
- )
+ }
});
([_rearming_static] call btc_fnc_find_veh_with_turret) params ["_rearming_static", "_magazines_static"];
@@ -436,7 +481,11 @@ if (isServer) then {
//"Ammobox"
"Land_WoodenBox_F"
- ] + (_allClassSorted select {_x isKindOf "ReammoBox_F" && !(_x isKindOf "Slingload_01_Base_F") && !(_x isKindOf "Pod_Heli_Transport_04_base_F")}),
+ ] + (_allClassSorted select {
+ _x isKindOf "ReammoBox_F" &&
+ {!(_x isKindOf "Slingload_01_Base_F")} &&
+ {!(_x isKindOf "Pod_Heli_Transport_04_base_F")}
+ }),
[
//"Containers"
@@ -470,7 +519,7 @@ btc_log_def_can_load = (_c_array select 3);
btc_log_def_placeable = ((_c_array select 0) + (_c_array select 3) + (_c_array select 4) + (_c_array select 5) + (_c_array select 6) + _food + _water + btc_type_hazmat) select {
getNumber(_cfgVehicles >> _x >> "ace_dragging_canCarry") isEqualTo 0
};
-btc_log_vehicle_selected = objNull;
+btc_tow_vehicleSelected = objNull;
btc_log_placing_max_h = 12;
btc_log_placing = false;
btc_log_obj_created = [];
@@ -582,7 +631,7 @@ btc_lift_HUD_y = 0.848;
btc_hq = objNull;
// Get all faction from mod there are currently running
//copyToClipboard str (["EN"] call btc_fnc_get_class);
-private _allfaction = ["BLU_G_F","IND_E_F","IND_F","IND_G_F","IND_L_F","OPF_F","OPF_G_F","TBAN","00VTN_MILFOR_USMCW","01VTN_MILFOR_USMCD","05VTN_MILFOR_TIASF","AFR_ARMY","ARA_ARMY","ARL_ARMY","BLU_F","CEC_ARMY","CFP_B_AFGPOLICE","CFP_B_CAF","CFP_B_CZARMY_WDL","CFP_B_ILIDF","CFP_B_IQARMY","CFP_B_IQPOLICE","CFP_B_KEARMY","CFP_B_MLARMY","CFP_B_NAARMY","CFP_B_PESH","CFP_B_UGARMY","CFP_B_USRANGERS_WDL","CFP_B_USSEALS_DES","CFP_B_USSEALS_WDL","CFP_B_YPG","CFP_I_ALNUSRA","CFP_I_IS","CFP_I_SDREBELS","CFP_I_SDREBELSRF","CFP_I_SSARMY","CFP_I_TUAREG","CFP_I_WESTULTRA","CFP_O_ABUSAYYAF","CFP_O_ALQAEDA","CFP_O_ALSHABAAB","CFP_O_ANSARALLAH","CFP_O_BOKOHARAM","CFP_O_CFREBELS","CFP_O_HAMAS","CFP_O_HEZBOLLAH","CFP_O_IQARMY","CFP_O_IRARMY","CFP_O_IS","CFP_O_SDARMY","CFP_O_SDMILITIA","CFP_O_SOREBEL","CFP_O_SSREBELS","CFP_O_SYARMY","CFP_O_TBAN","CUP_B_CDF","CUP_B_CZ","CUP_B_GB","CUP_B_HIL","CUP_B_RNZN","CUP_B_US_ARMY","CUP_B_USMC","CUP_I_NAPA","CUP_I_RACS","CUP_I_UN","CUP_O_CHDKZ","CUP_O_RU","CUP_O_SLA","CUP_O_TK","CUP_O_TK_MILITIA","CUP_STATIC_SHIPS","CFP_B_CDF_SNW","CFP_B_DEARMY_WDL","CFP_B_GBARMY_WDL","CFP_B_USARMY_1991_DES","CFP_B_USARMY_1991_WDL","CFP_B_USARMY_2003_DES","CFP_B_USARMY_2003_WDL","CFP_B_USCIA","CFP_B_USMC_DES","CFP_I_WAGNER","CFP_I_WAGNER_WDL","CFP_I_WAGNER_WIN","CFP_O_RUMVD","CFP_O_WAGNER","CFP_O_WAGNER_WDL","CFP_O_WAGNER_WIN","CUP_B_GER","CUP_I_PMC_ION","CUP_I_TK_GUE","CFP_B_AFARMY","CFP_B_USARMY_WDL","CFP_O_CHDKZ_SNW","CFP_O_RUARMY_DES","OPF_R_F","BLU_CTRG_F","BLU_GEN_F","BLU_T_F","CFP_O_NKARMY","OPF_GEN_F","FAP_ARMY","FOW_HEER","FOW_IJA_NAS","FOW_UK_FAA","FOW_USA_NAVY","FOW_WAFFENSS","FOW_AUS","FOW_HI","FOW_IJA","FOW_LUFTWAFFE","FOW_UK","FOW_USA","FOW_USA_P","FOW_USMC","GAL_ARMY","GANGBLUE_ARMY","GANGRED_ARMY","GM_FC_DK","GM_FC_GC","GM_FC_GC_BGS","GM_FC_GE","GM_FC_GE_BGS","GM_FC_PL","IBR_ZETABORN_FACTION","ISC_ALNUSRA_I","ISC_IP_B","ISC_IS_I","ISC_IS_O","ISC_PESH_B","ISC_YPG_B","LM_OPCAN_URA","LIB_ACI","LIB_ARR","LIB_DAK","LIB_FFI","LIB_FSJ","LIB_GUER","LIB_MKHL","LIB_NAC","LIB_NKVD","LIB_RAAF","LIB_RBAF","LIB_RKKA","LIB_RKKA_W","LIB_UK_AB","LIB_UK_AB_W","LIB_UK_ARMY","LIB_UK_ARMY_W","LIB_UK_DR","LIB_US_101AB","LIB_US_82AB","LIB_US_ARMY","LIB_US_ARMY_W","LIB_US_RANGERS","LIB_WEHRMACHT","LIB_WEHRMACHT_W","LM_OPCAN_CGC","LM_OPCAN_CMA","LM_OPCAN_CPD","LM_OPCAN_FRI","LM_OPCAN_FRI_DES","LM_OPCAN_FRI_WDL","LM_OPCAN_KOS","LM_OPCAN_SU","LM_OPCAN_UNSC_ARMY","LM_OPCAN_UNSC_ARMY_D","LM_OPCAN_UNSC_ARMY_MIX","LM_OPCAN_UNSC_ARMY_RES","LM_OPCAN_UNSC_MC","LM_OPCAN_UNSC_MC_CEA","LM_OPCAN_UNSC_MC_D","LM_OPCAN_UNSC_MC_INF","LOP_AA","LOP_AFR","LOP_AFR_OPF","LOP_AM","LOP_AM_OPF","LOP_BH","LOP_CDF","LOP_CHDKZ","LOP_GRE","LOP_IA","LOP_IRA","LOP_IRAN","LOP_ISTS","LOP_ISTS_OPF","LOP_NAPA","LOP_NK","LOP_PESH","LOP_PESH_IND","LOP_PMC","LOP_RACS","LOP_SLA","LOP_SYR","LOP_TKA","LOP_TRK","LOP_UA","LOP_UKR","LOP_UN","LOP_US","LOP_UVF","BLU_W_F","MOL_ARMY","O_CAR","OPF_T_F","OPTRE_INS","OPTRE_PD","OPTRE_UNSC","OPTRE_FC_COVENANT","ISC_IA_B","RHS_FACTION_MSV","RHS_FACTION_RVA","RHS_FACTION_TV","RHS_FACTION_VDV","RHS_FACTION_VMF","RHS_FACTION_VPVO","RHS_FACTION_VV","RHS_FACTION_VVS","RHS_FACTION_VVS_C","ISC_SAA_O","RHSGREF_FACTION_CDF_AIR","RHSGREF_FACTION_CDF_AIR_B","RHSGREF_FACTION_CHDKZ","RHSSAF_FACTION_AIRFORCE","RHSSAF_FACTION_AIRFORCE_OPFOR","RHSSAF_FACTION_ARMY","RHSSAF_FACTION_ARMY_OPFOR","RHSSAF_FACTION_UN","RHS_FACTION_SOCOM","RHS_FACTION_USAF","RHS_FACTION_USARMY_D","RHS_FACTION_USMC_D","RHS_FACTION_USN","RHSGREF_FACTION_CDF_GROUND","RHSGREF_FACTION_CDF_GROUND_B","RHSGREF_FACTION_NATIONALIST","RHSGREF_FACTION_TLA","RHSGREF_FACTION_UN","SG_STURM","SG_STURMPANZER","IND_C_F","RHS_FACTION_USARMY_WD","RHS_FACTION_USMC_WD","RHSGREF_FACTION_CDF_NG","RHSGREF_FACTION_CDF_NG_B","RHSGREF_FACTION_CHDKZ_G","RHSGREF_FACTION_HIDF","UK3CB_AAF_B","UK3CB_AAF_I","UK3CB_AAF_O","UK3CB_ADA_B","UK3CB_ADA_I","UK3CB_ADA_O","UK3CB_ADC_B","UK3CB_ADC_I","UK3CB_ADC_O","UK3CB_ADE_I","UK3CB_ADE_O","UK3CB_ADG_B","UK3CB_ADG_I","UK3CB_ADG_O","UK3CB_ADM_B","UK3CB_ADM_I","UK3CB_ADM_O","UK3CB_ADP_B","UK3CB_ADP_I","UK3CB_ADP_O","UK3CB_ADR_B","UK3CB_ADR_I","UK3CB_ADR_O","UK3CB_ANA_B","UK3CB_ANP_B","UK3CB_CCM_B","UK3CB_CCM_I","UK3CB_CCM_O","UK3CB_CHC_B","UK3CB_CHC_I","UK3CB_CHC_O","UK3CB_CPD_B","UK3CB_CPD_I","UK3CB_CPD_O","UK3CB_CW_SOV_O_EARLY","UK3CB_CW_SOV_O_LATE","UK3CB_CW_US_B_EARLY","UK3CB_CW_US_B_LATE","UK3CB_TKA_B","UK3CB_TKA_I","UK3CB_TKA_O","UK3CB_TKC_B","UK3CB_TKC_I","UK3CB_TKC_O","UK3CB_TKM_B","UK3CB_TKM_I","UK3CB_TKM_O","UK3CB_TKP_B","UK3CB_TKP_I","UK3CB_TKP_O","UK3CB_UN_B","UK3CB_UN_I","UNSUNG_AUS","UNSUNG_E","UNSUNG_EV","UNSUNG_G","UNSUNG_NZ","UNSUNG_ROK","UNSUNG_W","00VTN_MILFOR_MIW_EMR","00VTN_MILITIA_RU","01VTN_INSURGENTS_RU","01VTN_MILFOR_MIW","02VTN_MILFOR_RC","03VTN_INSURGENTS_ISIL","03VTN_MILFOR_SPPU","06VTN_MILFOR_VVS","07VTN_MILFOR_TNG"]; //All factions
+private _allfaction = ["BLU_G_F","IND_E_F","IND_F","IND_G_F","IND_L_F","OPF_F","OPF_G_F","TBAN","00VTN_MILFOR_USMCW","01VTN_MILFOR_USMCD","05VTN_MILFOR_TIASF","AFR_ARMY","ARA_ARMY","ARL_ARMY","BLU_F","CEC_ARMY","CFP_B_AFGPOLICE","CFP_B_CAF","CFP_B_CZARMY_WDL","CFP_B_ILIDF","CFP_B_IQARMY","CFP_B_IQPOLICE","CFP_B_KEARMY","CFP_B_MLARMY","CFP_B_NAARMY","CFP_B_PESH","CFP_B_UGARMY","CFP_B_USRANGERS_WDL","CFP_B_USSEALS_DES","CFP_B_USSEALS_WDL","CFP_B_YPG","CFP_I_ALNUSRA","CFP_I_IS","CFP_I_SDREBELS","CFP_I_SDREBELSRF","CFP_I_SSARMY","CFP_I_TUAREG","CFP_I_WESTULTRA","CFP_O_ABUSAYYAF","CFP_O_ALQAEDA","CFP_O_ALSHABAAB","CFP_O_ANSARALLAH","CFP_O_BOKOHARAM","CFP_O_CFREBELS","CFP_O_HAMAS","CFP_O_HEZBOLLAH","CFP_O_IQARMY","CFP_O_IRARMY","CFP_O_IS","CFP_O_SDARMY","CFP_O_SDMILITIA","CFP_O_SOREBEL","CFP_O_SSREBELS","CFP_O_SYARMY","CFP_O_TBAN","CUP_B_CDF","CUP_B_CZ","CUP_B_GB","CUP_B_HIL","CUP_B_RNZN","CUP_B_US_ARMY","CUP_B_USMC","CUP_I_NAPA","CUP_I_RACS","CUP_I_UN","CUP_O_CHDKZ","CUP_O_RU","CUP_O_SLA","CUP_O_TK","CUP_O_TK_MILITIA","CUP_STATIC_SHIPS","CFP_B_CDF_SNW","CFP_B_DEARMY_WDL","CFP_B_GBARMY_WDL","CFP_B_USARMY_1991_DES","CFP_B_USARMY_1991_WDL","CFP_B_USARMY_2003_DES","CFP_B_USARMY_2003_WDL","CFP_B_USCIA","CFP_B_USMC_DES","CFP_I_WAGNER","CFP_I_WAGNER_WDL","CFP_I_WAGNER_WIN","CFP_O_RUARMY_DES","CFP_O_RUMVD","CFP_O_WAGNER","CFP_O_WAGNER_WDL","CFP_O_WAGNER_WIN","CUP_B_GER","CUP_I_PMC_ION","CUP_I_TK_GUE","CFP_B_AFARMY","CFP_B_USARMY_WDL","CFP_O_CHDKZ_SNW","OPF_R_F","BLU_CTRG_F","BLU_GEN_F","BLU_T_F","CFP_O_NKARMY","OPF_GEN_F","FAP_ARMY","FOW_HEER","FOW_IJA_NAS","FOW_UK_FAA","FOW_USA_NAVY","FOW_WAFFENSS","FOW_AUS","FOW_HI","FOW_IJA","FOW_LUFTWAFFE","FOW_UK","FOW_USA","FOW_USA_P","FOW_USMC","GAL_ARMY","GANGBLUE_ARMY","GANGRED_ARMY","GM_FC_DK","GM_FC_GC","GM_FC_GC_BGS","GM_FC_GE","GM_FC_GE_BGS","GM_FC_PL","IBR_ZETABORN_FACTION","ISC_ALNUSRA_I","ISC_IP_B","ISC_IS_I","ISC_IS_O","ISC_PESH_B","ISC_YPG_B","LM_OPCAN_URA","LIB_ACI","LIB_ARR","LIB_DAK","LIB_FFI","LIB_FSJ","LIB_GUER","LIB_MKHL","LIB_NAC","LIB_NKVD","LIB_RAAF","LIB_RBAF","LIB_RKKA","LIB_RKKA_W","LIB_UK_AB","LIB_UK_AB_W","LIB_UK_ARMY","LIB_UK_ARMY_W","LIB_UK_DR","LIB_US_101AB","LIB_US_82AB","LIB_US_ARMY","LIB_US_ARMY_W","LIB_US_RANGERS","LIB_WEHRMACHT","LIB_WEHRMACHT_W","LM_OPCAN_CGC","LM_OPCAN_CMA","LM_OPCAN_CPD","LM_OPCAN_FRI","LM_OPCAN_FRI_DES","LM_OPCAN_FRI_WDL","LM_OPCAN_KOS","LM_OPCAN_SU","LM_OPCAN_UNSC_ARMY","LM_OPCAN_UNSC_ARMY_D","LM_OPCAN_UNSC_ARMY_MIX","LM_OPCAN_UNSC_ARMY_RES","LM_OPCAN_UNSC_MC","LM_OPCAN_UNSC_MC_CEA","LM_OPCAN_UNSC_MC_D","LM_OPCAN_UNSC_MC_INF","LOP_AA","LOP_AFR","LOP_AFR_OPF","LOP_AM","LOP_AM_OPF","LOP_BH","LOP_CDF","LOP_CHDKZ","LOP_GRE","LOP_IA","LOP_IRA","LOP_IRAN","LOP_ISTS","LOP_ISTS_OPF","LOP_NAPA","LOP_NK","LOP_PESH","LOP_PESH_IND","LOP_PMC","LOP_RACS","LOP_SLA","LOP_SYR","LOP_TKA","LOP_TRK","LOP_UA","LOP_UKR","LOP_UN","LOP_US","LOP_UVF","BLU_W_F","MOL_ARMY","O_CAR","OPF_T_F","OPTRE_FC_COVENANT","OPTRE_INS","OPTRE_PD","OPTRE_UNSC","ISC_IA_B","RHS_FACTION_MSV","RHS_FACTION_RVA","RHS_FACTION_TV","RHS_FACTION_VDV","RHS_FACTION_VMF","RHS_FACTION_VPVO","RHS_FACTION_VV","RHS_FACTION_VVS","RHS_FACTION_VVS_C","ISC_SAA_O","RHSGREF_FACTION_CDF_AIR","RHSGREF_FACTION_CDF_AIR_B","RHSGREF_FACTION_CHDKZ","RHSSAF_FACTION_AIRFORCE","RHSSAF_FACTION_AIRFORCE_OPFOR","RHSSAF_FACTION_ARMY","RHSSAF_FACTION_ARMY_OPFOR","RHSSAF_FACTION_UN","RHS_FACTION_SOCOM","RHS_FACTION_USAF","RHS_FACTION_USARMY_D","RHS_FACTION_USMC_D","RHS_FACTION_USN","RHSGREF_FACTION_CDF_GROUND","RHSGREF_FACTION_CDF_GROUND_B","RHSGREF_FACTION_NATIONALIST","RHSGREF_FACTION_TLA","RHSGREF_FACTION_TLA_G","RHSGREF_FACTION_UN","SG_STURM","SG_STURMPANZER","IND_C_F","RHS_FACTION_USARMY_WD","RHS_FACTION_USMC_WD","RHSGREF_FACTION_CDF_NG","RHSGREF_FACTION_CDF_NG_B","RHSGREF_FACTION_CHDKZ_G","RHSGREF_FACTION_HIDF","UK3CB_AAF_B","UK3CB_AAF_I","UK3CB_AAF_O","UK3CB_ADA_B","UK3CB_ADA_I","UK3CB_ADA_O","UK3CB_ADC_B","UK3CB_ADC_I","UK3CB_ADC_O","UK3CB_ADE_I","UK3CB_ADE_O","UK3CB_ADG_B","UK3CB_ADG_I","UK3CB_ADG_O","UK3CB_ADM_B","UK3CB_ADM_I","UK3CB_ADM_O","UK3CB_ADP_B","UK3CB_ADP_I","UK3CB_ADP_O","UK3CB_ADR_B","UK3CB_ADR_I","UK3CB_ADR_O","UK3CB_ANA_B","UK3CB_ANP_B","UK3CB_CCM_B","UK3CB_CCM_I","UK3CB_CCM_O","UK3CB_CHC_B","UK3CB_CHC_I","UK3CB_CHC_O","UK3CB_CHD_B","UK3CB_CHD_I","UK3CB_CHD_O","UK3CB_CPD_B","UK3CB_CPD_I","UK3CB_CPD_O","UK3CB_CW_SOV_O_EARLY","UK3CB_CW_SOV_O_LATE","UK3CB_CW_US_B_EARLY","UK3CB_CW_US_B_LATE","UK3CB_NAP_B","UK3CB_NAP_I","UK3CB_NAP_O","UK3CB_TKA_B","UK3CB_TKA_I","UK3CB_TKA_O","UK3CB_TKC_B","UK3CB_TKC_I","UK3CB_TKC_O","UK3CB_TKM_B","UK3CB_TKM_I","UK3CB_TKM_O","UK3CB_TKP_B","UK3CB_TKP_I","UK3CB_TKP_O","UK3CB_UN_B","UK3CB_UN_I","UNSUNG_AUS","UNSUNG_E","UNSUNG_EV","UNSUNG_G","UNSUNG_NZ","UNSUNG_ROK","UNSUNG_W","00VTN_MILFOR_MIW_EMR","00VTN_MILITIA_RU","01VTN_INSURGENTS_RU","01VTN_MILFOR_MIW","02VTN_MILFOR_RC","03VTN_INSURGENTS_ISIL","03VTN_MILFOR_SPPU","07VTN_MILFOR_TNG"]; //All factions
_p_en = _allfaction select _p_en; //Select faction selected from mission parameter
_allclasse = [[_p_en], _p_en_AA, _p_en_tank] call btc_fnc_mil_class; //Create classes from factions, you can combine factions like that: [[_p_en , "IND_F"], _p_en_AA, _p_en_tank] call btc_fnc_mil_class;
@@ -630,13 +679,18 @@ btc_spect_updateOn = -1;
//Rep
btc_rep_bonus_cache = 100;
btc_rep_bonus_civ_hh = 3;
-btc_rep_bonus_disarm = 25;
+btc_rep_bonus_disarm = 15;
btc_rep_bonus_hideout = 200;
btc_rep_bonus_mil_killed = 0.25;
+btc_rep_bonus_IEDCleanUp = 10;
+btc_rep_bonus_removeTag = 3;
+btc_rep_bonus_removeTagLetter = 0.5;
-btc_rep_malus_civ_hd = - 10;
+btc_rep_malus_civ_hd = - 2;
+btc_rep_malus_animal_hd = - 1;
btc_rep_malus_civ_killed = - 10;
-btc_rep_malus_civ_firenear = - 5;
+btc_rep_malus_animal_killed = - 5;
+btc_rep_malus_civ_suppressed = - 4;
btc_rep_malus_player_respawn = - 10;
btc_rep_malus_veh_killed = - 25;
btc_rep_malus_building_damaged = - 2.5;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/param.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/param.hpp
index 103fe8724..15ca249fc 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/param.hpp
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/param.hpp
@@ -29,6 +29,48 @@ class Params {
texts[]={$STR_DISABLED,$STR_ENABLED}; // texts[]={"Off","On"};
default = 0;
};
+ class btc_p_db_autoRestart { // Auto restart/shutdown server (Must define in server.cfg: serverCommandPassword = "btc_password")
+ title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_DB_ARESTART"]);
+ values[]={0,1,2,3,4};
+ texts[]={$STR_DISABLED,$STR_DISP_MP_DS_RESTART,$STR_BTC_HAM_PARAM_DB_SHUTDOWN,$STR_BTC_HAM_PARAM_DB_SAVERESTART, $STR_BTC_HAM_PARAM_DB_SAVESHUTDOWN}; // texts[]={"Off","Restart", "Shutdown","Save and restart", "Save and shutdown"};
+ default = 0;
+ };
+ class btc_p_db_autoRestartTime { // Time before auto restart/shutdown server
+ title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_DB_ARESTARTTIME"]);
+ values[]={1,2,3,4,5,6,7,8,9,10,11,12,24,48,72};
+ texts[]={"1h","2h","3h","4h","5h","6h","7h","8h","9h","10h","11h","12h","24h","48h","72h"};
+ default = 72;
+ };
+ class btc_p_respawn_title { // << Respawn options >>
+ title = $STR_BTC_HAM_RESP_TITLE;
+ values[]={0};
+ texts[]={""};
+ default = 0;
+ };
+ class btc_p_respawn_location { // Respawn locations available:
+ title = __EVAL(format [" %1", localize "STR_BTC_HAM_RESP_LOCATION"]);
+ values[]={0,1,2,3,4};
+ texts[]={$STR_BTC_HAM_RESP_FOBRALLY, $STR_BTC_HAM_RESP_FOBRALLYHELO, $STR_BTC_HAM_RESP_FOBRALLYHELI, $STR_BTC_HAM_RESP_FOBRALLYHELIVEHI, $STR_BTC_HAM_RESP_FOBRALLYHELIVEHILEADER};
+ default = 4;
+ };
+ class btc_p_respawn_fromFOBToBase { // Allow respawn from FOB to base:
+ title = __EVAL(format [" %1", localize "STR_BTC_HAM_RESP_FOBTOBASE"]);
+ values[]={0,1};
+ texts[]={$STR_DISABLED, $STR_ENABLED};
+ default = 0;
+ };
+ class btc_p_rallypointTimer { // Time before rallypoint self-destruction:
+ title = __EVAL(format [" %1", localize "STR_BTC_HAM_RESP_RALLYTIMER"]);
+ values[]={0,5,10,30,60};
+ texts[]={$STR_DISABLED,"5 min","10 min","30 min","60 min"};
+ default = 30;
+ };
+ class btc_p_respawn_arsenal { // ACE Arsenal available on respawn after been killed:
+ title = __EVAL(format [" %1", localize "STR_BTC_HAM_RESP_ENABLEARSENAL"]);
+ values[]={0,1};
+ texts[]={$STR_DISABLED,$STR_ENABLED};
+ default = 0;
+ };
class btc_p_type_title { // << Faction options >>
title = $STR_BTC_HAM_PARAM_FAC_TITLE;
values[]={0};
@@ -37,8 +79,8 @@ class Params {
};
class btc_p_en { // Enemy type:
title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_FAC_ETYPE"]);
- values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314};
- texts[]={"0 - Bohemia Interactive: 2035 FIA (Side: WEST)","1 - Bohemia Interactive: LDF (Side: GUER)","2 - Bohemia Interactive: 2035 AAF (Side: GUER)","3 - Bohemia Interactive: 2035 FIA (Side: GUER)","4 - Bohemia Interactive: Pillards (Side: GUER)","5 - Bohemia Interactive: 2035 CSAT (Side: EAST)","6 - Bohemia Interactive: 2035 FIA (Side: EAST)","7 - EricJ: Taliban (Side: EAST)","8 -00VTN Bohemia Interactive: U.S.M.C. (MARPAT Woodland) (Side: WEST)","9 -01VTN Bohemia Interactive: U.S.M.C. (MARPAT Desert) (Side: WEST)","10 -05VTN Bohemia Interactive: TIA-SF (Side: WEST)","11 -AFR BIS/IceBreakr: Afrenian Army (Side: WEST)","12 -ARA Bohemia Interactive: Abramian Rebel Alliance (Side: WEST)","13 -ARL BIS/IceBreakr: ARL Lingor Rebels (Side: EAST)","14 -BLU Community Upgrade Project and ATLAS Mod: 2035 NATO (Side: WEST)","15 -CEC HcPookie: Cecanian Army (Side: EAST)","16 -CFP Drew: Afghan Police (Side: WEST)","17 -CFP CFP: Chadian Armed Forces (Side: WEST)","18 -CFP Tupolov: Army of the Czech Rep. (Jungle / Woodland) (Side: WEST)","19 -CFP CFP: Israeli Defense Force (Side: WEST)","20 -CFP Drew: Iraqi Army (Side: WEST)","21 -CFP Drew: Iraqi Police (Side: WEST)","22 -CFP Drew: Kenyan Defense Force (Side: WEST)","23 -CFP Drew: Malian Government Forces (Side: WEST)","24 -CFP CFP: Nigerian Army (Side: WEST)","25 -CFP Drew: Peshmerga (Side: WEST)","26 -CFP Drew: Uganda People's Defense Force (Side: WEST)","27 -CFP Drew: US 75th Rangers (Jungle/Woodland) (Side: WEST)","28 -CFP Drew: US Navy Seals (Arid / Desert) (Side: WEST)","29 -CFP Drew: US Navy Seals (Jungle / Woodland) (Side: WEST)","30 -CFP Drew: YPG (Side: WEST)","31 -CFP Drew: al-Nusra Front (Side: GUER)","32 -CFP Drew: Islamic State (Side: GUER)","33 -CFP Drew: Sudan People's Liberation Movement North (Side: GUER)","34 -CFP Drew: Sudan Revolutionary Front (Side: GUER)","35 -CFP Drew: South Sudan People's Defense Force (Side: GUER)","36 -CFP Drew: Tuareg Rebels (Side: GUER)","37 -CFP Tupolov: Western Ultranationalists (Side: GUER)","38 -CFP Drew: Abu Sayyaf Group (Side: EAST)","39 -CFP Drew: Al Qaeda (Side: EAST)","40 -CFP Drew: Al-Shabaab (Side: EAST)","41 -CFP Tupolov: Ansar Allah (Houthis) (Side: EAST)","42 -CFP Drew: Boko Haram (Side: EAST)","43 -CFP Drew: Central African Rebels (Side: EAST)","44 -CFP Drew: Hamas Al Qassam Brigades (Side: EAST)","45 -CFP Drew: Hezbollah (Side: EAST)","46 -CFP CFP: Iraqi Army (Hussein Regime) (Side: EAST)","47 -CFP Drew: Islamic Republic of Iran Army (Side: EAST)","48 -CFP Drew: Islamic State (Side: EAST)","49 -CFP Drew: Sudanese Armed Forces (Side: EAST)","50 -CFP CFP: Sudan Rapid Support Forces / Janjaweed (Side: EAST)","51 -CFP Drew: Somali Rebels (Side: EAST)","52 -CFP Drew: Sudan People's Liberation Movement In Opposition (Side: EAST)","53 -CFP Drew: Syrian Arab Army (Side: EAST)","54 -CFP Drew: Taliban Insurgents (Side: EAST)","55 -CUP Community Upgrade Project: Chernarus Defense Forces (Side: WEST)","56 -CUP Community Upgrade Project: Army of the Czech Rep. (Arid / Desert) (Side: WEST)","57 -CUP Community Upgrade Project: British Army (Arid / Desert) (Side: WEST)","58 -CUP Community Upgrade Project: Horizon Islands Legion (Side: WEST)","59 -CUP Community Upgrade Project: Royal New Zealand Navy (Side: WEST)","60 -CUP Community Upgrade Project: US Army (Arid / Desert) (Side: WEST)","61 -CUP Community Upgrade Project: US Marine Corps (Jungle / Woodland) (Side: WEST)","62 -CUP Community Upgrade Project: National Party of Chernarus (Side: GUER)","63 -CUP Community Upgrade Project: Royal Army Corps of Sahrani (Side: GUER)","64 -CUP Community Upgrade Project: United Nations (Side: GUER)","65 -CUP Community Upgrade Project: Chernarussian Movement of the Red Star (Side: EAST)","66 -CUP Community Upgrade Project: Russian Ground Forces (Jungle / Woodland) (Side: EAST)","67 -CUP Community Upgrade Project: Sahrani Liberation Army (Side: EAST)","68 -CUP Community Upgrade Project: Takistani Army (Side: EAST)","69 -CUP Community Upgrade Project: Takistani Militia (Side: EAST)","70 -CUP Community Upgrade Project: CUP Static Ships (Side: WEST)","71 -CUP_Units Drew: Chernarus Defense Forces [Winter] (Side: WEST)","72 -CUP_Units Community Upgrade Project: Bundeswehr (Jungle / Woodland) (Side: WEST)","73 -CUP_Units Community Upgrade Project: British Army (Jungle / Woodland) (Side: WEST)","74 -CUP_Units Drew: US Army 1991 [Arid/Desert] (Side: WEST)","75 -CUP_Units Drew: US Army 1991 [Woodland] (Side: WEST)","76 -CUP_Units Drew: US Army 2003 [Arid/Desert] (Side: WEST)","77 -CUP_Units Drew: US Army 2003 [Woodland] (Side: WEST)","78 -CUP_Units Tupolov: US CIA (Middle East) (Side: WEST)","79 -CUP_Units Tupolov: US Marine Corps (Arid / Desert) (Side: WEST)","80 -CUP_Units Drew: PMC Wagner (Arid / Desert) (Side: GUER)","81 -CUP_Units Drew: PMC Wagner (Woodland) (Side: GUER)","82 -CUP_Units Drew: PMC Wagner (Winter) (Side: GUER)","83 -CUP_Units Tupolov: Russian National Guard (Side: EAST)","84 -CUP_Units Drew: PMC Wagner (Arid / Desert) (Side: EAST)","85 -CUP_Units Drew: PMC Wagner (Woodland) (Side: EAST)","86 -CUP_Units Drew: PMC Wagner (Winter) (Side: EAST)","87 -CUP_Units Community Upgrade Project: Bundeswehr (Arid / Desert) (Side: WEST)","88 -CUP_Units Community Upgrade Project: ION PMC (Side: GUER)","89 -CUP_Units Community Upgrade Project: Takistani Locals (Side: GUER)","90 -CUP_Vehicles Drew: Afghan Army (Side: WEST)","91 -CUP_Vehicles Community Upgrade Project: US Army (Jungle / Woodland) (Side: WEST)","92 -CUP_Vehicles Drew: Chernarussian Movement of the Red Star [Winter] (Side: EAST)","93 -CUP_Vehicles Tupolov: Russian Ground Forces (Arid / Desert) (Side: EAST)","94 -Enoch Bohemia Interactive: Spetsnaz (Side: EAST)","95 -Expansion Bohemia Interactive: 2035 CTRG (Side: WEST)","96 -Expansion Bohemia Interactive: 2035 Gendarmerie (Side: WEST)","97 -Expansion Bohemia Interactive: 2035 NATO (Pacific) (Side: WEST)","98 -Expansion Drew: Korean People's Army (Side: EAST)","99 -Expansion Bohemia Interactive: 2035 Gendarmerie (Side: EAST)","100 -FAP nzdfcrash/icebreakr: Fapovian Army (Side: EAST)","101 -FOW Bohemia Interactive: [DE] Heer (Side: WEST)","102 -FOW Bohemia Interactive: [JP] Navy Air Service (Side: WEST)","103 -FOW Bohemia Interactive: [UK] Fleet Air Arm (Side: GUER)","104 -FOW Bohemia Interactive: [US] Navy (Side: GUER)","105 -FOW FOW Team: [DE] Waffen-SS (Side: WEST)","106 -fow_mod Bohemia Interactive: [AUS] Army (Pacific) (Side: GUER)","107 -fow_mod Bohemia Interactive: [HI] Army (Side: GUER)","108 -fow_mod FOW team: [JP] Imperial Army (Side: WEST)","109 -fow_mod Bohemia Interactive: [DE] Luftwaffe (Side: WEST)","110 -fow_mod Bohemia Interactive: [UK] Army (Side: GUER)","111 -fow_mod FOW team: [US] Army (Europe) (Side: GUER)","112 -fow_mod Bohemia Interactive: [US] Army (Pacific) (Side: GUER)","113 -fow_mod FOW team: [US] Marines Corps (Side: GUER)","114 -GAL HcPookie: GAL (Government Army of Lingor) (Side: WEST)","115 -GANGBLUE BIS/IceBreakr: Blue Gang (Side: WEST)","116 -GANGRED BIS/IceBreakr: Red Gang (Side: EAST)","117 -gm Global Mobilization: Denmark (Side: WEST)","118 -gm Global Mobilization: East Germany (Side: EAST)","119 -gm Global Mobilization: East Germany (Borderguards) (Side: EAST)","120 -gm Global Mobilization: West Germany (Side: WEST)","121 -gm Global Mobilization: West Germany (Borderguards) (Side: WEST)","122 -gm Global Mobilization: Poland (Side: EAST)","123 -IBR Bohemia Interactive: Alienz (Side: GUER)","124 -ISC Bohemia Interactive: [ISC] al-Nusra Front (Side: GUER)","125 -ISC Bohemia Interactive: [ISC] Iraqi Police (Side: WEST)","126 -ISC Bohemia Interactive: [ISC] Islamic State (Side: GUER)","127 -ISC Bohemia Interactive: [ISC] Islamic State (Side: EAST)","128 -ISC Bohemia Interactive: [ISC] Peshmerga (Side: WEST)","129 -ISC Bohemia Interactive: [ISC] YPG (Side: WEST)","130 -Jets Bravo Zero One Studios: [OPCAN] United Rebel Army (Side: EAST)","131 -LIB AWAR: ACI (Side: GUER)","132 -LIB AWAR & Lennard: ARR (Side: WEST)","133 -LIB Lennard: Deutsches Afrikakorps (Side: WEST)","134 -LIB Reyhard & Joarius: FFI (Side: GUER)","135 -LIB IFA3 Team: Fallschirmjäger (Side: WEST)","136 -LIB AWAR: Armia Krajowa (Polonais) (Side: GUER)","137 -LIB AWAR & Lennard: MKHL (Side: WEST)","138 -LIB Lennard: US North African Corps (Side: GUER)","139 -LIB Lennard: NKVD (Side: EAST)","140 -LIB AWAR: RAAF (Side: GUER)","141 -LIB AWAR & Lennard: RBAF (Side: WEST)","142 -LIB AWAR: Red Army (Side: EAST)","143 -LIB AWAR & Lennard: [Winter] Red Army (Side: EAST)","144 -LIB IFA3 Team: UK Airborne (Side: GUER)","145 -LIB El Tyranos: [Winter] UK Airborne (Side: GUER)","146 -LIB IFA3 Team: UK Army (Side: GUER)","147 -LIB El Tyranos: [Winter] UK Army (Side: GUER)","148 -LIB IFA3 Team: UK Desert Rats (Side: GUER)","149 -LIB El Tyranos: 101st Airborne Division (Side: GUER)","150 -LIB El Tyranos: 82nd Airborne Division (Side: GUER)","151 -LIB IFA3 team: US Army (Side: GUER)","152 -LIB El Tyranos: [Winter] US Army (Side: GUER)","153 -LIB Lennard: US 2nd Ranger Battalion (Side: GUER)","154 -LIB AWAR: Wehrmacht (Side: WEST)","155 -LIB AWAR & Lennard: [Winter] Wehrmacht (Side: WEST)","156 -LM J.Burgess: [OPCAN] Colonial Guard Corps (Woodland) (Side: WEST)","157 -LM J.Burgess: [OPCAN] Colonial Military Authority (Side: GUER)","158 -LM J.Burgess: [OPCAN] Colonial Police Force (Side: GUER)","159 -LM J.Burgess: [OPCAN] Fridens (Side: EAST)","160 -LM J.Burgess: [OPCAN] Fridens (Desert) (Side: EAST)","161 -LM J.Burgess: [OPCAN] Fridens (Woodland) (Side: EAST)","162 -LM J.Burgess: [OPCAN] Koslovics (Side: EAST)","163 -LM J.Burgess: [OPCAN] Secessionist Union (Side: EAST)","164 -LM J.Burgess: [OPCAN] UNSC Army (Woodland) (Side: WEST)","165 -LM J.Burgess: [OPCAN] UNSC Army (Desert) (Side: WEST)","166 -LM J.Burgess: [OPCAN] UNSC Army (Mixed) (Side: WEST)","167 -LM J.Burgess: [OPCAN] UNSC Army Peace Corps (Side: WEST)","168 -LM J.Burgess: [OPCAN] UNSC Marine Corps (Woodland) (Side: WEST)","169 -LM J.Burgess: [OPCAN] UNSC Marine Corps (CE:A) (Side: WEST)","170 -LM J.Burgess: [OPCAN] UNSC Marine Corps (Desert) (Side: WEST)","171 -LM J.Burgess: [OPCAN] UNSC Marine Corps (Infinite) (Side: WEST)","172 -LOP_LeightsOPFOR Project OPFOR: Afghan National Army and Police (Side: WEST)","173 -LOP_LeightsOPFOR Project OPFOR: African Militia (Side: GUER)","174 -LOP_LeightsOPFOR Project OPFOR: African Militia (Side: EAST)","175 -LOP_LeightsOPFOR Project OPFOR: Middle Eastern Militia (Side: GUER)","176 -LOP_LeightsOPFOR Project OPFOR: Middle Eastern Militia (Side: EAST)","177 -LOP_LeightsOPFOR Project OPFOR: Boko Haram (Side: EAST)","178 -LOP_LeightsOPFOR Project OPFOR: CDF (Project OPFOR) (Side: WEST)","179 -LOP_LeightsOPFOR Project OPFOR: ChDKZ (Project OPFOR) (Side: EAST)","180 -LOP_LeightsOPFOR Project OPFOR: Hellenic Armed Forces (Side: WEST)","181 -LOP_LeightsOPFOR Project OPFOR: Iraqi Armed Forces (Side: WEST)","182 -LOP_LeightsOPFOR Project OPFOR: Irish Republican Army (Side: EAST)","183 -LOP_LeightsOPFOR Project OPFOR: Iranian Armed Forces (Side: GUER)","184 -LOP_LeightsOPFOR Project OPFOR: Islamic State (Side: GUER)","185 -LOP_LeightsOPFOR Project OPFOR: Islamic State (Side: EAST)","186 -LOP_LeightsOPFOR Project OPFOR: Chernarussian National Insurgents (Side: GUER)","187 -LOP_LeightsOPFOR Project OPFOR: Korean People's Army (Side: EAST)","188 -LOP_LeightsOPFOR Project OPFOR: Kurdish Peshmerga Forces (Side: WEST)","189 -LOP_LeightsOPFOR Project OPFOR: Kurdish Peshmerga Forces (Side: GUER)","190 -LOP_LeightsOPFOR Project OPFOR: Private Military Company (Side: GUER)","191 -LOP_LeightsOPFOR Project OPFOR: Royal Army Corps of Sahrani (Side: GUER)","192 -LOP_LeightsOPFOR Project OPFOR: Sahrani Liberation Army (Side: EAST)","193 -LOP_LeightsOPFOR Project OPFOR: Syrian Armed Forces (Side: EAST)","194 -LOP_LeightsOPFOR Project OPFOR: Takistani Armed Forces (Side: EAST)","195 -LOP_LeightsOPFOR Project OPFOR: Turkish Armed Forces (Side: GUER)","196 -LOP_LeightsOPFOR Project OPFOR: Ultranationalists (Side: GUER)","197 -LOP_LeightsOPFOR Project OPFOR: Ukrainian Armed Forces (Side: GUER)","198 -LOP_LeightsOPFOR Project OPFOR: United Nations (Side: GUER)","199 -LOP_LeightsOPFOR Project OPFOR: United Armed Forces of Novorossiya (Side: EAST)","200 -LOP_LeightsOPFOR Project OPFOR: Ulster Volunteer Force (Side: GUER)","201 -Mark Bohemia Interactive: OTAN (forêt) (Side: WEST)","202 -MOL HcPookie: Molatian Army (Side: EAST)","203 -O jarrad96: Central African Rebels (Side: EAST)","204 -OPF Community Upgrade Project: 2035 CSAT (Pacific) (Side: EAST)","205 -OPTRE Article 2 Studios: Insurrectionists (Side: EAST)","206 -OPTRE Article 2 Studios: Colonial Police (Side: GUER)","207 -OPTRE Article 2 Studios: UNSCDF (Side: WEST)","208 -OPTRE_FC Article 2 Studios: Covenant (Side: EAST)","209 -RHS_AFRF Red Hammer Studios: [ISC] Iraqi Army (Side: WEST)","210 -RHS_AFRF Red Hammer Studios: Russia (MSV) (Side: EAST)","211 -RHS_AFRF Red Hammer Studios: Russia (RVA) (Side: EAST)","212 -RHS_AFRF Red Hammer Studios: Russia (TV) (Side: EAST)","213 -RHS_AFRF Red Hammer Studios: Russia (VDV) (Side: EAST)","214 -RHS_AFRF Red Hammer Studios: Russia (VMF) (Side: EAST)","215 -RHS_AFRF RHS: Russia (VPVO) (Side: EAST)","216 -RHS_AFRF Red Hammer Studios: Russia (VV) (Side: EAST)","217 -RHS_AFRF Red Hammer Studios: Russia (VVS - Grey) (Side: EAST)","218 -RHS_AFRF Red Hammer Studios: Russia (VVS - Camo) (Side: EAST)","219 -RHS_GREF Red Hammer Studios: [ISC] Syrian Arab Army (Side: EAST)","220 -RHS_GREF RHS (A2 port): CDF (Air Forces) (Side: GUER)","221 -RHS_GREF Red Hammer Studios: CDF (Air Forces) (Side: WEST)","222 -RHS_GREF Red Hammer Studios: ChDKZ (Side: EAST)","223 -RHS_SAF RHS (A2 port): SAF (RVIPVO) (Side: GUER)","224 -RHS_SAF RHS (A2 port): SAF (RVIPVO) (Side: EAST)","225 -RHS_SAF Red Hammer Studios: SAF (KOV) (Side: GUER)","226 -RHS_SAF RHS (A2 port): SAF (KOV) (Side: EAST)","227 -RHS_SAF RHS (A2 port): SAF (Casques Bleus) (Side: GUER)","228 -RHS_USAF Red Hammer Studios: USA (SOCOM) (Side: WEST)","229 -RHS_USAF Red Hammer Studios: USA (USAF) (Side: WEST)","230 -RHS_USAF Red Hammer Studios: USA (Army - D) (Side: WEST)","231 -RHS_USAF Red Hammer Studios: USA (USMC - D) (Side: WEST)","232 -RHS_USAF Red Hammer Studios: USA (Navy) (Side: WEST)","233 -RHSGREF www.3commandobrigade.com: CDF (Ground Forces) (Side: GUER)","234 -RHSGREF www.3commandobrigade.com: CDF (Ground Forces) (Side: WEST)","235 -RHSGREF Red Hammer Studios: NAPA (Side: GUER)","236 -RHSGREF Red Hammer Studios: Tanoan Liberation Army (Side: EAST)","237 -RHSGREF Red Hammer Studios: CDF (UN) (Side: GUER)","238 -SG Stagler: Sturmtroopers (Side: WEST)","239 -SG Stagler: Tank Sturmtroopers (Side: WEST)","240 -Tank Bohemia Interactive: 2035 Syndikat (Side: GUER)","241 -UK3CB_Factions www.3commandobrigade.com: USA (Army - W) (Side: WEST)","242 -UK3CB_Factions www.3commandobrigade.com: USA (USMC - W) (Side: WEST)","243 -UK3CB_Factions www.3commandobrigade.com: CDF (National Guard) (Side: GUER)","244 -UK3CB_Factions www.3commandobrigade.com: CDF (National Guard) (Side: WEST)","245 -UK3CB_Factions www.3commandobrigade.com: ChDKZ (Side: GUER)","246 -UK3CB_Factions www.3commandobrigade.com: Horizon Islands Defence Force (Side: WEST)","247 -UK3CB_Factions www.3commandobrigade.com: 3CB AAF (Side: WEST)","248 -UK3CB_Factions www.3commandobrigade.com: 3CB AAF (Side: GUER)","249 -UK3CB_Factions www.3commandobrigade.com: 3CB AAF (Side: EAST)","250 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army (Side: WEST)","251 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army (Side: GUER)","252 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army (Side: EAST)","253 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilians (Side: WEST)","254 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilians (Side: GUER)","255 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilians (Side: EAST)","256 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Extremists (Side: GUER)","257 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Extremists (Side: EAST)","258 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilian Militia (Side: WEST)","259 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilian Militia (Side: GUER)","260 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilian Militia (Side: EAST)","261 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Militia (Side: WEST)","262 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Militia (Side: GUER)","263 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Militia (Side: EAST)","264 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert National Police (Side: WEST)","265 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert National Police (Side: GUER)","266 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert National Police (Side: EAST)","267 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army Paramilitary (Side: WEST)","268 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army Paramilitary (Side: GUER)","269 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army Paramilitary (Side: EAST)","270 -UK3CB_Factions www.3commandobrigade.com: 3CB Afghan National Army (Side: WEST)","271 -UK3CB_Factions www.3commandobrigade.com: 3CB Afghan National Police (Side: WEST)","272 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Local Defence Volunteers (Side: WEST)","273 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Nationalist Militia (Side: GUER)","274 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Communist Militia (Side: EAST)","275 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Civilians (Side: WEST)","276 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Civilians (Side: GUER)","277 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Civilians (Side: EAST)","278 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Police Department (Side: WEST)","279 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Police Department (Side: GUER)","280 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Police Department (Side: EAST)","281 -UK3CB_Factions www.3commandobrigade.com: 3CB Cold War USSR - Early (Side: EAST)","282 -UK3CB_Factions www.3commandobrigade.com: 3CB Cold War USSR - Late (Side: EAST)","283 -UK3CB_Factions www.3commandobrigade.com: 3CB Cold War US - Early (Side: WEST)","284 -UK3CB_Factions www.3commandobrigade.com: 3CB Cold War US - Late (Side: WEST)","285 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Army (Side: WEST)","286 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Army (Side: GUER)","287 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Army (Side: EAST)","288 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Civilians (Side: WEST)","289 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Civilians (Side: GUER)","290 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Civilians (Side: EAST)","291 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Pro-Government Militia (Side: WEST)","292 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Tribal Fighters (Side: GUER)","293 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Insurgents (Side: EAST)","294 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Police (Side: WEST)","295 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Police (Side: GUER)","296 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Police (Side: EAST)","297 -UK3CB_Factions www.3commandobrigade.com: 3CB UN Peacekeepers (Side: WEST)","298 -UK3CB_Factions www.3commandobrigade.com: 3CB UN Peacekeepers (Side: GUER)","299 -UNSUNG Bohemia Interactive: Australia (UNSUNG) (Side: WEST)","300 -UNSUNG Razorback: N.V.A. (UNSUNG) (Side: EAST)","301 -UNSUNG Bohemia Interactive: V.C. (UNSUNG) (Side: EAST)","302 -UNSUNG UNSUNG: A.R.V.N. (UNSUNG) (Side: GUER)","303 -UNSUNG Bohemia Interactive: New Zealand (UNSUNG) (Side: WEST)","304 -UNSUNG Bohemia Interactive: R.O.K. (UNSUNG) (Side: WEST)","305 -UNSUNG Bohemia Interactive: U.S. (UNSUNG) (Side: WEST)","306 -VTN VTN: Mechanized infantry (EMR) (Side: EAST)","307 -VTN VTN: Militia (Side: GUER)","308 -VTN VTN: Insurgents (Side: GUER)","309 -VTN VTN: Mechanized infantry (VSR-98) (Side: EAST)","310 -VTN VTN: GRU SSPB (Side: EAST)","311 -VTN VTN: ISIL (Side: GUER)","312 -VTN VTN: MVD SPPU (Side: EAST)","313 -VTN VTN: Airforce (Side: EAST)","314 -VTN VTN: Takistan national guard (Side: EAST)"};
+ values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320};
+ texts[]={"0 - Bohemia Interactive: 2035 FIA (Side: WEST)","1 - Bohemia Interactive: LDF (Side: GUER)","2 - Bohemia Interactive: 2035 AAF (Side: GUER)","3 - Bohemia Interactive: 2035 FIA (Side: GUER)","4 - Bohemia Interactive: Pillards (Side: GUER)","5 - Bohemia Interactive: 2035 CSAT (Side: EAST)","6 - Bohemia Interactive: 2035 FIA (Side: EAST)","7 - EricJ: Taliban (Side: EAST)","8 -00VTN Bohemia Interactive: U.S.M.C. (MARPAT Woodland) (Side: WEST)","9 -01VTN Bohemia Interactive: U.S.M.C. (MARPAT Desert) (Side: WEST)","10 -05VTN Bohemia Interactive: TIA-SF (Side: WEST)","11 -AFR BIS/IceBreakr: Afrenian Army (Side: WEST)","12 -ARA Bohemia Interactive: Abramian Rebel Alliance (Side: WEST)","13 -ARL BIS/IceBreakr: ARL Lingor Rebels (Side: EAST)","14 -BLU Community Upgrade Project and ATLAS Mod: 2035 NATO (Side: WEST)","15 -CEC HcPookie: Cecanian Army (Side: EAST)","16 -CFP Drew: Afghan Police (Side: WEST)","17 -CFP CFP: Chadian Armed Forces (Side: WEST)","18 -CFP Tupolov: Army of the Czech Rep. (Jungle / Woodland) (Side: WEST)","19 -CFP CFP: Israeli Defense Force (Side: WEST)","20 -CFP Drew: Iraqi Army (Side: WEST)","21 -CFP Drew: Iraqi Police (Side: WEST)","22 -CFP Drew: Kenyan Defense Force (Side: WEST)","23 -CFP Drew: Malian Government Forces (Side: WEST)","24 -CFP CFP: Nigerian Army (Side: WEST)","25 -CFP Drew: Peshmerga (Side: WEST)","26 -CFP Drew: Uganda People's Defense Force (Side: WEST)","27 -CFP Drew: US 75th Rangers (Jungle/Woodland) (Side: WEST)","28 -CFP Drew: US Navy Seals (Arid / Desert) (Side: WEST)","29 -CFP Drew: US Navy Seals (Jungle / Woodland) (Side: WEST)","30 -CFP Drew: YPG (Side: WEST)","31 -CFP Drew: al-Nusra Front (Side: GUER)","32 -CFP Drew: Islamic State (Side: GUER)","33 -CFP Drew: Sudan People's Liberation Movement North (Side: GUER)","34 -CFP Drew: Sudan Revolutionary Front (Side: GUER)","35 -CFP Drew: South Sudan People's Defense Force (Side: GUER)","36 -CFP Drew: Tuareg Rebels (Side: GUER)","37 -CFP Tupolov: Western Ultranationalists (Side: GUER)","38 -CFP Drew: Abu Sayyaf Group (Side: EAST)","39 -CFP Drew: Al Qaeda (Side: EAST)","40 -CFP Drew: Al-Shabaab (Side: EAST)","41 -CFP Tupolov: Ansar Allah (Houthis) (Side: EAST)","42 -CFP Drew: Boko Haram (Side: EAST)","43 -CFP Drew: Central African Rebels (Side: EAST)","44 -CFP Drew: Hamas Al Qassam Brigades (Side: EAST)","45 -CFP Drew: Hezbollah (Side: EAST)","46 -CFP CFP: Iraqi Army (Hussein Regime) (Side: EAST)","47 -CFP Drew: Islamic Republic of Iran Army (Side: EAST)","48 -CFP Drew: Islamic State (Side: EAST)","49 -CFP Drew: Sudanese Armed Forces (Side: EAST)","50 -CFP CFP: Sudan Rapid Support Forces / Janjaweed (Side: EAST)","51 -CFP Drew: Somali Rebels (Side: EAST)","52 -CFP Drew: Sudan People's Liberation Movement In Opposition (Side: EAST)","53 -CFP Drew: Syrian Arab Army (Side: EAST)","54 -CFP Drew: Taliban Insurgents (Side: EAST)","55 -CUP Community Upgrade Project: Chernarus Defense Forces (Side: WEST)","56 -CUP Community Upgrade Project: Army of the Czech Rep. (Arid / Desert) (Side: WEST)","57 -CUP Community Upgrade Project: British Army (Arid / Desert) (Side: WEST)","58 -CUP Community Upgrade Project: Horizon Islands Legion (Side: WEST)","59 -CUP Community Upgrade Project: Royal New Zealand Navy (Side: WEST)","60 -CUP Community Upgrade Project: US Army (Arid / Desert) (Side: WEST)","61 -CUP Community Upgrade Project: US Marine Corps (Jungle / Woodland) (Side: WEST)","62 -CUP Community Upgrade Project: National Party of Chernarus (Side: GUER)","63 -CUP Community Upgrade Project: Royal Army Corps of Sahrani (Side: GUER)","64 -CUP Community Upgrade Project: United Nations (Side: GUER)","65 -CUP Community Upgrade Project: Chernarussian Movement of the Red Star (Side: EAST)","66 -CUP Community Upgrade Project: Russian Ground Forces (Jungle / Woodland) (Side: EAST)","67 -CUP Community Upgrade Project: Sahrani Liberation Army (Side: EAST)","68 -CUP Community Upgrade Project: Takistani Army (Side: EAST)","69 -CUP Community Upgrade Project: Takistani Militia (Side: EAST)","70 -CUP Community Upgrade Project: CUP Static Ships (Side: WEST)","71 -CUP_Units Drew: Chernarus Defense Forces [Winter] (Side: WEST)","72 -CUP_Units Community Upgrade Project: Bundeswehr (Jungle / Woodland) (Side: WEST)","73 -CUP_Units Community Upgrade Project: British Army (Jungle / Woodland) (Side: WEST)","74 -CUP_Units Drew: US Army 1991 [Arid/Desert] (Side: WEST)","75 -CUP_Units Drew: US Army 1991 [Woodland] (Side: WEST)","76 -CUP_Units Drew: US Army 2003 [Arid/Desert] (Side: WEST)","77 -CUP_Units Drew: US Army 2003 [Woodland] (Side: WEST)","78 -CUP_Units Tupolov: US CIA (Middle East) (Side: WEST)","79 -CUP_Units Community Upgrade Project: US Marine Corps (Arid / Desert) (Side: WEST)","80 -CUP_Units Drew: PMC Wagner (Arid / Desert) (Side: GUER)","81 -CUP_Units Drew: PMC Wagner (Woodland) (Side: GUER)","82 -CUP_Units Drew: PMC Wagner (Winter) (Side: GUER)","83 -CUP_Units Community Upgrade Project: Russian Ground Forces (Arid / Desert) (Side: EAST)","84 -CUP_Units Tupolov: Russian National Guard (Side: EAST)","85 -CUP_Units Drew: PMC Wagner (Arid / Desert) (Side: EAST)","86 -CUP_Units Drew: PMC Wagner (Woodland) (Side: EAST)","87 -CUP_Units Drew: PMC Wagner (Winter) (Side: EAST)","88 -CUP_Units Community Upgrade Project: Bundeswehr (Arid / Desert) (Side: WEST)","89 -CUP_Units Community Upgrade Project: ION PMC (Side: GUER)","90 -CUP_Units Community Upgrade Project: Takistani Locals (Side: GUER)","91 -CUP_Vehicles Drew: Afghan Army (Side: WEST)","92 -CUP_Vehicles Community Upgrade Project: US Army (Jungle / Woodland) (Side: WEST)","93 -CUP_Vehicles Drew: Chernarussian Movement of the Red Star [Winter] (Side: EAST)","94 -Enoch Bohemia Interactive: Spetsnaz (Side: EAST)","95 -Expansion Bohemia Interactive: 2035 CTRG (Side: WEST)","96 -Expansion Bohemia Interactive: 2035 Gendarmerie (Side: WEST)","97 -Expansion Bohemia Interactive: 2035 NATO (Pacific) (Side: WEST)","98 -Expansion Drew: Korean People's Army (Side: EAST)","99 -Expansion Bohemia Interactive: 2035 Gendarmerie (Side: EAST)","100 -FAP nzdfcrash/icebreakr: Fapovian Army (Side: EAST)","101 -FOW Bohemia Interactive: [DE] Heer (Side: WEST)","102 -FOW Bohemia Interactive: [JP] Navy Air Service (Side: WEST)","103 -FOW Bohemia Interactive: [UK] Fleet Air Arm (Side: GUER)","104 -FOW Bohemia Interactive: [US] Navy (Side: GUER)","105 -FOW FOW Team: [DE] Waffen-SS (Side: WEST)","106 -fow_mod Bohemia Interactive: [AUS] Army (Pacific) (Side: GUER)","107 -fow_mod Bohemia Interactive: [HI] Army (Side: GUER)","108 -fow_mod FOW team: [JP] Imperial Army (Side: WEST)","109 -fow_mod Bohemia Interactive: [DE] Luftwaffe (Side: WEST)","110 -fow_mod Bohemia Interactive: [UK] Army (Side: GUER)","111 -fow_mod FOW team: [US] Army (Europe) (Side: GUER)","112 -fow_mod Bohemia Interactive: [US] Army (Pacific) (Side: GUER)","113 -fow_mod FOW team: [US] Marines Corps (Side: GUER)","114 -GAL HcPookie: GAL (Government Army of Lingor) (Side: WEST)","115 -GANGBLUE BIS/IceBreakr: Blue Gang (Side: WEST)","116 -GANGRED BIS/IceBreakr: Red Gang (Side: EAST)","117 -gm Global Mobilization: Denmark (Side: WEST)","118 -gm Global Mobilization: East Germany (Side: EAST)","119 -gm Global Mobilization: East Germany (Borderguards) (Side: EAST)","120 -gm Global Mobilization: West Germany (Side: WEST)","121 -gm Global Mobilization: West Germany (Borderguards) (Side: WEST)","122 -gm Global Mobilization: Poland (Side: EAST)","123 -IBR Bohemia Interactive: Alienz (Side: GUER)","124 -ISC Bohemia Interactive: [ISC] al-Nusra Front (Side: GUER)","125 -ISC Bohemia Interactive: [ISC] Iraqi Police (Side: WEST)","126 -ISC Bohemia Interactive: [ISC] Islamic State (Side: GUER)","127 -ISC Bohemia Interactive: [ISC] Islamic State (Side: EAST)","128 -ISC Bohemia Interactive: [ISC] Peshmerga (Side: WEST)","129 -ISC Bohemia Interactive: [ISC] YPG (Side: WEST)","130 -Jets Bravo Zero One Studios: [OPCAN] United Rebel Army (Side: EAST)","131 -LIB AWAR: ACI (Side: GUER)","132 -LIB AWAR & Lennard: ARR (Side: WEST)","133 -LIB Lennard: Deutsches Afrikakorps (Side: WEST)","134 -LIB Reyhard & Joarius: FFI (Side: GUER)","135 -LIB IFA3 Team: Fallschirmjäger (Side: WEST)","136 -LIB AWAR: Armia Krajowa (Polonais) (Side: GUER)","137 -LIB AWAR & Lennard: MKHL (Side: WEST)","138 -LIB Lennard: US North African Corps (Side: GUER)","139 -LIB Lennard: NKVD (Side: EAST)","140 -LIB AWAR: RAAF (Side: GUER)","141 -LIB AWAR & Lennard: RBAF (Side: WEST)","142 -LIB AWAR: Red Army (Side: EAST)","143 -LIB AWAR & Lennard: [Winter] Red Army (Side: EAST)","144 -LIB IFA3 Team: UK Airborne (Side: GUER)","145 -LIB El Tyranos: [Winter] UK Airborne (Side: GUER)","146 -LIB IFA3 Team: UK Army (Side: GUER)","147 -LIB El Tyranos: [Winter] UK Army (Side: GUER)","148 -LIB IFA3 Team: UK Desert Rats (Side: GUER)","149 -LIB El Tyranos: 101st Airborne Division (Side: GUER)","150 -LIB El Tyranos: 82nd Airborne Division (Side: GUER)","151 -LIB IFA3 team: US Army (Side: GUER)","152 -LIB El Tyranos: [Winter] US Army (Side: GUER)","153 -LIB Lennard: US 2nd Ranger Battalion (Side: GUER)","154 -LIB AWAR: Wehrmacht (Side: WEST)","155 -LIB AWAR & Lennard: [Winter] Wehrmacht (Side: WEST)","156 -LM J.Burgess: [OPCAN] Colonial Guard Corps (Woodland) (Side: WEST)","157 -LM J.Burgess: [OPCAN] Colonial Military Authority (Side: GUER)","158 -LM J.Burgess: [OPCAN] Colonial Police Force (Side: GUER)","159 -LM J.Burgess: [OPCAN] Fridens (Side: EAST)","160 -LM J.Burgess: [OPCAN] Fridens (Desert) (Side: EAST)","161 -LM J.Burgess: [OPCAN] Fridens (Woodland) (Side: EAST)","162 -LM J.Burgess: [OPCAN] Koslovics (Side: EAST)","163 -LM J.Burgess: [OPCAN] Secessionist Union (Side: EAST)","164 -LM J.Burgess: [OPCAN] UNSC Army (Woodland) (Side: WEST)","165 -LM J.Burgess: [OPCAN] UNSC Army (Desert) (Side: WEST)","166 -LM J.Burgess: [OPCAN] UNSC Army (Mixed) (Side: WEST)","167 -LM J.Burgess: [OPCAN] UNSC Army Peace Corps (Side: WEST)","168 -LM J.Burgess: [OPCAN] UNSC Marine Corps (Woodland) (Side: WEST)","169 -LM J.Burgess: [OPCAN] UNSC Marine Corps (CE:A) (Side: WEST)","170 -LM J.Burgess: [OPCAN] UNSC Marine Corps (Desert) (Side: WEST)","171 -LM J.Burgess: [OPCAN] UNSC Marine Corps (Infinite) (Side: WEST)","172 -LOP_LeightsOPFOR Project OPFOR: Afghan National Army and Police (Side: WEST)","173 -LOP_LeightsOPFOR Project OPFOR: African Militia (Side: GUER)","174 -LOP_LeightsOPFOR Project OPFOR: African Militia (Side: EAST)","175 -LOP_LeightsOPFOR Project OPFOR: Middle Eastern Militia (Side: GUER)","176 -LOP_LeightsOPFOR Project OPFOR: Middle Eastern Militia (Side: EAST)","177 -LOP_LeightsOPFOR Project OPFOR: Boko Haram (Side: EAST)","178 -LOP_LeightsOPFOR Project OPFOR: CDF (Project OPFOR) (Side: WEST)","179 -LOP_LeightsOPFOR Project OPFOR: ChDKZ (Project OPFOR) (Side: EAST)","180 -LOP_LeightsOPFOR Project OPFOR: Hellenic Armed Forces (Side: WEST)","181 -LOP_LeightsOPFOR Project OPFOR: Iraqi Armed Forces (Side: WEST)","182 -LOP_LeightsOPFOR Project OPFOR: Irish Republican Army (Side: EAST)","183 -LOP_LeightsOPFOR Project OPFOR: Iranian Armed Forces (Side: GUER)","184 -LOP_LeightsOPFOR Project OPFOR: Islamic State (Side: GUER)","185 -LOP_LeightsOPFOR Project OPFOR: Islamic State (Side: EAST)","186 -LOP_LeightsOPFOR Project OPFOR: Chernarussian National Insurgents (Side: GUER)","187 -LOP_LeightsOPFOR Project OPFOR: Korean People's Army (Side: EAST)","188 -LOP_LeightsOPFOR Project OPFOR: Kurdish Peshmerga Forces (Side: WEST)","189 -LOP_LeightsOPFOR Project OPFOR: Kurdish Peshmerga Forces (Side: GUER)","190 -LOP_LeightsOPFOR Project OPFOR: Private Military Company (Side: GUER)","191 -LOP_LeightsOPFOR Project OPFOR: Royal Army Corps of Sahrani (Side: GUER)","192 -LOP_LeightsOPFOR Project OPFOR: Sahrani Liberation Army (Side: EAST)","193 -LOP_LeightsOPFOR Project OPFOR: Syrian Armed Forces (Side: EAST)","194 -LOP_LeightsOPFOR Project OPFOR: Takistani Armed Forces (Side: EAST)","195 -LOP_LeightsOPFOR Project OPFOR: Turkish Armed Forces (Side: GUER)","196 -LOP_LeightsOPFOR Project OPFOR: Ultranationalists (Side: GUER)","197 -LOP_LeightsOPFOR Project OPFOR: Ukrainian Armed Forces (Side: GUER)","198 -LOP_LeightsOPFOR Project OPFOR: United Nations (Side: GUER)","199 -LOP_LeightsOPFOR Project OPFOR: United Armed Forces of Novorossiya (Side: EAST)","200 -LOP_LeightsOPFOR Project OPFOR: Ulster Volunteer Force (Side: GUER)","201 -Mark Bohemia Interactive: OTAN (forêt) (Side: WEST)","202 -MOL HcPookie: Molatian Army (Side: EAST)","203 -O jarrad96: Central African Rebels (Side: EAST)","204 -OPF Community Upgrade Project: 2035 CSAT (Pacific) (Side: EAST)","205 -OPTRE Article 2 Studios: Covenant (Side: EAST)","206 -OPTRE Article 2 Studios: Insurrectionists (Side: EAST)","207 -OPTRE Article 2 Studios: Colonial Police (Side: GUER)","208 -OPTRE Article 2 Studios: UNSCDF (Side: WEST)","209 -RHS_AFRF Red Hammer Studios: [ISC] Iraqi Army (Side: WEST)","210 -RHS_AFRF Red Hammer Studios: Russia (MSV) (Side: EAST)","211 -RHS_AFRF Red Hammer Studios: Russia (RVA) (Side: EAST)","212 -RHS_AFRF Red Hammer Studios: Russia (TV) (Side: EAST)","213 -RHS_AFRF Red Hammer Studios: Russia (VDV) (Side: EAST)","214 -RHS_AFRF Red Hammer Studios: Russia (VMF) (Side: EAST)","215 -RHS_AFRF RHS: Russia (VPVO) (Side: EAST)","216 -RHS_AFRF Red Hammer Studios: Russia (VV) (Side: EAST)","217 -RHS_AFRF Red Hammer Studios: Russia (VVS - Grey) (Side: EAST)","218 -RHS_AFRF Red Hammer Studios: Russia (VVS - Camo) (Side: EAST)","219 -RHS_GREF Red Hammer Studios: [ISC] Syrian Arab Army (Side: EAST)","220 -RHS_GREF RHS (A2 port): CDF (Air Forces) (Side: GUER)","221 -RHS_GREF Red Hammer Studios: CDF (Air Forces) (Side: WEST)","222 -RHS_GREF Red Hammer Studios: ChDKZ (Side: EAST)","223 -RHS_SAF RHS (A2 port): SAF (RVIPVO) (Side: GUER)","224 -RHS_SAF RHS (A2 port): SAF (RVIPVO) (Side: EAST)","225 -RHS_SAF Red Hammer Studios: SAF (KOV) (Side: GUER)","226 -RHS_SAF RHS (A2 port): SAF (KOV) (Side: EAST)","227 -RHS_SAF RHS (A2 port): SAF (Casques Bleus) (Side: GUER)","228 -RHS_USAF Red Hammer Studios: USA (SOCOM) (Side: WEST)","229 -RHS_USAF Red Hammer Studios: USA (USAF) (Side: WEST)","230 -RHS_USAF Red Hammer Studios: USA (Army - D) (Side: WEST)","231 -RHS_USAF Red Hammer Studios: USA (USMC - D) (Side: WEST)","232 -RHS_USAF Red Hammer Studios: USA (Navy) (Side: WEST)","233 -RHSGREF www.3commandobrigade.com: CDF (Ground Forces) (Side: GUER)","234 -RHSGREF www.3commandobrigade.com: CDF (Ground Forces) (Side: WEST)","235 -RHSGREF Red Hammer Studios: NAPA (Side: GUER)","236 -RHSGREF Red Hammer Studios: Tanoan Liberation Army (Side: EAST)","237 -RHSGREF Red Hammer Studios: Tanoan Liberation Army (Side: GUER)","238 -RHSGREF Red Hammer Studios: CDF (UN) (Side: GUER)","239 -SG Stagler: Sturmtroopers (Side: WEST)","240 -SG Stagler: Tank Sturmtroopers (Side: WEST)","241 -Tank Bohemia Interactive: 2035 Syndikat (Side: GUER)","242 -UK3CB_Factions www.3commandobrigade.com: USA (Army - W) (Side: WEST)","243 -UK3CB_Factions www.3commandobrigade.com: USA (USMC - W) (Side: WEST)","244 -UK3CB_Factions www.3commandobrigade.com: CDF (National Guard) (Side: GUER)","245 -UK3CB_Factions www.3commandobrigade.com: CDF (National Guard) (Side: WEST)","246 -UK3CB_Factions www.3commandobrigade.com: ChDKZ (Side: GUER)","247 -UK3CB_Factions www.3commandobrigade.com: Horizon Islands Defence Force (Side: WEST)","248 -UK3CB_Factions www.3commandobrigade.com: 3CB AAF (Side: WEST)","249 -UK3CB_Factions www.3commandobrigade.com: 3CB AAF (Side: GUER)","250 -UK3CB_Factions www.3commandobrigade.com: 3CB AAF (Side: EAST)","251 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army (Side: WEST)","252 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army (Side: GUER)","253 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army (Side: EAST)","254 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilians (Side: WEST)","255 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilians (Side: GUER)","256 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilians (Side: EAST)","257 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Extremists (Side: GUER)","258 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Extremists (Side: EAST)","259 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilian Militia (Side: WEST)","260 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilian Militia (Side: GUER)","261 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilian Militia (Side: EAST)","262 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Militia (Side: WEST)","263 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Militia (Side: GUER)","264 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Militia (Side: EAST)","265 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert National Police (Side: WEST)","266 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert National Police (Side: GUER)","267 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert National Police (Side: EAST)","268 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army Paramilitary (Side: WEST)","269 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army Paramilitary (Side: GUER)","270 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Army Paramilitary (Side: EAST)","271 -UK3CB_Factions www.3commandobrigade.com: 3CB Afghan National Army (Side: WEST)","272 -UK3CB_Factions www.3commandobrigade.com: 3CB Afghan National Police (Side: WEST)","273 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Local Defence Volunteers (Side: WEST)","274 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Nationalist Militia (Side: GUER)","275 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Communist Militia (Side: EAST)","276 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Civilians (Side: WEST)","277 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Civilians (Side: GUER)","278 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Civilians (Side: EAST)","279 -UK3CB_Factions www.3commandobrigade.com: 3CB ChDSZ (Chernarussian Movement of the Blue Star) (Side: WEST)","280 -UK3CB_Factions www.3commandobrigade.com: 3CB ChDZZ (Chernarussian Movement of the Green Star) (Side: GUER)","281 -UK3CB_Factions www.3commandobrigade.com: 3CB ChDKZ (Chernarussian Movement of the Red Star) (Side: EAST)","282 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Police Department (Side: WEST)","283 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Police Department (Side: GUER)","284 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Police Department (Side: EAST)","285 -UK3CB_Factions www.3commandobrigade.com: 3CB Cold War USSR - Early (Side: EAST)","286 -UK3CB_Factions www.3commandobrigade.com: 3CB Cold War USSR - Late (Side: EAST)","287 -UK3CB_Factions www.3commandobrigade.com: 3CB Cold War US - Early (Side: WEST)","288 -UK3CB_Factions www.3commandobrigade.com: 3CB Cold War US - Late (Side: WEST)","289 -UK3CB_Factions www.3commandobrigade.com: 3CB NAPA (The National Party) (Side: WEST)","290 -UK3CB_Factions www.3commandobrigade.com: 3CB NAPA (The National Party) (Side: GUER)","291 -UK3CB_Factions www.3commandobrigade.com: 3CB NAPA (The National Party) (Side: EAST)","292 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Army (Side: WEST)","293 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Army (Side: GUER)","294 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Army (Side: EAST)","295 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Civilians (Side: WEST)","296 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Civilians (Side: GUER)","297 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Civilians (Side: EAST)","298 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Pro-Government Militia (Side: WEST)","299 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Tribal Fighters (Side: GUER)","300 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Insurgents (Side: EAST)","301 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Police (Side: WEST)","302 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Police (Side: GUER)","303 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan National Police (Side: EAST)","304 -UK3CB_Factions www.3commandobrigade.com: 3CB UN Peacekeepers (Side: WEST)","305 -UK3CB_Factions www.3commandobrigade.com: 3CB UN Peacekeepers (Side: GUER)","306 -UNSUNG Bohemia Interactive: Australia (UNSUNG) (Side: WEST)","307 -UNSUNG smicdaro, Unsung: N.V.A. (UNSUNG) (Side: EAST)","308 -UNSUNG Bohemia Interactive: V.C. (UNSUNG) (Side: EAST)","309 -UNSUNG UNSUNG: A.R.V.N. (UNSUNG) (Side: GUER)","310 -UNSUNG Bohemia Interactive: New Zealand (UNSUNG) (Side: WEST)","311 -UNSUNG Bohemia Interactive: R.O.K. (UNSUNG) (Side: WEST)","312 -UNSUNG Bohemia Interactive: U.S. (UNSUNG) (Side: WEST)","313 -VTN VTN: Mechanized infantry (EMR) (Side: EAST)","314 -VTN VTN: Militia (Side: GUER)","315 -VTN VTN: Insurgents (Side: GUER)","316 -VTN VTN: Mechanized infantry (VSR-98) (Side: EAST)","317 -VTN VTN: GRU SSPB (Side: EAST)","318 -VTN VTN: ISIL (Side: GUER)","319 -VTN VTN: MVD SPPU (Side: EAST)","320 -VTN VTN: Takistan national guard (Side: EAST)"};
default = 6;
};
class btc_p_AA { // Anti-Air infantry:
@@ -56,13 +98,13 @@ class Params {
class btc_p_civ { // Civil type:
title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_FAC_CTYPE"]);
values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};
- texts[]={"0 - EricJ: Afghan Civilians (Side: CIV)","1 - Bohemia Interactive: Civils (Side: CIV)","2 - Bohemia Interactive: Autre (Side: CIV)","3 -CFP Drew: Civilians (Afghanistan) (Side: CIV)","4 -CFP Drew: Civilians (African Christian) (Side: CIV)","5 -CFP Drew: Civilians (African Islamic) (Side: CIV)","6 -CFP Drew: Civilians (Asian) (Side: CIV)","7 -CFP Drew: Civilians (Chernarus Winter) (Side: CIV)","8 -CFP Drew: Civilians (Malden) (Side: CIV)","9 -CFP Drew: Civilians (Middle Eastern) (Side: CIV)","10 -CUP_Units Community Upgrade Project: Civilians (Russian) (Side: CIV)","11 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Chernarus) (Side: CIV)","12 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Sahrani) (Side: CIV)","13 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Takistan) (Side: CIV)","14 -gm Global Mobilization: East Germany (Side: CIV)","15 -gm Global Mobilization: West Germany (Side: CIV)","16 -LIB Reyhard & Joarius: 40s Civilians (Side: CIV)","17 -LOP_LeightsOPFOR Project OPFOR: Civilians (African) (Side: CIV)","18 -LOP_LeightsOPFOR Project OPFOR: Civilians (Eastern European) (Side: CIV)","19 -LOP_LeightsOPFOR Project OPFOR: Civilians (Middle Eastern) (Side: CIV)","20 -OPTRE Article 2 Studios: IDAP (Side: CIV)","21 -OPTRE Bohemia Interactive: Civilians (UEG) (Side: CIV)","22 -RDS_CIV_PACK RDS (BIS A2 Port): Russians (Side: CIV)","23 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilians (Side: CIV)","24 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Civilians (Side: CIV)","25 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Civilians (Side: CIV)","26 -UNSUNG Bohemia Interactive: Vietnamese (UNSUNG) (Side: CIV)"};
+ texts[]={"0 - EricJ: Afghan Civilians (Side: CIV)","1 - Bohemia Interactive: Civils (Side: CIV)","2 - Bohemia Interactive: Autre (Side: CIV)","3 -CFP Drew: Civilians (Afghanistan) (Side: CIV)","4 -CFP Drew: Civilians (African Christian) (Side: CIV)","5 -CFP Drew: Civilians (African Islamic) (Side: CIV)","6 -CFP Drew: Civilians (Asian) (Side: CIV)","7 -CFP Drew: Civilians (Chernarus Winter) (Side: CIV)","8 -CFP Drew: Civilians (Malden) (Side: CIV)","9 -CFP Drew: Civilians (Middle Eastern) (Side: CIV)","10 -CUP_Units Community Upgrade Project: Civilians (Russian) (Side: CIV)","11 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Chernarus) (Side: CIV)","12 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Sahrani) (Side: CIV)","13 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Takistan) (Side: CIV)","14 -gm Global Mobilization: East Germany (Side: CIV)","15 -gm Global Mobilization: West Germany (Side: CIV)","16 -LIB Reyhard & Joarius: 40s Civilians (Side: CIV)","17 -LOP_LeightsOPFOR Project OPFOR: Civilians (African) (Side: CIV)","18 -LOP_LeightsOPFOR Project OPFOR: Civilians (Eastern European) (Side: CIV)","19 -LOP_LeightsOPFOR Project OPFOR: Civilians (Middle Eastern) (Side: CIV)","20 -OPTRE Article 2 Studios: IDAP (Side: CIV)","21 -OPTRE Article 2 Studios: Civilians (UEG) (Side: CIV)","22 -RDS_CIV_PACK RDS (BIS A2 Port): Russians (Side: CIV)","23 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilians (Side: CIV)","24 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Civilians (Side: CIV)","25 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Civilians (Side: CIV)","26 -UNSUNG Bohemia Interactive: Vietnamese (UNSUNG) (Side: CIV)"};
default = 1;
};
class btc_p_civ_veh { // Civil vehicle type:
title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_FAC_CTYPEVEH"]);
values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};
- texts[]={"0 - EricJ: Afghan Civilians (Side: CIV)","1 - Bohemia Interactive: Civils (Side: CIV)","2 - Bohemia Interactive: Autre (Side: CIV)","3 -CFP Drew: Civilians (Afghanistan) (Side: CIV)","4 -CFP Drew: Civilians (African Christian) (Side: CIV)","5 -CFP Drew: Civilians (African Islamic) (Side: CIV)","6 -CFP Drew: Civilians (Asian) (Side: CIV)","7 -CFP Drew: Civilians (Chernarus Winter) (Side: CIV)","8 -CFP Drew: Civilians (Malden) (Side: CIV)","9 -CFP Drew: Civilians (Middle Eastern) (Side: CIV)","10 -CUP_Units Community Upgrade Project: Civilians (Russian) (Side: CIV)","11 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Chernarus) (Side: CIV)","12 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Sahrani) (Side: CIV)","13 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Takistan) (Side: CIV)","14 -gm Global Mobilization: East Germany (Side: CIV)","15 -gm Global Mobilization: West Germany (Side: CIV)","16 -LIB Reyhard & Joarius: 40s Civilians (Side: CIV)","17 -LOP_LeightsOPFOR Project OPFOR: Civilians (African) (Side: CIV)","18 -LOP_LeightsOPFOR Project OPFOR: Civilians (Eastern European) (Side: CIV)","19 -LOP_LeightsOPFOR Project OPFOR: Civilians (Middle Eastern) (Side: CIV)","20 -OPTRE Article 2 Studios: IDAP (Side: CIV)","21 -OPTRE Bohemia Interactive: Civilians (UEG) (Side: CIV)","22 -RDS_CIV_PACK RDS (BIS A2 Port): Russians (Side: CIV)","23 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilians (Side: CIV)","24 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Civilians (Side: CIV)","25 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Civilians (Side: CIV)","26 -UNSUNG Bohemia Interactive: Vietnamese (UNSUNG) (Side: CIV)"};
+ texts[]={"0 - EricJ: Afghan Civilians (Side: CIV)","1 - Bohemia Interactive: Civils (Side: CIV)","2 - Bohemia Interactive: Autre (Side: CIV)","3 -CFP Drew: Civilians (Afghanistan) (Side: CIV)","4 -CFP Drew: Civilians (African Christian) (Side: CIV)","5 -CFP Drew: Civilians (African Islamic) (Side: CIV)","6 -CFP Drew: Civilians (Asian) (Side: CIV)","7 -CFP Drew: Civilians (Chernarus Winter) (Side: CIV)","8 -CFP Drew: Civilians (Malden) (Side: CIV)","9 -CFP Drew: Civilians (Middle Eastern) (Side: CIV)","10 -CUP_Units Community Upgrade Project: Civilians (Russian) (Side: CIV)","11 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Chernarus) (Side: CIV)","12 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Sahrani) (Side: CIV)","13 -CUP_Vehicles $CUP_AUTHOR_STRING: Civilians (Takistan) (Side: CIV)","14 -gm Global Mobilization: East Germany (Side: CIV)","15 -gm Global Mobilization: West Germany (Side: CIV)","16 -LIB Reyhard & Joarius: 40s Civilians (Side: CIV)","17 -LOP_LeightsOPFOR Project OPFOR: Civilians (African) (Side: CIV)","18 -LOP_LeightsOPFOR Project OPFOR: Civilians (Eastern European) (Side: CIV)","19 -LOP_LeightsOPFOR Project OPFOR: Civilians (Middle Eastern) (Side: CIV)","20 -OPTRE Article 2 Studios: IDAP (Side: CIV)","21 -OPTRE Article 2 Studios: Civilians (UEG) (Side: CIV)","22 -RDS_CIV_PACK RDS (BIS A2 Port): Russians (Side: CIV)","23 -UK3CB_Factions www.3commandobrigade.com: 3CB African Desert Civilians (Side: CIV)","24 -UK3CB_Factions www.3commandobrigade.com: 3CB Chernarus Civilians (Side: CIV)","25 -UK3CB_Factions www.3commandobrigade.com: 3CB Takistan Civilians (Side: CIV)","26 -UNSUNG Bohemia Interactive: Vietnamese (UNSUNG) (Side: CIV)"};
default = 1;
};
class btc_p_spawn_title { // << Spawn options >>
@@ -83,12 +125,24 @@ class Params {
texts[]={"0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"};
default = 100;
};
+ class btc_p_mil_static_group_ratio { // Enemy static density:
+ title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SPWAN_ENEMY_STATIC_DENSITY"]);
+ values[]={0,10,20,30,40,50,60,70,80,90,100};
+ texts[]={"0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"};
+ default = 100;
+ };
class btc_p_civ_group_ratio { // Civilian density:
title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SPWAN_CIVILIAN_DENSITY"]);
values[]={0,10,20,30,40,50,60,70,80,90,100};
texts[]={"0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"};
default = 100;
};
+ class btc_p_animals_group_ratio { // Animal density:
+ title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SPWAN_ANIMALS_DENSITY"]);
+ values[]={0,10,20,30,40,50,60,70,80,90,100};
+ texts[]={"0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%"};
+ default = 100;
+ };
class btc_p_wp_house_probability { // Density of military in house:
title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SPWAN_MIL_INHOUSE_DENSITY"]);
values[]={0,10,20,30,40,50,60,70,80,90,100};
@@ -179,18 +233,6 @@ class Params {
texts[]={"100 %","90 %","80 %","70 %","60 %","50 %","40 %","30 %","20 %","10 %","0 %"};
default = 70;
};
- class btc_p_medical_title { // << Medical options >>
- title = $STR_BTC_HAM_MEDI_TITLE;
- values[]={0};
- texts[]={""};
- default = 0;
- };
- class btc_p_redeploy { // Allow re-deploy?
- title = __EVAL(format [" %1", localize "STR_BTC_HAM_MEDI_REDEPLOY"]);
- values[]={0,1};
- texts[]={$STR_DISABLED,$STR_ENABLED};
- default = 1;
- };
class btc_p_skill_title { // << A3 Skill options >>
title = $STR_BTC_HAM_PARAM_SKILL_TITLE;
values[]={0};
@@ -335,6 +377,12 @@ class Params {
texts[]={$STR_ACE_ViewDistance_object_verylow,$STR_A3_TIME_TRIALS_MISCTT_ROF_25,$STR_3DEN_ATTRIBUTES_SPEEDMODE_NORMAL,$STR_A3_TIME_TRIALS_MISCTT_ROF_21}; //texts[]={"Very Low","Low","Normal","High"};
default = 200;
};
+ class btc_p_rep_notify { // Show reputation change:
+ title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_OTHER_SHOWREP"]);
+ values[]={0, 1};
+ texts[]={$STR_DISABLED,$STR_ENABLED};
+ default = 1;
+ };
class btc_p_city_radius { // Spawn city radius offset:
title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_OTHER_SPAWNRAD"]);
values[]={0,1,2,3,4,5,6,7,8};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/doc.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/doc.sqf
index 91cd330f7..023207b52 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/doc.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/doc.sqf
@@ -4,12 +4,6 @@ player createDiarySubject [_MainCategory, _MainCategory];
//Headless and Data base
player createDiaryRecord [_MainCategory, [localize "STR_BTC_HAM_DOC_HEADLESS_TITLE", localize "STR_BTC_HAM_DOC_HEADLESS_TEXT"]];
-//Wounds
-player createDiaryRecord [_MainCategory, [localize "STR_BTC_HAM_DOC_WOUNDS_TITLE", localize "STR_BTC_HAM_DOC_WOUNDS_TEXT"]];
-
-//Deafness
-player createDiaryRecord [_MainCategory, [localize "STR_BTC_HAM_DOC_DEAFNESS_TITLE", localize "STR_BTC_HAM_DOC_DEAFNESS_TEXT"]];
-
//Chemical warfare
player createDiaryRecord [_MainCategory, [localize "STR_BTC_HAM_DOC_CHEMICALWARFARE_TITLE", localize "STR_BTC_HAM_DOC_CHEMICALWARFARE_TEXT"]];
@@ -22,8 +16,8 @@ player createDiaryRecord [_MainCategory, [localize "str_a3_cfghints_command_vehi
//Side Mission
player createDiaryRecord [_MainCategory, [localize "STR_BTC_HAM_DOC_SIDEMISSION_TITLE", localize "STR_BTC_HAM_DOC_SIDEMISSION_TEXT"]];
-//FOB
-player createDiaryRecord [_MainCategory, [localize "STR_BTC_HAM_DOC_FOB_TITLE", localize "STR_BTC_HAM_DOC_FOB_TEXT"]];
+//Respawn position
+player createDiaryRecord [_MainCategory, [localize "str_a3_cfgvehicles_modulerespawnposition_f_0", localize "STR_BTC_HAM_DOC_FOB_TEXT"]];
//Sling loading
player createDiaryRecord [_MainCategory, [localize "STR_A3_SlingLoad1", localize "STR_BTC_HAM_DOC_SLING_TEXT"]];
@@ -52,14 +46,8 @@ player createDiaryRecord [_MainCategory, [localize "STR_BTC_HAM_ACTION_ORDERS_MA
//Traffic
player createDiaryRecord [_MainCategory, [localize "STR_BTC_HAM_DOC_TRAFFIC_TITLE", localize "STR_BTC_HAM_DOC_TRAFFIC_TEXT"]];
-//Gear
-player createDiaryRecord [_MainCategory, [localize "STR_BTC_HAM_DOC_GEAR_TITLE", localize "STR_BTC_HAM_DOC_GEAR_TEXT"]];
-
-//Interaction
-player createDiaryRecord [_MainCategory, [localize "STR_ACE_Interaction_DisplayName", localize "STR_BTC_HAM_DOC_INTERACTION_TEXT"]];
-
//Version
player createDiaryRecord [_MainCategory, [localize "STR_A3_FM_Welcome4",
- format ([" Version %1.%2.%3 "] + btc_version)
+ format ([" Version %1.%2.%3
"] + btc_version)
]
];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/garage.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/garage.sqf
index e1e7c7941..9939f84bd 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/garage.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/garage.sqf
@@ -56,6 +56,6 @@ with uiNamespace do {
_x call CBA_fnc_deleteEntity;
[_type, _pos, _dir, _customization] remoteExecCall ["btc_fnc_log_createVehicle", 2];
- [_type] remoteExecCall ["btc_fnc_eh_veh_init", -2];
+ [_type] remoteExecCall ["btc_fnc_veh_init", -2];
} forEach _veh_list;
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/loadout.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/loadout.sqf
index bb4f7df38..aab2effb8 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/loadout.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/loadout.sqf
@@ -6,7 +6,7 @@ Description:
Generate a loadout from an array of defined loadout depending on trait, medical level, color and hour of the day.
Parameters:
- _type - Type of loadout: 0 - Rifleman, 1 - Medic, 2 - Repair, 3 - Engineer, 4 - Anti-Tank, 5 - Anti Air, 6 - Sniper, 7 - Machine gunner. [Number]
+ _type - Type of loadout: 0 - Rifleman, 1 - Medic, 2 - Repair, 3 - Engineer, 4 - Anti-Tank, 5 - Anti Air, 6 - Sniper, 7 - Machine gunner, 8 - CBRN, 9 - Drone hacker. [Number]
_color - Color of skin loadout: 0 - Desert, 1 - Tropic, 2 - Black, 3 - Forest. [Number]
_isDay - Select night (false) or day (true) loadout. [Boolean]
_medicalParameters - Select the correct medical stuff depends on ACE3 medical parameters. [Array]
@@ -30,7 +30,7 @@ Examples:
sleep 1;
} forEach [false,true];
} forEach [0,1,2,3];
- } forEach [0,1,2,3,4,5,6,7];
+ } forEach [0,1,2,3,4,5,6,7,8,9];
};
(end)
@@ -55,7 +55,7 @@ if (_color < 0) then {
case (worldName in ["Tanoa", "lingor3"]): {
1
};
- case (worldName in ["chernarus", "Enoch", "sara"]): {
+ case (worldName in ["chernarus", "Enoch", "sara", "vt7"]): {
3
};
default {
@@ -65,7 +65,7 @@ if (_color < 0) then {
}
};
-(_arsenal_loadout apply {_x select _color}) params ["_uniform", "_vest", "_helmet", "_hood", "_laserdesignator", "_night_vision", "_weapon", "_weapon_sniper", "_weapon_machineGunner", "_bipod", "_pistol", "_launcher_AT", "_launcher_AA", "_backpack", "_backpack_big", "_radio"];
+(_arsenal_loadout apply {_x select _color}) params ["_uniform", "_uniformCBRN", "_uniformSniper", "_vest", "_helmet", "_hood", "_hoodCBRN", "_laserdesignator", "_night_vision", "_weapon", "_weapon_sniper", "_weapon_machineGunner", "_bipod", "_pistol", "_launcher_AT", "_launcher_AA", "_backpack", "_backpack_big", "_backpackCBRN", "_radio"];
if (_isDay isEqualType 0) then {
(date call BIS_fnc_sunriseSunsetTime) params ["_sunrise", "_sunset"];
@@ -95,7 +95,28 @@ if (_fractures > 0) then {
};
_cargo_uniform append _medical;
-//Choose appropriats weapon/optics depends on _type
+private _uniform = switch (_type) do {
+ case 6: {
+ _uniformSniper
+ };
+ case 8: {
+ _uniformCBRN
+ };
+ default {
+ _uniform
+ };
+};
+
+private _hood = switch (_type) do {
+ case 8: {
+ _hoodCBRN
+ };
+ default {
+ _hood
+ };
+};
+
+//Choose appropriate weapon/optics depends on _type
private _array = switch (_type) do {
case 6: {
[_weapon_sniper, ["ACE_optic_Hamr_2D", "ACE_optic_LRPS_2D"]];
@@ -150,7 +171,9 @@ private _cargos = [
[_backpack, [[_launcherMagazines param [1, _launcherMagazine], 1, _launcherCount], [_launcherMagazine, 1, _launcherCount]]],
[_backpack_big, [[_launcherMagazine, 2, _launcherCount]]],
[_backpack, [["ACE_Sandbag_empty", 1], ["ACE_Kestrel4500", 1], ["ACE_ATragMX", 1], ["ACE_RangeCard", 1], ["ACE_EntrenchingTool", 1]]],
- []
+ [],
+ [_backpackCBRN, [["G_Respirator_white_F", 5]]],
+ [_backpack, [["muzzle_antenna_02_f", 1], ["muzzle_antenna_01_f", 1], [["hgun_esd_01_F", "", "", "", [], [], ""], 1]]]
];
private _binocular_array = [_laserdesignator, "", "", "", ["Laserbatteries", 1], [], ""];
private _launcher_array = [_launcher, "", "", "", [_launcherMagazine, _launcherCount], [], ""];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/trait.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/trait.sqf
index faf1a31e0..5e559cb52 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/trait.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/arsenal/trait.sqf
@@ -48,6 +48,12 @@ switch (true) do {
case ([typeOf _player, ["MachineGun", ""]] call btc_fnc_mil_ammoUsage): {
_type_ammoUsageAllowed = [7, [["MachineGun", ""]]];
};
+ case ("cbrn" in toLower uniform _player): {
+ _type_ammoUsageAllowed = [8, [["AssaultRifle", "", [false, "Rifle_Long_Base_F"]]]];
+ };
+ case (_player getUnitTrait "UAVHacker"): {
+ _type_ammoUsageAllowed = [9, [["AssaultRifle", "", [false, "Rifle_Long_Base_F"]]]];
+ };
default {
_type_ammoUsageAllowed = [0, [["AssaultRifle", "", [false, "Rifle_Long_Base_F"]], ["RocketLauncher", ""]]];
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/create.sqf
index bddf48a65..4cb694556 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/create.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/create.sqf
@@ -8,7 +8,7 @@ Description:
Parameters:
_cache_pos - Position of the cache. [Array]
_p_chem - Create a chemical cache. [Boolean]
- _probilityOfChemical - Probability to create a chemical cache. [Number]
+ _probilityNotChemical - Probability to not create a chemical cache. [Number]
Returns:
@@ -29,12 +29,12 @@ Author:
params [
["_cache_pos", btc_cache_pos, [[]]],
["_p_chem", btc_p_chem, [true]],
- ["_probilityOfChemical", 0.7, [0]]
+ ["_probilityNotChemical", 0.7, [0]]
];
private _isChem = false;
if (_p_chem) then {
- _isChem = random 1 > _probilityOfChemical;
+ _isChem = random 1 > _probilityNotChemical;
};
private _cacheType = selectRandom (btc_cache_type select 0);
btc_cache_obj = _cacheType createVehicle _cache_pos;
@@ -45,7 +45,7 @@ clearWeaponCargoGlobal btc_cache_obj;
clearItemCargoGlobal btc_cache_obj;
clearMagazineCargoGlobal btc_cache_obj;
-[btc_cache_obj, "HandleDamage", "btc_fnc_cache_hd_cache"] call btc_fnc_eh_persistOnLocalityChange;
+[btc_cache_obj, "HandleDamage", btc_fnc_cache_hd] remoteExecCall ["CBA_fnc_addBISEventHandler", 0, true];
if (_isChem) then {
btc_chem_contaminated pushBack btc_cache_obj;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/find_pos.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/find_pos.sqf
index f55ae6f2e..9883f33c3 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/find_pos.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/find_pos.sqf
@@ -36,9 +36,8 @@ if (_city getVariable ["type", ""] in ["NameLocal", "Hill", "NameMarine"]) exitW
[] call btc_fnc_cache_find_pos;
};
-private _xx = _city getVariable ["RadiusX", 500];
-private _yy = _city getVariable ["RadiusY", 500];
-private _pos = [getPos _city, _xx + _yy] call btc_fnc_randomize_pos;
+private _radius = _city getVariable ["radius", 200];
+private _pos = [getPos _city, _radius] call btc_fnc_randomize_pos;
private _houses = [_pos, 50] call btc_fnc_getHouses;
if (_houses isEqualTo []) then {
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/hd_cache.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/hd.sqf
similarity index 68%
rename from =BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/hd_cache.sqf
rename to =BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/hd.sqf
index 36db9199e..5bd209c8f 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/hd_cache.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/hd.sqf
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
-Function: btc_fnc_cache_hd_cache
+Function: btc_fnc_cache_hd
Description:
Destroy an ammo cache only when an explposive with damage > 0.6 is used.
@@ -11,12 +11,14 @@ Parameters:
_damage - Amount of damage get by the object. [Number]
_injurer - Not use. [Object]
_ammo - Type of ammo use to make damage. [String]
+ _hitIndex - Hit part index of the hit point, -1 otherwise. [Number]
+ _instigator - Person who pulled the trigger. [Object]
Returns:
Examples:
(begin example)
- _result = [] call btc_fnc_cache_hd_cache;
+ _result = [] call btc_fnc_cache_hd;
(end)
Author:
@@ -29,38 +31,39 @@ params [
["_part", "", [""]],
["_damage", 0, [0]],
["_injurer", objNull, [objNull]],
- ["_ammo", "", [""]]
+ ["_ammo", "", [""]],
+ ["_hitIndex", 0, [0]],
+ ["_instigator", objNull, [objNull]]
];
private _explosive = (getNumber(configFile >> "cfgAmmo" >> _ammo >> "explosive") > 0);
-if (isNil {_cache getVariable "btc_hd_cache"} && {_explosive} && {_damage > 0.6}) then {
+if (
+ !(_cache getVariable ["btc_fnc_cache_hd_fired", false]) &&
+ {_explosive} &&
+ {_damage > 0.6}
+) then {
+ _cache setVariable ["btc_fnc_cache_hd_fired", true];
if (!isServer) exitWith {
- [_cache, "HandleDamage", "btc_fnc_cache_hd_cache"] call btc_fnc_eh_removePersistOnLocalityChange;
- _this remoteExecCall ["btc_fnc_cache_hd_cache", 2];
+ _this remoteExecCall ["btc_fnc_cache_hd", 2];
};
- _cache setVariable ["btc_hd_cache", true];
-
//Effects
private _pos = getPosATL btc_cache_obj;
"Bo_GBU12_LGB_MI10" createVehicle _pos;
- [_pos] spawn {
- params ["_pos"];
-
- sleep random [0.5, 2, 3];
- "M_PG_AT" createVehicle _pos;
- sleep random [0.5, 2, 3];
- "M_Titan_AT" createVehicle _pos;
- };
+ [{
+ "M_PG_AT" createVehicle _this;
+ [{
+ "M_PG_AT" createVehicle _this;
+ }, _this, random [0.5, 2, 3]] call CBA_fnc_waitAndExecute;
+ }, _pos, random [0.5, 2, 3]] call CBA_fnc_waitAndExecute;
[_pos] call btc_fnc_deaf_earringing;
[attachedObjects _cache, btc_cache_obj, btc_cache_markers] call CBA_fnc_deleteEntity;
private _marker = createMarker [format ["btc_cache_%1", btc_cache_n], btc_cache_pos];
_marker setMarkerType "hd_destroy";
[_marker, "STR_BTC_HAM_O_EH_HDCACHE_MRK", btc_cache_n] remoteExecCall ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Cached %1 destroyed
-
_marker setMarkerSize [1, 1];
_marker setMarkerColor "ColorRed";
@@ -68,7 +71,7 @@ if (isNil {_cache getVariable "btc_hd_cache"} && {_explosive} && {_damage > 0.6}
[format ["DESTROYED: ID %1 POS %2", btc_cache_n, btc_cache_pos], __FILE__, [false]] call btc_fnc_debug_message;
};
- btc_rep_bonus_cache call btc_fnc_rep_change;
+ [btc_rep_bonus_cache, _instigator] call btc_fnc_rep_change;
//Notification
[0] remoteExecCall ["btc_fnc_show_hint", 0];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/damage.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/damage.sqf
index 449210b17..c740667ab 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/damage.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/damage.sqf
@@ -30,23 +30,56 @@ params [
["_cfgGlasses", configNull, [configNull]]
];
-private _hasProtection = [
- (
- goggles _unit isKindOf ["G_RegulatorMask_base_F", _cfgGlasses] ||
- goggles _unit isKindOf ["G_AirPurifyingRespirator_01_base_F", _cfgGlasses]
- ), (
- backpack _unit isKindOf "B_SCBA_01_base_F" ||
- backpack _unit isKindOf "B_CombinationUnitRespirator_01_Base_F"
- ),
- uniform _unit find "CBRN" > -1
-];
+private _googles = goggles _unit;
+private _backpack = backpack _unit;
+private _uniform = toLower uniform _unit;
+private _protection = 0;
-if !(false in _hasProtection) exitWith {_this};
+if (
+ [
+ "G_Respirator_base_F"
+ ] findIf {_googles isKindOf [_x, _cfgGlasses]} > -1
+) then {
+ _protection = _protection + selectRandom [0.15, 0.3]; // Less protection than respirator
+} else {
+ if (
+ [
+ "G_RegulatorMask_base_F",
+ "G_AirPurifyingRespirator_01_base_F",
+ "GP21_GasmaskPS",
+ "GP5Filter_RaspiratorPS",
+ "GP7_RaspiratorPS",
+ "SE_M17",
+ "Hamster_PS",
+ "SE_S10",
+ "MK502"
+ ] findIf {_googles isKindOf [_x, _cfgGlasses]} > -1
+ ) then {
+ _protection = _protection + 0.3;
+ };
+};
+if (
+ [
+ "B_SCBA_01_base_F",
+ "B_CombinationUnitRespirator_01_Base_F"
+ ] findIf {_backpack isKindOf _x} > -1
+) then {
+ _protection = _protection + 0.1;
+};
+if !(_uniform isEqualTo "") then {
+ _protection = _protection + 0.5;
+ if (
+ [
+ "cbrn"
+ ] findIf {_x in _uniform} > -1
+ ) then {
+ _protection = _protection + 0.1;
+ };
+};
-_hasProtection append [true, true, true];
+if (_protection >= 1) exitWith {_this};
-// Probability of damage increase without protection
-if (_firstDamage || !(selectRandom _hasProtection)) then {
+if (_firstDamage || (random 1 > _protection)) then {
_this set [1, false];
[_unit, random [0.05, 0.05, 0.2], selectRandom _bodyParts, "stab"] call ace_medical_fnc_addDamageToUnit; // ropeburn
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/damageLoop.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/damageLoop.sqf
index d5aefd307..ed7bf6177 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/damageLoop.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/damageLoop.sqf
@@ -46,11 +46,11 @@ private _handle = [{
[_handle] call CBA_fnc_removePerFrameHandler;
if (btc_debug || btc_debug_log) then {
- [format ["Stop: %1", _handle] , __FILE__, [btc_debug, btc_debug_log]] call btc_fnc_debug_message;
+ [format ["Stop: %1", _handle], __FILE__, [btc_debug, btc_debug_log]] call btc_fnc_debug_message;
};
};
}, [_handle, _unit]] call CBA_fnc_addEventHandlerArgs;
if (btc_debug || btc_debug_log) then {
- [format ["Start: %1", _handle] , __FILE__, [btc_debug, btc_debug_log]] call btc_fnc_debug_message;
+ [format ["Start: %1", _handle], __FILE__, [btc_debug, btc_debug_log]] call btc_fnc_debug_message;
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/handleShower.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/handleShower.sqf
index 3df02d216..8fd10fb53 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/handleShower.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/chem/handleShower.sqf
@@ -50,7 +50,7 @@ params [
};
} forEach _needActivate;
{
- remoteExec ["", _x];
+ remoteExecCall ["", _x];
[_x] remoteExecCall ["BIN_fnc_deconShowerAnimStop", 0];
} forEach _needDesactivate;
}, 2, [btc_chem_decontaminate, _minDistance]] call CBA_fnc_addPerFrameHandler;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/activate.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/activate.sqf
index 7987e8b9f..df7adca55 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/activate.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/activate.sqf
@@ -8,7 +8,9 @@ Description:
Parameters:
_id - Number of the city will be activated. [Number]
_p_mil_group_ratio - Enemy density. [Number]
+ _p_mil_static_group_ratio - Enemy static density. [Number]
_p_civ_group_ratio - Civilian density. [Number]
+ _p_animals_group_ratio - Animal density. [Number]
_p_civ_max_veh - Maximum number of civilian patrol. [Number]
_p_patrol_max - Maximum number of enemy patrol. [Number]
_wp_ratios - Ratio of spawned group in and out houses. [Array]
@@ -28,42 +30,48 @@ Author:
params [
["_id", 0, [0]],
["_p_mil_group_ratio", btc_p_mil_group_ratio, [0]],
+ ["_p_mil_static_group_ratio", btc_p_mil_static_group_ratio, [0]],
["_p_civ_group_ratio", btc_p_civ_group_ratio, [0]],
+ ["_p_animals_group_ratio", btc_p_animals_group_ratio, [0]],
["_p_civ_max_veh", btc_p_civ_max_veh, [0]],
["_p_patrol_max", btc_p_patrol_max, [0]],
["_wp_ratios", btc_p_mil_wp_ratios, [[]]]
];
_wp_ratios params ["_wp_house", "_wp_sentry"];
-if (btc_debug) then {
- ("Activate " + str _id) call CBA_fnc_notify;
-};
-
private _city = btc_city_all select _id;
-
if (_city getVariable "activating") exitWith {};
+if (btc_debug) then {
+ [str _id, __FILE__, [btc_debug, btc_debug_log, true]] call btc_fnc_debug_message;
+ _city setVariable ["serverTime", serverTime];
+};
+
_city setVariable ["activating", true];
+_city setVariable ["active", true];
-private _is_init = _city getVariable ["initialized", false];
private _data_units = _city getVariable ["data_units", []];
+private _data_animals = _city getVariable ["data_animals", []];
private _type = _city getVariable ["type", ""];
-private _radius_x = _city getVariable ["RadiusX", 0];
-private _radius_y = _city getVariable ["RadiusY", 0];
+private _radius = _city getVariable ["radius", 100];
private _has_en = _city getVariable ["occupied", false];
private _has_ho = _city getVariable ["has_ho", false];
private _ieds = _city getVariable ["ieds", []];
-private _radius = (_radius_x + _radius_y)/2;
+private _spawningRadius = _radius/2;
-if (!_is_init) then {
+if (!(_city getVariable ["initialized", false])) then {
private _ratio = (switch _type do {
case "Hill" : {random 1};
+ case "VegetationFir" : {random 1};
+ case "BorderCrossing" : {random 2};
case "NameLocal" : {random 2.5};
+ case "StrongpointArea" : {random 3};
case "NameVillage" : {random 3.5};
case "NameCity" : {random 5};
case "NameCityCapital" : {random 6};
case "Airport" : {0};
case "NameMarine" : {0};
+ default {0};
});
private _ratio_ied = _ratio;
@@ -81,31 +89,27 @@ if (!_is_init) then {
};
_ratio_ied = _ratio_ied * btc_p_ied;
- if (_ratio_ied > 0) then {[_city, _radius, (_ratio_ied / 2) + (random _ratio_ied)] call btc_fnc_ied_init_area};
+ if (_ratio_ied > 0) then {
+ [[_city, _spawningRadius, (_ratio_ied / 2) + (random _ratio_ied)], btc_fnc_ied_initArea] call btc_fnc_delay_exec;
+ };
- _ieds = _city getVariable ["ieds", []];
_city setVariable ["initialized", true];
};
+[_city, btc_fnc_ied_check] call btc_fnc_delay_exec;
-_city setVariable ["active", true];
-
-if !(_ieds isEqualTo []) then {
- private _ieds_data = _ieds apply {_x call btc_fnc_ied_create};
- [_city, _ieds_data] call btc_fnc_ied_check;
-};
-
+private _delay = 0;
if !(_data_units isEqualTo []) then {
{
- (_x call btc_fnc_data_spawn_group) params ["_leader", "_type"];
- if (_type in [5, 7]) then {
- [_leader, "killed", "btc_fnc_ied_suiciderKilled", [_id]] call btc_fnc_eh_persistOnLocalityChange;
- };
+ _delay = _delay + ([_x, _city] call btc_fnc_data_spawn_group);
} forEach _data_units;
} else {
// Maximum number of enemy group
private _max_number_group = (switch _type do {
case "Hill" : {1};
+ case "VegetationFir" : {1};
+ case "BorderCrossing" : {2};
case "NameLocal" : {2};
+ case "StrongpointArea" : {3};
case "NameVillage" : {3};
case "NameCity" : {7};
case "NameCityCapital" : {15};
@@ -115,53 +119,94 @@ if !(_data_units isEqualTo []) then {
});
if (_has_en) then {
- for "_i" from 1 to (round (_p_mil_group_ratio * (1 + random _max_number_group))) do {[_city, _radius, 1 + round random [0, 1, 2] , random 1] call btc_fnc_mil_create_group;};
+ for "_i" from 1 to (round (_p_mil_group_ratio * (1 + random _max_number_group))) do {
+ [_city, _spawningRadius, 1 + round random [0, 1, 2], random 1] call btc_fnc_mil_create_group;
+ };
};
- //Spawn civilians
- if (_type != "Hill") then {
+ if !(_type in ["Hill", "NameMarine"]) then {
+ private _houses = ([position _city, _spawningRadius/3] call btc_fnc_getHouses) call BIS_fnc_arrayShuffle;
+
+ if (_has_en) then {
+ private _max_number_group = (switch _type do {
+ case "VegetationFir" : {1};
+ case "BorderCrossing" : {2};
+ case "NameLocal" : {1};
+ case "StrongpointArea" : {2};
+ case "NameVillage" : {2};
+ case "NameCity" : {4};
+ case "NameCityCapital" : {5};
+ case "Airport" : {2};
+ default {0};
+ });
+ [+_houses, round (_p_mil_static_group_ratio * random _max_number_group), _city] call btc_fnc_mil_create_staticOnRoof;
+ };
+
+ // Spawn civilians
private _max_number_group = (switch _type do {
+ case "VegetationFir" : {1};
+ case "BorderCrossing" : {0};
case "NameLocal" : {3};
+ case "StrongpointArea" : {0};
case "NameVillage" : {6};
case "NameCity" : {10};
case "NameCityCapital" : {19};
case "Airport" : {6};
default {2};
});
- [_city, _radius/3, round (_p_civ_group_ratio * random _max_number_group)] call btc_fnc_civ_populate;
+ [+_houses, round (_p_civ_group_ratio * random _max_number_group), _city] call btc_fnc_civ_populate;
};
};
-
-if (_has_en) then {
- private _trigger = createTrigger ["EmptyDetector", getPos _city];
- _trigger setTriggerArea [_radius_x + _radius_y, _radius_x + _radius_y, 0, false];
- _trigger setTriggerActivation [str btc_enemy_side, "NOT PRESENT", false];
- _trigger setTriggerStatements ["this", format ["[%1] call btc_fnc_city_set_clear", _id], ""];
- _city setVariable ["trigger", _trigger];
+if (btc_p_animals_group_ratio > 0) then {
+ if !(_data_animals isEqualTo []) then {
+ {
+ (_x + [nil, _city]) call btc_fnc_delay_createAgent;
+ } forEach _data_animals;
+ } else {
+ // Spawn animals
+ private _max_number_animalsGroup = (switch _type do {
+ case "Hill" : {3};
+ case "VegetationFir" : {3};
+ case "NameLocal" : {3};
+ case "NameVillage" : {2};
+ case "NameCity" : {1};
+ case "NameCityCapital" : {0};
+ case "Airport" : {0};
+ case "NameMarine" : {0};
+ default {0};
+ });
+ for "_i" from 1 to (round (random _max_number_animalsGroup)) do {
+ private _pos = [_city, _spawningRadius/3] call CBA_fnc_randPos;
+ for "_i" from 1 to (round (random 3)) do {
+ [selectRandom btc_animals_type, [_pos, 6] call CBA_fnc_randPos, nil, _city] call btc_fnc_delay_createAgent;
+ };
+ };
+ };
};
if (_city getVariable ["spawn_more", false]) then {
_city setVariable ["spawn_more", false];
for "_i" from 1 to (round (_p_mil_group_ratio * (2 + random 3))) do {
- [_city, _radius, 4 + round random 3, random 1] call btc_fnc_mil_create_group;
+ [_city, _spawningRadius, 4 + round random 3, random 1] call btc_fnc_mil_create_group;
};
if (btc_p_veh_armed_spawn_more) then {
private _closest = [_city, btc_city_all select {!(_x getVariable ["active", false])}, false] call btc_fnc_find_closecity;
for "_i" from 1 to (1 + round random 2) do {
- [{_this call btc_fnc_mil_send}, [_closest, getPos _city, 1, selectRandom btc_type_motorized_armed], _i * 2] call CBA_fnc_waitAndExecute;
+ [[_closest, [_city, _spawningRadius/3] call CBA_fnc_randPos, 1, selectRandom btc_type_motorized_armed], btc_fnc_mil_send] call btc_fnc_delay_exec;
};
};
};
-if !(btc_cache_pos isEqualTo []) then {
- if (_city inArea [btc_cache_pos, _radius_x + _radius_y, _radius_x + _radius_y, 0, false]) then {
- if (count (btc_cache_pos nearEntities ["Man", 30]) > 3) exitWith {};
+if (!(btc_cache_pos isEqualTo []) && {!(btc_cache_obj getVariable ["btc_cache_unitsSpawned", false])}) then {
+ if (_city inArea [btc_cache_pos, _radius, _radius, 0, false]) then {
+ btc_cache_obj setVariable ["btc_cache_unitsSpawned", true];
+
[btc_cache_pos, 8, 3, _wp_house] call btc_fnc_mil_create_group;
[btc_cache_pos, 60, 4, _wp_sentry] call btc_fnc_mil_create_group;
if (btc_p_veh_armed_spawn_more) then {
private _closest = [_city, btc_city_all select {!(_x getVariable ["active", false])}, false] call btc_fnc_find_closecity;
for "_i" from 1 to (1 + round random 3) do {
- [{_this call btc_fnc_mil_send}, [_closest, getPos _city, 1, selectRandom btc_type_motorized_armed], _i * 2] call CBA_fnc_waitAndExecute;
+ [[_closest, [_city, _spawningRadius/3] call CBA_fnc_randPos, 1, selectRandom btc_type_motorized_armed], btc_fnc_mil_send] call btc_fnc_delay_exec;
};
};
};
@@ -178,18 +223,18 @@ if (_has_ho && {!(_city getVariable ["ho_units_spawned", false])}) then {
case (_random <= 0.3) : {};
case (_random > 0.3 && _random <= 0.75) : {
private _statics = btc_type_gl + btc_type_mg;
- [[(_pos select 0) + 7, (_pos select 1) + 7, 0], _statics, 45] call btc_fnc_mil_create_static;
+ [[(_pos select 0) + 7, (_pos select 1) + 7, 0], _statics, 45, [], _city] call btc_fnc_mil_create_static;
};
case (_random > 0.75) : {
private _statics = btc_type_gl + btc_type_mg;
- [[(_pos select 0) + 7, (_pos select 1) + 7, 0], _statics, 45] call btc_fnc_mil_create_static;
- [[(_pos select 0) - 7, (_pos select 1) - 7, 0], _statics, 225] call btc_fnc_mil_create_static;
+ [[(_pos select 0) + 7, (_pos select 1) + 7, 0], _statics, 45, [], _city] call btc_fnc_mil_create_static;
+ [[(_pos select 0) - 7, (_pos select 1) - 7, 0], _statics, 225, [], _city] call btc_fnc_mil_create_static;
};
};
if (btc_p_veh_armed_ho) then {
- _closest = [_city, btc_city_all select {!(_x getVariable ["active", false])}, false] call btc_fnc_find_closecity;
+ private _closest = [_city, btc_city_all select {!(_x getVariable ["active", false])}, false] call btc_fnc_find_closecity;
for "_i" from 1 to (2 + round random 3) do {
- [{_this call btc_fnc_mil_send}, [_closest, _pos, 1, selectRandom btc_type_motorized_armed], _i * 2] call CBA_fnc_waitAndExecute;
+ [[_closest, [_pos, _spawningRadius/3] call CBA_fnc_randPos, 1, selectRandom btc_type_motorized_armed], btc_fnc_mil_send] call btc_fnc_delay_exec;
};
};
};
@@ -199,50 +244,86 @@ if !(_city getVariable ["has_suicider", false]) then {
if ((time - btc_ied_suic_spawned) > btc_ied_suic_time && {random 1000 > btc_global_reputation}) then {
btc_ied_suic_spawned = time;
_city setVariable ["has_suicider", true];
- private _suicider = if (selectRandom [false, false, btc_p_ied_drone]) then {
- [_city, _radius] call btc_fnc_ied_drone_create;
+ if (selectRandom [false, false, btc_p_ied_drone]) then {
+ [[_city, _spawningRadius], btc_fnc_ied_drone_create] call btc_fnc_delay_exec;
} else {
- [_city, _radius] call btc_fnc_ied_suicider_create;
+ [[_city, _spawningRadius], btc_fnc_ied_suicider_create] call btc_fnc_delay_exec;
};
- [_suicider, "killed", "btc_fnc_ied_suiciderKilled", [_id]] call btc_fnc_eh_persistOnLocalityChange;
};
};
-_city setVariable ["activating", false];
+if (_city getVariable ["data_tags", []] isEqualTo []) then {
+ private _tag_number = (switch _type do {
+ case "Hill" : {random 1};
+ case "BorderCrossing" : {random 1};
+ case "NameLocal" : {random 2.5};
+ case "StrongpointArea" : {random 3};
+ case "NameVillage" : {random 3.5};
+ case "NameCity" : {random 5};
+ case "NameCityCapital" : {random 6};
+ case "Airport" : {random 6};
+ case "NameMarine" : {0};
+ default {0};
+ });
+
+ if (_has_en) then {
+ _tag_number = _tag_number * 1.5;
+ };
+ if (_has_ho) then {
+ _tag_number = _tag_number * 2;
+ };
+
+ if (_tag_number > 0) then {
+ [[_city, _spawningRadius, _tag_number], btc_fnc_tag_initArea] call btc_fnc_delay_exec;
+ };
+};
+[_city, btc_fnc_tag_create] call btc_fnc_delay_exec;
+
+[{
+ params ["_has_en", "_city", "_radius", "_id"];
+
+ if (_has_en) then {
+ private _trigger = createTrigger ["EmptyDetector", getPos _city];
+ _trigger setTriggerArea [_radius, _radius, 0, false];
+ _trigger setTriggerActivation [str btc_enemy_side, "NOT PRESENT", false];
+ _trigger setTriggerStatements ["this", format ["[%1] call btc_fnc_city_set_clear", _id], ""];
+ _city setVariable ["trigger", _trigger];
+ };
+
+ _city setVariable ["activating", false];
+}, [_has_en, _city, _radius, _id], btc_delay_createUnit + _delay] call CBA_fnc_waitAndExecute;
//Patrol
btc_patrol_active = btc_patrol_active - [grpNull];
-private _number_patrol_active = count btc_patrol_active;
-if (_number_patrol_active < _p_patrol_max) then {
- private _n = 0;
- private _r = 0;
- if (_has_en) then {_n = round (random 3 + (3/2));} else {_n = round random 2;};
- private _av = _p_patrol_max - _number_patrol_active;
- private _d = _n - _av;
- _r = if (_d > 0) then {_n - _d;} else {_n;};
- for "_i" from 1 to _r do {
- [1 + round random 1, _city, _radius_x + _radius_y + btc_patrol_area] spawn btc_fnc_mil_create_patrol;
+private _numberOfPatrol = count btc_patrol_active;
+if (_numberOfPatrol < _p_patrol_max) then {
+ private _offset = 0;
+ private _max = 2;
+ if (_has_en) then {
+ _max = 3;
+ _offset = 3/2;
};
-
- if (btc_debug_log) then {
- [format ["(patrol) _n = %1 _av %2 _d %3 _r %4", _n, _av, _d, _r], __FILE__, [false]] call btc_fnc_debug_message;
+ private _r = (_offset + random _max) min (_p_patrol_max - _numberOfPatrol);
+ for "_i" from 1 to round _r do {
+ private _group = createGroup btc_enemy_side;
+ btc_patrol_active pushBack _group;
+ _group setVariable ["no_cache", true];
+ [[_group, 1 + round random 1, _city, _radius + btc_patrol_area], btc_fnc_mil_create_patrol] call btc_fnc_delay_exec;
};
};
//Traffic
btc_civ_veh_active = btc_civ_veh_active - [grpNull];
-private _number_civ_veh_active = count btc_civ_veh_active;
-if (_number_civ_veh_active < _p_civ_max_veh) then {
- private _n = 0;
- private _r = 0;
- _n = round (random 3 + (3/2));
- private _av = _p_civ_max_veh - _number_civ_veh_active;
- private _d = _n - _av;
- _r = if (_d > 0) then {_n - _d;} else {_n;};
- for "_i" from 1 to _r do {
- [_city, _radius_x+_radius_y + btc_patrol_area] call btc_fnc_civ_create_patrol;
+private _numberOfCivVeh = count btc_civ_veh_active;
+if (_numberOfCivVeh < _p_civ_max_veh) then {
+ private _r = (3/2 + random 3) min (_p_civ_max_veh - _numberOfCivVeh);
+ for "_i" from 1 to round _r do {
+ private _group = createGroup civilian;
+ btc_civ_veh_active pushBack _group;
+ _group setVariable ["no_cache", true];
+ [[_group, _city, _radius + btc_patrol_area], btc_fnc_civ_create_patrol] call btc_fnc_delay_exec;
};
+};
- if (btc_debug_log) then {
- [format ["(traffic) _n = %1 _av %2 _d %3 _r %4", _n, _av, _d, _r], __FILE__, [false]] call btc_fnc_debug_message;
- };
+if (btc_debug) then {
+ [format ["%1 - %2ms", _id, (serverTime - (_city getVariable ["serverTime", serverTime])) * 1000] , __FILE__, [btc_debug, false, true]] call btc_fnc_debug_message;
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/cleanUp.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/cleanUp.sqf
index 92ec9843c..b67cfbf85 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/cleanUp.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/cleanUp.sqf
@@ -39,13 +39,15 @@ _toRemove append (allDead select {
_toRemove call CBA_fnc_deleteEntity;
-(allGroups select {
- units _x isEqualTo [] &&
- !(
- _x in btc_patrol_active ||
- _x in btc_civ_veh_active
- )
-}) call CBA_fnc_deleteEntity;
+if (btc_delay_createUnit < 0.001) then { // Don't remove group during units creation.
+ (allGroups select {
+ units _x isEqualTo [] &&
+ !(
+ _x in btc_patrol_active ||
+ _x in btc_civ_veh_active
+ )
+ }) call CBA_fnc_deleteEntity;
+};
while {objNull in btc_chem_contaminated} do {
btc_chem_contaminated deleteAt (
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/create.sqf
index 557a4c416..9d4972ab3 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/create.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/create.sqf
@@ -9,8 +9,7 @@ Parameters:
_position - The position where the city will be created. [Array]
_type - Type of city. [String]
_name - The name of the city. [String]
- _radius_x - The city radius along x. [Number]
- _radius_y - The city radius along y. [Number]
+ _radius - The city radius. [Number]
_has_en - If the city is occupied by enemies. [Boolean]
_id - ID of the city in the cfgworlds. [Number]
@@ -19,7 +18,7 @@ Returns:
Examples:
(begin example)
- _city = [[0, 0, 0], "NameCityCapital", "BTC Capital", 500, 500, true] call btc_fnc_city_create;
+ _city = [[0, 0, 0], "NameCityCapital", "BTC Capital", 500, true] call btc_fnc_city_create;
(end)
Author:
@@ -31,8 +30,7 @@ params [
["_position", [0, 0, 0], [[]]],
["_type", "", [""]],
["_name", "", [""]],
- ["_radius_x", 0, [0]],
- ["_radius_y", 0, [0]],
+ ["_radius", 0, [0]],
["_has_en", false, [false]],
["_id", count btc_city_all, [0]]
];
@@ -43,19 +41,19 @@ _city setVariable ["activating", false];
_city setVariable ["initialized", false];
_city setVariable ["id", _id];
_city setVariable ["name", _name];
-_city setVariable ["RadiusX", _radius_x];
-_city setVariable ["RadiusY", _radius_y];
+_city setVariable ["radius", _radius];
_city setVariable ["active", false];
_city setVariable ["type", _type];
_city setVariable ["spawn_more", false];
_city setVariable ["data_units", []];
+_city setVariable ["data_animals", []];
_city setVariable ["occupied", _has_en];
if (btc_p_sea) then {
- _city setVariable ["hasbeach", ((selectBestPlaces [_position, 0.8 * (_radius_x + _radius_y), "sea", 10, 1]) select 0 select 1) isEqualTo 1];
+ _city setVariable ["hasbeach", ((selectBestPlaces [_position, 0.8 * _radius, "sea", 10, 1]) select 0 select 1) isEqualTo 1];
};
btc_city_all set [_id, _city];
-[_position, _radius_x, _radius_y, _city, _has_en, _name, _type, _id] call btc_fnc_city_trigger_player_side;
+[_position, _radius, _city, _has_en, _name, _type, _id] call btc_fnc_city_trigger_player_side;
_city
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/de_activate.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/de_activate.sqf
index 3abf527ba..ce0f2b15a 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/de_activate.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/de_activate.sqf
@@ -35,15 +35,14 @@ if !(_city getVariable ["active", false]) exitWith {};
}, {
params ["_city", "_id"];
+ if !(_city getVariable ["active", false]) exitWith {};
+
if (btc_debug) then {
- ("DE-Activate " + str _id) call CBA_fnc_notify;
+ [str _id, __FILE__, [btc_debug, btc_debug_log, true]] call btc_fnc_debug_message;
};
//Save all and delete
- private _radius_x = _city getVariable ["RadiusX", 0];
- private _radius_y = _city getVariable ["RadiusY", 0];
- private _radius = _radius_x + _radius_y;
-
+ private _radius = _city getVariable ["radius", 0];
private _has_en = _city getVariable ["occupied", false];
if (_has_en) then {
@@ -54,18 +53,64 @@ if !(_city getVariable ["active", false]) exitWith {};
private _pos_city = getPosWorld _city;
private _data_units = [];
+ private _has_suicider = false;
{
- if ((leader _x) inArea [_pos_city, _radius, _radius, 0, false] && {side _x != btc_player_side} && {!(_x getVariable ["no_cache", false])}) then {
+ if (
+ (leader _x) inArea [_pos_city, _radius, _radius, 0, false] &&
+ {side _x != btc_player_side} &&
+ {!(_x getVariable ["no_cache", false])} &&
+ {_x getVariable ["btc_city", _city] in [_city, objNull]}
+ ) then {
private _data_group = _x call btc_fnc_data_get_group;
_data_units pushBack _data_group;
- if (btc_debug_log) then {
- [format ["data units = %1", _data_units], __FILE__, [false]] call btc_fnc_debug_message;
- };
+ if ((_data_group select 0) in [5, 7]) then {_has_suicider = true;};
};
} forEach allGroups;
+ private _data_animals = [];
+ {
+ private _agent = agent _x;
+ if (
+ _agent inArea [_pos_city, _radius, _radius, 0, false] &&
+ {alive _agent} &&
+ {!(_x getVariable ["no_cache", false])} &&
+ {_x getVariable ["btc_city", _city] in [_city, objNull]}
+ ) then {
+ _data_animals pushBack [
+ typeOf _agent,
+ getPosATL _agent
+ ];
+ _agent call CBA_fnc_deleteEntity;
+ };
+ } forEach agents;
+
+ private _data_tags = [];
+ {
+ if (_x getVariable ["btc_city", _city] isEqualTo _city) then {
+ private _pos = getPos _x;
+ _pos set [2, 0];
+ _data_tags pushBack [
+ _pos,
+ [vectorDir _x, vectorUp _x],
+ _x getVariable "btc_texture",
+ typeOf _x
+ ];
+ _x call CBA_fnc_deleteEntity;
+ };
+ } forEach (btc_tags_server inAreaArray [_pos_city, _radius, _radius]);
+ btc_tags_server = btc_tags_server - [objNull];
+
+ if (btc_debug_log) then {
+ [format ["data units = %1", _data_units], __FILE__, [false]] call btc_fnc_debug_message;
+ [format ["data animals = %1", _data_animals], __FILE__, [false]] call btc_fnc_debug_message;
+ [format ["data tags = %1", _data_tags], __FILE__, [false]] call btc_fnc_debug_message;
+ };
+
+ _city setVariable ["has_suicider", _has_suicider];
_city setVariable ["data_units", _data_units];
+ _city setVariable ["data_animals", _data_animals];
+ _city setVariable ["data_tags", _data_tags];
_city setVariable ["active", false];
if (!btc_hideout_cap_checking) then {
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/init.sqf
index 9ff0e8e80..ba312642b 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/init.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/init.sqf
@@ -26,7 +26,7 @@ params [
private _locations = configfile >> "cfgworlds" >> worldname >> "names";
-private _cities = ["NameVillage", "NameCity", "NameCityCapital", "NameLocal", "Hill", "Airport"];
+private _cities = ["NameVillage", "NameCity", "NameCityCapital", "NameLocal", "Hill", "Airport", "StrongpointArea", "BorderCrossing", "VegetationFir"];
if (btc_p_sea) then {_cities pushBack "NameMarine";};
btc_city_all = [];
@@ -56,8 +56,8 @@ for "_id" from 0 to (count _locations - 1) do {
};
};
private _name = getText(_current >> "name");
- private _radius_x = getNumber(_current >> "RadiusA");
- private _radius_y = getNumber(_current >> "RadiusB");
+ private _radius = getNumber(_current >> "RadiusA") + getNumber(_current >> "RadiusB");
+ _radius = (_radius max 160) min 800;
if (btc_city_blacklist find _name >= 0) exitWith {};
@@ -66,17 +66,12 @@ for "_id" from 0 to (count _locations - 1) do {
if ((getMarkerPos "YOUR_MARKER_AREA") inArea [_position, 500, 500, 0, false]) exitWith {};
*/
- if (_radius_x < 80 || _radius_y < 80) then {
- _radius_x = 80;
- _radius_y = 80;
- };
-
- [_position, _type, _name, _radius_x, _radius_y, random 1 > _is_free_probability, _id] call btc_fnc_city_create;
+ [_position, _type, _name, _radius, random 1 > _is_free_probability, _id] call btc_fnc_city_create;
};
};
if !(isNil "btc_custom_loc") then {
- {_x call btc_fnc_city_create} forEach btc_custom_loc;
+ {_x call btc_fnc_city_create;} forEach btc_custom_loc;
};
btc_city_all = btc_city_all apply {if (isNil "_x") then {objNull} else {_x}};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/trigger_player_side.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/trigger_player_side.sqf
index 915b2d59f..ec1708524 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/trigger_player_side.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/trigger_player_side.sqf
@@ -7,8 +7,7 @@ Description:
Parameters:
_position - Position where the trigger is created. [Array]
- _radius_x - Radius of the location along x. [Number]
- _radius_y - Radius of the location along y. [Number]
+ _radius - Radius of the location. [Number]
_city - City object where the trigger will be stored. [Object]
_has_en - City is occupied. [Boolean]
_name - Name of the city. [String]
@@ -19,7 +18,7 @@ Returns:
Examples:
(begin example)
- [_position, _radius_x, _radius_y, _city, _has_en, _name, _type, _id] call btc_fnc_city_trigger_player_side;
+ [_position, _radius, _city, _has_en, _name, _type, _id] call btc_fnc_city_trigger_player_side;
(end)
Author:
@@ -29,8 +28,7 @@ Author:
params [
["_position", [0, 0, 0], [[]]],
- ["_radius_x", 0, [0]],
- ["_radius_y", 0, [0]],
+ ["_radius", 0, [0]],
["_city", objNull, [objNull]],
["_has_en", false, [false]],
["_name", "", [""]],
@@ -39,16 +37,16 @@ params [
];
private _trigger = createTrigger ["EmptyDetector", _position];
-_trigger setTriggerArea [_radius_x + _radius_y + btc_city_radius, _radius_x + _radius_y + btc_city_radius, 0, false];
+_trigger setTriggerArea [_radius + btc_city_radius, _radius + btc_city_radius, 0, false];
_trigger setTriggerActivation ["ANYPLAYER", "PRESENT", true];
-_trigger setTriggerStatements [btc_p_trigger, format ["[%1] spawn btc_fnc_city_activate", _id], format ["[%1] call btc_fnc_city_de_activate", _id]];
+_trigger setTriggerStatements [btc_p_trigger, format ["[%1] call btc_fnc_city_activate", _id], format ["[%1] call btc_fnc_city_de_activate", _id]];
_city setVariable ["trigger_player_side", _trigger];
if (btc_debug) then {
private _marker = createMarker [format ["loc_%1", _id], _position];
_marker setMarkerShape "ELLIPSE";
_marker setMarkerBrush "SolidBorder";
- _marker setMarkerSize [_radius_x + _radius_y + btc_city_radius, _radius_x + _radius_y + btc_city_radius];
+ _marker setMarkerSize [_radius + btc_city_radius, _radius + btc_city_radius];
_marker setMarkerAlpha 0.3;
if (_has_en) then {
_marker setMarkerColor "colorRed";
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/CuratorCivPlaced_s.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/CuratorCivPlaced_s.sqf
deleted file mode 100644
index aca38fe3d..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/CuratorCivPlaced_s.sqf
+++ /dev/null
@@ -1,31 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_civ_CuratorCivPlaced_s
-
-Description:
- Apply btc_fnc_civ_unit_create to a unit.
-
-Parameters:
- _unit - Unit where the btc_fnc_civ_unit_create will be apply. [Object]
-
-Returns:
-
-Examples:
- (begin example)
- [_unit] call btc_fnc_civ_CuratorCivPlaced_s;
- (end)
-
-Author:
- Vdauphin
-
----------------------------------------------------------------------------- */
-
-params [
- ["_unit", objNull, [objNull]]
-];
-
-[group _unit] call btc_fnc_civ_unit_create;
-
-if (btc_debug_log) then {
- [format [": %1", _unit], __FILE__, [false]] call btc_fnc_debug_message;
-};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/addWP.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/addWP.sqf
index 3c6c2c6a6..89b432da3 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/addWP.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/addWP.sqf
@@ -28,6 +28,7 @@ params [
["_radius", 50, [0]]
];
+[_group] call CBA_fnc_clearWaypoints;
[_group, _pos, -1, "MOVE", "SAFE", "NO CHANGE", "LIMITED"] call CBA_fnc_addWaypoint;
private _houses = [_pos, _radius] call btc_fnc_getHouses;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_grenade.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_grenade.sqf
index 153b2161f..0ec743fab 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_grenade.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_grenade.sqf
@@ -31,11 +31,14 @@ _unit addEventHandler ["Fired", {
if (_weapon isEqualTo "Throw") then {
_unit removeEventHandler ["Fired", _thisEventHandler];
- [_unit] joinSilent createGroup [civilian, true];
+
+ private _group = createGroup [civilian, true];
+ _group setVariable ["btc_city", group _unit getVariable ["btc_city", objNull]];
+ [_unit] joinSilent _group;
+
[{
params ["_unit"];
- _unit call btc_fnc_rep_add_eh;
[group _unit] call btc_fnc_civ_addWP;
}, [_unit], 20] call CBA_fnc_waitAndExecute;
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_weapons.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_weapons.sqf
index 3d2200274..8dfbc84d9 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_weapons.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_weapons.sqf
@@ -25,11 +25,11 @@ params [
];
private _playableUnits = playableUnits inAreaArray [getPosWorld _unit, 50, 50];
-_hgun = _playableUnits findIf {[_x, _unit] call btc_fnc_check_los} != -1;
+private _hgun = _playableUnits findIf {[_x, _unit] call btc_fnc_check_los} != -1;
-private _weapon = [btc_w_civs select 1, btc_w_civs select 3] select _hgun;
-private _magazine = [btc_w_civs select 2, btc_w_civs select 4] select _hgun;
+private _weapon = selectRandom ([btc_w_civs select 0, btc_w_civs select 1] select _hgun);
+private _magazine = (getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines")) select 0;
-(uniformContainer _unit) addMagazineCargo [_magazine, 10];
+(uniformContainer _unit) addMagazineCargo [_magazine, 5];
_unit addWeapon _weapon;
_unit selectWeapon _weapon;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/create_patrol.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/create_patrol.sqf
index 2cfc07457..545a856b6 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/create_patrol.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/create_patrol.sqf
@@ -6,6 +6,7 @@ Description:
Create a civilian patrol around a city in a defined area.
Parameters:
+ _group - Group of the traffic. [Group]
_active_city - City where the patrol will be done around. [Object]
_area - Area to search a start and an end city for the patrol [Number]
@@ -14,7 +15,7 @@ Returns:
Examples:
(begin example)
- _isCreated = [_active_city] call btc_fnc_civ_create_patrol;
+ _isCreated = [createGroup civilian, _active_city] call btc_fnc_civ_create_patrol;
(end)
Author:
@@ -23,6 +24,7 @@ Author:
---------------------------------------------------------------------------- */
params [
+ ["_group", grpNull, [grpNull]],
["_active_city", objNull, [objNull]],
["_area", btc_patrol_area, [0]],
["_p_chem", btc_p_chem, [false]]
@@ -33,7 +35,10 @@ if (isNil "btc_civilian_id") then {btc_civilian_id = -1;};
//Find a city
private _cities = btc_city_all inAreaArray [getPosWorld _active_city, _area, _area];
private _usefuls = _cities select {!(_x getVariable ["active", false])};
-if (_usefuls isEqualTo []) exitWith {false};
+if (_usefuls isEqualTo []) exitWith {
+ _group call CBA_fnc_deleteEntity;
+ false
+};
private _start_city = selectRandom _usefuls;
private _pos = getPos _start_city;
@@ -57,32 +62,14 @@ if (_roads isEqualTo []) then {
_veh_type = selectRandom btc_civ_type_veh;
};
-private _veh = createVehicle [_veh_type, _safe_pos, [], 0, "FLY"];
-[_veh, "", []] call BIS_fnc_initvehicle;
-
-private _group = createGroup [civilian, true];
-btc_civ_veh_active pushBack _group;
-_group setVariable ["no_cache", true];
_group setVariable ["btc_patrol_id", btc_civilian_id, btc_debug];
btc_civilian_id = btc_civilian_id - 1;
-(selectRandom btc_civ_type_units) createUnit [_safe_pos, _group, "this moveinDriver _veh; this assignAsDriver _veh;"];
-_veh setVariable ["btc_crews", _group];
-
-[_group] call btc_fnc_civ_unit_create;
-
-[_veh, "HandleDamage", "btc_fnc_patrol_disabled"] call btc_fnc_eh_persistOnLocalityChange;
-[_veh, "Fuel", "btc_fnc_patrol_eh"] call btc_fnc_eh_persistOnLocalityChange;
-[_veh, "GetOut", "btc_fnc_patrol_eh"] call btc_fnc_eh_persistOnLocalityChange;
-[_veh, "HandleDamage", "btc_fnc_rep_hd"] call btc_fnc_eh_persistOnLocalityChange;
-if (_p_chem) then {
- _veh addEventHandler ["GetIn", {
- [_this select 0, _this select 2] call btc_fnc_chem_propagate;
- _this
- }];
-};
-[_group, [_start_city, _active_city], _area, _pos_isWater] call btc_fnc_patrol_init;
+private _delay = [_group, _veh_type, [selectRandom btc_civ_type_units], _safe_pos] call btc_fnc_delay_createVehicle;
-[[_group]] call btc_fnc_set_groupsOwner;
+[{
+ _this call btc_fnc_patrol_init;
+ [[_this select 0]] call btc_fnc_set_groupsOwner;
+}, [_group, [_start_city, _active_city], _area, _pos_isWater], btc_delay_createUnit + _delay] call CBA_fnc_waitAndExecute;
true
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/evacuate.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/evacuate.sqf
index 71f613965..bc7b7fe6b 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/evacuate.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/evacuate.sqf
@@ -43,10 +43,7 @@ if (_position_evac isEqualTo []) then {
};
{
- private _group = group _x;
- [_group] call CBA_fnc_clearWaypoints;
-
- [_group, _position_evac, 20] call btc_fnc_civ_addWP;
+ [group _x, _position_evac, 20] call btc_fnc_civ_addWP;
} forEach _civilians;
_civilians
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_grenade.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_grenade.sqf
index 28093d822..ab9cc5382 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_grenade.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_grenade.sqf
@@ -32,7 +32,10 @@ if (_units isEqualTo []) then {
_units = _pos nearEntities [btc_civ_type_units, _range];
};
-_units = _units select {side _x isEqualTo civilian};
+_units = _units select {
+ side group _x isEqualTo civilian &&
+ {!(lifeState _x in ["INCAPACITATED", "DEAD"])}
+};
if (_units isEqualTo []) exitWith {};
@@ -41,14 +44,13 @@ if (_units isEqualTo []) exitWith {};
[format ["%1 - %2", _x, side _x], __FILE__, [false]] call btc_fnc_debug_message;
};
- _x call btc_fnc_rep_remove_eh;
-
[_x] call btc_fnc_civ_add_grenade;
- [_x] joinSilent createGroup [btc_enemy_side, true];
-
- (group _x) setVariable ["getWeapons", true];
+ private _group = createGroup [btc_enemy_side, true];
+ _group setVariable ["btc_city", group _x getVariable ["btc_city", objNull]];
+ [_x] joinSilent _group;
- (group _x) setBehaviour "AWARE";
- [group _x, _pos, -1, "GUARD", "UNCHANGED", "RED", nil, nil, nil, nil, 10] call CBA_fnc_addWaypoint;
+ [_group] call CBA_fnc_clearWaypoints;
+ _group setVariable ["getWeapons", true];
+ [_group, _pos, -1, "GUARD", "AWARE", "RED", nil, nil, nil, nil, 10] call CBA_fnc_addWaypoint;
} forEach [selectRandom _units];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_weapons.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_weapons.sqf
index b1fdea02c..35c5fef22 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_weapons.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_weapons.sqf
@@ -30,7 +30,10 @@ params [
if (_units isEqualTo []) then {
_units = _pos nearEntities [btc_civ_type_units, _range];
- _units = _units select {side _x isEqualTo civilian};
+ _units = _units select {
+ side group _x isEqualTo civilian &&
+ {!(lifeState _x in ["INCAPACITATED", "DEAD"])}
+ };
};
{
@@ -38,14 +41,14 @@ if (_units isEqualTo []) then {
[format ["%1 - %2", _x, side _x], __FILE__, [false]] call btc_fnc_debug_message;
};
- _x call btc_fnc_rep_remove_eh;
[_x, "", 2] call ace_common_fnc_doAnimation;
[_x] call btc_fnc_civ_add_weapons;
- [_x] joinSilent createGroup [btc_enemy_side, true];
-
- (group _x) setVariable ["getWeapons", true];
-
- (group _x) setBehaviour "AWARE";
- [group _x, getPos _x, -1, "GUARD", "UNCHANGED", "RED", nil, nil, nil, nil, 10] call CBA_fnc_addWaypoint;
+ private _group = createGroup [btc_enemy_side, true];
+ _group setVariable ["btc_city", group _x getVariable ["btc_city", objNull]];
+ [_x] joinSilent _group;
+
+ [_group] call CBA_fnc_clearWaypoints;
+ _group setVariable ["getWeapons", true];
+ [_group, getPos _x, -1, "GUARD", "AWARE", "RED", nil, nil, nil, nil, 10] call CBA_fnc_addWaypoint;
} forEach _units;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/populate.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/populate.sqf
index 0ae401342..a602228a9 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/populate.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/populate.sqf
@@ -6,9 +6,9 @@ Description:
Populate a city in an area with a defined number of civilians.
Parameters:
- _city - City to populate. [Object]
- _area - Area to populate around a city. [Number]
+ _houses - Houses to populate around a city. [Number]
_n - Number of civilians to generate. [Number]
+ _city - City where the civilian is created. [Object]
Returns:
@@ -23,37 +23,21 @@ Author:
---------------------------------------------------------------------------- */
params [
- ["_city", objNull, [objNull]],
- ["_area", 0, [0]],
- ["_n", 0, [0]]
+ ["_houses", [], [[]]],
+ ["_n", 0, [0]],
+ ["_city", objNull, [objNull]]
];
-private _pos = position _city;
-private _houses = [];
-
-for [{_i = 25}, {_i < _area}, {_i = _i + 50}] do {
- private _hs = [[(_pos select 0) + _i, (_pos select 1) + _i, 0], 50] call btc_fnc_getHouses;
- _houses append _hs;
- _hs = [[(_pos select 0) + _i, (_pos select 1) - _i, 0], 50] call btc_fnc_getHouses;
- _houses append _hs;
- _hs = [[(_pos select 0) - _i, (_pos select 1) - _i, 0], 50] call btc_fnc_getHouses;
- _houses append _hs;
- _hs = [[(_pos select 0) - _i, (_pos select 1) + _i, 0], 50] call btc_fnc_getHouses;
- _houses append _hs;
-};
-
if (_houses isEqualTo []) exitWith {};
for "_i" from 1 to _n do {
if (_houses isEqualTo []) exitWith {};
- private _house = selectRandom _houses;
- private _unit_type = selectRandom btc_civ_type_units;
+ private _pos = (_houses deleteAt 0) buildingPos 0;
private _group = createGroup civilian;
- _group createUnit [_unit_type, _house buildingPos 0, [], 0, "NONE"];
- _group setVariable ["btc_data_inhouse", [_house buildingPos 0]];
- [_group] call btc_fnc_civ_addWP;
- [_group] call btc_fnc_civ_unit_create;
- _houses = _houses - [_house];
+ _group setVariable ["btc_city", _city];
+ _group setVariable ["btc_data_inhouse", [_pos]];
+ [_group, _pos] call btc_fnc_civ_addWP;
+ [_group, selectRandom btc_civ_type_units, _pos] call btc_fnc_delay_createUnit;
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/unit_create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/unit_create.sqf
deleted file mode 100644
index 30d294c1c..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/unit_create.sqf
+++ /dev/null
@@ -1,31 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_civ_unit_create
-
-Description:
- Initialize civilian by adding eventhandlers.
-
-Parameters:
- _group - group to initialize. [Object]
-
-Returns:
-
-Examples:
- (begin example)
- [_group] call btc_fnc_civ_unit_create;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_group", grpNull, [grpNull]]
-];
-
-{
- _x setVariable ["btc_init", true];
-
- _x call btc_fnc_rep_add_eh;
-} forEach (units _group select {!(_x getVariable ["btc_init", false])});
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_composition.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_composition.sqf
index 048210241..945a14ae2 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_composition.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_composition.sqf
@@ -7,7 +7,7 @@ Description:
Parameters:
_pos - Position where the composition will be created. [Array]
- _setdir - Set the direction of composition spawn. [Number]
+ _setDir - Set the direction of composition spawn. [Number]
_array - Array of each objects in the composition. [Array]
Returns:
@@ -25,7 +25,7 @@ Author:
params [
["_pos", [0, 0, 0], [[]]],
- ["_setdir", 0, [0]],
+ ["_setDir", 0, [0]],
["_array", [], [[]]]
];
_pos params ["_pos_x", "_pos_y", ["_pos_z", 0]];
@@ -35,11 +35,11 @@ _array apply {
_rel_pos params ["_rel_x", "_rel_y", ["_rel_z", 0]];
//// Determine position function of setdir \\\\
- private _final = [_pos_x + _rel_x*cos(_setdir) - _rel_y*sin(- _setdir), _pos_y + _rel_y*cos(_setdir) + _rel_x*sin(- _setdir)];
+ private _final = [_pos_x + _rel_x*cos(_setDir) - _rel_y*sin(- _setDir), _pos_y + _rel_y*cos(_setDir) + _rel_x*sin(- _setDir)];
_final pushBack (_pos_z + _rel_z + getTerrainHeightASL _final);
private _obj = createVehicle [_type, ASLToATL _final, [], 0, "CAN_COLLIDE"];
//// Determine direction function of setdir \\\\
- _obj setDir (_dir + _setdir);
+ _obj setDir (_dir + _setDir);
_obj setVectorUp surfaceNormal position _obj;
_obj setPosASL _final;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/final_phase.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/final_phase.sqf
index fafc9fcc6..0c37304f4 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/final_phase.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/final_phase.sqf
@@ -30,13 +30,12 @@ btc_city_remaining = [];
if (_x getVariable ["marker", ""] != "") then {
deleteMarker (_x getVariable ["marker", ""]);
};
- private _radius_x = _x getVariable ["RadiusX", 500];
- private _radius_y = _x getVariable ["RadiusY", 500];
+ private _radius = _x getVariable ["radius", 500];
private _marker = createMarker [format ["city_%1", position _x], position _x];
_marker setMarkerShape "ELLIPSE";
_marker setMarkerBrush "SolidBorder";
- _marker setMarkerSize [_radius_x + _radius_y, _radius_x + _radius_y];
+ _marker setMarkerSize [_radius, _radius];
_marker setMarkerAlpha 0.3;
if (_x getVariable ["occupied", false]) then {
_marker setMarkerColor "colorRed";
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP.sqf
index 5c95282c8..27e066354 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP.sqf
@@ -26,8 +26,8 @@ params [
["_house", objNull, [objNull]]
];
+[_group] call CBA_fnc_clearWaypoints;
private _allpositions = [_group, _house] call btc_fnc_house_addWP_loop;
private _wp = [_group, [_allpositions select 0, 0.2] call CBA_fnc_randPos, -1, "CYCLE", "UNCHANGED", "NO CHANGE", "UNCHANGED", "NO CHANGE", "", [15, 20, 30]] call CBA_fnc_addWaypoint;
_wp waypointAttachObject _house;
-_wp setWaypointHousePosition 0;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/roof.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/roof.sqf
new file mode 100644
index 000000000..092cfb068
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/roof.sqf
@@ -0,0 +1,57 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_roof
+
+Description:
+ Get roof.
+
+Parameters:
+ _house - House to find the roof. [Group]
+
+Returns:
+ _spawnPos - Roof position. [Array]
+ _surfaceNormal - Surface normal. [Array]
+
+Examples:
+ (begin example)
+ _result = [([position player, 30] call btc_fnc_getHouses) select 0] call btc_fnc_roof;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_house", objNull, [objNull]]
+];
+
+private _positions = _house buildingPos -1;
+{
+ reverse _x
+} forEach _positions;
+_positions sort false;
+private _higherPos = _positions select 0;
+reverse _higherPos;
+private _ASL = AGLToASL _higherPos;
+
+private _surface = lineIntersectsSurfaces [_ASL vectorAdd [0, 0, 10], _ASL];
+
+private _spawnPos = _ASL;
+private _surfaceNormal = [0, 0, 1];
+if (_surface isEqualTo []) then { // Try to find again the roof with house position
+ _surface = lineIntersectsSurfaces [_ASL vectorAdd [0, 0, 10], getPosASL _house];
+};
+
+if !(_surface isEqualTo []) then {
+ private _intersect = _surface select 0;
+ if (
+ (_intersect select 2) isEqualTo _house &&
+ {(_spawnPos select 2) + 0.5 < (_intersect select 0 select 2)}
+ ) then {
+ _spawnPos = (_intersect select 0) vectorAdd [0, 0, 0.2];
+ _surfaceNormal = _intersect select 1;
+ };
+};
+
+[_spawnPos, _surfaceNormal]
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/showSubtitle.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/showSubtitle.sqf
index c671d0c30..4a90ebc78 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/showSubtitle.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/showSubtitle.sqf
@@ -42,7 +42,7 @@ disableSerialization;
params [
["_from", "", [""]],
["_text", "", [""]],
- ["_lineBreak", false , [false]],
+ ["_lineBreak", false, [false]],
["_colorFrom", "#d4cd00", [""]], //default color: gold
["_colorText", "#FFFFFF", [""]], //default color: white
["_fontText", "RobotoCondensedBold", [""]]
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/show_hint.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/show_hint.sqf
index 19b0424c9..525633371 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/show_hint.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/show_hint.sqf
@@ -25,7 +25,7 @@ if (isDedicated) exitWith {};
params [
["_type", 0, [0]],
- ["_custom", 0, [0, ""]]
+ ["_custom", 0, [0, "", []]]
];
private _text = switch (_type) do {
@@ -94,6 +94,27 @@ private _text = switch (_type) do {
case 18 : {
localize "STR_BTC_HAM_O_FOB_DISMANTLE_H_PROC";
};
+ case 19 : {
+ [
+ localize "STR_BTC_HAM_O_COMMON_REBOOT", 1.5, [1, 0, 0]
+ ];
+ };
+ case 20 : {
+ _custom params ["_color", "_player"];
+ [
+ [[name _player], [" "]] select (isNull _player),
+ ["\A3\Data_F_Orange\Logos\arma3_orange_picture_ca.paa", 4, _color],
+ [" "]
+ ];
+ };
+ case 21 : {
+ _custom params ["_color", "_player"];
+ [
+ [[name _player], [" "]] select (isNull _player || !(side group _player isEqualTo btc_player_side)),
+ ["\a3\Ui_f\data\GUI\Cfg\Debriefing\endDefault_ca.paa", 4, _color],
+ [" "]
+ ];
+ };
};
_text call CBA_fnc_notify;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/strategicMapOpen.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/strategicMapOpen.sqf
deleted file mode 100644
index 8f3f45527..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/strategicMapOpen.sqf
+++ /dev/null
@@ -1,701 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_strategicMapOpen
-
-Description:
- Show strategic map with the possibility to navigate freely on the map.
-
-Parameters:
- 0: DISPLAY - parent display. When empty, mission display is used.
- 1: ARRAY - default view position in format [x,y,y] or [x,y]
- 2: ARRAY - list of missions in format:
- 0: ARRAY - mission position in format [x,y,y] or [x,y]
- 1: CODE - expression executed when user clicks on mission icon
- 2: STRING - mission name
- 3: STRING - short description
- 4: STRING - name of mission's player
- 5: STRING - path to overview image
- 6: NUMBER - size multiplier, 1 means default size
- 7: ARRAY - parameters for the -on click- code; referenced from the script as (_this select 9)
- 3: ARRAY - list of ORBAT groups in format:
- 0: ARRAY - group position in format [x,y,y] or [x,y]
- 1: CONFIG - preview CfgORBAT group
- 2: CONFIG - topmost displayed CfgORBAT group
- 3: ARRAY - list of allowed tags
- 4: NUMBER - maximum number of displayed tiers
- 4: ARRAY - list of markers revealed in strategic map (will be hidden when map is closed)
- 5: ARRAY - list of custom images in format:
- 0: STRING - texture path
- 1: ARRAY - color in format [R,G,B,A]
- 2: ARRAY - image position
- 3: NUMBER - image width (in metres)
- 4: NUMBER - image height (in metres)
- 5: NUMBER - image angle (in degrees)
- 6: STRING - text displayed next to the image
- 7: BOOL - true to display shadow
- 6: NUMBER - value in range <0-1> defining weather on strategic map (i.e. density of clouds)
- 7: BOOL - true for night version of strategic map (darker with blue tone)
- 8: NUMBER - default map scale coeficient (1 is automatic scale)
- 9: BOOL - true to enable simulation while the map is opened (default: false)
- 10: STRING - bottom bar action label text (default: "Select a mission")
- 11: BOOL - true to show icon label as a mission name (default: true)
- 12: STRING - path to mission icon texture (default: "\A3\Ui_f\data\Map\GroupIcons\badge_rotate_%1_gs.paa")
- %1 - animation frame from 0-6 (optional)
- %2 - index from 1-9 (optional)
-
-Returns:
- _display - RscDisplayStrategicMap [Display]
-
-Examples:
- (begin example)
- _result = [] call btc_fnc_strategicMapOpen;
- (end)
-
-Author:
- Karel Moricky
-
----------------------------------------------------------------------------- */
-
-private ["_parentDisplayDefault","_parentDisplay","_mapCenter","_missions","_ORBAT","_markers","_images","_overcast","_scale","_defaultScale","_simulationEnabled","_displayClass","_display","_playerIcon","_playerColor","_cloudTextures","_cloudsGrid","_cloudsMax","_cloudsSize","_map","_fade","_actionText","_missionIcon","_showIconText"];
-disableserialization;
-
-_parentDisplayDefault = switch false do {
- case isnull (finddisplay 37): {finddisplay 37}; //--- GetReady
- case isnull (finddisplay 52): {finddisplay 52}; //--- ServerGetReady
- case isnull (finddisplay 53): {finddisplay 53}; //--- ClientGetReady
- default {[] call bis_fnc_displayMission}; //--- Mission
-};
-_parentDisplay = _this param [0,_parentDisplayDefault,[displaynull]];
-_mapCenter = _this param [1,position player];
-_mapCenter = _mapCenter call bis_fnc_position;
-_missions = _this param [2,[],[[]]];
-_ORBAT = _this param [3,[],[[]]];
-_markers = _this param [4,[],[[]]];
-_images = _this param [5,[],[[]]];
-_overcast = (_this param [6,overcast,[0]]) max 0 min 1;
-_isNight = _this param [7,false,[false]];
-_defaultScale = _this param [8,1,[0]];
-_simulationEnabled = _this param [9,false,[false]];
-_actionText = _this param [10,localize "str_a3_rscdisplaystrategicmap_missions",[""]];
-_showIconText = _this param [11,true,[true]];
-_missionIcon = _this param [12,"\A3\Ui_f\data\Map\GroupIcons\badge_rotate_%1_gs.paa",[""]];
-
-BIS_fnc_strategicMapOpen_showIconText = _showIconText;
-BIS_fnc_strategicMapOpen_missionIcon = _missionIcon;
-
-//--- Calculate terrain size and outside color
-_mapSize = worldSize;
-BIS_fnc_strategicMapOpen_mapSize = _mapSize;
-BIS_fnc_strategicMapOpen_isNight = _isNight;
-
-_scale = 3500 / _mapSize / safezoneH;
-_scale = _scale * (_defaultScale max 0 min 1);
-_maxSatelliteAlpha = if (_isNight) then {0.75} else {1};
-
-_colorOutside = configfile >> "CfgWorlds" >> worldname >> "OutsideTerrain" >> "colorOutside";
-_colorOutside = if (isarray _colorOutside) then {
- _colorOutside call bis_fnc_colorCOnfigToRGBA;
-} else {
- ["colorOutside param is mission in ""CfgWorlds"" >> ""%1"" >> ""OutsideTerrain""",worldname] call bis_fnc_error;
- [0,0,0,1]
-};
-
-with uinamespace do {
- RscDisplayStrategicMap_scaleMin = 0;
- RscDisplayStrategicMap_scaleMax = 1;
- RscDisplayStrategicMap_scaleDefault = _scale;
- RscDisplayStrategicMap_maxSatelliteAlpha = _maxSatelliteAlpha;
-
- RscDisplayStrategicMap_colorOutside_R = _colorOutside select 0;
- RscDisplayStrategicMap_colorOutside_G = _colorOutside select 1;
- RscDisplayStrategicMap_colorOutside_B = _colorOutside select 2;
-};
-
-//--- Create the viewer
-_displayClass = if (_simulationEnabled) then {"RscDisplayStrategicMapSimulation"} else {"RscDisplayStrategicMap"};
-_parentDisplay createdisplay _displayClass;
-_display = finddisplay 506;
-if (isnull _display) exitwith {"Unable to create 'RscDisplayStrategicMap' display." call (uinamespace getvariable "bis_fnc_error"); displaynull};
-
-//--- Life, calculations and everything
-startloadingscreen ["","RscDisplayLoadingBlack"];
-
-BIS_fnc_strategicMapOpen_player = player;
-//selectnoplayer;
-
-//--- Process ORBAT
-BIS_fnc_strategicMapOpen_ORBAT = [];
-_onClick = [];
-{
- private ["_pos","_class","_parent","_tags","_tiers","_classParams","_text","_texture","_size","_color","_sizeLocal","_sizeParams","_sizeTexture"];
- _pos = _x param [0,player];
- _pos = _pos call bis_fnc_position;
-
- _class = _x param [1,configfile >> "CfgORBAT",[configfile]];
- _parent = _x param [2,_class,[configfile]];
- _tags = _x param [3,[],[[]]];
- _tiers = _x param [4,-1,[0]];
-
- _classParams = _class call bis_fnc_ORBATGetGroupParams;
- _text = _classParams select ("text" call bis_fnc_ORBATGetGroupParams);
- _texture = _classParams select ("texture" call bis_fnc_ORBATGetGroupParams);
- _size = _classParams select ("size" call bis_fnc_ORBATGetGroupParams);
- _color = _classParams select ("color" call bis_fnc_ORBATGetGroupParams);
-
- _iconSize = sqrt (_size + 1) * 32;
-
- //--- Group size
- //_sizeLocal = _size max 0 min (count (BIS_fnc_ORBATGetGroupParams_sizes) - 1);
- //_sizeParams = BIS_fnc_ORBATGetGroupParams_sizes select _sizeLocal;
- //_sizeTexture = _sizeParams select 0;
-
- BIS_fnc_strategicMapOpen_ORBAT set [
- count BIS_fnc_strategicMapOpen_ORBAT,
- [
- _class,
- [_parent,_tags,_tiers],
- [
- _texture,
- _color,
- _pos,
- _iconSize,
- _iconSize,
- 0,
- "",
- false
- ],
- _classParams
- ]
- ];
-
- //--- Create shortcut from ORBAT viewer
- _onClick set [count _onClick,_class];
- _onClick set [count _onClick,{[_this select 0,1] spawn bis_fnc_strategicMapAnimate; true}];
-} foreach _ORBAT;
-BIS_fnc_strategicMapOpen_ORBATonClick = _onClick;
-
-//--- Process Missions
-BIS_fnc_strategicMapOpen_missions = [];
-if (count _missions > 0) then {
- _playerIcon = gettext (configfile >> "CfgInGameUI" >> "IslandMap" >> "iconPlayer");
- _playerColor = (getarray (configfile >> "cfgingameui" >> "islandmap" >> "colorMe")) call BIS_fnc_colorRGBAtoHTML;
-
- _ctrlBackground = _display displayctrl 1000;
- _ctrlBackground ctrlshow false;
-
- _ctrlMissions = _display displayctrl 1500;
- _lbadd = _ctrlMissions lbadd _actionText;
- _ctrlMissions lbsetvalue [_lbadd,-1];
- _ctrlMissions lbsetcolor [_lbadd,[1,1,1,0.5]];
- {
- private ["_pos","_code","_title","_description","_player","_picture","_iconSize","_infoText","_codeParams"];
- _pos = _x param [0,player];
- _pos = _pos call bis_fnc_position;
-
- _code = _x param [1,{},[{}]];
- _title = _x param [2,"ERROR: MISSING TITLE",[""]];
- _description = _x param [3,"",[""]];
- _player = _x param [4,"",[""]];
- _picture = _x param [5,"",[""]];
- _iconSize = _x param [6,1,[1]];
- _codeParams = _x param [7,[],[[]]];
-
- _infoText = _title;
- if (_player != "") then {_infoText = _infoText + format ["
-
%1",_player,_playerIcon,_playerColor];};
- if (_description != "") then {_infoText = _infoText + format ["
-
%1",_description];};
- //if (_picture != "") then {_infoText = _infoText + format ["
",_picture];};
-
- BIS_fnc_strategicMapOpen_missions set [
- count BIS_fnc_strategicMapOpen_missions,
- [
- _pos,
- _code,
- _title,
- _iconSize,
- _picture,
- 0,
- 0,
- 0,
- _infoText,
- _codeParams
- ]
- ];
-
- _lbadd = _ctrlMissions lbadd format ["%1 (%2/%3)",_title,_foreachindex + 1,count _missions];
- _ctrlMissions lbsetvalue [_lbAdd,_foreachindex];
-
- } foreach _missions;
-
- _ctrlMissions lbsetcursel 0;
- _ctrlMissions ctrladdeventhandler [
- "lbselchanged",
- "
- _ctrlMissions = _this select 0;
- _cursel = _this select 1;
- if ((_ctrlMissions lbvalue 0) < 0) exitwith {_ctrlMissions lbdelete 0; _ctrlMissions lbsetcursel 0;};
- _mission = BIS_fnc_strategicMapOpen_missions select (_ctrlMissions lbvalue _cursel);
- [_mission select 0,1] spawn bis_fnc_strategicmapanimate;
- "
- ];
-};
-
-//--- Process Images
-BIS_fnc_strategicMapOpen_images = [];
-{
- private ["_texture","_color","_pos","_w","_h","_dir","_text","_shadow"];
- _texture = _x param [0,"#(argb,8,8,3)color(0,0,0,0)",[""]];
- _color = _x param [1,[1,1,1,1],[[]]];
- _pos = _x param [2,position player];
- _w = _x param [3,0,[0]];
- _h = _x param [4,0,[0]];
- _dir = _x param [5,0,[0]];
- _text = _x param [6,"",[""]];
- _shadow = _x param [7,false,[false]];
-
- _pos = _pos call bis_fnc_position;
- _color = _color call bis_fnc_colorConfigToRGBA;
- _coef = (0.182 * safezoneH); //--- Magic constant to make kilometer a kilometer
- _w = _w * _coef;
- _h = _h * _coef;
-
- BIS_fnc_strategicMapOpen_images set [
- count BIS_fnc_strategicMapOpen_images,
- [_texture,_color,_pos,_w,_h,_dir,_text,_shadow]
- ];
-} foreach _images;
-
-//--- Random clouds
-_cloudTextures = [
- "\A3\data_f\mrak_01_ca.paa",
- "\A3\data_f\mrak_02_ca.paa",
- "\A3\data_f\mrak_03_ca.paa",
- "\A3\data_f\mrak_04_ca.paa"
-];
-_cloudsGrid = 500;
-_cloudsMax = (_mapSize / _cloudsGrid) * _overcast;
-_cloudsSize = (_cloudsGrid / 2) + (_cloudsGrid * _overcast);
-BIS_fnc_strategicMapOpen_overcast = _overcast;
-BIS_fnc_strategicMapOpen_clouds = [];
-
-for "_i" from 1 to (_cloudsMax) do {
- BIS_fnc_strategicMapOpen_clouds set [
- count BIS_fnc_strategicMapOpen_clouds,
- [
- _cloudTextures call bis_fnc_selectrandom,
- (random _mapSize),
- ((_mapSize / _cloudsMax) * _i),
- random 360,
- _cloudsSize + (_cloudsSize * _overcast),
- [1,1,1,0.25]
- ]
- ];
-};
-
-
-BIS_fnc_strategicMapOpen_indexSizeTexture = ("sizeTexture" call bis_fnc_ORBATGetGroupParams);
-BIS_fnc_strategicMapOpen_indexTextureSize = ("textureSize" call bis_fnc_ORBATGetGroupParams);
-
-BIS_fnc_strategicMapOpen_draw = {
- scriptname "bis_fnc_strategicMapOpen - Draw";
- _map = _this select 0;
- _mapSize = BIS_fnc_strategicMapOpen_mapSize / 2;
- _display = ctrlparent _map;
- _time = diag_ticktime;
-
- //_tooltip = (ctrlparent _map) displayctrl 2350;
- //_tooltip ctrlsetfade 1;
- //_tooltip ctrlcommit 0;
-
- _mousePos = _map ctrlmapscreentoworld BIS_fnc_strategicMapOpen_mousePos;
- //_mouseLimit = BIS_fnc_strategicMapOpen_mapSize / 3400;
- _mouseLimit = 2.5 / safezoneh;
- _selected = [];
-
- //--- Cross grid
- _map drawRectangle [
- [_mapSize,_mapSize,0],
- _mapSize,
- _mapSize,
- 0,
- [1,1,1,0.42],
- "\A3\Ui_f\data\GUI\Rsc\RscDisplayStrategicMap\cross_ca.paa"
- ];
-
- //--- Images
- {
- _map drawicon _x;
- } foreach BIS_fnc_strategicMapOpen_images;
-
- //--- ORBAT groups
- {
- _class = _x select 0;
- _iconParams = +(_x select 2);
- _classParams = +(_x select 3);
-
- _pos = _iconParams select 2;
- _iconSize = _iconParams select 3;
-
- if (((_iconParams select 2) distance _mousePos) < (_mouseLimit * _iconSize)) then {
- _iconParams set [3,(_iconParams select 3) * 1.2];
- _iconParams set [4,(_iconParams select 4) * 1.2];
- _selected = _x;
- };
-
- _textureSize = _classParams select BIS_fnc_strategicMapOpen_indexTextureSize;
- _iconSizeParams = +_iconParams;
- _iconParams set [3,(_iconParams select 3) * _textureSize];
- _iconParams set [4,(_iconParams select 4) * _textureSize];
-
- _map drawIcon _iconParams;
-
- //--- Draw size texture
- _size = _classParams select 5;
- if (_size >= 0) then {
- _sizeTexture = _classParams select BIS_fnc_strategicMapOpen_indexSizeTexture;
- _iconSizeParams set [0,_sizeTexture];
- _map drawIcon _iconSizeParams;
- };
-
- } foreach BIS_fnc_strategicMapOpen_ORBAT;
-
- //--- Clouds
- _cloudSpeed = sin _time * (1138 + 2000 * BIS_fnc_strategicMapOpen_overcast);
- {
- _texture = _x select 0;
- _posX = _x select 1;
- _posY = _x select 2;
- _dir = _x select 3;
- _size = _x select 4;
- _color = _x select 5;
-
- _map drawIcon [
- _texture,
- _color,
- [
- _posX + _cloudSpeed,
- _posY
- ],
- _size,
- _size,
- _dir + (_time * _foreachindex) / (count BIS_fnc_strategicMapOpen_clouds * 3),
- "",
- false
- ];
- } foreach BIS_fnc_strategicMapOpen_clouds;
-
- //--- Missions
- _textureAnimPhase = abs(6 - floor (_time * 16) % 12);
- {
- _pos = _x select 0;
- _title = _x select 2;
- _size = (_x select 3) * 32;
- _dir = 0;
- _alpha = 0.75;
- _texture = format [BIS_fnc_strategicMapOpen_missionIcon,_textureAnimPhase,_foreachindex + 1];
-
- //--- Icon is under cursor
- if ((_pos distance _mousePos) < (_mouseLimit * _size)) then {
- _size = _size * 1.2;
- _alpha = 1;
- _selected = _x;
- };
-
- //--- Outside of the screen area
- _mappos = _map ctrlmapworldtoscreen _pos;
- _mapposX = _mappos select 0;
- _mapposY = _mappos select 1;
-
- _borderLeft = safezoneX;
- _borderRight = safezoneX + safezoneW;
- _borderTop = safezoneY;
- _borderBottom = safezoneY + safezoneH;
-
- if (
- _mapposX < _borderLeft || _mapposX > _borderRight
- ||
- _mapposY < _borderTop || _mapposY > _borderBottom
- ) then {
- _texture = gettext (configfile >> "CfgInGameUI" >> "Cursor" >> "outArrow");
- _mapposX = _mapposX max safezoneX min (safezoneX + safezoneW);
- _mapposY = _mapposY max safezoneY min (safezoneY + safezoneH);
- _title = "";
-
- _offset = (_size / 1200);
- _offsetDefX = _offset;
- _offsetDefY = _offset * 4/3;
- _offsetX = 0;
- _offsetY = 0;
- _dir = -([[0.5,0.5],_mappos] call bis_fnc_dirto) - 90;
-
- switch (true) do {
- case (_mapposX <= _borderLeft): {
- _offsetX = +_offsetDefX;
- _mapposY = _mapposY min (_borderBottom - _offsetDefY) max (_borderTop + _offsetDefY);
- };
- case (_mapposX >= _borderRight): {
- _offsetX = -_offsetDefX;
- _mapposY = _mapposY min (_borderBottom - _offsetDefY) max (_borderTop + _offsetDefY);
- };
- case (_mapposY <= _borderTop): {
- _offsetY = +_offsetDefY;
- _mapposX = _mapposX min (_borderRight - _offsetDefX) max (_borderLeft + _offsetDefX);
- };
- case (_mapposY >= _borderBottom): {
- _offsetY = -_offsetDefY;
- _mapposX = _mapposX min (_borderRight - _offsetDefX) max (_borderLeft + _offsetDefX);
- };
- };
-
- _pos = _map ctrlmapscreentoworld [
- _mapposX + _offsetX,
- _mapposY + _offsetY
- ];
- };
-
- _map drawIcon [
- _texture,
- [1,1,1,_alpha],
- _pos,
- _size,
- _size,
- _dir,
- if (BIS_fnc_strategicMapOpen_showIconText) then {" " + _title} else {""},
- 2,
- 0.08,
- "PuristaBold"
- ];
- } foreach BIS_fnc_strategicMapOpen_missions;
-
- //--- Night
- if (BIS_fnc_strategicMapOpen_isNight) then {
- _map drawRectangle [
- [_mapSize,_mapSize,0],
- 99999,
- 99999,
- 0,
- [0,0.05,0.2,0.42],
- "#(argb,8,8,3)color(1,1,1,1)"
- ];
- };
-
- //--- Tooltip
- if (count _selected > 0 && !BIS_fnc_strategicMapOpen_mouseClickDisable) then {
- switch (count _selected) do {
-
- //--- ORBAT
- case 4: {
- _class = _selected select 0;
- _classParams = _selected select 3;
-
- [_classParams,_display,BIS_fnc_strategicMapOpen_mousePos] call bis_fnc_ORBATTooltip;
- };
-
- //--- Mission
- case 10;
- case 9: {
- [_selected,_display,BIS_fnc_strategicMapOpen_mousePos] call bis_fnc_ORBATTooltip;
- };
- };
- } else {
- [[],_display] call bis_fnc_ORBATTooltip;
- };
- _info ctrlcommit 0;
- BIS_fnc_strategicMapOpen_selected = _selected;
-};
-
-//--- Mouse click on icon
-BIS_fnc_strategicMapOpen_mouseClickDisable = false;
-BIS_fnc_strategicMapOpen_selected = [];
-BIS_fnc_strategicMapOpen_mousePos = [0,0];
-BIS_fnc_strategicMapOpen_mouse = {
- BIS_fnc_strategicMapOpen_mousePos = [_this select 1,_this select 2];
-};
-
-#define DIK_H 0x23
-#define DIK_NUMPAD5 0x4C
-
-BIS_fnc_strategicMapOpen_keyDown = {
- _display = _this select 0;
- _key = _this select 1;
-
- //--- H
- switch _key do {
- case DIK_H: {
- _fade = ceil ctrlfade (_display displayctrl 2);
- _fade = (_fade + 1) % 2;
- {
- (_display displayctrl _x) ctrlsetfade _fade;
- (_display displayctrl _x) ctrlcommit 0.3;
- } foreach [2,1000,1500,2350,2301];
- };
- case DIK_NUMPAD5: {
- [BIS_fnc_strategicMapOpen_mapCenter,1] spawn bis_fnc_strategicMapAnimate;
- };
- };
- false
-};
-
-
-_map = _display displayctrl 51;
-_map ctrlmapanimadd [0,_scale,_mapCenter];
-ctrlmapanimcommit _map;
-BIS_fnc_strategicMapOpen_mapCenter = _mapCenter;
-
-_map ctrladdeventhandler ["draw","_this call BIS_fnc_strategicMapOpen_draw;"];
-_map ctrladdeventhandler ["mousemoving","_this call BIS_fnc_strategicMapOpen_mouse;"];
-_map ctrladdeventhandler ["mouseholding","_this call BIS_fnc_strategicMapOpen_mouse;"];
-_map ctrladdeventhandler ["mousebuttonclick","[nil,_this] spawn BIS_fnc_strategicMapMouseButtonClick;"];
-_display displayaddeventhandler ["keydown","_this call BIS_fnc_strategicMapOpen_keyDown"];
-
-if (_isNight) then {
- _map ctrlsetbackgroundcolor [0,0,0,1];
- _map ctrlcommit 0;
-};
-
-//--- Measure
-[_display] spawn {
- disableserialization;
- _display = _this select 0;
- _showMiles = false;
-
- _map = _display displayctrl 51;
- waituntil {ctrlmapanimdone _map};
-
- _xStart = (_map ctrlmapworldtoscreen [0,0,0]) select 0;
- _xEnd = (_map ctrlmapworldtoscreen [1000,0,0]) select 0;
- _w1km = abs (_xstart - _xEnd);
- _w1m = _w1km * 1.60934;
- if !(_showMiles) then {_w1m = 0.01};
- _h = 0.01;
-
- _measure = _display displayctrl 2301;
- _measure ctrlsetposition [
- safezoneX + 0.02125,
- safezoneY + safezoneH - 3.5 * 0.04,
- 1,
- _h * 5
- ];
- //_measure ctrlsetfade 0.25;
- _measure ctrlcommit 0;
- _measure ctrlenable false;
-
- _colors = ["#(argb,8,8,3)color(0,0,0,1)","\A3\Ui_f\data\GUI\Rsc\RscDisplayStrategicMap\measure_ca.paa"];
- _kmSegment = _w1km / 5;
- for "_i" from 0 to 4 do {
- _km = _display displayctrl (1200 + _i);
- _km ctrlsettext (_colors select (_i % 2));
- _km ctrlsetposition [
- _w1m + _kmSegment * _i,
- _h,
- _kmSegment,
- _h
- ];
- _km ctrlcommit 0;
- };
-
- _text_0 = _display displayctrl 1002;
- _text_0 ctrlsetposition [
- _w1m - _w1km,
- _h * 3,
- 2 * _w1km,
- _h * 2
- ];
- _text_0 ctrlcommit 0;
- _text_km = _display displayctrl 1004;
- _text_km ctrlsetposition [
- _w1m - _w1km + (safezoneH / 30),
- _h * 3,
- 2 * _w1km,
- _h * 2
- ];
- _text_km ctrlcommit 0;
-
- if (_showMiles) then {
- _m0 = _display displayctrl 1205;
- _m0 ctrlsettext "#(argb,8,8,3)color(1,1,1,1)";
- _m0 ctrlsetposition [
- 0,
- _h,
- _w1m,
- _h
- ];
- _m0 ctrlcommit 0;
- _text_m = _display displayctrl 1003;
- _text_m ctrlsetposition [
- 0,
- _h * 3,
- 2 * _w1m,
- _h * 2
- ];
- _text_m ctrlcommit 0;
- };
-};
-
-//--- Show markers
-{
- _x setmarkeralpha 1;
-} foreach _markers;
-BIS_fnc_strategicMapOpen_markers = _markers;
-
-//--- Fade in
-_fade = _display displayctrl 1099;
-_fade ctrlsetfade 1;
-_fade ctrlcommit 2;
-
-//--- Create upward looking camera (increases FPS, as no scene is drawn)
-BIS_fnc_strategicMapOpen_camera = if (count allmissionobjects "Camera" == 0) then {
- _camera = "camera" camcreate position player;
- _camera cameraeffect ["internal","back"];
- _camera campreparepos [position player select 0,position player select 1,(position player select 2) + 10];
- _camera campreparetarget [position player select 0,(position player select 1) + 1,(position player select 2) + 1000];
- _camera campreparefov 0.1;
- _camera camcommitprepared 0;
- _camera
-} else {
- objnull
-};
-
-//--- Garbage collector
-_display displayaddeventhandler [
- "unload",
- "
- {
- _x setmarkeralpha 0;
- } foreach BIS_fnc_strategicMapOpen_markers;
-
- BIS_fnc_strategicMapOpen_camera cameraeffect ['terminate','back'];
- camdestroy BIS_fnc_strategicMapOpen_camera;
-
- BIS_fnc_strategicMapOpen_camera = nil;
- BIS_fnc_strategicMapOpen_player = nil;
- BIS_fnc_strategicMapOpen_mapSize = nil;
- BIS_fnc_strategicMapOpen_mapCenter = nil;
- BIS_fnc_strategicMapOpen_isNight = nil;
- BIS_fnc_strategicMapOpen_ORBAT = nil;
- BIS_fnc_strategicMapOpen_ORBATOverlay = nil;
- BIS_fnc_strategicMapOpen_missions = nil;
- BIS_fnc_strategicMapOpen_markers = nil;
- BIS_fnc_strategicMapOpen_images = nil;
- BIS_fnc_strategicMapOpen_draw = nil;
- BIS_fnc_strategicMapOpen_clouds = nil;
- BIS_fnc_strategicMapOpen_mousePos = nil;
- BIS_fnc_strategicMapOpen_mouseClickDisable = nil;
- BIS_fnc_strategicMapOpen_selected = nil;
- BIS_fnc_strategicMapOpen_indexSizeTexture = nil;
- BIS_fnc_strategicMapOpen_indexTextureSize = nil;
- with uinamespace do {
- RscDisplayStrategicMap_scaleMin = nil;
- RscDisplayStrategicMap_scaleMax = nil;
- RscDisplayStrategicMap_scaleDefault = nil;
-
- RscDisplayStrategicMap_colorOutside_R = nil;
- RscDisplayStrategicMap_colorOutside_G = nil;
- RscDisplayStrategicMap_colorOutside_B = nil;
- };
- "
-];
-
-cuttext ["","black in"];
-endloadingscreen;
-
-_display
\ No newline at end of file
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/typeOf.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/typeOf.sqf
index 9f1bef85b..8c4eaaf12 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/typeOf.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/typeOf.sqf
@@ -30,6 +30,8 @@ if (isNil "btc_modelNamespace") then {
btc_modelNamespace = call CBA_fnc_createNamespace;
};
+private _CfgVehicles = configFile >> "CfgVehicles";
+
_objectArray apply {
private _type = typeOf _x;
@@ -39,7 +41,7 @@ _objectArray apply {
_type = btc_modelNamespace getVariable _model;
if (isNil "_type") then {
private _objects = configProperties [
- configFile >> "CfgVehicles",
+ _CfgVehicles,
"(isClass _x) && {(((getText (_x >> 'model')) select [1]) == _model) || {(getText (_x >> 'model')) == _model}}",
true
];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/compile.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/compile.sqf
index 3df5405ff..a26c12b05 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/compile.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/compile.sqf
@@ -22,6 +22,7 @@ if (isServer) then {
btc_fnc_typeOf = compile preprocessFileLineNumbers "core\fnc\common\typeOf.sqf";
btc_fnc_getVehProperties = compile preprocessFileLineNumbers "core\fnc\common\getVehProperties.sqf";
btc_fnc_setVehProperties = compile preprocessFileLineNumbers "core\fnc\common\setVehProperties.sqf";
+ btc_fnc_roof = compile preprocessFileLineNumbers "core\fnc\common\roof.sqf";
//CHEM
btc_fnc_chem_checkLoop = compile preprocessFileLineNumbers "core\fnc\chem\checkLoop.sqf";
@@ -48,8 +49,6 @@ if (isServer) then {
btc_fnc_civ_get_grenade = compile preprocessFileLineNumbers "core\fnc\civ\get_grenade.sqf";
btc_fnc_civ_populate = compile preprocessFileLineNumbers "core\fnc\civ\populate.sqf";
btc_fnc_civ_create_patrol = compile preprocessFileLineNumbers "core\fnc\civ\create_patrol.sqf";
- btc_fnc_civ_unit_create = compile preprocessFileLineNumbers "core\fnc\civ\unit_create.sqf";
- btc_fnc_civ_CuratorCivPlaced_s = compile preprocessFileLineNumbers "core\fnc\civ\CuratorCivPlaced_s.sqf";
btc_fnc_civ_evacuate = compile preprocessFileLineNumbers "core\fnc\civ\evacuate.sqf";
//DATA
@@ -60,16 +59,18 @@ if (isServer) then {
//DB
btc_fnc_db_save = compile preprocessFileLineNumbers "core\fnc\db\save.sqf";
btc_fnc_db_delete = compile preprocessFileLineNumbers "core\fnc\db\delete.sqf";
- btc_fnc_db_autosave = compile preprocessFileLineNumbers "core\fnc\db\autosave.sqf";
btc_fnc_db_loadObjectStatus = compile preprocessFileLineNumbers "core\fnc\db\loadObjectStatus.sqf";
btc_fnc_db_saveObjectStatus = compile preprocessFileLineNumbers "core\fnc\db\saveObjectStatus.sqf";
btc_fnc_db_loadCargo = compile preprocessFileLineNumbers "core\fnc\db\loadcargo.sqf";
+ btc_fnc_db_autoRestart = compile preprocessFileLineNumbers "core\fnc\db\autoRestart.sqf";
+
+ //DELAY
+ btc_fnc_delay_createUnit = compile preprocessFileLineNumbers "core\fnc\delay\createUnit.sqf";
+ btc_fnc_delay_createVehicle = compile preprocessFileLineNumbers "core\fnc\delay\createVehicle.sqf";
+ btc_fnc_delay_createAgent = compile preprocessFileLineNumbers "core\fnc\delay\createAgent.sqf";
+ btc_fnc_delay_exec = compile preprocessFileLineNumbers "core\fnc\delay\exec.sqf";
//EH
- btc_fnc_eh_veh_add_respawn = compile preprocessFileLineNumbers "core\fnc\eh\veh_add_respawn.sqf";
- btc_fnc_eh_veh_killed = compile preprocessFileLineNumbers "core\fnc\eh\veh_killed.sqf";
- btc_fnc_eh_veh_respawn = compile preprocessFileLineNumbers "core\fnc\eh\veh_respawn.sqf";
- btc_fnc_eh_handledisconnect = compile preprocessFileLineNumbers "core\fnc\eh\handledisconnect.sqf";
btc_fnc_eh_server = compile preprocessFileLineNumbers "core\fnc\eh\server.sqf";
//IED
@@ -78,7 +79,7 @@ if (isServer) then {
btc_fnc_ied_checkLoop = compile preprocessFileLineNumbers "core\fnc\ied\checkLoop.sqf";
btc_fnc_ied_create = compile preprocessFileLineNumbers "core\fnc\ied\create.sqf";
btc_fnc_ied_fired_near = compile preprocessFileLineNumbers "core\fnc\ied\fired_near.sqf";
- btc_fnc_ied_init_area = compile preprocessFileLineNumbers "core\fnc\ied\init_area.sqf";
+ btc_fnc_ied_initArea = compile preprocessFileLineNumbers "core\fnc\ied\initArea.sqf";
btc_fnc_ied_suicider_active = compile preprocessFileLineNumbers "core\fnc\ied\suicider_active.sqf";
btc_fnc_ied_suicider_activeLoop = compile preprocessFileLineNumbers "core\fnc\ied\suicider_activeLoop.sqf";
btc_fnc_ied_suicider_create = compile preprocessFileLineNumbers "core\fnc\ied\suicider_create.sqf";
@@ -101,8 +102,8 @@ if (isServer) then {
//FOB
btc_fnc_fob_create_s = compile preprocessFileLineNumbers "core\fnc\fob\create_s.sqf";
btc_fnc_fob_dismantle_s = compile preprocessFileLineNumbers "core\fnc\fob\dismantle_s.sqf";
- btc_fnc_fob_init = compile preprocessFileLineNumbers "core\fnc\fob\init.sqf";
btc_fnc_fob_killed = compile preprocessFileLineNumbers "core\fnc\fob\killed.sqf";
+ btc_fnc_fob_rallypointTimer = compile preprocessFileLineNumbers "core\fnc\fob\rallypointTimer.sqf";
//MIL
btc_fnc_mil_addWP = compile preprocessFileLineNumbers "core\fnc\mil\addWP.sqf";
@@ -115,32 +116,31 @@ if (isServer) then {
btc_fnc_mil_create_patrol = compile preprocessFileLineNumbers "core\fnc\mil\create_patrol.sqf";
btc_fnc_mil_send = compile preprocessFileLineNumbers "core\fnc\mil\send.sqf";
btc_fnc_mil_set_skill = compile preprocessFileLineNumbers "core\fnc\mil\set_skill.sqf";
- btc_fnc_mil_unit_create = compile preprocessFileLineNumbers "core\fnc\mil\unit_create.sqf";
- btc_fnc_mil_CuratorMilPlaced_s = compile preprocessFileLineNumbers "core\fnc\mil\CuratorMilPlaced_s.sqf";
btc_fnc_mil_getStructures = compile preprocessFileLineNumbers "core\fnc\mil\getStructures.sqf";
btc_fnc_mil_getBuilding = compile preprocessFileLineNumbers "core\fnc\mil\getBuilding.sqf";
- btc_fnc_mil_add_eh = compile preprocessFileLineNumbers "core\fnc\mil\add_eh.sqf";
btc_fnc_mil_createVehicle = compile preprocessFileLineNumbers "core\fnc\mil\createVehicle.sqf";
btc_fnc_mil_createUnits = compile preprocessFileLineNumbers "core\fnc\mil\createUnits.sqf";
+ btc_fnc_mil_unit_killed = compile preprocessFileLineNumbers "core\fnc\mil\unit_killed.sqf";
+ btc_fnc_mil_create_staticOnRoof = compile preprocessFileLineNumbers "core\fnc\mil\create_staticOnRoof.sqf";
//PATROL
btc_fnc_patrol_playersInAreaCityGroup = compile preprocessFileLineNumbers "core\fnc\patrol\playersInAreaCityGroup.sqf";
- btc_fnc_patrol_eh_remove = compile preprocessFileLineNumbers "core\fnc\patrol\eh_remove.sqf";
btc_fnc_patrol_usefulCity = compile preprocessFileLineNumbers "core\fnc\patrol\usefulCity.sqf";
btc_fnc_patrol_WPCheck = compile preprocessFileLineNumbers "core\fnc\patrol\WPCheck.sqf";
btc_fnc_patrol_init = compile preprocessFileLineNumbers "core\fnc\patrol\init.sqf";
btc_fnc_patrol_addWP = compile preprocessFileLineNumbers "core\fnc\patrol\addWP.sqf";
+ btc_fnc_patrol_eh = compile preprocessFileLineNumbers "core\fnc\patrol\eh.sqf";
+ btc_fnc_patrol_addEH = compile preprocessFileLineNumbers "core\fnc\patrol\addEH.sqf";
//REP
- btc_fnc_rep_add_eh = compile preprocessFileLineNumbers "core\fnc\rep\add_eh.sqf";
btc_fnc_rep_call_militia = compile preprocessFileLineNumbers "core\fnc\rep\call_militia.sqf";
btc_fnc_rep_change = compile preprocessFileLineNumbers "core\fnc\rep\change.sqf";
btc_fnc_rep_eh_effects = compile preprocessFileLineNumbers "core\fnc\rep\eh_effects.sqf";
btc_fnc_rep_hh = compile preprocessFileLineNumbers "core\fnc\rep\hh.sqf";
- btc_fnc_rep_firednear = compile preprocessFileLineNumbers "core\fnc\rep\firednear.sqf";
- btc_fnc_rep_remove_eh = compile preprocessFileLineNumbers "core\fnc\rep\remove_eh.sqf";
btc_fnc_rep_buildingchanged = compile preprocessFileLineNumbers "core\fnc\rep\buildingchanged.sqf";
btc_fnc_rep_explosives_defuse = compile preprocessFileLineNumbers "core\fnc\rep\explosives_defuse.sqf";
+ btc_fnc_rep_notify = compile preprocessFileLineNumbers "core\fnc\rep\notify.sqf";
+ btc_fnc_rep_killed = compile preprocessFileLineNumbers "core\fnc\rep\killed.sqf";
//SIDE
btc_fnc_side_create = compile preprocessFileLineNumbers "core\fnc\side\create.sqf";
@@ -161,9 +161,14 @@ if (isServer) then {
btc_fnc_side_kill = compile preprocessFileLineNumbers "core\fnc\side\kill.sqf";
btc_fnc_side_chemicalLeak = compile preprocessFileLineNumbers "core\fnc\side\chemicalLeak.sqf";
btc_fnc_side_EMP = compile preprocessFileLineNumbers "core\fnc\side\EMP.sqf";
+ btc_fnc_side_removeRubbish = compile preprocessFileLineNumbers "core\fnc\side\removeRubbish.sqf";
+
+ //TAG
+ btc_fnc_tag_initArea = compile preprocessFileLineNumbers "core\fnc\tag\initArea.sqf";
+ btc_fnc_tag_eh = compile preprocessFileLineNumbers "core\fnc\tag\eh.sqf";
+ btc_fnc_tag_create = compile preprocessFileLineNumbers "core\fnc\tag\create.sqf";
//LOG
- btc_fnc_log_CuratorObjectPlaced_s = compile preprocessFileLineNumbers "core\fnc\log\CuratorObjectPlaced_s.sqf";
btc_fnc_log_createVehicle = compile preprocessFileLineNumbers "core\fnc\log\createVehicle.sqf";
btc_fnc_log_getRearmMagazines = compile preprocessFileLineNumbers "core\fnc\log\getRearmMagazines.sqf";
btc_fnc_log_init = compile preprocessFileLineNumbers "core\fnc\log\init.sqf";
@@ -180,12 +185,21 @@ if (isServer) then {
//TASK
btc_fnc_task_create = compile preprocessFileLineNumbers "core\fnc\task\create.sqf";
btc_fnc_task_setState = compile preprocessFileLineNumbers "core\fnc\task\setState.sqf";
+
+ //TOW
+ btc_fnc_tow_ropeBreak = compile preprocessFileLineNumbers "core\fnc\tow\ropeBreak.sqf";
+ btc_fnc_tow_ViV = compile preprocessFileLineNumbers "core\fnc\tow\ViV.sqf";
+
+ //VEH
+ btc_fnc_veh_addRespawn = compile preprocessFileLineNumbers "core\fnc\veh\addRespawn.sqf";
+ btc_fnc_veh_killed = compile preprocessFileLineNumbers "core\fnc\veh\killed.sqf";
+ btc_fnc_veh_respawn = compile preprocessFileLineNumbers "core\fnc\veh\respawn.sqf";
};
/////////////////////CLIENT AND SERVER\\\\\\\\\\\\\\\\\\\\\
//CACHE
-btc_fnc_cache_hd_cache = compile preprocessFileLineNumbers "core\fnc\cache\hd_cache.sqf";
+btc_fnc_cache_hd = compile preprocessFileLineNumbers "core\fnc\cache\hd.sqf";
//COMMON
btc_fnc_find_veh_with_turret = compile preprocessFileLineNumbers "core\fnc\common\find_veh_with_turret.sqf";
@@ -203,9 +217,8 @@ btc_fnc_debug_message = compile preprocessFileLineNumbers "core\fnc\debug\messag
//DB
btc_fnc_db_add_veh = compile preprocessFileLineNumbers "core\fnc\db\add_veh.sqf";
+
//EH
-btc_fnc_eh_persistOnLocalityChange = compile preprocessFileLineNumbers "core\fnc\eh\persistOnLocalityChange.sqf";
-btc_fnc_eh_removePersistOnLocalityChange = compile preprocessFileLineNumbers "core\fnc\eh\removePersistOnLocalityChange.sqf";
btc_fnc_eh_trackItem = compile preprocessFileLineNumbers "core\fnc\eh\trackItem.sqf";
//CIV
@@ -214,7 +227,6 @@ btc_fnc_civ_addWP = compile preprocessFileLineNumbers "core\fnc\civ\addWP.sqf";
//IED
btc_fnc_ied_belt = compile preprocessFileLineNumbers "core\fnc\ied\belt.sqf";
-btc_fnc_ied_suiciderKilled = compile preprocessFileLineNumbers "core\fnc\ied\suiciderKilled.sqf";
//INT
btc_fnc_int_orders_give = compile preprocessFileLineNumbers "core\fnc\int\orders_give.sqf";
@@ -227,19 +239,13 @@ btc_fnc_log_place_destroy_camera = compile preprocessFileLineNumbers "core\fnc\l
//MIL
btc_fnc_mil_class = compile preprocessFileLineNumbers "core\fnc\mil\class.sqf";
btc_fnc_mil_ammoUsage = compile preprocessFileLineNumbers "core\fnc\mil\ammoUsage.sqf";
-btc_fnc_mil_unit_killed = compile preprocessFileLineNumbers "core\fnc\mil\unit_killed.sqf";
//PATROL
-btc_fnc_patrol_eh = compile preprocessFileLineNumbers "core\fnc\patrol\eh.sqf";
btc_fnc_patrol_disabled = compile preprocessFileLineNumbers "core\fnc\patrol\disabled.sqf";
//REP
btc_fnc_rep_hd = compile preprocessFileLineNumbers "core\fnc\rep\hd.sqf";
-btc_fnc_rep_killed = compile preprocessFileLineNumbers "core\fnc\rep\killed.sqf";
-
-//TOW
-btc_fnc_tow_hook = compile preprocessFileLineNumbers "core\fnc\tow\hook.sqf";
-btc_fnc_tow_check = compile preprocessFileLineNumbers "core\fnc\tow\check.sqf";
+btc_fnc_rep_suppressed = compile preprocessFileLineNumbers "core\fnc\rep\suppressed.sqf";
//ARSENAL
btc_fnc_arsenal_ammoUsage = compile preprocessFileLineNumbers "core\fnc\arsenal\ammoUsage.sqf";
@@ -253,7 +259,6 @@ if (!isDedicated) then {
btc_fnc_intro = compile preprocessFileLineNumbers "core\fnc\common\intro.sqf";
btc_fnc_set_markerTextLocal = compile preprocessFileLineNumbers "core\fnc\common\set_markerTextLocal.sqf";
btc_fnc_showSubtitle = compile preprocessFileLineNumbers "core\fnc\common\showSubtitle.sqf";
- btc_fnc_strategicMapOpen = compile preprocessFileLineNumbers "core\fnc\common\strategicMapOpen.sqf";
btc_fnc_get_composition = compile preprocessFileLineNumbers "core\fnc\common\get_composition.sqf";
btc_fnc_checkArea = compile preprocessFileLineNumbers "core\fnc\common\checkArea.sqf";
btc_fnc_typeOfPreview = compile preprocessFileLineNumbers "core\fnc\common\typeOfPreview.sqf";
@@ -281,15 +286,17 @@ if (!isDedicated) then {
btc_fnc_ied_effect_rocks = compile preprocessFileLineNumbers "core\fnc\ied\effect_rocks.sqf";
btc_fnc_ied_effect_blurEffect = compile preprocessFileLineNumbers "core\fnc\ied\effect_blurEffect.sqf";
btc_fnc_ied_effect_shock_wave = compile preprocessFileLineNumbers "core\fnc\ied\effect_shock_wave.sqf";
+ btc_fnc_ied_deleteLoop = compile preprocessFileLineNumbers "core\fnc\ied\deleteLoop.sqf";
//EH
- btc_fnc_eh_player_respawn = compile preprocessFileLineNumbers "core\fnc\eh\player_respawn.sqf";
btc_fnc_eh_CuratorObjectPlaced = compile preprocessFileLineNumbers "core\fnc\eh\CuratorObjectPlaced.sqf";
btc_fnc_eh_player = compile preprocessFileLineNumbers "core\fnc\eh\player.sqf";
//FOB
btc_fnc_fob_create = compile preprocessFileLineNumbers "core\fnc\fob\create.sqf";
+ btc_fnc_fob_rallypointAssemble = compile preprocessFileLineNumbers "core\fnc\fob\rallypointAssemble.sqf";
btc_fnc_fob_redeploy = compile preprocessFileLineNumbers "core\fnc\fob\redeploy.sqf";
+ btc_fnc_fob_redeployCheck = compile preprocessFileLineNumbers "core\fnc\fob\redeployCheck.sqf";
//INT
btc_fnc_int_add_actions = compile preprocessFileLineNumbers "core\fnc\int\add_actions.sqf";
@@ -353,4 +360,11 @@ if (!isDedicated) then {
btc_fnc_tow_ropeCreate = compile preprocessFileLineNumbers "core\fnc\tow\ropeCreate.sqf";
btc_fnc_tow_hitch_points = compile preprocessFileLineNumbers "core\fnc\tow\hitch_points.sqf";
btc_fnc_tow_unhook = compile preprocessFileLineNumbers "core\fnc\tow\unhook.sqf";
+ btc_fnc_tow_unwind = compile preprocessFileLineNumbers "core\fnc\tow\unwind.sqf";
+ btc_fnc_tow_check = compile preprocessFileLineNumbers "core\fnc\tow\check.sqf";
+};
+
+/////////////////////HEADLESS\\\\\\\\\\\\\\\\\\\\\
+if (!hasInterface && !isDedicated) then {
+ btc_fnc_eh_headless = compile preprocessFileLineNumbers "core\fnc\eh\headless.sqf";
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/add_group.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/add_group.sqf
index 5487b8474..0eda468d5 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/add_group.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/add_group.sqf
@@ -28,7 +28,7 @@ params [
if (btc_debug_log) then {
[format ["%1", _group], __FILE__, [false]] call btc_fnc_debug_message;
};
-_group setVariable ["no_cache", Nil];
+_group setVariable ["no_cache", nil];
[_group] call CBA_fnc_clearWaypoints;
private _city = [leader _group, btc_city_all, false] call btc_fnc_find_closecity;
@@ -52,7 +52,9 @@ private _wp = if (vehicle leader _group isEqualTo leader _group) then {
[_group, _city, 200, _wp] call btc_fnc_mil_addWP;
-if !(_city getVariable ["active", false]) then {
+if (_city getVariable ["active", false]) then {
+ _group setVariable ["btc_city", _city];
+} else {
private _data_units = _city getVariable ["data_units", []];
private _data_group = _group call btc_fnc_data_get_group;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/get_group.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/get_group.sqf
index bacf4a504..2f33bf81d 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/get_group.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/get_group.sqf
@@ -24,17 +24,29 @@ params [
["_group", grpNull, [grpNull]]
];
-private _units = units _group;
-private _type_db = 0;
-private _array_pos = [];
-private _array_type = [];
-private _side = side _group;
-private _array_dam = [];
-private _behaviour = [behaviour (leader _group), combatMode _group, formation _group];
-private _array_wp = [];
-private _array_in_veh = [];
-private _array_veh = [];
-private _index_wp = 0;
+private _units = (units _group) select {alive _x};
+if (_units isEqualTo []) exitWith {nil};
+private _leader = leader _group;
+private _vehicle = vehicle _leader;
+
+private _type_db = 0;
+private _array_pos = [];
+private _array_type = [];
+private _side = side _group;
+private _array_dam = [];
+private _array_in_veh = [];
+private _array_veh = [];
+private _index_wp = currentWaypoint _group;
+private _array_wp = (waypoints _group) apply {[
+ waypointPosition _x,
+ waypointType _x,
+ waypointSpeed _x,
+ waypointFormation _x,
+ waypointCombatMode _x,
+ waypointBehaviour _x,
+ waypointTimeout _x,
+ waypointCompletionRadius _x
+]};
{
private _pos = getPosATL _x;
@@ -48,30 +60,25 @@ private _index_wp = 0;
_array_dam pushBack getDammage _x;
} forEach _units;
-_index_wp = (currentWaypoint _group) + 1;
-{
- _array_wp append [[waypointPosition _x, waypointType _x, waypointSpeed _x, waypointFormation _x, waypointCombatMode _x, waypointBehaviour _x]];
-} forEach waypoints _group;
-
-if !(_group getVariable ["btc_inHouse", ""] isEqualTo "") then {_type_db = 3;
+if !(_group getVariable ["btc_inHouse", ""] isEqualTo "") then {
+ _type_db = 3;
_array_veh = _group getVariable ["btc_inHouse", ""];
};
if (_group getVariable ["getWeapons", false]) then {_type_db = 4;};
if (_group getVariable ["suicider", false]) then {_type_db = 5;};
-if !(_group getVariable ["btc_data_inhouse", []] isEqualTo []) then {_type_db = 6;
+if !(_group getVariable ["btc_data_inhouse", []] isEqualTo []) then {
+ _type_db = 6;
_array_veh = _group getVariable ["btc_data_inhouse", []];
};
if (_group getVariable ["btc_ied_drone", false]) then {_type_db = 7;};
-if ((vehicle leader _group != leader _group) && !(_type_db isEqualTo 7)) then {_type_db = 1;};
-
-if (_type_db isEqualTo 1) then {
- private _veh = vehicle leader _group;
- private _type = typeOf _veh;
- private _pos = getPosATL _veh;
- private _dir = getDir _veh;
- private _fuel = fuel _veh;
- _array_veh = [_type, _pos, _dir, _fuel];
+if (
+ _vehicle != _leader &&
+ {!(_type_db isEqualTo 7)}
+) then {
+ _type_db = 1;
+ _array_veh = [typeOf _vehicle, getPosATL _vehicle, getDir _vehicle, fuel _vehicle, vectorUp _vehicle];
};
-[vehicle leader _group, _group] call CBA_fnc_deleteEntity;
-[_type_db, _array_pos, _array_type, _side, _array_dam, _behaviour, [_index_wp, _array_wp], _array_veh]
+[_vehicle, _group] call CBA_fnc_deleteEntity;
+
+[_type_db, _array_pos, _array_type, _side, _array_dam, [], [_index_wp, _array_wp], _array_veh]
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/spawn_group.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/spawn_group.sqf
index 921290c3c..0e56e24da 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/spawn_group.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/spawn_group.sqf
@@ -6,17 +6,19 @@ Description:
Create group previously saved by btc_fnc_data_get_group.
Parameters:
- _type - Type of group (3: in house group, 4: civilian with weapon, 5: suicider ...). [Number]
- _array_pos - Position on units. [Array]
- _array_type - Type of units. [Array]
- _side - Side of the group. [Side]
- _array_dam - Damage of units. [Array]
- _behaviour - Behaviour of units. [Array]
- _array_wp - Waypoints of group. [Array]
- _array_veh - Vehicle occupied by the group. [Array, String]
+ _data_unit - All data listed above. [Array]
+ _type - Type of group (3: in house group, 4: civilian with weapon, 5: suicider ...). [Number]
+ _array_pos - Position on units. [Array]
+ _array_type - Type of units. [Array]
+ _side - Side of the group. [Side]
+ _array_dam - Damage of units. [Array]
+ _behaviour - Behaviour of units. [Array]
+ _array_wp - Waypoints of group. [Array]
+ _array_veh - Vehicle occupied by the group. [Array, String]
+ _city - City. [Object]
Returns:
- leader of the group and type of group. [Array]
+ _delay - Delay due to vehicle spawn. [Number]
Examples:
(begin example)
@@ -29,6 +31,10 @@ Author:
---------------------------------------------------------------------------- */
params [
+ ["_data_unit", [], [[]]],
+ ["_city", objNull, [objNull]]
+];
+_data_unit params [
["_type", 1, [0]],
["_array_pos", [], [[]]],
["_array_type", [], [[]]],
@@ -39,102 +45,69 @@ params [
["_array_veh", [], [[], ""]]
];
-private _group = createGroup _side;
-
-for "_i" from 0 to (count _array_pos - 1) do {
- private _u = _group createUnit [_array_type select _i, _array_pos select _i, [], 0, "NONE"];
- _u enableSimulation false;
- _u setPosATL (_array_pos select _i);
- _u setDamage (_array_dam select _i);
-
- if (btc_debug_log) then {
- [format ["pos %1 in %2 ", _array_pos select _i, getPos _u], __FILE__, [false]] call btc_fnc_debug_message;
- };
+private _delay = 0;
+if (_type isEqualTo 5) exitWith {
+ [_city, 100, _array_pos select 0, _array_type select 0] call btc_fnc_ied_suicider_create;
+ _delay
+};
+if (_type isEqualTo 7) exitWith {
+ [_city, 100, _array_pos select 0] call btc_fnc_ied_drone_create;
+ _delay
};
+private _group = createGroup _side;
+_group setVariable ["btc_city", _city];
if (_type isEqualTo 1) then {
- private _veh = createVehicle [_array_veh select 0, _array_veh select 1, [], 0, "FLY"];
- if !(_veh isKindOf "Plane") then {
- _veh setPosATL (_array_veh select 1);
- _veh setDir (_array_veh select 2);
+ _array_veh params ["_typeOf", "_posATL", "_dir", "_fuel", ["_vectorUp", []]];
+ _delay = [_group, _typeOf, _array_type, _posATL, _dir, _fuel, _vectorUp] call btc_fnc_delay_createVehicle;
+} else {
+ for "_i" from 0 to (count _array_pos - 1) do {
+ [_group, _array_type select _i, _array_pos select _i, "CAN_COLLIDE"] call btc_fnc_delay_createUnit;
+ //_u setDamage (_array_dam select _i);
};
- _veh setFuel (_array_veh select 3);
- {
- private _assigned = false;
- if (!_assigned && _veh emptyPositions "driver" > 0) then {
- _x moveInDriver _veh;
- _x assignAsDriver _veh;
- _assigned = true;
- };
- if (!_assigned && _veh emptyPositions "gunner" > 0) then {
- _x moveinGunner _veh;
- _x assignAsGunner _veh;
- _assigned = true;
- };
- if (!_assigned && _veh emptyPositions "commander" > 0) then {
- _x moveinCommander _veh;
- _x assignAsCommander _veh;
- _assigned = true;
- };
- if (!_assigned && _veh emptyPositions "cargo" > 0) then {
- _x moveinCargo _veh;
- _x assignAsCargo _veh;
- _assigned = true;
- };
- } forEach units _group;
};
-units _group joinSilent _group;
-(units _group) apply {_x enableSimulation true};
-
-//[waypointPosition _x,waypointType _x,waypointSpeed _x,waypointFormation _x,waypointCombatMode _x,waypointBehaviour _x]
-if !(_side isEqualTo civilian && {vehicle leader _group isEqualTo leader _group}) then {
- if (count (_array_wp select 1) > 1) then {
+[{
+ params ["_data_unit", "_group"];
+ _data_unit params [
+ ["_type", 1, [0]],
+ ["_array_pos", [], [[]]],
+ ["_array_type", [], [[]]],
+ ["_side", east, [east]],
+ ["_array_dam", [], [[]]],
+ ["_behaviour", [], [[]]],
+ ["_array_wp", [], [[]]],
+ ["_array_veh", [], [[], ""]]
+ ];
+
+ if !(_type in [3, 6]) then {
+ [_group] call CBA_fnc_clearWaypoints;
{
- [_group, _x select 0, -1, _x select 1, _x select 5, _x select 4, _x select 2, _x select 3, "", [0, 0, 0], 20] call CBA_fnc_addWaypoint;
+ _x params [
+ "_position",
+ "_type",
+ "_speed",
+ "_formation",
+ "_combat",
+ "_behaviour",
+ ["_timeout", [0, 0, 0], [[]], 3],
+ ["_compRadius", 20, [0]]
+ ];
+ [_group, _position, -1, _type, _behaviour, _combat, _speed, _formation, "", _timeout, _compRadius] call CBA_fnc_addWaypoint;
} forEach (_array_wp select 1);
- _group setCurrentWaypoint [_group, _array_wp select 0];
- };
-};
-if (_type isEqualTo 3) then {
- [_group] call CBA_fnc_clearWaypoints;
- [_group, nearestObject [(units _group) select 0, _array_veh]] call btc_fnc_house_addWP;
- _group setVariable ["btc_inHouse", _array_veh];
-};
-if (_type isEqualTo 4) then {[[0, 0, 0], 0, units _group] call btc_fnc_civ_get_weapons;};
-if (_type isEqualTo 5) then {
- _group spawn {
- _this setVariable ["suicider", true];
-
- private _suicider = leader _this;
-
- //Main check
-
- private _cond = false;
-
- while {alive _suicider && !isNull _suicider && !_cond} do {
- sleep 5;
- if !((getPos _suicider nearEntities ["SoldierWB", 25]) isEqualTo []) then {
- _cond = true;
- _suicider spawn btc_fnc_ied_suicider_active
- };
+ if !(_array_wp select 1 isEqualTo []) then {
+ _group setCurrentWaypoint [_group, _array_wp select 0];
};
};
-};
-if (_type isEqualTo 6) then {
- [_group] call CBA_fnc_clearWaypoints;
- [_group, _array_veh select 0] call btc_fnc_civ_addWP;
- _group setVariable ["btc_data_inhouse", _array_veh];
-};
-if (_type isEqualTo 7) then {
- [objNull, 100, _array_pos select 0, _group] call btc_fnc_ied_drone_create;
-};
-
-_group setBehaviour (_behaviour select 0);
-_group setCombatMode (_behaviour select 1);
-_group setFormation (_behaviour select 2);
-
-if (_side isEqualTo btc_enemy_side) then {[_group] call btc_fnc_mil_unit_create;};
-if (_side isEqualTo civilian) then {[_group] call btc_fnc_civ_unit_create};
+ if (_type isEqualTo 3) then {
+ [_group, nearestObject [_array_pos select 0, _array_veh]] call btc_fnc_house_addWP;
+ _group setVariable ["btc_inHouse", _array_veh];
+ };
+ if (_type isEqualTo 4) then {[[0, 0, 0], 0, units _group] call btc_fnc_civ_get_weapons;};
+ if (_type isEqualTo 6) then {
+ [_group, _array_veh select 0] call btc_fnc_civ_addWP;
+ _group setVariable ["btc_data_inhouse", _array_veh];
+ };
+}, [_data_unit, _group], btc_delay_createUnit + _delay] call CBA_fnc_waitAndExecute;
-[leader _group, _type]
+_delay
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/add_veh.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/add_veh.sqf
index 9a84cb6b8..37216b336 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/add_veh.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/add_veh.sqf
@@ -7,7 +7,6 @@ Description:
Parameters:
_veh - Vehicle to add in wreck system. [Object]
- _p_chem - Activate chemical propagation. [Boolean]
Returns:
@@ -22,8 +21,7 @@ Author:
---------------------------------------------------------------------------- */
params [
- ["_veh", objNull, [objNull]],
- ["_p_chem", btc_p_chem, [false]]
+ ["_veh", objNull, [objNull]]
];
if !(isServer) exitWith {
@@ -38,16 +36,19 @@ _veh addMPEventHandler ["MPKilled", {
{_unit getVariable ["btc_killed", true]} // https://feedback.bistudio.com/T149510
) then {
_unit setVariable ["btc_killed", false];
- _this call btc_fnc_eh_veh_killed;
+ _this call btc_fnc_veh_killed;
};
}];
if ((isNumber (configfile >> "CfgVehicles" >> typeOf _veh >> "ace_fastroping_enabled")) && !(typeOf _veh isEqualTo "RHS_UH1Y_d")) then {
[_veh] call ace_fastroping_fnc_equipFRIES
};
-
-if (_p_chem) then {
- _veh addEventHandler ["GetIn", {
- [_this select 0, _this select 2] call btc_fnc_chem_propagate;
- _this
- }];
+if (btc_p_respawn_location > 1) then {
+ if !(fullCrew [_veh, "cargo", true] isEqualTo []) then {
+ if (
+ (btc_p_respawn_location isEqualTo 2) && (_veh isKindOf "Air") ||
+ btc_p_respawn_location > 2
+ ) then {
+ [_veh, "Deleted", {_thisArgs call BIS_fnc_removeRespawnPosition}, [btc_player_side, _veh] call BIS_fnc_addRespawnPosition] call CBA_fnc_addBISEventHandler;
+ };
+ };
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/autoRestart.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/autoRestart.sqf
new file mode 100644
index 000000000..b751ed506
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/autoRestart.sqf
@@ -0,0 +1,43 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_db_autoRestart
+
+Description:
+ Save or not and restart/shutdown server.
+
+Parameters:
+ _p_autoRestart - 0: "Off", 1: "Restart", 2: "Shutdown", 3: "Save and restart", 4: "Save and shutdown". [Number]
+ _serverCommandPassword - Password defined in server.cfg. [String]
+
+Returns:
+
+Examples:
+ (begin example)
+ [4] call btc_fnc_db_autoRestart;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_p_autoRestart", btc_p_db_autoRestart, [0]],
+ ["_serverCommandPassword", btc_db_serverCommandPassword, ""]
+];
+
+if (_p_autoRestart isEqualTo 0) exitWith {};
+
+private _serverCommand = if (_p_autoRestart in [1, 3]) then {
+ "#restartserver"
+} else {
+ "#shutdown"
+};
+
+if (_p_autoRestart > 2) then {
+ [] call btc_fnc_db_save;
+};
+
+if !(_serverCommandPassword serverCommand _serverCommand) then {
+ ["Invalid password", __FILE__, [true, true, true]] call btc_fnc_debug_message;
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/autosave.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/autosave.sqf
deleted file mode 100644
index 8256a556c..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/autosave.sqf
+++ /dev/null
@@ -1,31 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_db_autosave
-
-Description:
- Save game when all players disconnected.
-
-Parameters:
-
-Returns:
- _this - Passed arguments. [Array]
-
-Examples:
- (begin example)
- [] call btc_fnc_db_autosave;
- (end)
-
-Author:
- Vdauphin
-
----------------------------------------------------------------------------- */
-
-if ((allPlayers - entities "HeadlessClient_F") isEqualTo []) then {
- removeMissionEventHandler ["HandleDisconnect", _thisEventHandler];
- [] spawn {
- [] call btc_fnc_db_save;
- addMissionEventHandler ["HandleDisconnect", btc_fnc_db_autosave];
- };
-};
-
-_this
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/delete.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/delete.sqf
index 47125bbe0..f24090f01 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/delete.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/delete.sqf
@@ -36,6 +36,7 @@ profileNamespace setVariable [format ["btc_hm_%1_rep", _name], nil];
profileNamespace setVariable [format ["btc_hm_%1_fobs", _name], nil];
profileNamespace setVariable [format ["btc_hm_%1_vehs", _name], nil];
profileNamespace setVariable [format ["btc_hm_%1_objs", _name], nil];
+profileNamespace setVariable [format ["btc_hm_%1_tags", _name], nil];
profileNamespace setVariable [format ["btc_hm_%1_markers", _name], nil];
profileNamespace setVariable [format ["btc_hm_%1_db", _name], nil];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load.sqf
index c6452c6ed..288d360d0 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load.sqf
@@ -24,13 +24,16 @@ params [
["_name", worldName, [""]]
];
-setDate (profileNamespace getVariable [format ["btc_hm_%1_date", _name], date]);
+setDate +(profileNamespace getVariable [format ["btc_hm_%1_date", _name], date]);
//CITIES
-private _cities_status = profileNamespace getVariable [format ["btc_hm_%1_cities", _name], []];
+private _cities_status = +(profileNamespace getVariable [format ["btc_hm_%1_cities", _name], []]);
{
- _x params ["_id", "_initialized", "_spawn_more", "_occupied", "_data_units", "_has_ho", "_ho_units_spawned", "_ieds", "_has_suicider"];
+ _x params ["_id", "_initialized", "_spawn_more", "_occupied", "_data_units", "_has_ho", "_ho_units_spawned", "_ieds", "_has_suicider",
+ ["_data_animals", [], [[]]],
+ ["_data_tags", [], [[]]]
+ ];
private _city = btc_city_all select _id;
@@ -42,6 +45,8 @@ private _cities_status = profileNamespace getVariable [format ["btc_hm_%1_cities
_city setVariable ["ho_units_spawned", _ho_units_spawned];
_city setVariable ["ieds", _ieds];
_city setVariable ["has_suicider", _has_suicider];
+ _city setVariable ["data_animals", _data_animals];
+ _city setVariable ["data_tags", _data_tags];
if (btc_debug) then {
private _marker = _city getVariable ["marker", ""];
@@ -59,7 +64,7 @@ private _cities_status = profileNamespace getVariable [format ["btc_hm_%1_cities
} forEach _cities_status;
//HIDEOUT
-private _array_ho = profileNamespace getVariable [format ["btc_hm_%1_ho", _name], []];
+private _array_ho = +(profileNamespace getVariable [format ["btc_hm_%1_ho", _name], []]);
{
_x call btc_fnc_mil_create_hideout;
@@ -76,22 +81,27 @@ if (_select_ho isEqualTo - 1) then {
if (btc_hideouts isEqualTo []) then {[] spawn btc_fnc_final_phase;};
//CACHE
-private _array_cache = profileNamespace getVariable [format ["btc_hm_%1_cache", _name], []];
+private _array_cache = +(profileNamespace getVariable [format ["btc_hm_%1_cache", _name], []]);
+_array_cache params ["_cache_pos", "_cache_n", "_cache_info", "_cache_markers", "_cache_pictures",
+ ["_isChem", false, [true]],
+ ["_cache_unitsSpawned", false, [true]]
+];
-btc_cache_pos = _array_cache select 0;
-btc_cache_n = _array_cache select 1;
-btc_cache_info = _array_cache select 2;
+btc_cache_pos = _cache_pos;
+btc_cache_n = _cache_n;
+btc_cache_info = _cache_info;
-[] call btc_fnc_cache_create;
+[_cache_pos, btc_p_chem, [1, 0] select _isChem] call btc_fnc_cache_create;
+btc_cache_obj setVariable ["btc_cache_unitsSpawned", _cache_unitsSpawned];
btc_cache_markers = [];
{
_x params ["_pos", "_marker_name"];
[_pos, 0, _marker_name] call btc_fnc_info_cacheMarker;
-} forEach (_array_cache select 3);
+} forEach _cache_markers;
-btc_cache_pictures = +(_array_cache select 4);
+btc_cache_pictures = _cache_pictures;
{
(btc_cache_pictures select 2) pushBack ([
_x,
@@ -101,7 +111,7 @@ btc_cache_pictures = +(_array_cache select 4);
} forEach (btc_cache_pictures select 0);
//FOB
-private _fobs = profileNamespace getVariable [format ["btc_hm_%1_fobs", _name], []];
+private _fobs = +(profileNamespace getVariable [format ["btc_hm_%1_fobs", _name], []]);
{
_x params ["_fob_name", "_pos", ["_direction", 0, [0]]];
@@ -110,18 +120,22 @@ private _fobs = profileNamespace getVariable [format ["btc_hm_%1_fobs", _name],
} forEach _fobs;
//REP
-private _global_reputation = profileNamespace getVariable [format ["btc_hm_%1_rep", _name], 0];
+btc_global_reputation = profileNamespace getVariable [format ["btc_hm_%1_rep", _name], 0];
-//VEHICLES
+//Objects
{deleteVehicle _x} forEach btc_vehicles;
btc_vehicles = [];
-private _vehs = profileNamespace getVariable [format ["btc_hm_%1_vehs", _name], []];
-[{
- params ["_vehs", "_global_reputation"];
+private _objs = +(profileNamespace getVariable [format ["btc_hm_%1_objs", _name], []]);
+{
+ [_x] call btc_fnc_db_loadObjectStatus;
+} forEach _objs;
- {
- _x params [
+//VEHICLES
+private _vehs = +(profileNamespace getVariable [format ["btc_hm_%1_vehs", _name], []]);
+[{ // Can't be executed just after because we can't delete and spawn vehicle during the same frame.
+ private _loadVehicle = {
+ params [
"_veh_type",
"_veh_pos",
"_veh_dir",
@@ -135,46 +149,70 @@ private _vehs = profileNamespace getVariable [format ["btc_hm_%1_vehs", _name],
["_fuelSource", [], [[]]],
["_pylons", [], [[]]],
["_isContaminated", false, [false]],
- ["_supplyVehicle", [], [[]]]
+ ["_supplyVehicle", [], [[]]],
+ ["_EDENinventory", [], [[]]],
+ ["_vectorPos", [], [[]]],
+ ["_ViV", [], [[]]]
];
if (btc_debug_log) then {
[format ["_veh = %1", _x], __FILE__, [false]] call btc_fnc_debug_message;
};
- private _veh = [_veh_type, _veh_pos, _veh_dir, _customization, _isMedicalVehicle, _isRepairVehicle, _fuelSource, _pylons, _isContaminated, _supplyVehicle] call btc_fnc_log_createVehicle;
- if ((getPos _veh) select 2 < 0) then {_veh setVectorUp surfaceNormal position _veh;};
+ private _veh = [_veh_type, _veh_pos, _veh_dir, _customization, _isMedicalVehicle, _isRepairVehicle, _fuelSource, _pylons, _isContaminated, _supplyVehicle, _EDENinventory, _veh_AllHitPointsDamage] call btc_fnc_log_createVehicle;
+ _veh setVectorDirAndUp _vectorPos;
_veh setFuel _veh_fuel;
[_veh, _veh_cargo, _veh_cont] call btc_fnc_db_loadCargo;
- //Disable explosion effect during database loading
- {
- [_veh, _forEachindex, _x, false] call ace_repair_fnc_setHitPointDamage;
- } forEach (_veh_AllHitPointsDamage select 2);
- if ((_veh_AllHitPointsDamage select 2) select {_x < 1} isEqualTo []) then {
- _veh setVariable ["ace_cookoff_enable", false, true];
- _veh setVariable ["ace_cookoff_enableAmmoCookoff", false, true];
- _veh setDamage [1, false];
+ if !(alive _veh) then {
+ [_veh, objNull, objNull, false] call btc_fnc_veh_killed;
+ };
+ if !(_ViV isEqualTo []) then {
+ {
+ private _vehToLoad = _x call _loadVehicle;
+ if !([_vehToLoad, _veh] call btc_fnc_tow_ViV) then {
+ _vehToLoad setVehiclePosition [_veh, [], 100, "NONE"];
+ private _marker = _vehToLoad getVariable ["marker", ""];
+ if !(_marker isEqualTo "") then {
+ _marker setMarkerPos _vehToLoad;
+ };
+ };
+ } forEach _ViV;
};
- } forEach _vehs;
- [{
- btc_global_reputation = _this;
- }, _global_reputation, 0.5] call CBA_fnc_waitAndExecute;
-}, [_vehs, _global_reputation], 0.5] call CBA_fnc_waitAndExecute;
-//Objects
-private _objs = profileNamespace getVariable [format ["btc_hm_%1_objs", _name], []];
+ _veh
+ };
+ {
+ _x call _loadVehicle;
+ } forEach _this;
+}, _vehs] call CBA_fnc_execNextFrame;
+
+//Player Tags
+private _tags_properties = +(profileNamespace getVariable [format ["btc_hm_%1_tags", _name], []]);
+private _id = ["ace_tagCreated", {
+ params ["_tag", "_texture", "_object"];
+ btc_tags_player pushBack [_tag, _texture, _object];
+}] call CBA_fnc_addEventHandler;
{
- [_x] call btc_fnc_db_loadObjectStatus;
-} forEach _objs;
+ _x params ["_tagPosASL", "_vectorDirAndUp", "_texture", "_typeObject", "_tagModel"];
+ private _object = objNull;
+ if !(_typeObject isEqualTo "") then {
+ _object = nearestObject [ASLToATL _tagPosASL, _typeObject];
+ };
+ [_tagPosASL, _vectorDirAndUp, _texture, _object, objNull, "",_tagModel] call ace_tagging_fnc_createTag;
+} forEach _tags_properties;
+["ace_tagCreated", _id] call CBA_fnc_removeEventHandler;
//Player Markers
-private _markers_properties = profileNamespace getVariable [format ["btc_hm_%1_markers", _name], []];
+private _markers_properties = +(profileNamespace getVariable [format ["btc_hm_%1_markers", _name], []]);
{
- _x params ["_markerText", "_markerPos", "_markerColor", "_markerType", "_markerSize", "_markerAlpha", "_markerBrush", "_markerDir", "_markerShape"];
+ _x params ["_markerText", "_markerPos", "_markerColor", "_markerType", "_markerSize", "_markerAlpha", "_markerBrush", "_markerDir", "_markerShape",
+ ["_markerPolyline", [], [[]]],
+ ["_markerChannel", 0, [0]]
+ ];
- private _marker = createMarker [format ["_USER_DEFINED #0/%1/0", _forEachindex], _markerPos];
+ private _marker = createMarker [format ["_USER_DEFINED #0/%1/%2", _forEachindex, _markerChannel], _markerPos, _markerChannel];
_marker setMarkerText _markerText;
_marker setMarkerColor _markerColor;
_marker setMarkerType _markerType;
@@ -183,4 +221,7 @@ private _markers_properties = profileNamespace getVariable [format ["btc_hm_%1_m
_marker setMarkerBrush _markerBrush;
_marker setMarkerDir _markerDir;
_marker setMarkerShape _markerShape;
+ if !(_markerPolyline isEqualTo []) then {
+ _marker setMarkerPolyline _markerPolyline;
+ };
} forEach _markers_properties;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/loadObjectStatus.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/loadObjectStatus.sqf
index 41e9ce43d..a4fb42f72 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/loadObjectStatus.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/loadObjectStatus.sqf
@@ -23,7 +23,8 @@ Author:
params [
["_object_data", [], [[]]]
];
-_object_data params ["_type",
+_object_data params [
+ "_type",
"_posWorld",
"_dir",
"_magClass",
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load_old.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load_old.sqf
index 994309aee..9acd4968b 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load_old.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load_old.sqf
@@ -29,29 +29,13 @@ setDate (profileNamespace getVariable [format ["btc_hm_%1_date", _name], date]);
//CITIES
private _cities_status = profileNamespace getVariable [format ["btc_hm_%1_cities", _name], []];
-private _cities = ["NameVillage", "NameCity", "NameCityCapital", "NameLocal", "Hill", "Airport"];
-if (btc_p_sea) then {_cities pushBack "NameMarine";};
-private _locations = configfile >> "cfgworlds" >> worldname >> "names";
-private _oldID_to_newID = [];
-// Get ID from the old system
-for "_id" from 0 to (count _locations - 1) do {
- private _current = _locations select _id;
- private _type = getText (_current >> "type");
-
- if (_type in _cities) then {
- _oldID_to_newID pushBack _id;
- };
-};
-private _size = count _locations;
-{
- _oldID_to_newID pushBack (_forEachindex + _size);
-} forEach btc_custom_loc;
-
{
- _x params ["_id", "_initialized", "_spawn_more", "_occupied", "_data_units", "_has_ho", "_ho_units_spawned", "_ieds", "_has_suicider"];
+ _x params ["_id", "_initialized", "_spawn_more", "_occupied", "_data_units", "_has_ho", "_ho_units_spawned", "_ieds", "_has_suicider",
+ ["_data_animals", [], [[]]],
+ ["_data_tags", [], [[]]]
+ ];
-
- private _city = btc_city_all select (_oldID_to_newID select _id);
+ private _city = btc_city_all select _id;
_city setVariable ["initialized", _initialized];
_city setVariable ["spawn_more", _spawn_more];
@@ -61,14 +45,17 @@ private _size = count _locations;
_city setVariable ["ho_units_spawned", _ho_units_spawned];
_city setVariable ["ieds", _ieds];
_city setVariable ["has_suicider", _has_suicider];
+ _city setVariable ["data_animals", _data_animals];
+ _city setVariable ["data_tags", _data_tags];
if (btc_debug) then {
+ private _marker = _city getVariable ["marker", ""];
if (_city getVariable ["occupied", false]) then {
- (_city getVariable ["marker", ""]) setMarkerColor "colorRed";
+ _marker setMarkerColor "colorRed";
} else {
- (_city getVariable ["marker", ""]) setMarkerColor "colorGreen";
+ _marker setMarkerColor "colorGreen";
};
- (_city getVariable ["marker", ""]) setMarkerText format ["loc_%3 %1 %2 - [%4]", _city getVariable "name", _city getVariable "type", _id, _occupied];
+ _marker setMarkerText format ["loc_%3 %1 %2 - [%4]", _city getVariable "name", _city getVariable "type", _id, _occupied];
};
if (btc_debug_log) then {
[format ["ID: %1 - IsOccupied %2", _id, _occupied], __FILE__, [false]] call btc_fnc_debug_message;
@@ -80,8 +67,6 @@ private _size = count _locations;
private _array_ho = profileNamespace getVariable [format ["btc_hm_%1_ho", _name], []];
{
- private _id = _x select 4;
- _x set [4, _oldID_to_newID select _id];
_x call btc_fnc_mil_create_hideout;
} forEach _array_ho;
@@ -96,28 +81,30 @@ if (_select_ho isEqualTo - 1) then {
if (btc_hideouts isEqualTo []) then {[] spawn btc_fnc_final_phase;};
//CACHE
-btc_cache_markers = [];
-btc_cache_pictures = [[], [], []];
-
private _array_cache = profileNamespace getVariable [format ["btc_hm_%1_cache", _name], []];
btc_cache_pos = _array_cache select 0;
btc_cache_n = _array_cache select 1;
btc_cache_info = _array_cache select 2;
-call btc_fnc_cache_create;
+[] call btc_fnc_cache_create;
+btc_cache_markers = [];
{
_x params ["_pos", "_marker_name"];
- private _marker = createMarker [format ["%1", _pos], _pos];
- _marker setMarkerType "hd_unknown";
- _marker setMarkerText _marker_name;
- _marker setMarkerSize [0.5, 0.5];
- _marker setMarkerColor "ColorRed";
- btc_cache_markers pushBack _marker;
+ [_pos, 0, _marker_name] call btc_fnc_info_cacheMarker;
} forEach (_array_cache select 3);
+btc_cache_pictures = +(_array_cache select 4);
+{
+ (btc_cache_pictures select 2) pushBack ([
+ _x,
+ btc_cache_n,
+ btc_cache_pictures select 1 select _forEachindex
+ ] remoteExecCall ["btc_fnc_info_cachePicture", [0, -2] select isDedicated, true]);
+} forEach (btc_cache_pictures select 0);
+
//FOB
private _fobs = profileNamespace getVariable [format ["btc_hm_%1_fobs", _name], []];
@@ -125,46 +112,52 @@ private _fobs = profileNamespace getVariable [format ["btc_hm_%1_fobs", _name],
_x params ["_fob_name", "_pos", ["_direction", 0, [0]]];
[_pos, _direction, _fob_name] call btc_fnc_fob_create_s;
-} forEach (_fobs select 0);
+} forEach _fobs;
//REP
-private _global_reputation = profileNamespace getVariable [format ["btc_hm_%1_rep", _name], 0];
+btc_global_reputation = profileNamespace getVariable [format ["btc_hm_%1_rep", _name], 0];
//VEHICLES
{deleteVehicle _x} forEach btc_vehicles;
btc_vehicles = [];
private _vehs = profileNamespace getVariable [format ["btc_hm_%1_vehs", _name], []];
-[{
- params ["_vehs", "_global_reputation"];
-
+[{ // Can't be executed just after because we can't delete and spawn vehicle during the same frame.
{
- _x params ["_veh_type", "_veh_pos", "_veh_dir", "_veh_fuel", "_veh_AllHitPointsDamage", "_veh_cargo", "_veh_cont", "_customization"];
+ _x params [
+ "_veh_type",
+ "_veh_pos",
+ "_veh_dir",
+ "_veh_fuel",
+ "_veh_AllHitPointsDamage",
+ "_veh_cargo",
+ "_veh_cont",
+ "_customization",
+ ["_isMedicalVehicle", false, [false]],
+ ["_isRepairVehicle", false, [false]],
+ ["_fuelSource", [], [[]]],
+ ["_pylons", [], [[]]],
+ ["_isContaminated", false, [false]],
+ ["_supplyVehicle", [], [[]]],
+ ["_EDENinventory", [], [[]]],
+ ["_vectorPos", [], [[]]]
+ ];
if (btc_debug_log) then {
[format ["_veh = %1", _x], __FILE__, [false]] call btc_fnc_debug_message;
};
- private _veh = [_veh_type, _veh_pos, _veh_dir, _customization] call btc_fnc_log_createVehicle;
+ private _veh = [_veh_type, _veh_pos, _veh_dir, _customization, _isMedicalVehicle, _isRepairVehicle, _fuelSource, _pylons, _isContaminated, _supplyVehicle, _EDENinventory, _veh_AllHitPointsDamage] call btc_fnc_log_createVehicle;
if ((getPos _veh) select 2 < 0) then {_veh setVectorUp surfaceNormal position _veh;};
_veh setFuel _veh_fuel;
[_veh, _veh_cargo, _veh_cont] call btc_fnc_db_loadCargo;
- //Disable explosion effect during database loading
- {
- [_veh, _forEachindex, _x, false] call ace_repair_fnc_setHitPointDamage;
- } forEach (_veh_AllHitPointsDamage select 2);
- if ((_veh_AllHitPointsDamage select 2) select {_x < 1} isEqualTo []) then {
- _veh setVariable ["ace_cookoff_enable", false, true];
- _veh setVariable ["ace_cookoff_enableAmmoCookoff", false, true];
- _veh setDamage [1, false];
+ if !(alive _veh) then {
+ [_veh, objNull, objNull, false] call btc_fnc_veh_killed;
};
- } forEach _vehs;
- [{
- btc_global_reputation = _this;
- }, _global_reputation, 0.5] call CBA_fnc_waitAndExecute;
-}, [_vehs, _global_reputation], 0.5] call CBA_fnc_waitAndExecute;
+ } forEach _this;
+}, _vehs, 0.5] call CBA_fnc_waitAndExecute;
//Objects
private _objs = profileNamespace getVariable [format ["btc_hm_%1_objs", _name], []];
@@ -172,6 +165,22 @@ private _objs = profileNamespace getVariable [format ["btc_hm_%1_objs", _name],
[_x] call btc_fnc_db_loadObjectStatus;
} forEach _objs;
+//Player Tags
+private _tags_properties = profileNamespace getVariable [format ["btc_hm_%1_tags", _name], []];
+private _id = ["ace_tagCreated", {
+ params ["_tag", "_texture", "_object"];
+ btc_tags_player pushBack [_tag, _texture, _object];
+}] call CBA_fnc_addEventHandler;
+{
+ _x params ["_tagPosASL", "_vectorDirAndUp", "_texture", "_typeObject", "_tagModel"];
+ private _object = objNull;
+ if !(_typeObject isEqualTo "") then {
+ _object = nearestObject [ASLToATL _tagPosASL, _typeObject];
+ };
+ [_tagPosASL, _vectorDirAndUp, _texture, _object, objNull, "",_tagModel] call ace_tagging_fnc_createTag;
+} forEach _tags_properties;
+["ace_tagCreated", _id] call CBA_fnc_removeEventHandler;
+
//Player Markers
private _markers_properties = profileNamespace getVariable [format ["btc_hm_%1_markers", _name], []];
{
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/save.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/save.sqf
index 185dbd6d8..332a7fbad 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/save.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/save.sqf
@@ -12,7 +12,7 @@ Returns:
Examples:
(begin example)
- [] spawn btc_fnc_db_save;
+ [] call btc_fnc_db_save;
(end)
Author:
@@ -30,19 +30,6 @@ if (btc_debug) then {
[8] remoteExecCall ["btc_fnc_show_hint", 0];
-btc_db_is_saving = true;
-
-{
- if (!isNull _x) then {
- private _s = [_forEachIndex] spawn btc_fnc_city_de_activate;
- waitUntil {scriptDone _s};
- };
-} forEach btc_city_all;
-
-if (btc_debug) then {
- ["...2", __FILE__, [btc_debug, false, true]] call btc_fnc_debug_message;
-};
-
[false] call btc_fnc_db_delete;
//Version
@@ -68,13 +55,15 @@ private _cities_status = [];
_city_status pushBack (_x getVariable ["ho_units_spawned", false]);
_city_status pushBack (_x getVariable ["ieds", []]);
_city_status pushBack (_x getVariable ["has_suicider", false]);
+ _city_status pushBack (_x getVariable ["data_animals", []]);
+ _city_status pushBack (_x getVariable ["data_tags", []]);
_cities_status pushBack _city_status;
if (btc_debug_log) then {
[format ["ID %1 - IsOccupied %2", _x getVariable "id", _x getVariable "occupied"], __FILE__, [false]] call btc_fnc_debug_message;
};
} forEach (btc_city_all select {!(isNull _x)});
-profileNamespace setVariable [format ["btc_hm_%1_cities", _name], _cities_status];
+profileNamespace setVariable [format ["btc_hm_%1_cities", _name], +_cities_status];
//HIDEOUT
private _array_ho = [];
@@ -100,10 +89,14 @@ private _array_ho = [];
};
_array_ho pushBack _data;
} forEach btc_hideouts;
-profileNamespace setVariable [format ["btc_hm_%1_ho", _name], _array_ho];
+profileNamespace setVariable [format ["btc_hm_%1_ho", _name], +_array_ho];
profileNamespace setVariable [format ["btc_hm_%1_ho_sel", _name], btc_hq getVariable ["id", 0]];
+if (btc_debug) then {
+ ["...2", __FILE__, [btc_debug, false, true]] call btc_fnc_debug_message;
+};
+
//CACHE
private _array_cache = [];
_array_cache pushBack (getPosATL btc_cache_obj);
@@ -118,6 +111,8 @@ private _cache_markers = [];
} forEach btc_cache_markers;
_array_cache pushBack _cache_markers;
_array_cache pushBack [btc_cache_pictures select 0, btc_cache_pictures select 1, []];
+_array_cache pushBack (btc_cache_obj in btc_chem_contaminated);
+_array_cache pushBack (btc_cache_obj getVariable ["btc_cache_unitsSpawned", false]);
profileNamespace setVariable [format ["btc_hm_%1_cache", _name], +_array_cache];
//REPUTATION
@@ -132,10 +127,16 @@ private _fobs = [];
_fobs pushBack [markerText _x, _pos, _direction];
};
} forEach (btc_fobs select 0);
-profileNamespace setVariable [format ["btc_hm_%1_fobs", _name], _fobs];
+profileNamespace setVariable [format ["btc_hm_%1_fobs", _name], +_fobs];
//Vehicles status
private _array_veh = [];
+private _vehicles = btc_vehicles - [objNull];
+private _vehiclesNotInCargo = _vehicles select {
+ isNull isVehicleCargo _x &&
+ {isNull isVehicleCargo attachedTo _x}
+};
+private _vehiclesInCargo = _vehicles - _vehiclesNotInCargo;
{
private _data = [];
_data pushBack (typeOf _x);
@@ -155,12 +156,31 @@ private _array_veh = [];
private _cont = [getWeaponCargo _x, getMagazineCargo _x, getItemCargo _x];
_data pushBack _cont;
_data append ([_x] call btc_fnc_getVehProperties);
- _array_veh pushBack _data;
+ _data pushBack (_x getVariable ["btc_EDENinventory", []]);
+ _data pushBack ([vectorDir _x, vectorUp _x]);
+ _data pushBack []; // ViV
+
+ private _fakeViV = isVehicleCargo attachedTo _x;
+ if (
+ isNull _fakeViV &&
+ {isNull isVehicleCargo _x}
+ ) then {
+ _array_veh pushBack _data;
+ } else {
+ private _vehicleCargo = if (isNull _fakeViV) then {
+ isVehicleCargo _x
+ } else {
+ _fakeViV
+ };
+ private _index = _vehiclesNotInCargo find _vehicleCargo;
+ ((_array_veh select _index) select 16) pushBack _data;
+ };
+
if (btc_debug_log) then {
[format ["VEH %1 DATA %2", _x, _data], __FILE__, [false]] call btc_fnc_debug_message;
};
-} forEach (btc_vehicles - [objNull]);
-profileNamespace setVariable [format ["btc_hm_%1_vehs", _name], _array_veh];
+} forEach (_vehiclesNotInCargo + _vehiclesInCargo);
+profileNamespace setVariable [format ["btc_hm_%1_vehs", _name], +_array_veh];
//Objects status
private _array_obj = [];
@@ -174,14 +194,28 @@ private _array_obj = [];
isNull objectParent _x &&
isNull isVehicleCargo _x
});
-profileNamespace setVariable [format ["btc_hm_%1_objs", _name], _array_obj];
+profileNamespace setVariable [format ["btc_hm_%1_objs", _name], +_array_obj];
+
+//Player Tags
+private _tags = btc_tags_player select {alive (_x select 0)};
+private _tags_properties = _tags apply {
+ private _tag = _x select 0;
+ [
+ getPosASL _tag,
+ [vectorDir _tag, vectorUp _tag],
+ _x select 1,
+ typeOf (_x select 2),
+ typeOf _tag
+ ]
+};
+profileNamespace setVariable [format ["btc_hm_%1_tags", _name], +_tags_properties];
//Player Markers
-private _player_markers = allMapMarkers select {(_x select [0, 15]) isEqualTo "_USER_DEFINED #"};
+private _player_markers = allMapMarkers select {"_USER_DEFINED" in _x};
private _markers_properties = _player_markers apply {
- [markerText _x, markerPos _x, markerColor _x, markerType _x, markerSize _x, markerAlpha _x, markerBrush _x, markerDir _x, markerShape _x]
+ [markerText _x, markerPos _x, markerColor _x, markerType _x, markerSize _x, markerAlpha _x, markerBrush _x, markerDir _x, markerShape _x, markerPolyline _x, markerChannel _x]
};
-profileNamespace setVariable [format ["btc_hm_%1_markers", _name], _markers_properties];
+profileNamespace setVariable [format ["btc_hm_%1_markers", _name], +_markers_properties];
//End
profileNamespace setVariable [format ["btc_hm_%1_db", _name], true];
@@ -190,5 +224,3 @@ if (btc_debug) then {
["...3", __FILE__, [btc_debug, false, true]] call btc_fnc_debug_message;
};
[9] remoteExecCall ["btc_fnc_show_hint", 0];
-
-btc_db_is_saving = false;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/dlg.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/dlg.hpp
index 1a33c6e53..0f6488821 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/dlg.hpp
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/dlg.hpp
@@ -43,7 +43,7 @@ class TER_fpscounter
class TXT_units: RscText
{
idc = 1002;
- text = "UNITS:0 NOT-ON-SERVER:0 | GROUPS:0 | Patrol:0 Traffic:0";
+ text = "DELAY:0s UNITS:0 NOT-ON-SERVER:0 | GROUPS:0 | Patrol:0 Traffic:0";
x = (0.5525 + 0.085) * safezoneW + safezoneX;
y = 0.71 * safezoneH + safezoneY;
w = (0.0590625 + 0.4) * safezoneW;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/graph.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/graph.sqf
index 170b34499..49ddd1719 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/graph.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/graph.sqf
@@ -34,6 +34,6 @@ private _maxFps = 60;
private _maxWidth = ctrlPosition _GRPframes select 2;
private _width = _maxWidth/300;
-[btc_fnc_debug_fps, 0.5, [_display, _maxFps, _maxWidth, _width, _barArray, _GRPframes, _TXTfps]] call CBA_fnc_addPerFrameHandler;
+[btc_fnc_debug_fps, [0.5, 0.1] select (isServer), [_display, _maxFps, _maxWidth, _width, _barArray, _GRPframes, _TXTfps]] call CBA_fnc_addPerFrameHandler;
[btc_fnc_debug_units, 1, [_display, _TXTunits]] call CBA_fnc_addPerFrameHandler;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/marker.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/marker.sqf
index 9e04dd239..2c5a1bd7f 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/marker.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/marker.sqf
@@ -68,3 +68,20 @@ private _cfgVehicles = configFile >> "CfgVehicles";
0.05
];
} forEach _units;
+
+{
+ private _agent = agent _x;
+ if !(isNull _agent) then {
+ _display drawIcon [
+ getText (_cfgVehicles >> typeOf _agent >> "Icon"),
+ [0.5, 0.5, 0.5, [1, 0.3] select (local _agent)],
+ visiblePosition _agent,
+ 20,
+ 20,
+ direction _agent,
+ "",
+ 0,
+ 0.05
+ ];
+ };
+} forEach agents;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/units.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/units.sqf
index 81f81dd4b..d03606344 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/units.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/debug/units.sqf
@@ -35,7 +35,8 @@ if (isNull _display || !btc_debug_graph) exitWith {
[10, objNull, "btc_units_owners"] remoteExecCall ["btc_fnc_int_ask_var", 2];
["btc_patrol_active", objNull, "btc_patrol_active"] remoteExecCall ["btc_fnc_int_ask_var", 2];
["btc_civ_veh_active", objNull, "btc_civ_veh_active"] remoteExecCall ["btc_fnc_int_ask_var", 2];
+["btc_delay_createUnit", objNull, "btc_delay_createUnitDebug"] remoteExecCall ["btc_fnc_int_ask_var", 2];
private _count_units = {(_x select 0) isKindOf "man"} count btc_units_owners;
private _count_units_own = {((_x select 1) isEqualTo 2) && ((_x select 0) isKindOf "man")} count btc_units_owners;
-_TXTunits ctrlSetText format ["UNITS:%1 NOT-ON-SERVER:%2 | GROUPS:%3 | Patrol:%4 Traffic:%5", _count_units, _count_units - _count_units_own, count allGroups, count btc_patrol_active, count btc_civ_veh_active];
+_TXTunits ctrlSetText format ["DELAY:%1s UNITS:%2 NOT-ON-SERVER:%3 | GROUPS:%4 | Patrol:%5 Traffic:%6", [btc_delay_createUnitDebug, 0] select (btc_delay_createUnitDebug < 0.001), _count_units, _count_units - _count_units_own, count allGroups, count btc_patrol_active, count btc_civ_veh_active];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/createAgent.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/createAgent.sqf
new file mode 100644
index 000000000..c5cb1f128
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/createAgent.sqf
@@ -0,0 +1,39 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_delay_createAgent
+
+Description:
+ Create agent when all previous agents have been created. btc_delay_createagent define the time (in second) when the agent will be created.
+
+Parameters:
+ _agentType - Type of agents to create. [Array]
+ _pos - Position of creation. [Array]
+ _special - Agent placement special. [String]
+ _city - City where the animal is created. [Object]
+
+Returns:
+
+Examples:
+ (begin example)
+ ["Sheep_random_F", getPosATL player] call btc_fnc_delay_createAgent;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+btc_delay_createUnit = btc_delay_createUnit + 0.1;
+
+[{
+ params [
+ ["_agentType", "", [""]],
+ ["_pos", [0, 0, 0], [[]]],
+ ["_special", "CAN_COLLIDE", [""]],
+ ["_city", objNull, [objNull]]
+ ];
+
+ (createAgent [_agentType, _pos, [], 0, _special]) setVariable ["btc_city", _city];
+
+ btc_delay_createUnit = btc_delay_createUnit - 0.1;
+}, _this, btc_delay_createUnit - 0.01] call CBA_fnc_waitAndExecute;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/createUnit.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/createUnit.sqf
new file mode 100644
index 000000000..6abf1514e
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/createUnit.sqf
@@ -0,0 +1,51 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_delay_createUnit
+
+Description:
+ Create unit when all previous units have been created. btc_delay_createUnit define the time (in second) when the unit will be created.
+
+Parameters:
+ _group - Group to add unit. [Group]
+ _unit_type - Type of units to create. [Array]
+ _pos - Position of creation. [Array]
+ _special - Unit placement special. [String]
+ _vehicle - Vehicle where unit can be load in. [Object]
+
+Returns:
+
+Examples:
+ (begin example)
+ [createGroup (side player), typeOf player, getPosATL player] call btc_fnc_delay_createUnit;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+btc_delay_createUnit = btc_delay_createUnit + 0.3;
+
+[{
+ params [
+ ["_group", grpNull, [grpNull]],
+ ["_unit_type", "", [""]],
+ ["_pos", [0, 0, 0], [[]]],
+ ["_special", "CARGO", [""]],
+ ["_vehicle", objNull, [objNull]]
+ ];
+
+ if (isNull _group) exitWith {
+ [format ["isNull _group _this = %1", _this], __FILE__, [btc_debug, btc_debug_log, true]] call btc_fnc_debug_message;
+ btc_delay_createUnit = btc_delay_createUnit - 0.3;
+ };
+
+ private _unit = _group createUnit [_unit_type, _pos, [], 0, _special];
+ [_unit] joinSilent _group;
+
+ if (!isNull _vehicle) then {
+ _unit moveInAny _vehicle;
+ };
+
+ btc_delay_createUnit = btc_delay_createUnit - 0.3;
+}, _this, btc_delay_createUnit - 0.01] call CBA_fnc_waitAndExecute;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/createVehicle.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/createVehicle.sqf
new file mode 100644
index 000000000..455b67ec5
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/createVehicle.sqf
@@ -0,0 +1,89 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_delay_createVehicle
+
+Description:
+ Create vehicle and crew when all previous units have been created. btc_delay_createUnit define the time (in second) when the vehicle and crew will be created.
+
+Parameters:
+ _group - Group to store crews. [Group]
+ _vehicle_type - Vehicle type. [String]
+ _units_type - Array of unit type will be use to fill the vehicle. [Array]
+ _position - Position of creation. [Array]
+ _direction - Direction of spawn. [Number]
+ _fuel - Fuel level. [Array]
+ _surfaceNormal - Surface normal. [Array]
+
+Returns:
+ _delay_vehicle - Delay for unit creation. [Number]
+
+Examples:
+ (begin example)
+ [createGroup (side player), "O_G_Van_01_transport_F", (btc_type_units + btc_type_units) select [0, ["O_G_Van_01_transport_F",true] call BIS_fnc_crewCount], player getPos [10, direction player]] call btc_fnc_delay_createVehicle;
+ [createGroup (side player), "B_Heli_Transport_01_camo_F", (btc_type_units + btc_type_units) select [0, ["B_Heli_Transport_01_camo_F",true] call BIS_fnc_crewCount], player getPos [10, direction player]] call btc_fnc_delay_createVehicle;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+btc_delay_createUnit = btc_delay_createUnit + 0.3;
+
+[{
+ params [
+ ["_group", grpNull, [grpNull]],
+ ["_vehicle_type", "", [""]],
+ ["_units_type", [], [[]]],
+ ["_position", [0, 0, 0], [[]]],
+ ["_direction", 0, [0]],
+ ["_fuel", 1, [0]],
+ ["_surfaceNormal", [], [[]]]
+ ];
+
+ private _isAir = _vehicle_type isKindOf "Air";
+ private _veh = createVehicle [_vehicle_type, _position, [], 0, ["CAN_COLLIDE", "FLY"] select _isAir];
+ if !(_isAir) then {
+ _veh setDir _direction;
+ if (_surfaceNormal isEqualTo []) then {
+ _surfaceNormal = surfaceNormal position _veh;
+ };
+ _veh setVectorUp _surfaceNormal;
+ };
+ _veh setFuel _fuel;
+ [_veh, "", []] call BIS_fnc_initvehicle;
+
+ ["driver", "commander", "gunner", "turret", "cargo"] apply {count (fullCrew [_veh, _x, true]);} params ["_driverCount", "_commanderCount", "_gunnerCount", "_turretCount", "_cargoCount"];
+ private _crews = _driverCount + _commanderCount + _gunnerCount;
+ private _numberOfUnits = count _units_type;
+ for "_i" from 0 to ((_crews min _numberOfUnits) - 1) do {
+ private _unit = _group createUnit [_units_type select _i, _position, [], 0, "CAN_COLLIDE"];
+
+ if (_veh emptyPositions "driver" > 0) then {
+ _unit moveinDriver _veh;
+ _unit assignAsDriver _veh;
+ } else {
+ if (_veh emptyPositions "gunner" > 0) then {
+ _unit moveinGunner _veh;
+ _unit assignAsGunner _veh;
+ } else {
+ if (_veh emptyPositions "commander" > 0) then {
+ _unit moveinCommander _veh;
+ _unit assignAsCommander _veh;
+ };
+ };
+ };
+ };
+ _group selectLeader (driver _veh);
+ (units _group) joinSilent _group;
+
+ private _crews_and_turret = _crews + _turretCount + _cargoCount;
+ for "_i" from _crews to ((_crews_and_turret min _numberOfUnits) - 1) do {
+ [_group, _units_type select _i, _position, "CAN_COLLIDE", _veh] call btc_fnc_delay_createUnit;
+ };
+
+ ["btc_delay_vehicleInit", [_veh, _group]] call CBA_fnc_localEvent;
+ btc_delay_createUnit = btc_delay_createUnit - 0.3;
+}, _this, btc_delay_createUnit - 0.01] call CBA_fnc_waitAndExecute;
+
+count (_this select 2) * 0.3
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/exec.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/exec.sqf
new file mode 100644
index 000000000..96951854e
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/delay/exec.sqf
@@ -0,0 +1,35 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_delay_exec
+
+Description:
+ Execute a function when all previous units have been created.
+
+Parameters:
+ _parameters - Parameters to the function. [Array]
+ _code - Code to execute. [Code]
+
+Returns:
+
+Examples:
+ (begin example)
+ [[btc_city_all select 0, 100], btc_fnc_ied_drone_create] call btc_fnc_delay_exec;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+btc_delay_createUnit = btc_delay_createUnit + 0.2;
+
+[{
+ params [
+ "_parameters",
+ ["_code", {}, [{}]]
+ ];
+
+ _parameters call _code;
+
+ btc_delay_createUnit = btc_delay_createUnit - 0.2;
+}, _this, btc_delay_createUnit - 0.01] call CBA_fnc_waitAndExecute;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/CuratorObjectPlaced.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/CuratorObjectPlaced.sqf
index 6fde74860..75712bd9f 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/CuratorObjectPlaced.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/CuratorObjectPlaced.sqf
@@ -27,7 +27,7 @@ params [
];
if !((_object_placed isKindOf "AllVehicles") || (_object_placed isKindOf "Module_F")) then {
- [_object_placed] remoteExecCall ["btc_fnc_log_CuratorObjectPlaced_s", 2];
+ [_object_placed] remoteExecCall ["btc_fnc_log_init", 2];
if (btc_debug_log) then {
[format ["OBJECT %1", _object_placed], __FILE__, [false]] call btc_fnc_debug_message;
@@ -36,21 +36,3 @@ if !((_object_placed isKindOf "AllVehicles") || (_object_placed isKindOf "Module
[str _object_placed, __FILE__, [btc_debug, false]] call btc_fnc_debug_message;
};
};
-
-if (_object_placed isKindOf "Man") then {
-
- if (side _object_placed isEqualTo btc_enemy_side) then {
- [_object_placed] remoteExecCall ["btc_fnc_mil_CuratorMilPlaced_s", 2];
- };
-
- if (side _object_placed isEqualTo civilian) then {
- [_object_placed] remoteExecCall ["btc_fnc_civ_CuratorCivPlaced_s", 2];
- };
-
- if (btc_debug_log) then {
- [format ["MAN %1", _object_placed], __FILE__, [false]] call btc_fnc_debug_message;
- };
- if (btc_debug) then {
- [str _object_placed, __FILE__, [btc_debug, false]] call btc_fnc_debug_message;
- };
-};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/functions.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/functions.hpp
index d95847e51..18695f7fb 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/functions.hpp
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/functions.hpp
@@ -1,7 +1,7 @@
class btc {
class misc {
- class eh_veh_init {
- file = "core\fnc\eh\veh_init.sqf";//preInit = 1;
+ class veh_init {
+ file = "core\fnc\veh\init.sqf";//preInit = 1;
};
};
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/handledisconnect.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/handledisconnect.sqf
deleted file mode 100644
index 02985472a..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/handledisconnect.sqf
+++ /dev/null
@@ -1,30 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_eh_handledisconnect
-
-Description:
- Delete headless.
-
-Parameters:
- _headless - Headless object. [Object]
-
-Returns:
-
-Examples:
- (begin example)
- [headless] call btc_fnc_eh_handledisconnect;
- (end)
-
-Author:
- Vdauphin
-
----------------------------------------------------------------------------- */
-
-params [
- ["_headless", objNull, [objNull]]
-];
-
-if (_headless in (entities "HeadlessClient_F")) then {
- //Remove HC player when disconnect
- deleteVehicle _headless;
-};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/headless.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/headless.sqf
new file mode 100644
index 000000000..d10bb8641
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/headless.sqf
@@ -0,0 +1,43 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_eh_headless
+
+Description:
+ Add local events handler to headless client.
+
+Parameters:
+
+Returns:
+
+Examples:
+ (begin example)
+ [] call btc_fnc_eh_headless;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+["Animal", "InitPost", {
+ [(_this select 0), "HandleDamage", btc_fnc_rep_hd] call CBA_fnc_addBISEventHandler;
+}, true, [], true] call CBA_fnc_addClassEventHandler;
+
+{
+ [_x, "InitPost", {
+ [(_this select 0), "Suppressed", btc_fnc_rep_suppressed] call CBA_fnc_addBISEventHandler;
+ [(_this select 0), "HandleDamage", btc_fnc_rep_hd] call CBA_fnc_addBISEventHandler;
+ }, false, [], true] call CBA_fnc_addClassEventHandler;
+} forEach btc_civ_type_units;
+{
+ [_x, "InitPost", {
+ [(_this select 0), "HandleDamage", btc_fnc_rep_hd] call CBA_fnc_addBISEventHandler;
+ }, false, [], true] call CBA_fnc_addClassEventHandler;
+} forEach btc_civ_type_veh;
+
+{
+ [_x, "InitPost", {
+ [(_this select 0), "HandleDamage", btc_fnc_patrol_disabled] call CBA_fnc_addBISEventHandler;
+ }, false, [], true] call CBA_fnc_addClassEventHandler;
+} forEach btc_civ_type_veh;
+
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/persistOnLocalityChange.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/persistOnLocalityChange.sqf
deleted file mode 100644
index eceee0ca4..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/persistOnLocalityChange.sqf
+++ /dev/null
@@ -1,75 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_eh_persistOnLocalityChange
-
-Description:
- Some event handler (EH) are trigger where the unit is local. This add EH to headless or client on locality change. When locality change back to server, the EH is removed from client. EH are always keep on server in case client lost connection.
-
-Parameters:
- _object - Object where to add the event handler. [Object]
- _EH_name - Name of the event handler. [String]
- _EH_fnc - Name of the function executed when the EH is triggered. [Array]
- _params - Params to pass to the event. [Array]
-
-Returns:
- _EH_IDs - Local EH ID and ID of the EH. [Array]
-
-Examples:
- (begin example)
- [cursorObject, "Killed", "btc_fnc_mil_unit_killed"] call btc_fnc_eh_persistOnLocalityChange;
- (end)
-
-Author:
- Vdauphin
-
----------------------------------------------------------------------------- */
-
-params [
- ["_object", objNull, [objNull]],
- ["_EH_name", "", [""]],
- ["_EH_fnc", "", [""]],
- ["_params", [], [[]]]
-];
-
-private _EH_IDs = [
- _object addEventHandler [_EH_name,
- if (_params isEqualTo []) then {
- missionNamespace getVariable [_EH_fnc, {}]
- } else {
- format ["%1 call %2", _params, _EH_fnc]
- }
- ]
-];
-
-if ((toLower _EH_name) in ["killed", "handledamage", "hit"]) then { // Those EH are only trigger where object is local
- _EH_IDs pushBack (
- [_object, "Local", {
- params ["_entity", "_isLocal"];
-
- if !(_isLocal) then {
- _thisArgs params [
- ["_EH_name", "", [""]],
- ["_EH_fnc", "", [""]],
- ["_params", [], [[]]]
- ];
-
- if !(isServer) then { // Keep EH on server in case owner drop connection
- [_entity, _EH_name, _EH_fnc, false] call btc_fnc_eh_removePersistOnLocalityChange;
- } else {
- [_entity, _EH_name, _EH_fnc, _params] remoteExecCall ["btc_fnc_eh_persistOnLocalityChange", _entity];
- };
- };
- }, [_EH_name, _EH_fnc, _params]] call CBA_fnc_addBISEventHandler
- );
-};
-
-if (btc_debug_log) then {
- [format ["%1: EH = %2, fnc = %3, isRE = %4", _object, _EH_name, _EH_fnc, isRemoteExecuted], __FILE__, [false]] call btc_fnc_debug_message;
-};
-
-_object setVariable [
- _EH_fnc + _EH_name,
- _EH_IDs
-];
-
-_EH_IDs
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/player.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/player.sqf
index ef90082b1..9b9132154 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/player.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/player.sqf
@@ -25,40 +25,44 @@ params [
["_player", objNull, [objNull]]
];
-_player addEventHandler ["Respawn", format ["[%1] call btc_fnc_eh_player_respawn", getPosASL player]];
+[_player, "Respawn", {
+ if !(ace_map_mapIllumination) then {ace_map_mapIllumination = btc_map_mapIllumination;};
+}] call CBA_fnc_addBISEventHandler;
+["ace_killed", {
+ params ["_unit"];
+ if !(_unit isEqualTo player) exitWith {};
+ if (ace_map_mapIllumination) then {ace_map_mapIllumination = false;};
+ if (isObjectHidden player) exitWith {};
+ [btc_rep_malus_player_respawn, player] remoteExecCall ["btc_fnc_rep_change", 2];
+}] call CBA_fnc_addEventHandler;
_player addEventHandler ["CuratorObjectPlaced", btc_fnc_eh_CuratorObjectPlaced];
["ace_treatmentSucceded", btc_fnc_rep_treatment] call CBA_fnc_addEventHandler;
_player addEventHandler ["WeaponAssembled", btc_fnc_civ_add_leaflets];
-_player addEventHandler ["WeaponAssembled", {
- params [
- ["_player", objNull, [objNull]],
- ["_rallyPoint", objNull, [objNull]]
- ];
-
- if !(_rallyPoint isKindOf "Camping_base_F") exitWith {_this};
-
- [_rallyPoint] remoteExecCall ["btc_fnc_fob_init", [0, 2] select isDedicated];
-
- _this
+[_player, "WeaponAssembled", {[_thisType, _this] call btc_fnc_fob_rallypointAssemble;}] call CBA_fnc_addBISEventHandler;
+[_player, "WeaponDisassembled", {[_thisType, _this] call btc_fnc_fob_rallypointAssemble;}] call CBA_fnc_addBISEventHandler;
+_player addEventHandler ["GetInMan", {_this call btc_fnc_ied_deleteLoop}];
+_player addEventHandler ["GetOutMan", {
+ if (btc_ied_deleteOn > -1) then {
+ [btc_ied_deleteOn] call CBA_fnc_removePerFrameHandler;
+ btc_ied_deleteOn = -1;
+ };
}];
_player addEventHandler ["WeaponAssembled", {
- params [
- ["_player", objNull, [objNull]],
- ["_static", objNull, [objNull]]
- ];
+ params ["_player", "_static"];
if !(_static isKindOf "StaticWeapon") exitWith {_this};
[_static] remoteExecCall ["btc_fnc_log_init", 2];
}];
["ace_csw_deployWeaponSucceeded", {
- _this remoteExecCall ["btc_fnc_log_init", [0, 2] select isDedicated];
+ _this remoteExecCall ["btc_fnc_log_init", 2];
}] call CBA_fnc_addEventHandler;
+["btc_tow_unwindDone", {(localize "STR_BTC_HAM_TOW_DONE") call CBA_fnc_notify}] call CBA_fnc_addEventHandler;
if (btc_p_chem) then {
// Add biopsy
- [missionnamespace, "probingEnded", btc_fnc_chem_biopsy] call BIS_fnc_addScriptedEventHandler;
+ [missionNamespace, "probingEnded", btc_fnc_chem_biopsy] call BIS_fnc_addScriptedEventHandler;
- // Disable BI shower
+ // Disable BI shower
["DeconShower_01_F", "init", {(_this select 0) setVariable ['bin_deconshower_disableAction', true];}] call CBA_fnc_addClassEventHandler;
["DeconShower_02_F", "init", {(_this select 0) setVariable ['bin_deconshower_disableAction', true];}] call CBA_fnc_addClassEventHandler;
@@ -73,3 +77,20 @@ if (btc_p_spect) then {
[_unit, currentWeapon _unit] call btc_fnc_spect_updateDevice;
}] call CBA_fnc_addPlayerEventHandler;
};
+
+if (btc_p_respawn_arsenal) then {
+ [_player, "Respawn", {
+ params ["_unit", "_corpse"];
+ if (isObjectHidden _corpse) exitWith {};
+ [btc_gear_object, _unit] call ace_arsenal_fnc_openBox;
+ }] call CBA_fnc_addBISEventHandler;
+};
+
+if (btc_p_respawn_location >= 4) then {
+ ["ace_killed", {
+ params ["_unit"];
+ if !(_unit isEqualTo player) exitWith {};
+ private _group = group player;
+ [_group, leader _group] call BIS_fnc_addRespawnPosition;
+ }] call CBA_fnc_addEventHandler;
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/player_respawn.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/player_respawn.sqf
deleted file mode 100644
index 89b061d0c..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/player_respawn.sqf
+++ /dev/null
@@ -1,31 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_eh_player_respawn
-
-Description:
- Change reputation when player respawn and set position for respawn.
-
-Parameters:
- _pos - Respawn position. [Array]
-
-Returns:
-
-Examples:
- (begin example)
- _result = [] call btc_fnc_eh_player_respawn;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_pos", [0, 0, 0], [[]]]
-];
-
-player setPosASL _pos;
-player addRating 9999;
-player setCaptive false;
-
-btc_rep_malus_player_respawn remoteExecCall ["btc_fnc_rep_change", 2];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/removePersistOnLocalityChange.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/removePersistOnLocalityChange.sqf
deleted file mode 100644
index 92785ef14..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/removePersistOnLocalityChange.sqf
+++ /dev/null
@@ -1,56 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_eh_removePersistOnLocalityChange
-
-Description:
- Remove persistant event handler from client owner and server.
-
-Parameters:
- _object - Object where to add the event handler. [Object]
- _EH_name - Name of the event handler. [String]
- _EH_fnc - Name of the function executed when the EH is triggered. [Array]
- _removeServerSide - Also remove the EH on the server. [Boolean]
-
-Returns:
- _EH_IDs - Local EH ID and ID of the EH. [Array]
-
-Examples:
- (begin example)
- [cursorObject, "Killed", "btc_fnc_rep_killed"] call btc_fnc_eh_removePersistOnLocalityChange;
- (end)
-
-Author:
- Vdauphin
-
----------------------------------------------------------------------------- */
-
-params [
- ["_object", objNull, [objNull]],
- ["_EH_name", "", [""]],
- ["_EH_fnc", "", [""]],
- ["_removeServerSide", true, [true]]
-];
-
-private _EH_IDs = _object getVariable [_EH_fnc + _EH_name, []];
-
-if (btc_debug_log) then {
- [format ["%1: EH = %2, fnc = %3, isR = %4, IDs %5", _object, _EH_name, _EH_fnc, isRemoteExecuted, _EH_IDs], __FILE__, [false]] call btc_fnc_debug_message;
-};
-
-if !(_EH_IDs isEqualTo []) then {
- _object removeEventHandler [_EH_name, _EH_IDs select 0];
- if (count _EH_IDs > 1) then {
- _object removeEventHandler ["Local", _EH_IDs select 1];
- };
-
- _object setVariable [
- _EH_fnc + _EH_name,
- nil
- ];
-};
-
-if (!isServer && _removeServerSide) then {
- [_object, _EH_name, _EH_fnc] remoteExecCall ["btc_fnc_eh_removePersistOnLocalityChange", 2];
-};
-
-_EH_IDs
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/server.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/server.sqf
index 46f35957c..8cee5d3ee 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/server.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/server.sqf
@@ -19,18 +19,66 @@ Author:
---------------------------------------------------------------------------- */
-addMissionEventHandler ["HandleDisconnect", btc_fnc_eh_handledisconnect];
addMissionEventHandler ["BuildingChanged", btc_fnc_rep_buildingchanged];
["ace_explosives_defuse", btc_fnc_rep_explosives_defuse] call CBA_fnc_addEventHandler;
+["ace_killed", btc_fnc_rep_killed] call CBA_fnc_addEventHandler;
+["Animal", "InitPost", {
+ [(_this select 0), "HandleDamage", btc_fnc_rep_hd] call CBA_fnc_addBISEventHandler;
+}] call CBA_fnc_addClassEventHandler;
+["Animal", "killed", {
+ params ["_unit", "_killer", "_instigator"];
+ [_unit, "", _killer, _instigator] call btc_fnc_rep_killed;
+}] call CBA_fnc_addClassEventHandler;
+{
+ [_x, "InitPost", {
+ [(_this select 0), "Suppressed", btc_fnc_rep_suppressed] call CBA_fnc_addBISEventHandler;
+ [(_this select 0), "HandleDamage", btc_fnc_rep_hd] call CBA_fnc_addBISEventHandler;
+ }, false] call CBA_fnc_addClassEventHandler;
+} forEach btc_civ_type_units;
+{
+ [_x, "InitPost", {
+ [(_this select 0), "HandleDamage", btc_fnc_rep_hd] call CBA_fnc_addBISEventHandler;
+ }, false] call CBA_fnc_addClassEventHandler;
+} forEach btc_civ_type_veh;
+["ace_killed", btc_fnc_mil_unit_killed] call CBA_fnc_addEventHandler;
+addMissionEventHandler ["HandleDisconnect", {
+ params ["_headless"];
+ if (_headless in (entities "HeadlessClient_F")) then {
+ deleteVehicle _headless;
+ };
+}];
if (btc_p_auto_db) then {
- addMissionEventHandler ["HandleDisconnect", btc_fnc_db_autosave];
+ addMissionEventHandler ["HandleDisconnect", {
+ if ((allPlayers - entities "HeadlessClient_F") isEqualTo []) then {
+ [] call btc_fnc_db_save;
+ };
+ }];
};
if (btc_p_chem) then {
["ace_cargoLoaded", btc_fnc_chem_propagate] call CBA_fnc_addEventHandler;
- ["DeconShower_01_F", "init", {(_this select 0) setVariable ['bin_deconshower_disableAction',true];}] call CBA_fnc_addClassEventHandler;
+ ["AllVehicles", "GetIn", {[_this select 0, _this select 2] call btc_fnc_chem_propagate}] call CBA_fnc_addClassEventHandler;
+ ["DeconShower_01_F", "init", {(_this select 0) setVariable ['bin_deconshower_disableAction',true]}] call CBA_fnc_addClassEventHandler;
["DeconShower_02_F", "init", {(_this select 0) setVariable ['bin_deconshower_disableAction',true]}] call CBA_fnc_addClassEventHandler;
};
["GroundWeaponHolder", "InitPost", {btc_groundWeaponHolder append _this}] call CBA_fnc_addClassEventHandler;
-["acex_fortify_objectPlaced", {[_this select 2] call btc_fnc_log_CuratorObjectPlaced_s}] call CBA_fnc_addEventHandler;
+["acex_fortify_objectPlaced", {[_this select 2] call btc_fnc_log_init}] call CBA_fnc_addEventHandler;
+if (btc_p_set_skill) then {
+ ["CAManBase", "InitPost", btc_fnc_mil_set_skill] call CBA_fnc_addClassEventHandler;
+};
+["btc_delay_vehicleInit", btc_fnc_patrol_addEH] call CBA_fnc_addEventHandler;
+["ace_killed", {
+ params ["_unit"];
+ if (!(side group _unit isEqualTo civilian)) exitWith {};
+ private _vehicle = assignedVehicle _unit;
+ if !(_vehicle isEqualTo objNull) then {
+ [[], [_vehicle]] call btc_fnc_delete;
+ };
+}] call CBA_fnc_addEventHandler;
+{
+ [_x, "InitPost", {
+ [(_this select 0), "HandleDamage", btc_fnc_patrol_disabled] call CBA_fnc_addBISEventHandler;
+ }, false] call CBA_fnc_addClassEventHandler;
+} forEach btc_civ_type_veh;
+["ace_tagCreated", btc_fnc_tag_eh] call CBA_fnc_addEventHandler;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_init.sqf
deleted file mode 100644
index 34f6ed989..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_init.sqf
+++ /dev/null
@@ -1,71 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_eh_veh_init
-
-Description:
- Add custom ACE interaction depends one vehicle type (static weapon, land vehicle, helicopter and ship).
-
-Parameters:
- _type - Type of vehicle to add custom ACE interaction. [String]
-
-Returns:
-
-Examples:
- (begin example)
- ["B_Truck_01_fuel_F"] call btc_fnc_eh_veh_init;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_type", "", [""]]
-];
-
-if (isNil "btc_actions_veh") then {btc_actions_veh = [];};
-if ((btc_actions_veh pushBackUnique _type) isEqualTo -1) exitWith {};
-
-switch true do {
- case (_type isKindOf "UGV_02_Base_F") : {};
- case (_type isKindOf "StaticWeapon") : {
- private _action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["log_tow", localize "STR_BTC_HAM_ACTION_VEHINIT_TOW", "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_tow_ropeCreate;}, {!isNull btc_log_vehicle_selected && {btc_log_vehicle_selected != (_this select 0)} && {[_this select 0, btc_log_vehicle_selected] call btc_fnc_tow_check}}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["log_hook", localize "STR_BTC_HAM_ACTION_VEHINIT_HOOK", "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_tow_hook;}, {true}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["log_hook", localize "STR_BTC_HAM_ACTION_VEHINIT_UHOOK", "\z\ace\addons\attach\UI\detach_ca.paa", {(_this select 0) spawn btc_fnc_tow_unhook;}, {true}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
- };
- case (_type isKindOf "LandVehicle") : {
- private _action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["log_tow", localize "STR_BTC_HAM_ACTION_VEHINIT_TOW", "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_tow_ropeCreate;}, {!isNull btc_log_vehicle_selected && {btc_log_vehicle_selected != (_this select 0)} && {[_this select 0, btc_log_vehicle_selected] call btc_fnc_tow_check}}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["log_hook", localize "STR_BTC_HAM_ACTION_VEHINIT_HOOK", "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_tow_hook;}, {true}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["log_hook", localize "STR_BTC_HAM_ACTION_VEHINIT_UHOOK", "\z\ace\addons\attach\UI\detach_ca.paa", {(_this select 0) spawn btc_fnc_tow_unhook;}, {true}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
- };
- case (_type isKindOf "Helicopter") : {
- private _action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
- //Lift
- _action = ["Deploy_ropes", localize "STR_ACE_Fastroping_Interaction_deployRopes", "\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa", {[] spawn btc_fnc_lift_deployRopes;}, {!btc_ropes_deployed && {(driver vehicle player) isEqualTo player} && {(getPosATL player) select 2 > 4}}] call ace_interact_menu_fnc_createAction;
- [_type, 1, ["ACE_SelfActions"], _action, true] call ace_interact_menu_fnc_addActionToClass;
- _action = ["Cut_ropes", localize "STR_ACE_Fastroping_Interaction_cutRopes", "\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa", {[] spawn btc_fnc_lift_destroyRopes;}, {btc_ropes_deployed && {(driver vehicle player) isEqualTo player}}] call ace_interact_menu_fnc_createAction;
- [_type, 1, ["ACE_SelfActions"], _action, true] call ace_interact_menu_fnc_addActionToClass;
- };
- case (_type isKindOf "Ship") : {
- private _action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["log_tow", localize "STR_BTC_HAM_ACTION_VEHINIT_TOW", "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_tow_ropeCreate;}, {!isNull btc_log_vehicle_selected && {btc_log_vehicle_selected != (_this select 0)} && {[_this select 0, btc_log_vehicle_selected] call btc_fnc_tow_check}}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["log_hook", localize "STR_BTC_HAM_ACTION_VEHINIT_HOOK", "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_tow_hook;}, {true}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["log_hook", localize "STR_BTC_HAM_ACTION_VEHINIT_UHOOK", "\z\ace\addons\attach\UI\detach_ca.paa", {(_this select 0) spawn btc_fnc_tow_unhook;}, {true}] call ace_interact_menu_fnc_createAction;
- [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
- };
-};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/xeh_InitPost_EH_Vehicle.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/xeh_InitPost_EH_Vehicle.hpp
index 203ffe0c2..3125399a3 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/xeh_InitPost_EH_Vehicle.hpp
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/xeh_InitPost_EH_Vehicle.hpp
@@ -1,3 +1,3 @@
class btc_actions {
- init = "[typeOf (_this select 0)] call btc_fnc_eh_veh_init";
+ init = "[typeOf (_this select 0)] call btc_fnc_veh_init";
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create.sqf
index 6bb29a1c2..b816af534 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create.sqf
@@ -26,7 +26,7 @@ params [
if (((position _mat) isFlatEmpty [1, 0, 0.9, 1, 0, false, _mat]) isEqualTo []) exitWith {(localize "STR_BTC_HAM_O_FOB_CREATE_H_AREA") call CBA_fnc_notify;};
-if (_mat inArea [getMarkerPos "btc_base", 2000, 2000, 0, false]) exitWith {(localize "STR_BTC_HAM_O_FOB_CREATE_H_DBASE") call CBA_fnc_notify;};
+if (_mat inArea [getMarkerPos "btc_base", btc_fob_minDistance, btc_fob_minDistance, 0, false]) exitWith {(localize "STR_BTC_HAM_O_FOB_CREATE_H_DBASE") call CBA_fnc_notify;};
if ((nearestObjects [position _mat, ["LandVehicle", "Air"], 10]) findIf {!(_x isKindOf "ace_fastroping_helper")} != -1) exitWith {
(format [localize "STR_BTC_HAM_O_FOB_CREATE_H_CAREA", (nearestObjects [position _mat, ["LandVehicle", "Air"], 10]) apply {typeOf _x}]) call CBA_fnc_notify
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create_s.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create_s.sqf
index 2b0fc83be..c9b618b06 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create_s.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create_s.sqf
@@ -36,9 +36,9 @@ params [
];
private _flag = createVehicle [_fob_flag, _pos, [], 0, "CAN_COLLIDE"];
-private _struc = createVehicle [_fob_structure, _pos, [], 0, "CAN_COLLIDE"];
+private _structure = createVehicle [_fob_structure, _pos, [], 0, "CAN_COLLIDE"];
-_struc setDir _direction;
+_structure setDir _direction;
private _marker = createMarker [_FOB_name, _pos];
_marker setMarkerSize [1, 1];
@@ -47,8 +47,11 @@ _marker setMarkerText _FOB_name;
_marker setMarkerColor "ColorBlue";
_marker setMarkerShape "ICON";
-[_struc, _flag, _marker] call btc_fnc_fob_init;
+(_fobs select 0) pushBack _marker;
+(_fobs select 1) pushBack _structure;
+(_fobs select 2) pushBack _flag;
+[_flag, "Deleted", {[_thisArgs select 0, _thisArgs select 1] call BIS_fnc_removeRespawnPosition}, [btc_player_side, _flag, _FOB_name] call BIS_fnc_addRespawnPosition] call CBA_fnc_addBISEventHandler;
-_struc addEventHandler ["Killed", btc_fnc_fob_killed];
+_structure addEventHandler ["Killed", btc_fnc_fob_killed];
-[_marker, _struc, _flag]
+[_marker, _structure, _flag]
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/init.sqf
deleted file mode 100644
index 0d1c498ce..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/init.sqf
+++ /dev/null
@@ -1,50 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_fob_init
-
-Description:
- Store FOB data in btc_fobs global variable.
-
-Parameters:
- _structure - Structure/rallypoint of the FOB. [Object]
- _flag - Flag of the FOB. [Object]
- _marker - Marker. [String]
- _fobs - GLobal variable. [Array]
-
-Returns:
-
-Examples:
- (begin example)
- [cursorObject] call btc_fnc_fob_init;
- (end)
-
-Author:
- Vdauphin
-
----------------------------------------------------------------------------- */
-
-params [
- ["_structure", objNull, [objNull]],
- ["_flag", objNull, [objNull]],
- ["_marker", "", [""]],
- ["_fobs", btc_fobs, [[]]]
-];
-
-if (
- if (_marker isEqualTo "") then {
- _marker = "respawn_" + str btc_player_side + str _structure;
- _structure setVariable ["btc_fob_rallypointPos", position _structure, true];
- if (_marker in (_fobs select 0)) then {
- true
- } else {
- _structure setVariable ["btc_tickets", btc_fob_rallypointTicket, true];
- false
- }
- } else {
- false
- }
-) exitWith {};
-
-(_fobs select 0) pushBack _marker;
-(_fobs select 1) pushBack _structure;
-(_fobs select 2) pushBack _flag;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/rallypointAssemble.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/rallypointAssemble.sqf
new file mode 100644
index 000000000..33e356c8f
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/rallypointAssemble.sqf
@@ -0,0 +1,58 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_fob_rallypointAssemble
+
+Description:
+ Handle assembling and disassembling of BI rallypoint.
+
+Parameters:
+ _nameEH - Name of the event. [String]
+ _args - Arguments passed by the event. [Array]
+
+Returns:
+
+Examples:
+ (begin example)
+ ["WeaponAssembled", [player, cursorObject]] call btc_fnc_fob_rallypointAssemble;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_nameEH", "", [""]],
+ ["_args", [], [[]]]
+];
+
+switch (_nameEH) do {
+ case "WeaponAssembled": {
+ _args params [
+ ["_player", objNull, [objNull]],
+ ["_rallyPoint", objNull, [objNull]]
+ ];
+
+ if !(_rallyPoint isKindOf "Camping_base_F") exitWith {_this};
+ _rallyPoint remoteExecCall ["btc_fnc_fob_rallypointTimer", 2];
+ [
+ [format [localize "STR_BTC_HAM_O_FOB_SELFDESTRUCTION", btc_p_rallypointTimer]],
+ [""]
+ ] call CBA_fnc_notify;
+ };
+ case "WeaponDisassembled": {
+ _args params [
+ ["_player", objNull, [objNull]],
+ ["_bag", objNull, [objNull]]
+ ];
+
+ if !("_Respawn_" in typeOf _bag) exitWith {_this};
+
+ private _markers = ([btc_player_side, false] call BIS_fnc_getRespawnMarkers) - [btc_respawn_marker];
+ _markers = _markers apply {[_player distance markerPos _x, _x]};
+ _markers sort true;
+ deleteMarker (_markers select 0 select 1);
+ };
+ default {
+ };
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/rallypointTimer.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/rallypointTimer.sqf
new file mode 100644
index 000000000..4cef9f9ae
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/rallypointTimer.sqf
@@ -0,0 +1,45 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_fob_rallypointTimer
+
+Description:
+ Create a timer and when timer is up, trigger self destruction.
+
+Parameters:
+ _rallypoint - Rallypoint. [Object]
+ _delay - Delay before the rallypoint self-destruction. [Number]
+
+Returns:
+
+Examples:
+ (begin example)
+ [cursorObject] call btc_fnc_fob_rallypointTimer;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_rallypoint", objNull, [objNull]],
+ ["_delay", btc_fob_rallypointTimer, [0]]
+];
+
+private _time = serverTime;
+_rallypoint setVariable ["btc_fob_assembleTime", _time];
+
+[{
+ params [
+ ["_rallypoint", objNull, [objNull]],
+ ["_time", 0, [0]]
+ ];
+
+ if (
+ isNull _rallypoint ||
+ _time != _rallypoint getVariable ["btc_fob_assembleTime", -1]
+ ) exitWith {};
+ if (objectParent _rallypoint isEqualTo objNull) then {
+ deleteVehicle _rallypoint;
+ };
+}, [_rallypoint, _time], _delay] call CBA_fnc_waitAndExecute;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeploy.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeploy.sqf
index 8fd1fc8d0..304077450 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeploy.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeploy.sqf
@@ -3,150 +3,70 @@
Function: btc_fnc_fob_redeploy
Description:
- Show user interface of the map with FOB position.
+ Create child statement to redeploy.
Parameters:
+ _target - Is the object being interacted with. [Object]
+ _player - Is ace_player. [Object]
+ _params - Is the optional action parameters. (default [])
Returns:
+ _actions - ACE action generated for redeploy. [Boolean]
Examples:
(begin example)
- [] spawn btc_fnc_fob_redeploy;
+ [] call btc_fnc_fob_redeploy;
(end)
Author:
- Giallustio
+ Vdauphin
---------------------------------------------------------------------------- */
-btc_int_ask_data = nil;
-["btc_fobs"] remoteExecCall ["btc_fnc_int_ask_var", 2];
-
-waitUntil {!(isNil "btc_int_ask_data")};
+params [
+ "_target",
+ "_player",
+ "_params"
+];
-private _fobs_marker = [];
-private _fobs_markerText = [];
-private _fobs_structure = [];
-private _fobs_texts = [];
-{
- private _structure = (btc_int_ask_data select 1) select _forEachIndex;
- if ((_x in allMapMarkers) || !(isNull _structure) && (_structure inArea [_structure getVariable ["btc_fob_rallypointPos", [0, 0]], 1, 1, 0, false])) then {
- _fobs_marker pushBack _x;
- _fobs_markerText pushBack (if (_x in allMapMarkers) then {
- markerText _x;
- } else {
- getText (configfile >> "CfgVehicles" >> typeOf _structure >> "displayName")
- });
- _fobs_structure pushBack _structure;
+private _actions = [];
+private _childStatement = {
+ params ["_target", "_player", "_params"];
- private _fobs_ticket = _structure getVariable ["btc_tickets", -1];
- _fobs_texts pushBack (if (_fobs_ticket isEqualTo -1) then {
- format [localize "STR_BTC_HAM_O_FOB_REDEPLOY_H_MOVING", markerText _x]
- } else {
- format [localize "STR_BTC_HAM_O_FOB_REDEPLOY_H_MOVING" + "
%2: " + localize "str_a3_rscdisplaycampaignlobby_respawn_tooltip", markerText _x, _fobs_ticket]
- });
- };
-} forEach (btc_int_ask_data select 0);
-
-if (_fobs_marker isEqualTo []) exitWith {
- (localize "STR_BTC_HAM_O_FOB_REDEPLOY_H_NOFOB") call CBA_fnc_notify;
-};
-
-private _respawn_positions = _fobs_structure apply {
- private _positions = _x buildingPos -1;
- if (_positions isEqualTo []) then {
- private _pos = _x getPos [1.5, getDir _x];
- _pos set [
- 2,
- ([getPosATL _x, getPosASL _x] select (surfaceIsWater _pos)) select 2
- ];
- _pos
- } else {
- private _availablePos = _positions select {_x select 2 < 1};
- if (_availablePos isEqualTo []) then {
- selectRandom _positions
- } else {
- selectRandom _availablePos
- };
- };
+ if ([] call btc_fnc_fob_redeployCheck) then {[_player, _params, false] call BIS_fnc_moveToRespawnPosition};
};
-private _EHid = ["btc_respawn", {
- _this params ["_pos", "_structure"];
-
- if (surfaceIsWater _pos) then {
- player setPosASL _pos;
+if (_params isEqualTo "") then { // Redeploy on marker like rallypoints
+ {
+ private _action = [markerText _x, markerText _x, "\A3\ui_f\data\igui\cfg\simpleTasks\types\wait_ca.paa", _childStatement, {true}, {}, _x] call ace_interact_menu_fnc_createAction;
+ _actions pushBack [_action, [], _target];
+ } forEach (([btc_player_side, false] call BIS_fnc_getRespawnMarkers) - [btc_respawn_marker]);
+} else { // Redeploy on object like FOB/Vehicles
+ private _getRespawnPositions = _player call BIS_fnc_getRespawnPositions;
+ private _positions = if (_params isEqualTo "Base") then {
+ _getRespawnPositions inAreaArray [getMarkerPos "btc_base", btc_fob_minDistance, btc_fob_minDistance]
} else {
- player setPosATL _pos;
- };
-
- private _ticket = _structure getVariable ["btc_tickets", -1];
- if !(_ticket isEqualTo -1) then {
- _ticket = _ticket - 1;
- if (_ticket <= 0) then {
- [_structure, objNull, objNull, true, true] remoteExecCall ["btc_fnc_fob_killed", 2];
- } else {
- _structure setVariable ["btc_tickets", _ticket, true];
+ private _center = [worldSize / 2, worldsize / 2, 0];
+ _params params ["_min", "_max"];
+ _getRespawnPositions select {
+ if (
+ alive _x && {!(_x inArea [getMarkerPos "btc_base", btc_fob_minDistance, btc_fob_minDistance, 0, false])}
+ ) then {
+ private _dir = _center getDir _x;
+ _min <= _dir &&
+ {_dir < _max}
+ } else {
+ false
+ };
};
};
-}] call CBA_fnc_addEventHandler;
-
-private _missionsData = [];
-{
- _missionsData pushBack [
- position _x,
- {["btc_respawn", _this select 9] call CBA_fnc_localEvent;},
- _fobs_markerText select _forEachIndex,
- _fobs_texts select _forEachIndex,
- "",
- getText (configfile >> "CfgVehicles" >> typeOf _x >> "editorPreview"),
- 1,
- [_respawn_positions select _forEachIndex, _x]
- ]
-} forEach _fobs_structure;
-
-disableserialization;
-(date call BIS_fnc_sunriseSunsetTime) params ["_sunrise", "_sunset"];
-private _parentDisplay = [] call bis_fnc_displayMission;
-private _mapCenter = getMarkerPos btc_respawn_marker;
-private _ORBAT = [];
-private _markers = [];
-private _images = [];
-private _overcast = overcast;
-private _isNight = !((_sunrise < dayTime) && (_sunset > dayTime));
-private _scale = 1;
-private _simul = true;
-
-{
- _x setMarkerAlphaLocal 0;
-} forEach _fobs_marker;
-
-private _display = [
- _parentDisplay,
- _mapCenter,
- _missionsData,
- _ORBAT,
- _markers,
- _images,
- _overcast,
- _isNight,
- _scale,
- _simul,
- localize "$STR_BTC_HAM_O_FOB_REDEPLOY_LABEL",
- true
-] call btc_fnc_strategicMapOpen;
+ {
+ private ["_identity", "_name", "_pic", "_showName", "_respawnPositions", "_respawnPositionNames", "_respawnPositionNameShow", "_pos"];
+ (_x call BIS_fnc_showRespawnMenuPositionName) params ["_FOBName", "_icon"];
+ private _action = [_FOBName, _FOBName, _icon, _childStatement, {true}, {}, _x] call ace_interact_menu_fnc_createAction;
+ _actions pushBack [_action, [], _target];
+ } forEach _positions;
+};
-_display displayaddeventhandler [
- "unload",
- format [
- "
- {
- _x setMarkerAlphaLocal 1;
- } forEach %1;
- ['btc_respawn', %2] call CBA_fnc_removeEventHandler;
- ",
- _fobs_marker,
- _EHid
- ]
-];
+_actions
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeployCheck.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeployCheck.sqf
new file mode 100644
index 000000000..eea89ce91
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeployCheck.sqf
@@ -0,0 +1,37 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_fob_redeployCheck
+
+Description:
+ Check if player can redeploy.
+
+Parameters:
+
+Returns:
+ _canRedeploy - Can redeploy. [Boolean]
+
+Examples:
+ (begin example)
+ [] call btc_fnc_fob_redeployCheck;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+if !(player call ace_medical_status_fnc_isInStableCondition) exitWith {
+ [[localize "STR_BTC_HAM_O_FOB_CANTREDEPLOY"], [localize "STR_BTC_HAM_O_FOB_REDEPLOYNOTSTABLE"]] call CBA_fnc_notify;
+ false
+};
+
+if (
+ ["leftarm", "rightarm", "leftleg", "rightleg"] findIf {
+ [player, player, _x] call ace_medical_treatment_fnc_canSplint
+ } > -1
+) exitWith {
+ [[localize "STR_BTC_HAM_O_FOB_CANTREDEPLOY"], [localize "STR_BTC_HAM_O_FOB_REDEPLOYSPLINT"]] call CBA_fnc_notify;
+ false
+};
+
+true
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/allahu_akbar.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/allahu_akbar.sqf
index 3950dc229..a00a46dc6 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/allahu_akbar.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/allahu_akbar.sqf
@@ -26,10 +26,8 @@ params [
private _suicider = _trigger getVariable "suicider";
-private _soundPath = [str missionConfigFile, 0, -15] call BIS_fnc_trimString;
-private _soundToPlay = _soundPath + "core\sounds\allahu_akbar.ogg";
if (alive _suicider && [_suicider] call ace_common_fnc_isAwake) then {
- playSound3d [_soundToPlay, _suicider, false, getPosASL _suicider, 5, random [0.9, 1, 1.2], 100];
+ playSound3d [getMissionPath "core\sounds\allahu_akbar.ogg", _suicider, false, getPosASL _suicider, 5, random [0.9, 1, 1.2], 100];
};
[{
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/boom.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/boom.sqf
index 5037b07df..bbf70bbd5 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/boom.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/boom.sqf
@@ -37,3 +37,4 @@ deleteVehicle _wreck;
[_pos] call btc_fnc_deaf_earringing;
[_pos] remoteExecCall ["btc_fnc_ied_effects", [0, -2] select isDedicated];
+["btc_ied_boom", [_pos]] call CBA_fnc_localEvent;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/check.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/check.sqf
index 1d1dd37be..e6b98bb7f 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/check.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/check.sqf
@@ -7,7 +7,6 @@ Description:
Parameters:
_city - City where IED has been created. [Object]
- _ieds - All IED (even FACK IED). [Array]
Returns:
@@ -22,10 +21,14 @@ Author:
---------------------------------------------------------------------------- */
params [
- ["_city", objNull, [objNull]],
- ["_ieds", [objNull], [[]]]
+ ["_city", objNull, [objNull]]
];
+private _array = _city getVariable ["ieds", []];
+if (_array isEqualTo []) exitWith {};
+
+private _ieds = _array apply {_x call btc_fnc_ied_create};
+
if (btc_debug) then {
[format ["START CITY ID %1", _city getVariable "id"], __FILE__, [btc_debug, false]] call btc_fnc_debug_message;
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/checkLoop.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/checkLoop.sqf
index fdb142700..808552602 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/checkLoop.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/checkLoop.sqf
@@ -41,7 +41,10 @@ Author:
speed _x > 5
}
}) then {
- [_wreck, _ied] spawn btc_fnc_ied_boom;
+ [_wreck, _ied] call btc_fnc_ied_boom;
+ if (0.5 < random 1) then {
+ [getPos _wreck] call btc_fnc_rep_call_militia;
+ };
};
} forEach (_ied nearEntities ["allvehicles", 10]);
} else {
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/deleteLoop.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/deleteLoop.sqf
new file mode 100644
index 000000000..ffeb03d89
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/deleteLoop.sqf
@@ -0,0 +1,66 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_ied_deleteLoop
+
+Description:
+ Remove wreck generated around IED.
+
+Parameters:
+
+Returns:
+
+Examples:
+ (begin example)
+ [vehicle player] call btc_fnc_ied_deleteLoop;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_unit", objNull, [objNull]],
+ ["_role", "", [""]],
+ ["_vehicle", objNull, [objNull]]
+];
+
+if !(_vehicle isKindOf "B_APC_Tracked_01_CRV_F" || _vehicle isKindOf "rhsusf_stryker_m1132_m2_base") exitWith {};
+
+if (btc_ied_deleteOn > -1) exitWith {};
+
+(0 boundingBoxReal _vehicle) params ["_p1", "_p2"];
+private _maxWidth = abs ((_p2 select 0) - (_p1 select 0));
+private _maxLength = abs ((_p2 select 1) - (_p1 select 1));
+
+btc_ied_deleteOn = [{
+ params ["_arguments", "_idPFH"];
+ _arguments params [
+ ["_vehicle", objNull, [objNull]],
+ ["_minDistance", 0, [0]]
+ ];
+
+ private _ieds = allSimpleObjects [] - allSimpleObjects btc_type_blacklist;
+ _ieds = (_ieds inAreaArray [getPosWorld _vehicle, 50, 50]) select {
+ !("ace_drop" in ((getModelInfo _x) select 0))
+ };
+ if (_ieds isEqualTo []) exitWith {};
+
+ _ieds = _ieds apply {[_x distance _vehicle, _x]};
+ _ieds sort true;
+
+ (_ieds select 0) params ["_distance", "_ied"];
+ (0 boundingBoxReal _ied) params ["_p1", "_p2"];
+ private _maxWidth = abs ((_p2 select 0) - (_p1 select 0));
+ private _maxLength = abs ((_p2 select 1) - (_p1 select 1));
+ if (
+ _distance < (_minDistance + (_maxWidth max _maxLength) / 2) &&
+ {allMines inAreaArray [getPosWorld _ied, 2.5, 2.5] isEqualTo []} &&
+ {[getPos _vehicle, getDir _vehicle, 40, getPos _ied] call BIS_fnc_inAngleSector}
+ ) then {
+ private _pos = getPosATL _ied;
+ _ied call CBA_fnc_deleteEntity;
+ [btc_rep_bonus_IEDCleanUp, player] remoteExecCall ["btc_fnc_rep_change", 2];
+ ["btc_ied_deleted", [_pos, player]] call CBA_fnc_serverEvent;
+ };
+}, 1, [_vehicle, (_maxWidth max _maxLength) / 2]] call CBA_fnc_addPerFrameHandler;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_create.sqf
index 9e8fba35f..d7b2b3ed9 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_create.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_create.sqf
@@ -9,7 +9,6 @@ Parameters:
_city - City where the drone is created. [Object]
_area - Area around the city where the drone is created randomly. [Number]
_rpos - Create the drone at this position. [Array]
- _group - Group used for drone crew. [Group]
Returns:
_leader - return the leader of the group. [Object]
@@ -27,8 +26,7 @@ Author:
params [
["_city", objNull, [objNull]],
["_area", 300, [0]],
- ["_rpos", [], [[]]],
- ["_group", createGroup [btc_enemy_side, true], [grpNull]]
+ ["_rpos", [], [[]]]
];
if (btc_debug_log) then {
@@ -39,11 +37,12 @@ if (_rpos isEqualTo []) then {
_rpos = [position _city, _area] call btc_fnc_randomize_pos;
};
+private _group = createGroup [btc_enemy_side, true];
+_group setVariable ["btc_city", _city];
private _drone = createVehicle ["C_IDAP_UAV_06_antimine_F", _rpos, [], 0, "FLY"];
createVehicleCrew _drone;
[driver _drone] joinSilent _group;
_group setVariable ["btc_ied_drone", true];
-[_group] call btc_fnc_mil_unit_create;
[_group, _rpos, _area, 4] call CBA_fnc_taskPatrol;
_drone flyInHeight 10;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/fired_near.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/fired_near.sqf
index 552473a55..01833b429 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/fired_near.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/fired_near.sqf
@@ -53,7 +53,12 @@ private _cfgAmmo = configFile >> "cfgAmmo";
[{!alive (_this select 2)}, {
params ["_wreck", "_ied", "_bullet", "_detected_grenade"];
- if (alive _ied) then {[_wreck, _ied] call btc_fnc_ied_boom;};
+ if (alive _ied) then {
+ [_wreck, _ied] call btc_fnc_ied_boom;
+ if (0.5 < random 1) then {
+ [getPos _wreck] call btc_fnc_rep_call_militia;
+ };
+ };
{
if (isNull _x) then {
_detected_grenade deleteAt _forEachIndex;
@@ -68,6 +73,9 @@ private _cfgAmmo = configFile >> "cfgAmmo";
if (_explosive || _caliber) then {
if (alive _ied) then {
[_wreck, _ied] call btc_fnc_ied_boom;
+ if (0.5 < random 1) then {
+ [getPos _wreck] call btc_fnc_rep_call_militia;
+ };
};
};
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/initArea.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/initArea.sqf
new file mode 100644
index 000000000..26c9ef7ff
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/initArea.sqf
@@ -0,0 +1,63 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_ied_initArea
+
+Description:
+ Initialize positions of IEDS.
+
+Parameters:
+ _city - City to initialise. [Object]
+ _area - Area to create IED. [Number]
+ _n - Number of IED, real and fake. [Number]
+
+Returns:
+
+Examples:
+ (begin example)
+ _result = [] call btc_fnc_ied_initArea;
+ (end)
+
+Author:
+ Giallustio
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_city", objNull, [objNull]],
+ ["_area", 100, [0]],
+ ["_n", 1, [0]]
+];
+
+private _pos = getPos _city;
+private _array = _city getVariable ["ieds", []];
+
+{
+ for "_i" from 1 to _n do {
+ private _sel_pos = [_pos, _area] call btc_fnc_randomize_pos;
+ private _dir = random 360;
+
+ private _roads = _sel_pos nearRoads 50;
+ if (_roads isEqualTo []) then {
+ _sel_pos = [_sel_pos, 0, 100, 1, false] call btc_fnc_findsafepos;
+ } else {
+ private _arr = (selectRandom _roads) call btc_fnc_ied_randomRoadPos;
+ _sel_pos = _arr select 0;
+ _dir = _arr select 1;
+ };
+
+ _array pushBack [_sel_pos, selectRandom btc_model_ieds, _dir, _x];
+
+ if (btc_debug) then {
+ private _marker = createMarker [format ["btc_ied_%1", _sel_pos], _sel_pos];
+ _marker setMarkerType "mil_warning";
+ _marker setMarkerColor (["ColorBlue", "ColorRed"] select _x);
+ _marker setMarkerText (["IED (fake)", "IED"] select _x);
+ _marker setMarkerSize [0.8, 0.8];
+ };
+ if (btc_debug_log) then {
+ [format ["_this = %1 POS %2 N %3(%4)", _this, _sel_pos, _i, _n], __FILE__, [false]] call btc_fnc_debug_message;
+ };
+ };
+} forEach [true, false];
+
+_city setVariable ["ieds", _array];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/init_area.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/init_area.sqf
deleted file mode 100644
index 2bc297730..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/init_area.sqf
+++ /dev/null
@@ -1,123 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_ied_init_area
-
-Description:
- Initialize positions of IEDS.
-
-Parameters:
- _city - [Object]
- _area - [Number]
- _n - [Number]
-
-Returns:
-
-Examples:
- (begin example)
- _result = [] call btc_fnc_ied_init_area;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_city", objNull, [objNull]],
- ["_area", 100, [0]],
- ["_n", 1, [0]]
-];
-
-private _pos = getPos _city;
-private _array = _city getVariable ["ieds", []];
-
-private _active = true;
-
-for "_i" from 1 to _n do {
- private _sel_pos = _pos;
- _sel_pos = [_pos, _area] call btc_fnc_randomize_pos;
- _sel_pos = [_sel_pos, 30, 150, 1, false] call btc_fnc_findsafepos;
-
- private _type_ied = selectRandom btc_model_ieds;
-
- private _dir = random 360;
-
- if (random 1 > 0.3) then {
- private _roads = _sel_pos nearRoads _area;
- if !(_roads isEqualTo []) then {
- private _obj = selectRandom _roads;
-
- private _arr = _obj call btc_fnc_ied_randomRoadPos;
- _sel_pos = _arr select 0;
- _dir = _arr select 1;
- };
- } else {
- if (isOnRoad _sel_pos) then {
- private _roads = _sel_pos nearRoads 15;
- if !(_roads isEqualTo []) then {
- private _obj = selectRandom _roads;
-
- if (isNull _obj) exitWith {};
-
- private _arr = _obj call btc_fnc_ied_randomRoadPos;
- _sel_pos = _arr select 0;
- _dir = _arr select 1;
- };
- };
- };
-
-
- if (btc_debug) then {
- private _marker = createMarker [format ["btc_ied_%1", _sel_pos], _sel_pos];
- _marker setMarkerType "mil_warning";
- _marker setMarkerColor "ColorRed";
- _marker setMarkerText "IED";
- _marker setMarkerSize [0.8, 0.8];
- };
-
- if (btc_debug_log) then {
- [format ["_this = %1 POS %2 N %3(%4)", _this, _sel_pos, _i, _n], __FILE__, [false]] call btc_fnc_debug_message;
- };
-
- _array pushBack [_sel_pos, _type_ied, _dir, _active];
-};
-
-_active = false;
-
-for "_i" from 1 to _n do {
- private _sel_pos = _pos;
- _sel_pos = [_pos, _area] call btc_fnc_randomize_pos;
- _sel_pos = [_sel_pos, 30, 150, 1, false] call btc_fnc_findsafepos;
-
- private _type_ied = selectRandom btc_model_ieds;
-
- private _dir = random 360;
-
- if (random 1 > 0.3) then {
- private _roads = _sel_pos nearRoads _area;
- if !(_roads isEqualTo []) then {
- private _obj = selectRandom _roads;
-
- private _arr = _obj call btc_fnc_ied_randomRoadPos;
- _sel_pos = _arr select 0;
- _dir = _arr select 1;
- };
- };
-
-
- if (btc_debug) then {
- private _marker = createMarker [format ["btc_ied_%1", _sel_pos], _sel_pos];
- _marker setMarkerType "mil_warning";
- _marker setMarkerColor "ColorBlue";
- _marker setMarkerText "IED (fake)";
- _marker setMarkerSize [0.8, 0.8];
- };
-
- if (btc_debug_log) then {
- [format ["_this = %1 ; POS %2 ; N %3(%4)", _this, _sel_pos, _i, _n], __FILE__, [false]] call btc_fnc_debug_message;
- };
-
- _array pushBack [_sel_pos, _type_ied, _dir, _active];
-};
-
-_city setVariable ["ieds", _array];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/randomRoadPos.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/randomRoadPos.sqf
index 9beede774..ae6edc312 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/randomRoadPos.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/randomRoadPos.sqf
@@ -26,12 +26,13 @@ Author:
---------------------------------------------------------------------------- */
params [
- ["_road", objNull, [objNull]]
+ ["_road", objNull, [objNull]],
+ ["_p_ied_placement", btc_p_ied_placement, [0]]
];
private _roadDir = _road call btc_fnc_road_direction;
private _roadRadius = ((0 boundingBoxReal _road) select 2) * 0.4;
-switch (floor random btc_p_ied_placement) do {
+switch (floor random _p_ied_placement) do {
case 0: {
[_road getPos [_roadRadius, _roadDir + 90], _roadDir]
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suiciderKilled.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suiciderKilled.sqf
deleted file mode 100644
index a4ed68941..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suiciderKilled.sqf
+++ /dev/null
@@ -1,36 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_ied_suiciderKilled
-
-Description:
- Remove the the suicider flag to the corresponding city.
-
-Parameters:
- _id - ID of the city. [Number]
-
-Returns:
-
-Examples:
- (begin example)
- [0] call btc_fnc_ied_suiciderKilled;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_id", 0, [0]]
-];
-
-if (btc_debug || btc_debug_log) then {
- [format ["Suicider killed in city %1", _id], __FILE__, [btc_debug, btc_debug_log]] call btc_fnc_debug_message;
-};
-
-if (!isServer) exitWith {
- _this remoteExecCall ["btc_fnc_ied_suiciderKilled", 2];
-};
-
-private _city = btc_city_all select _id;
-_city setVariable ["has_suicider", false];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_active.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_active.sqf
index bad1108b7..3289e31b8 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_active.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_active.sqf
@@ -24,9 +24,9 @@ params [
["_suicider", objNull, [objNull]]
];
-[_suicider] joinSilent createGroup [btc_enemy_side, true];
-
-_suicider call btc_fnc_rep_remove_eh;
+private _group = createGroup [btc_enemy_side, true];
+[_suicider] joinSilent _group;
+_group setVariable ["suicider", true];
[group _suicider] call CBA_fnc_clearWaypoints;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_create.sqf
index 17d22a11b..f064b69cd 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_create.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_create.sqf
@@ -8,6 +8,8 @@ Description:
Parameters:
_city - City where the suicider is created. [Object]
_area - Area around the city the suicider is created randomly. [Number]
+ _rpos - Create the suicider at this position. [Array]
+ _type_units - Type of units. [Group]
Returns:
_suicider - Created suicider. [Object]
@@ -24,23 +26,29 @@ Author:
params [
["_city", objNull, [objNull]],
- ["_area", 100, [0]]
+ ["_area", 100, [0]],
+ ["_rpos", [], [[]]],
+ ["_type_units", "", [""]]
];
if (btc_debug_log) then {
[format ["_name = %1 _area %2", _city getVariable ["name", "name"], _area], __FILE__, [false]] call btc_fnc_debug_message;
};
-private _rpos = [position _city, _area] call btc_fnc_randomize_pos;
+if (_rpos isEqualTo []) then {
+ _rpos = [position _city, _area] call btc_fnc_randomize_pos;
+};
+if (_type_units isEqualTo "") then {
+ _type_units = selectRandom btc_civ_type_units;
+};
-private _group = createGroup civilian;
-private _suicider = _group createUnit [selectRandom btc_civ_type_units, _rpos, [], 0, "CAN_COLLIDE"];
+private _group = createGroup [civilian, true];
+_group setVariable ["btc_city", _city];
+private _suicider = _group createUnit [_type_units, _rpos, [], 0, "CAN_COLLIDE"];
[_group] call btc_fnc_civ_addWP;
_group setVariable ["suicider", true];
-[_group] call btc_fnc_civ_unit_create;
-
[_suicider] call btc_fnc_ied_suiciderLoop;
_suicider
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask.sqf
index 363a3f2ce..8cd43f3c4 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask.sqf
@@ -3,17 +3,17 @@
Function: btc_fnc_info_ask
Description:
- Fill me when you edit me !
+ Ask information to an IA.
Parameters:
- _man - [Object]
- _isInterrogate - [Boolean]
+ _man - Man giving information. [Object]
+ _isInterrogate - Is interrogated. [Boolean]
Returns:
Examples:
(begin example)
- _result = [] call btc_fnc_info_ask;
+ [cursorObject] call btc_fnc_info_ask;
(end)
Author:
@@ -40,7 +40,10 @@ if !(_man call ace_medical_status_fnc_isInStableCondition) exitWith {
[name _man, _complain] call btc_fnc_showSubtitle;
};
-if ((_man getVariable ["btc_already_asked", false]) || (_man getVariable ["btc_already_interrogated", false])) exitWith {
+if (
+ _man getVariable ["btc_already_asked", false] ||
+ _man getVariable ["btc_already_interrogated", false]
+) exitWith {
[name _man, localize "STR_BTC_HAM_CON_INFO_ASK_ALLREADYANS"] call btc_fnc_showSubtitle;
};
@@ -59,7 +62,6 @@ waitUntil {!(isNil "btc_int_ask_data")};
private _rep = btc_int_ask_data;
private _chance = (random 300) + (random _rep) + _rep/2;
-private _info = "";
private _info_type = "";
switch !(_isInterrogate) do {
case (_chance < 200) : {_info_type = "NO";};
@@ -71,48 +73,24 @@ if (_info_type isEqualTo "NO") exitWith {
[name _man, localize "STR_BTC_HAM_CON_INFO_ASK_NOINFO"] call btc_fnc_showSubtitle;
};
-btc_int_ask_data = nil;
-[8] remoteExecCall ["btc_fnc_int_ask_var", 2];
-
-waitUntil {!(isNil "btc_int_ask_data")};
-
-private _final_phase = btc_int_ask_data isEqualTo 0;
-
+private _final_phase = (count btc_hideouts) isEqualTo 0;
private _info = selectRandomWeighted [
"TROOPS", 0.4,
["HIDEOUT", "TROOPS"] select _final_phase, 0.4,
"CACHE", 0.2
];
-switch (_info_type) do {
- case "REAL" : {
- switch (_info) do {
- case "TROOPS" : {
- [name _man, true] spawn btc_fnc_info_troops;
- };
- case "HIDEOUT" : {
- [name _man, true] spawn btc_fnc_info_hideout_asked;
- };
- case "CACHE" : {
- [name _man, localize "STR_BTC_HAM_CON_INFO_ASK_CACHEMAP"] call btc_fnc_showSubtitle;
- sleep 2;
- [true] remoteExecCall ["btc_fnc_info_cache", 2];
- };
- };
+_info_type = _info_type isEqualTo "REAL";
+switch (_info) do {
+ case "TROOPS" : {
+ [_man, _info_type] call btc_fnc_info_troops;
+ };
+ case "HIDEOUT" : {
+ [name _man, _info_type] call btc_fnc_info_hideout_asked;
};
- case "FAKE" : {
- switch (_info) do {
- case "TROOPS" : {
- [name _man, false] spawn btc_fnc_info_troops;
- };
- case "HIDEOUT" : {
- [name _man, false] spawn btc_fnc_info_hideout_asked;
- };
- case "CACHE" : {
- [name _man, localize "STR_BTC_HAM_CON_INFO_ASK_CACHEMAP"] call btc_fnc_showSubtitle;
- sleep 2;
- [false] remoteExecCall ["btc_fnc_info_cache", 2];
- };
- };
+ case "CACHE" : {
+ [name _man, localize "STR_BTC_HAM_CON_INFO_ASK_CACHEMAP"] call btc_fnc_showSubtitle;
+ sleep 2;
+ [_info_type] remoteExecCall ["btc_fnc_info_cache", 2];
};
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask_reputation.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask_reputation.sqf
index 3719d0fd8..de5da75e1 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask_reputation.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask_reputation.sqf
@@ -37,12 +37,7 @@ private _rep = btc_int_ask_data;
private _ho_left = "";
if ((round random 1) isEqualTo 1) then {
- btc_int_ask_data = nil;
- [8] remoteExecCall ["btc_fnc_int_ask_var", 2];
-
- waitUntil {!(isNil "btc_int_ask_data")};
-
- _ho_left = format [localize "STR_BTC_HAM_CON_INFO_ASKREP_HIDEOUTS", btc_int_ask_data];
+ _ho_left = format [localize "STR_BTC_HAM_CON_INFO_ASKREP_HIDEOUTS", count btc_hideouts];
};
private _info_type = switch (true) do {
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/has_intel.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/has_intel.sqf
index cb4638224..9b61ceefb 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/has_intel.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/has_intel.sqf
@@ -33,7 +33,7 @@ if (btc_debug_log) then {
if (_body getVariable ["intel", false] && !(_body getVariable ["btc_already_interrogated", false])) then {
_body setVariable ["intel", false];
if (isServer) then {
- [_asker] spawn btc_fnc_info_give_intel;
+ [_asker] call btc_fnc_info_give_intel;
} else {
[_asker] remoteExecCall ["btc_fnc_info_give_intel", 2];
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout_asked.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout_asked.sqf
index de47e346e..9da035e98 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout_asked.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout_asked.sqf
@@ -29,13 +29,12 @@ params [
];
if (_is_real) then {
- btc_int_ask_data = nil;
- [1, player] remoteExecCall ["btc_fnc_int_ask_var", 2];
-
- waitUntil {!(isNil "btc_int_ask_data")};
+ private _index = btc_hideouts findIf {
+ _x inArea [getPosWorld player, 3000, 3000, 0, false]
+ };
- if (!isNull btc_int_ask_data) then {
- private _hideout = btc_int_ask_data;
+ if (_index > -1) then {
+ private _hideout = btc_hideouts select _index;
private _dist = (player distance _hideout) + (random 500) - (random 500);
private _dir = player getDir _hideout;
private _card = [_dir] call btc_fnc_get_cardinal;
@@ -45,8 +44,7 @@ if (_is_real) then {
};
} else {
if ((random 1) > 0.5) then {
- private _array = ["N", "E", "W", "S", "NW", "NE", "SE", "SW"];
- private _dir = selectRandom _array;
+ private _dir = selectRandom ["N", "E", "W", "S", "NW", "NE", "SE", "SW"];
private _dist = 300 + (random 2000);
_text = format [localize "STR_BTC_HAM_CON_INFO_ASKHIDEOUT_TRUE", _dir, round _dist];
} else {
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/path.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/path.sqf
index c7ba5b65e..100882049 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/path.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/path.sqf
@@ -24,14 +24,16 @@ Author:
---------------------------------------------------------------------------- */
params [
- ["_unit", objNull, [objNull]],
+ ["_startPos", [0, 0, 0], [[]]],
["_endPos", [0, 0, 0], [[]]],
- ["_taskID", "btc_side", [""]]
+ ["_taskID", "btc_side", [""]],
+ ["_typeVehicle", "Man", [""]],
+ ["_behaviour", "safe", [""]]
];
-private _parent = [configFile >> "CfgVehicles" >> typeOf vehicle _unit, true] call BIS_fnc_returnParents;
+private _parent = [configFile >> "CfgVehicles" >> _typeVehicle, true] call BIS_fnc_returnParents;
private _type = (_parent arrayIntersect ["Man", "Car", "Tank", "Wheeled_APC", "Boat", "Plane", "Helicopter"]) select 0;
-private _agent = calculatePath [_type, behaviour _unit, getPos _unit, _endPos];
+private _agent = calculatePath [_type, _behaviour, _startPos, _endPos];
[_agent, "PathCalculated", {
params ["_agent", "_path"];
@@ -40,6 +42,7 @@ private _agent = calculatePath [_type, behaviour _unit, getPos _unit, _endPos];
];
_agent removeEventHandler ["PathCalculated", _thisId];
+ _agent setVariable ["btc_path", _path];
private _color = configName selectRandom (configProperties [configFile >> "CfgMarkerColors"]);
private _delta = 10;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/search_for_intel.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/search_for_intel.sqf
index 3dc31a7e3..de9a1468c 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/search_for_intel.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/search_for_intel.sqf
@@ -38,7 +38,7 @@ private _condition = {
params ["_args"];
_args params ["_target", "_player", "_radius"];
- _target distance _player < _radius
+ (_target distance _player < _radius) && {[_player, objNull, ["isnotinside"]] call ace_common_fnc_canInteractWith}
};
-[btc_int_search_intel_time, [_target, player, _radius], _onFinish, {}, localize "STR_BTC_HAM_CON_INFO_SEARCH_BAR", _condition, ["isnotinside"]] call ace_common_fnc_progressBar;
+[localize "STR_BTC_HAM_CON_INFO_SEARCH_BAR", btc_int_search_intel_time, _condition, _onFinish, {}, [_target, player, _radius]] call CBA_fnc_progressBar;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/troops.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/troops.sqf
index 162e48793..3aaa8b94e 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/troops.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/troops.sqf
@@ -3,18 +3,18 @@
Function: btc_fnc_info_troops
Description:
- Fill me when you edit me !
+ Show troops information.
Parameters:
- _name - [String]
- _is_real - [Boolean]
- _text - [String]
+ _name - IA giving the information. [Object]
+ _is_real - Is a real information. [Boolean]
+ _text - Text to show. [String]
Returns:
Examples:
(begin example)
- _result = [] call btc_fnc_info_troops;
+ [] call btc_fnc_info_troops;
(end)
Author:
@@ -23,21 +23,23 @@ Author:
---------------------------------------------------------------------------- */
params [
- ["_name", "Vdauphin", [""]],
+ ["_man", objNull, [objNull]],
["_is_real", true, [true]],
["_text", "", [""]]
];
if (_is_real) then {
- private _array = (position player) nearEntities [btc_type_units, 2500];
- if !(_array isEqualTo []) then {
- private _man = _array select 0;
- private _dist = (player distance _man) + (random 150) - (random 150);
- private _dir = player getDir _man;
+ private _array = player nearEntities [btc_type_units, 2500];
+ _array = _array - [_man];
+ if (_array isEqualTo []) then {
+ _text = localize "STR_BTC_HAM_CON_INFO_TROOPS_FALSE";
+ } else {
+ _array = _array apply {[player distance _x, _x]};
+ private _nearestEnemy = _array select 0 select 1;
+ private _dist = player distance ([_nearestEnemy, 100] call CBA_fnc_randPos);
+ private _dir = player getDir _nearestEnemy;
private _card = [_dir] call btc_fnc_get_cardinal;
_text = format [localize "STR_BTC_HAM_CON_INFO_TROOPS_TRUE", _card, round _dist];
- } else {
- _text = localize "STR_BTC_HAM_CON_INFO_TROOPS_FALSE";
};
} else {
if ((random 1) > 0.5) then {
@@ -52,5 +54,5 @@ if (_is_real) then {
if (btc_debug) then {_text = _text + " - " + str _is_real};
-[_name, _text] call btc_fnc_showSubtitle;
-player createDiaryRecord ["btc_diarylog", [str(mapGridPosition player) + " - " + _name, _text]];
\ No newline at end of file
+[name _man, _text] call btc_fnc_showSubtitle;
+player createDiaryRecord ["btc_diarylog", [str(mapGridPosition player) + " - " + name _man, _text]];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/add_actions.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/add_actions.sqf
index a723fb16c..0687c3944 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/add_actions.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/add_actions.sqf
@@ -21,60 +21,86 @@ Author:
//Database
-private _action = ["Database", localize "STR_BTC_HAM_ACTION_DATA_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\D_ca.paa", {}, {serverCommandAvailable "#logout" || !isMultiplayer}] call ace_interact_menu_fnc_createAction;
+private _action = ["Database", localize "STR_BTC_HAM_ACTION_DATA_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\D_ca.paa", {}, {(call BIS_fnc_admin) == 2 || !isMultiplayer}] call ace_interact_menu_fnc_createAction;
[player, 1, ["ACE_SelfActions"], _action] call ace_interact_menu_fnc_addActionToObject;
-_action = ["request_save", localize "str_3den_display3den_menubar_missionsave_text", "\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa", {[] remoteExec ["btc_fnc_db_save", 2]}, {true}] call ace_interact_menu_fnc_createAction;
+_action = ["request_save", localize "str_3den_display3den_menubar_missionsave_text", "\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa", {[] remoteExecCall ["btc_fnc_db_save", 2]}, {true}] call ace_interact_menu_fnc_createAction;
[player, 1, ["ACE_SelfActions", "Database"], _action] call ace_interact_menu_fnc_addActionToObject;
_action = ["request_delete", localize "STR_3DEN_Delete", "\A3\ui_f\data\igui\cfg\simpleTasks\types\exit_ca.paa", {[] remoteExecCall ["btc_fnc_db_delete", 2]}, {true}] call ace_interact_menu_fnc_createAction;
[player, 1, ["ACE_SelfActions", "Database"], _action] call ace_interact_menu_fnc_addActionToObject;
//Intel
-_action = ["Search_intel", localize "STR_A3_Showcase_Marksman_BIS_tskIntel_title", "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa", {(_this select 0) spawn btc_fnc_info_search_for_intel;}, {!alive (_this select 0)}] call ace_interact_menu_fnc_createAction;
+_action = ["Search_intel", localize "STR_A3_Showcase_Marksman_BIS_tskIntel_title", "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa", {
+ [btc_fnc_info_search_for_intel, [_target]] call CBA_fnc_execNextFrame;
+}, {!alive _target}] call ace_interact_menu_fnc_createAction;
{[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} forEach (btc_type_units + btc_type_divers);
-_action = ["Interrogate_intel", localize "STR_BTC_HAM_ACTION_INTEL_INTERROGATE", "\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa", {[(_this select 0),true] spawn btc_fnc_info_ask;}, {alive (_this select 0) && {[_this select 0] call ace_common_fnc_isAwake} && captive (_this select 0)}] call ace_interact_menu_fnc_createAction;
+_action = ["Interrogate_intel", localize "STR_BTC_HAM_ACTION_INTEL_INTERROGATE", "\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa", {[_target,true] spawn btc_fnc_info_ask;}, {alive _target && {[_target] call ace_common_fnc_isAwake} && captive _target}] call ace_interact_menu_fnc_createAction;
{[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} forEach (btc_type_units + btc_type_divers);
//Log point
-_action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
-[btc_create_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject;
-_action = ["Require_object", localize "STR_BTC_HAM_ACTION_LOGPOINT_REQOBJ", "\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa", {[btc_create_object_point] spawn btc_fnc_log_create}, {true}, {}, [], [0, 0, 0.4], 5] call ace_interact_menu_fnc_createAction;
-[btc_create_object, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToObject;
-_action = ["Repair_wreck", localize "STR_BTC_HAM_ACTION_LOGPOINT_REPWRECK", "\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa", {[btc_create_object_point] spawn btc_fnc_log_repair_wreck}, {true}, {}, [], [0, 0, 0], 5] call ace_interact_menu_fnc_createAction;
-[btc_create_object, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToObject;
-_action = ["Refuel", localize "STR_BTC_HAM_ACTION_LOGPOINT_REFUELSOURCE", "\A3\ui_f\data\igui\cfg\simpleTasks\types\refuel_ca.paa", {[btc_create_object_point] call btc_fnc_log_refuelSource}, {true}, {}, [], [0, 0, 0], 5] call ace_interact_menu_fnc_createAction;
-[btc_create_object, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToObject;
-_action = ["Require_veh", localize "STR_BTC_HAM_ACTION_LOGPOINT_REQVEH", "\A3\ui_f\data\map\vehicleicons\iconCar_ca.paa", {[btc_create_object_point] spawn btc_fnc_arsenal_garage}, {(serverCommandAvailable "#logout" || !isMultiplayer) and btc_p_garage}, {}, [], [0, 0, 0], 5] call ace_interact_menu_fnc_createAction;
-[btc_create_object, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToObject;
-_action = ["Tool", localize "str_3den_display3den_menubar_tools_text", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\T_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
-[btc_create_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject;
-_action = ["Copy", localize "STR_BTC_HAM_ACTION_COPYPASTE_COPY", "\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa", {[btc_create_object_point] spawn btc_fnc_log_copy}, {true}, {}, [], [0, 0, 0.4], 5] call ace_interact_menu_fnc_createAction;
-[btc_create_object, 0, ["ACE_MainActions", "Tool"], _action] call ace_interact_menu_fnc_addActionToObject;
-_action = ["Paste", localize "STR_BTC_HAM_ACTION_COPYPASTE_PASTE", "\A3\ui_f\data\igui\cfg\simpleTasks\types\upload_ca.paa", {[btc_copy_container, btc_create_object_point] call btc_fnc_log_paste}, {!isNil "btc_copy_container"}, {}, [], [0, 0, 0.4], 5] call ace_interact_menu_fnc_createAction;
-[btc_create_object, 0, ["ACE_MainActions", "Tool"], _action] call ace_interact_menu_fnc_addActionToObject;
-_action = ["Require_delete", localize "STR_3DEN_Delete", "\z\ace\addons\arsenal\data\iconClearContainer.paa", {[btc_create_object_point] spawn btc_fnc_log_delete}, {true}, {}, [], [0, 0, 0.4], 5] call ace_interact_menu_fnc_createAction;
-[btc_create_object, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToObject;
+{
+ _x params ["_object", "_helipad"];
+
+ _action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
+ [_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject;
+ _action = ["Require_object", localize "STR_BTC_HAM_ACTION_LOGPOINT_REQOBJ", "\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa", {
+ params ["", "", "_params"];
+ _params spawn btc_fnc_log_create
+ }, {true}, {}, [_helipad], [0, 0, 0.4], 5] call ace_interact_menu_fnc_createAction;
+ [_object, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToObject;
+ _action = ["Repair_wreck", localize "STR_BTC_HAM_ACTION_LOGPOINT_REPWRECK", "\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa", {
+ params ["", "", "_params"];
+ _params call btc_fnc_log_repair_wreck
+ }, {true}, {}, [_helipad], [0, 0, 0], 5] call ace_interact_menu_fnc_createAction;
+ [_object, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToObject;
+ _action = ["Refuel", localize "STR_BTC_HAM_ACTION_LOGPOINT_REFUELSOURCE", "\A3\ui_f\data\igui\cfg\simpleTasks\types\refuel_ca.paa", {
+ params ["", "", "_params"];
+ _params call btc_fnc_log_refuelSource
+ }, {true}, {}, [_helipad], [0, 0, 0], 5] call ace_interact_menu_fnc_createAction;
+ [_object, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToObject;
+ _action = ["Require_veh", localize "STR_BTC_HAM_ACTION_LOGPOINT_REQVEH", "\A3\ui_f\data\map\vehicleicons\iconCar_ca.paa", {
+ params ["", "", "_params"];
+ _params spawn btc_fnc_arsenal_garage}, {(serverCommandAvailable "#logout" || !isMultiplayer) and btc_p_garage}, {}, [_helipad], [0, 0, 0], 5] call ace_interact_menu_fnc_createAction;
+ [_object, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToObject;
+ _action = ["Tool", localize "str_3den_display3den_menubar_tools_text", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\T_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
+ [_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject;
+ _action = ["Copy", localize "STR_BTC_HAM_ACTION_COPYPASTE_COPY", "\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa", {
+ params ["", "", "_params"];
+ _params call btc_fnc_log_copy
+ }, {true}, {}, [_helipad], [0, 0, 0.4], 5] call ace_interact_menu_fnc_createAction;
+ [_object, 0, ["ACE_MainActions", "Tool"], _action] call ace_interact_menu_fnc_addActionToObject;
+ _action = ["Paste", localize "STR_BTC_HAM_ACTION_COPYPASTE_PASTE", "\A3\ui_f\data\igui\cfg\simpleTasks\types\upload_ca.paa", {
+ params ["", "", "_params"];
+ [btc_copy_container, _params] call btc_fnc_log_paste
+ }, {!isNil "btc_copy_container"}, {}, _helipad, [0, 0, 0.4], 5] call ace_interact_menu_fnc_createAction;
+ [_object, 0, ["ACE_MainActions", "Tool"], _action] call ace_interact_menu_fnc_addActionToObject;
+ _action = ["Require_delete", localize "STR_3DEN_Delete", "\z\ace\addons\arsenal\data\iconClearContainer.paa", {
+ params ["", "", "_params"];
+ _params call btc_fnc_log_delete
+ }, {true}, {}, [_helipad], [0, 0, 0.4], 5] call ace_interact_menu_fnc_createAction;
+ [_object, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToObject;
+} forEach [[btc_create_object, btc_create_object_point]];
//Logistic
_action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
{[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} forEach btc_log_def_loadable;
-_action = ["Place", localize "STR_ACE_Dragging_Carry", "\z\ace\addons\dragging\UI\icons\box_carry.paa", {(_this select 0) spawn btc_fnc_log_place}, {!btc_log_placing}] call ace_interact_menu_fnc_createAction;
+_action = ["Place", localize "STR_ACE_Dragging_Carry", "\z\ace\addons\dragging\UI\icons\box_carry.paa", {_target call btc_fnc_log_place}, {!btc_log_placing}] call ace_interact_menu_fnc_createAction;
{[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} forEach btc_log_def_placeable;
//Shower
-_action = ["Shower_act", getText(configfile >> "CfgVehicles" >> "DeconShower_01_F" >> "UserActions" >> "Activate" >> "displayName"), "", {player playActionNow 'PutDown'; [_this select 0, 1.5, 9] remoteExec ["BIN_fnc_deconShowerAnim", 0]}, {alive (_this select 0) AND {(_this select 0) animationSourcePhase 'valve_source' isEqualTo 0}}] call ace_interact_menu_fnc_createAction;
+_action = ["Shower_act", getText(configfile >> "CfgVehicles" >> "DeconShower_01_F" >> "UserActions" >> "Activate" >> "displayName"), "", {player playActionNow 'PutDown'; [_target, 1.5, 9] remoteExec ["BIN_fnc_deconShowerAnim", 0]}, {alive _target AND {_target animationSourcePhase 'valve_source' isEqualTo 0}}] call ace_interact_menu_fnc_createAction;
["DeconShower_01_F", 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
-_action = ["Shower_act", getText(configfile >> "CfgVehicles" >> "DeconShower_02_F" >> "UserActions" >> "Activate" >> "displayName"), "", {player playActionNow 'PutDown'; [_this select 0, 5.4, 4, 2, true] remoteExec ["BIN_fnc_deconShowerAnimLarge", 0]}, {alive (_this select 0) AND {(_this select 0) animationSourcePhase 'valve_source' isEqualTo 0}}] call ace_interact_menu_fnc_createAction;
+_action = ["Shower_act", getText(configfile >> "CfgVehicles" >> "DeconShower_02_F" >> "UserActions" >> "Activate" >> "displayName"), "", {player playActionNow 'PutDown'; [_target, 5.4, 4, 2, true] remoteExec ["BIN_fnc_deconShowerAnimLarge", 0]}, {alive _target AND {_target animationSourcePhase 'valve_source' isEqualTo 0}}] call ace_interact_menu_fnc_createAction;
["DeconShower_02_F", 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
{
- _action = ["Shower_desact", getText(configfile >> "CfgVehicles" >> "DeconShower_01_F" >> "UserActions" >> "Deactivate" >> "displayName"), "", {player playActionNow 'PutDown'; [_this select 0] remoteExecCall ["BIN_fnc_deconShowerAnimStop", 0]}, {alive (_this select 0) AND {(_this select 0) animationSourcePhase 'valve_source' > 0}}] call ace_interact_menu_fnc_createAction;
+ _action = ["Shower_desact", getText(configfile >> "CfgVehicles" >> "DeconShower_01_F" >> "UserActions" >> "Deactivate" >> "displayName"), "", {player playActionNow 'PutDown'; [_target] remoteExecCall ["BIN_fnc_deconShowerAnimStop", 0]}, {alive _target AND {_target animationSourcePhase 'valve_source' > 0}}] call ace_interact_menu_fnc_createAction;
[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
} forEach ["DeconShower_01_F", "DeconShower_02_F"];
//FOB
-_action = ["Mount_FOB", localize "STR_BTC_HAM_ACTION_FOB_MOUNT", "\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa", {(_this select 0) spawn btc_fnc_fob_create}, {!btc_log_placing}] call ace_interact_menu_fnc_createAction;
+_action = ["Mount_FOB", localize "STR_BTC_HAM_ACTION_FOB_MOUNT", "\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa", {_target spawn btc_fnc_fob_create}, {!btc_log_placing}] call ace_interact_menu_fnc_createAction;
[btc_fob_mat, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
-_action = ["Dismantle_FOB", localize "STR_BTC_HAM_ACTION_FOB_DISMANTLE", "", {(_this select 0) remoteExecCall ["btc_fnc_fob_dismantle_s", 2]}, {true}, {}, [], [0, 0, -2], 5] call ace_interact_menu_fnc_createAction;
+_action = ["Dismantle_FOB", localize "STR_BTC_HAM_ACTION_FOB_DISMANTLE", "", {_target remoteExecCall ["btc_fnc_fob_dismantle_s", 2]}, {true}, {}, [], [0, 0, -2], 5] call ace_interact_menu_fnc_createAction;
[btc_fob_flag, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
//Orders
@@ -91,17 +117,17 @@ _action = ["Civil_Go_away", localize "STR_BTC_HAM_ACTION_ORDERS_GOAWAY", "\A3\ui
{ //Actions attachted to AI
_action = ["Civil_Orders", localize "STR_BTC_HAM_ACTION_ORDERS_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["Civil_taxi", localize "STR_BTC_HAM_ACTION_ORDERS_TAXI", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk4_ca.paa", {[4, (_this select 0)] spawn btc_fnc_int_orders;}, {(alive (_this select 0)) && !((vehicle (_this select 0)) isEqualTo (_this select 0))}] call ace_interact_menu_fnc_createAction;
+ _action = ["Civil_taxi", localize "STR_BTC_HAM_ACTION_ORDERS_TAXI", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk4_ca.paa", {[4, _target] call btc_fnc_int_orders;}, {(alive _target) && !((vehicle _target) isEqualTo _target)}] call ace_interact_menu_fnc_createAction;
[_x, 0, ["ACE_MainActions", "Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["Civil_Stop", localize "STR_BTC_HAM_ACTION_ORDERS_STOP", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk3_ca.paa", {[1, (_this select 0)] call btc_fnc_int_orders;}, {alive (_this select 0)}] call ace_interact_menu_fnc_createAction;
+ _action = ["Civil_Stop", localize "STR_BTC_HAM_ACTION_ORDERS_STOP", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk3_ca.paa", {[1, _target] call btc_fnc_int_orders;}, {alive _target}] call ace_interact_menu_fnc_createAction;
[_x, 0, ["ACE_MainActions", "Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["Civil_Get_down", localize "STR_BTC_HAM_ACTION_ORDERS_GETDOWN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk2_ca.paa", {[2, (_this select 0)] call btc_fnc_int_orders;}, {alive (_this select 0)}] call ace_interact_menu_fnc_createAction;
+ _action = ["Civil_Get_down", localize "STR_BTC_HAM_ACTION_ORDERS_GETDOWN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk2_ca.paa", {[2, _target] call btc_fnc_int_orders;}, {alive _target}] call ace_interact_menu_fnc_createAction;
[_x, 0, ["ACE_MainActions", "Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["Civil_Go_away", localize "STR_BTC_HAM_ACTION_ORDERS_GOAWAY", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk1_ca.paa", {[3, (_this select 0)] call btc_fnc_int_orders;}, {alive (_this select 0)}] call ace_interact_menu_fnc_createAction;
+ _action = ["Civil_Go_away", localize "STR_BTC_HAM_ACTION_ORDERS_GOAWAY", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk1_ca.paa", {[3, _target] call btc_fnc_int_orders;}, {alive _target}] call ace_interact_menu_fnc_createAction;
[_x, 0, ["ACE_MainActions", "Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["Ask_Info", localize "STR_BTC_HAM_ACTION_ORDERS_ASKINFO", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[(_this select 0),false] spawn btc_fnc_info_ask;}, {alive (_this select 0) && {[_this select 0] call ace_common_fnc_isAwake} && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction;
+ _action = ["Ask_Info", localize "STR_BTC_HAM_ACTION_ORDERS_ASKINFO", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[_target,false] spawn btc_fnc_info_ask;}, {alive _target && {[_target] call ace_common_fnc_isAwake} && {side _target isEqualTo civilian}}] call ace_interact_menu_fnc_createAction;
[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
- _action = ["Ask_Reputation", localize "STR_BTC_HAM_ACTION_ORDERS_ASKREP", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[_this select 0] spawn btc_fnc_info_ask_reputation;}, {alive (_this select 0) && {[_this select 0] call ace_common_fnc_isAwake} && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction;
+ _action = ["Ask_Reputation", localize "STR_BTC_HAM_ACTION_ORDERS_ASKREP", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[_target] spawn btc_fnc_info_ask_reputation;}, {alive _target && {[_target] call ace_common_fnc_isAwake} && {side _target isEqualTo civilian}}] call ace_interact_menu_fnc_createAction;
[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
//remove ace3 "get down" order
@@ -127,8 +153,35 @@ if (btc_debug) then {
};
//Re-deploy
-_action = ["fob_redeploy", localize "STR_BTC_HAM_ACTION_REDEPLOY_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa", {[] spawn btc_fnc_fob_redeploy}, {btc_p_redeploy && !btc_log_placing}, {}, [], [0.4, 0, 0.4], 5] call ace_interact_menu_fnc_createAction;
-[btc_gear_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject;
+private _actions = [];
+_actions pushBack ["redeploy", localize "STR_BTC_HAM_ACTION_BIRESPAWN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa", {
+ if ([] call btc_fnc_fob_redeployCheck) then {
+ player setPos [10, 10, 10];
+ player hideObject true;
+ forceRespawn player;
+ };
+}, {!btc_log_placing}];
+_actions pushBack ["base", localize "STR_BTC_HAM_ACTION_REDEPLOYBASE", getText (configfile >> "CfgMarkers" >> getMarkerType "btc_base" >> "icon"), {
+ if ([] call btc_fnc_fob_redeployCheck) then {[_player, btc_respawn_marker, false] call BIS_fnc_moveToRespawnPosition};
+}, {!btc_log_placing}, {_this call btc_fnc_fob_redeploy}, "Base"];
+_actions pushBack ["rallypoints", localize "STR_BTC_HAM_ACTION_REDEPLOYRALLY", "\A3\ui_f\data\igui\cfg\simpleTasks\types\wait_ca.paa", {}, {!btc_log_placing}, {_this call btc_fnc_fob_redeploy}, ""];
+_actions pushBack ["FOB", localize "STR_BTC_HAM_ACTION_REDEPLOYFOB", "\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa", {}, {!btc_log_placing}];
+{
+ private _action = _x call ace_interact_menu_fnc_createAction;
+ [btc_gear_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject;
+ if (btc_p_respawn_fromFOBToBase) then {
+ [btc_fob_flag, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
+ };
+} forEach _actions;
+{
+ _x params ["_cardinal", "_degrees"];
+
+ _action = ["FOB" + _cardinal, localize _cardinal, "\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa", {}, {true}, {_this call btc_fnc_fob_redeploy}, _degrees] call ace_interact_menu_fnc_createAction;
+ [btc_gear_object, 0, ["ACE_MainActions", "FOB"], _action] call ace_interact_menu_fnc_addActionToObject;
+ if (btc_p_respawn_fromFOBToBase) then {
+ [btc_fob_flag, 0, ["ACE_MainActions", "FOB"], _action] call ace_interact_menu_fnc_addActionToClass;
+ };
+} forEach [["str_q_north_east", [0, 90]], ["str_q_south_east", [90, 180]], ["str_q_south_west", [180, 270]], ["str_q_north_west", [270, 360]]];
//Arsenal
//BIS
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/ask_var.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/ask_var.sqf
index b4973cb7c..2e955cce0 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/ask_var.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/ask_var.sqf
@@ -29,19 +29,6 @@ params [
];
private _data = switch (_id) do {
- case 0 : {_target getVariable ["active", false];};
- case 1 : {
- private _hd = objNull;
- {
- if (_x inArea [getPosWorld _target, 3000, 3000, 0, false]) then {
- _hd = _x;
- };
- } forEach btc_hideouts;
- _hd;
- };
- case 3 : {_target getVariable ["cargo", []];};
- case 4 : {_target getVariable ["tow", objNull];};
- case 8 : {count btc_hideouts;};
case 9 : {[_target] call btc_fnc_db_saveObjectStatus;};
case 10 : {
private _units = allUnits select {alive _x};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders.sqf
index 7e372801d..4570efe62 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders.sqf
@@ -44,40 +44,41 @@ if (isNull _unit) then {
btc_int_ask_data = nil;
["btc_global_reputation"] remoteExecCall ["btc_fnc_int_ask_var", 2];
- waitUntil {!(isNil "btc_int_ask_data")};
- private _rep = btc_int_ask_data;
-
- if (_rep >= 500) then {
- [name _unit, localize "STR_BTC_HAM_CON_INT_ORDERS_SHOWMAP"] call btc_fnc_showSubtitle;
- openMap true;
- ["1", "onMapSingleClick", {
- if (surfaceIsWater _pos) then {
- [name (_this select 4), localize "STR_BTC_HAM_CON_INT_ORDERS_ONLAND"] call btc_fnc_showSubtitle;
- } else {
- [[_this select 4], 0, 4, _pos] remoteExecCall ["btc_fnc_int_orders_give", _this select 4];
- ["1", "onMapSingleClick"] call BIS_fnc_removeStackedEventHandler;
- openMap false;
- private _textMap = selectRandom [
- localize "STR_BTC_HAM_CON_INT_ORDERS_TAXI_OK1",
- localize "STR_BTC_HAM_CON_INT_ORDERS_TAXI_OK2",
- localize "STR_BTC_HAM_CON_INT_ORDERS_TAXI_OK3"
- ];
- [name (_this select 4), _textMap] call btc_fnc_showSubtitle;
+ [{!(isNil "btc_int_ask_data")}, {
+ private _rep = btc_int_ask_data;
+
+ if (_rep >= 500) then {
+ [name _unit, localize "STR_BTC_HAM_CON_INT_ORDERS_SHOWMAP"] call btc_fnc_showSubtitle;
+ openMap true;
+ ["1", "onMapSingleClick", {
+ if (surfaceIsWater _pos) then {
+ [name (_this select 4), localize "STR_BTC_HAM_CON_INT_ORDERS_ONLAND"] call btc_fnc_showSubtitle;
+ } else {
+ [[_this select 4], 0, 4, _pos] remoteExecCall ["btc_fnc_int_orders_give", _this select 4];
+ ["1", "onMapSingleClick"] call BIS_fnc_removeStackedEventHandler;
+ openMap false;
+ private _textMap = selectRandom [
+ localize "STR_BTC_HAM_CON_INT_ORDERS_TAXI_OK1",
+ localize "STR_BTC_HAM_CON_INT_ORDERS_TAXI_OK2",
+ localize "STR_BTC_HAM_CON_INT_ORDERS_TAXI_OK3"
+ ];
+ [name (_this select 4), _textMap] call btc_fnc_showSubtitle;
+ };
+ }, [_unit]] call BIS_fnc_addStackedEventHandler;
+ } else {
+ if !(player getVariable ["interpreter", false]) exitWith {
+ [name _unit, localize "STR_BTC_HAM_CON_INFO_ASKREP_NOINTER"] call btc_fnc_showSubtitle;
};
- }, [_unit]] call BIS_fnc_addStackedEventHandler;
- } else {
- if !(player getVariable ["interpreter", false]) exitWith {
- [name _unit, localize "STR_BTC_HAM_CON_INFO_ASKREP_NOINTER"] call btc_fnc_showSubtitle;
- };
- private _text = selectRandom [
- localize "STR_BTC_HAM_CON_INT_ORDERS_NEG1",
- localize "STR_BTC_HAM_CON_INT_ORDERS_NEG2",
- localize "STR_BTC_HAM_CON_INT_ORDERS_NEG3",
- localize "STR_BTC_HAM_CON_INT_ORDERS_NEG4"
- ];
- [name _unit, _text] call btc_fnc_showSubtitle;
- };
+ private _text = selectRandom [
+ localize "STR_BTC_HAM_CON_INT_ORDERS_NEG1",
+ localize "STR_BTC_HAM_CON_INT_ORDERS_NEG2",
+ localize "STR_BTC_HAM_CON_INT_ORDERS_NEG3",
+ localize "STR_BTC_HAM_CON_INT_ORDERS_NEG4"
+ ];
+ [name _unit, _text] call btc_fnc_showSubtitle;
+ };
+ }, [_unit, _pos]] call CBA_fnc_waitUntilAndExecute;
} else {
[[_unit], _dir, _order] remoteExecCall ["btc_fnc_int_orders_give", _unit];
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_behaviour.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_behaviour.sqf
index 72bda8866..1a61076bc 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_behaviour.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_behaviour.sqf
@@ -78,7 +78,6 @@ if (_order isEqualTo 4) then {
_unit setVariable ["order", nil];
_unit setUnitPos "AUTO";
_unit enableAI "PATH";
-_unit doMove getPos _unit;
if (_unit isEqualTo vehicle _unit) then {
[_group] call btc_fnc_civ_addWP;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/lift/deployRopes.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/lift/deployRopes.sqf
index 0880665c9..fac66bebf 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/lift/deployRopes.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/lift/deployRopes.sqf
@@ -37,7 +37,7 @@ btc_lift_action_hud = player addAction ["" + (localize "STR
btc_lift_hud = false;
} else {
btc_lift_hud = true;
- [] spawn btc_fnc_lift_hud;
+ [] call btc_fnc_lift_hud;
};
}, [], -8, false, false, "", "true"]; //"" + ("Hud On\Off") + ""
btc_lift_action = player addAction ["" + (localize "STR_BTC_HAM_ACTION_VEHINIT_HOOK") + "",{[] call btc_fnc_lift_hook}, [], 9, true, false, "", "[] call btc_fnc_lift_check"]; //"" + ("Hook") + ""
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/lift/hookFake.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/lift/hookFake.sqf
index 9b6bf4828..d8c9b3f13 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/lift/hookFake.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/lift/hookFake.sqf
@@ -26,7 +26,7 @@ params [
["_chopper", objNull, [objNull]]
];
-private _simulation = createVehicle ["Box_EAF_AmmoVeh_F", getPosATL _cargo , [], 0, "CAN_COLLIDE"];
+private _simulation = createVehicle ["Box_EAF_AmmoVeh_F", getPosATL _cargo, [], 0, "CAN_COLLIDE"];
_simulation enableSimulation false;
(getPosATL _cargo) params ["_x", "_y", "_z"];
_simulation setPosATL [_x, _y, [_z, 0] select (_z < -0.05)];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/CuratorObjectPlaced_s.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/CuratorObjectPlaced_s.sqf
deleted file mode 100644
index 726525ffd..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/CuratorObjectPlaced_s.sqf
+++ /dev/null
@@ -1,31 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_log_CuratorObjectPlaced_s
-
-Description:
- Fill me when you edit me !
-
-Parameters:
- _obj_created - [Object]
-
-Returns:
-
-Examples:
- (begin example)
- _result = [] call btc_fnc_log_CuratorObjectPlaced_s;
- (end)
-
-Author:
- Vdauphin
-
----------------------------------------------------------------------------- */
-
-params [
- ["_obj_created", objNull, [objNull]]
-];
-
-[_obj_created] call btc_fnc_log_init;
-
-if (btc_debug_log) then {
- [format ["btc_log_obj_created UPDATED by curator %1", _obj_created], __FILE__, [false]] call btc_fnc_debug_message;
-};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/copy.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/copy.sqf
index 2afb4e2d8..6df1fc4f8 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/copy.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/copy.sqf
@@ -32,8 +32,9 @@ if (_objects isEqualTo []) exitWith {(localize "STR_BTC_HAM_O_COPY_NOCONTAINER")
btc_int_ask_data = nil;
[9, _objects select 0] remoteExecCall ["btc_fnc_int_ask_var", 2];
-waitUntil {!(isNil "btc_int_ask_data")};
-btc_copy_container = +btc_int_ask_data;
+[{!(isNil "btc_int_ask_data")}, {
+ btc_copy_container = +btc_int_ask_data;
-(localize "STR_BTC_HAM_O_COPY_SUCCSESS") call CBA_fnc_notify;
+ (localize "STR_BTC_HAM_O_COPY_SUCCSESS") call CBA_fnc_notify;
+}] call CBA_fnc_waitUntilAndExecute;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/createVehicle.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/createVehicle.sqf
index be9b393b8..a45acb132 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/createVehicle.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/createVehicle.sqf
@@ -16,6 +16,8 @@ Parameters:
_pylons - Set pylon loadout. [Array]
_isContaminated - Set a vehicle contaminated. [Boolean]
_supplyVehicle - Is supply vehicle and current supply count. [Boolean]
+ _EDENinventory - Load EDEN inventory define in mission.sqm. [Array]
+ _allHitPointsDamage - Apply hit point damage to the vehicle. [Array]
Returns:
@@ -39,7 +41,9 @@ params [
["_fuelSource", [], [[]]],
["_pylons", [], [[]]],
["_isContaminated", false, [false]],
- ["_supplyVehicle", [], [[]]]
+ ["_supplyVehicle", [], [[]]],
+ ["_EDENinventory", [], [[]]],
+ ["_allHitPointsDamage", [], [[]]]
];
private _veh = createVehicle [_type, ASLToATL _pos, [], 0, "CAN_COLLIDE"];
@@ -47,6 +51,10 @@ _veh setDir _dir;
_veh setPosASL _pos;
[_veh, _customization, _isMedicalVehicle, _isRepairVehicle, _fuelSource, _pylons, _isContaminated, _supplyVehicle] call btc_fnc_setVehProperties;
+if !(_EDENinventory isEqualTo []) then {
+ _veh setVariable ["btc_EDENinventory", _EDENinventory];
+ [_veh, _EDENinventory] call btc_fnc_log_setCargo;
+};
_veh setVariable ["btc_dont_delete", true];
@@ -54,6 +62,17 @@ if (getNumber(configFile >> "CfgVehicles" >> typeOf _veh >> "isUav") isEqualTo 1
createVehicleCrew _veh;
};
+if !(_allHitPointsDamage isEqualTo []) then {
+ {//Disable explosion effect on vehicle creation
+ [_veh, _forEachindex, _x, false] call ace_repair_fnc_setHitPointDamage;
+ } forEach (_allHitPointsDamage select 2);
+ if ((_allHitPointsDamage select 2) select {_x < 1} isEqualTo []) then {
+ _veh setVariable ["ace_cookoff_enable", false, true];
+ _veh setVariable ["ace_cookoff_enableAmmoCookoff", false, true];
+ _veh setDamage [1, false];
+ };
+};
+
_veh call btc_fnc_db_add_veh;
_veh
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_apply.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_apply.sqf
index cc2318c62..9c995ec62 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_apply.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_apply.sqf
@@ -6,6 +6,7 @@ Description:
Fill me when you edit me !
Parameters:
+ _create_object_point - Helipad where to create the object. [Object]
Returns:
@@ -19,22 +20,28 @@ Author:
---------------------------------------------------------------------------- */
-private _class = lbData [72, lbCurSel 72];
+params [
+ ["_create_object_point", btc_log_create_obj, [objNull]]
+];
+
+[{
+ params ["_class", "_create_object_point"];
+
+ if (_class isEqualTo btc_supplies_cargo) then {
+ btc_supplies_mat params ["_food", "_water"];
+ private _position_world = getPosWorld _create_object_point;
+ _position_world params ["_xx", "_yy", "_zz"];
+ [[
+ btc_supplies_cargo,
+ [_xx, _yy, _zz + 1.5], getDir _create_object_point,
+ "",
+ [selectRandom _food, selectRandom _water] apply {[_x, "", [[[], []], [[], []], [[], []]]]},
+ [[[], []], [[], []], [[], []]],
+ [vectorDir _create_object_point, vectorUp _create_object_point]
+ ]] remoteExecCall ["btc_fnc_db_loadObjectStatus", 2];
+ } else {
+ [_class, getPosASL _create_object_point] remoteExecCall ["btc_fnc_log_create_s", 2];
+ };
+}, [lbData [72, lbCurSel 72], _create_object_point], 0.2] call CBA_fnc_waitAndExecute;
+
closeDialog 0;
-sleep 0.2;
-
-if (_class isEqualTo btc_supplies_cargo) then {
- btc_supplies_mat params ["_food", "_water"];
- private _position_world = getPosWorld btc_create_object_point;
- _position_world params ["_xx", "_yy", "_zz"];
- [[
- btc_supplies_cargo,
- [_xx, _yy, _zz + 1.5], getDir btc_create_object_point,
- "",
- [selectRandom _food, selectRandom _water] apply {[_x, "", [[[], []], [[], []], [[], []]]]},
- [[[], []], [[], []], [[], []]],
- [vectorDir btc_create_object_point, vectorUp btc_create_object_point]
- ]] remoteExecCall ["btc_fnc_db_loadObjectStatus", 2];
-} else {
- [_class] remoteExecCall ["btc_fnc_log_create_s", 2];
-};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/delete.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/delete.sqf
index 991a70fc0..33f1591a5 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/delete.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/delete.sqf
@@ -38,4 +38,4 @@ if (_array isEqualTo []) exitWith {
] call CBA_fnc_notify;
};
-[_array select 0] remoteExec ["btc_fnc_log_server_delete", [2]];
+[_array select 0] remoteExecCall ["btc_fnc_log_server_delete", [2]];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/dlg.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/dlg.hpp
index e7ff8eb72..c82267511 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/dlg.hpp
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/dlg.hpp
@@ -8,7 +8,7 @@ class btc_log_dlg_create {
class btc_log_dlg_Apply : btc_dlg_button {
idc = -1;
text = $STR_ui_debug_but_apply; //Apply
- action = "[] spawn btc_fnc_log_create_apply";
+ action = "[] call btc_fnc_log_create_apply";
x = 0 * safezoneW + safezoneX;
y = 0.25 * safezoneH + safezoneY;
default = true;
@@ -23,7 +23,7 @@ class btc_log_dlg_create {
};
class btc_log_dlg_main_class : btc_dlg_comboBox {
idc = 71;
- onLBSelChanged = "[] spawn btc_fnc_log_create_change_target";
+ onLBSelChanged = "[] call btc_fnc_log_create_change_target";
x = 0 * safezoneW + safezoneX;
y = 0 * safezoneH + safezoneY;
w = 0.4 * safezoneW;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_corner_points.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_corner_points.sqf
index 27a80fb09..ae56a6a6d 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_corner_points.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_corner_points.sqf
@@ -12,7 +12,7 @@ Returns:
Examples:
(begin example)
- _result = [] call btc_fnc_log_get_corner_points;
+ _result = [cursorObject] call btc_fnc_log_get_corner_points;
(end)
Author:
@@ -38,12 +38,75 @@ if (_vehicle isKindOf "Helicopter") then {
(getCenterOfMass _vehicle) params ["_centerOfMass_x", "_centerOfMass_y", "_centerOfMass_z"];
(boundingBoxReal _vehicle) params ["_p1", "_p2"];
([0, 1] apply {abs ((_p2 select _x) - (_p1 select _x))}) params ["_maxWidth", "_maxLength"];
+(0 boundingBoxReal _vehicle) params ["_p1", "_p2"];
private _widthOffset = ((_maxWidth / 2) - abs _centerOfMass_x) * _widthFactor;
private _lengthOffset = ((_maxLength / 2) - abs _centerOfMass_y) * _lengthFactor;
-private _rearCorner = [_centerOfMass_x + _widthOffset, _centerOfMass_y - _lengthOffset, _centerOfMass_z];
-private _rearCorner2 = [_centerOfMass_x - _widthOffset, _centerOfMass_y - _lengthOffset, _centerOfMass_z];
+private _rearCorner = [_centerOfMass_x + _widthOffset, _p1 select 1, _centerOfMass_z];
+private _rearCorner2 = [_centerOfMass_x - _widthOffset, _p1 select 1, _centerOfMass_z];
private _frontCorner = [_centerOfMass_x + _widthOffset, _centerOfMass_y + _lengthOffset, _centerOfMass_z];
private _frontCorner2 = [_centerOfMass_x - _widthOffset, _centerOfMass_y + _lengthOffset, _centerOfMass_z];
+if (btc_debug) then {
+ _vehicle call {
+ private ["_obj","_bb","_bbx","_bby","_bbz","_arr","_y","_z"];
+ _obj = _this;
+ _bb = {
+ _bbx = [_this select 0 select 0, _this select 1 select 0];
+ _bby = [_this select 0 select 1, _this select 1 select 1];
+ _bbz = [_this select 0 select 2, _this select 1 select 2];
+ _arr = [];
+ 0 = {
+ _y = _x;
+ 0 = {
+ _z = _x;
+ 0 = {
+ 0 = _arr pushBack (_obj modelToWorld [_x,_y,_z]);
+ } count _bbx;
+ } count _bbz;
+ reverse _bbz;
+ } count _bby;
+ _arr pushBack (_arr select 0);
+ _arr pushBack (_arr select 1);
+ _arr
+ };
+ bbox = 0 boundingBoxReal _obj call _bb;
+ bboxr = [_rearCorner, _frontCorner2] call _bb;
+ addMissionEventHandler ["Draw3D", {
+ for "_i" from 0 to 7 step 2 do {
+ drawLine3D [
+ bbox select _i,
+ bbox select (_i + 2),
+ [0,0,1,1]
+ ];
+ drawLine3D [
+ bboxr select _i,
+ bboxr select (_i + 2),
+ [0,1,0,1]
+ ];
+ drawLine3D [
+ bbox select (_i + 2),
+ bbox select (_i + 3),
+ [0,0,1,1]
+ ];
+ drawLine3D [
+ bboxr select (_i + 2),
+ bboxr select (_i + 3),
+ [0,1,0,1]
+ ];
+ drawLine3D [
+ bbox select (_i + 3),
+ bbox select (_i + 1),
+ [0,0,1,1]
+ ];
+ drawLine3D [
+ bboxr select (_i + 3),
+ bboxr select (_i + 1),
+ [0,1,0,1]
+ ];
+ };
+ }];
+ };
+};
+
[_rearCorner, _rearCorner2, _frontCorner, _frontCorner2];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/repair_wreck.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/repair_wreck.sqf
index 92c960a0d..391fb1667 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/repair_wreck.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/repair_wreck.sqf
@@ -33,4 +33,4 @@ if (_array isEqualTo []) exitWith {(localize "STR_BTC_HAM_LOG_RWRECK_NOWRECK") c
if (damage (_array select 0) != 1) exitWith {(localize "STR_BTC_HAM_LOG_RWRECK_NOTWRECK") call CBA_fnc_notify};
-[_array select 0] remoteExec ["btc_fnc_log_server_repair_wreck", 2];
+[_array select 0] remoteExecCall ["btc_fnc_log_server_repair_wreck", 2];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_repair_wreck.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_repair_wreck.sqf
index 261db108e..ff0e6770d 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_repair_wreck.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_repair_wreck.sqf
@@ -35,6 +35,7 @@ private _dir = getDir _veh;
private _marker = _veh getVariable ["marker", ""];
private _vehProperties = [_veh] call btc_fnc_getVehProperties;
_vehProperties set [5, false];
+private _EDENinventory = _veh getVariable ["btc_EDENinventory", []];
btc_vehicles = btc_vehicles - [_veh];
@@ -42,8 +43,15 @@ if (_marker != "") then {
deleteMarker _marker;
remoteExecCall ["", _marker];
};
-deleteVehicle _veh;
-sleep 1;
-_veh = ([_type, [_x, _y, 0.5 + _z], _dir] + _vehProperties) call btc_fnc_log_createVehicle;
-_veh
+if !((getVehicleCargo _veh) isEqualTo []) then {
+ _veh setVehicleCargo objNull;
+};
+
+[{
+ deleteVehicle _this;
+}, _veh] call CBA_fnc_execNextFrame;
+
+[{
+ _this call btc_fnc_log_createVehicle;
+}, [_type, [_x, _y, 0.5 + _z], _dir] + _vehProperties + [_EDENinventory], 1] call CBA_fnc_waitAndExecute;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/CuratorMilPlaced_s.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/CuratorMilPlaced_s.sqf
deleted file mode 100644
index 47a868140..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/CuratorMilPlaced_s.sqf
+++ /dev/null
@@ -1,31 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_mil_CuratorMilPlaced_s
-
-Description:
- Fill me when you edit me !
-
-Parameters:
- _unit - [Object]
-
-Returns:
-
-Examples:
- (begin example)
- _result = [] call btc_fnc_mil_CuratorMilPlaced_s;
- (end)
-
-Author:
- Vdauphin
-
----------------------------------------------------------------------------- */
-
-params [
- ["_unit", objNull, [objNull]]
-];
-
-[group _unit] call btc_fnc_mil_unit_create;
-
-if (btc_debug_log) then {
- [format ["%1", _unit], __FILE__, [false]] call btc_fnc_debug_message;
-};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/addWP.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/addWP.sqf
index f54ad5c9f..3cb1e25cc 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/addWP.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/addWP.sqf
@@ -41,7 +41,7 @@ switch (true) do {
private _houses = [_city, _area] call btc_fnc_getHouses;
if !(_houses isEqualTo []) then {
private _house = selectRandom _houses;
- [_group, _house] spawn btc_fnc_house_addWP;
+ [_group, _house] call btc_fnc_house_addWP;
_group setVariable ["btc_inHouse", typeOf _house];
} else {
[_group, _rpos, _area, 2 + floor (random 4), "MOVE", "SAFE", "RED", ["LIMITED", "NORMAL"] select ((vehicle leader _group) isKindOf "Air"), "STAG COLUMN", "", [5, 10, 20]] call CBA_fnc_taskPatrol;
@@ -51,7 +51,8 @@ switch (true) do {
[_group, _rpos, _area, 2 + floor (random 4), "MOVE", "AWARE", "RED", ["LIMITED", "NORMAL"] select ((vehicle leader _group) isKindOf "Air"), "STAG COLUMN", "", [5, 10, 20]] call CBA_fnc_taskPatrol;
};
case (_wp > _wp_sentry_probability) : {
- [_group, _rpos, -1, "SENTRY", "AWARE", "RED", "UNCHANGED", "WEDGE", "(group this) spawn btc_fnc_data_add_group;", [18000, 36000, 54000]] call CBA_fnc_addWaypoint;
+ [_group] call CBA_fnc_clearWaypoints;
+ [_group, _rpos, -1, "SENTRY", "AWARE", "RED", "UNCHANGED", "WEDGE", "(group this) call btc_fnc_data_add_group;", [18000, 36000, 54000]] call CBA_fnc_addWaypoint;
};
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/add_eh.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/add_eh.sqf
deleted file mode 100644
index aabf5f9f7..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/add_eh.sqf
+++ /dev/null
@@ -1,29 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_mil_add_eh
-
-Description:
- Add EH to military unit.
-
-Parameters:
- _unit - Unit. [Object]
-
-Returns:
-
-Examples:
- (begin example)
- [cursorObject] call btc_fnc_mil_add_eh;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_unit", objNull, [objNull]]
-];
-
-[_unit, "Killed", "btc_fnc_mil_unit_killed"] call btc_fnc_eh_persistOnLocalityChange;
-
-true
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/class.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/class.sqf
index 27a22355a..69ff82e94 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/class.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/class.sqf
@@ -75,7 +75,10 @@ if (_enemy_side isEqualTo btc_player_side) exitWith {
private _faction = _x;
//Get all vehicles of the _faction selected
- private _allclass_f = _allclass select {(toUpper getText (_cfgVehicles >> _x >> "faction")) isEqualTo _faction};
+ private _allclass_f = _allclass select {
+ (toUpper getText (_cfgVehicles >> _x >> "faction")) isEqualTo _faction &&
+ {!(_x isKindOf "Van_02_vehicle_base_F")} // https://feedback.bistudio.com/T129141
+ };
//Units
_divers = _allclass_f select {[_x, ["AssaultRifle", "64 + 32"]] call btc_fnc_mil_ammoUsage};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/createUnits.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/createUnits.sqf
index 0986837ab..ee00f4d85 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/createUnits.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/createUnits.sqf
@@ -41,13 +41,7 @@ for "_i" from 1 to _number do {
selectRandom _type_units;
};
- private _unit = _group createUnit [_unit_type, _pos, [], 0, "CARGO"];
- [_unit] joinSilent _group;
-
- if (canSuspend) then {
- sleep 1;
- };
+ [_group, _unit_type, _pos] call btc_fnc_delay_createUnit;
};
-[_group] call btc_fnc_mil_unit_create;
_group
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/createVehicle.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/createVehicle.sqf
index df2a674ec..058a57482 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/createVehicle.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/createVehicle.sqf
@@ -13,13 +13,17 @@ Parameters:
_type_units - Array of available unit type for cargo. [Array]
_type_divers - Units used for submarine. [Array]
_type_crewmen - Array of available crews type. [Array]
+ _surfaceNormal - Surface normal. [Array]
Returns:
- _veh - Vehicle created. [Object]
+ _delay_vehicle - Delay for unit creation. [Number]
Examples:
(begin example)
- _veh = [createGroup [btc_enemy_side, true], getPosATL player] call btc_fnc_mil_createVehicle;
+ [createGroup [btc_enemy_side, true], player getPos [10, direction player]] call btc_fnc_mil_createVehicle;
+ (end)
+ (begin example)
+ [createGroup [btc_enemy_side, true], player getPos [10, direction player], "O_G_Van_02_vehicle_F"] call btc_fnc_mil_createVehicle;
(end)
Author:
@@ -27,39 +31,30 @@ Author:
---------------------------------------------------------------------------- */
+if (canSuspend) exitWith {[btc_fnc_mil_createVehicle, _this] call CBA_fnc_directCall};
+
params [
["_group", grpNull, [grpNull]],
["_pos", [0, 0, 0], [[]]],
["_veh_type", selectRandom btc_type_motorized, [""]],
["_dir", 0, [0]],
+ ["_surfaceNormal", [], [[]]],
["_type_units", btc_type_units, [[]]],
["_type_divers", btc_type_divers, [[]]],
- ["_type_crewmen", btc_type_crewmen, [[]]],
- ["_p_chem", btc_p_chem, [false]]
+ ["_type_crewmen", btc_type_crewmen, [[]]]
];
private _needdiver = getText (configFile >> "CfgVehicles" >> _veh_type >> "simulation") isEqualTo "submarinex";
-if (_veh_type isKindOf "Van_02_vehicle_base_F") then {
- _veh_type = "I_C_Van_02_transport_F"; // https://feedback.bistudio.com/T129141
-};
+_type_crewmen = [_type_crewmen, _type_divers select 0] select _needdiver;
-private _veh = createVehicle [_veh_type, _pos, [], 0, "FLY"];
-if !(_veh_type isKindOf "Plane") then {
- _veh setDir _dir;
- _veh setVectorUp surfaceNormal position _veh;
+private _units_type = [];
+private _crewSeats = [_veh_type, false] call BIS_fnc_crewCount;
+private _totalSeats = [_veh_type, true] call BIS_fnc_crewCount;
+for "_i" from 0 to (_crewSeats - 1) do {
+ _units_type pushBack _type_crewmen
};
-if (_p_chem) then {
- _veh addEventHandler ["GetIn", {
- [_this select 0, _this select 2] call btc_fnc_chem_propagate;
- _this
- }];
+for "_i" from _crewSeats to (_totalSeats - 1) do {
+ _units_type pushBack selectRandom _type_units;
};
-private _units = [_veh, _group, false, "", [_type_crewmen, _type_divers select 0] select _needdiver] call BIS_fnc_spawnCrew;
-_group selectLeader (driver _veh);
-_units joinSilent _group;
-
-private _cargo = _veh emptyPositions "cargo";
-[_group, _pos, _cargo, _needdiver, _type_units, _type_divers] call btc_fnc_mil_createUnits;
-
-_veh
+[_group, _veh_type, _units_type, _pos, _dir, 1, _surfaceNormal] call btc_fnc_delay_createVehicle
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_group.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_group.sqf
index b4b3f6c5b..1a162829b 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_group.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_group.sqf
@@ -45,6 +45,9 @@ _wp_ratios params ["_wp_house_probability", "_wp_sentry_probability"];
([_city, _area] call btc_fnc_city_findPos) params ["_rpos", "_pos_iswater"];
private _group = createGroup _enemy_side;
+if (_city isEqualType objNull) then {
+ _group setVariable ["btc_city", _city];
+};
private _groups = [];
_groups pushBack _group;
@@ -57,6 +60,9 @@ switch (true) do {
};
for "_i" from 1 to _n do {
private _grp = createGroup _enemy_side;
+ if (_city isEqualType objNull) then {
+ _grp setVariable ["btc_city", _city];
+ };
[_grp, _rpos, 1] call btc_fnc_mil_createUnits;
_grp setVariable ["btc_inHouse", typeOf _structure];
[_grp, _structure] call btc_fnc_house_addWP;
@@ -64,12 +70,13 @@ switch (true) do {
};
};
case (_wp > _wp_house_probability && _wp <= _wp_sentry_probability) : {
- [_group, _rpos, _n, _pos_iswater] call btc_fnc_mil_createUnits;
[_group, _rpos, _area, 2 + floor (random 4), "MOVE", "SAFE", "RED", "LIMITED", "STAG COLUMN", "", [5, 10, 20]] call CBA_fnc_taskPatrol;
+ [_group, _rpos, _n, _pos_iswater] call btc_fnc_mil_createUnits;
};
case (_wp > _wp_sentry_probability) : {
- [_group, _rpos, _n, _pos_iswater] call btc_fnc_mil_createUnits;
+ [_group] call CBA_fnc_clearWaypoints;
[_group, _rpos, -1, "SENTRY", "AWARE", "RED"] call CBA_fnc_addWaypoint;
+ [_group, _rpos, _n, _pos_iswater] call btc_fnc_mil_createUnits;
};
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout.sqf
index 1faff02d9..ba2dd3ef4 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout.sqf
@@ -3,21 +3,27 @@
Function: btc_fnc_mil_create_hideout
Description:
- Fill me when you edit me !
+ Create hideout randomnly or with defined position.
Parameters:
- _pos - [Array]
- _id_hideout - [Number]
- _rinf_time - [Number]
- _cap_time - [Number]
- _id - [Number]
- _markers_saved - [Array]
+ _pos - Poisition of the hideout. [Array]
+ _id_hideout - Id of the hideout. [Number]
+ _rinf_time - Not used. [Number]
+ _cap_time - Time for next capture of city around. [Number]
+ _id - Id of the city where the hideout is. [Number]
+ _markers_saved - Merkers find by player. [Array]
Returns:
Examples:
(begin example)
- _result = [] call btc_fnc_mil_create_hideout;
+ [] call btc_fnc_mil_create_hideout;
+ (end)
+ (begin example)
+ selectMin (btc_hideouts apply {
+ private _ho = _x;
+ selectMin ((btc_hideouts - [_ho]) apply {_x distance _ho})
+ })
(end)
Author:
@@ -37,16 +43,28 @@ params [
private _city = objNull;
if (_pos isEqualTo []) then {
private _useful = btc_city_all select {(
- !(isNull _x) &&
- {!(_x getVariable ["active", false])} &&
- {_x distance (getMarkerPos btc_respawn_marker) > btc_hideout_safezone} &&
- {!(_x getVariable ["has_ho", false])} &&
- {_x getVariable ["type", ""] in ["NameLocal", "Hill", "NameVillage", "Airport"]}
- )};
- _city = selectRandom _useful;
-
- private _radius = ((_city getVariable ["RadiusX", 0]) + (_city getVariable ["RadiusY", 0]))/2;
- private _random_pos = [getPos _city, _radius] call btc_fnc_randomize_pos;
+ !(isNull _x) &&
+ {!(_x getVariable ["active", false])} &&
+ {_x distance (getMarkerPos btc_respawn_marker) > btc_hideout_safezone} &&
+ {!(_x getVariable ["has_ho", false])} &&
+ {_x getVariable ["type", ""] in ["NameLocal", "Hill", "NameVillage", "Airport"]}
+ )};
+ private _inHoRange = btc_city_all select {
+ !(isNull _x) &&
+ {
+ private _city = _x;
+ (selectMin (btc_hideouts apply {_x distance _city})) < btc_hideout_minRange
+ }
+ };
+ private _usefulRange = _useful - _inHoRange;
+ if (_usefulRange isEqualTo []) then {
+ _city = selectRandom _useful;
+ } else {
+ _city = selectRandom _usefulRange;
+ };
+
+ private _radius = _city getVariable ["radius", 0];
+ private _random_pos = [getPos _city, _radius/2] call btc_fnc_randomize_pos;
_pos = [_random_pos, 0, 100, 2, false] call btc_fnc_findsafepos;
_id = _city getVariable ["id", 0];
@@ -62,7 +80,7 @@ _city setVariable ["ho_pos", _pos];
if (btc_debug) then {deleteMarker format ["loc_%1", _id];};
deleteVehicle (_city getVariable ["trigger_player_side", objNull]);
-[_pos, btc_hideouts_radius, btc_hideouts_radius, _city, _city getVariable "occupied", _city getVariable "name", _city getVariable "type", _city getVariable "id"] call btc_fnc_city_trigger_player_side;
+[_pos, btc_hideouts_radius, _city, _city getVariable "occupied", _city getVariable "name", _city getVariable "type", _city getVariable "id"] call btc_fnc_city_trigger_player_side;
private _hideout = [_pos] call btc_fnc_mil_create_hideout_composition;
clearWeaponCargoGlobal _hideout;
@@ -104,5 +122,6 @@ if (btc_debug_log) then {
btc_hideouts_id = btc_hideouts_id + 1;
btc_hideouts pushBack _hideout;
+publicVariable "btc_hideouts";
true
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout_composition.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout_composition.sqf
index ab55d6edc..898f6736e 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout_composition.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout_composition.sqf
@@ -3,16 +3,17 @@
Function: btc_fnc_mil_create_hideout_composition
Description:
- Fill me when you edit me !
+ Create a random hideout composition.
Parameters:
- _pos - [Array]
+ _pos - Position. [Array]
Returns:
+ _result - The flag. [Object]
Examples:
(begin example)
- _result = [] call btc_fnc_mil_create_hideout_composition;
+ _result = [getPos (allPlayers#0)] call btc_fnc_mil_create_hideout_composition;
(end)
Author:
@@ -25,13 +26,14 @@ params [
];
private _type_bigbox = selectRandom ["Box_FIA_Ammo_F", "C_supplyCrate_F", "Box_East_AmmoVeh_F"];
+private _power = selectRandom btc_type_power;
private _composition_hideout = [
[selectRandom btc_type_campfire,0,[-2.30957,-1.02979,0]],
[_type_bigbox,121.331,[0.675781,-1.52539,0]],
[selectRandom btc_type_bigbox,227.166,[2.66504,1.4126,0]],
[selectRandom btc_type_sleepingbag,135.477,[0.758789,-3.91309,0]],
- [selectRandom btc_type_power,77.6499,[0.418945,3.51855,0]],
+ [_power,77.6499,[0.418945,3.51855,0]],
[selectRandom btc_type_seat,171.123,[-2.08203,-3.39795,0]],
["Flag_Red_F",0,[0,0,0]],
[selectRandom btc_type_sleepingbag,161.515,[-0.726563,-4.76953,0]],
@@ -44,8 +46,13 @@ private _composition_hideout = [
[selectRandom btc_type_tent,10,[-4.35303,-5.66309,0]],
[selectRandom btc_type_tent,300,[-8.47949,-1.64063,0]]
];
-if (random 1 > 0.5) then {
- _composition_hideout pushBack [selectRandom btc_type_camonet,0,[-0.84668,-2.16113,0]];
+if (
+ random 1 > 0.2 &&
+ {!(_power isKindOf "Land_JetEngineStarter_01_F")} &&
+ {!(_power isKindOf "Land_DieselGroundPowerUnit_01_F")} &&
+ {!(_power isKindOf "Land_WaterPump_01_F")}
+) then {
+ _composition_hideout pushBack [selectRandom (btc_type_camonet - ["Land_IRMaskingCover_02_F","CamoNet_BLUFOR_F","CamoNet_OPFOR_F","CamoNet_INDP_F","CamoNet_ghex_F","CamoNet_wdl_F"]),0,[-0.84668,-2.16113,0]];
};
private _composition = [_pos, random 360, _composition_hideout] call btc_fnc_create_composition;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_patrol.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_patrol.sqf
index ebd847a03..5801b0feb 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_patrol.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_patrol.sqf
@@ -6,6 +6,7 @@ Description:
Fill me when you edit me !
Parameters:
+ _group - Group of the patrol. [Group]
_random - [Number]
_active_city - [Object]
_area - [Number]
@@ -14,7 +15,7 @@ Returns:
Examples:
(begin example)
- _result = [] call btc_fnc_mil_create_patrol;
+ [2, (allPlayers#0), btc_patrol_area] call btc_fnc_mil_create_patrol;
(end)
Author:
@@ -23,6 +24,7 @@ Author:
---------------------------------------------------------------------------- */
params [
+ ["_group", grpNull, [grpNull]],
["_random", 0, [0]],
["_active_city", objNull, [objNull]],
["_area", btc_patrol_area, [0]]
@@ -38,21 +40,25 @@ if (btc_debug_log) then {
[format ["_random = %1 _active_city %2 _area %3 btc_patrol_active = %4", _random, _active_city, _area, count btc_patrol_active], __FILE__, [false]] call btc_fnc_debug_message;
};
-sleep 5 + random 10;
-
//Remove if too far from player
-if ([_active_city, grpNull, _area] call btc_fnc_patrol_playersInAreaCityGroup) exitWith {false};
+if ([_active_city, grpNull, _area] call btc_fnc_patrol_playersInAreaCityGroup) exitWith {
+ _group call CBA_fnc_deleteEntity;
+ false
+};
//Find a city
private _cities = btc_city_all inAreaArray [getPosWorld _active_city, _area, _area];
private _usefuls = _cities select {!(_x getVariable ["active", false]) && _x getVariable ["occupied", false]};
-if (_usefuls isEqualTo []) exitWith {false};
+if (_usefuls isEqualTo []) exitWith {
+ _group call CBA_fnc_deleteEntity;
+ false
+};
//Randomize position if city has a beach, so position could be in water
private _start_city = selectRandom _usefuls;
private _pos = [];
if (_start_city getVariable ["hasbeach", false]) then {
- _pos = [getPos _start_city, (_start_city getVariable ["RadiusX", 0]) + (_start_city getVariable ["RadiusY", 0]), btc_p_sea] call btc_fnc_randomize_pos;
+ _pos = [getPos _start_city, _start_city getVariable ["radius", 100], btc_p_sea] call btc_fnc_randomize_pos;
} else {
_pos = getPos _start_city;
};
@@ -63,17 +69,15 @@ if (_pos_isWater) then {
};
//Creating units
-private _group = createGroup [btc_enemy_side, true];
-btc_patrol_active pushBack _group;
-_group setVariable ["no_cache", true];
_group setVariable ["btc_patrol_id", btc_military_id, btc_debug];
btc_military_id = btc_military_id + 1;
-switch (_random) do {
+private _delay = switch (_random) do {
case 1 : {
_pos = [_pos, 0, 150, 10, false] call btc_fnc_findsafepos;
[_group, _pos, 5 + (round random 8)] call btc_fnc_mil_createUnits;
+ 0
};
case 2 : {
private _veh_type = "";
@@ -90,15 +94,13 @@ switch (_random) do {
_pos = getPos selectRandom _roads;
};
};
- private _veh = [_group, _pos, _veh_type] call btc_fnc_mil_createVehicle;
- _veh setVariable ["btc_crews", _group];
-
- [_veh, "Fuel", "btc_fnc_patrol_eh"] call btc_fnc_eh_persistOnLocalityChange;
+ [_group, _pos, _veh_type] call btc_fnc_mil_createVehicle
};
};
-[_group, [_start_city, _active_city], _area, _pos_isWater] call btc_fnc_patrol_init;
-
-[[_group]] call btc_fnc_set_groupsOwner;
+[{
+ _this call btc_fnc_patrol_init;
+ [[_this select 0]] call btc_fnc_set_groupsOwner;
+}, [_group, [_start_city, _active_city], _area, _pos_isWater], btc_delay_createUnit + _delay] call CBA_fnc_waitAndExecute;
true
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_static.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_static.sqf
index 87bd091d6..d4e96c17d 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_static.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_static.sqf
@@ -9,6 +9,8 @@ Parameters:
_pos - Position of creation. [Array]
_statics_type - Type of static available. [Array]
_dir - Direction of the static. [Number]
+ _surfaceNormal - Surface normal. [Array]
+ _city - City where the static is created. [Object]
Returns:
_static - Created static. [Object]
@@ -26,17 +28,19 @@ Author:
params [
["_pos", [0, 0, 0], [[]]],
["_statics_type", btc_type_mg, [[]]],
- ["_dir", 0, [0]]
+ ["_dir", 0, [0]],
+ ["_surfaceNormal", [], [[]]],
+ ["_city", objNull, [objNull]]
];
private _group = createGroup btc_enemy_side;
-private _static = [_group, _pos, selectRandom _statics_type, _dir] call btc_fnc_mil_createVehicle;
+_group setVariable ["btc_city", _city];
+[_group] call CBA_fnc_clearWaypoints;
+[_group, _pos, selectRandom _statics_type, _dir, _surfaceNormal] call btc_fnc_mil_createVehicle;
_group setBehaviour "COMBAT";
_group setCombatMode "RED";
if (btc_debug_log) then {
- [format ["POS %1 _type %2", _pos, typeOf _static], __FILE__, [false]] call btc_fnc_debug_message;
+ [format ["POS %1", _pos], __FILE__, [false]] call btc_fnc_debug_message;
};
-
-_static
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_staticOnRoof.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_staticOnRoof.sqf
new file mode 100644
index 000000000..21eeb06e8
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_staticOnRoof.sqf
@@ -0,0 +1,50 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_mil_create_staticOnRoof
+
+Description:
+ Create static on roof.
+
+Parameters:
+ _house - House to find the roof. [Group]
+ _n - Number of static to generate. [Number]
+ _city - City where the static is created. [Object]
+
+Returns:
+
+Examples:
+ (begin example)
+ _result = [[position player, 30] call btc_fnc_getHouses, 3] call btc_fnc_mil_create_staticOnRoof;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_houses", [], [[]]],
+ ["_n", 0, [0]],
+ ["_city", objNull, [objNull]]
+];
+
+private _i = 1;
+while {
+ _i <= _n &&
+ {!(_houses isEqualTo [])}
+} do {
+ private _house = _houses deleteAt 0;
+ private _houseType = typeOf _house;
+ if (
+ !(_houseType isKindOf "Ruins") &&
+ {!(_houseType isKindOf "Church")} &&
+ {!("Chapel" in _houseType)}
+ ) then {
+ ([_house] call btc_fnc_roof) params ["_spawnPos", "_surfaceNormal"];
+
+ if (acos (_surfaceNormal vectorCos [0, 0, 1]) < 30) then {
+ [ASLToATL _spawnPos, btc_type_mg + btc_type_gl, (_house getDir _spawnPos) + (random [-15, 0, 15]), _surfaceNormal, _city] call btc_fnc_mil_create_static;
+ _i = _i + 1;
+ };
+ };
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/hd_hideout.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/hd_hideout.sqf
index afe5fff19..4ea7c53cb 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/hd_hideout.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/hd_hideout.sqf
@@ -6,14 +6,13 @@ Description:
Fill me when you edit me !
Parameters:
- _hideout - [Object]
- _selection - [String]
- _damage - [Number]
- _source - [Object]
- _ammo - [String]
- _hitIndex - [Number]
- _instigator - [Object]
- _hitPoint - [String]
+ _hideout - Object to destroy. [Object]
+ _selection - Not use. [String]
+ _damage - Amount of damage get by the object. [Number]
+ _source - Not use. [Object]
+ _ammo - Type of ammo use to make damage. [String]
+ _hitIndex - Hit part index of the hit point, -1 otherwise. [Number]
+ _instigator - Person who pulled the trigger. [Object]
Returns:
@@ -34,17 +33,16 @@ params [
["_source", objNull, [objNull]],
["_ammo", "", [""]],
["_hitIndex", 0, [0]],
- ["_instigator", objNull, [objNull]],
- ["_hitPoint", "", [""]]
+ ["_instigator", objNull, [objNull]]
];
-params ["_hideout", "_selection", "_damage", "_source", "_ammo", "_hitIndex", "_instigator", "_hitPoint"];
private _explosive = getNumber(configFile >> "cfgAmmo" >> _ammo >> "explosive") > 0;
if (_explosive && {_damage > 0.6}) then {
btc_hideouts deleteAt (btc_hideouts find _hideout);
+ publicVariable "btc_hideouts";
- btc_rep_bonus_hideout call btc_fnc_rep_change;
+ [btc_rep_bonus_hideout, _instigator] call btc_fnc_rep_change;
private _id = _hideout getVariable "id";
private _marker = createMarker [format ["btc_hideout_%1_destroyed", _id], getPos _hideout];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/send.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/send.sqf
index c1565c42b..ceee87122 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/send.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/send.sqf
@@ -17,7 +17,7 @@ Returns:
Examples:
(begin example)
- _result = [] call btc_fnc_mil_send;
+ [(allPlayers#0), getPos (allPlayers#0), 1, selectRandom btc_type_motorized] call btc_fnc_mil_send
(end)
Author:
@@ -36,31 +36,40 @@ params [
private _pos = getPos _start;
private _group = grpNull;
+private _delay = 0;
switch (_typeOf_patrol) do {
case 0 : {
_group = ([_pos, 150, 3 + round random 6, 1] call btc_fnc_mil_create_group) select 0;
_group setVariable ["no_cache", true];
[_group] call CBA_fnc_clearWaypoints;
-
- [_group, _dest, -1, "MOVE", "AWARE", "RED", "FULL", _infFormation, "(group this) call btc_fnc_data_add_group;", nil, 60] call CBA_fnc_addWaypoint;
};
case 1 : {
- _group = createGroup [btc_enemy_side, true];
+ _group = createGroup btc_enemy_side;
_group setVariable ["no_cache", true];
+ [_group] call CBA_fnc_clearWaypoints;
if (_veh_type isEqualTo "") then {_veh_type = selectRandom btc_type_motorized};
-
private _return_pos = [_pos, 10, 500, 13, false] call btc_fnc_findsafepos;
- private _veh = [_group, _return_pos, _veh_type] call btc_fnc_mil_createVehicle;
+ _delay = [_group, _return_pos, _veh_type] call btc_fnc_mil_createVehicle;
+ };
+};
- [_group, _dest, -1, "MOVE", "AWARE", "RED", "NORMAL", "NO CHANGE", "(group this) call btc_fnc_data_add_group;", nil, 60] call CBA_fnc_addWaypoint;
- [_group, _dest, -1, "GETOUT", nil, nil, nil, nil, nil, nil, 60] call CBA_fnc_addWaypoint;
- [_group, _dest, -1, "SENTRY", nil, nil, nil, nil, nil, nil, 60] call CBA_fnc_addWaypoint;
+[{
+ params ["_group", "_typeOf_patrol", "_dest", "_infFormation"];
+ switch (_typeOf_patrol) do {
+ case 0 : {
+ [_group, _dest, -1, "MOVE", "AWARE", "RED", "FULL", _infFormation, "(group this) call btc_fnc_data_add_group;", nil, 60] call CBA_fnc_addWaypoint;
+ };
+ case 1 : {
+ [_group, _dest, -1, "MOVE", "AWARE", "RED", "NORMAL", "NO CHANGE", "(group this) call btc_fnc_data_add_group;", nil, 60] call CBA_fnc_addWaypoint;
+ };
};
-};
-[[_group]] call btc_fnc_set_groupsOwner;
+ [[_group]] call btc_fnc_set_groupsOwner;
+
+ _group deleteGroupWhenEmpty true;
+}, [_group, _typeOf_patrol, _dest, _infFormation], btc_delay_createUnit + _delay] call CBA_fnc_waitAndExecute;
_group
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_create.sqf
deleted file mode 100644
index fc11e0018..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_create.sqf
+++ /dev/null
@@ -1,34 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_mil_unit_create
-
-Description:
- Fill me when you edit me !
-
-Parameters:
- _group - [Object]
-
-Returns:
-
-Examples:
- (begin example)
- _result = [] call btc_fnc_mil_unit_create;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_group", grpNull, [grpNull]]
-];
-
-{
- _x setVariable ["btc_init", true];
- _x call btc_fnc_mil_add_eh;
-
- if (btc_p_set_skill) then {
- _x call btc_fnc_mil_set_skill;
- };
-} forEach (units _group select {!(_x getVariable ["btc_init", false])});
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_killed.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_killed.sqf
index 795157834..de48377d8 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_killed.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_killed.sqf
@@ -6,8 +6,9 @@ Description:
Fill me when you edit me !
Parameters:
- _unit - [Object]
- _killer - [Object]
+ _unit - Object the event handler is assigned to. [Object]
+ _killer - Object that killed the unit. Contains the unit itself in case of collisions. [Object]
+ _instigator - Person who pulled the trigger. [Object]
Returns:
@@ -21,26 +22,14 @@ Author:
---------------------------------------------------------------------------- */
-params [
- ["_unit", objNull, [objNull]],
- ["_killer", objNull, [objNull]]
-];
+params ["_unit", "_causeOfDeath", "_killer", "_instigator"];
-private _killer = _unit getVariable ["ace_medical_lastDamageSource", _killer];
-
-if (!isServer) exitWith {
- [_unit, _killer] remoteExecCall ["btc_fnc_mil_unit_killed", 2];
-};
+if !(side group _unit isEqualTo btc_enemy_side) exitWith {};
if (random 100 > btc_info_intel_chance) then {
_unit setVariable ["intel", true];
};
-if (isPlayer _killer) then {
- if (isServer) then {
- btc_rep_bonus_mil_killed call btc_fnc_rep_change;
- } else {
- btc_rep_bonus_mil_killed remoteExecCall ["btc_fnc_rep_change", 2];
- };
+if (isPlayer _instigator) then {
+ [btc_rep_bonus_mil_killed, _instigator] call btc_fnc_rep_change;
};
-
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/addEH.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/addEH.sqf
new file mode 100644
index 000000000..b8ab18a49
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/addEH.sqf
@@ -0,0 +1,34 @@
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_patrol_addEH
+
+Description:
+ Add events link to the patrol system.
+
+Parameters:
+ _veh - Vehicle. [Object]
+ _group - Group to store crews. [Group]
+
+Returns:
+
+Examples:
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_veh", objNull, [objNull]],
+ ["_group", grpNull, [grpNull]]
+];
+
+if (
+ !(_group in btc_civ_veh_active) &&
+ {!(_group in btc_patrol_active)}
+) exitWith {};
+
+_veh setVariable ["btc_crews", _group];
+[_veh, "Fuel", btc_fnc_patrol_eh] call CBA_fnc_addBISEventHandler;
+if (side _group isEqualTo civilian) then {
+ [_veh, "GetOut", btc_fnc_patrol_eh] call CBA_fnc_addBISEventHandler;
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/addWP.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/addWP.sqf
index 3815bb20c..e3c5fa0d2 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/addWP.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/addWP.sqf
@@ -37,28 +37,30 @@ if (_vehicle isKindOf "Air" || _vehicle isKindOf "LandVehicle") then {
_vehicle setFuel 1;
};
+[_group] call CBA_fnc_clearWaypoints;
private _behaviorMode = "SAFE";
private _combatMode = "RED";
if (side _group isEqualTo civilian) then {
_behaviorMode = "CARELESS";
_combatMode = "BLUE";
};
+
if (_vehicle isKindOf "Air") then {
[_group, _pos, -1, "MOVE", _behaviorMode, _combatMode, "LIMITED", "STAG COLUMN", _waypointStatements, [0, 0, 0], 20] call CBA_fnc_addWaypoint;
-
} else {
[_group, _pos, -1, "MOVE", _behaviorMode, _combatMode, "LIMITED", "STAG COLUMN", "", [0, 0, 0], 20] call CBA_fnc_addWaypoint;
+
for "_i" from 0 to (2 + (floor (random 3))) do {
private _newPos = [_pos, 150] call CBA_fnc_randPos;
[_group, _newPos, -1, "MOVE", "UNCHANGED", "RED", "UNCHANGED", "NO CHANGE", "", [0, 0, 0], 20] call CBA_fnc_addWaypoint;
};
- private _waypoint_WPCheck = [_group, _pos, -1, "MOVE", "UNCHANGED", "NO CHANGE", "UNCHANGED", "NO CHANGE", _waypointStatements, [0, 0, 0], 20] call CBA_fnc_addWaypoint;
+ [_group, _pos, -1, "MOVE", "UNCHANGED", "NO CHANGE", "UNCHANGED", "NO CHANGE", _waypointStatements, [0, 0, 0], 20] call CBA_fnc_addWaypoint;
};
if (btc_debug) then {
if (!isNil {_group getVariable "btc_patrol_id"}) then {
private _patrol_id = _group getVariable ["btc_patrol_id", 0];
- private _marker = createMarker [format ["Patrol_fant_%1", _patrol_id] , [(_pos select 0) + random 30, (_pos select 1) + random 30, 0]];
+ private _marker = createMarker [format ["Patrol_fant_%1", _patrol_id], [(_pos select 0) + random 30, (_pos select 1) + random 30, 0]];
_marker setMarkerType "mil_dot";
_marker setMarkerText format ["P %1", _patrol_id];
_marker setMarkerColor (["ColorWhite", "ColorRed"] select (_patrol_id > 0));
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/disabled.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/disabled.sqf
index 4b3003f86..4515e763b 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/disabled.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/disabled.sqf
@@ -26,9 +26,15 @@ params [
["_damage", 0.2, [0]]
];
+if (_veh getVariable ["btc_fnc_patrol_disabled_fired", false]) exitWith {};
+
if (_damage > 0.1) then {
- [_veh, "HandleDamage", "btc_fnc_patrol_disabled", false] call btc_fnc_eh_removePersistOnLocalityChange;
- [_veh] call btc_fnc_patrol_eh;
+ _veh setVariable ["btc_fnc_patrol_disabled_fired", true, true];
+ if (isServer) then {
+ [_veh] call btc_fnc_patrol_eh;
+ } else {
+ [_veh] remoteExecCall ["btc_fnc_patrol_eh", 2];
+ };
};
_damage
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/eh.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/eh.sqf
index 4bf4a3338..2e1c9e234 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/eh.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/eh.sqf
@@ -24,26 +24,32 @@ params [
["_veh", objNull, [objNull, grpNull]]
];
-if (!isServer) exitWith {
- _this remoteExecCall ["btc_fnc_patrol_eh", 2];
-
- if (btc_debug_log) then {
- [format ["%1, RECall", _veh, isRemoteExecuted], __FILE__, [false]] call btc_fnc_debug_message;
- };
-};
+if (_veh getVariable ["btc_fnc_patrol_eh_fired", false]) exitWith {};
+_veh setVariable ["btc_fnc_patrol_eh_fired", true, true];
if (btc_debug_log) then {
[format ["%1, isRE %2", _veh, isRemoteExecuted], __FILE__, [false]] call btc_fnc_debug_message;
};
+private _group = if (_veh isEqualType grpNull) then {
+ _veh
+} else {
+ _veh getVariable ["btc_crews", grpNull]
+};
+
+if !(
+ _group in btc_patrol_active ||
+ _group in btc_civ_veh_active
+) exitWith {};
+
if (_veh isEqualType objNull) then {
if (btc_debug) then {
- deleteMarker format ["Patrol_fant_%1", (_veh getVariable ["btc_crews", grpNull]) getVariable ["btc_patrol_id", 0]];
+ deleteMarker format ["Patrol_fant_%1", _group getVariable ["btc_patrol_id", 0]];
};
- _veh call btc_fnc_patrol_eh_remove;
- [[], [_veh, _veh getVariable ["btc_crews", grpNull]]] call btc_fnc_delete;
+ [[], [_veh, _group]] call btc_fnc_delete;
} else {
- (assignedVehicle leader _veh) call btc_fnc_patrol_eh_remove;
- [[], [assignedVehicle leader _veh, _veh]] call btc_fnc_delete;
+ private _vehicle = (assignedVehicle leader _veh);
+ _vehicle setVariable ["btc_fnc_patrol_eh_fired", true, true];
+ [[], [_vehicle, _veh]] call btc_fnc_delete;
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/eh_remove.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/eh_remove.sqf
deleted file mode 100644
index b61cef028..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/eh_remove.sqf
+++ /dev/null
@@ -1,31 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_patrol_eh_remove
-
-Description:
- Remove events.
-
-Parameters:
- _veh - Object with events. [Object]
-
-Returns:
- _bool - Events ID found. [Boolean]
-
-Examples:
- (begin example)
- [cursorTarget] call btc_fnc_patrol_eh_remove;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_veh", objNull, [objNull]]
-];
-
-[_veh, "Fuel", "btc_fnc_patrol_eh"] call btc_fnc_eh_removePersistOnLocalityChange;
-[_veh, "GetOut", "btc_fnc_patrol_eh"] call btc_fnc_eh_removePersistOnLocalityChange;
-[_veh, "HandleDamage", "btc_fnc_patrol_disabled"] remoteExecCall ["btc_fnc_eh_removePersistOnLocalityChange", _veh];
-[_veh, "HandleDamage", "btc_fnc_rep_hd"] remoteExecCall ["btc_fnc_eh_removePersistOnLocalityChange", _veh];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/init.sqf
index 33f6820ba..1986cf783 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/init.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/patrol/init.sqf
@@ -34,11 +34,15 @@ _cities params [
["_active_city", objNull, [objNull]]
];
+if !(isGroupDeletedWhenEmpty _group) then {
+ _group deleteGroupWhenEmpty true;
+};
+
private _end_city = selectRandom ([[_start_city, _active_city], _area, _isBoat] call btc_fnc_patrol_usefulCity);
private _pos = getPos _end_city;
if (_isBoat) then {
- ((selectBestPlaces [_pos, (_end_city getVariable ["RadiusX", 0]) + (_end_city getVariable ["RadiusY", 0]), "sea", 10, 1]) select 0 select 0) params ["_x", "_y"];
+ ((selectBestPlaces [_pos, _end_city getVariable ["radius", 100], "sea", 10, 1]) select 0 select 0) params ["_x", "_y"];
_pos = [_x, _y, 0];
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/add_eh.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/add_eh.sqf
deleted file mode 100644
index 47448d675..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/add_eh.sqf
+++ /dev/null
@@ -1,29 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_rep_add_eh
-
-Description:
- Add event handler link to the reputation system to a unit not initialised.
-
-Parameters:
- _civilian - Unit. [Object]
-
-Returns:
-
-Examples:
- (begin example)
- [curosrTarget] call btc_fnc_rep_add_eh;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_civilian", objNull, [objNull]]
-];
-
-[_civilian, "HandleDamage", "btc_fnc_rep_hd"] call btc_fnc_eh_persistOnLocalityChange;
-[_civilian, "Killed", "btc_fnc_rep_killed"] call btc_fnc_eh_persistOnLocalityChange;
-[_civilian, "FiredNear", "btc_fnc_rep_firednear"] call btc_fnc_eh_persistOnLocalityChange;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/call_militia.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/call_militia.sqf
index 98fd1c78d..9027f3163 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/call_militia.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/call_militia.sqf
@@ -41,7 +41,11 @@ if (btc_debug_log) then {
};
if (_start_pos isEqualTo objNull) then {
- _start_pos = [_pos, btc_city_all select {!(isNull _x) && !(_x getVariable ["active", false]) && _x getVariable ["type", ""] != "NameMarine"}, false] call btc_fnc_find_closecity;
+ _start_pos = [_pos, btc_city_all select {
+ !(isNull _x) &&
+ !(_x getVariable ["active", false]) &&
+ _x getVariable ["type", ""] != "NameMarine"
+ }, false] call btc_fnc_find_closecity;
};
private _ratio = if (_pos distance _start_pos > 1000) then {0.2} else {0.6};
@@ -50,19 +54,14 @@ if (btc_debug_log) then {
[format ["POS : %1 STARTPOS : %2 - RATIO = %3", _pos, _start_pos, _ratio], __FILE__, [false]] call btc_fnc_debug_message;
};
-if ((random 1) > _ratio) then {
- //MOT
- private _group = [_start_pos, _pos, 1] call btc_fnc_mil_send;
- [_group, _pos, -1, "UNLOAD", nil, nil, nil, nil, nil, nil, 60] call CBA_fnc_addWaypoint;
- [_group, _pos, -1, "SAD", nil, nil, nil, nil, nil, nil, 60] call CBA_fnc_addWaypoint;
+if ((random 1) > _ratio) then { //MOT
+ [_start_pos, _pos, 1] call btc_fnc_mil_send;
if (btc_debug_log) then {
[format ["MOT %1 POS %2", _group, _pos], __FILE__, [false]] call btc_fnc_debug_message;
};
-} else {
- //INF
- private _group = [_start_pos, _pos, 0, "", "WEDGE"] call btc_fnc_mil_send;
- [_group, _pos, -1, "SAD", nil, nil, nil, nil, nil, nil, 60] call CBA_fnc_addWaypoint;
+} else { //INF
+ [_start_pos, _pos, 0, "", "WEDGE"] call btc_fnc_mil_send;
if (btc_debug_log) then {
[format ["INF %1", _group], __FILE__, [false]] call btc_fnc_debug_message;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/change.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/change.sqf
index e713ba304..6f1ca457e 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/change.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/change.sqf
@@ -7,12 +7,13 @@ Description:
Parameters:
_reputation - Number to add or substrat to the reputation level. [Number]
+ _player - Player triggered the reputation change. [Number]
Returns:
Examples:
(begin example)
- [-10] call btc_fnc_rep_change;
+ [-10, player] call btc_fnc_rep_change;
(end)
Author:
@@ -21,12 +22,30 @@ Author:
---------------------------------------------------------------------------- */
params [
- ["_reputation", 0, [0]]
+ ["_reputation", 0, [0]],
+ ["_player", objNull, [objNull]]
];
-if (btc_debug_log) then {
- [format ["GLOBAL %1 - CHANGE %2", btc_global_reputation, _reputation], __FILE__, [false]] call btc_fnc_debug_message;
+if (btc_debug || btc_debug_log) then {
+ [format ["GLOBAL %1 - CHANGE %2", btc_global_reputation, _reputation], __FILE__, [btc_debug, btc_debug_log]] call btc_fnc_debug_message;
};
+
btc_global_reputation = btc_global_reputation + _reputation;
+if (btc_p_rep_notify) then {
+ if ((btc_rep_delayed select 1) isEqualTo []) then {
+ [{
+ [{
+ abs(btc_rep_delayed select 0) > 3
+ }, {
+ btc_rep_delayed call btc_fnc_rep_notify;
+ }, [], 10 * 60, {
+ btc_rep_delayed call btc_fnc_rep_notify;
+ }] call CBA_fnc_waitUntilAndExecute;
+ }, [], 0.5] call CBA_fnc_waitAndExecute;
+ };
+ btc_rep_delayed set [0, (btc_rep_delayed select 0) + _reputation];
+ (btc_rep_delayed select 1) pushBack [_reputation, _player];
+};
+
true
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/eh_effects.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/eh_effects.sqf
index 728e0e02f..0ee500de8 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/eh_effects.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/eh_effects.sqf
@@ -38,11 +38,11 @@ if (time > (btc_rep_militia_called + btc_rep_militia_call_time)) then {
};
if (btc_global_reputation < 300) then {
if (_random > 4) then { //GET WEAPONS
- [_pos, 300] call btc_fnc_civ_get_weapons;
+ [btc_fnc_civ_get_weapons, [_pos, 300], 5] call CBA_fnc_waitAndExecute;
};
} else {
if (_random > 1) then { //GET GRENADE
- [_pos, 300] call btc_fnc_civ_get_grenade;
+ [btc_fnc_civ_get_grenade, [_pos, 300], 5] call CBA_fnc_waitAndExecute;
};
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/explosives_defuse.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/explosives_defuse.sqf
index 7b1ddc272..fc70ee8de 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/explosives_defuse.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/explosives_defuse.sqf
@@ -28,5 +28,5 @@ params [
private _type_ied = typeOf _ied;
if ((_type_ied select [0, _type_ied find "_"]) in (btc_type_ieds_ace apply {_x select [0, _x find "_"]})) then {
- btc_rep_bonus_disarm call btc_fnc_rep_change;
+ [btc_rep_bonus_disarm, _unit] call btc_fnc_rep_change;
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/firednear.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/firednear.sqf
deleted file mode 100644
index 5ab00a5ec..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/firednear.sqf
+++ /dev/null
@@ -1,61 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_rep_firednear
-
-Description:
- Detect if player is firing. Then add a random panic animation. If player fire in direction of a civilian without enemies around, punish him by applying reputation effect and reduce reputation.
-
-Parameters:
- _civ - Unit. [Object]
- _vehicle - Not used. [Object]
- _distance - Distance of firing. [Number]
- _weapon - Not used. [String]
- _muzzle - Not used. [String]
- _mode - Not used. [String]
- _ammo - Type of ammo. [String]
- _gunner - Unit firing around. [Object]
-
-Returns:
-
-Examples:
- (begin example)
- [cursorObject, objNull, player distance cursorObject, "", "", "", "", player] call btc_fnc_rep_firednear;
- (end)
-
-Author:
- Vdauphin
-
----------------------------------------------------------------------------- */
-
-params [
- ["_civ", objNull, [objNull]],
- ["_vehicle", objNull, [objNull]],
- ["_distance", 0, [0]],
- ["_weapon", "", [""]],
- ["_muzzle", "", [""]],
- ["_mode", "", [""]],
- ["_ammo", "", [""]],
- ["_gunner", objNull, [objNull]]
-];
-
-if (_ammo isKindOf "SmokeShell") exitWith {};
-
-//Remove the eventHandler to prevent spamming
-[_civ, "FiredNear", "btc_fnc_rep_firednear"] call btc_fnc_eh_removePersistOnLocalityChange;
-
-if (!(side _civ isEqualTo civilian) || (random 3 < 1)) exitWith {};
-
-[_civ, selectRandom ["ApanPknlMstpSnonWnonDnon_G01", "ApanPknlMstpSnonWnonDnon_G02", "ApanPknlMstpSnonWnonDnon_G03", "ApanPpneMstpSnonWnonDnon_G01", "ApanPpneMstpSnonWnonDnon_G02", "ApanPpneMstpSnonWnonDnon_G03"], 1] call ace_common_fnc_doAnimation;
-
-if (side _gunner isEqualTo btc_player_side) then {
- if ((_gunner findNearestEnemy getPos _civ) distance _civ > 300) then {
- if (abs((_gunner getDir _civ) - getDir _gunner) < 300/_distance) then {
- btc_rep_malus_civ_firenear call btc_fnc_rep_change;
- [getPos _civ] call btc_fnc_rep_eh_effects;
-
- if (btc_debug_log) then {
- [format ["GREP %1 THIS = %2", btc_global_reputation, _this], __FILE__, [false]] call btc_fnc_debug_message;
- };
- };
- };
-};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hd.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hd.sqf
index 26d9dcc12..601b83147 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hd.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hd.sqf
@@ -6,11 +6,13 @@ Description:
Handle damage.
Parameters:
- _unit - [Object]
- _part - [String]
- _dam - [Number]
- _injurer - [Object]
- _ammo - [String]
+ _unit - Object to destroy. [Object]
+ _part - Not use. [String]
+ _dam - Amount of damage get by the object. [Number]
+ _injurer - Not use. [Object]
+ _ammo - Type of ammo use to make damage. [String]
+ _hitIndex - Hit part index of the hit point, -1 otherwise. [Number]
+ _instigator - Person who pulled the trigger. [Object]
Returns:
@@ -29,22 +31,33 @@ params [
["_part", "", [""]],
["_dam", 0, [0]],
["_injurer", objNull, [objNull]],
- ["_ammo", "", [""]]
+ ["_ammo", "", [""]],
+ ["_hitIndex", 0, [0]],
+ ["_instigator", objNull, [objNull]]
];
-if (_part in ["body", "wheel_1_1_steering", "wheel_1_2_steering", "wheel_2_1_steering", "wheel_2_2_steering", "palivo", "engine", "glass1", "glass2", "glass3", "glass4", "karoserie", "palivo", "fuel_hitpoint", "engine_hitpoint", "body_hitpoint"]) then {
- if (isPlayer _injurer && {_dam > 0.01}) then {
- if (!isServer) exitWith {
- _this remoteExecCall ["btc_fnc_rep_hd", 2];
- };
+if (!isPlayer _instigator || {_dam <= 0.05}) exitWith {_dam};
+private _isAgent = isAgent teamMember _unit;
+if (
+ !_isAgent && {
+ _part isEqualTo "" ||
+ {!(side group _unit isEqualTo civilian)}
+ }
+) exitWith {_dam};
+
+if (!isServer) exitWith {
+ _this remoteExecCall ["btc_fnc_rep_hd", 2];
+ _dam
+};
- btc_rep_malus_civ_hd call btc_fnc_rep_change;
+[
+ [btc_rep_malus_civ_hd, btc_rep_malus_animal_hd] select _isAgent,
+ _instigator
+] call btc_fnc_rep_change;
+if (btc_global_reputation < 600) then {[getPos _unit] call btc_fnc_rep_eh_effects;};
- if (btc_global_reputation < 600) then {[getPos _unit] spawn btc_fnc_rep_eh_effects;};
- if (btc_debug_log) then {
- [format ["REP HD = GREP %1 THIS = %2", btc_global_reputation, _this], __FILE__, [false]] call btc_fnc_debug_message;
- };
- };
+if (btc_debug_log) then {
+ [format ["REP HD = GREP %1 THIS = %2", btc_global_reputation, _this], __FILE__, [false]] call btc_fnc_debug_message;
};
_dam
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hh.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hh.sqf
index d1f6b58e9..f920d6cd7 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hh.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hh.sqf
@@ -25,7 +25,7 @@ params [
];
if (isPlayer _healer) then {
- btc_rep_bonus_civ_hh call btc_fnc_rep_change;
+ [btc_rep_bonus_civ_hh, _healer] call btc_fnc_rep_change;
if (btc_debug_log) then {
[format ["GREP %1 THIS = %2", btc_global_reputation, _this], __FILE__, [false]] call btc_fnc_debug_message;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/killed.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/killed.sqf
index 8024f48c2..e53082623 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/killed.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/killed.sqf
@@ -21,27 +21,23 @@ Author:
---------------------------------------------------------------------------- */
-params [
- ["_unit", objNull, [objNull]],
- ["_killer", objNull, [objNull]]
-];
-
-if (!isServer) exitWith {
- _this remoteExecCall ["btc_fnc_rep_killed", 2];
-};
-
-if (isPlayer _killer) then {
- btc_rep_malus_civ_killed call btc_fnc_rep_change;
+params ["_unit", "_causeOfDeath", "_killer", "_instigator"];
+
+if (
+ !(side group _unit isEqualTo civilian) &&
+ {!isAgent teamMember _unit}
+) exitWith {};
+
+if (isPlayer _instigator) then {
+ [
+ [btc_rep_malus_civ_killed, btc_rep_malus_animal_killed] select (isAgent teamMember _unit),
+ _instigator
+ ] call btc_fnc_rep_change;
if (btc_global_reputation < 600) then {
- [getPos _unit] spawn btc_fnc_rep_eh_effects;
+ [getPos _unit] call btc_fnc_rep_eh_effects;
};
if (btc_debug_log) then {
[format ["GREP %1 THIS = %2", btc_global_reputation, _this], __FILE__, [false]] call btc_fnc_debug_message;
};
};
-
-private _vehicle = assignedVehicle _unit;
-if !(_vehicle isEqualTo objNull) then {
- [[], [_vehicle]] call btc_fnc_delete;
-};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/notify.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/notify.sqf
new file mode 100644
index 000000000..4c949e5ba
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/notify.sqf
@@ -0,0 +1,47 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_rep_notify
+
+Description:
+ Show reputation change with a picture and color nuance.
+
+Parameters:
+ _reputation - Reputation number. [Number]
+ _players - List of players triggered the reputation change. [Array]
+
+Returns:
+
+Examples:
+ (begin example)
+ [-10] call btc_fnc_rep_notify;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_reputation", 0, [0]],
+ ["_players", [], [[]]]
+];
+
+_players sort (_reputation <= 0);
+private _player = _players select 0 select 1;
+
+private _hint = [];
+if (_reputation >= 0) then {
+ private _minRep = _reputation min 80;
+
+ _hint pushBack 20;
+ _hint pushBack [[1 - _minRep / 80, 1, 1 - _minRep / 80], _player];
+} else {
+ private _minRep = _reputation max -25;
+
+ _hint pushBack 21;
+ _hint pushBack [[1, 1 + _minRep / 25, 1 + _minRep / 25], _player];
+};
+
+_hint remoteExecCall ["btc_fnc_show_hint", [0, -2] select isDedicated];
+
+btc_rep_delayed = [0, []];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/remove_eh.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/remove_eh.sqf
deleted file mode 100644
index 9ffe26caa..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/remove_eh.sqf
+++ /dev/null
@@ -1,29 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_rep_remove_eh
-
-Description:
- Remove event to civilian.
-
-Parameters:
- _civilian - Civilian. [Object]
-
-Returns:
-
-Examples:
- (begin example)
- [cursorObject] call btc_fnc_rep_remove_eh;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_civilian", objNull, [objNull]]
-];
-
-[_civilian, "FiredNear", "btc_fnc_rep_firednear"] call btc_fnc_eh_removePersistOnLocalityChange;
-[_civilian, "HandleDamage", "btc_fnc_rep_hd"] remoteExecCall ["btc_fnc_eh_removePersistOnLocalityChange", _civilian];
-[_civilian, "Killed", "btc_fnc_rep_killed"] remoteExecCall ["btc_fnc_eh_removePersistOnLocalityChange", _civilian];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/suppressed.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/suppressed.sqf
new file mode 100644
index 000000000..88477ea47
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/suppressed.sqf
@@ -0,0 +1,64 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_rep_suppressed
+
+Description:
+ Detect if player is firing. Then add a random panic animation. If player fire in direction of a civilian without enemies around, punish him by applying reputation effect and reduce reputation.
+
+Parameters:
+ _unit - Unit to which the event is assigned [Object]
+ _distance - Distance of the projectile pass-by [Number]
+ _shooter - Who (or what) fired - vehicle or drone [Object]
+ _instigator - Who pressed the trigger. [Object]
+ _ammoObject - The ammunition itself [Object]
+
+Returns:
+
+Examples:
+ (begin example)
+ [cursorObject, objNull, player distance cursorObject, "", "", "", "", player] call btc_fnc_rep_suppressed;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_civ", objNull, [objNull]],
+ ["_distance", 0, [0]],
+ ["_shooter", objNull, [objNull]],
+ ["_instigator", objNull, [objNull]],
+ ["_ammoObject", objNull, [objNull]]
+];
+
+if (_civ getVariable ["btc_fnc_rep_suppressed_fired", false] isEqualTo 2) exitWith {};
+if (_ammoObject isKindOf "SmokeShell") exitWith {};
+if !(side group _civ isEqualTo civilian) exitWith {_civ setVariable ["btc_fnc_rep_suppressed_fired", 2]};
+
+if (
+ _civ getVariable ["btc_fnc_rep_suppressed_fired", 0] isEqualTo 0 &&
+ {random 3 < 1}
+) then {
+ _civ setVariable ["btc_fnc_rep_suppressed_fired", 1];
+ [_civ, selectRandom ["ApanPknlMstpSnonWnonDnon_G01", "ApanPknlMstpSnonWnonDnon_G02", "ApanPknlMstpSnonWnonDnon_G03", "ApanPpneMstpSnonWnonDnon_G01", "ApanPpneMstpSnonWnonDnon_G02", "ApanPpneMstpSnonWnonDnon_G03"], 1] call ace_common_fnc_doAnimation;
+};
+
+if (
+ _distance < 2 &&
+ {side group _instigator isEqualTo btc_player_side} &&
+ {(_shooter findNearestEnemy _civ) distance _civ > 200} &&
+ {abs((_shooter getDir _civ) - getDir _shooter) < 150/(_shooter distance _civ)}
+) then {
+ if (isServer) then {
+ [btc_rep_malus_civ_suppressed, _shooter] call btc_fnc_rep_change;
+ [getPos _civ] call btc_fnc_rep_eh_effects;
+ } else {
+ [btc_rep_malus_civ_suppressed, _shooter] remoteExecCall ["btc_fnc_rep_change", 2];
+ [getPos _civ] remoteExecCall ["btc_fnc_rep_eh_effects", 2];
+ };
+
+ if (btc_debug_log) then {
+ [format ["GREP %1 THIS = %2", btc_global_reputation, _this], __FILE__, [false]] call btc_fnc_debug_message;
+ };
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/treatment.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/treatment.sqf
index d54d11bab..a35ca9a8c 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/treatment.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/treatment.sqf
@@ -31,6 +31,10 @@ params [
];
if (isPlayer _target) exitWith {};
-if ((alive _target) && (side _target isEqualTo civilian) && !(_className in ["CheckPulse", "CheckBloodPressure", "CheckResponse"])) then {
+if (
+ alive _target &&
+ side group _target isEqualTo civilian &&
+ !(_className in ["CheckPulse", "CheckBloodPressure", "CheckResponse"])
+) then {
_this remoteExecCall ["btc_fnc_rep_hh", 2];
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/EMP.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/EMP.sqf
index 19f3a386b..8c36fb6e2 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/EMP.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/EMP.sqf
@@ -32,9 +32,7 @@ private _city = selectRandom _useful;
_city setVariable ["spawn_more", true];
-private _radius_x = _city getVariable ["RadiusX", 0];
-private _radius_y = _city getVariable ["RadiusY", 0];
-private _radius = _radius_x + _radius_y;
+private _radius = _city getVariable ["radius", 0];
private _composition = [];
private _tasksID = [];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/capture_officer.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/capture_officer.sqf
index 22fc08e50..491ddbfa1 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/capture_officer.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/capture_officer.sqf
@@ -16,7 +16,7 @@ Examples:
(end)
Author:
- Giallustio
+ Vdauphin
---------------------------------------------------------------------------- */
@@ -30,15 +30,15 @@ if (_usefuls isEqualTo []) exitWith {[] spawn btc_fnc_side_create;};
private _city2 = selectRandom _usefuls;
private _area = (getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize"))/4;
-private _cities = btc_city_all select {!(isNull _x) && (_x distance _city2 > _area)};
+private _cities = btc_city_all select {!(isNull _x) && _x distance _city2 > _area};
_usefuls = _cities select {!((_x getVariable ["type", ""]) in ["NameLocal", "Hill", "NameMarine"]) && (_x getVariable ["occupied", false])};
if (_usefuls isEqualTo []) exitWith {[] spawn btc_fnc_side_create;};
private _city1 = selectRandom _usefuls;
-//// Find roads \\\\
-private _radius_x = _city1 getVariable ["RadiusX",0];
-private _roads = _city1 nearRoads (_radius_x * 2);
-_roads = _roads select {(_x distance _city1 > _radius_x) && isOnRoad _x};
+//// Find Road \\\\
+private _radius = (_city1 getVariable ["radius", 0])/2;
+private _roads = _city1 nearRoads (_radius * 2);
+_roads = _roads select {(_x distance _city1 > _radius) && isOnRoad _x};
if (_roads isEqualTo []) exitWith {[] spawn btc_fnc_side_create;};
private _road = selectRandom _roads;
private _pos1 = getPosATL _road;
@@ -47,104 +47,144 @@ private _pos2 = getPos _city2;
[_taskID, 14, _pos2, _city2 getVariable "name"] call btc_fnc_task_create;
//// Create markers \\\\
-private _marker1 = createMarker [format ["sm_2_%1", getPos _city1], getPos _city1];
+private _marker1 = createMarker [format ["sm_2_%1", _pos1], _pos1];
_marker1 setMarkerType "hd_flag";
-[_marker1, "str_a3_campaign_b_m06_marker01"] remoteExecCall ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker1]; //Convoy Start
+[_marker1, "str_a3_campaign_b_m06_marker01"] remoteExecCall ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker1]; //Convoy start
_marker1 setMarkerSize [0.6, 0.6];
private _marker2 = createMarker [format ["sm_2_%1", _pos2], _pos2];
_marker2 setMarkerType "hd_flag";
-[_marker2, "STR_BTC_HAM_SIDE_CONVOY_MRKEND"] remoteExecCall ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker2]; //Convoy End
+[_marker2, "STR_BTC_HAM_SIDE_CONVOY_MRKEND"] remoteExecCall ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker2]; //Convoy end
_marker2 setMarkerSize [0.6, 0.6];
private _area = createMarker [format ["sm_%1", _pos2], _pos2];
_area setMarkerShape "ELLIPSE";
_area setMarkerBrush "SolidBorder";
-_area setMarkerSize [_radius_x/1.5, _radius_x/1.5];
+_area setMarkerSize [_radius/2, _radius/2];
_area setMarkerAlpha 0.3;
_area setmarkercolor "colorBlue";
private _markers = [_marker1, _marker2, _area];
-//// Create convoy \\\\
-private _group = createGroup btc_enemy_side;
-_group setVariable ["no_cache", true];
-
-private _vehs = [];
+/// Show info path\\\
private _veh_types = btc_civ_type_veh select {!(_x isKindOf "air")};
-for "_i" from 0 to (1 + round random 1) do {
- private _veh = [_group, _pos1, selectRandom _veh_types, [_road] call btc_fnc_road_direction] call btc_fnc_mil_createVehicle;
+private _agent = [btc_fnc_info_path, [_pos1, _pos2, _taskID, _veh_types select 0]] call CBA_fnc_directCall;
+private _startingPath = time;
- _vehs pushBack _veh;
-
- _road = (roadsConnectedTo _road) select 0;
- _pos1 = getPosATL _road;
+waitUntil {
+ !isNil {_agent getVariable "btc_path"} ||
+ {time > _startingPath + 10}
+};
+private _path = _agent getVariable ["btc_path", []];
+if (count _path <= 35) exitWith {
+ _markers append (allMapMarkers select {(_x select [0, count _taskID]) isEqualTo _taskID});
+ [_markers, [_agent]] call btc_fnc_delete;
+ [_taskID, "CANCELED"] call BIS_fnc_taskSetState;
};
-private _captive = selectRandom units _group;
-removeAllWeapons _captive;
-_group selectLeader _captive;
-
-private _surrender_taskID = _taskID + "su";
-[[_surrender_taskID, _taskID], 24, objNull, typeOf _captive] call btc_fnc_task_create;
-private _handcuff_taskID = _taskID + "hc";
-private _back_taskID = _taskID + "bk";
-
-[_group, _pos2, -1, "MOVE", "SAFE", "RED", "LIMITED", "COLUMN", format ["['%1', 'FAILED'] call BIS_fnc_taskSetState;", _taskID], [0, 0, 0], _radius_x / 1.5] call CBA_fnc_addWaypoint;
-
-//// Create trigger \\\\
-private _trigger = createTrigger ["EmptyDetector", getPos _city1];
-_trigger setVariable ["captive", _captive];
-_trigger setTriggerArea [15, 15, 0, false];
-_trigger setTriggerActivation [str btc_player_side, "PRESENT", true];
-_trigger setTriggerStatements ["this", format ["_captive = thisTrigger getVariable 'captive'; deleteVehicle thisTrigger; doStop _captive; [_captive, true] call ace_captives_fnc_setSurrendered; ['%1', 'SUCCEEDED'] call BIS_fnc_taskSetState; [['%2', '%4'], 29, _captive] call btc_fnc_task_create; [['%3', '%4'], 21, btc_create_object_point, typeOf btc_create_object_point] call btc_fnc_task_create;", _surrender_taskID, _handcuff_taskID, _back_taskID, _taskID], ""];
-_trigger attachTo [_captive, [0, 0, 0]];
+//// Create convoy \\\\
+private _group = createGroup btc_enemy_side;
+_group setVariable ["no_cache", true];
+[_group] call CBA_fnc_clearWaypoints;
+private _convoyLength = 2 + round random 1;
+private _listPositions = _path select [40, _convoyLength + 1];
+reverse _listPositions;
+[_group, ASLToAGL (_listPositions select 0), -1, "SENTRY", "SAFE", "RED", "LIMITED", "COLUMN"] call CBA_fnc_addWaypoint; // Make sure they don't move during spawn
+private _delay = 0;
+for "_i" from 1 to _convoyLength do {
+ private _pos = _listPositions deleteAt 0;
+ _delay = _delay + ([_group, ASLToAGL _pos, selectRandom _veh_types, (_listPositions select 0) getDir _pos] call btc_fnc_mil_createVehicle);
+};
-private _agent = [leader _group, _pos2, _taskID] call btc_fnc_info_path;
-_agent addEventHandler ["PathCalculated", {
- params ["_agent", "_path"];
+[{
+ params ["_group"];
+ _group call CBA_fnc_clearWaypoints;
+ _this call CBA_fnc_addWaypoint;
[12] remoteExecCall ["btc_fnc_show_hint", [0, -2] select isDedicated];
- _agent removeEventHandler ["PathCalculated", _thisEventHandler];
-}];
-
-["ace_captiveStatusChanged", {
- params ["_unit", "_state", "_type"];
- _thisArgs params ["_captive", "_handcuff_taskID"];
-
- if (_captive isEqualTo objNull) then {
- [_thisType, _thisId] call CBA_fnc_removeEventHandler;
- };
- if (_unit isEqualTo _captive && _type isEqualTo "SetHandcuffed") then {
- [_thisType, _thisId] call CBA_fnc_removeEventHandler;
- [_handcuff_taskID, "SUCCEEDED"] call BIS_fnc_taskSetState;
- };
- _this
-}, [_captive, _handcuff_taskID]] call CBA_fnc_addEventHandlerArgs;
-waitUntil {sleep 5; (!(alive _captive) || (_captive inArea [getPosWorld btc_create_object_point, 100, 100, 0, false]) || _taskID call BIS_fnc_taskCompleted)};
+ private _vehs = (units _group) apply {assignedVehicle _x};
+ btc_curator addCuratorEditableObjects [_vehs arrayIntersect _vehs, false];
+}, [
+ _group, _pos2, -1, "MOVE", "SAFE", "RED", "LIMITED", "COLUMN",
+ format ["['%1', 'FAILED'] call BIS_fnc_taskSetState;", _taskID], [0, 0, 0], _radius/2
+], btc_delay_createUnit + _delay] call CBA_fnc_waitAndExecute;
+
+[{
+ params ["_group", "_taskID", "_trigger"];
+
+ private _captive = leader _group;
+ removeAllWeapons _captive;
+ private _vehs = (units _group) apply {assignedVehicle _x};
+ btc_curator addCuratorEditableObjects [_vehs arrayIntersect _vehs, false];
+
+ private _surrender_taskID = _taskID + "su";
+ [[_surrender_taskID, _taskID], 24, objNull, typeOf _captive] call btc_fnc_task_create;
+ private _handcuff_taskID = _taskID + "hc";
+ private _back_taskID = _taskID + "bk";
+
+ //// Create trigger \\\\
+ private _trigger = createTrigger ["EmptyDetector", _captive];
+ _trigger setVariable ["captive", _captive];
+ _trigger setTriggerArea [15, 15, 0, false];
+ _trigger setTriggerActivation [str btc_player_side, "PRESENT", true];
+ _trigger setTriggerStatements ["this", format ["_captive = thisTrigger getVariable 'captive'; deleteVehicle thisTrigger; doStop _captive; [_captive, true] call ace_captives_fnc_setSurrendered; ['%1', 'SUCCEEDED'] call BIS_fnc_taskSetState; [['%2', '%4'], 29, _captive] call btc_fnc_task_create; [['%3', '%4'], 21, btc_create_object_point, typeOf btc_create_object_point] call btc_fnc_task_create;", _surrender_taskID, _handcuff_taskID, _back_taskID, _taskID], ""];
+ _trigger attachTo [_captive, [0, 0, 0]];
+
+ ["ace_captiveStatusChanged", {
+ params ["_unit", "_state", "_type"];
+ _thisArgs params ["_captive", "_handcuff_taskID"];
+
+ if (isNull _captive) then {
+ [_thisType, _thisId] call CBA_fnc_removeEventHandler;
+ };
+ if (_unit isEqualTo _captive && _type isEqualTo "SetHandcuffed") then {
+ [_thisType, _thisId] call CBA_fnc_removeEventHandler;
+ [_handcuff_taskID, "SUCCEEDED"] call BIS_fnc_taskSetState;
+ };
+ _this
+ }, [_captive, _handcuff_taskID]] call CBA_fnc_addEventHandlerArgs;
+
+ [{
+ !alive (_this select 0) ||
+ isNull (_this select 0)
+ }, {
+ [_this select 1, "FAILED"] call btc_fnc_task_setState;
+ }, [_captive, _taskID]] call CBA_fnc_waitUntilAndExecute;
+
+ [{
+ (_this select 0) inArea [getPosWorld btc_create_object_point, 100, 100, 0, false] ||
+ isNull (_this select 0)
+ }, {
+ [_this select 1, "SUCCEEDED"] call btc_fnc_task_setState;
+ }, [_captive, _taskID]] call CBA_fnc_waitUntilAndExecute;
+}, [
+ _group,
+ _taskID
+], btc_delay_createUnit + _delay] call CBA_fnc_waitAndExecute;
+
+waitUntil {sleep 5; _taskID call BIS_fnc_taskCompleted};
_markers append (allMapMarkers select {(_x select [0, count _taskID]) isEqualTo _taskID});
+private _vehs = (units _group) apply {assignedVehicle _x};
+_vehs = (_vehs arrayIntersect _vehs);
if (_taskID call BIS_fnc_taskState isEqualTo "CANCELED") exitWith {
- deleteVehicle _trigger;
[_markers, _vehs + [_group]] call btc_fnc_delete;
};
-if (!alive _captive || _taskID call BIS_fnc_taskState isEqualTo "FAILED") exitWith {
- deleteVehicle _trigger;
- [_taskID, "FAILED"] call btc_fnc_task_setState;
+if (_taskID call BIS_fnc_taskState isEqualTo "FAILED") exitWith {
_group setVariable ["no_cache", false];
{
- _group = createGroup btc_enemy_side;
+ private _group = createGroup btc_enemy_side;
(crew _x) joinSilent _group;
- _group call btc_fnc_data_add_group;
+ [btc_fnc_data_add_group, _group] call CBA_fnc_directCall;
} forEach _vehs;
- [_markers, []] call btc_fnc_delete;
+ [_markers] call btc_fnc_delete;
};
-50 call btc_fnc_rep_change;
+[_markers, _vehs + [_group]] call btc_fnc_delete;
-[_taskID, "SUCCEEDED"] call btc_fnc_task_setState;
+if (_taskID call BIS_fnc_taskState isEqualTo "CANCELED") exitWith {};
-[_markers, _vehs + [_captive, _group]] call btc_fnc_delete;
+50 call btc_fnc_rep_change;
\ No newline at end of file
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/checkpoint.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/checkpoint.sqf
index 76a5453ea..aea6e6b02 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/checkpoint.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/checkpoint.sqf
@@ -35,15 +35,13 @@ private _pos = getPos _city;
_city setVariable ["spawn_more", true];
private _statics = btc_type_gl + btc_type_mg;
-private _radius_x = _city getVariable ["RadiusX", 0];
-private _radius_y = _city getVariable ["RadiusY", 0];
-private _radius = (_radius_x + _radius_y)/4;
+private _radius = _city getVariable ["radius", 0];
private _boxes = [];
private _composition = [];
for "_i" from 1 to (1 + round random 2) do {
//// Choose a road \\\\
- private _pos = [getPos _city, _radius] call btc_fnc_randomize_pos;
+ private _pos = [getPos _city, _radius/4] call btc_fnc_randomize_pos;
private _roads = _pos nearRoads 200;
_roads = _roads select {isOnRoad _x};
if (_roads isEqualTo []) exitWith {_boxes pushBack objNull};
@@ -81,12 +79,10 @@ for "_i" from 1 to (1 + round random 2) do {
//// Create checkpoint with static at _pos \\\\
_pos params ["_x", "_y", "_z"];
private _posStatic = [_x -2.39185*cos(-_direction) - 2.33984*sin(-_direction), _y + 2.33984 *cos(-_direction) -2.39185*sin(-_direction), _z];
- private _static = [_posStatic, _statics, _direction + 180] call btc_fnc_mil_create_static;
- _static setPos _posStatic;
+ [_posStatic, _statics, _direction + 180] call btc_fnc_mil_create_static;
private _posStatic = [_x + 2.72949*cos(-_direction) - -2.03857*sin(-_direction), _y -2.03857*cos(-_direction) +2.72949*sin(-_direction), _z];
- private _static = [_posStatic, _statics, _direction] call btc_fnc_mil_create_static;
- _static setPos _posStatic;
+ [_posStatic, _statics, _direction] call btc_fnc_mil_create_static;
_composition append ([_pos, _direction, _composition_checkpoint] call btc_fnc_create_composition);
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/chemicalLeak.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/chemicalLeak.sqf
index 394859f2b..c34751370 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/chemicalLeak.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/chemicalLeak.sqf
@@ -28,7 +28,7 @@ private _useful = btc_city_all select {!(isNull _x) && !(_x getVariable ["occupi
if (_useful isEqualTo []) then {_useful = + (btc_city_all select {!(isNull _x)});};
private _city = selectRandom _useful;
-private _pos = [getPos _city, 0, 500, 30, false] call btc_fnc_findsafepos;
+private _pos = [getPos _city, 0, _city getVariable ["radius", 100], 30, false] call btc_fnc_findsafepos;
[_taskID, 30, getPos _city, _city getVariable "name"] call btc_fnc_task_create;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment.sqf
index 5cfdb0245..8940f6257 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment.sqf
@@ -77,7 +77,6 @@ private _unit =_group createUnit [_unit_type, _pos, [], 0, "CAN_COLLIDE"];
_unit setBehaviour "CARELESS";
_unit setDir (random 360);
_unit setUnitPos "DOWN";
-[_group] call btc_fnc_civ_unit_create;
[_taskID, 8, _unit, [_city getVariable "name", _unit_type]] call btc_fnc_task_create;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment_boat.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment_boat.sqf
index 05997f7ea..6e64e9b1a 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment_boat.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment_boat.sqf
@@ -34,7 +34,7 @@ private _pos = getPos _city;
//// Choose a random position \\\\
private _vehpos = [_pos, 0, 600, 20, 2, 60 * (pi / 180), 0] call BIS_fnc_findSafePos;
-_vehpos = [_vehpos select 0 , _vehpos select 1, 0];
+_vehpos = [_vehpos select 0, _vehpos select 1, 0];
//// Create civ on _vehpos \\\\
private _veh_type = selectRandom btc_civ_type_boats;
@@ -57,8 +57,6 @@ waitUntil {sleep 5; (_taskID call BIS_fnc_taskCompleted || !(playableUnits inAre
[_unit] call btc_fnc_set_damage;
-[_group] call btc_fnc_civ_unit_create;
-
waitUntil {sleep 5; (_taskID call BIS_fnc_taskCompleted || !alive _unit || {_unit call ace_medical_status_fnc_isInStableCondition && [_unit] call ace_common_fnc_isAwake})};
[[], [_veh, _group]] call btc_fnc_delete;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/convoy.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/convoy.sqf
index 08b75f2cb..1eb6db04c 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/convoy.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/convoy.sqf
@@ -12,7 +12,7 @@ Returns:
Examples:
(begin example)
- [] spawn btc_fnc_side_convoy;
+ [false, "btc_fnc_side_convoy"] spawn btc_fnc_side_create;
(end)
Author:
@@ -36,10 +36,10 @@ if (_usefuls isEqualTo []) exitWith {[] spawn btc_fnc_side_create;};
private _city1 = selectRandom _usefuls;
//// Find Road \\\\
-private _radius_x = _city1 getVariable ["RadiusX", 0];
-private _roads = _city1 nearRoads (_radius_x * 2);
-_roads = _roads select {(_x distance _city1 > _radius_x) && isOnRoad _x};
- if (_roads isEqualTo []) exitWith {[] spawn btc_fnc_side_create;};
+private _radius = (_city1 getVariable ["radius", 0])/2;
+private _roads = _city1 nearRoads (_radius * 2);
+_roads = _roads select {(_x distance _city1 > _radius) && isOnRoad _x};
+if (_roads isEqualTo []) exitWith {[] spawn btc_fnc_side_create;};
private _road = selectRandom _roads;
private _pos1 = getPosATL _road;
private _pos2 = getPos _city2;
@@ -60,43 +60,68 @@ _marker2 setMarkerSize [0.6, 0.6];
private _area = createMarker [format ["sm_%1", _pos2], _pos2];
_area setMarkerShape "ELLIPSE";
_area setMarkerBrush "SolidBorder";
-_area setMarkerSize [_radius_x/2, _radius_x/2];
+_area setMarkerSize [_radius/2, _radius/2];
_area setMarkerAlpha 0.3;
_area setmarkercolor "colorBlue";
private _markers = [_marker1, _marker2, _area];
-//// Create convoy \\\\
-private _group = createGroup btc_enemy_side;
-_group setVariable ["no_cache", true];
-
-private _vehs = [];
+/// Show info path\\\
private _veh_types = btc_type_motorized select {!(_x isKindOf "air")};
-for "_i" from 0 to (2 + round random 2) do {
- private _veh = [_group, _pos1, selectRandom _veh_types, [_road] call btc_fnc_road_direction] call btc_fnc_mil_createVehicle;
+private _agent = [btc_fnc_info_path, [_pos1, _pos2, _taskID, _veh_types select 0]] call CBA_fnc_directCall;
+private _startingPath = time;
- _vehs pushBack _veh;
+waitUntil {
+ !isNil {_agent getVariable "btc_path"} ||
+ {time > _startingPath + 10}
+};
+private _path = _agent getVariable ["btc_path", []];
+if (count _path <= 35) exitWith {
+ _markers append (allMapMarkers select {(_x select [0, count _taskID]) isEqualTo _taskID});
+ [_markers, [_agent]] call btc_fnc_delete;
+ [_taskID, "CANCELED"] call BIS_fnc_taskSetState;
+};
- _road = (roadsConnectedTo _road) select 0;
- _pos1 = getPosATL _road;
+//// Create convoy \\\\
+private _group = createGroup btc_enemy_side;
+_group setVariable ["no_cache", true];
+[_group] call CBA_fnc_clearWaypoints;
+private _convoyLength = 3 + round random 2;
+private _listPositions = _path select [40, _convoyLength + 1];
+reverse _listPositions;
+[_group, ASLToAGL (_listPositions select 0), -1, "SENTRY", "SAFE", "RED", "LIMITED", "COLUMN"] call CBA_fnc_addWaypoint; // Make sure they don't move during spawn
+private _delay = 0;
+for "_i" from 1 to _convoyLength do {
+ private _pos = _listPositions deleteAt 0;
+ _delay = _delay + ([_group, ASLToAGL _pos, selectRandom _veh_types, (_listPositions select 0) getDir _pos] call btc_fnc_mil_createVehicle);
};
-private _agent = [leader _group, _pos2, _taskID] call btc_fnc_info_path;
-_agent addEventHandler ["PathCalculated", {
- params ["_agent", "_path"];
+[{
+ params ["_group"];
+ _group call CBA_fnc_clearWaypoints;
+ _this call CBA_fnc_addWaypoint;
[12] remoteExecCall ["btc_fnc_show_hint", [0, -2] select isDedicated];
- _agent removeEventHandler ["PathCalculated", _thisEventHandler];
-}];
-[_group, _pos2, -1, "MOVE", "SAFE", "RED", "LIMITED", "COLUMN", format ["['%1', 'FAILED'] call BIS_fnc_taskSetState;", _taskID], [0, 0, 0], _radius_x/2] call CBA_fnc_addWaypoint;
+ private _vehs = (units _group) apply {assignedVehicle _x};
+ btc_curator addCuratorEditableObjects [_vehs arrayIntersect _vehs, false];
+}, [
+ _group, _pos2, -1, "MOVE", "SAFE", "RED", "LIMITED", "COLUMN",
+ format ["['%1', 'FAILED'] call BIS_fnc_taskSetState;", _taskID], [0, 0, 0], _radius/2
+], btc_delay_createUnit + _delay] call CBA_fnc_waitAndExecute;
-waitUntil {sleep 5; (_taskID call BIS_fnc_taskCompleted || (_vehs select {canMove _x} isEqualTo []) || (_group isEqualTo grpNull))};
+waitUntil {sleep 5; (
+ _taskID call BIS_fnc_taskCompleted ||
+ ((units _group) apply {assignedVehicle _x}) select {canMove _x} isEqualTo [] ||
+ isNull _group
+)};
_markers append (allMapMarkers select {(_x select [0, count _taskID]) isEqualTo _taskID});
+private _vehs = (units _group) apply {assignedVehicle _x};
+_vehs = (_vehs arrayIntersect _vehs);
if (_taskID call BIS_fnc_taskState isEqualTo "CANCELED") exitWith {
- [_markers, _vehs + [_group, _agent]] call btc_fnc_delete;
+ [_markers, _vehs + [_group]] call btc_fnc_delete;
};
if (_taskID call BIS_fnc_taskState isEqualTo "FAILED") exitWith {
@@ -104,12 +129,12 @@ if (_taskID call BIS_fnc_taskState isEqualTo "FAILED") exitWith {
{
private _group = createGroup btc_enemy_side;
(crew _x) joinSilent _group;
- _group call btc_fnc_data_add_group;
+ [btc_fnc_data_add_group, _group] call CBA_fnc_directCall;
} forEach _vehs;
- [_markers, _agent] call btc_fnc_delete;
+ [_markers] call btc_fnc_delete;
};
-[_markers, _vehs + [_group, _agent]] call btc_fnc_delete;
+[_markers, _vehs + [_group]] call btc_fnc_delete;
if (_taskID call BIS_fnc_taskState isEqualTo "CANCELED") exitWith {};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hack.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hack.sqf
index eabfe237b..267057e29 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hack.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hack.sqf
@@ -63,7 +63,7 @@ private _defend_taskID = _taskID + "df";
private _groups = [];
private _closest = [_city, btc_city_all select {!(_x getVariable ["active", false])}, false] call btc_fnc_find_closecity;
for "_i" from 1 to (2 + round random 1) do {
- _groups pushBack ([_closest, getPos _terminal, 1, selectRandom btc_type_motorized] call btc_fnc_mil_send);
+ _groups pushBack ([btc_fnc_mil_send, [_closest, getPos _terminal, 1, selectRandom btc_type_motorized]] call CBA_fnc_directCall);
};
{
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hostage.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hostage.sqf
index 17e563828..118044acc 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hostage.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hostage.sqf
@@ -55,7 +55,6 @@ private _civType = selectRandom btc_civ_type_units;
private _captive = _group_civ createUnit [_civType, _pos, [], 0, "CAN_COLLIDE"];
waitUntil {local _captive};
[_captive, true] call ACE_captives_fnc_setHandcuffed;
-[_group_civ] call btc_fnc_civ_unit_create;
//// Data side mission
[_taskID, 15, _captive, [_city getVariable "name", _civType]] call btc_fnc_task_create;
@@ -67,7 +66,6 @@ private _group = [];
[_unit] joinSilent _grp;
_group pushBack _grp;
_grp setVariable ["no_cache", true];
- [_grp] call btc_fnc_mil_unit_create;
} forEach (_buildingPos - [_pos]);
_trigger = createTrigger ["EmptyDetector", _pos];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/kill.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/kill.sqf
index e919a61ff..97357c402 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/kill.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/kill.sqf
@@ -54,7 +54,6 @@ private _group_officer = createGroup btc_enemy_side;
_group_officer setVariable ["no_cache", true];
private _officerType = selectRandom btc_type_units;
private _officer = _group_officer createUnit [_officerType, _pos, [], 0, "CAN_COLLIDE"];
-[_group_officer] call btc_fnc_mil_unit_create;
//// Data side mission
private _officerName = name _officer;
@@ -79,7 +78,6 @@ private _group = [];
[_unit] joinSilent _grp;
_group pushBack _grp;
_grp setVariable ["no_cache", true];
- [_grp] call btc_fnc_mil_unit_create;
} forEach (_buildingPos - [_pos]);
_trigger = createTrigger ["EmptyDetector", _pos];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/mines.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/mines.sqf
index cc67cb0db..b90e7a388 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/mines.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/mines.sqf
@@ -28,7 +28,7 @@ private _useful = btc_city_all select {!(isNull _x) && !((_x getVariable ["type"
if (_useful isEqualTo []) then {_useful = + (btc_city_all select {!(isNull _x)});};
private _city = selectRandom _useful;
-private _pos = [getPos _city, 0, 500, 30, false] call btc_fnc_findsafepos;
+private _pos = [getPos _city, 0, _city getVariable ["radius", 100], 30, false] call btc_fnc_findsafepos;
if (_pos select 2 > 50) exitWith {[] spawn btc_fnc_side_create;};
[_taskID, 4, _pos, _city getVariable "name"] call btc_fnc_task_create;
@@ -109,7 +109,7 @@ waitUntil {sleep 5; (_taskID call BIS_fnc_taskCompleted || !(playableUnits inAre
private _closest = [_city, btc_city_all select {!(_x getVariable ["active", false])}, false] call btc_fnc_find_closecity;
for "_i" from 1 to (round random 2) do {
- [_closest, _pos, 1, selectRandom btc_type_motorized] spawn btc_fnc_mil_send;
+ [btc_fnc_mil_send, [_closest, _pos, 1, selectRandom btc_type_motorized]] call CBA_fnc_directCall;
};
waitUntil {sleep 5; (_taskID call BIS_fnc_taskCompleted || (_mines select {!isNull _x} isEqualTo []))};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/removeRubbish.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/removeRubbish.sqf
new file mode 100644
index 000000000..4efdf1fa4
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/removeRubbish.sqf
@@ -0,0 +1,90 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_side_removeRubbish
+
+Description:
+ Remove rubbish on road in city with Nemmera.
+
+Parameters:
+ _taskID - Unique task ID. [String]
+
+Returns:
+
+Examples:
+ (begin example)
+ [false, "btc_fnc_side_removeRubbish"] spawn btc_fnc_side_create;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_taskID", "btc_side", [""]]
+];
+
+private _minNumberOfSubTask = 2;
+private _useful = btc_city_all select {
+ !(isNull _x) &&
+ {_x getVariable ["type", ""] != "NameMarine"} &&
+ {
+ private _city = _x;
+ ({
+ isOnRoad (_x select 0) ||
+ {!(((_x select 0) nearRoads 6) isEqualTo [])} // Most IED are just next to road
+ } count (_city getVariable ["ieds", []])) >= _minNumberOfSubTask
+ }
+};
+if (_useful isEqualTo []) exitWith {[] spawn btc_fnc_side_create;};
+private _city = selectRandom _useful;
+private _ieds = (_city getVariable ["ieds", []]) select {
+ isOnRoad (_x select 0) ||
+ {!(((_x select 0) nearRoads 6) isEqualTo [])}
+};
+private _extra_ied = round random (((count _ieds) - _minNumberOfSubTask) min 2);
+
+[_taskID, 38, objNull, _city getVariable "name"] call btc_fnc_task_create;
+
+private _tasksID = [];
+for "_i" from 0 to (_minNumberOfSubTask + _extra_ied - 1) do {
+ private _clear_taskID = _taskID + "cl" + str _i;
+ _tasksID pushBack _clear_taskID;
+
+ private _selectedIED = _ieds select _i;
+ [[_clear_taskID, _taskID], 39, _selectedIED select 0, btc_type_ieds select (btc_model_ieds find (_selectedIED select 1)), false, false] call btc_fnc_task_create;
+
+ ["btc_ied_deleted", {
+ params ["_posDeleted_ied"];
+ _thisArgs params ["_clear_taskID", "_pos_ied"];
+
+ if (!(_clear_taskID call BIS_fnc_taskCompleted) && {_pos_ied distance _posDeleted_ied < 5}) then {
+ [_clear_taskID, "SUCCEEDED"] call BIS_fnc_taskSetState;
+ if (0.5 < random 1) then {
+ [_posDeleted_ied] call btc_fnc_rep_call_militia;
+ };
+ };
+ }, [_clear_taskID, _selectedIED select 0]] call CBA_fnc_addEventHandlerArgs;
+ ["btc_ied_boom", {
+ params ["_posDeleted_ied"];
+ _thisArgs params ["_clear_taskID", "_pos_ied"];
+
+ if (!(_clear_taskID call BIS_fnc_taskCompleted) && {_pos_ied distance _posDeleted_ied < 5}) then {
+ [_clear_taskID, "FAILED"] call BIS_fnc_taskSetState;
+ };
+ }, [_clear_taskID, _selectedIED select 0]] call CBA_fnc_addEventHandlerArgs;
+};
+
+waitUntil {sleep 5;
+ _taskID call BIS_fnc_taskCompleted ||
+ !(false in (_tasksID apply {_x call BIS_fnc_taskCompleted}))
+};
+
+if (_taskID call BIS_fnc_taskState isEqualTo "CANCELED") exitWith {};
+if !("SUCCEEDED" in (_tasksID apply {_x call BIS_fnc_taskState})) exitWith {
+ [_taskID, "FAILED"] call BIS_fnc_taskSetState;
+};
+
+2 call btc_fnc_rep_change;
+
+[_taskID, "SUCCEEDED"] call BIS_fnc_taskSetState;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/rescue.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/rescue.sqf
index b6609e5f4..7e578d0d8 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/rescue.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/rescue.sqf
@@ -32,7 +32,7 @@ if (_useful isEqualTo []) exitWith {[] spawn btc_fnc_side_create;};
private _city = selectRandom _useful;
//// Randomise position \\\\
-private _pos = [getPos _city, (((_city getVariable ["RadiusX", 0]) + (_city getVariable ["RadiusY", 0]))/2) - 100] call btc_fnc_randomize_pos;
+private _pos = [getPos _city, (_city getVariable ["radius", 0])/2 - 100] call btc_fnc_randomize_pos;
_pos = [_pos, 0, 50, 13, 0, 60 * (pi / 180), 0] call btc_fnc_findsafepos;
_city setVariable ["spawn_more", true];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/supply.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/supply.sqf
index c8ef10bf0..cf57c1ac5 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/supply.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/supply.sqf
@@ -30,7 +30,7 @@ if (_useful isEqualTo []) then {_useful = + (btc_city_all select {!(isNull _x)})
private _city = selectRandom _useful;
private _pos = [getPos _city, 100] call btc_fnc_randomize_pos;
-_pos = [_pos, 0, 300, 20, false] call btc_fnc_findsafepos;
+_pos = [_pos, 0, _city getVariable ["radius", 100], 20, false] call btc_fnc_findsafepos;
[_taskID, 3, getPos _city, _city getVariable "name"] call btc_fnc_task_create;
private _move_taskID = _taskID + "mv";
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tag/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tag/create.sqf
new file mode 100644
index 000000000..17d828f69
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tag/create.sqf
@@ -0,0 +1,32 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_tag_create
+
+Description:
+ Create tag stored in city namespace under "data_tags".
+
+Parameters:
+ _city - City to initialise. [Object]
+
+Returns:
+
+Examples:
+ (begin example)
+ _result = [] call btc_fnc_tag_create;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_city", objNull, [objNull]]
+];
+
+private _array = _city getVariable ["data_tags", []];
+{
+ _x params ["_tagPosASL", "_vectorDirAndUp", "_texture", "_tagModel"];
+
+ [AGLToASL _tagPosASL, _vectorDirAndUp, _texture, objNull, _city, "", _tagModel] call ace_tagging_fnc_createTag;
+} forEach _array;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tag/eh.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tag/eh.sqf
new file mode 100644
index 000000000..1e6135de3
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tag/eh.sqf
@@ -0,0 +1,48 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_tag_eh
+
+Description:
+ Store texture for city de_activation, check if player try to remove a tag or store player tag to database.
+
+Parameters:
+ _tag - Tag. [Object]
+ _texture - Texture of the tag. [String]
+ _object - Object where the tag is draw. [Object]
+ _unit - Unit tagging. [Object]
+
+Returns:
+
+Examples:
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params ["_tag", "_texture", "_object", "_unit"];
+
+if (_unit in btc_city_all) then {
+ _tag setVariable ["btc_texture", _texture]; //Store texture for city de_activation
+ _tag setVariable ["btc_city", _unit];
+ btc_tags_server pushBack _tag;
+} else {
+ if (_texture isEqualTo "#(rgb,8,8,3)color(0,0,0,0)") then { //Check if player want to remove a tag
+ private _tags = (allSimpleObjects btc_type_blacklist) inAreaArray [getPosWorld _tag, 3, 3];
+ if (count _tags > 1) then {
+ _tags = _tags apply {[_x distance _tag, _x]};
+ _tags sort true;
+ private _tagToRemove = _tags select 1 select 1;
+ if (_tagToRemove in btc_tags_server) then {
+ [
+ [btc_rep_bonus_removeTagLetter, btc_rep_bonus_removeTag] select (_tagToRemove isKindOf "Graffiti_base_F"),
+ _unit
+ ] call btc_fnc_rep_change;
+ };
+ deleteVehicle _tagToRemove;
+ };
+ deleteVehicle _tag;
+ } else { //Store tag for database
+ btc_tags_player pushBack [_tag, _texture, _object];
+ };
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tag/initArea.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tag/initArea.sqf
new file mode 100644
index 000000000..b9004bd77
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tag/initArea.sqf
@@ -0,0 +1,109 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_tag_initArea
+
+Description:
+ Initialize positions of tags.
+
+Parameters:
+ _city - City to initialise. [Object]
+ _area - Area to create tag. [Number]
+ _n - Number of tag. [Number]
+
+Returns:
+
+Examples:
+ (begin example)
+ _result = [] call btc_fnc_tag_initArea;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_city", objNull, [objNull]],
+ ["_area", 100, [0]],
+ ["_n", 1, [0]]
+];
+
+private _array = _city getVariable ["data_tags", []];
+
+private _roads = _city nearRoads 50;
+private _road = if (_roads isEqualTo []) then {
+ objNull
+} else {
+ selectRandom _roads
+};
+for "_i" from 1 to (_n * 1.5) do {
+ private _sel_pos = [_city, _area] call CBA_fnc_randPos;
+ private _sel_dir = 0;
+ if !(surfaceIsWater _sel_pos) then {
+ if (isNil "_road" || {isNull _road}) then {
+ private _roads = _sel_pos nearRoads 50;
+ if !(_roads isEqualTo []) then {
+ _road = selectRandom _roads;
+ };
+ } else {
+ private _connected = roadsConnectedTo _road;
+ if (_connected isEqualTo []) then {
+ _sel_pos = ([_road, -1] call btc_fnc_ied_randomRoadPos) select 0;
+ _road = objNull;
+ } else {
+ _sel_dir = _road getDir (_connected select 0);
+ _sel_pos = _road getPos [
+ random (_road distance (_connected select 0)),
+ _sel_dir
+ ];
+ _sel_pos = _sel_pos getPos [random 1, _sel_dir + 90 * (selectRandom [1, -1])];
+ private _writingDirection = ((AGLToASL _sel_pos) select 2) < ((getPosASL (_connected select 0)) select 2);
+ _sel_dir = _sel_dir + 90 * ([-1, 1] select _writingDirection);
+ _road = _connected select selectRandomWeighted [0, 0.6, (count _connected) - 1, 0.4];
+ };
+ };
+
+ if (!isNull _road && {random 1 > 0.6}) then { // Draw sentences
+ private _sentences = ((localize (selectRandom btc_type_tags_sentences)) splitString " ");
+ {
+ private _word = _x;
+ {
+ private _letterPos = _sel_pos getPos [_forEachIndex * (0.7 + random 0.2), _sel_dir];
+
+ private _surface = surfaceNormal _letterPos;
+ private _v1 = vectorNormalized (_surface vectorMultiply -1);
+ private _v3 = _v1 vectorCrossProduct [0, 0, 1];
+ private _v2 = _v3 vectorCrossProduct _v1;
+ if (_v2 isEqualTo [0, 0, 0]) then {
+ _v2 = [0, 1, 0];
+ };
+
+ _letterPos set [2, 0];
+ _array pushBack [_letterPos, [_v1, _v2], format ["\a3\ui_f\data\igui\cfg\simpletasks\letters\%1_ca.paa", _x], "UserTexture1m_F"];
+ } forEach (_word splitString "");
+ _sel_pos = _sel_pos getPos [1.4, _sel_dir + 90];
+ } forEach _sentences;
+ } else { // Draw simple tag
+ private _surface = surfaceNormal _sel_pos;
+ private _v1 = vectorNormalized (_surface vectorMultiply -1);
+ private _v3 = _v1 vectorCrossProduct [0, 0, 1];
+ private _v2 = _v3 vectorCrossProduct _v1;
+ if (_v2 isEqualTo [0, 0, 0]) then {
+ _v2 = [0, 1, 0];
+ };
+
+ _sel_pos set [2, 0];
+ _array pushBack [_sel_pos, [_v1, _v2], "a3\structures_f_epb\civ\graffiti\data\graffiti_ca.paa", selectRandom btc_type_tags];
+ };
+
+ if (btc_debug) then {
+ private _marker = createMarker [format ["btc_tag_%1", _sel_pos], _sel_pos];
+ _marker setMarkerType "mil_dot";
+ _marker setMarkerColor "ColorGreen";
+ _marker setMarkerText "Tag";
+ _marker setMarkerSize [0.8, 0.8];
+ };
+ };
+};
+
+_city setVariable ["data_tags", _array];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/setDescription.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/setDescription.sqf
index 0f1d6b035..d0711f49a 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/setDescription.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/setDescription.sqf
@@ -361,6 +361,22 @@ switch (_description) do {
];
_type = "search";
};
+ case 38 : {
+ _description = [
+ format [localize "STR_BTC_HAM_SIDE_RUBBISH_DESC", _location] + (["B_APC_Tracked_01_CRV_F"] call btc_fnc_typeOfPreview),
+ format [localize "STR_BTC_HAM_SIDE_RUBBISH_TITLE", _location],
+ format [localize "STR_BTC_HAM_SIDE_RUBBISH_TITLE", _location]
+ ];
+ _type = "use";
+ };
+ case 39 : {
+ _description = [
+ (localize "STR_BTC_HAM_SIDE_RUBBISH_SPOT_DESC") + ([_location] call btc_fnc_typeOfPreview),
+ localize "STR_BTC_HAM_SIDE_RUBBISH_SPOT_TITLE",
+ localize "STR_BTC_HAM_SIDE_RUBBISH_SPOT_TITLE"
+ ];
+ _type = "move";
+ };
};
[
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/tasktypes.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/tasktypes.hpp
index a274a4a62..25a821aed 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/tasktypes.hpp
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/tasktypes.hpp
@@ -71,4 +71,7 @@ class CfgTaskTypes {
class Antenna {
icon = \A3\Data_F_Enoch\Logos\arma3_enoch_logo_ca.paa;
};
+ class Use {
+ icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\use_ca.paa;
+ };
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/ViV.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/ViV.sqf
new file mode 100644
index 000000000..1e6a5647e
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/ViV.sqf
@@ -0,0 +1,62 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_tow_ViV
+
+Description:
+ Move selected vehicle in the tower cargo with an hiden vehicle.
+
+Parameters:
+ _vehicleSelected - Vehicle to store in the tower cargo. [Object]
+ _tower - Tower vehicle with cargo space to handle the hiden vehicle. [Object]
+
+Returns:
+
+Examples:
+ (begin example)
+ [btc_tow_vehicleSelected, cursorObject] call btc_fnc_tow_ViV;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_vehicleSelected", objNull, [objNull]],
+ ["_tower", objNull, [objNull]]
+];
+
+if (_tower setVehicleCargo _vehicleSelected) exitWith {true};
+
+private _hideVehicle = createVehicle ["Land_WaterTank_F", [0, 0, 0], [], 0, "CAN_COLLIDE"];
+_hideVehicle hideObjectGlobal true;
+
+private _model_selected = (0 boundingBoxReal _vehicleSelected) select 1;
+private _model_hide = (0 boundingBoxReal _hideVehicle) select 1;
+private _model_selected_z = ((0 boundingBoxReal _vehicleSelected) select 0) select 2;
+private _model_hide_z = ((0 boundingBoxReal _hideVehicle) select 0) select 2;
+private _attachTo = [
+ 0,
+ ((_model_hide select 1) - (_model_selected select 1)),
+ -(abs _model_hide_z - abs _model_selected_z) + 0.1
+];
+_vehicleSelected attachTo [_hideVehicle, _attachTo];
+
+if (_tower setVehicleCargo _hideVehicle) then {
+ [{isNull isVehicleCargo (_this select 0)}, {
+ params ["_hideVehicle", "_vehicleSelected"];
+
+ private _pos = getPosWorld _vehicleSelected;
+ _pos set [2, (_pos select 2) + 0.3];
+
+ detach _vehicleSelected;
+ deleteVehicle _hideVehicle;
+
+ _vehicleSelected setPosWorld _pos;
+ [_vehicleSelected, [0, 0, 0.01]] remoteExecCall ["setVelocity", _vehicleSelected]; // Activate physic
+ }, [_hideVehicle, _vehicleSelected]] call CBA_fnc_waitUntilAndExecute;
+ true
+} else {
+ deleteVehicle _hideVehicle;
+ false
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/check.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/check.sqf
index f266b27b1..91b38b56a 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/check.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/check.sqf
@@ -3,17 +3,18 @@
Function: btc_fnc_tow_check
Description:
- _tower ----rope--- (hook)_towed
+ _tower ----rope--- (hook)_towed, Show feedback message when trying to tow a vehicle.
Parameters:
- _tower - [Object]
- _towed - [Object]
+ _tower - Tower vehicle. [Object]
+ _towed - Towed vehicle. [Object]
Returns:
+ _canTow - Can tow or not. [Boolean]
Examples:
(begin example)
- _result = [] call btc_fnc_tow_check;
+ _canTow = [cursorObject, btc_tow_vehicleSelected] call btc_fnc_tow_check;
(end)
Author:
@@ -28,21 +29,49 @@ params [
private _array = [_tower] call btc_fnc_log_get_nottowable;
-if ((_array findIf {_towed isKindOf _x}) != -1) exitWith {false};
+if ((_array findIf {_towed isKindOf _x}) != -1) exitWith {
+ private _string_array = "";
+ {
+ _string_array = _string_array + ", " + _x;
+ } forEach (([_tower] call btc_fnc_log_get_nottowable) - ["Truck_F"]);
+
+ (format [localize "STR_BTC_HAM_TOW_CANT", _string_array]) call CBA_fnc_notify;
+ false
+};
private _model_rear = ([_tower] call btc_fnc_tow_hitch_points) select 1;
-private _model_front = ([_towed] call btc_fnc_tow_hitch_points) select 0;
-private _distance = (_towed modeltoworld _model_front) distance (_tower modeltoworld _model_rear);
-
-if (btc_debug) then {
- if (isNil "btc_arrow_1") then {
- btc_arrow_1 = "Sign_Arrow_F" createVehicleLocal [0, 0, 0];
- btc_arrow_2 = "Sign_Arrow_F" createVehicleLocal [0, 0, 0];
- };
- btc_arrow_1 setPosASL AGLtoASL (_tower modelToWorldVisual _model_rear);
- btc_arrow_2 setPosASL AGLtoASL (_towed modelToWorldVisual _model_front);
+private _dirSelected = getDir _towed;
+private _model_selected = (0 boundingBoxReal _towed) select 1;
+private _model_front_selected = ([_towed] call btc_fnc_log_get_corner_points) select 2;
+private _offset = if (_model_selected select 1 > 3.06) then {
+ (_model_selected select 1) - 3.06
+} else {
+ (_model_front_selected select 1) - (_model_selected select 1)
+};
+private _posFlat = _towed getPos [_offset + 3 /*size of Truck_01_Rack_F*/, _dirSelected];
+_posFlat set [2, 0.2 + ((getPosATL _towed) select 2)];
+private _distance = _posFlat distance (_tower modelToWorld _model_rear);
+private _distanceTowed = _towed distance (_tower modelToWorld _model_rear);
+
+private _safeDistance = [_distance > 1.3, _distance < [5, 24] select (_tower isKindOf "Ship")];
+if (_safeDistance isEqualTo [true, false]) exitWith {
+ (localize "STR_BTC_HAM_TOW_TFAR") call CBA_fnc_notify;
+ false
+};
+if (_distanceTowed < _offset + 3 || _safeDistance isEqualTo [false, true]) exitWith {
+ (localize "str_a3_showcase_vtol_x11_taruclose_xia_0") call CBA_fnc_notify;
+ false
};
-private _can_tow = (_distance > 1.3) && (_distance < [5, 24] select (_tower isKindOf "Ship"));
+if (
+ !(isNull isVehicleCargo attachedto _tower) ||
+ !(isNull isVehicleCargo attachedto _towed) ||
+ !(isNull isVehicleCargo _tower) ||
+ !(isNull isVehicleCargo _towed) ||
+ !isNull (_tower getVariable ["btc_towing", objNull])
+) exitWith {
+ (localize "STR_BTC_HAM_TOW_ALREADYTOWED") call CBA_fnc_notify;
+ false
+};
-_can_tow
+true
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/hook.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/hook.sqf
deleted file mode 100644
index 7d2bb5cc2..000000000
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/hook.sqf
+++ /dev/null
@@ -1,34 +0,0 @@
-
-/* ----------------------------------------------------------------------------
-Function: btc_fnc_tow_hook
-
-Description:
- Save the vehicle selected.
-
-Parameters:
- _towed - Vehicle will be towed. [Object]
-
-Returns:
-
-Examples:
- (begin example)
- [cursorObject] call btc_fnc_tow_hook;
- (end)
-
-Author:
- Giallustio
-
----------------------------------------------------------------------------- */
-
-params [
- ["_towed", objNull, [objNull]]
-];
-
-btc_log_vehicle_selected = _towed;
-
-private _string_array = "";
-{
- _string_array = _string_array + ", " + _x;
-} forEach (([_towed] call btc_fnc_log_get_nottowable) - ["Truck_F"]);
-
-(format [localize "STR_BTC_HAM_LOG_HOOK_HINFO", _string_array]) call CBA_fnc_notify;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/ropeBreak.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/ropeBreak.sqf
new file mode 100644
index 000000000..a59cc2ada
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/ropeBreak.sqf
@@ -0,0 +1,59 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_tow_ropeBreak
+
+Description:
+ Handle towing rope when they break.
+
+Parameters:
+ _thisBI - BI parameters. [Array]
+ _thisArgsCBA - CBA parameters. [Array]
+
+Returns:
+
+Examples:
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+params ["_thisBI", "_thisArgsCBA"];
+_thisBI params ["_tower", "_rope", "_flat"];
+_thisArgsCBA params ["_vehicleSelected", "_safeDistance", "_ropes"];
+
+_tower removeEventHandler ["RopeBreak", _thisId];
+
+(_vehicleSelected call BIS_fnc_getPitchBank) params ["_pitch", "_bank"];
+private _vectorUp = vectorUp _flat;
+private _vectorDir = vectorDir _flat;
+
+_ropes apply {deleteVehicle _x};
+deTach _vehicleSelected;
+_flat setPos [0, 0, 0]; // Avoid collision with _vehicleSelected
+
+// Handle flipped vehicle
+if (
+ _pitch < 45 &&
+ _pitch > - 45 &&
+ _bank < 45 &&
+ _bank > - 45
+) then {
+ [_vehicleSelected, [_vectorDir, _vectorUp]] remoteExecCall ["setVectorDirAndUp", _vehicleSelected];
+} else {
+ private _towerDir = getDir _tower;
+ private _selectedSafePos = _tower getPos [- _safeDistance, _towerDir];
+ _selectedSafePos set [2, 0.5 + (_selectedSafePos select 2)];
+ _vehicleSelected setPos _selectedSafePos;
+ _vehicleSelected setDir _towerDir;
+};
+
+if !(
+ _tower isKindOf "Ship" ||
+ _tower isKindOf "Air"
+) then {
+ deleteVehicle _flat;
+};
+
+_vehicleSelected setVariable ["btc_towing", objNull, true];
+_tower setVariable ["btc_towing", objNull, true];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/ropeCreate.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/ropeCreate.sqf
index b4fc6f699..9cca11064 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/ropeCreate.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/ropeCreate.sqf
@@ -6,14 +6,14 @@ Description:
Tow a vehicle.
Parameters:
- _tower - Vehicle. [Object]
+ _tower - Vehicle towing. [Object]
+ _vehicleSelected - Vehicle will be towed. [Object]
Returns:
- _thisId - ID of the event handler. [Number]
Examples:
(begin example)
- [cursorObject] spawn btc_fnc_tow_ropeCreate;
+ [cursorObject] call btc_fnc_tow_ropeCreate;
(end)
Author:
@@ -22,57 +22,125 @@ Author:
---------------------------------------------------------------------------- */
params [
- ["_tower", objNull, [objNull]]
+ ["_tower", objNull, [objNull]],
+ ["_vehicleSelected", btc_tow_vehicleSelected, [objNull]]
];
-if !((isVehicleCargo btc_log_vehicle_selected) isEqualTo objNull) exitWith {(localize "STR_BTC_HAM_LOG_TOW_ALREADYTOWED") call CBA_fnc_notify;};
-if (_tower setVehicleCargo btc_log_vehicle_selected) exitWith {};
+if !([_tower, _vehicleSelected] call btc_fnc_tow_check) exitWith {};
+if (_tower setVehicleCargo _vehicleSelected) exitWith {};
-btc_int_ask_data = nil;
-[4, _tower] remoteExecCall ["btc_fnc_int_ask_var", 2];
-
-waitUntil {!(isNil "btc_int_ask_data")};
+private _canViV_wreck = false;
+if ((getVehicleCargo _tower) findIf {isObjectHidden _x} isEqualTo -1) then {
+ private _fakeVehicle = "Land_WaterTank_F" createVehicleLocal [0, 0, 0];
+ _canViV_wreck = _tower canVehicleCargo _fakeVehicle isEqualTo [true, true];
+ deleteVehicle _fakeVehicle;
+};
+if (_canViV_wreck) exitWith {
+ [_vehicleSelected, _tower] remoteExecCall ["btc_fnc_tow_ViV", 2];
+ btc_tow_vehicleSelected = objNull;
+};
-if (!isNull btc_int_ask_data) exitWith {(localize "STR_BTC_HAM_LOG_TOW_ALREADYTOWED") call CBA_fnc_notify;};
+(localize "STR_BTC_HAM_TOW_WAIT") call CBA_fnc_notify;
+
+(_vehicleSelected call BIS_fnc_getPitchBank) params ["_pitch", "_bank"];
+if !(
+ _pitch < 45 &&
+ _pitch > - 45 &&
+ _bank < 45 &&
+ _bank > - 45
+) exitWith {
+ [_vehicleSelected, {
+ params ["_vehicleSelected"];
+
+ private _pos = getPosWorld _vehicleSelected;
+ _vehicleSelected setVectorUp [0, 0, 1];
+ _pos set [2, 0.5 + (_pos select 2) + (_pos select 2) - ((getPosASL _vehicleSelected) select 2)];
+ _vehicleSelected setPosWorld _pos;
+ }] remoteExecCall ["call", _vehicleSelected];
+
+ [{
+ params ["_tower", "_vehicleSelected"];
+
+ (_vehicleSelected call BIS_fnc_getPitchBank) params ["_pitch", "_bank"];
+
+ _pitch < 45 &&
+ _pitch > - 45 &&
+ _bank < 45 &&
+ _bank > - 45
+ }, btc_fnc_tow_ropeCreate, [_tower, _vehicleSelected], 10] call CBA_fnc_waitUntilAndExecute;
+};
-private _model_rear_tower = ([_tower] call btc_fnc_tow_hitch_points) select 1;
-private _model_front_selected = ([btc_log_vehicle_selected] call btc_fnc_tow_hitch_points) select 0;
-private _relative_pos = - (_model_front_selected select 1) + (_model_rear_tower select 1) - ((btc_log_vehicle_selected modelToWorld _model_front_selected) distance (_tower modelToWorld _model_rear_tower));
-private _attachTo_pos = if (_tower isKindOf "Ship") then {
- [0, (-(_model_front_selected select 1) + (_model_rear_tower select 1) - 3), 0]
+// Find the position of the Flat object
+private _dirSelected = getDir _vehicleSelected;
+private _model_selected = (0 boundingBoxReal _vehicleSelected) select 1;
+private _model_front_selected = ([_vehicleSelected] call btc_fnc_log_get_corner_points) select 2;
+private _offset = if (_model_selected select 1 > 3.06) then {
+ (_model_selected select 1) - 3.06
} else {
- [0, _relative_pos, 0.2 + ((btc_log_vehicle_selected modelToWorld [0, 0, 0]) select 2) - ((_tower modelToWorld [0, 0, 0]) select 2)]
+ (_model_front_selected select 1) - (_model_selected select 1)
};
+private _posFlat = _vehicleSelected getPos [_offset, _dirSelected];
+private _altitude = (getPosATL _vehicleSelected) select 2;
+_posFlat set [2, 0.2 + _altitude];
-btc_log_vehicle_selected attachTo [_tower, _attachTo_pos];
+private _vectorUp = vectorUp _vehicleSelected;
+private _vectorDir = vectorDir _vehicleSelected;
-private _pos_rear = _tower modelToWorld _model_rear_tower;
-private _pos_front = btc_log_vehicle_selected modelToWorld _model_front_selected;
-private _distance = 0.3 + (_pos_front distance _pos_rear);
-(_tower worldToModel _pos_front) params ["_model_front_selected_x", "_model_front_selected_y", "_model_front_selected_z"];
+private _flatType = ["Truck_01_Rack_F", "Truck_01_Rack_tropic_F"] select (worldName in ["Tanoa", "lingor3", "chernarus", "Enoch", "sara"]);
+private _isShipOrAir = _tower isKindOf "Ship" || _tower isKindOf "Air";
+private _flat = if (_isShipOrAir) then {
+ _tower
+} else {
+ createVehicle [_flatType, _posFlat, [], 0, "CAN_COLLIDE"]
+};
+_flat setDir _dirSelected;
+[_flat, [_vectorDir, _vectorUp]] remoteExecCall ["setVectorDirAndUp", _flat];
+
+private _model_corners_tower = [_tower] call btc_fnc_log_get_corner_points;
+private _model_corners_flat = [_flat] call btc_fnc_log_get_corner_points;
+private _model_flat = (0 boundingBoxReal _flat) select 1;
+private _attachTo = [
+ 0,
+ [(_model_flat select 1) - (_model_selected select 1), -(_model_flat select 1) -(_model_selected select 1)] select (_flat isEqualTo _tower),
+ 0.1 - (_model_front_selected select 2)
+];
-ropeCreate [_tower, _model_rear_tower, _tower, [_model_front_selected_x - 0.4, _model_front_selected_y, _model_front_selected_z], _distance];
-ropeCreate [_tower, _model_rear_tower, _tower, [_model_front_selected_x + 0.4, _model_front_selected_y, _model_front_selected_z], _distance];
+_vehicleSelected attachTo [_flat, _attachTo];
-[_tower, ["tow", btc_log_vehicle_selected]] remoteExecCall ["setVariable", 2];
-[btc_log_vehicle_selected, ["tow", _tower]] remoteExecCall ["setVariable", 2];
+private _ropeTowerRelPos1 = (_model_corners_tower select 0) vectorAdd [0, -1, 2];
+private _ropeTowerRelPos2 = (_model_corners_tower select 1) vectorAdd [0, -1, 2];
+private _ropeFlatRelPos1 = (_model_corners_flat select 2) vectorAdd [0, 0.05, 0.6];
+private _ropeFlatRelPos2 = (_model_corners_flat select 3) vectorAdd [0, 0.05, 0.6];
-[_tower, "RopeBreak", {
- params ["_tower", "_rope"];
- _thisArgs params ["_towed"];
+private _rope1 = ropeCreate [_tower, _ropeTowerRelPos1,
+ [_flat, _vehicleSelected] select _isShipOrAir,
+ _ropeFlatRelPos1,
+ (_tower modelToWorld _ropeTowerRelPos1) distance (_flat modelToWorld _ropeFlatRelPos1)
+];
+private _rope2 = ropeCreate [_tower, _ropeTowerRelPos2,
+ [_flat, _vehicleSelected] select _isShipOrAir,
+ _ropeFlatRelPos2,
+ (_tower modelToWorld _ropeTowerRelPos2) distance (_flat modelToWorld _ropeFlatRelPos2)
+];
+private _shortRope = [_rope1, _rope2] select (ropeLength _rope1 > ropeLength _rope2);
+ropeUnwind [_shortRope, 2, ropeLength _rope1 max ropeLength _rope2, false];
- _tower removeEventHandler ["RopeBreak", _thisId];
+_tower setVariable ["btc_towing", _vehicleSelected, true];
+_vehicleSelected setVariable ["btc_towing", _tower, true];
+btc_tow_vehicleSelected = objNull;
- deTach _towed;
+[_tower, "RopeBreak", {[_this, _thisArgs] call btc_fnc_tow_ropeBreak}, [
+ _vehicleSelected,
+ 2 + (_model_selected select 1) - (_model_corners_tower select 0 select 1),
+ [_rope1, _rope2]
+]] remoteExecCall ["CBA_fnc_addBISEventHandler", 2];
- (getPos _towed) params ["_x", "_y", "_z"];
+if (_isShipOrAir) exitWith {(localize "STR_BTC_HAM_TOW_DONE") call CBA_fnc_notify};
- if (_z < -0.05) then {
- _towed setPosASL [_x, _y, ((getPosASL _tower) select 2) - _z];
- } else {
- [_towed, [0, 0, 0.01]] remoteExecCall ["setVelocity", _towed];
- };
+[{
+ params ["_flat", "_rope1", "_rope2"];
- [_towed, ["tow", objNull]] remoteExecCall ["setVariable", 2];
- [_tower, ["tow", objNull]] remoteExecCall ["setVariable", 2];
-}, [btc_log_vehicle_selected]] call CBA_fnc_addBISEventHandler;
+ [_flat, _rope1, _rope2,
+ (_flat call BIS_fnc_getPitchBank) select 0
+ ] call btc_fnc_tow_unwind;
+}, [_flat, _rope1, _rope2], 2] call CBA_fnc_waitAndExecute;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/unhook.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/unhook.sqf
index cc9c1f0c2..5e5ab762b 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/unhook.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/unhook.sqf
@@ -12,7 +12,7 @@ Returns:
Examples:
(begin example)
- [cursorObject] spawn btc_fnc_tow_unhook;
+ [cursorObject] call btc_fnc_tow_unhook;
(end)
Author:
@@ -24,16 +24,11 @@ params [
["_veh", objNull, [objNull]]
];
-btc_int_ask_data = nil;
-[4, _veh] remoteExecCall ["btc_fnc_int_ask_var", 2];
-
-waitUntil {!(isNil "btc_int_ask_data")};
-
-if (isNull btc_int_ask_data) exitWith {(localize "STR_BTC_HAM_LOG_UNHOOK_NOROPE") call CBA_fnc_notify;};
+private _towing = _veh getVariable ["btc_towing", objNull];
private _ropes = ropes _veh;
if (_ropes isEqualTo []) then {
- _ropes = ropes btc_int_ask_data;
+ _ropes = ropes _towing;
};
_ropes apply {ropeDestroy _x};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/unwind.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/unwind.sqf
new file mode 100644
index 000000000..2cacdbd20
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/tow/unwind.sqf
@@ -0,0 +1,62 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_tow_unwind
+
+Description:
+ Unwind rope until the pitch is increased by 3°.
+
+Parameters:
+ _flat - Object carrying the towed vehicle. [Object]
+ _rope1 - Rope to unwind. [Object]
+ _rope2 - Rope to unwind. [Object]
+ _initialPitch - Initial pitch and bank. [Number]
+
+Returns:
+
+Examples:
+ (begin example)
+ [] call btc_fnc_tow_unwind;
+ (end)
+
+Author:
+ Vdauphin
+
+---------------------------------------------------------------------------- */
+
+[{
+ isNull (_this select 1) ||
+ {isNull (_this select 2)} ||
+ {
+ ropeUnwound (_this select 1) &&
+ ropeUnwound (_this select 2)
+ }
+}, {
+ params ["_flat", "_rope1", "_rope2", "_initialPitch"];
+
+ private _actualPitch = (_flat call BIS_fnc_getPitchBank) select 0;
+ if (
+ isNull _rope1 ||
+ {isNull _rope2} ||
+ {0.5 in ([_rope1, _rope2] apply {ropeLength _x})}
+ ) exitWith {};
+ if (_actualPitch - _initialPitch > 3) exitWith {
+ [{
+ params ["_flat", "_rope1", "_rope2", "_initialPitch"];
+
+ private _actualPitch = (_flat call BIS_fnc_getPitchBank) select 0;
+ _actualPitch - _initialPitch < 3
+ }, {
+ _this call btc_fnc_tow_unwind;
+ }, _this, 1, {
+ params ["_flat", "_rope1", "_rope2"];
+
+ private _longRope = [_rope2, _rope1] select (ropeLength _rope1 > ropeLength _rope2);
+ ropeUnwind [_longRope, 1, ropeLength _rope1 min ropeLength _rope2, false];
+ ["btc_tow_unwindDone", _this] call CBA_fnc_localEvent;
+ }] call CBA_fnc_waitUntilAndExecute;
+ };
+
+ ropeUnwind [_rope1, 0.2, -0.02, true];
+ ropeUnwind [_rope2, 0.2, -0.02, true];
+ _this call btc_fnc_tow_unwind;
+}, _this] call CBA_fnc_waitUntilAndExecute;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_add_respawn.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/addRespawn.sqf
similarity index 76%
rename from =BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_add_respawn.sqf
rename to =BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/addRespawn.sqf
index 230e784f7..9ed468933 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_add_respawn.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/addRespawn.sqf
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
-Function: btc_fnc_eh_veh_add_respawn
+Function: btc_fnc_veh_addRespawn
Description:
Add a vehicle to the respawn system and save vehicle parameters.
@@ -15,7 +15,7 @@ Returns:
Examples:
(begin example)
- [cursorObject, 30] call btc_fnc_eh_veh_add_respawn;
+ [cursorObject, 30] call btc_fnc_veh_addRespawn;
(end)
Author:
@@ -26,8 +26,7 @@ Author:
params [
["_vehicle", objNull, [objNull]],
["_time", 30, [0]],
- ["_helo", btc_helo, [[]]],
- ["_p_chem", btc_p_chem, [false]]
+ ["_helo", btc_helo, [[]]]
];
_helo pushBackUnique _vehicle;
@@ -49,12 +48,11 @@ _vehicle addMPEventHandler ["MPKilled", {
{_unit getVariable ["btc_killed", true]} // https://feedback.bistudio.com/T149510
) then {
_unit setVariable ["btc_killed", false];
- [_unit] call btc_fnc_eh_veh_respawn;
+ _this call btc_fnc_veh_respawn;
};
}];
-if (_p_chem) then {
- _vehicle addEventHandler ["GetIn", {
- [_this select 0, _this select 2] call btc_fnc_chem_propagate;
- _this
- }];
+if (btc_p_respawn_location > 0) then {
+ if !(fullCrew [_vehicle, "cargo", true] isEqualTo []) then {
+ [_vehicle, "Deleted", {_thisArgs call BIS_fnc_removeRespawnPosition}, [btc_player_side, _vehicle] call BIS_fnc_addRespawnPosition] call CBA_fnc_addBISEventHandler;
+ };
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/init.sqf
new file mode 100644
index 000000000..e4ad29770
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/init.sqf
@@ -0,0 +1,52 @@
+
+/* ----------------------------------------------------------------------------
+Function: btc_fnc_veh_init
+
+Description:
+ Add custom ACE interaction depends one vehicle type (static weapon, land vehicle, helicopter and ship).
+
+Parameters:
+ _type - Type of vehicle to add custom ACE interaction. [String]
+
+Returns:
+
+Examples:
+ (begin example)
+ ["B_Truck_01_fuel_F"] call btc_fnc_veh_init;
+ (end)
+
+Author:
+ Giallustio
+
+---------------------------------------------------------------------------- */
+
+params [
+ ["_type", "", [""]]
+];
+
+if (isNil "btc_actions_veh") then {btc_actions_veh = [];};
+if ((btc_actions_veh pushBackUnique _type) isEqualTo -1) exitWith {};
+
+switch true do {
+ case (_type isKindOf "UGV_02_Base_F") : {};
+ case (_type isKindOf "StaticWeapon") : {};
+ case (_type isKindOf "LandVehicle" || {_type isKindOf "Ship"}) : {
+ private _action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {isNull isVehicleCargo attachedto _target && isNull isVehicleCargo _target}] call ace_interact_menu_fnc_createAction;
+ [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
+ _action = ["log_tow", localize "STR_BTC_HAM_ACTION_VEHINIT_TOW", "\z\ace\addons\attach\UI\attach_ca.paa", {_target call btc_fnc_tow_ropeCreate;}, {!isNull btc_tow_vehicleSelected && {btc_tow_vehicleSelected != _target}}] call ace_interact_menu_fnc_createAction;
+ [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
+ _action = ["log_hook", localize "STR_BTC_HAM_ACTION_VEHINIT_HOOK", "\z\ace\addons\attach\UI\attach_ca.paa", {btc_tow_vehicleSelected = _target; (localize "STR_BTC_HAM_TOW_HOOK") call CBA_fnc_notify;}, {true}] call ace_interact_menu_fnc_createAction;
+ [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
+ _action = ["log_hook", localize "STR_BTC_HAM_ACTION_VEHINIT_UHOOK", "\z\ace\addons\attach\UI\detach_ca.paa", {_target call btc_fnc_tow_unhook;}, {!isNull (_target getVariable ["btc_towing", objNull]);}] call ace_interact_menu_fnc_createAction;
+ [_type, 0, ["ACE_MainActions", "Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;
+ };
+ case (_type isKindOf "Helicopter") : {
+ private _action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
+ [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;
+ //Lift
+ _action = ["Deploy_ropes", localize "STR_ACE_Fastroping_Interaction_deployRopes", "\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa", {[] spawn btc_fnc_lift_deployRopes;}, {!btc_ropes_deployed && {(driver vehicle player) isEqualTo player} && {(getPosATL player) select 2 > 4}}] call ace_interact_menu_fnc_createAction;
+ [_type, 1, ["ACE_SelfActions"], _action, true] call ace_interact_menu_fnc_addActionToClass;
+ _action = ["Cut_ropes", localize "STR_ACE_Fastroping_Interaction_cutRopes", "\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa", {[] call btc_fnc_lift_destroyRopes;}, {btc_ropes_deployed && {(driver vehicle player) isEqualTo player}}] call ace_interact_menu_fnc_createAction;
+ [_type, 1, ["ACE_SelfActions"], _action, true] call ace_interact_menu_fnc_addActionToClass;
+ };
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_killed.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/killed.sqf
similarity index 56%
rename from =BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_killed.sqf
rename to =BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/killed.sqf
index e40819542..36c925c2e 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_killed.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/killed.sqf
@@ -1,18 +1,21 @@
/* ----------------------------------------------------------------------------
-Function: btc_fnc_eh_veh_killed
+Function: btc_fnc_veh_killed
Description:
Create marker wreck and change reputation on vehicle destruction.
Parameters:
_vehicle - Vehicle object. [Object]
+ _killer - Killer. [Object]
+ _instigator - Person who pulled the trigger. [Object]
+ _allowRepChange - Allow reputation change. [Boolean]
Returns:
Examples:
(begin example)
- [btc_veh_12] call btc_fnc_eh_veh_killed;
+ [btc_veh_12] call btc_fnc_veh_killed;
(end)
Author:
@@ -21,7 +24,10 @@ Author:
---------------------------------------------------------------------------- */
params [
- ["_vehicle", objNull, [objNull]]
+ ["_vehicle", objNull, [objNull]],
+ ["_killer", objNull, [objNull]],
+ ["_instigator", objNull, [objNull]],
+ ["_allowRepChange", true, [false]]
];
private _marker = createMarker [format ["m_%1", _vehicle], getPos _vehicle];
@@ -30,9 +36,10 @@ _marker setMarkerColor "ColorRed";
[_marker, "STR_BTC_HAM_O_EH_VEHKILLED_MRK", getText (configFile >> "cfgVehicles" >> typeOf _vehicle >> "displayName")] remoteExecCall ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; // %1 wreck
_vehicle setVariable ["marker", _marker];
-
-if (isServer) then {
- btc_rep_malus_veh_killed call btc_fnc_rep_change;
-} else {
- btc_rep_malus_veh_killed remoteExecCall ["btc_fnc_rep_change", 2];
+if (_allowRepChange) then {
+ if (isServer) then {
+ [btc_rep_malus_veh_killed, _killer] call btc_fnc_rep_change;
+ } else {
+ [btc_rep_malus_veh_killed, _killer] remoteExecCall ["btc_fnc_rep_change", 2];
+ };
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_respawn.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/respawn.sqf
similarity index 63%
rename from =BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_respawn.sqf
rename to =BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/respawn.sqf
index d31f704e7..b3e0c0bb0 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_respawn.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/veh/respawn.sqf
@@ -1,18 +1,20 @@
/* ----------------------------------------------------------------------------
-Function: btc_fnc_eh_veh_respawn
+Function: btc_fnc_veh_respawn
Description:
Respawn the vehicle passed in parameter.
Parameters:
- _vehicle - Vehicle to respawn. [Object]
+ _vehicle - Vehicle object. [Object]
+ _killer - Killer. [Object]
+ _instigator - Person who pulled the trigger. [Object]
Returns:
Examples:
(begin example)
- [cursorObject] call btc_fnc_eh_veh_respawn;
+ [cursorObject] call btc_fnc_veh_respawn;
(end)
Author:
@@ -21,10 +23,13 @@ Author:
---------------------------------------------------------------------------- */
params [
- ["_vehicle", objNull, [objNull]]
+ ["_vehicle", objNull, [objNull]],
+ ["_killer", objNull, [objNull]],
+ ["_instigator", objNull, [objNull]]
];
private _data = _vehicle getVariable ["data_respawn", []];
+_data pushBack (_vehicle getVariable ["btc_EDENinventory", []]);
[{
params [
@@ -49,20 +54,31 @@ private _data = _vehicle getVariable ["data_respawn", []];
["_fuelSource", [], [[]]],
["_pylons", [], [[]]],
["_isContaminated", false, [false]],
- ["_supplyVehicle", [], [[]]]
+ ["_supplyVehicle", [], [[]]],
+ ["_EDENinventory", [], [[]]]
];
private _vehicle = _type createVehicle _pos;
_vehicle setDir _dir;
_vehicle setPosASL _pos;
_vehicle setVectorDirAndUp _vectorPos;
-
+
if (getNumber(configFile >> "CfgVehicles" >> _type >> "isUav") isEqualTo 1) then {
createVehicleCrew _vehicle;
};
[_vehicle, _customization, _isMedicalVehicle, _isRepairVehicle, _fuelSource, _pylons, _isContaminated, _supplyVehicle] call btc_fnc_setVehProperties;
+ if !(_EDENinventory isEqualTo []) then {
+ _vehicle setVariable ["btc_EDENinventory", _EDENinventory];
+ [_vehicle, _EDENinventory] call btc_fnc_log_setCargo;
+ };
- [_vehicle, _time] call btc_fnc_eh_veh_add_respawn;
+ [_vehicle, _time] call btc_fnc_veh_addRespawn;
}, _data, 1] call CBA_fnc_waitAndExecute;
}, [_vehicle, _data], _data select 3] call CBA_fnc_waitAndExecute;
+
+if (isServer) then {
+ [btc_rep_malus_veh_killed, _instigator] call btc_fnc_rep_change;
+} else {
+ [btc_rep_malus_veh_killed, _instigator] remoteExecCall ["btc_fnc_rep_change", 2];
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/init.sqf
new file mode 100644
index 000000000..b291f2a6d
--- /dev/null
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/init.sqf
@@ -0,0 +1,18 @@
+enableSaving [false, false];
+
+[] call compile preprocessFileLineNumbers "core\def\mission.sqf";
+[] call compile preprocessFileLineNumbers "define_mod.sqf";
+
+if (isServer) then {
+ [] call compile preprocessFileLineNumbers "core\init_server.sqf";
+};
+
+[] call compile preprocessFileLineNumbers "core\init_common.sqf";
+
+if (!isDedicated && hasInterface) then {
+ [] call compile preprocessFileLineNumbers "core\init_player.sqf";
+};
+
+if (!isDedicated && !hasInterface) then {
+ [] call compile preprocessFileLineNumbers "core\init_headless.sqf";
+};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/init_headless.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/init_headless.sqf
index 205066cfe..4ffb05693 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/init_headless.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/init_headless.sqf
@@ -1,2 +1,4 @@
+[] call btc_fnc_eh_headless;
+
//Move btc_patrol_active group to HC
[] remoteExecCall ["btc_fnc_set_groupsOwner", 2];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/init_player.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/init_player.sqf
index 1fdab13a4..c61cf34b5 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/init_player.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/init_player.sqf
@@ -1,7 +1,17 @@
-[] call compile preprocessFileLineNumbers "core\doc.sqf";
+btc_map_mapIllumination = ace_map_mapIllumination;
+if !(isNil "btc_custom_loc") then {
+ {
+ _x params ["_pos", "_cityType", "_cityName", "_radius"];
+ private _location = createLocation [_cityType, _pos, _radius, _radius];
+ _location setText _cityName;
+ } forEach btc_custom_loc;
+};
+btc_intro_done = [] spawn btc_fnc_intro;
[{!isNull player}, {
+ [] call compile preprocessFileLineNumbers "core\doc.sqf";
+ btc_respawn_marker setMarkerPosLocal player;
player addRating 9999;
["InitializePlayer", [player]] call BIS_fnc_dynamicGroups;
@@ -28,13 +38,13 @@
default {
};
};
-}] call CBA_fnc_waitUntilAndExecute;
-
-if (btc_debug) then {
- onMapSingleClick "vehicle player setPos _pos";
- player allowDamage false;
+ if (btc_debug) then {
+ onMapSingleClick "vehicle player setPos _pos";
+ player allowDamage false;
- waitUntil {!isNull (findDisplay 12)};
- private _eh = ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", btc_fnc_debug_marker];
-};
+ [{!isNull (findDisplay 12)}, {
+ ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", btc_fnc_debug_marker];
+ }] call CBA_fnc_waitUntilAndExecute;
+ };
+}] call CBA_fnc_waitUntilAndExecute;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/init_server.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/init_server.sqf
index c451b63fd..021e1ea87 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/core/init_server.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/init_server.sqf
@@ -1,11 +1,14 @@
[] call compile preprocessFileLineNumbers "core\fnc\city\init.sqf";
+["Initialize"] call BIS_fnc_dynamicGroups;
+setTimeMultiplier btc_p_acctime;
+
["btc_m", -1, objNull, "", false, false] call btc_fnc_task_create;
[["btc_dft", "btc_m"], 0] call btc_fnc_task_create;
[["btc_dty", "btc_m"], 1] call btc_fnc_task_create;
if (btc_db_load && {profileNamespace getVariable [format ["btc_hm_%1_db", worldName], false]}) then {
- if ((profileNamespace getVariable [format ["btc_hm_%1_version", worldName], 1.13]) in [1.193, 1.2, btc_version select 1]) then {
+ if ((profileNamespace getVariable [format ["btc_hm_%1_version", worldName], 1.13]) in [btc_version select 1, 20.1]) then {
[] call compile preprocessFileLineNumbers "core\fnc\db\load.sqf";
} else {
[] call compile preprocessFileLineNumbers "core\fnc\db\load_old.sqf";
@@ -19,7 +22,8 @@ if (btc_db_load && {profileNamespace getVariable [format ["btc_hm_%1_db", worldN
setDate _date;
{
- [{!isNull _this}, {_this call btc_fnc_db_add_veh;}, _x] call CBA_fnc_waitUntilAndExecute;
+ _x setVariable ["btc_EDENinventory", [getWeaponCargo _x, getMagazineCargo _x, getItemCargo _x]];
+ _x call btc_fnc_db_add_veh;
} forEach btc_vehicles;
};
@@ -28,15 +32,26 @@ if (btc_db_load && {profileNamespace getVariable [format ["btc_hm_%1_db", worldN
[] call btc_fnc_chem_checkLoop;
[] call btc_fnc_chem_handleShower;
[] call btc_fnc_spect_checkLoop;
+if (btc_p_db_autoRestart > 0) then {
+ [{
+ [19] remoteExecCall ["btc_fnc_show_hint", [0, -2] select isDedicated];
+ [{
+ [] call btc_fnc_db_autoRestart;
+ }, [], 5 * 60] call CBA_fnc_waitAndExecute;
+ }, [], btc_p_db_autoRestartTime * 60 * 60 - 5 * 60] call CBA_fnc_waitAndExecute;
+};
-["Initialize"] call BIS_fnc_dynamicGroups;
-
-setTimeMultiplier btc_p_acctime;
-
-{[_x, 30] call btc_fnc_eh_veh_add_respawn;} forEach btc_helo;
+{
+ _x setVariable ["btc_EDENinventory", [getWeaponCargo _x, getMagazineCargo _x, getItemCargo _x]];
+ [_x, 30] call btc_fnc_veh_addRespawn;
+} forEach btc_helo;
if (btc_p_side_mission_cycle > 0) then {
for "_i" from 1 to btc_p_side_mission_cycle do {
[true] spawn btc_fnc_side_create;
};
};
+
+{
+ ["btc_tag_remover" + _x, "STR_BTC_HAM_ACTION_REMOVETAG", _x, ["#(rgb,8,8,3)color(0,0,0,0)"], "\a3\Modules_F_Curator\Data\portraitSmoke_ca.paa"] call ace_tagging_fnc_addCustomTag;
+} forEach ["ACE_SpraypaintRed"];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/define_mod.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/define_mod.sqf
index c1ec4aab8..49bad806b 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/define_mod.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/define_mod.sqf
@@ -1,8 +1,8 @@
btc_custom_loc = [
/*
- DESCRIPTION: [POS(Array),TYPE(String),NAME(String),RADIUS X(Number),RADIUS X(Number),IS OCCUPIED(Bool)]
- Possible types: "NameVillage","NameCity","NameCityCapital","NameLocal","Hill","Airport","NameMarine"
- EXAMPLE: [[13132.8,3315.07,0.00128174],"NameVillage","Mountain 1",800,800,true]
+ DESCRIPTION: [POS(Array),TYPE(String),NAME(String),RADIUS (Number),IS OCCUPIED(Bool)]
+ Possible types: "NameVillage","NameCity","NameCityCapital","NameLocal","Hill","Airport","NameMarine", "StrongpointArea", "BorderCrossing", "VegetationFir"
+ EXAMPLE: [[13132.8,3315.07,0.00128174],"NameVillage","Mountain 1",800,true]
*/
];
@@ -42,9 +42,12 @@ btc_custom_arsenal = [_weapons, _magazines, _items, _backpacks];
private _radio = ["tf_anprc152", "ACRE_PRC148"] select (isClass(configFile >> "cfgPatches" >> "acre_main"));
//Array of colored item: 0 - Desert, 1 - Tropic, 2 - Black, 3 - forest
private _uniforms = ["U_B_CombatUniform_mcam", "U_B_CTRG_Soldier_F", "U_B_CTRG_1", "U_B_CombatUniform_mcam_wdl_f"];
+private _uniformsCBRN = ["U_B_CBRN_Suit_01_MTP_F", "U_B_CBRN_Suit_01_Tropic_F", "U_C_CBRN_Suit_01_Blue_F", "U_B_CBRN_Suit_01_Wdl_F"];
+private _uniformsSniper = ["U_B_FullGhillie_sard", "U_B_FullGhillie_lsh", "U_B_T_FullGhillie_tna_F", "U_B_T_FullGhillie_tna_F"];
private _vests = ["V_PlateCarrierH_CTRG", "V_PlateCarrier2_rgr_noflag_F", "V_PlateCarrierH_CTRG", "V_PlateCarrier2_wdl"];
private _helmets = ["H_HelmetSpecB_paint2", "H_HelmetB_Enh_tna_F", "H_HelmetSpecB_blk", "H_HelmetSpecB_wdl"];
private _hoods = ["G_Balaclava_combat", "G_Balaclava_TI_G_tna_F", "G_Balaclava_combat", "G_Balaclava_combat"];
+private _hoodCBRN = "G_AirPurifyingRespirator_01_F";
private _laserdesignators = ["Laserdesignator", "Laserdesignator_03", "Laserdesignator_01_khk_F", "Laserdesignator_01_khk_F"];
private _night_visions = ["NVGoggles", "NVGoggles_INDEP", "NVGoggles_OPFOR", "NVGoggles_INDEP"];
private _weapons = ["arifle_MXC_F", "arifle_MXC_khk_F", "arifle_MXC_Black_F", "arifle_MXC_Black_F"];
@@ -56,5 +59,6 @@ private _launcher_AT = ["launch_B_Titan_short_F", "launch_B_Titan_short_tna_F",
private _launcher_AA = ["launch_B_Titan_F", "launch_B_Titan_tna_F", "launch_O_Titan_F", "launch_B_Titan_tna_F"];
private _backpacks = ["B_AssaultPack_Kerry", "B_AssaultPack_eaf_F", "B_AssaultPack_blk", "B_AssaultPack_wdl_F"];
private _backpacks_big = ["B_Kitbag_mcamo", "B_Kitbag_rgr", "B_Kitbag_rgr", "B_Kitbag_rgr"];
+private _backpackCBRN = "B_CombinationUnitRespirator_01_F";
-btc_arsenal_loadout = [_uniforms, _vests, _helmets, _hoods, _laserdesignators, _night_visions, _weapons, _weapons_sniper, _weapons_machineGunner, _bipods, _pistols, _launcher_AT, _launcher_AA, _backpacks, _backpacks_big, [_radio, _radio, _radio, _radio]];
+btc_arsenal_loadout = [_uniforms, _uniformsCBRN, _uniformsSniper, _vests, _helmets, _hoods, [_hoodCBRN, _hoodCBRN, _hoodCBRN, _hoodCBRN], _laserdesignators, _night_visions, _weapons, _weapons_sniper, _weapons_machineGunner, _bipods, _pistols, _launcher_AT, _launcher_AA, _backpacks, _backpacks_big, [_backpackCBRN, _backpackCBRN, _backpackCBRN, _backpackCBRN], [_radio, _radio, _radio, _radio]];
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/description.ext b/=BTC=co@30_Hearts_and_Minds.Altis/description.ext
index 8f982cb35..bf22ba339 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/description.ext
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/description.ext
@@ -49,6 +49,12 @@ class Extended_InitPost_EventHandlers {
};
};
+respawn = "BASE";
+respawnDelay = 2;
+respawnDialog = 0;
+respawnOnStart = 0;
+respawnTemplates[] = {"MenuPosition"};
+
// Disable BI wreck system (H&M handle it internally)
wreckManagerMode = 0;
corpseManagerMode = 0;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/init.sqf
index 392aeb323..97ba728d6 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/init.sqf
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/init.sqf
@@ -1,20 +1,2 @@
-enableSaving [false, false];
-if (hasInterface) then {btc_intro_done = [] spawn btc_fnc_intro;};
-
-[] call compile preprocessFileLineNumbers "core\def\mission.sqf";
-[] call compile preprocessFileLineNumbers "define_mod.sqf";
-
-if (isServer) then {
- [] call compile preprocessFileLineNumbers "core\init_server.sqf";
-};
-
-[] call compile preprocessFileLineNumbers "core\init_common.sqf";
-
-if (!isDedicated && hasInterface) then {
- [] call compile preprocessFileLineNumbers "core\init_player.sqf";
-};
-
-if (!isDedicated && !hasInterface) then {
- [] call compile preprocessFileLineNumbers "core\init_headless.sqf";
-};
+[compile preprocessFileLineNumbers "core\init.sqf"] call CBA_fnc_directCall;
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/mission.sqm b/=BTC=co@30_Hearts_and_Minds.Altis/mission.sqm
index 5e448c8ac..585796bad 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/mission.sqm
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/mission.sqm
@@ -8,7 +8,7 @@ class EditorData
toggles=521;
class ItemIDProvider
{
- nextID=226;
+ nextID=232;
};
class MarkerIDProvider
{
@@ -16,10 +16,10 @@ class EditorData
};
class Camera
{
- pos[]={8380.7012,98.929726,10101.742};
- dir[]={-0.82167125,-0.56283653,-0.089907967};
- up[]={-0.5595513,0.82653111,-0.061226442};
- aside[]={-0.1087717,-3.2095704e-007,0.99407214};
+ pos[]={8314.7744,91.116623,10084.846};
+ dir[]={-0.80029076,-0.58512336,0.13129118};
+ up[]={-0.57747674,0.81089264,0.09473715};
+ aside[]={0.16189197,-1.5887781e-007,0.98683923};
};
};
binarizationWanted=0;
@@ -39,9 +39,10 @@ addons[]=
"A3_Characters_F",
"ace_explosives",
"A3_Modules_F_Curator_Curator",
- "A3_Characters_F_Mark",
+ "A3_Characters_F_Enoch",
"A3_Air_F_Heli_Heli_Transport_03",
"A3_Soft_F_Beta_Truck_01",
+ "A3_Soft_F_Enoch_Truck_01",
"A3_Soft_F_Exp_LSV_01",
"A3_Soft_F_MRAP_01",
"A3_Armor_F_Beta_APC_Wheeled_01",
@@ -49,7 +50,7 @@ addons[]=
"A3_Air_F_Beta_Heli_Attack_01",
"A3_Props_F_Enoch_Military_Decontamination",
"A3_Signs_F",
- "A3_Soft_F_Enoch_Truck_01"
+ "A3_Armor_F_Beta_APC_Tracked_01"
};
class AddonsMetaData
{
@@ -142,8 +143,8 @@ class AddonsMetaData
};
class Item12
{
- className="A3_Characters_F_Mark";
- name="Arma 3 Marksmen - Characters and Clothing";
+ className="A3_Characters_F_Enoch";
+ name="Arma 3 Contact Platform - Characters and Clothing";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
@@ -163,43 +164,43 @@ class AddonsMetaData
};
class Item15
{
- className="A3_Soft_F";
- name="Arma 3 Alpha - Unarmored Land Vehicles";
+ className="A3_Soft_F_Enoch";
+ name="Arma 3 Contact Platform - Unarmored Land Vehicles";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item16
{
- className="A3_Armor_F_Beta";
- name="Arma 3 Beta - Armored Land Vehicles";
+ className="A3_Soft_F";
+ name="Arma 3 Alpha - Unarmored Land Vehicles";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item17
{
- className="A3_Air_F_Beta";
- name="Arma 3 Beta - Aircraft";
+ className="A3_Armor_F_Beta";
+ name="Arma 3 Beta - Armored Land Vehicles";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item18
{
- className="A3_Props_F_Enoch";
- name="Arma 3 Enoch - Decorative and Mission Objects";
+ className="A3_Air_F_Beta";
+ name="Arma 3 Beta - Aircraft";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item19
{
- className="A3_Signs_F";
- name="Arma 3 - Signs";
+ className="A3_Props_F_Enoch";
+ name="Arma 3 Contact Platform - Decorative and Mission Objects";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item20
{
- className="A3_Soft_F_Enoch";
- name="Arma 3 Enoch - Unarmored Land Vehicles";
+ className="A3_Signs_F";
+ name="Arma 3 - Signs";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
@@ -208,10 +209,7 @@ class AddonsMetaData
randomSeed=2442963;
class ScenarioData
{
- respawnDialog=0;
disabledAI=1;
- respawn=3;
- respawnDelay=5;
class Header
{
gameType="Coop";
@@ -226,7 +224,7 @@ class CustomAttributes
name="Multiplayer";
class Attribute0
{
- property="RespawnTemplates";
+ property="RespawnButton";
expression="true";
class Value
{
@@ -236,15 +234,16 @@ class CustomAttributes
{
type[]=
{
- "ARRAY"
+ "SCALAR"
};
};
+ value=1;
};
};
};
class Attribute1
{
- property="RespawnButton";
+ property="RespawnTemplates";
expression="true";
class Value
{
@@ -254,10 +253,9 @@ class CustomAttributes
{
type[]=
{
- "SCALAR"
+ "ARRAY"
};
};
- value=1;
};
};
};
@@ -696,12 +694,13 @@ class Mission
};
class Entities
{
- items=59;
+ items=61;
class Item0
{
dataType="Marker";
position[]={8300.7275,76.093613,10061.531};
name="respawn_west";
+ text=$STR_BTC_HAM_INTRO_ARSENAL_REDEPLOY;
type="Empty";
id=0;
};
@@ -1936,8 +1935,8 @@ class Mission
{
isPlayable=1;
};
- id=198;
- type="B_Sharpshooter_F";
+ id=226;
+ type="B_soldier_UAV_F";
class CustomAttributes
{
class Attribute0
@@ -2008,8 +2007,8 @@ class Mission
{
isPlayable=1;
};
- id=197;
- type="B_Sharpshooter_F";
+ id=227;
+ type="B_soldier_UAV_F";
class CustomAttributes
{
class Attribute0
@@ -2075,13 +2074,55 @@ class Mission
angles[]={0,5.701921,0};
};
side="West";
- flags=7;
+ flags=6;
class Attributes
{
isPlayable=1;
};
- id=114;
- type="B_Soldier_F";
+ id=228;
+ type="B_W_Soldier_CBRN_F";
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="speaker";
+ expression="_this setspeaker _value;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="Male05ENG";
+ };
+ };
+ };
+ class Attribute1
+ {
+ property="pitch";
+ expression="_this setpitch _value;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "SCALAR"
+ };
+ };
+ value=1;
+ };
+ };
+ };
+ nAttributes=2;
+ };
};
};
class Attributes
@@ -2105,13 +2146,55 @@ class Mission
angles[]={0,5.701921,0};
};
side="West";
- flags=7;
+ flags=6;
class Attributes
{
isPlayable=1;
};
- id=116;
- type="B_Soldier_F";
+ id=229;
+ type="B_W_Soldier_CBRN_F";
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="speaker";
+ expression="_this setspeaker _value;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="Male06ENG";
+ };
+ };
+ };
+ class Attribute1
+ {
+ property="pitch";
+ expression="_this setpitch _value;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "SCALAR"
+ };
+ };
+ value=0.95999998;
+ };
+ };
+ };
+ nAttributes=2;
+ };
};
};
class Attributes
@@ -2141,7 +2224,7 @@ class Mission
isPlayable=1;
};
id=118;
- type="B_Soldier_F";
+ type="B_Sharpshooter_F";
};
};
class Attributes
@@ -2171,7 +2254,7 @@ class Mission
isPlayable=1;
};
id=120;
- type="B_Soldier_F";
+ type="B_Sharpshooter_F";
};
};
class Attributes
@@ -2464,8 +2547,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8299.2021,78.316971,10089.534};
- angles[]={0.0013439035,0.94247776,6.232553};
+ position[]={8299.4082,78.879608,10089.423};
+ angles[]={0.0013372133,0.94247776,6.2325611};
};
side="Empty";
flags=4;
@@ -2475,8 +2558,8 @@ class Mission
name="btc_veh_15";
};
id=160;
- type="B_Truck_01_covered_F";
- atlOffset=-0.095001221;
+ type="B_Truck_01_flatbed_F";
+ atlOffset=5.3405762e-005;
class CustomAttributes
{
class Attribute0
@@ -2762,7 +2845,7 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8295.166,78.402695,10052.533};
+ position[]={8295.166,78.402374,10052.533};
angles[]={0,5.7184839,0};
};
side="Empty";
@@ -2775,7 +2858,7 @@ class Mission
};
id=170;
type="B_APC_Wheeled_01_cannon_F";
- atlOffset=-0.076683044;
+ atlOffset=-0.077003479;
class CustomAttributes
{
class Attribute0
@@ -3136,5 +3219,88 @@ class Mission
nAttributes=1;
};
};
+ class Item59
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={8368.6865,74.666542,10110.126};
+ angles[]={0.012007865,5.5935359,6.1861625};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ init="call{this setVariable [""btc_dont_delete"",true]}";
+ name="btc_veh_17";
+ };
+ id=230;
+ type="B_Truck_01_medical_F";
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
+ };
+ };
+ class Item60
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={8373.0576,74.504128,10115.97};
+ angles[]={6.279171,5.5569015,6.1848359};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ init="call{this setVariable [""btc_dont_delete"",true]}";
+ name="btc_veh_18";
+ };
+ id=231;
+ type="B_APC_Tracked_01_CRV_F";
+ atlOffset=7.6293945e-006;
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""arifle_MX_F"",""arifle_MX_SW_F"",""launch_NLAW_F"",""FirstAidKit""],[2,1,1,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""MiniGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F"",""Titan_AT"",""Titan_AP"",""Titan_AA""],[24,12,6,6,6,3,3,3,3,8,8,8,8,5,2,2,2]],[[],[]],[[],[]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
+ };
+ };
};
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Altis.sqm b/=BTC=co@30_Hearts_and_Minds.Altis/mission__Enoch.sqm
similarity index 71%
rename from =BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Altis.sqm
rename to =BTC=co@30_Hearts_and_Minds.Altis/mission__Enoch.sqm
index a0e3b354c..be874a64c 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Altis.sqm
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/mission__Enoch.sqm
@@ -1,14 +1,14 @@
version=53;
class EditorData
{
- moveGridStep=1;
+ moveGridStep=0.125;
angleGridStep=0.2617994;
- scaleGridStep=1;
+ scaleGridStep=0.1;
autoGroupingDist=10;
- toggles=513;
+ toggles=581;
class ItemIDProvider
{
- nextID=176;
+ nextID=251;
};
class MarkerIDProvider
{
@@ -16,44 +16,42 @@ class EditorData
};
class Camera
{
- pos[]={8362.7832,99.01162,10135.25};
- dir[]={-0.55701196,-0.51623613,-0.65068626};
- up[]={-0.33577716,0.85639238,-0.39224473};
- aside[]={-0.75972944,-2.507586e-007,0.65036023};
+ pos[]={7075.4238,294.67462,1090.9181};
+ dir[]={0.18139009,-0.58464152,-0.7908724};
+ up[]={0.130721,0.81120443,-0.56996};
+ aside[]={-0.97477698,-7.2340481e-007,-0.22357322};
};
};
binarizationWanted=0;
addons[]=
{
"A3_Ui_F",
- "rhsusf_vehicles",
- "RHS_US_A2Port_Armor",
- "RHS_US_A2_AirImport",
"A3_Structures_F_Ind_Cargo",
"ace_cargo",
"A3_Structures_F_Mil_Helipads",
- "A3_Soft_F_Gamma_Truck_01",
- "A3_Soft_F_Exp_Truck_01",
- "ace_realisticnames",
- "ace_rearm",
- "ace_refuel",
- "ace_repair",
"A3_Structures_F_Mil_Flags",
"A3_Characters_F",
"ace_explosives",
"A3_Modules_F_Curator_Curator",
- "A3_Characters_F_Mark",
- "rhsusf_c_fmtv",
- "rhsusf_c_RG33L",
- "A3_Soft_F_Enoch_Truck_01",
+ "A3_Characters_F_Enoch",
+ "A3_Air_F_Heli_Heli_Transport_03",
+ "ace_realisticnames",
+ "A3_Air_F_Beta_Heli_Transport_01",
+ "A3_Air_F_Beta_Heli_Attack_01",
"A3_Props_F_Enoch_Military_Decontamination",
- "A3_Signs_F"
+ "A3_Signs_F",
+ "A3_Armor_F_Exp_APC_Wheeled_01",
+ "A3_Soft_F_Exp_MRAP_01",
+ "A3_Soft_F_Exp_LSV_01",
+ "A3_Soft_F_Exp_Truck_01",
+ "A3_Soft_F_Enoch_Truck_01",
+ "A3_Armor_F_Exp_APC_Tracked_01"
};
class AddonsMetaData
{
class List
{
- items=21;
+ items=15;
class Item0
{
className="A3_Ui_F";
@@ -63,135 +61,99 @@ class AddonsMetaData
};
class Item1
{
- className="rhsusf_vehicles";
- name="rhsusf_vehicles";
+ className="A3_Structures_F_Ind";
+ name="Arma 3 - Industrial Structures";
+ author="Bohemia Interactive";
+ url="https://www.arma3.com";
};
class Item2
{
- className="RHS_US_A2Port_Armor";
- name="M2 Bradley IFV";
- url="http://www.rhsmods.org/";
+ className="ace_cargo";
+ name="ACE3 - Cargo";
+ author="ACE-Team";
+ url="http://ace3mod.com/";
};
class Item3
{
- className="RHS_US_A2_AirImport";
- name="RHSUSF A2 Air Ports";
- url="http://www.rhsmods.org/";
+ className="A3_Structures_F_Mil";
+ name="Arma 3 - Military Buildings and Structures";
+ author="Bohemia Interactive";
+ url="https://www.arma3.com";
};
class Item4
{
- className="A3_Structures_F_Ind";
- name="Arma 3 - Industrial Structures";
+ className="A3_Characters_F";
+ name="Arma 3 Alpha - Characters and Clothing";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item5
{
- className="ace_cargo";
- name="ACE3 - Cargo";
+ className="ace_explosives";
+ name="ACE3 - Explosives";
author="ACE-Team";
url="http://ace3mod.com/";
};
class Item6
{
- className="A3_Structures_F_Mil";
- name="Arma 3 - Military Buildings and Structures";
+ className="A3_Modules_F_Curator";
+ name="Arma 3 Zeus Update - Scripted Modules";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item7
{
- className="A3_Soft_F_Gamma";
- name="Arma 3 - Unarmored Land Vehicles";
+ className="A3_Characters_F_Enoch";
+ name="Arma 3 Contact Platform - Characters and Clothing";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item8
{
- className="A3_Soft_F_Exp";
- name="Arma 3 Apex - Unarmored Land Vehicles";
+ className="A3_Air_F_Heli";
+ name="Arma 3 Helicopters - Aircraft";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item9
{
- className="A3_Characters_F";
- name="Arma 3 Alpha - Characters and Clothing";
+ className="A3_Air_F_Beta";
+ name="Arma 3 Beta - Aircraft";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item10
{
- className="ace_rearm";
- name="ACE3 - Rearm";
- author="ACE-Team";
- url="http://ace3mod.com/";
- };
- class Item11
- {
- className="ace_refuel";
- name="ACE3 - Refuel";
- author="ACE-Team";
- url="http://ace3mod.com/";
- };
- class Item12
- {
- className="ace_repair";
- name="ACE3 - Repair";
- author="ACE-Team";
- url="http://ace3mod.com/";
- };
- class Item13
- {
- className="ace_explosives";
- name="ACE3 - Explosives";
- author="ACE-Team";
- url="http://ace3mod.com/";
- };
- class Item14
- {
- className="A3_Modules_F_Curator";
- name="Arma 3 Zeus Update - Scripted Modules";
+ className="A3_Props_F_Enoch";
+ name="Arma 3 Contact Platform - Decorative and Mission Objects";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
- class Item15
+ class Item11
{
- className="A3_Characters_F_Mark";
- name="Arma 3 Marksmen - Characters and Clothing";
+ className="A3_Signs_F";
+ name="Arma 3 - Signs";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
- class Item16
- {
- className="rhsusf_c_fmtv";
- name="FMTV Trucks";
- url="http://www.rhsmods.org/";
- };
- class Item17
- {
- className="rhsusf_c_RG33L";
- name="RG33L MRAP";
- url="http://www.rhsmods.org/";
- };
- class Item18
+ class Item12
{
- className="A3_Soft_F_Enoch";
- name="Arma 3 Enoch - Unarmored Land Vehicles";
+ className="A3_Armor_F_Exp";
+ name="Arma 3 Apex - Armored Land Vehicles";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
- class Item19
+ class Item13
{
- className="A3_Props_F_Enoch";
- name="Arma 3 Enoch - Decorative and Mission Objects";
+ className="A3_Soft_F_Exp";
+ name="Arma 3 Apex - Unarmored Land Vehicles";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
- class Item20
+ class Item14
{
- className="A3_Signs_F";
- name="Arma 3 - Signs";
+ className="A3_Soft_F_Enoch";
+ name="Arma 3 Contact Platform - Unarmored Land Vehicles";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
@@ -200,10 +162,7 @@ class AddonsMetaData
randomSeed=2442963;
class ScenarioData
{
- respawnDialog=0;
disabledAI=1;
- respawn=3;
- respawnDelay=5;
class Header
{
gameType="Coop";
@@ -218,7 +177,7 @@ class CustomAttributes
name="Multiplayer";
class Attribute0
{
- property="RespawnTemplates";
+ property="RespawnButton";
expression="true";
class Value
{
@@ -228,15 +187,16 @@ class CustomAttributes
{
type[]=
{
- "ARRAY"
+ "SCALAR"
};
};
+ value=1;
};
};
};
class Attribute1
{
- property="RespawnButton";
+ property="RespawnTemplates";
expression="true";
class Value
{
@@ -246,10 +206,9 @@ class CustomAttributes
{
type[]=
{
- "SCALAR"
+ "ARRAY"
};
};
- value=1;
};
};
};
@@ -688,27 +647,30 @@ class Mission
};
class Entities
{
- items=59;
+ items=61;
class Item0
{
dataType="Marker";
- position[]={8300.7275,76.093613,10061.531};
+ position[]={7078.8252,275.73099,1076.777};
name="respawn_west";
+ text=$STR_BTC_HAM_INTRO_ARSENAL_REDEPLOY;
type="Empty";
id=0;
+ atlOffset=-3.0517578e-005;
};
class Item1
{
dataType="Marker";
- position[]={8313.793,75.752388,10073.04};
+ position[]={7093.0591,273.832,1066.749};
name="btc_base";
type="flag_NATO";
id=1;
+ atlOffset=0.0002746582;
};
class Item2
{
dataType="Marker";
- position[]={8323.1348,73.933266,10113.239};
+ position[]={7134.3281,270.61099,1067.021};
name="btc_log_point";
text=$STR_BTC_HAM_MSQM_MRK_LOGPOINT;
type="mil_flag";
@@ -716,31 +678,34 @@ class Mission
a=0.5;
b=0.5;
id=2;
+ atlOffset=-0.00021362305;
};
class Item3
{
dataType="Object";
class PositionInfo
{
- position[]={8303.2588,78.415161,10074.801};
- angles[]={0.0080110608,5.6580257,6.2392201};
+ position[]={7127.7729,271.90936,1072.0499};
+ angles[]={6.1874776,0.72975159,0.028790962};
};
side="Empty";
flags=4;
class Attributes
{
skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_3";
+ init="call{if (isServer) then { " \n " [this, 0] call ace_cargo_fnc_setSpace; " \n "};}";
+ name="btc_create_object";
+ disableSimulation=1;
};
- id=3;
- type="rhsusf_m1025_d_m2";
+ id=13;
+ type="Land_CargoBox_V1_F";
+ atlOffset=-0.0032958984;
class CustomAttributes
{
class Attribute0
{
- property="rhs_decalMask";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}";
+ property="allowDamage";
+ expression="_this allowdamage _value;";
class Value
{
class data
@@ -749,36 +714,17 @@ class Mission
{
type[]=
{
- "STRING"
+ "BOOL"
};
};
- value="NoChange";
+ value=0;
};
};
};
class Attribute1
{
- property="rhs_decalDoors";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="NoChange";
- };
- };
- };
- class Attribute2
- {
- property="ammoBox";
- expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ property="ace_cargo_size";
+ expression="[_this,_value] call ace_cargo_fnc_setSize;";
class Value
{
class data
@@ -787,14 +733,14 @@ class Mission
{
type[]=
{
- "STRING"
+ "SCALAR"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]";
+ value=-1;
};
};
};
- nAttributes=3;
+ nAttributes=2;
};
};
class Item4
@@ -802,26 +748,24 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8297.6514,78.657707,10071.11};
- angles[]={6.2418733,5.6580257,6.2325706};
+ position[]={7135.5,270.80606,1071};
+ angles[]={0.0080009829,2.2298627,6.1716485};
};
side="Empty";
flags=4;
class Attributes
{
skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_2";
+ name="btc_create_object_point";
};
- id=4;
- type="rhsusf_m1025_d_m2";
- atlOffset=7.6293945e-006;
+ id=14;
+ type="Land_HelipadSquare_F";
class CustomAttributes
{
class Attribute0
{
- property="rhs_decalMask";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}";
+ property="ace_isRepairFacility";
+ expression="if (_value != (if (isNumber (configFile >> 'CfgVehicles' >> typeOf _this >> ""ace_repair_canRepair"")) then {getNumber (configFile >> 'CfgVehicles' >> typeOf _this >> ""ace_repair_canRepair"")} else {0})) then {_this setVariable ['ace_isRepairFacility', _value, true]}";
class Value
{
class data
@@ -830,17 +774,42 @@ class Mission
{
type[]=
{
- "STRING"
+ "SCALAR"
};
};
- value="NoChange";
+ value=1;
};
};
};
- class Attribute1
+ nAttributes=1;
+ };
+ };
+ class Item5
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7081.1602,276.27856,1071.2151};
+ angles[]={0.01919602,0.72975159,6.127655};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ skill=0.60000002;
+ init="call{if (isServer) then { " \n " [this, 0] call ace_cargo_fnc_setSpace; " \n "};}";
+ name="btc_gear_object";
+ disableSimulation=1;
+ };
+ id=15;
+ type="Land_CargoBox_V1_F";
+ atlOffset=-0.048339844;
+ class CustomAttributes
+ {
+ class Attribute0
{
- property="rhs_decalDoors";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}";
+ property="allowDamage";
+ expression="_this allowdamage _value;";
class Value
{
class data
@@ -849,17 +818,17 @@ class Mission
{
type[]=
{
- "STRING"
+ "BOOL"
};
};
- value="NoChange";
+ value=0;
};
};
};
- class Attribute2
+ class Attribute1
{
- property="ammoBox";
- expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ property="ace_cargo_size";
+ expression="[_this,_value] call ace_cargo_fnc_setSize;";
class Value
{
class data
@@ -868,242 +837,247 @@ class Mission
{
type[]=
{
- "STRING"
+ "SCALAR"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]";
+ value=-1;
};
};
};
- nAttributes=3;
+ nAttributes=2;
};
};
- class Item5
+ class Item6
{
dataType="Object";
class PositionInfo
{
- position[]={8295.166,77.579712,10052.532};
- angles[]={0,5.7184772,0};
+ position[]={7024,280.97366,1081};
+ angles[]={0.070284568,2.2298608,6.1480141};
};
side="Empty";
flags=4;
class Attributes
{
skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true];";
- name="btc_veh_1";
};
- id=5;
- type="RHS_M2A3";
- atlOffset=-0.15499878;
+ id=17;
+ type="Land_HelipadSquare_F";
+ atlOffset=3.0517578e-005;
};
- class Item6
+ class Item7
{
dataType="Object";
class PositionInfo
{
- position[]={8332.2256,78.478668,10088.2};
- angles[]={0.049293593,5.7068849,6.2325621};
+ position[]={7089.8691,278.24274,1065.3191};
+ angles[]={6.2735796,1.3358874,6.1401696};
};
side="Empty";
flags=4;
class Attributes
{
skill=0.60000002;
- name="btc_helo_1";
};
- id=6;
- type="RHS_CH_47F_10";
- atlOffset=-0.17823792;
+ id=21;
+ type="Flag_NATO_F";
};
- class Item7
+ class Item8
{
dataType="Object";
class PositionInfo
{
- position[]={8317.3643,77.782211,10084.248};
- angles[]={0.013334315,5.6580257,6.2591867};
+ position[]={7054,279.31042,1061};
+ angles[]={0.017595299,2.2298608,6.219274};
};
side="Empty";
flags=4;
class Attributes
{
skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_4";
};
- id=7;
- type="rhsusf_m1025_d_m2";
- atlOffset=7.6293945e-006;
- class CustomAttributes
+ id=23;
+ type="Land_HelipadSquare_F";
+ atlOffset=3.0517578e-005;
+ };
+ class Item9
+ {
+ dataType="Group";
+ side="West";
+ class Entities
{
- class Attribute0
+ items=1;
+ class Item0
{
- property="rhs_decalMask";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}";
- class Value
+ dataType="Object";
+ class PositionInfo
{
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="NoChange";
- };
+ position[]={7080.8555,275.66995,1069.363};
+ angles[]={0.01919602,3.8879185,6.133904};
};
- };
- class Attribute1
- {
- property="rhs_decalDoors";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}";
- class Value
+ side="West";
+ flags=6;
+ class Attributes
{
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="NoChange";
- };
+ skill=0.60000002;
+ init="this setVariable [""side_mission"",true]";
+ description=$STR_B_OFFICER_F0;
+ isPlayer=1;
+ isPlayable=1;
};
+ id=25;
+ type="B_officer_F";
};
- class Attribute2
+ };
+ class Attributes
+ {
+ };
+ id=24;
+ };
+ class Item10
+ {
+ dataType="Group";
+ side="West";
+ class Entities
+ {
+ items=1;
+ class Item0
{
- property="ammoBox";
- expression="[_this,_value] call bis_fnc_initAmmoBox;";
- class Value
+ dataType="Object";
+ class PositionInfo
{
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]";
- };
+ position[]={7079.2837,275.80377,1074.7056};
+ angles[]={0.01919602,3.8606362,6.133904};
+ };
+ side="West";
+ flags=6;
+ class Attributes
+ {
+ skill=0.60000002;
+ init="this setVariable [""interpreter"",true]";
+ description=$STR_BTC_HAM_MSQM_INTERPRETER;
+ isPlayable=1;
};
+ id=29;
+ type="B_Soldier_F";
};
- nAttributes=3;
- };
- };
- class Item8
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8278.1641,79.440773,10076.579};
- angles[]={0.030647982,1.4514159,0.033318337};
};
- side="Empty";
- flags=4;
class Attributes
{
- skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_7";
};
- id=9;
- type="rhsusf_m1025_d_m2";
- atlOffset=-7.6293945e-006;
- class CustomAttributes
+ id=28;
+ };
+ class Item11
+ {
+ dataType="Group";
+ side="West";
+ class Entities
{
- class Attribute0
+ items=1;
+ class Item0
{
- property="rhs_decalMask";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}";
- class Value
+ dataType="Object";
+ class PositionInfo
{
- class data
+ position[]={7080.2969,275.67166,1073.6476};
+ angles[]={0.01919602,3.6710505,6.133904};
+ };
+ side="West";
+ flags=6;
+ class Attributes
+ {
+ skill=0.60000002;
+ description=$STR_ACE_Repair_AssignEngineerRole_role_advanced;
+ isPlayable=1;
+ };
+ id=31;
+ type="B_engineer_F";
+ class CustomAttributes
+ {
+ class Attribute0
{
- class type
+ property="ace_isEngineer";
+ expression="if !(_value == ([0,1] select (_this getUnitTrait 'engineer'))|| {_value == -1}) then {_this setVariable ['ace_isEngineer', _value, true]}";
+ class Value
{
- type[]=
+ class data
{
- "STRING"
+ class type
+ {
+ type[]=
+ {
+ "SCALAR"
+ };
+ };
+ value=2;
};
};
- value="NoChange";
};
- };
- };
- class Attribute1
- {
- property="rhs_decalDoors";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}";
- class Value
- {
- class data
+ class Attribute1
{
- class type
+ property="speaker";
+ expression="_this setspeaker _value;";
+ class Value
{
- type[]=
+ class data
{
- "STRING"
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="Male02ENG";
};
};
- value="NoChange";
};
- };
- };
- class Attribute2
- {
- property="ammoBox";
- expression="[_this,_value] call bis_fnc_initAmmoBox;";
- class Value
- {
- class data
+ class Attribute2
{
- class type
+ property="pitch";
+ expression="_this setpitch _value;";
+ class Value
{
- type[]=
+ class data
{
- "STRING"
+ class type
+ {
+ type[]=
+ {
+ "SCALAR"
+ };
+ };
+ value=0.99000001;
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]";
};
+ nAttributes=3;
};
};
- nAttributes=3;
};
+ class Attributes
+ {
+ };
+ id=30;
};
- class Item9
+ class Item12
{
- dataType="Object";
+ dataType="Logic";
class PositionInfo
{
- position[]={8320.2842,75.246689,10105.996};
- angles[]={0.054611351,5.6770496,6.2631841};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- init="call{if (isServer) then { " \n " [this, 0] call ace_cargo_fnc_setSpace; " \n "};}";
- name="btc_create_object";
- disableSimulation=1;
+ position[]={6924.2217,276.28888,943.07422};
+ angles[]={6.104322,0,6.2176785};
};
- id=13;
- type="Land_CargoBox_V1_F";
+ name="btc_curator";
+ init="this addEventHandler ['CuratorObjectPlaced',{_this call btc_fnc_eh_CuratorObjectPlaced}];";
+ id=71;
+ type="ModuleCurator_F";
class CustomAttributes
{
class Attribute0
{
- property="allowDamage";
- expression="_this allowdamage _value;";
+ property="ModuleCurator_F_Owner";
+ expression="_this setVariable ['Owner',_value,true];";
class Value
{
class data
@@ -1112,17 +1086,17 @@ class Mission
{
type[]=
{
- "BOOL"
+ "STRING"
};
};
- value=0;
+ value="#adminLogged";
};
};
};
class Attribute1
{
- property="ace_cargo_size";
- expression="[_this,_value] call ace_cargo_fnc_setSize;";
+ property="ModuleCurator_F_Forced";
+ expression="_this setVariable ['Forced',_value,true];";
class Value
{
class data
@@ -1134,36 +1108,14 @@ class Mission
"SCALAR"
};
};
- value=-1;
+ value=0;
};
};
};
- nAttributes=2;
- };
- };
- class Item10
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8323.1582,73.944031,10113.102};
- angles[]={0.074525557,0.89397508,0.018657569};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- name="btc_create_object_point";
- };
- id=14;
- type="Land_HelipadSquare_F";
- class CustomAttributes
- {
- class Attribute0
+ class Attribute2
{
- property="ace_isRepairFacility";
- expression="if (_value != (if (isNumber (configFile >> 'CfgVehicles' >> typeOf _this >> ""ace_repair_canRepair"")) then {getNumber (configFile >> 'CfgVehicles' >> typeOf _this >> ""ace_repair_canRepair"")} else {0})) then {_this setVariable ['ace_isRepairFacility', _value, true]}";
+ property="ModuleCurator_F_Name";
+ expression="_this setVariable ['Name',_value,true];";
class Value
{
class data
@@ -1172,41 +1124,17 @@ class Mission
{
type[]=
{
- "SCALAR"
+ "STRING"
};
};
- value=1;
+ value="";
};
};
};
- nAttributes=1;
- };
- };
- class Item11
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8309.2861,76.695534,10068.324};
- angles[]={0.0026703537,5.6770496,6.2392201};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- init="call{if (isServer) then { " \n " [this, 0] call ace_cargo_fnc_setSpace; " \n "};}";
- name="btc_gear_object";
- disableSimulation=1;
- };
- id=15;
- type="Land_CargoBox_V1_F";
- class CustomAttributes
- {
- class Attribute0
+ class Attribute3
{
- property="allowDamage";
- expression="_this allowdamage _value;";
+ property="ModuleInfo";
+ expression="false";
class Value
{
class data
@@ -1218,14 +1146,14 @@ class Mission
"BOOL"
};
};
- value=0;
+ value=1;
};
};
};
- class Attribute1
+ class Attribute4
{
- property="ace_cargo_size";
- expression="[_this,_value] call ace_cargo_fnc_setSize;";
+ property="ModuleCurator_F_Addons";
+ expression="_this setVariable ['Addons',_value,true];";
class Value
{
class data
@@ -1237,165 +1165,14 @@ class Mission
"SCALAR"
};
};
- value=-1;
+ value=3;
};
};
};
- nAttributes=2;
- };
- };
- class Item12
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8213.6924,78.541695,10023.983};
- angles[]={6.2631893,5.7956276,6.2139621};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_10";
+ nAttributes=5;
};
- id=16;
- type="RHS_AH64D";
- atlOffset=-0.30741882;
};
class Item13
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8213.54,76.510483,10025.129};
- angles[]={6.2631893,0.89397335,6.2139621};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- };
- id=17;
- type="Land_HelipadSquare_F";
- };
- class Item14
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8358.7637,75.2911,10101.058};
- angles[]={0.078505196,5.6318169,6.2445364};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_11";
- };
- id=18;
- type="B_Truck_01_ammo_F";
- atlOffset=0.00021362305;
- };
- class Item15
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8353.5449,75.482399,10097.687};
- angles[]={0.025327841,5.6318169,6.247201};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_12";
- };
- id=19;
- type="B_Truck_01_fuel_F";
- atlOffset=0.00020599365;
- };
- class Item16
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8348.8496,76.13974,10094.677};
- angles[]={6.247201,5.6318169,6.2418756};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_13";
- };
- id=20;
- type="B_Truck_01_Repair_F";
- atlOffset=0.00020599365;
- };
- class Item17
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8317.1514,79.59433,10075.261};
- angles[]={6.2791886,0,6.2445378};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- };
- id=21;
- type="Flag_NATO_F";
- atlOffset=0.0030288696;
- };
- class Item18
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8241.4199,79.564301,10048.12};
- angles[]={6.2591896,5.7956276,0.017332481};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_14";
- };
- id=22;
- type="RHS_UH1Y_d";
- };
- class Item19
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8240.2227,77.387703,10049.465};
- angles[]={6.2591896,0.89397335,0.017332481};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- };
- id=23;
- type="Land_HelipadSquare_F";
- };
- class Item20
{
dataType="Group";
side="West";
@@ -1407,29 +1184,25 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8311.1689,75.934975,10067.474};
- angles[]={0.0026520467,2.552031,0};
+ position[]={7067.7832,277.27866,1072.9111};
+ angles[]={0,2.3531542,0};
};
side="West";
- flags=6;
+ flags=7;
class Attributes
{
- skill=0.60000002;
- init="this setVariable [""side_mission"",true]";
- description=$STR_B_OFFICER_F0;
- isPlayer=1;
isPlayable=1;
};
- id=25;
- type="B_officer_F";
+ id=90;
+ type="B_medic_F";
};
};
class Attributes
{
};
- id=24;
+ id=89;
};
- class Item21
+ class Item14
{
dataType="Group";
side="West";
@@ -1441,30 +1214,25 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8305.6074,76.029839,10067.188};
- angles[]={6.2418771,2.5247488,0};
+ position[]={7069.1665,277.06027,1074.3215};
+ angles[]={0,2.3531542,0};
};
side="West";
- flags=6;
+ flags=7;
class Attributes
{
- skill=0.60000002;
- init="this setVariable [""interpreter"",true]";
- description=$STR_BTC_HAM_MSQM_INTERPRETER;
isPlayable=1;
};
- id=29;
- type="B_Soldier_F";
- atlOffset=-3.8146973e-005;
+ id=92;
+ type="B_medic_F";
};
};
class Attributes
{
};
- id=28;
- atlOffset=-3.8146973e-005;
+ id=91;
};
- class Item22
+ class Item15
{
dataType="Group";
side="West";
@@ -1476,25 +1244,24 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8306.8721,76.060417,10067.928};
- angles[]={6.2418733,2.3351631,0};
+ position[]={7073.6299,276.65915,1068.4349};
+ angles[]={0.006394445,0.75462294,6.1558795};
};
side="West";
flags=6;
class Attributes
{
- skill=0.60000002;
- description=$STR_ACE_Repair_AssignEngineerRole_role_advanced;
isPlayable=1;
};
- id=31;
+ id=180;
type="B_engineer_F";
+ atlOffset=-3.0517578e-005;
class CustomAttributes
{
class Attribute0
{
- property="ace_isEngineer";
- expression="if !(_value == ([0,1] select (_this getUnitTrait 'engineer'))|| {_value == -1}) then {_this setVariable ['ace_isEngineer', _value, true]}";
+ property="speaker";
+ expression="_this setspeaker _value;";
class Value
{
class data
@@ -1503,14 +1270,68 @@ class Mission
{
type[]=
{
- "SCALAR"
+ "STRING"
};
};
- value=2;
+ value="Male03ENG";
};
};
};
class Attribute1
+ {
+ property="pitch";
+ expression="_this setpitch _value;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "SCALAR"
+ };
+ };
+ value=1;
+ };
+ };
+ };
+ nAttributes=2;
+ };
+ };
+ };
+ class Attributes
+ {
+ };
+ id=93;
+ atlOffset=-3.0517578e-005;
+ };
+ class Item16
+ {
+ dataType="Group";
+ side="West";
+ class Entities
+ {
+ items=1;
+ class Item0
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7074.8853,276.5065,1067.1881};
+ angles[]={0.006394445,0.75462294,6.1558795};
+ };
+ side="West";
+ flags=6;
+ class Attributes
+ {
+ isPlayable=1;
+ };
+ id=181;
+ type="B_engineer_F";
+ class CustomAttributes
+ {
+ class Attribute0
{
property="speaker";
expression="_this setspeaker _value;";
@@ -1525,11 +1346,11 @@ class Mission
"STRING"
};
};
- value="Male02ENG";
+ value="Male09ENG";
};
};
};
- class Attribute2
+ class Attribute1
{
property="pitch";
expression="_this setpitch _value;";
@@ -1544,191 +1365,92 @@ class Mission
"SCALAR"
};
};
- value=0.99000001;
+ value=1;
};
};
};
- nAttributes=3;
+ nAttributes=2;
};
};
};
class Attributes
{
};
- id=30;
+ id=95;
};
- class Item23
+ class Item17
{
- dataType="Logic";
- class PositionInfo
- {
- position[]={8255.6289,55.908749,9942.9063};
- };
- name="btc_curator";
- init="this addEventHandler ['CuratorObjectPlaced',{_this call btc_fnc_eh_CuratorObjectPlaced}];";
- id=71;
- type="ModuleCurator_F";
- class CustomAttributes
+ dataType="Group";
+ side="West";
+ class Entities
{
- class Attribute0
+ items=1;
+ class Item0
{
- property="ModuleCurator_F_Owner";
- expression="_this setVariable ['Owner',_value,true];";
- class Value
+ dataType="Object";
+ class PositionInfo
{
- class data
+ position[]={7075.9946,276.36502,1066.1133};
+ angles[]={0.006394445,0.75462294,6.1495872};
+ };
+ side="West";
+ flags=6;
+ class Attributes
+ {
+ isPlayable=1;
+ };
+ id=182;
+ type="B_soldier_AR_F";
+ class CustomAttributes
+ {
+ class Attribute0
{
- class type
+ property="speaker";
+ expression="_this setspeaker _value;";
+ class Value
{
- type[]=
+ class data
{
- "STRING"
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="Male12ENG";
};
};
- value="#adminLogged";
};
- };
- };
- class Attribute1
- {
- property="ModuleCurator_F_Forced";
- expression="_this setVariable ['Forced',_value,true];";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "SCALAR"
- };
- };
- value=0;
- };
- };
- };
- class Attribute2
- {
- property="ModuleCurator_F_Name";
- expression="_this setVariable ['Name',_value,true];";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="";
- };
- };
- };
- class Attribute3
- {
- property="ModuleInfo";
- expression="false";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=1;
- };
- };
- };
- class Attribute4
- {
- property="ModuleCurator_F_Addons";
- expression="_this setVariable ['Addons',_value,true];";
- class Value
- {
- class data
+ class Attribute1
{
- class type
+ property="pitch";
+ expression="_this setpitch _value;";
+ class Value
{
- type[]=
+ class data
{
- "SCALAR"
+ class type
+ {
+ type[]=
+ {
+ "SCALAR"
+ };
+ };
+ value=1.01;
};
};
- value=3;
};
+ nAttributes=2;
};
};
- nAttributes=5;
- };
- };
- class Item24
- {
- dataType="Group";
- side="West";
- class Entities
- {
- items=1;
- class Item0
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8304.6758,75.941444,10055.586};
- angles[]={0,1.0172668,0};
- };
- side="West";
- flags=7;
- class Attributes
- {
- isPlayable=1;
- };
- id=90;
- type="B_medic_F";
- };
- };
- class Attributes
- {
- };
- id=89;
- };
- class Item25
- {
- dataType="Group";
- side="West";
- class Entities
- {
- items=1;
- class Item0
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={8303.626,75.941444,10057.26};
- angles[]={0,1.0172668,0};
- };
- side="West";
- flags=7;
- class Attributes
- {
- isPlayable=1;
- };
- id=92;
- type="B_medic_F";
- };
};
class Attributes
{
};
- id=91;
+ id=97;
};
- class Item26
+ class Item18
{
dataType="Group";
side="West";
@@ -1740,8 +1462,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8310.3896,75.941444,10060.23};
- angles[]={0,5.701921,0};
+ position[]={7077.25,276.20419,1064.8662};
+ angles[]={0.006394445,0.75462294,6.1495872};
};
side="West";
flags=6;
@@ -1749,8 +1471,9 @@ class Mission
{
isPlayable=1;
};
- id=156;
- type="B_engineer_F";
+ id=183;
+ type="B_soldier_AR_F";
+ atlOffset=-3.0517578e-005;
class CustomAttributes
{
class Attribute0
@@ -1768,7 +1491,7 @@ class Mission
"STRING"
};
};
- value="Male03ENG";
+ value="Male09ENG";
};
};
};
@@ -1787,7 +1510,7 @@ class Mission
"SCALAR"
};
};
- value=1;
+ value=1.01;
};
};
};
@@ -1798,9 +1521,10 @@ class Mission
class Attributes
{
};
- id=93;
+ id=99;
+ atlOffset=-3.0517578e-005;
};
- class Item27
+ class Item19
{
dataType="Group";
side="West";
@@ -1812,8 +1536,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8311.8945,75.941444,10061.161};
- angles[]={0,5.701921,0};
+ position[]={7078.4614,276.04907,1063.666};
+ angles[]={0.006394445,0.75462294,6.1495872};
};
side="West";
flags=6;
@@ -1821,8 +1545,8 @@ class Mission
{
isPlayable=1;
};
- id=157;
- type="B_engineer_F";
+ id=184;
+ type="B_soldier_AR_F";
class CustomAttributes
{
class Attribute0
@@ -1840,7 +1564,7 @@ class Mission
"STRING"
};
};
- value="Male09ENG";
+ value="Male01ENG";
};
};
};
@@ -1859,7 +1583,7 @@ class Mission
"SCALAR"
};
};
- value=1;
+ value=0.99000001;
};
};
};
@@ -1870,9 +1594,9 @@ class Mission
class Attributes
{
};
- id=95;
+ id=101;
};
- class Item28
+ class Item20
{
dataType="Group";
side="West";
@@ -1884,8 +1608,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8313.1982,75.941444,10061.99};
- angles[]={0,5.701921,0};
+ position[]={7079.7178,275.88303,1062.4194};
+ angles[]={6.2496004,0.75462294,6.1495867};
};
side="West";
flags=6;
@@ -1893,8 +1617,8 @@ class Mission
{
isPlayable=1;
};
- id=158;
- type="B_soldier_AR_F";
+ id=185;
+ type="B_soldier_AT_F";
class CustomAttributes
{
class Attribute0
@@ -1931,7 +1655,7 @@ class Mission
"SCALAR"
};
};
- value=1.01;
+ value=1.03;
};
};
};
@@ -1942,9 +1666,9 @@ class Mission
class Attributes
{
};
- id=97;
+ id=103;
};
- class Item29
+ class Item21
{
dataType="Group";
side="West";
@@ -1956,8 +1680,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8314.7031,75.941444,10062.921};
- angles[]={0,5.701921,0};
+ position[]={7080.8276,275.69772,1061.3444};
+ angles[]={6.2496004,0.75462294,6.1495867};
};
side="West";
flags=6;
@@ -1965,8 +1689,8 @@ class Mission
{
isPlayable=1;
};
- id=159;
- type="B_soldier_AR_F";
+ id=186;
+ type="B_soldier_AT_F";
class CustomAttributes
{
class Attribute0
@@ -1984,7 +1708,7 @@ class Mission
"STRING"
};
};
- value="Male09ENG";
+ value="Male11ENG";
};
};
};
@@ -2003,7 +1727,7 @@ class Mission
"SCALAR"
};
};
- value=1.01;
+ value=1.02;
};
};
};
@@ -2014,9 +1738,9 @@ class Mission
class Attributes
{
};
- id=99;
+ id=105;
};
- class Item30
+ class Item22
{
dataType="Group";
side="West";
@@ -2028,8 +1752,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8316.1523,75.941444,10063.819};
- angles[]={0,5.701921,0};
+ position[]={7082.083,275.50171,1060.0974};
+ angles[]={6.249599,0.75462294,6.1669106};
};
side="West";
flags=6;
@@ -2037,8 +1761,8 @@ class Mission
{
isPlayable=1;
};
- id=160;
- type="B_soldier_AR_F";
+ id=187;
+ type="B_soldier_AA_F";
class CustomAttributes
{
class Attribute0
@@ -2056,7 +1780,7 @@ class Mission
"STRING"
};
};
- value="Male01ENG";
+ value="Male02ENG";
};
};
};
@@ -2075,7 +1799,7 @@ class Mission
"SCALAR"
};
};
- value=0.99000001;
+ value=1.05;
};
};
};
@@ -2086,9 +1810,9 @@ class Mission
class Attributes
{
};
- id=101;
+ id=107;
};
- class Item31
+ class Item23
{
dataType="Group";
side="West";
@@ -2100,8 +1824,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8317.6572,75.941444,10064.751};
- angles[]={0,5.701921,0};
+ position[]={7083.2275,275.32861,1058.9235};
+ angles[]={6.249599,0.75462294,6.1669106};
};
side="West";
flags=6;
@@ -2109,8 +1833,9 @@ class Mission
{
isPlayable=1;
};
- id=161;
- type="B_soldier_AT_F";
+ id=226;
+ type="B_soldier_UAV_F";
+ atlOffset=3.0517578e-005;
class CustomAttributes
{
class Attribute0
@@ -2128,7 +1853,7 @@ class Mission
"STRING"
};
};
- value="Male12ENG";
+ value="Male08ENG";
};
};
};
@@ -2158,9 +1883,10 @@ class Mission
class Attributes
{
};
- id=103;
+ id=109;
+ atlOffset=3.0517578e-005;
};
- class Item32
+ class Item24
{
dataType="Group";
side="West";
@@ -2172,8 +1898,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8318.9609,75.945663,10065.58};
- angles[]={0,5.701921,0};
+ position[]={7084.4829,275.14014,1057.6764};
+ angles[]={6.249599,0.75462294,6.1669106};
};
side="West";
flags=6;
@@ -2181,9 +1907,9 @@ class Mission
{
isPlayable=1;
};
- id=162;
- type="B_soldier_AT_F";
- atlOffset=0.028999329;
+ id=227;
+ type="B_soldier_UAV_F";
+ atlOffset=3.0517578e-005;
class CustomAttributes
{
class Attribute0
@@ -2201,7 +1927,7 @@ class Mission
"STRING"
};
};
- value="Male11ENG";
+ value="Male08ENG";
};
};
};
@@ -2220,7 +1946,7 @@ class Mission
"SCALAR"
};
};
- value=1.02;
+ value=1;
};
};
};
@@ -2231,10 +1957,10 @@ class Mission
class Attributes
{
};
- id=105;
- atlOffset=0.028999329;
+ id=111;
+ atlOffset=3.0517578e-005;
};
- class Item33
+ class Item25
{
dataType="Group";
side="West";
@@ -2246,8 +1972,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8320.4658,75.945251,10066.511};
- angles[]={0,5.701921,0};
+ position[]={7072.3545,276.83194,1066.949};
+ angles[]={0.006394445,0.75462294,6.1558795};
};
side="West";
flags=6;
@@ -2255,9 +1981,8 @@ class Mission
{
isPlayable=1;
};
- id=163;
- type="B_soldier_AA_F";
- atlOffset=0.071998596;
+ id=228;
+ type="B_W_Soldier_CBRN_F";
class CustomAttributes
{
class Attribute0
@@ -2275,7 +2000,7 @@ class Mission
"STRING"
};
};
- value="Male02ENG";
+ value="Male05ENG";
};
};
};
@@ -2294,7 +2019,7 @@ class Mission
"SCALAR"
};
};
- value=1.05;
+ value=1;
};
};
};
@@ -2305,10 +2030,9 @@ class Mission
class Attributes
{
};
- id=107;
- atlOffset=0.071998596;
+ id=113;
};
- class Item34
+ class Item26
{
dataType="Group";
side="West";
@@ -2320,8 +2044,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8321.874,75.83403,10067.351};
- angles[]={0,5.701921,0};
+ position[]={7073.6099,276.67917,1065.7021};
+ angles[]={0.006394445,0.75462294,6.1558795};
};
side="West";
flags=6;
@@ -2329,8 +2053,8 @@ class Mission
{
isPlayable=1;
};
- id=167;
- type="B_Sharpshooter_F";
+ id=229;
+ type="B_W_Soldier_CBRN_F";
class CustomAttributes
{
class Attribute0
@@ -2348,7 +2072,7 @@ class Mission
"STRING"
};
};
- value="Male08ENG";
+ value="Male06ENG";
};
};
};
@@ -2367,7 +2091,7 @@ class Mission
"SCALAR"
};
};
- value=1.03;
+ value=0.95999998;
};
};
};
@@ -2378,9 +2102,9 @@ class Mission
class Attributes
{
};
- id=109;
+ id=115;
};
- class Item35
+ class Item27
{
dataType="Group";
side="West";
@@ -2392,67 +2116,55 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8323.3789,75.865822,10068.281};
- angles[]={0,5.701921,0};
+ position[]={7074.7197,276.5441,1064.6271};
+ angles[]={0,0.75462294,0};
};
side="West";
- flags=6;
+ flags=7;
class Attributes
{
isPlayable=1;
};
- id=166;
+ id=118;
type="B_Sharpshooter_F";
- class CustomAttributes
+ };
+ };
+ class Attributes
+ {
+ };
+ id=117;
+ };
+ class Item28
+ {
+ dataType="Group";
+ side="West";
+ class Entities
+ {
+ items=1;
+ class Item0
+ {
+ dataType="Object";
+ class PositionInfo
{
- class Attribute0
- {
- property="speaker";
- expression="_this setspeaker _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="Male08ENG";
- };
- };
- };
- class Attribute1
- {
- property="pitch";
- expression="_this setpitch _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "SCALAR"
- };
- };
- value=1;
- };
- };
- };
- nAttributes=2;
+ position[]={7075.9751,276.38507,1063.3802};
+ angles[]={0,0.75462294,0};
};
+ side="West";
+ flags=7;
+ class Attributes
+ {
+ isPlayable=1;
+ };
+ id=120;
+ type="B_Sharpshooter_F";
};
};
class Attributes
{
};
- id=111;
+ id=119;
};
- class Item36
+ class Item29
{
dataType="Group";
side="West";
@@ -2464,8 +2176,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8311.5381,75.941444,10058.645};
- angles[]={0,5.701921,0};
+ position[]={7077.1875,276.21503,1062.1803};
+ angles[]={0,0.75462294,0};
};
side="West";
flags=7;
@@ -2473,16 +2185,16 @@ class Mission
{
isPlayable=1;
};
- id=114;
+ id=122;
type="B_Soldier_F";
};
};
class Attributes
{
};
- id=113;
+ id=121;
};
- class Item37
+ class Item30
{
dataType="Group";
side="West";
@@ -2494,8 +2206,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8313.043,75.941444,10059.575};
- angles[]={0,5.701921,0};
+ position[]={7078.4429,276.00446,1060.9333};
+ angles[]={0,0.75462294,0};
};
side="West";
flags=7;
@@ -2503,16 +2215,16 @@ class Mission
{
isPlayable=1;
};
- id=116;
+ id=124;
type="B_Soldier_F";
};
};
class Attributes
{
};
- id=115;
+ id=123;
};
- class Item38
+ class Item31
{
dataType="Group";
side="West";
@@ -2524,8 +2236,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8314.3467,75.941444,10060.404};
- angles[]={0,5.701921,0};
+ position[]={7079.5527,275.81915,1059.8583};
+ angles[]={0,0.75462294,0};
};
side="West";
flags=7;
@@ -2533,16 +2245,18 @@ class Mission
{
isPlayable=1;
};
- id=118;
+ id=126;
type="B_Soldier_F";
+ atlOffset=3.0517578e-005;
};
};
class Attributes
{
};
- id=117;
+ id=125;
+ atlOffset=3.0517578e-005;
};
- class Item39
+ class Item32
{
dataType="Group";
side="West";
@@ -2554,8 +2268,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8315.8516,75.941444,10061.335};
- angles[]={0,5.701921,0};
+ position[]={7080.8076,275.60858,1058.6115};
+ angles[]={0,0.75462294,0};
};
side="West";
flags=7;
@@ -2563,16 +2277,16 @@ class Mission
{
isPlayable=1;
};
- id=120;
+ id=128;
type="B_Soldier_F";
};
};
class Attributes
{
};
- id=119;
+ id=127;
};
- class Item40
+ class Item33
{
dataType="Group";
side="West";
@@ -2584,8 +2298,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8317.3008,75.941444,10062.234};
- angles[]={0,5.701921,0};
+ position[]={7081.9526,275.42758,1057.4374};
+ angles[]={0,0.75462294,0};
};
side="West";
flags=7;
@@ -2593,16 +2307,16 @@ class Mission
{
isPlayable=1;
};
- id=122;
+ id=130;
type="B_Soldier_F";
};
};
class Attributes
{
};
- id=121;
+ id=129;
};
- class Item41
+ class Item34
{
dataType="Group";
side="West";
@@ -2614,8 +2328,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8318.8057,75.941444,10063.165};
- angles[]={0,5.701921,0};
+ position[]={7083.2075,275.23737,1056.1904};
+ angles[]={0,0.75462294,0};
};
side="West";
flags=7;
@@ -2623,146 +2337,415 @@ class Mission
{
isPlayable=1;
};
- id=124;
+ id=132;
type="B_Soldier_F";
+ atlOffset=3.0517578e-005;
};
};
class Attributes
{
};
- id=123;
+ id=131;
+ atlOffset=3.0517578e-005;
};
- class Item42
+ class Item35
{
- dataType="Group";
- side="West";
- class Entities
+ dataType="Logic";
+ class PositionInfo
{
- items=1;
- class Item0
+ position[]={7070.6885,276.85696,1075.5607};
+ angles[]={0.055942677,1.3358874,6.1795592};
+ };
+ name="btc_hc_1";
+ isPlayable=1;
+ id=153;
+ type="HeadlessClient_F";
+ };
+ class Item36
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7105.269,275.83667,1053.0665};
+ angles[]={0,0.75957966,0};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ skill=0.60000002;
+ name="btc_helo_1";
+ };
+ id=156;
+ type="B_Heli_Transport_03_F";
+ atlOffset=-0.31341553;
+ class CustomAttributes
+ {
+ class Attribute0
{
- dataType="Object";
- class PositionInfo
- {
- position[]={8320.1094,75.945419,10063.994};
- angles[]={0,5.701921,0};
- };
- side="West";
- flags=7;
- class Attributes
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
{
- isPlayable=1;
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""FirstAidKit"",""Medikit""],[10,1]],[[],[]],[[""ToolKit""],[1]],[[""B_Parachute""],[20]]],false]";
+ };
};
- id=126;
- type="B_Soldier_F";
- atlOffset=0.0039749146;
};
+ nAttributes=1;
};
+ };
+ class Item37
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7052.8164,281.54712,1058.9121};
+ angles[]={0.03358667,0.84832954,6.2033553};
+ };
+ side="Empty";
+ flags=4;
class Attributes
{
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_14";
};
- id=125;
- atlOffset=0.0039749146;
- };
- class Item43
- {
- dataType="Group";
- side="West";
- class Entities
+ id=174;
+ type="B_Heli_Transport_01_camo_F";
+ atlOffset=-0.035400391;
+ class CustomAttributes
{
- items=1;
- class Item0
+ class Attribute0
{
- dataType="Object";
- class PositionInfo
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
{
- position[]={8321.6143,75.945419,10064.925};
- angles[]={0,5.701921,0};
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""arifle_MXC_F"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""SmokeShell"",""SmokeShellBlue"",""30Rnd_65x39_caseless_mag""],[2,2,4]],[[""ToolKit"",""ItemGPS""],[1,1]],[[""B_Parachute""],[8]]],false]";
+ };
};
- side="West";
- flags=7;
- class Attributes
+ };
+ class Attribute1
+ {
+ property="ace_fastroping_equipFRIES";
+ expression="if (_value) then {[_this] call ace_fastroping_fnc_equipFRIES}";
+ class Value
{
- isPlayable=1;
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "BOOL"
+ };
+ };
+ value=0;
+ };
};
- id=128;
- type="B_Soldier_F";
- atlOffset=0.0039749146;
};
+ nAttributes=2;
+ };
+ };
+ class Item38
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7023.2051,283.01917,1080.9238};
+ angles[]={0.070284568,0.84832954,6.1480141};
};
+ side="Empty";
+ flags=4;
class Attributes
{
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_10";
+ };
+ id=175;
+ type="B_Heli_Attack_01_dynamicLoadout_F";
+ atlOffset=-0.012207031;
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""arifle_MXC_F"",""FirstAidKit""],[2,2]],[[""SmokeShell"",""SmokeShellBlue"",""30Rnd_65x39_caseless_mag""],[2,2,4]],[[""ToolKit"",""ItemGPS""],[1,1]],[[""B_Parachute""],[2]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
};
- id=127;
- atlOffset=0.0039749146;
};
- class Item44
+ class Item39
{
- dataType="Group";
- side="West";
- class Entities
+ dataType="Object";
+ class PositionInfo
{
- items=1;
- class Item0
+ position[]={7150.4355,270.7717,1051.0248};
+ angles[]={6.1954093,0.63775539,6.2318373};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ init="call{this setVariable ['bin_deconshower_disableAction',true];}";
+ name="btc_bigShower";
+ };
+ id=200;
+ type="DeconShower_02_F";
+ atlOffset=-0.009185791;
+ class CustomAttributes
+ {
+ class Attribute0
{
- dataType="Object";
- class PositionInfo
+ property="Decon_Shower_DisableUserActions";
+ expression="if(_value)then{_this setVariable ['bin_deconshower_disableAction',true]};";
+ class Value
{
- position[]={8323.0225,75.908073,10065.765};
- angles[]={0,5.701921,0};
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "BOOL"
+ };
+ };
+ value=0;
+ };
};
- side="West";
- flags=7;
- class Attributes
+ };
+ class Attribute1
+ {
+ property="Decon_Shower";
+ expression="if(_value)then{[_this,5.4,4,2,true] spawn bin_fnc_deconShowerAnimLarge;};";
+ class Value
{
- isPlayable=1;
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "BOOL"
+ };
+ };
+ value=0;
+ };
};
- id=130;
- type="B_Soldier_F";
};
+ nAttributes=2;
};
+ };
+ class Item40
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7150.25,267.28522,1051};
+ angles[]={6.1954083,0.63775539,6.2320337};
+ };
+ side="Empty";
+ flags=4;
class Attributes
{
};
- id=129;
+ id=203;
+ type="Tarp_01_Large_Black_F";
+ };
+ class Item41
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7145.0352,268.19464,1053.5084};
+ angles[]={6.2208681,1.3358874,6.2001739};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ };
+ id=213;
+ type="RoadCone_L_F";
+ atlOffset=-0.001373291;
+ };
+ class Item42
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7146.917,268.26727,1056.0151};
+ angles[]={6.1954083,1.3358874,6.2256513};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ };
+ id=214;
+ type="RoadCone_L_F";
+ atlOffset=-0.0036621094;
+ };
+ class Item43
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7153.7813,266.70932,1046.6049};
+ angles[]={6.0904093,1.3358874,6.2320347};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ };
+ id=215;
+ type="RoadCone_L_F";
+ atlOffset=-0.0035705566;
+ };
+ class Item44
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7155.8037,267.14102,1049.355};
+ angles[]={6.0904093,1.3358874,6.2320347};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ };
+ id=216;
+ type="RoadCone_L_F";
+ atlOffset=-0.0051269531;
};
class Item45
{
- dataType="Group";
- side="West";
- class Entities
+ dataType="Object";
+ class PositionInfo
{
- items=1;
- class Item0
+ position[]={7069.064,278.51117,1087.5159};
+ angles[]={0.12100255,0.77119118,6.160605};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true];";
+ name="btc_veh_1";
+ };
+ id=232;
+ type="B_T_APC_Wheeled_01_cannon_F";
+ atlOffset=-0.0048522949;
+ class CustomAttributes
+ {
+ class Attribute0
{
- dataType="Object";
- class PositionInfo
- {
- position[]={8324.5273,75.919395,10066.695};
- angles[]={0,5.701921,0};
- };
- side="West";
- flags=7;
- class Attributes
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
{
- isPlayable=1;
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""MiniGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""Titan_AT"",""Titan_AP"",""Titan_AA""],[12,6,6,6,6,3,3,3,3,8,8,8,8,2,2,2]],[[],[]],[[],[]]],false]";
+ };
};
- id=132;
- type="B_Soldier_F";
};
+ nAttributes=1;
};
+ };
+ class Item46
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7064.6611,277.72958,1100.2162};
+ angles[]={0.13360496,1.6902118,6.1606107};
+ };
+ side="Empty";
+ flags=4;
class Attributes
{
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_5";
+ };
+ id=233;
+ type="B_T_MRAP_01_hmg_F";
+ atlOffset=0.10321045;
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue""],[16,6,10,10,4,4,4,4,12,4,4,4,4]],[[],[]],[[],[]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
};
- id=131;
};
- class Item46
+ class Item47
{
dataType="Object";
class PositionInfo
{
- position[]={8308.083,78.147247,10095.771};
- angles[]={0.08248426,0.94293159,6.224577};
+ position[]={7068.6914,275.73096,1106.2517};
+ angles[]={0.14145893,2.2931533,6.1558809};
};
side="Empty";
flags=4;
@@ -2770,10 +2753,11 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_9";
+ name="btc_veh_6";
};
- id=145;
- type="rhsusf_M1078A1P2_B_M2_D_open_fmtv_usarmy";
+ id=234;
+ type="B_T_MRAP_01_hmg_F";
+ atlOffset=-0.54574585;
class CustomAttributes
{
class Attribute0
@@ -2791,20 +2775,20 @@ class Mission
"STRING"
};
};
- value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue""],[16,6,10,10,4,4,4,4,12,4,4,4,4]],[[],[]],[[],[]]],false]";
};
};
};
nAttributes=1;
};
};
- class Item47
+ class Item48
{
dataType="Object";
class PositionInfo
{
- position[]={8288.5078,79.64241,10081.821};
- angles[]={0.058590703,0.94293159,6.2179446};
+ position[]={7080.8252,274.54797,1103.3436};
+ angles[]={0.15554373,2.7873082,6.1386023};
};
side="Empty";
flags=4;
@@ -2812,10 +2796,11 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_8";
+ name="btc_veh_7";
};
- id=146;
- type="rhsusf_M1078A1P2_B_M2_D_open_fmtv_usarmy";
+ id=237;
+ type="B_T_LSV_01_armed_F";
+ atlOffset=-0.054992676;
class CustomAttributes
{
class Attribute0
@@ -2833,31 +2818,32 @@ class Mission
"STRING"
};
};
- value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]";
};
};
};
nAttributes=1;
};
};
- class Item48
+ class Item49
{
dataType="Object";
class PositionInfo
{
- position[]={8299.1973,78.215668,10089.534};
- angles[]={0.0013439035,0.94247776,6.232553};
+ position[]={7080.8096,277.03772,1083.1549};
+ angles[]={0.10520844,0.710733,6.1339073};
};
side="Empty";
flags=4;
class Attributes
{
+ skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_15";
+ name="btc_veh_2";
};
- id=152;
- type="rhsusf_M1078A1P2_B_D_fmtv_usarmy";
- atlOffset=-0.095359802;
+ id=238;
+ type="B_T_LSV_01_armed_F";
+ atlOffset=0.070037842;
class CustomAttributes
{
class Attribute0
@@ -2875,32 +2861,20 @@ class Mission
"STRING"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit""],[2,4]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[10,2,2,2,4]],[[""ToolKit""],[1]],[[""rhsusf_falconii""],[1]]],false]";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]";
};
};
};
nAttributes=1;
};
};
- class Item49
- {
- dataType="Logic";
- class PositionInfo
- {
- position[]={8302.7266,75.940002,10058.99};
- };
- name="btc_hc_1";
- isPlayable=1;
- id=153;
- type="HeadlessClient_F";
- };
class Item50
{
dataType="Object";
class PositionInfo
{
- position[]={8272.0283,79.696327,10065.254};
- angles[]={0.17033349,0.95726073,6.2392135};
+ position[]={7085.7305,276.43085,1078.4639};
+ angles[]={0.067107908,0.710733,6.1214104};
};
side="Empty";
flags=4;
@@ -2908,11 +2882,11 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_6";
+ name="btc_veh_3";
};
- id=154;
- type="rhsusf_M1237_M2_usarmy_d";
- atlOffset=-0.032234192;
+ id=239;
+ type="B_T_LSV_01_armed_F";
+ atlOffset=-0.12496948;
class CustomAttributes
{
class Attribute0
@@ -2930,7 +2904,7 @@ class Mission
"STRING"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]";
};
};
};
@@ -2942,8 +2916,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8276.9688,79.675079,10059.785};
- angles[]={0.12205668,0.35431969,6.1297355};
+ position[]={7098.165,275.39944,1066.9797};
+ angles[]={0.0095993113,0.710733,6.1763887};
};
side="Empty";
flags=4;
@@ -2951,11 +2925,11 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_5";
+ name="btc_veh_4";
};
- id=155;
- type="rhsusf_M1237_M2_usarmy_d";
- atlOffset=-0.030586243;
+ id=240;
+ type="B_T_LSV_01_armed_F";
+ atlOffset=-0.092956543;
class CustomAttributes
{
class Attribute0
@@ -2973,7 +2947,7 @@ class Mission
"STRING"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]";
};
};
};
@@ -2985,8 +2959,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8363.8711,75.677399,10103.982};
- angles[]={0.0066682254,5.6318107,6.1914439};
+ position[]={7088.9854,274.68829,1092.5779};
+ angles[]={0.092537358,2.2788241,6.1198573};
};
side="Empty";
flags=4;
@@ -2994,10 +2968,11 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_16";
+ name="btc_veh_8";
};
- id=169;
- type="B_Truck_01_flatbed_F";
+ id=241;
+ type="B_T_Truck_01_transport_F";
+ atlOffset=0.00048828125;
class CustomAttributes
{
class Attribute0
@@ -3027,24 +3002,24 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={8346.2012,77.471329,10106.966};
- angles[]={0.0066682254,5.5850534,6.2485328};
+ position[]={7099.8633,274.62213,1084.2837};
+ angles[]={0.15241256,2.2783701,6.1637564};
};
side="Empty";
+ flags=4;
class Attributes
{
- init="call{this setVariable ['bin_deconshower_disableAction',true];}";
- name="btc_bigShower";
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_15";
};
- id=170;
- type="DeconShower_02_F";
- atlOffset=0.30892181;
+ id=243;
+ type="B_T_Truck_01_flatbed_F";
class CustomAttributes
{
class Attribute0
{
- property="Decon_Shower_DisableUserActions";
- expression="if(_value)then{_this setVariable ['bin_deconshower_disableAction',true]};";
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
class Value
{
class data
@@ -3053,17 +3028,40 @@ class Mission
{
type[]=
{
- "BOOL"
+ "STRING"
};
};
- value=0;
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
};
};
};
- class Attribute1
+ nAttributes=1;
+ };
+ };
+ class Item54
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7110.1313,273.8912,1076.689};
+ angles[]={0.028797932,2.2788241,6.2240534};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_9";
+ };
+ id=244;
+ type="B_T_Truck_01_transport_F";
+ class CustomAttributes
+ {
+ class Attribute0
{
- property="Decon_Shower";
- expression="if(_value)then{[_this,5.4,4,2,true] spawn bin_fnc_deconShowerAnimLarge;};";
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
class Value
{
class data
@@ -3072,99 +3070,271 @@ class Mission
{
type[]=
{
- "BOOL"
+ "STRING"
};
};
- value=0;
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
};
};
};
- nAttributes=2;
+ nAttributes=1;
};
};
- class Item54
+ class Item55
{
dataType="Object";
class PositionInfo
{
- position[]={8346.2598,74.000175,10106.659};
- angles[]={0.0066682254,5.5850534,6.2485328};
+ position[]={7115.6528,273.66119,1038.8058};
+ angles[]={6.2543874,0.68451816,6.1684823};
};
side="Empty";
+ flags=4;
class Attributes
{
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_13";
+ };
+ id=245;
+ type="B_T_Truck_01_Repair_F";
+ atlOffset=-0.10299683;
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
};
- id=171;
- type="Tarp_01_Large_Black_F";
- atlOffset=0.32492828;
};
- class Item55
+ class Item56
{
dataType="Object";
class PositionInfo
{
- position[]={8342.9902,74.174217,10102.56};
- angles[]={0.0079935296,0,6.2472029};
+ position[]={7119.8477,272.70474,1035.047};
+ angles[]={6.249588,0.68451816,6.1716585};
};
side="Empty";
flags=4;
class Attributes
{
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_12";
+ };
+ id=246;
+ type="B_T_Truck_01_fuel_F";
+ atlOffset=-0.058990479;
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
};
- id=172;
- type="RoadCone_L_F";
- atlOffset=2.2888184e-005;
};
- class Item56
+ class Item57
{
dataType="Object";
class PositionInfo
{
- position[]={8341.0508,74.228027,10104.568};
- angles[]={0.0079935296,0,6.2472029};
+ position[]={7124.3345,272.08392,1030.8234};
+ angles[]={6.2655926,0.68451816,6.1716585};
};
side="Empty";
flags=4;
class Attributes
{
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_11";
+ };
+ id=247;
+ type="B_T_Truck_01_ammo_F";
+ atlOffset=-0.050994873;
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
};
- id=173;
- type="RoadCone_L_F";
- atlOffset=6.8664551e-005;
};
- class Item57
+ class Item58
{
dataType="Object";
class PositionInfo
{
- position[]={8351.0439,73.759438,10109.445};
- angles[]={0.033321146,0,6.2206011};
+ position[]={7129.0771,272.34521,1026.9546};
+ angles[]={6.2655749,0.68451816,6.1922359};
};
side="Empty";
flags=4;
class Attributes
{
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_16";
+ };
+ id=248;
+ type="B_T_Truck_01_flatbed_F";
+ atlOffset=-0.050994873;
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
};
- id=174;
- type="RoadCone_L_F";
- atlOffset=7.6293945e-005;
};
- class Item58
+ class Item59
{
dataType="Object";
class PositionInfo
{
- position[]={8349.207,73.740791,10111.555};
- angles[]={0.074528553,0,6.2206011};
+ position[]={7135.4209,270.89554,1023.1991};
+ angles[]={6.2448053,0.64624304,6.1323361};
};
side="Empty";
flags=4;
class Attributes
{
+ init="call{this setVariable [""btc_dont_delete"",true]}";
+ name="btc_veh_17";
+ };
+ id=249;
+ type="B_T_Truck_01_medical_F";
+ atlOffset=-0.091003418;
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
+ };
+ };
+ class Item60
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={7142.0708,270.33746,1020.1888};
+ angles[]={6.2448053,0.60960865,6.1669116};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ init="call{this setVariable [""btc_dont_delete"",true]}";
+ name="btc_veh_18";
+ };
+ id=250;
+ type="B_T_APC_Tracked_01_CRV_F";
+ atlOffset=-0.092987061;
+ class CustomAttributes
+ {
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""arifle_MX_F"",""arifle_MX_SW_F"",""launch_NLAW_F"",""FirstAidKit""],[2,1,1,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""MiniGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F"",""Titan_AT"",""Titan_AP"",""Titan_AA""],[24,12,6,6,6,3,3,3,3,8,8,8,8,5,2,2,2]],[[],[]],[[],[]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
};
- id=175;
- type="RoadCone_L_F";
- atlOffset=0.00018310547;
};
};
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Tanoa.sqm b/=BTC=co@30_Hearts_and_Minds.Altis/mission__Tanoa.sqm
similarity index 58%
rename from =BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Tanoa.sqm
rename to =BTC=co@30_Hearts_and_Minds.Altis/mission__Tanoa.sqm
index 04857597f..a1dd09a81 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Tanoa.sqm
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/mission__Tanoa.sqm
@@ -1,14 +1,14 @@
version=53;
class EditorData
{
- moveGridStep=0.125;
+ moveGridStep=0.5;
angleGridStep=0.2617994;
scaleGridStep=0.1;
autoGroupingDist=10;
- toggles=517;
+ toggles=581;
class ItemIDProvider
{
- nextID=274;
+ nextID=251;
};
class MarkerIDProvider
{
@@ -16,17 +16,16 @@ class EditorData
};
class Camera
{
- pos[]={4254.6982,68.671448,3917.1865};
- dir[]={0.0048925737,-0.60088998,0.79932052};
- up[]={0.0036780338,0.799303,0.60091674};
- aside[]={0.9999845,3.9050065e-008,-0.0061211665};
+ pos[]={4249.6226,27.622044,3976.6941};
+ dir[]={0.39056954,-0.43001515,-0.81403327};
+ up[]={0.18603939,0.90279877,-0.38774955};
+ aside[]={-0.90164852,-6.7637302e-007,-0.43260601};
};
};
binarizationWanted=0;
addons[]=
{
"A3_Ui_F",
- "RHS_US_A2_AirImport",
"A3_Structures_F_Ind_Cargo",
"ace_cargo",
"A3_Structures_F_Mil_Helipads",
@@ -34,21 +33,25 @@ addons[]=
"A3_Characters_F",
"ace_explosives",
"A3_Modules_F_Curator_Curator",
- "A3_Characters_F_Mark",
- "RHS_US_A2Port_Armor",
- "rhsusf_vehicles",
- "rhsusf_c_fmtv",
- "rhsusf_c_RG33L",
+ "A3_Characters_F_Enoch",
+ "A3_Air_F_Heli_Heli_Transport_03",
+ "ace_realisticnames",
+ "A3_Air_F_Beta_Heli_Transport_01",
+ "A3_Air_F_Beta_Heli_Attack_01",
"A3_Props_F_Enoch_Military_Decontamination",
"A3_Signs_F",
+ "A3_Armor_F_Exp_APC_Wheeled_01",
+ "A3_Soft_F_Exp_MRAP_01",
+ "A3_Soft_F_Exp_LSV_01",
+ "A3_Soft_F_Exp_Truck_01",
"A3_Soft_F_Enoch_Truck_01",
- "A3_Soft_F_Exp_Truck_01"
+ "A3_Armor_F_Exp_APC_Tracked_01"
};
class AddonsMetaData
{
class List
{
- items=17;
+ items=15;
class Item0
{
className="A3_Ui_F";
@@ -57,120 +60,109 @@ class AddonsMetaData
url="https://www.arma3.com";
};
class Item1
- {
- className="RHS_US_A2_AirImport";
- name="RHSUSF A2 Air Ports";
- url="http://www.rhsmods.org/";
- };
- class Item2
{
className="A3_Structures_F_Ind";
name="Arma 3 - Industrial Structures";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
- class Item3
+ class Item2
{
className="ace_cargo";
name="ACE3 - Cargo";
author="ACE-Team";
url="http://ace3mod.com/";
};
- class Item4
+ class Item3
{
className="A3_Structures_F_Mil";
name="Arma 3 - Military Buildings and Structures";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
- class Item5
+ class Item4
{
className="A3_Characters_F";
name="Arma 3 Alpha - Characters and Clothing";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
- class Item6
+ class Item5
{
className="ace_explosives";
name="ACE3 - Explosives";
author="ACE-Team";
url="http://ace3mod.com/";
};
- class Item7
+ class Item6
{
className="A3_Modules_F_Curator";
name="Arma 3 Zeus Update - Scripted Modules";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
+ class Item7
+ {
+ className="A3_Characters_F_Enoch";
+ name="Arma 3 Contact Platform - Characters and Clothing";
+ author="Bohemia Interactive";
+ url="https://www.arma3.com";
+ };
class Item8
{
- className="A3_Characters_F_Mark";
- name="Arma 3 Marksmen - Characters and Clothing";
+ className="A3_Air_F_Heli";
+ name="Arma 3 Helicopters - Aircraft";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
class Item9
{
- className="RHS_US_A2Port_Armor";
- name="M2 Bradley IFV";
- url="http://www.rhsmods.org/";
+ className="A3_Air_F_Beta";
+ name="Arma 3 Beta - Aircraft";
+ author="Bohemia Interactive";
+ url="https://www.arma3.com";
};
class Item10
- {
- className="rhsusf_vehicles";
- name="rhsusf_vehicles";
- };
- class Item11
- {
- className="rhsusf_c_fmtv";
- name="FMTV Trucks";
- url="http://www.rhsmods.org/";
- };
- class Item12
- {
- className="rhsusf_c_RG33L";
- name="RG33L MRAP";
- url="http://www.rhsmods.org/";
- };
- class Item13
{
className="A3_Props_F_Enoch";
- name="Arma 3 Enoch - Decorative and Mission Objects";
+ name="Arma 3 Contact Platform - Decorative and Mission Objects";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
- class Item14
+ class Item11
{
className="A3_Signs_F";
name="Arma 3 - Signs";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
- class Item15
+ class Item12
{
- className="A3_Soft_F_Enoch";
- name="Arma 3 Enoch - Unarmored Land Vehicles";
+ className="A3_Armor_F_Exp";
+ name="Arma 3 Apex - Armored Land Vehicles";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
- class Item16
+ class Item13
{
className="A3_Soft_F_Exp";
name="Arma 3 Apex - Unarmored Land Vehicles";
author="Bohemia Interactive";
url="https://www.arma3.com";
};
+ class Item14
+ {
+ className="A3_Soft_F_Enoch";
+ name="Arma 3 Contact Platform - Unarmored Land Vehicles";
+ author="Bohemia Interactive";
+ url="https://www.arma3.com";
+ };
};
};
randomSeed=2442963;
class ScenarioData
{
- respawnDialog=0;
disabledAI=1;
- respawn=3;
- respawnDelay=5;
class Header
{
gameType="Coop";
@@ -282,7 +274,7 @@ class CustomAttributes
"STRING"
};
};
- value="ace_medical_enablefor";
+ value="ace_respawn_savepredeathgear";
};
};
class Item1
@@ -296,7 +288,7 @@ class CustomAttributes
"STRING"
};
};
- value="ace_rearm_level";
+ value="ace_medical_enablefor";
};
};
class Item2
@@ -310,7 +302,7 @@ class CustomAttributes
"STRING"
};
};
- value="ace_respawn_savepredeathgear";
+ value="ace_cargo_enable";
};
};
class Item3
@@ -324,7 +316,7 @@ class CustomAttributes
"STRING"
};
};
- value="ace_cargo_enable";
+ value="ace_rearm_level";
};
};
class Item4
@@ -380,7 +372,7 @@ class CustomAttributes
{
type[]=
{
- "SCALAR"
+ "BOOL"
};
};
value=1;
@@ -394,7 +386,7 @@ class CustomAttributes
{
type[]=
{
- "BOOL"
+ "SCALAR"
};
};
value=1;
@@ -484,7 +476,7 @@ class CustomAttributes
{
type[]=
{
- "BOOL"
+ "SCALAR"
};
};
value=1;
@@ -515,7 +507,7 @@ class CustomAttributes
{
type[]=
{
- "BOOL"
+ "SCALAR"
};
};
value=1;
@@ -529,7 +521,7 @@ class CustomAttributes
{
type[]=
{
- "SCALAR"
+ "BOOL"
};
};
value=1;
@@ -655,30 +647,30 @@ class Mission
};
class Entities
{
- items=59;
+ items=61;
class Item0
{
dataType="Marker";
- position[]={4231.5,360.625,4011.125};
+ position[]={4211.2661,19.452999,4025.085};
name="respawn_west";
+ text=$STR_BTC_HAM_INTRO_ARSENAL_REDEPLOY;
type="Empty";
- angle=33.149483;
id=0;
- atlOffset=341.63031;
+ atlOffset=-0.00034332275;
};
class Item1
{
dataType="Marker";
- position[]={4223.375,6.159635e+026,3993.75};
+ position[]={4219.5239,19.041,4009.7571};
name="btc_base";
type="flag_NATO";
id=1;
- atlOffset=6.159635e+026;
+ atlOffset=0.00015640259;
};
class Item2
{
dataType="Marker";
- position[]={4253.5,6.159635e+026,3990.375};
+ position[]={4223,18.247999,3979.25};
name="btc_log_point";
text=$STR_BTC_HAM_MSQM_MRK_LOGPOINT;
type="mil_flag";
@@ -686,57 +678,15 @@ class Mission
a=0.5;
b=0.5;
id=2;
- atlOffset=6.159635e+026;
+ atlOffset=-3.4332275e-005;
};
class Item3
{
dataType="Object";
class PositionInfo
{
- position[]={4290.125,25.662582,3962.6953};
- angles[]={6.2432079,4.8979063,0.0053265258};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- name="btc_helo_1";
- };
- id=6;
- type="RHS_CH_47F_10";
- atlOffset=-0.17722511;
- class CustomAttributes
- {
- class Attribute0
- {
- property="ammoBox";
- expression="[_this,_value] call bis_fnc_initAmmoBox;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,10,2]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[12,4,2,2,4]],[[],[]],[[""B_Parachute""],[4]]],false]";
- };
- };
- };
- nAttributes=1;
- };
- };
- class Item4
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4245.125,19.769165,3990.25};
- angles[]={0,3.7038331,0.047961645};
+ position[]={4222.4121,19.440477,3987.0181};
+ angles[]={6.2325621,2.080183,0.0053265258};
};
side="Empty";
flags=4;
@@ -749,6 +699,7 @@ class Mission
};
id=13;
type="Land_CargoBox_V1_F";
+ atlOffset=-0.0012397766;
class CustomAttributes
{
class Attribute0
@@ -771,25 +722,6 @@ class Mission
};
};
class Attribute1
- {
- property="ace_isMedicalFacility";
- expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute2
{
property="ace_cargo_size";
expression="[_this,_value] call ace_cargo_fnc_setSize;";
@@ -808,16 +740,16 @@ class Mission
};
};
};
- nAttributes=3;
+ nAttributes=2;
};
};
- class Item5
+ class Item4
{
dataType="Object";
class PositionInfo
{
- position[]={4253.375,19.517353,3990.375};
- angles[]={6.2671809,0.52167892,0.058608156};
+ position[]={4223,18.248034,3979.25};
+ angles[]={6.2113104,3.5802941,0.023993526};
};
side="Empty";
flags=4;
@@ -849,35 +781,16 @@ class Mission
};
};
};
- class Attribute1
- {
- property="ace_isMedicalFacility";
- expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=2;
+ nAttributes=1;
};
};
- class Item6
+ class Item5
{
dataType="Object";
class PositionInfo
{
- position[]={4225.48,19.707964,4010.2305};
- angles[]={6.2565165,1.0466565,0.0053232545};
+ position[]={4210.9512,20.136942,4019.05};
+ angles[]={6.2698536,1.1926365,6.2618566};
};
side="Empty";
flags=4;
@@ -890,7 +803,7 @@ class Mission
};
id=15;
type="Land_CargoBox_V1_F";
- atlOffset=-1.9073486e-006;
+ atlOffset=-0.019309998;
class CustomAttributes
{
class Attribute0
@@ -913,25 +826,6 @@ class Mission
};
};
class Attribute1
- {
- property="ace_isMedicalFacility";
- expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute2
{
property="ace_cargo_size";
expression="[_this,_value] call ace_cargo_fnc_setSize;";
@@ -950,59 +844,16 @@ class Mission
};
};
};
- nAttributes=3;
- };
- };
- class Item7
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4294.6011,23.503742,3994.0601};
- angles[]={0.034652505,4.8737464,0.039977662};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_10";
- };
- id=16;
- type="RHS_AH64D";
- atlOffset=-0.30885124;
- class CustomAttributes
- {
- class Attribute0
- {
- property="ammoBox";
- expression="[_this,_value] call bis_fnc_initAmmoBox;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit""],[2,4]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m18_green"",""rhs_mag_m18_yellow"",""rhs_mag_m18_red"",""rhs_mag_m18_purple"",""rhs_mag_an_m8hc""],[8,2,2,2,2,2]],[[],[]],[[""B_Parachute""],[2]]],false]";
- };
- };
- };
- nAttributes=1;
+ nAttributes=2;
};
};
- class Item8
+ class Item6
{
dataType="Object";
class PositionInfo
{
- position[]={4293.625,21.394325,3994.5};
- angles[]={0.034652505,4.7827449,6.2805333};
+ position[]={4338.7837,23.259531,3954.2544};
+ angles[]={0,4.9561291,0.023993526};
};
side="Empty";
flags=4;
@@ -1012,37 +863,15 @@ class Mission
};
id=17;
type="Land_HelipadSquare_F";
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isMedicalFacility";
- expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=1;
- };
+ atlOffset=0.0087184906;
};
- class Item9
+ class Item7
{
dataType="Object";
class PositionInfo
{
- position[]={4224.5,22.85014,4002.75};
- angles[]={6.2778587,1.6527834,0.0026520467};
+ position[]={4216.0317,23.122213,4009.9016};
+ angles[]={6.2671871,1.7987723,6.2511969};
};
side="Empty";
flags=4;
@@ -1052,127 +881,39 @@ class Mission
};
id=21;
type="Flag_NATO_F";
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isMedicalFacility";
- expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=1;
- };
};
- class Item10
+ class Item8
{
dataType="Object";
class PositionInfo
{
- position[]={4321.6724,24.29775,3992.0872};
- angles[]={6.2645216,4.9720054,0.039977662};
+ position[]={4303.2642,22.297966,3960.4495};
+ angles[]={6.272521,4.9561291,0.031988446};
};
side="Empty";
flags=4;
class Attributes
{
skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_14";
};
- id=22;
- type="RHS_UH1Y_d";
- atlOffset=-0.004776001;
- class CustomAttributes
+ id=23;
+ type="Land_HelipadSquare_F";
+ atlOffset=0.0087184906;
+ };
+ class Item9
+ {
+ dataType="Group";
+ side="West";
+ class Entities
{
- class Attribute0
- {
- property="ammoBox";
- expression="[_this,_value] call bis_fnc_initAmmoBox;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,10,2]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[12,4,2,2,4]],[[],[]],[[""B_Parachute""],[4]]],false]";
- };
- };
- };
- nAttributes=1;
- };
- };
- class Item11
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4319.625,22.049675,3992.5};
- angles[]={6.2645183,0.1613543,0.018667053};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- skill=0.60000002;
- };
- id=23;
- type="Land_HelipadSquare_F";
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isMedicalFacility";
- expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=1;
- };
- };
- class Item12
- {
- dataType="Group";
- side="West";
- class Entities
- {
- items=1;
- class Item0
+ items=1;
+ class Item0
{
dataType="Object";
class PositionInfo
{
- position[]={4212.5469,19.360876,4017.093};
- angles[]={6.2698536,4.3477578,6.259192};
+ position[]={4209.75,19.430765,4017.55};
+ angles[]={6.272521,4.3508034,6.259192};
};
side="West";
flags=6;
@@ -1186,77 +927,14 @@ class Mission
};
id=25;
type="B_officer_F";
- atlOffset=-3.8146973e-006;
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
- {
- property="pitch";
- expression="_this setpitch _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "SCALAR"
- };
- };
- value=0.98000002;
- };
- };
- };
- class Attribute2
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=3;
- };
};
};
class Attributes
{
};
id=24;
- atlOffset=-3.8146973e-006;
};
- class Item13
+ class Item10
{
dataType="Group";
side="West";
@@ -1268,8 +946,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4213.5083,19.405031,4022.5779};
- angles[]={6.2698536,4.3204784,6.2698536};
+ position[]={4210.729,19.455681,4023.0322};
+ angles[]={6.2778587,4.3235211,6.2671871};
};
side="West";
flags=6;
@@ -1282,77 +960,16 @@ class Mission
};
id=29;
type="B_Soldier_F";
- atlOffset=-1.9073486e-006;
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
- {
- property="pitch";
- expression="_this setpitch _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "SCALAR"
- };
- };
- value=1.04;
- };
- };
- };
- class Attribute2
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=3;
- };
+ atlOffset=1.9073486e-006;
};
};
class Attributes
{
};
id=28;
- atlOffset=-1.9073486e-006;
+ atlOffset=1.9073486e-006;
};
- class Item14
+ class Item11
{
dataType="Group";
side="West";
@@ -1364,8 +981,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4213.9482,19.380543,4021.1812};
- angles[]={6.2698507,4.1308804,6.2698507};
+ position[]={4211.1631,19.441271,4021.6331};
+ angles[]={6.2778587,4.1339355,6.2671871};
};
side="West";
flags=6;
@@ -1381,25 +998,6 @@ class Mission
class CustomAttributes
{
class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
{
property="ace_isEngineer";
expression="if !(_value == ([0,1] select (_this getUnitTrait 'engineer'))|| {_value == -1}) then {_this setVariable ['ace_isEngineer', _value, true]}";
@@ -1418,7 +1016,7 @@ class Mission
};
};
};
- class Attribute2
+ class Attribute1
{
property="speaker";
expression="_this setspeaker _value;";
@@ -1437,7 +1035,7 @@ class Mission
};
};
};
- class Attribute3
+ class Attribute2
{
property="pitch";
expression="_this setpitch _value;";
@@ -1456,26 +1054,7 @@ class Mission
};
};
};
- class Attribute4
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=5;
+ nAttributes=3;
};
};
};
@@ -1485,13 +1064,13 @@ class Mission
id=30;
atlOffset=1.9073486e-006;
};
- class Item15
+ class Item12
{
dataType="Logic";
class PositionInfo
{
- position[]={3985.1992,-5.0633116,3906.0693};
- angles[]={6.272521,0,0.093063653};
+ position[]={4159.5,14.44014,4017.5};
+ angles[]={0.023993526,0,0.47951955};
};
name="btc_curator";
init="this addEventHandler ['CuratorObjectPlaced',{_this call btc_fnc_eh_CuratorObjectPlaced}];";
@@ -1597,7 +1176,7 @@ class Mission
nAttributes=5;
};
};
- class Item16
+ class Item13
{
dataType="Group";
side="West";
@@ -1609,511 +1188,59 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4202.4067,19.632608,4026.0737};
- angles[]={0,2.8130026,0};
- };
- side="West";
- flags=7;
- class Attributes
- {
- isPlayable=1;
+ position[]={4199.6377,19.668583,4026.562};
+ angles[]={0,2.8160391,0};
};
- id=90;
- type="B_medic_F";
- atlOffset=1.9073486e-006;
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
- {
- property="pitch";
- expression="_this setpitch _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "SCALAR"
- };
- };
- value=1;
- };
- };
- };
- class Attribute2
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=3;
- };
- };
- };
- class Attributes
- {
- };
- id=89;
- atlOffset=1.9073486e-006;
- };
- class Item17
- {
- dataType="Group";
- side="West";
- class Entities
- {
- items=1;
- class Item0
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4204.2739,19.586445,4026.7244};
- angles[]={0,2.8130026,0};
- };
- side="West";
- flags=7;
- class Attributes
- {
- isPlayable=1;
- };
- id=92;
- type="B_medic_F";
- atlOffset=-3.8146973e-006;
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
- {
- property="pitch";
- expression="_this setpitch _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "SCALAR"
- };
- };
- value=0.98000002;
- };
- };
- };
- class Attribute2
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=3;
- };
- };
- };
- class Attributes
- {
- };
- id=91;
- atlOffset=-3.8146973e-006;
- };
- class Item18
- {
- dataType="Group";
- side="West";
- class Entities
- {
- items=1;
- class Item0
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4205.6602,19.529762,4019.468};
- angles[]={0,1.2144525,0};
- };
- side="West";
- flags=6;
- class Attributes
- {
- isPlayable=1;
- };
- id=249;
- type="B_engineer_F";
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
- {
- property="speaker";
- expression="_this setspeaker _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="Male03ENG";
- };
- };
- };
- class Attribute2
- {
- property="pitch";
- expression="_this setpitch _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "SCALAR"
- };
- };
- value=1;
- };
- };
- };
- class Attribute3
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=4;
- };
- };
- };
- class Attributes
- {
- };
- id=93;
- };
- class Item19
- {
- dataType="Group";
- side="West";
- class Entities
- {
- items=1;
- class Item0
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4206.125,19.507099,4017.925};
- angles[]={0,1.2144525,0};
- };
- side="West";
- flags=6;
- class Attributes
- {
- isPlayable=1;
- };
- id=250;
- type="B_engineer_F";
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
- {
- property="speaker";
- expression="_this setspeaker _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="Male09ENG";
- };
- };
- };
- class Attribute2
- {
- property="pitch";
- expression="_this setpitch _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "SCALAR"
- };
- };
- value=1;
- };
- };
- };
- class Attribute3
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=4;
- };
- };
- };
- class Attributes
- {
- };
- id=95;
- };
- class Item20
- {
- dataType="Group";
- side="West";
- class Entities
- {
- items=1;
- class Item0
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4206.751,19.485622,4016.3381};
- angles[]={0,1.2144525,0};
- };
- side="West";
- flags=6;
- class Attributes
- {
- isPlayable=1;
- };
- id=251;
- type="B_soldier_AR_F";
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
- {
- property="speaker";
- expression="_this setspeaker _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="Male12ENG";
- };
- };
- };
- class Attribute2
- {
- property="pitch";
- expression="_this setpitch _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "SCALAR"
- };
- };
- value=1.01;
- };
- };
- };
- class Attribute3
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=4;
+ side="West";
+ flags=7;
+ class Attributes
+ {
+ isPlayable=1;
};
+ id=90;
+ type="B_medic_F";
+ atlOffset=-1.9073486e-006;
};
};
class Attributes
{
};
- id=97;
+ id=89;
+ atlOffset=-1.9073486e-006;
};
- class Item21
+ class Item14
+ {
+ dataType="Group";
+ side="West";
+ class Entities
+ {
+ items=1;
+ class Item0
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4201.5054,19.670515,4027.2063};
+ angles[]={0,2.8160391,0};
+ };
+ side="West";
+ flags=7;
+ class Attributes
+ {
+ isPlayable=1;
+ };
+ id=92;
+ type="B_medic_F";
+ atlOffset=1.9073486e-006;
+ };
+ };
+ class Attributes
+ {
+ };
+ id=91;
+ atlOffset=1.9073486e-006;
+ };
+ class Item15
{
dataType="Group";
side="West";
@@ -2125,8 +1252,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4207.3208,19.45731,4014.6621};
- angles[]={0,1.2144525,0};
+ position[]={4202.8706,19.567921,4019.9463};
+ angles[]={6.2778587,1.2175078,6.2751846};
};
side="West";
flags=6;
@@ -2134,30 +1261,11 @@ class Mission
{
isPlayable=1;
};
- id=252;
- type="B_soldier_AR_F";
+ id=180;
+ type="B_engineer_F";
class CustomAttributes
{
class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
{
property="speaker";
expression="_this setspeaker _value;";
@@ -2172,11 +1280,11 @@ class Mission
"STRING"
};
};
- value="Male09ENG";
+ value="Male03ENG";
};
};
};
- class Attribute2
+ class Attribute1
{
property="pitch";
expression="_this setpitch _value;";
@@ -2191,39 +1299,20 @@ class Mission
"SCALAR"
};
};
- value=1.01;
- };
- };
- };
- class Attribute3
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
+ value=1;
};
};
};
- nAttributes=4;
+ nAttributes=2;
};
};
};
class Attributes
{
};
- id=99;
+ id=93;
};
- class Item22
+ class Item16
{
dataType="Group";
side="West";
@@ -2235,8 +1324,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4207.875,19.426765,4013.05};
- angles[]={0,1.2144525,0};
+ position[]={4203.437,19.554443,4018.2698};
+ angles[]={6.2778587,1.2175078,6.2751846};
};
side="West";
flags=6;
@@ -2244,30 +1333,11 @@ class Mission
{
isPlayable=1;
};
- id=253;
- type="B_soldier_AR_F";
+ id=181;
+ type="B_engineer_F";
class CustomAttributes
{
class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
{
property="speaker";
expression="_this setspeaker _value;";
@@ -2282,11 +1352,11 @@ class Mission
"STRING"
};
};
- value="Male01ENG";
+ value="Male09ENG";
};
};
};
- class Attribute2
+ class Attribute1
{
property="pitch";
expression="_this setpitch _value;";
@@ -2301,39 +1371,20 @@ class Mission
"SCALAR"
};
};
- value=0.99000001;
- };
- };
- };
- class Attribute3
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
+ value=1;
};
};
};
- nAttributes=4;
+ nAttributes=2;
};
};
};
class Attributes
{
};
- id=101;
+ id=95;
};
- class Item23
+ class Item17
{
dataType="Group";
side="West";
@@ -2345,8 +1396,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4208.4458,19.392986,4011.377};
- angles[]={0,1.2144525,0};
+ position[]={4203.9497,19.540438,4016.8127};
+ angles[]={6.2778478,1.2175078,6.2645216};
};
side="West";
flags=6;
@@ -2354,30 +1405,11 @@ class Mission
{
isPlayable=1;
};
- id=254;
- type="B_soldier_AT_F";
+ id=182;
+ type="B_soldier_AR_F";
class CustomAttributes
{
class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
{
property="speaker";
expression="_this setspeaker _value;";
@@ -2396,7 +1428,7 @@ class Mission
};
};
};
- class Attribute2
+ class Attribute1
{
property="pitch";
expression="_this setpitch _value;";
@@ -2411,39 +1443,20 @@ class Mission
"SCALAR"
};
};
- value=1.03;
- };
- };
- };
- class Attribute3
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
+ value=1.01;
};
};
};
- nAttributes=4;
+ nAttributes=2;
};
};
};
class Attributes
{
};
- id=103;
+ id=97;
};
- class Item24
+ class Item18
{
dataType="Group";
side="West";
@@ -2455,8 +1468,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4208.9639,19.369772,4009.9202};
- angles[]={0,1.2144525,0};
+ position[]={4204.5161,19.518961,4015.1365};
+ angles[]={0,1.2175078,6.253861};
};
side="West";
flags=6;
@@ -2464,30 +1477,11 @@ class Mission
{
isPlayable=1;
};
- id=255;
- type="B_soldier_AT_F";
+ id=183;
+ type="B_soldier_AR_F";
class CustomAttributes
{
class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
{
property="speaker";
expression="_this setspeaker _value;";
@@ -2502,11 +1496,11 @@ class Mission
"STRING"
};
};
- value="Male11ENG";
+ value="Male09ENG";
};
};
};
- class Attribute2
+ class Attribute1
{
property="pitch";
expression="_this setpitch _value;";
@@ -2521,39 +1515,20 @@ class Mission
"SCALAR"
};
};
- value=1.02;
- };
- };
- };
- class Attribute3
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
+ value=1.01;
};
};
};
- nAttributes=4;
+ nAttributes=2;
};
};
};
class Attributes
{
};
- id=105;
+ id=99;
};
- class Item25
+ class Item19
{
dataType="Group";
side="West";
@@ -2565,8 +1540,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4209.5352,19.338074,4008.2461};
- angles[]={0,1.2144525,0};
+ position[]={4205.064,19.502888,4013.5215};
+ angles[]={0,1.2175078,6.253861};
};
side="West";
flags=6;
@@ -2574,31 +1549,11 @@ class Mission
{
isPlayable=1;
};
- id=256;
- type="B_soldier_AA_F";
- atlOffset=1.9073486e-006;
+ id=184;
+ type="B_soldier_AR_F";
class CustomAttributes
{
class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
{
property="speaker";
expression="_this setspeaker _value;";
@@ -2613,11 +1568,11 @@ class Mission
"STRING"
};
};
- value="Male02ENG";
+ value="Male01ENG";
};
};
};
- class Attribute2
+ class Attribute1
{
property="pitch";
expression="_this setpitch _value;";
@@ -2632,40 +1587,20 @@ class Mission
"SCALAR"
};
};
- value=1.05;
- };
- };
- };
- class Attribute3
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
+ value=0.99000001;
};
};
};
- nAttributes=4;
+ nAttributes=2;
};
};
};
class Attributes
{
};
- id=107;
- atlOffset=1.9073486e-006;
+ id=101;
};
- class Item26
+ class Item20
{
dataType="Group";
side="West";
@@ -2677,18 +1612,18 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4210.04,19.29841,4006.6851};
- angles[]={0,1.2144699,0};
+ position[]={4205.6313,19.484369,4011.8452};
+ angles[]={6.2805333,1.2175078,6.253861};
};
side="West";
flags=6;
class Attributes
{
isPlayable=1;
- };
- id=260;
- type="B_Sharpshooter_F";
- atlOffset=1.9073486e-006;
+ };
+ id=185;
+ type="B_soldier_AT_F";
+ atlOffset=-1.9073486e-006;
class CustomAttributes
{
class Attribute0
@@ -2706,7 +1641,7 @@ class Mission
"STRING"
};
};
- value="Male08ENG";
+ value="Male12ENG";
};
};
};
@@ -2736,10 +1671,10 @@ class Mission
class Attributes
{
};
- id=109;
- atlOffset=1.9073486e-006;
+ id=103;
+ atlOffset=-1.9073486e-006;
};
- class Item27
+ class Item21
{
dataType="Group";
side="West";
@@ -2751,8 +1686,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4210.6108,19.249872,4005.011};
- angles[]={0,1.2144699,0};
+ position[]={4206.1445,19.465431,4010.3875};
+ angles[]={6.2805333,1.2175078,6.253861};
};
side="West";
flags=6;
@@ -2760,8 +1695,9 @@ class Mission
{
isPlayable=1;
};
- id=261;
- type="B_Sharpshooter_F";
+ id=186;
+ type="B_soldier_AT_F";
+ atlOffset=-1.9073486e-006;
class CustomAttributes
{
class Attribute0
@@ -2779,7 +1715,7 @@ class Mission
"STRING"
};
};
- value="Male08ENG";
+ value="Male11ENG";
};
};
};
@@ -2798,7 +1734,7 @@ class Mission
"SCALAR"
};
};
- value=1;
+ value=1.02;
};
};
};
@@ -2809,9 +1745,10 @@ class Mission
class Attributes
{
};
- id=111;
+ id=105;
+ atlOffset=-1.9073486e-006;
};
- class Item28
+ class Item22
{
dataType="Group";
side="West";
@@ -2823,24 +1760,24 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4203.8584,19.552221,4018.7021};
- angles[]={0,1.2144552,0};
+ position[]={4206.7109,19.449001,4008.7114};
+ angles[]={6.2618566,1.2175078,6.2458687};
};
side="West";
- flags=7;
+ flags=6;
class Attributes
{
isPlayable=1;
};
- id=114;
- type="B_Soldier_F";
- atlOffset=-3.8146973e-006;
+ id=187;
+ type="B_soldier_AA_F";
+ atlOffset=1.9073486e-006;
class CustomAttributes
{
class Attribute0
{
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
+ property="speaker";
+ expression="_this setspeaker _value;";
class Value
{
class data
@@ -2849,10 +1786,10 @@ class Mission
{
type[]=
{
- "BOOL"
+ "STRING"
};
};
- value=0;
+ value="Male02ENG";
};
};
};
@@ -2871,40 +1808,21 @@ class Mission
"SCALAR"
};
};
- value=1;
- };
- };
- };
- class Attribute2
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
+ value=1.05;
};
};
};
- nAttributes=3;
+ nAttributes=2;
};
};
};
class Attributes
{
};
- id=113;
- atlOffset=-3.8146973e-006;
+ id=107;
+ atlOffset=1.9073486e-006;
};
- class Item29
+ class Item23
{
dataType="Group";
side="West";
@@ -2916,23 +1834,24 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4204.375,19.535097,4017.2998};
- angles[]={0,1.2144552,0};
+ position[]={4207.2109,19.397018,4007.1497};
+ angles[]={6.2618566,1.2175078,6.2458687};
};
side="West";
- flags=7;
+ flags=6;
class Attributes
{
isPlayable=1;
};
- id=116;
- type="B_Soldier_F";
+ id=226;
+ type="B_soldier_UAV_F";
+ atlOffset=1.9073486e-006;
class CustomAttributes
{
class Attribute0
{
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
+ property="speaker";
+ expression="_this setspeaker _value;";
class Value
{
class data
@@ -2941,10 +1860,10 @@ class Mission
{
type[]=
{
- "BOOL"
+ "STRING"
};
};
- value=0;
+ value="Male08ENG";
};
};
};
@@ -2963,39 +1882,21 @@ class Mission
"SCALAR"
};
};
- value=0.95999998;
- };
- };
- };
- class Attribute2
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
+ value=1.03;
};
};
};
- nAttributes=3;
+ nAttributes=2;
};
};
};
class Attributes
{
};
- id=115;
+ id=109;
+ atlOffset=1.9073486e-006;
};
- class Item30
+ class Item24
{
dataType="Group";
side="West";
@@ -3007,23 +1908,23 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4204.9468,19.511341,4015.573};
- angles[]={0,1.2144552,0};
+ position[]={4207.7773,19.342335,4005.4734};
+ angles[]={6.2618566,1.2175078,6.253859};
};
side="West";
- flags=7;
+ flags=6;
class Attributes
{
isPlayable=1;
};
- id=118;
- type="B_Soldier_F";
+ id=227;
+ type="B_soldier_UAV_F";
class CustomAttributes
{
class Attribute0
{
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
+ property="speaker";
+ expression="_this setspeaker _value;";
class Value
{
class data
@@ -3032,10 +1933,10 @@ class Mission
{
type[]=
{
- "BOOL"
+ "STRING"
};
};
- value=0;
+ value="Male08ENG";
};
};
};
@@ -3054,39 +1955,20 @@ class Mission
"SCALAR"
};
};
- value=0.95999998;
- };
- };
- };
- class Attribute2
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
+ value=1;
};
};
};
- nAttributes=3;
+ nAttributes=2;
};
};
};
class Attributes
{
};
- id=117;
+ id=111;
};
- class Item31
+ class Item25
{
dataType="Group";
side="West";
@@ -3098,24 +1980,23 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4205.519,19.489536,4013.8979};
- angles[]={0,1.2144552,0};
+ position[]={4201.0654,19.578306,4019.186};
+ angles[]={6.2778587,1.2175078,6.2751846};
};
side="West";
- flags=7;
+ flags=6;
class Attributes
{
isPlayable=1;
};
- id=120;
- type="B_Soldier_F";
- atlOffset=-3.8146973e-006;
+ id=228;
+ type="B_W_Soldier_CBRN_F";
class CustomAttributes
{
class Attribute0
{
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
+ property="speaker";
+ expression="_this setspeaker _value;";
class Value
{
class data
@@ -3124,10 +2005,10 @@ class Mission
{
type[]=
{
- "BOOL"
+ "STRING"
};
};
- value=0;
+ value="Male05ENG";
};
};
};
@@ -3146,40 +2027,20 @@ class Mission
"SCALAR"
};
};
- value=0.97000003;
- };
- };
- };
- class Attribute2
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
+ value=1;
};
};
};
- nAttributes=3;
+ nAttributes=2;
};
};
};
class Attributes
{
};
- id=119;
- atlOffset=-3.8146973e-006;
+ id=113;
};
- class Item32
+ class Item26
{
dataType="Group";
side="West";
@@ -3191,24 +2052,23 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4206.125,19.470091,4011.9248};
- angles[]={0,1.2144552,0};
+ position[]={4201.6323,19.55757,4017.5098};
+ angles[]={6.2698579,1.2175078,0};
};
side="West";
- flags=7;
+ flags=6;
class Attributes
{
isPlayable=1;
};
- id=122;
- type="B_Soldier_F";
- atlOffset=-3.8146973e-006;
+ id=229;
+ type="B_W_Soldier_CBRN_F";
class CustomAttributes
{
class Attribute0
{
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
+ property="speaker";
+ expression="_this setspeaker _value;";
class Value
{
class data
@@ -3217,10 +2077,10 @@ class Mission
{
type[]=
{
- "BOOL"
+ "STRING"
};
};
- value=0;
+ value="Male06ENG";
};
};
};
@@ -3239,40 +2099,110 @@ class Mission
"SCALAR"
};
};
- value=0.99000001;
- };
- };
- };
- class Attribute2
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
+ value=0.95999998;
};
};
};
- nAttributes=3;
+ nAttributes=2;
+ };
+ };
+ };
+ class Attributes
+ {
+ };
+ id=115;
+ };
+ class Item27
+ {
+ dataType="Group";
+ side="West";
+ class Entities
+ {
+ items=1;
+ class Item0
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4202.145,19.541439,4016.0522};
+ angles[]={0,1.2175078,0};
+ };
+ side="West";
+ flags=7;
+ class Attributes
+ {
+ isPlayable=1;
+ };
+ id=118;
+ type="B_Sharpshooter_F";
+ };
+ };
+ class Attributes
+ {
+ };
+ id=117;
+ };
+ class Item28
+ {
+ dataType="Group";
+ side="West";
+ class Entities
+ {
+ items=1;
+ class Item0
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4202.7119,19.541439,4014.3762};
+ angles[]={0,1.2175078,0};
+ };
+ side="West";
+ flags=7;
+ class Attributes
+ {
+ isPlayable=1;
+ };
+ id=120;
+ type="B_Sharpshooter_F";
+ };
+ };
+ class Attributes
+ {
+ };
+ id=119;
+ };
+ class Item29
+ {
+ dataType="Group";
+ side="West";
+ class Entities
+ {
+ items=1;
+ class Item0
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4203.2607,19.538475,4012.761};
+ angles[]={0,1.2175078,0};
+ };
+ side="West";
+ flags=7;
+ class Attributes
+ {
+ isPlayable=1;
};
+ id=122;
+ type="B_Soldier_F";
};
};
class Attributes
{
};
id=121;
- atlOffset=-3.8146973e-006;
};
- class Item33
+ class Item30
{
dataType="Group";
side="West";
@@ -3284,8 +2214,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4206.75,19.44743,4010.2998};
- angles[]={0,1.2144552,0};
+ position[]={4203.8271,19.546366,4011.0847};
+ angles[]={0,1.2175078,0};
};
side="West";
flags=7;
@@ -3295,77 +2225,14 @@ class Mission
};
id=124;
type="B_Soldier_F";
- atlOffset=-3.8146973e-006;
- class CustomAttributes
- {
- class Attribute0
- {
- property="ace_isHandcuffed";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleHandcuffed}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- class Attribute1
- {
- property="pitch";
- expression="_this setpitch _value;";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "SCALAR"
- };
- };
- value=1.03;
- };
- };
- };
- class Attribute2
- {
- property="ace_isSurrendered";
- expression="if (_value) then {[objNull, [_this], true] call ace_captives_fnc_moduleSurrender}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "BOOL"
- };
- };
- value=0;
- };
- };
- };
- nAttributes=3;
- };
};
};
class Attributes
{
};
id=123;
- atlOffset=-3.8146973e-006;
};
- class Item34
+ class Item31
{
dataType="Group";
side="West";
@@ -3377,8 +2244,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4207.1621,19.432291,4009.155};
- angles[]={0,1.2144643,0};
+ position[]={4204.3403,19.534981,4009.6272};
+ angles[]={0,1.2175078,0};
};
side="West";
flags=7;
@@ -3388,16 +2255,14 @@ class Mission
};
id=126;
type="B_Soldier_F";
- atlOffset=-5.7220459e-006;
};
};
class Attributes
{
};
id=125;
- atlOffset=-5.7220459e-006;
};
- class Item35
+ class Item32
{
dataType="Group";
side="West";
@@ -3409,8 +2274,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4207.7329,19.386436,4007.4795};
- angles[]={0,1.2144643,0};
+ position[]={4204.9063,19.500166,4007.9512};
+ angles[]={0,1.2175078,0};
};
side="West";
flags=7;
@@ -3420,16 +2285,16 @@ class Mission
};
id=128;
type="B_Soldier_F";
- atlOffset=-3.8146973e-006;
+ atlOffset=1.9073486e-006;
};
};
class Attributes
{
};
id=127;
- atlOffset=-3.8146973e-006;
+ atlOffset=1.9073486e-006;
};
- class Item36
+ class Item33
{
dataType="Group";
side="West";
@@ -3441,8 +2306,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4208.2378,19.338343,4005.9192};
- angles[]={0,1.2144643,0};
+ position[]={4205.4067,19.428076,4006.3896};
+ angles[]={0,1.2175078,0};
};
side="West";
flags=7;
@@ -3452,16 +2317,14 @@ class Mission
};
id=130;
type="B_Soldier_F";
- atlOffset=5.7220459e-006;
};
};
class Attributes
{
};
id=129;
- atlOffset=5.7220459e-006;
};
- class Item37
+ class Item34
{
dataType="Group";
side="West";
@@ -3473,8 +2336,8 @@ class Mission
dataType="Object";
class PositionInfo
{
- position[]={4208.8101,19.29657,4004.2451};
- angles[]={0,1.2144643,0};
+ position[]={4205.9727,19.353239,4004.7134};
+ angles[]={0,1.2175078,0};
};
side="West";
flags=7;
@@ -3484,32 +2347,46 @@ class Mission
};
id=132;
type="B_Soldier_F";
+ atlOffset=-1.9073486e-006;
};
};
class Attributes
{
};
id=131;
+ atlOffset=-1.9073486e-006;
};
- class Item38
+ class Item35
+ {
+ dataType="Logic";
+ class PositionInfo
+ {
+ position[]={4203.4429,19.608423,4027.6301};
+ angles[]={0.010664274,1.7987723,6.2511988};
+ };
+ name="btc_hc_1";
+ isPlayable=1;
+ id=153;
+ type="HeadlessClient_F";
+ };
+ class Item36
{
dataType="Object";
class PositionInfo
{
- position[]={4265.0215,22.082785,3986.5215};
- angles[]={6.2698536,3.7083344,0.079830162};
+ position[]={4324.4912,25.521086,3989.5818};
+ angles[]={6.2618566,5.0764017,0.013332055};
};
side="Empty";
flags=4;
class Attributes
{
skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true];";
- name="btc_veh_1";
+ name="btc_helo_1";
};
- id=213;
- type="RHS_M2A3_wd";
- atlOffset=-0.16319084;
+ id=156;
+ type="B_Heli_Transport_03_F";
+ atlOffset=-0.002538681;
class CustomAttributes
{
class Attribute0
@@ -3527,20 +2404,20 @@ class Mission
"STRING"
};
};
- value="[[[[""rhs_weap_m4_carryhandle_pmag"",""rhs_weap_fgm148"",""FirstAidKit"",""Medikit""],[4,2,10,2]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhsusf_100Rnd_762x51"",""rhs_fgm148_magazine_AT"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[75,11,11,4,20,8,4,10,4,4,10]],[[""ToolKit""],[1]],[[""rhsusf_falconii""],[8]]],false]";
+ value="[[[[""FirstAidKit"",""Medikit""],[10,1]],[[],[]],[[""ToolKit""],[1]],[[""B_Parachute""],[20]]],false]";
};
};
};
nAttributes=1;
};
};
- class Item39
+ class Item37
{
dataType="Object";
class PositionInfo
{
- position[]={4213.5605,20.973347,3988.6531};
- angles[]={6.2007008,0.836833,0.0053407075};
+ position[]={4303.5229,24.441528,3962.5347};
+ angles[]={0.0053265258,3.5745981,0.015998369};
};
side="Empty";
flags=4;
@@ -3548,16 +2425,17 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_7";
+ name="btc_veh_14";
};
- id=214;
- type="rhsusf_m1025_w_m2";
+ id=174;
+ type="B_Heli_Transport_01_camo_F";
+ atlOffset=-0.00088119507;
class CustomAttributes
{
class Attribute0
{
- property="rhs_decalMask";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}";
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
class Value
{
class data
@@ -3569,33 +2447,14 @@ class Mission
"STRING"
};
};
- value="NoChange";
+ value="[[[[""arifle_MXC_F"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""SmokeShell"",""SmokeShellBlue"",""30Rnd_65x39_caseless_mag""],[2,2,4]],[[""ToolKit"",""ItemGPS""],[1,1]],[[""B_Parachute""],[8]]],false]";
};
};
};
class Attribute1
{
- property="rhs_decalDoors";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="NoChange";
- };
- };
- };
- class Attribute2
- {
- property="ammoBox";
- expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ property="ace_fastroping_equipFRIES";
+ expression="if (_value) then {[_this] call ace_fastroping_fnc_equipFRIES}";
class Value
{
class data
@@ -3604,23 +2463,23 @@ class Mission
{
type[]=
{
- "STRING"
+ "BOOL"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]";
+ value=0;
};
};
};
- nAttributes=3;
+ nAttributes=2;
};
};
- class Item40
+ class Item38
{
dataType="Object";
class PositionInfo
{
- position[]={4219.061,20.742113,3984.6533};
- angles[]={6.2405472,0.43331289,0.010663962};
+ position[]={4339.3516,25.185259,3954.3325};
+ angles[]={0,3.5745981,0.023993526};
};
side="Empty";
flags=4;
@@ -3628,51 +2487,14 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_2";
+ name="btc_veh_10";
};
- id=215;
- type="rhsusf_m1025_w_m2";
+ id=175;
+ type="B_Heli_Attack_01_dynamicLoadout_F";
+ atlOffset=-0.0016689301;
class CustomAttributes
{
class Attribute0
- {
- property="rhs_decalMask";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="NoChange";
- };
- };
- };
- class Attribute1
- {
- property="rhs_decalDoors";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}";
- class Value
- {
- class data
- {
- class type
- {
- type[]=
- {
- "STRING"
- };
- };
- value="NoChange";
- };
- };
- };
- class Attribute2
{
property="ammoBox";
expression="[_this,_value] call bis_fnc_initAmmoBox;";
@@ -3687,38 +2509,37 @@ class Mission
"STRING"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]";
+ value="[[[[""arifle_MXC_F"",""FirstAidKit""],[2,2]],[[""SmokeShell"",""SmokeShellBlue"",""30Rnd_65x39_caseless_mag""],[2,2,4]],[[""ToolKit"",""ItemGPS""],[1,1]],[[""B_Parachute""],[2]]],false]";
};
};
};
- nAttributes=3;
+ nAttributes=1;
};
};
- class Item41
+ class Item39
{
dataType="Object";
class PositionInfo
{
- position[]={4224.6836,20.637239,3981.2756};
- angles[]={6.2272477,0.45174354,0.0079936078};
+ position[]={4261.6221,23.831339,3877.7671};
+ angles[]={6.2591896,4.7112999,0.024003461};
};
side="Empty";
flags=4;
class Attributes
{
- skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_3";
+ init="call{this setVariable ['bin_deconshower_disableAction',true];}";
+ name="btc_bigShower";
};
- id=216;
- type="rhsusf_m1025_w_m2";
- atlOffset=1.9073486e-006;
+ id=200;
+ type="DeconShower_02_F";
+ atlOffset=-0.011005402;
class CustomAttributes
{
class Attribute0
{
- property="rhs_decalMask";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}";
+ property="Decon_Shower_DisableUserActions";
+ expression="if(_value)then{_this setVariable ['bin_deconshower_disableAction',true]};";
class Value
{
class data
@@ -3727,17 +2548,17 @@ class Mission
{
type[]=
{
- "STRING"
+ "BOOL"
};
};
- value="NoChange";
+ value=0;
};
};
};
class Attribute1
{
- property="rhs_decalDoors";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}";
+ property="Decon_Shower";
+ expression="if(_value)then{[_this,5.4,4,2,true] spawn bin_fnc_deconShowerAnimLarge;};";
class Value
{
class data
@@ -3746,14 +2567,122 @@ class Mission
{
type[]=
{
- "STRING"
+ "BOOL"
};
};
- value="NoChange";
+ value=0;
};
};
};
- class Attribute2
+ nAttributes=2;
+ };
+ };
+ class Item40
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4261.5,20.346003,3877.5};
+ angles[]={6.2591896,4.7112999,0.02399601};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ };
+ id=203;
+ type="Tarp_01_Large_Black_F";
+ };
+ class Item41
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4263.5,20.663441,3872.25};
+ angles[]={6.2805109,5.4094319,0.018663859};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ };
+ id=213;
+ type="RoadCone_L_F";
+ atlOffset=-6.1035156e-005;
+ };
+ class Item42
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4260,20.590109,3872.25};
+ angles[]={6.2751846,5.4094319,0.02399601};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ };
+ id=214;
+ type="RoadCone_L_F";
+ atlOffset=-0.00011634827;
+ };
+ class Item43
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4263.25,20.986116,3883};
+ angles[]={6.2671871,5.4094319,0.087773547};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ };
+ id=215;
+ type="RoadCone_L_F";
+ atlOffset=-0.0013942719;
+ };
+ class Item44
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4260.25,20.758129,3883.25};
+ angles[]={0.0053377044,5.4094319,0.06656827};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ };
+ id=216;
+ type="RoadCone_L_F";
+ atlOffset=-0.00078582764;
+ };
+ class Item45
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4264.5,22.915401,3982.5};
+ angles[]={6.2751846,3.9608302,0.087773547};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true];";
+ name="btc_veh_1";
+ };
+ id=232;
+ type="B_T_APC_Wheeled_01_cannon_F";
+ atlOffset=-0.0098495483;
+ class CustomAttributes
+ {
+ class Attribute0
{
property="ammoBox";
expression="[_this,_value] call bis_fnc_initAmmoBox;";
@@ -3768,20 +2697,20 @@ class Mission
"STRING"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""MiniGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""Titan_AT"",""Titan_AP"",""Titan_AA""],[12,6,6,6,6,3,3,3,3,8,8,8,8,2,2,2]],[[],[]],[[],[]]],false]";
};
};
};
- nAttributes=3;
+ nAttributes=1;
};
};
- class Item42
+ class Item46
{
dataType="Object";
class PositionInfo
{
- position[]={4242.1729,20.918491,3972.4004};
- angles[]={6.251193,0.4537856,0.14301229};
+ position[]={4259.5957,22.704597,3987.4392};
+ angles[]={0,3.8548572,0.082478598};
};
side="Empty";
flags=4;
@@ -3789,16 +2718,17 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_4";
+ name="btc_veh_5";
};
- id=217;
- type="rhsusf_m1025_w_m2";
+ id=233;
+ type="B_T_MRAP_01_hmg_F";
+ atlOffset=-0.01962471;
class CustomAttributes
{
class Attribute0
{
- property="rhs_decalMask";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}";
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
class Value
{
class data
@@ -3810,14 +2740,38 @@ class Mission
"STRING"
};
};
- value="NoChange";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue""],[16,6,10,10,4,4,4,4,12,4,4,4,4]],[[],[]],[[],[]]],false]";
};
};
};
- class Attribute1
+ nAttributes=1;
+ };
+ };
+ class Item47
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4255.0957,22.370762,3990.4468};
+ angles[]={6.2671871,3.7254124,0.058600098};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_6";
+ };
+ id=234;
+ type="B_T_MRAP_01_hmg_F";
+ atlOffset=-0.012031555;
+ class CustomAttributes
+ {
+ class Attribute0
{
- property="rhs_decalDoors";
- expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}";
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
class Value
{
class data
@@ -3829,11 +2783,35 @@ class Mission
"STRING"
};
};
- value="NoChange";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue""],[16,6,10,10,4,4,4,4,12,4,4,4,4]],[[],[]],[[],[]]],false]";
};
};
};
- class Attribute2
+ nAttributes=1;
+ };
+ };
+ class Item48
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4249.1157,21.364624,3994.2046};
+ angles[]={0.0026520467,3.6889343,0.093063653};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_7";
+ };
+ id=237;
+ type="B_T_LSV_01_armed_F";
+ atlOffset=-0.023923874;
+ class CustomAttributes
+ {
+ class Attribute0
{
property="ammoBox";
expression="[_this,_value] call bis_fnc_initAmmoBox;";
@@ -3848,31 +2826,32 @@ class Mission
"STRING"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]";
};
};
};
- nAttributes=3;
+ nAttributes=1;
};
};
- class Item43
+ class Item49
{
dataType="Object";
class PositionInfo
{
- position[]={4248.0615,21.338169,3969.1675};
- angles[]={0.045302324,0.4537856,0.10890055};
+ position[]={4235.5518,21.07881,4001.5029};
+ angles[]={0.0026520467,3.5902662,0.010664274};
};
side="Empty";
flags=4;
class Attributes
{
+ skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_15";
+ name="btc_veh_2";
};
- id=241;
- type="rhsusf_M1078A1P2_B_WD_fmtv_usarmy";
- atlOffset=-0.27951813;
+ id=238;
+ type="B_T_LSV_01_armed_F";
+ atlOffset=-0.016025543;
class CustomAttributes
{
class Attribute0
@@ -3890,20 +2869,20 @@ class Mission
"STRING"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit""],[2,4]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[10,2,2,2,4]],[[""ToolKit""],[1]],[[""rhsusf_falconii""],[1]]],false]";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]";
};
};
};
nAttributes=1;
};
};
- class Item44
+ class Item50
{
dataType="Object";
class PositionInfo
{
- position[]={4233.0352,21.638979,3999.2959};
- angles[]={0,3.3611374,0.0079936078};
+ position[]={4240.5957,21.096165,3998.999};
+ angles[]={6.2698536,3.6248398,0.021328852};
};
side="Empty";
flags=4;
@@ -3911,11 +2890,11 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_8";
+ name="btc_veh_3";
};
- id=244;
- type="rhsusf_M1078A1P2_B_M2_WD_open_fmtv_usarmy";
- atlOffset=3.8146973e-006;
+ id=239;
+ type="B_T_LSV_01_armed_F";
+ atlOffset=-0.056703568;
class CustomAttributes
{
class Attribute0
@@ -3933,20 +2912,20 @@ class Mission
"STRING"
};
};
- value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]";
};
};
};
nAttributes=1;
};
};
- class Item45
+ class Item51
{
dataType="Object";
class PositionInfo
{
- position[]={4240.4561,21.697552,3995.7307};
- angles[]={6.2805324,3.3253233,0.016004669};
+ position[]={4245.0928,21.241991,3996.6523};
+ angles[]={6.2698536,3.6488891,0.037314966};
};
side="Empty";
flags=4;
@@ -3954,11 +2933,11 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_9";
+ name="btc_veh_4";
};
- id=245;
- type="rhsusf_M1078A1P2_B_M2_WD_open_fmtv_usarmy";
- atlOffset=3.8146973e-006;
+ id=240;
+ type="B_T_LSV_01_armed_F";
+ atlOffset=-0.0080337524;
class CustomAttributes
{
class Attribute0
@@ -3976,33 +2955,20 @@ class Mission
"STRING"
};
};
- value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]";
};
};
};
nAttributes=1;
};
};
- class Item46
- {
- dataType="Logic";
- class PositionInfo
- {
- position[]={4206.125,19.548992,4027.375};
- angles[]={6.2805109,0,6.2618566};
- };
- name="btc_hc_1";
- isPlayable=1;
- id=246;
- type="HeadlessClient_F";
- };
- class Item47
+ class Item52
{
dataType="Object";
class PositionInfo
{
- position[]={4230.4194,19.875408,3979.3396};
- angles[]={6.2352238,0.38933057,0.0079936078};
+ position[]={4265.3164,22.575714,3970.8711};
+ angles[]={6.2725158,3.2976959,0.063913256};
};
side="Empty";
flags=4;
@@ -4010,11 +2976,11 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_6";
+ name="btc_veh_8";
};
- id=247;
- type="rhsusf_M1237_M2_usarmy_wd";
- atlOffset=-0.036031723;
+ id=241;
+ type="B_T_Truck_01_transport_F";
+ atlOffset=-0.049983978;
class CustomAttributes
{
class Attribute0
@@ -4032,32 +2998,30 @@ class Mission
"STRING"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]";
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
};
};
};
nAttributes=1;
};
};
- class Item48
+ class Item53
{
dataType="Object";
class PositionInfo
{
- position[]={4235.7686,19.755186,3975.4988};
- angles[]={6.1980653,0.46773079,0.071872659};
+ position[]={4250.3638,22.626858,3965.2366};
+ angles[]={0.087773547,0.7540167,0.050624419};
};
side="Empty";
flags=4;
class Attributes
{
- skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_5";
+ name="btc_veh_15";
};
- id=248;
- type="rhsusf_M1237_M2_usarmy_wd";
- atlOffset=-0.03014183;
+ id=243;
+ type="B_T_Truck_01_flatbed_F";
class CustomAttributes
{
class Attribute0
@@ -4075,36 +3039,38 @@ class Mission
"STRING"
};
};
- value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]";
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
};
};
};
nAttributes=1;
};
};
- class Item49
+ class Item54
{
dataType="Object";
class PositionInfo
{
- position[]={4262.375,24.223763,3880.0532};
- angles[]={6.2166181,1.6537119,0.066715054};
+ position[]={4245.1362,21.351154,3968.5237};
+ angles[]={0.029324362,0.6698088,0.12468291};
};
side="Empty";
+ flags=4;
class Attributes
{
- init="call{this setVariable ['bin_deconshower_disableAction',true];}";
- name="btc_bigShower";
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_9";
};
- id=264;
- type="DeconShower_02_F";
- atlOffset=0.25780678;
+ id=244;
+ type="B_T_Truck_01_transport_F";
+ atlOffset=-0.039049149;
class CustomAttributes
{
class Attribute0
{
- property="Decon_Shower_DisableUserActions";
- expression="if(_value)then{_this setVariable ['bin_deconshower_disableAction',true]};";
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
class Value
{
class data
@@ -4113,17 +3079,41 @@ class Mission
{
type[]=
{
- "BOOL"
+ "STRING"
};
};
- value=0;
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
};
};
};
- class Attribute1
+ nAttributes=1;
+ };
+ };
+ class Item55
+ {
+ dataType="Object";
+ class PositionInfo
+ {
+ position[]={4249.3608,22.590536,3935.8831};
+ angles[]={0.0053265258,1.7390807,0.029324362};
+ };
+ side="Empty";
+ flags=4;
+ class Attributes
+ {
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_13";
+ };
+ id=245;
+ type="B_T_Truck_01_Repair_F";
+ atlOffset=-0.01051712;
+ class CustomAttributes
+ {
+ class Attribute0
{
- property="Decon_Shower";
- expression="if(_value)then{[_this,5.4,4,2,true] spawn bin_fnc_deconShowerAnimLarge;};";
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
class Value
{
class data
@@ -4132,107 +3122,66 @@ class Mission
{
type[]=
{
- "BOOL"
+ "STRING"
};
};
- value=0;
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
};
};
};
- nAttributes=2;
- };
- };
- class Item50
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4262.125,20.75,3880.25};
- angles[]={6.2166171,1.6537119,0.06656827};
- };
- side="Empty";
- class Attributes
- {
- };
- id=265;
- type="Tarp_01_Large_Black_F";
- atlOffset=0.27495766;
- };
- class Item51
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4261.4287,20.865213,3885.4128};
- angles[]={6.2698536,2.3518438,0.087774232};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
- };
- id=266;
- type="RoadCone_L_F";
- atlOffset=0.0019683838;
- };
- class Item52
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4264.2207,21.110762,3885.376};
- angles[]={6.2378831,2.3518438,0.063913256};
- };
- side="Empty";
- flags=4;
- class Attributes
- {
+ nAttributes=1;
};
- id=267;
- type="RoadCone_L_F";
- atlOffset=0.0019683838;
};
- class Item53
+ class Item56
{
dataType="Object";
class PositionInfo
{
- position[]={4260.7344,20.633039,3874.8884};
- angles[]={6.2671871,2.3518438,0.018663859};
+ position[]={4248.1382,22.161657,3930.3477};
+ angles[]={0.095706634,1.7390807,0.095706634};
};
side="Empty";
flags=4;
class Attributes
{
+ skill=0.60000002;
+ init="this setVariable [""btc_dont_delete"",true]";
+ name="btc_veh_12";
};
- id=268;
- type="RoadCone_L_F";
- atlOffset=0.0019683838;
- };
- class Item54
- {
- dataType="Object";
- class PositionInfo
- {
- position[]={4263.5259,20.689226,3874.708};
- angles[]={6.2618566,2.3518438,0.02399601};
- };
- side="Empty";
- flags=4;
- class Attributes
+ id=246;
+ type="B_T_Truck_01_fuel_F";
+ atlOffset=-0.039800644;
+ class CustomAttributes
{
+ class Attribute0
+ {
+ property="ammoBox";
+ expression="[_this,_value] call bis_fnc_initAmmoBox;";
+ class Value
+ {
+ class data
+ {
+ class type
+ {
+ type[]=
+ {
+ "STRING"
+ };
+ };
+ value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ };
+ };
+ };
+ nAttributes=1;
};
- id=269;
- type="RoadCone_L_F";
- atlOffset=0.0019664764;
};
- class Item55
+ class Item57
{
dataType="Object";
class PositionInfo
{
- position[]={4244.0801,23.078144,3912.1277};
- angles[]={0.016004669,1.6752368,0.14041173};
+ position[]={4246.8911,22.124918,3924.3018};
+ angles[]={0.039977662,1.7390807,0.12730782};
};
side="Empty";
flags=4;
@@ -4240,11 +3189,11 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_16";
+ name="btc_veh_11";
};
- id=270;
- type="B_T_Truck_01_flatbed_F";
- atlOffset=0.0030002594;
+ id=247;
+ type="B_T_Truck_01_ammo_F";
+ atlOffset=-0.077253342;
class CustomAttributes
{
class Attribute0
@@ -4269,13 +3218,13 @@ class Mission
nAttributes=1;
};
};
- class Item56
+ class Item58
{
dataType="Object";
class PositionInfo
{
- position[]={4245.2197,22.181526,3918.3215};
- angles[]={0.0079936078,1.6752368,0.090425514};
+ position[]={4246.1084,22.954084,3918.2583};
+ angles[]={0.058599081,1.7390807,0.090419561};
};
side="Empty";
flags=4;
@@ -4283,11 +3232,11 @@ class Mission
{
skill=0.60000002;
init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_11";
+ name="btc_veh_16";
};
- id=271;
- type="B_T_Truck_01_ammo_F";
- atlOffset=-0.020999908;
+ id=248;
+ type="B_T_Truck_01_flatbed_F";
+ atlOffset=-0.10356903;
class CustomAttributes
{
class Attribute0
@@ -4312,25 +3261,24 @@ class Mission
nAttributes=1;
};
};
- class Item57
+ class Item59
{
dataType="Object";
class PositionInfo
{
- position[]={4245.75,21.9953,3924.8745};
- angles[]={0.021327924,1.6752368,0.14563027};
+ position[]={4245.4639,22.709036,3910.6943};
+ angles[]={0,1.7008055,0.034652505};
};
side="Empty";
flags=4;
class Attributes
{
- skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_12";
+ init="call{this setVariable [""btc_dont_delete"",true]}";
+ name="btc_veh_17";
};
- id=272;
- type="B_T_Truck_01_fuel_F";
- atlOffset=-0.020999908;
+ id=249;
+ type="B_T_Truck_01_medical_F";
+ atlOffset=-0.013309479;
class CustomAttributes
{
class Attribute0
@@ -4355,25 +3303,24 @@ class Mission
nAttributes=1;
};
};
- class Item58
+ class Item60
{
dataType="Object";
class PositionInfo
{
- position[]={4246.6548,22.44046,3930.334};
- angles[]={0.095713861,1.6752368,0.095713861};
+ position[]={4245.9893,23.198921,3903.3372};
+ angles[]={6.2805333,1.6641712,0.0026520467};
};
side="Empty";
flags=4;
class Attributes
{
- skill=0.60000002;
- init="this setVariable [""btc_dont_delete"",true]";
- name="btc_veh_13";
+ init="call{this setVariable [""btc_dont_delete"",true]}";
+ name="btc_veh_18";
};
- id=273;
- type="B_T_Truck_01_Repair_F";
- atlOffset=-0.020999908;
+ id=250;
+ type="B_T_APC_Tracked_01_CRV_F";
+ atlOffset=-0.021877289;
class CustomAttributes
{
class Attribute0
@@ -4391,7 +3338,7 @@ class Mission
"STRING"
};
};
- value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]";
+ value="[[[[""arifle_MX_F"",""arifle_MX_SW_F"",""launch_NLAW_F"",""FirstAidKit""],[2,1,1,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""MiniGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F"",""Titan_AT"",""Titan_AP"",""Titan_AA""],[24,12,6,6,6,3,3,3,3,8,8,8,8,5,2,2,2]],[[],[]],[[],[]]],false]";
};
};
};
diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/stringtable.xml b/=BTC=co@30_Hearts_and_Minds.Altis/stringtable.xml
index c965f0419..f8e29663f 100644
--- a/=BTC=co@30_Hearts_and_Minds.Altis/stringtable.xml
+++ b/=BTC=co@30_Hearts_and_Minds.Altis/stringtable.xml
@@ -10,11 +10,11 @@
心灵与智慧
- www.blacktemplars.altervista.org
- www.blacktemplars.altervista.org
- www.blacktemplars.altervista.org
- www.blacktemplars.altervista.org
- www.blacktemplars.altervista.org
+ github.com/Vdauphin/HeartsAndMinds
+ github.com/Vdauphin/HeartsAndMinds
+ github.com/Vdauphin/HeartsAndMinds
+ github.com/Vdauphin/HeartsAndMinds
+ github.com/Vdauphin/HeartsAndMinds
@@ -78,52 +78,20 @@
无头客户端与数据库
- <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> This mission automatically uses one Headless client when available.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> This mission has a database system. Enemy units, towns, hideouts, cache, objects created or static weapons assembled by players or Zeus, vehicles, players markers (not lines) on global channel are saved. All admin can save mission progress at any time with his self interaction key.
- <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> Esta mision usa automaticamente un Headless client si está disponible .<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> Esta misión tiene un sistema de base de datos. Se guardan unidades enemigas, ciudades, escondites, caché, objetos creados por jugadores o Zeus, vehículos, marcadores de jugadores (no líneas) en el canal global. Todos los administradores pueden guardar el progreso de la misión en cualquier momento con su clave de auto interacción.
- <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> Sollte ein Headless Client vorhanden sein, so wird dieser durch die Mission automatisch genutzt.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> Diese Mission verfügt über ein eingenes Datenbanksystem, in welcher folgende Dinge gespeichert werden: feindliche Einheiten, Städte, Verstecke, feindliche Waffenlager, Fahrzeuge, vom Spieler oder vom Zeus erstelle Objecte und Marker (keine Linien) vom Spieler im Globalen-Channel. Jeder Admin kann zu jeder Zeit den Missionsfortschritt über das Eigen-Interaktionsmenü speichern.
- <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> Esta missão usa automaticamente um cliente Headless quando disponível.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> Esta missão tem um sistema de banco de dados. Unidades inimigas, cidades, esconderijos, cache, objetos criados por jogadores ou Zeus, veículos, marcação de jogadores (sem linhas) no canal global são salvos. O administrador pode salvar o progresso da missão a qualquer momento usando botão de interação.
- <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> 任务将自动使用一台可用的无头客户端。<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> 本任务内置独立的数据库系统。敌方单位、城市、藏匿点、武器箱、车辆、玩家或宙斯创建的物体以及公共频道中的地图标记(不含划线标记)将被存储。每个管理员都可以通过自我互动菜单随时保存任务进度。
-
-
-
-
- Wounds
- Heridas
- Wunden
- Ferimentos
- 伤口
-
-
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\heal_ca.paa' width='20' height='20'/> Use the interaction menu to treat your wounds.<br/> Keep in mind that all the actions will be available, even if you do not need them. It is always recommended examine first.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\heal_ca.paa' width='20' height='20'/> Use the interaction menu to treat your wounds.<br/> Keep in mind that all the actions will be available, even if you do not need them. It is always recommended examine first.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\heal_ca.paa' width='20' height='20'/> Mit Hilfe des Interactionsmenü können Sie ihre und die Wunden anderer versorgen.<br/> Denken Sie daran, dass Sie immer den vollen Zugriff auf alle Aktionen haben, egal ob Sie diese benötigen oder nicht. In jedem Fall wird empfohlen zuerst eine Diagnose zu erstellen, bevor man mit der Behandlung beginnt.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\heal_ca.paa' width='20' height='20'/> Use o menu de interação para tratar suas feridas.<br/> Tenha em mente que todas as ações estarão disponíveis, mesmo que você não precise delas. É sempre recomendável examinar primeiro.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\heal_ca.paa' width='20' height='20'/> 使用互动菜单处理你的伤口。<br/> 请谨记: 无论您是否需要进行治疗, 这些操作始终可用。始终建议您在开始治疗前先进行诊断。
-
-
-
-
- Deafness
- Sordera de Combate
- Taubheit
- Surdez
- 耳鸣
-
-
- <img image='\z\ace\addons\hearing\UI\Icon_Module_Hearing_ca.paa' width='20' height='20'/> Use the earplugs to protect your ears to avoid combat deafness.<br/> You can put them on with your self interaction key.<br/><br/>
- <img image='\z\ace\addons\hearing\UI\Icon_Module_Hearing_ca.paa' width='20' height='20'/> Utilice los tapones para proteger sus oídos para evitar la sordera de combate.<br/> You can put them on with your self interaction key.<br/><br/>
- <img image='\z\ace\addons\hearing\UI\Icon_Module_Hearing_ca.paa' width='20' height='20'/> Nutzen Sie die Ohrstöpsel um sich vor Taubheit und Hörverlust zu schützen.<br/> Über das Eigen-Interaktionsmenü können Sie die Ohrstöpsel nutzen (sofern sich welche in Ihrem Inventar befinden).<br/><br/>
- <img image='\z\ace\addons\hearing\UI\Icon_Module_Hearing_ca.paa' width='20' height='20'/> Use os tampões de ouvido para proteger seus ouvidos para evitar a surdez no combate.<br/> Você pode colocá-los com seu botão de interação.<br/><br/>
- <img image='\z\ace\addons\hearing\UI\Icon_Module_Hearing_ca.paa' width='20' height='20'/> 在战斗中, 使用耳塞保护自己免受听力损失。<br/> 你可以使用自我互动菜单佩戴耳塞(前提是你在随身装备中携带了耳塞)。<br/><br/>
+ <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> This mission automatically uses one Headless client when available.<br/><br/> <img image='\a3\data_f_warlords\Data\preview_cp_transfer.jpg' width='355' height='200' /> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> This mission has a database system. Enemy units, towns, hideouts, cache, objects created or static weapons assembled by players or Zeus, vehicles, vehicle in vehicle, tag, players markers on global channel are saved. All admin can save mission progress at any time with his self interaction key.<br/><br/> <img image='\a3\data_f_mark\Images\mark_popupImage_01_ca.paa' width='355' height='200' />
+ <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> Esta mision usa automaticamente un Headless client si está disponible .<br/><br/> <img image='\a3\data_f_warlords\Data\preview_cp_transfer.jpg' width='355' height='200' /> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> Esta misión tiene un sistema de base de datos. Se guardan unidades enemigas, ciudades, escondites, caché, objetos creados por jugadores o Zeus, vehículos, marcadores de jugadores (no líneas) en el canal global. Todos los administradores pueden guardar el progreso de la misión en cualquier momento con su clave de auto interacción.<br/><br/> <img image='\a3\data_f_mark\Images\mark_popupImage_01_ca.paa' width='355' height='200' />
+ <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> Sollte ein Headless Client vorhanden sein, so wird dieser durch die Mission automatisch genutzt.<br/><br/> <img image='\a3\data_f_warlords\Data\preview_cp_transfer.jpg' width='355' height='200' /> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> Diese Mission verfügt über ein eingenes Datenbanksystem, in welcher folgende Dinge gespeichert werden: feindliche Einheiten, Städte, Verstecke, feindliche Waffenlager, Fahrzeuge, vom Spieler oder vom Zeus erstelle Objecte und Marker (keine Linien) vom Spieler im Globalen-Channel. Jeder Admin kann zu jeder Zeit den Missionsfortschritt über das Eigen-Interaktionsmenü speichern.<br/><br/> <img image='\a3\data_f_mark\Images\mark_popupImage_01_ca.paa' width='355' height='200' />
+ <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> Esta missão usa automaticamente um cliente Headless quando disponível.<br/><br/> <img image='\a3\data_f_warlords\Data\preview_cp_transfer.jpg' width='355' height='200' /> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> Esta missão tem um sistema de banco de dados. Unidades inimigas, cidades, esconderijos, cache, objetos criados por jogadores ou Zeus, veículos, marcação de jogadores (sem linhas) no canal global são salvos. O administrador pode salvar o progresso da missão a qualquer momento usando botão de interação.<br/><br/> <img image='\a3\data_f_mark\Images\mark_popupImage_01_ca.paa' width='355' height='200' />
+ <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> 任务将自动使用一台可用的无头客户端。<br/><br/> <img image='\a3\data_f_warlords\Data\preview_cp_transfer.jpg' width='355' height='200' /> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> 本任务内置独立的数据库系统。敌方单位、城市、藏匿点、武器箱、车辆、标记、玩家或宙斯创建的物体以及公共频道中的地图标记(不含划线标记)将被存储。每个管理员都可以通过自我互动菜单随时保存任务进度。<br/><br/> <img image='\a3\data_f_mark\Images\mark_popupImage_01_ca.paa' width='355' height='200' />
- <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20'/> Respawn:</marker><br/> When a vehicle is destroyed it will not respawn in base, you need to tow or lift it back to base and repair it near the logistic point (Interact with the red box). Helicopter wrecks can only be lifted. <br/> The Chinook is the only exception, it will respawn after 30 seconds. <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Rearm:</marker><br/> You can also rearm them by spawning the corresponding caliber at logistic point (Interact with the red box, select the vehicle type and caliber). Carry the ammo created and interact with the vehicle to rearm. This only works if rearming is setting on entire magazine or amount based on caliber (not for entire vehicle setting).
- <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20'/> Respawn:</marker><br/> Cuando un vehículo es destruido no va a reaparecer en la base, es necesario remolcarlo o transportarlo de vuelta a la base y repararlo cerca del punto logístico (Interactuar con la caja roja). Los destrozos de helicópteros sólo pueden ser transportados por vía aérea.. <br/> El Chinook es la única excepción, reaparecerá después de 30 segundos.. <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Rearm:</marker><br/> También puede rearmarlos generando el calibre correspondiente en el punto logístico (Interactuar con la caja roja, seleccionar el tipo y calibre del vehículo). Lleva la munición creada e interactúa con el vehículo para rearmarlo. Esto sólo funciona si el rearme se está ajustando en todo el cargador o en una cantidad basada en el calibre (no para el ajuste de todo el vehículo).
- <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20'/> Respawn:</marker><br/> Wenn ein Fahrzeug zersört wurde, wird dies nicht Respawnen. Es muss durch Abschleppen oder Anheben(Sling-Load) zum Logisik-Punkt gebracht und dort repariert werden (mit der roten Box interagieren). Wracks von Hubschraubern können nur angehoben werden (Sling-Load). <br/> Die einzigste Ausnahme hierbei ist der Chinook. Er respawnt nach 30 Sekunden. <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Aufmunitionieren:</marker><br/> Fahrzeuge können Aufmunitioniert werden, in dem man das entsprechende Kaliber am Logisik-Punk anfordert (mit der Roten Box interagieren: Fahzeug und Kaliber auswählen). Nun muss man nur noch die erstellte Munition zum Fahrzeug bringen und mit diesem interagieren um das aufmunitionieren zu beginnen.<br/>ANMERKUNG: Das funktioiert nur wenn die Aufmunitionierungseinstellung auf 'Gesamtes Magazin' oder 'Kalieberbasierte Anzahl' gestellt ist (get nicht für 'Gesamtes Fahrzeug').
- <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20'/> Respawn:</marker><br/> Quando um veículo é destruído ele não reaparecerá na base, você precisa rebocá-lo/levá-lo de volta à base e repará-lo perto do ponto logístico (Interagir com a caixa vermelha). Os destroços de helicóptero só podem ser levantados. <br/> O Chinook é a única exceção, ele reaparecerá depois de 30 segundos. <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Rearm:</marker><br/> Você também pode rearmar-los, gerando o calibre correspondente no ponto logístico (Interaja com a caixa vermelha, selecione o tipo de veículo e calibre). Leve a munição criada e interaja com o veículo para rearmar. Isso só funciona se o rearme estiver configurado em um depósito inteiro ou em um valor baseado em calibre (não para toda a configuração do veículo).
- <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20'/> 载具重生:</marker><br/> 当载具损毁时, 它不会自行在基地重生。你需要采用车辆牵引或直升机吊挂的方式将其残骸运回基地, 并在后勤点对其进行维修(与后勤点的红色箱子进行互动)。直升机的残骸只能使用吊挂的方式运输。 <br/> 支奴干(Chinook)是唯一的例外, 它会在损毁后30秒于基地重生。 <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> 弹药补给:</marker><br/> 你可以在后勤点生成对应口径的弹药, 对载具进行弹药补给。与红色箱子互动, 选择对应的载具类型及口径, 弹药箱将会生成。将生成的弹药箱搬到载具附近, 与载具互动, 即可执行补给。注意: 如需启用此功能, 需要将任务参数中的弹药补给选项设置为 "Total Magazine" 或 "Calibre Based Number" (而非 "Entire Vehicle")。
+ <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20'/> Respawn:</marker><br/> When a vehicle is destroyed it will not respawn in base, you need to tow, use vehicle in vehicle or lift it back to base and repair it near the logistic point (Interact with the red box). Helicopter wrecks can only be lifted. <br/> The Chinook is the only exception, it will respawn after 30 seconds.<br/><br/> <img image='\a3\data_f_tank\Images\Tank_contentBrowserPicture_1_co.paa' width='355' height='200' /> <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Rearm:</marker><br/> You can also rearm them by spawning the corresponding caliber at logistic point (Interact with the red box, select the vehicle type and caliber). Carry the ammo created and interact with the vehicle to rearm. This only works if rearming is setting on entire magazine or amount based on caliber (not for entire vehicle setting).<br/><br/> <img image='\a3\data_f_jets\Images\dlcbrowser_jets_loadouts_ca.paa' width='355' height='200' />
+ <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20'/> Respawn:</marker><br/> Cuando un vehículo es destruido no va a reaparecer en la base, es necesario remolcarlo o transportarlo de vuelta a la base y repararlo cerca del punto logístico (Interactuar con la caja roja). Los destrozos de helicópteros sólo pueden ser transportados por vía aérea.. <br/> El Chinook es la única excepción, reaparecerá después de 30 segundos..<br/><br/> <img image='\a3\data_f_tank\Images\Tank_contentBrowserPicture_1_co.paa' width='355' height='200' /> <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Rearm:</marker><br/> También puede rearmarlos generando el calibre correspondiente en el punto logístico (Interactuar con la caja roja, seleccionar el tipo y calibre del vehículo). Lleva la munición creada e interactúa con el vehículo para rearmarlo. Esto sólo funciona si el rearme se está ajustando en todo el cargador o en una cantidad basada en el calibre (no para el ajuste de todo el vehículo).<br/><br/> <img image='\a3\data_f_jets\Images\dlcbrowser_jets_loadouts_ca.paa' width='355' height='200' />
+ <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20'/> Respawn:</marker><br/> Wenn ein Fahrzeug zersört wurde, wird dies nicht Respawnen. Es muss durch Abschleppen oder Anheben(Sling-Load) zum Logisik-Punkt gebracht und dort repariert werden (mit der roten Box interagieren). Wracks von Hubschraubern können nur angehoben werden (Sling-Load). <br/> Die einzigste Ausnahme hierbei ist der Chinook. Er respawnt nach 30 Sekunden.<br/><br/> <img image='\a3\data_f_tank\Images\Tank_contentBrowserPicture_1_co.paa' width='355' height='200' /> <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Aufmunitionieren:</marker><br/> Fahrzeuge können Aufmunitioniert werden, in dem man das entsprechende Kaliber am Logisik-Punk anfordert (mit der Roten Box interagieren: Fahzeug und Kaliber auswählen). Nun muss man nur noch die erstellte Munition zum Fahrzeug bringen und mit diesem interagieren um das aufmunitionieren zu beginnen.<br/>ANMERKUNG: Das funktioiert nur wenn die Aufmunitionierungseinstellung auf 'Gesamtes Magazin' oder 'Kalieberbasierte Anzahl' gestellt ist (get nicht für 'Gesamtes Fahrzeug').<br/><br/> <img image='\a3\data_f_jets\Images\dlcbrowser_jets_loadouts_ca.paa' width='355' height='200' />
+ <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20'/> Respawn:</marker><br/> Quando um veículo é destruído ele não reaparecerá na base, você precisa rebocá-lo/levá-lo de volta à base e repará-lo perto do ponto logístico (Interagir com a caixa vermelha). Os destroços de helicóptero só podem ser levantados. <br/> O Chinook é a única exceção, ele reaparecerá depois de 30 segundos.<br/><br/> <img image='\a3\data_f_tank\Images\Tank_contentBrowserPicture_1_co.paa' width='355' height='200' /> <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Rearm:</marker><br/> Você também pode rearmar-los, gerando o calibre correspondente no ponto logístico (Interaja com a caixa vermelha, selecione o tipo de veículo e calibre). Leve a munição criada e interaja com o veículo para rearmar. Isso só funciona se o rearme estiver configurado em um depósito inteiro ou em um valor baseado em calibre (não para toda a configuração do veículo).<br/><br/> <img image='\a3\data_f_jets\Images\dlcbrowser_jets_loadouts_ca.paa' width='355' height='200' />
+ <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20'/> 载具重生:</marker><br/> 当载具损毁时, 它不会自行在基地重生。你需要采用车辆牵引或直升机吊挂的方式将其残骸运回基地, 并在后勤点对其进行维修(与后勤点的红色箱子进行互动)。直升机的残骸只能使用吊挂的方式运输。<br/> 支奴干(Chinook)是唯一的例外, 它会在损毁后30秒于基地重生<br/><br/> <img image='\a3\data_f_tank\Images\Tank_contentBrowserPicture_1_co.paa' width='355' height='200' />。<br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> 弹药补给:</marker><br/> 你可以在后勤点生成对应口径的弹药, 对载具进行弹药补给。与红色箱子互动, 选择对应的载具类型及口径, 弹药箱将会生成。将生成的弹药箱搬到载具附近, 与载具互动, 即可执行补给。注意: 如需启用此功能, 需要将任务参数中的弹药补给选项设置为 "Total Magazine" 或 "Calibre Based Number" (而非 "Entire Vehicle")。<br/><br/> <img image='\a3\data_f_jets\Images\dlcbrowser_jets_loadouts_ca.paa' width='355' height='200' />
@@ -135,50 +103,46 @@
支线任务
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> Side missions are really useful to raise your reputation level.<br/> A side mission can be requested by the officer with his self interaction menu.<br/> If you don't want to complete a task, assigned it to you and abort it with the self interaction menu.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> Las misiones secundarias son realmente útiles para elevar tu nivel de reputación.<br/> Una misión secundaria puede ser solicitada por el oficial con su menú de auto-interacción..<br/> Si no desea completar una tarea, siempre puede abortarla con el menú de auto-interacción.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> Nebenaufgaben sind sehr nütlich um das Ansehen in der Bevölkerung zu erhöhen.<br/>Diese Aufgaben können vom Offizier über das Eigen-Interaktionsmenü angefordert werden.<br/>Kann man eine Mission aus verschiedenen Gründen nicht abgeschlossen werden, so kann der Offizier sie jederzeit über das Eigen-Interaktionsmenü abbrechen.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> Missões secundárias são úteis para elevar o nível de reputação.<br/> Uma missão secundária pode ser solicitada pelo Oficial usando menu de interação pessoal.<br/> Se você não quiser concluir uma tarefa, poderá sempre abortá-la usando o menu de interação.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> 支线任务有利于提升声誉值。<br/> 军官(Officer)可以使用自我互动菜单申请支线任务。<br/> 军官(Officer)可以使用自我互动菜单随时取消支线任务。
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> Side missions are really useful to raise your reputation level.<br/> A side mission can be requested by the officer with his self interaction menu.<br/> If you don't want to complete a task, assigned it to you and abort it with the self interaction menu.<br/><br/> <img image='\a3\Missions_F_Beta\data\img\Challenges_overview_CA.paa' width='355' height='200' />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> Las misiones secundarias son realmente útiles para elevar tu nivel de reputación.<br/> Una misión secundaria puede ser solicitada por el oficial con su menú de auto-interacción..<br/> Si no desea completar una tarea, siempre puede abortarla con el menú de auto-interacción.<br/><br/> <img image='\a3\Missions_F_Beta\data\img\Challenges_overview_CA.paa' width='355' height='200' />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> Nebenaufgaben sind sehr nütlich um das Ansehen in der Bevölkerung zu erhöhen.<br/>Diese Aufgaben können vom Offizier über das Eigen-Interaktionsmenü angefordert werden.<br/>Kann man eine Mission aus verschiedenen Gründen nicht abgeschlossen werden, so kann der Offizier sie jederzeit über das Eigen-Interaktionsmenü abbrechen.<br/><br/> <img image='\a3\Missions_F_Beta\data\img\Challenges_overview_CA.paa' width='355' height='200' />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> Missões secundárias são úteis para elevar o nível de reputação.<br/> Uma missão secundária pode ser solicitada pelo Oficial usando menu de interação pessoal.<br/> Se você não quiser concluir uma tarefa, poderá sempre abortá-la usando o menu de interação.<br/><br/> <img image='\a3\Missions_F_Beta\data\img\Challenges_overview_CA.paa' width='355' height='200' />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> 支线任务有利于提升声誉值。<br/> 军官(Officer)可以使用自我互动菜单申请支线任务。<br/> 军官(Officer)可以使用自我互动菜单随时取消支线任务。<br/><br/> <img image='\a3\Missions_F_Beta\data\img\Challenges_overview_CA.paa' width='355' height='200' />
-
-
- FOB/Rallypoint
- FOB/集合点
-
+
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> In this mission a FOB is a forward spawn point, to create a FOB approach the red box at the logistic point and require a blue container.<br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>Deploy:</marker> <br/> Move it where you want to deploy a new FOB and interact with it to set it up. Keep in mind that you can not deploy a FOB close to the main base (2.500m) and the terrain needs to be flat.<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Dismantle:</marker> <br/> You can dismantle a FOB by interacting with the flag on the HQ roof.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>Rallypoint:</marker><br/> You can also use the Zeus rallypoint backpack available in Arsenal. Those have a limited number of respawn.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> En esta misión un FOB es un punto de respawn avanzado, para crear un FOB se aproxima a la caja roja en el punto logístico y requiere un contenedor azul.<br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>Deploy:</marker> <br/> Muévelo donde quieras desplegar un nuevo FOB e interactúa con él para configurarlo. Tenga en cuenta que no puede desplegar un FOB cerca de la base principal (2.500m) y el terreno debe ser plano.<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Dismantle:</marker> <br/> Puede desmontar un FOB interactuando con la bandera en el techo del HQ.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> Eine FOB (Forward Operating Base / vorgeschobene Operationsbasis) dient in dieser Mission als Spawn-Punkt. Um eine FOB zu erstellen muss am Logistikpunkt ein ensprechnender Frachtcontainer(Blau) angefordert werden<br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>Aufbau:</marker> <br/> Der Aufbau kann nur statfinden, wenn man sich mindestens 2,5km von der Basis entfernt hat und das Gelände relativ flach ist. Um den Aufbau zu beginnen: einfach mit dem Frachtcontainer interagieren und 'FOB aufbauen' auswählen.<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Abbau:</marker> <br/> Auf dem Dach der FOB kann man mit der Flagge interagieren um den Abbau zu beginnen.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>Sammelpunkt:</marker><br/> Nutzen Sie den im Arsenal erhältlichen Lager-Rucksack aus dem Zeus-DLC. Die Anzahl der Respawns bei den Sammelpunkten ist beschränkt.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> Nesta missão, uma FOB é um ponto de surgimento. Para criar uma FOB, aproxime-se da caixa vermelha no ponto logístico, solicite um container azul.<br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>Deploy:</marker> <br/> A construção só pode acontecer se você se deslocar 2.500m da FOB principal e o terreno deve ser plano. Para começar a criar a nova FOB, basta interagir com o cônteiner e selecionar: "Build FOB" (Criar FOB).<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Dismantle:</marker> <br/> No telhado da FOB, você pode interagir com a bandeira para iniciar a desmontagem da FOB.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> FOB 可作为前线复活点使用。要创建FOB, 请在后勤点申请蓝色货运集装箱。<br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>部署:</marker> <br/> 将FOB集装箱移动至部署位置并与其互动即可建造FOB。请谨记: 只有在主基地2500米范围外的地形平坦区域才能建立FOB。<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>拆除:</marker> <br/> 你可以与指挥部(HQ)屋顶的旗杆互动, 以拆除FOB。
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> In this mission a FOB is a forward spawn point, to create a FOB approach the red box at the logistic point and require a blue container.<br/><br/> <img image='\a3\data_f_warlords\Data\preview_ft_owned.jpg' width='355' height='180'/> <br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>Deploy:</marker> <br/> Move it where you want to deploy a new FOB and interact with it to set it up. Keep in mind that you can not deploy a FOB close to the main base (2.500m) and the terrain needs to be flat.<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Dismantle:</marker> <br/> You can dismantle a FOB by interacting with the flag on the HQ roof.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\wait_ca.paa' width='20' height='20' /> <marker name='blufor_base'>Rallypoint:</marker><br/> You can also use the Zeus rallypoint backpack available in Arsenal but they have some limitation. After some times or after player disconnected, rallypoint will self-destruct.<br/><br/> <img image='\A3\Data_F_Exp\Images\FeatureRespawn_co.paa' width='355' height='180'/>
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> En esta misión un FOB es un punto de respawn avanzado, para crear un FOB se aproxima a la caja roja en el punto logístico y requiere un contenedor azul.<br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>Deploy:</marker> <br/> Muévelo donde quieras desplegar un nuevo FOB e interactúa con él para configurarlo. Tenga en cuenta que no puede desplegar un FOB cerca de la base principal (2.500m) y el terreno debe ser plano.<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Dismantle:</marker> <br/> Puede desmontar un FOB interactuando con la bandera en el techo del HQ.<br/><br/> <img image='\A3\Data_F_Exp\Images\FeatureRespawn_co.paa' width='355' height='180'/>
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> Eine FOB (Forward Operating Base / vorgeschobene Operationsbasis) dient in dieser Mission als Spawn-Punkt. Um eine FOB zu erstellen muss am Logistikpunkt ein ensprechnender Frachtcontainer(Blau) angefordert werden<br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>Aufbau:</marker> <br/> Der Aufbau kann nur statfinden, wenn man sich mindestens 2,5km von der Basis entfernt hat und das Gelände relativ flach ist. Um den Aufbau zu beginnen: einfach mit dem Frachtcontainer interagieren und 'FOB aufbauen' auswählen.<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Abbau:</marker> <br/> Auf dem Dach der FOB kann man mit der Flagge interagieren um den Abbau zu beginnen.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>Sammelpunkt:</marker><br/> Nutzen Sie den im Arsenal erhältlichen Lager-Rucksack aus dem Zeus-DLC. Die Anzahl der Respawns bei den Sammelpunkten ist beschränkt.<br/><br/> <img image='\A3\Data_F_Exp\Images\FeatureRespawn_co.paa' width='355' height='180'/>
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> Nesta missão, uma FOB é um ponto de surgimento. Para criar uma FOB, aproxime-se da caixa vermelha no ponto logístico, solicite um container azul.<br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>Deploy:</marker> <br/> A construção só pode acontecer se você se deslocar 2.500m da FOB principal e o terreno deve ser plano. Para começar a criar a nova FOB, basta interagir com o cônteiner e selecionar: "Build FOB" (Criar FOB).<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Dismantle:</marker> <br/> No telhado da FOB, você pode interagir com a bandeira para iniciar a desmontagem da FOB.<br/><br/> <img image='\A3\Data_F_Exp\Images\FeatureRespawn_co.paa' width='355' height='180'/>
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB: </marker><br/> FOB 可作为前线复活点使用。要创建FOB, 请在后勤点申请蓝色货运集装箱。<br/><br/> <img image='\a3\data_f_warlords\Data\preview_ft_owned.jpg' width='355' height='180'/> <br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>部署: </marker> <br/> 将FOB集装箱移动至部署位置并与其互动即可建造FOB。请谨记: 只有在主基地2500米范围外的地形平坦区域才能建立FOB。<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>拆除: </marker> <br/> 你可以与指挥部(HQ)屋顶的旗杆互动, 以拆除FOB。<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\wait_ca.paa' width='20' height='20' /> <marker name='blufor_base'>集合点: </marker><br/> 你也可以使用军火库中的宙斯集合点背包, 但是它们有使用限制。在玩家离线一段时间后, 集合点将会自毁。<br/><br/> <img image='\A3\Data_F_Exp\Images\FeatureRespawn_co.paa' width='355' height='180'/>
- =BTC= Lift will not replace the A3 sling loading, you can use both.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> Lifting an object is pretty simple. Get in a chopper as pilot, hover above the object and interact with the chopper to deploy ropes.<br/> When you are in the right position a new scroll wheel action will appear ('HOOK'). If you want you can open the HUD to facilitate the operation.<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> To release an object open you self interaction menu and select 'CUT ROPES'.
- =BTC= Lift will not replace the A3 sling loading, you can use both.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> Levantar un objeto es muy sencillo. Métete en un helicóptero como piloto, sobrevuela el objeto e interactúa con el helicóptero para desplegar las cuerdas.<br/> Cuando esté en la posición correcta, aparecerá una nueva acción de la rueda de desplazamiento ('HOOK'). Si lo desea puede abrir el HUD para facilitar la operación.<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> Para liberar un objeto, abra el menú de autointeracción y seleccione 'CORTAR CUERDAS'.
- =BTC= Lift ersetzt nicht das A3 Sling-Load-System, du kannst beide nutzen.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> Das heben von Lasten ist recht einfach. Nimm dir einen Hubschrauber, schwebe über dem Objekt und lass die Seile ab indem du mit dem Hubschrauber interagierst.<br/> Wenn du in der richtigen Postion bist, erscheint im Maus-Rad-Menü die Option 'EINHACKEN' mit der du die Fracht einhacken kannst. Wenn du willst kannst du auch ein HUD öffnen, welches dir deine Arbeit erleichtert.<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> Um ein eingehacktes Objekt abzulassen, wähle im Maus-Rad-Menü die Option 'SEILE TRENNEN' aus.
- =BTC= O elevador não substituirá o carregamento do A3 Sling, você pode usar ambos.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> Levantar um objeto é bem simples. Entre em um helicóptero como piloto, passe o mouse sobre o objeto e interaja com o helicóptero para posicionar as cordas.<br/> Quando você estiver na posição correta e rolar a roda do mouse, aparecerá a ação "GANCHO". Se você quiser, pode abrir o HUD para facilitar a operação.<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> Para liberar um objeto, abra o menu de interação deste objeto e selecione "CORTAR CORDAS".
- =BTC=吊挂功能不会覆盖原版吊挂功能, 二者都可以使用。<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> 吊挂货物相当简单: 进入直升机飞行员座位, 于货物上方悬停, 与直升机互动并部署绳索。<br/> 当你处于正确位置时, 一个新的选项"安装挂钩"将会出现在鼠标滚轮的动作菜单中。你可也以打开HUD以方便操作。<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> 要释放一个货物, 使用自我互动菜单并选择"断开绳索"即可。
+ =BTC= Lift will not replace the A3 sling loading, you can use both.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> Lifting an object is pretty simple. Get in a chopper as pilot, hover above the object and interact with the chopper to deploy ropes.<br/> When you are in the right position a new scroll wheel action will appear ('HOOK'). If you want you can open the HUD to facilitate the operation.<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> To release an object open you self interaction menu and select 'CUT ROPES'.<br/><br/> <img image='\a3\Missions_F_Heli\data\img\Showcase_SlingLoading_overview_CA.paa' width='355' height='200' />
+ =BTC= Lift will not replace the A3 sling loading, you can use both.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> Levantar un objeto es muy sencillo. Métete en un helicóptero como piloto, sobrevuela el objeto e interactúa con el helicóptero para desplegar las cuerdas.<br/> Cuando esté en la posición correcta, aparecerá una nueva acción de la rueda de desplazamiento ('HOOK'). Si lo desea puede abrir el HUD para facilitar la operación.<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> Para liberar un objeto, abra el menú de autointeracción y seleccione 'CORTAR CUERDAS'.<br/><br/> <img image='\a3\Missions_F_Heli\data\img\Showcase_SlingLoading_overview_CA.paa' width='355' height='200' />
+ =BTC= Lift ersetzt nicht das A3 Sling-Load-System, du kannst beide nutzen.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> Das heben von Lasten ist recht einfach. Nimm dir einen Hubschrauber, schwebe über dem Objekt und lass die Seile ab indem du mit dem Hubschrauber interagierst.<br/> Wenn du in der richtigen Postion bist, erscheint im Maus-Rad-Menü die Option 'EINHACKEN' mit der du die Fracht einhacken kannst. Wenn du willst kannst du auch ein HUD öffnen, welches dir deine Arbeit erleichtert.<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> Um ein eingehacktes Objekt abzulassen, wähle im Maus-Rad-Menü die Option 'SEILE TRENNEN' aus.<br/><br/> <img image='\a3\Missions_F_Heli\data\img\Showcase_SlingLoading_overview_CA.paa' width='355' height='200' />
+ =BTC= O elevador não substituirá o carregamento do A3 Sling, você pode usar ambos.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> Levantar um objeto é bem simples. Entre em um helicóptero como piloto, passe o mouse sobre o objeto e interaja com o helicóptero para posicionar as cordas.<br/> Quando você estiver na posição correta e rolar a roda do mouse, aparecerá a ação "GANCHO". Se você quiser, pode abrir o HUD para facilitar a operação.<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> Para liberar um objeto, abra o menu de interação deste objeto e selecione "CORTAR CORDAS".<br/><br/> <img image='\a3\Missions_F_Heli\data\img\Showcase_SlingLoading_overview_CA.paa' width='355' height='200' />
+ =BTC=吊挂功能不会覆盖原版吊挂功能, 二者都可以使用。<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> 吊挂货物相当简单: 进入直升机飞行员座位, 于货物上方悬停, 与直升机互动并部署绳索。<br/> 当你处于正确位置时, 一个新的选项"安装挂钩"将会出现在鼠标滚轮的动作菜单中。你可也以打开HUD以方便操作。<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> 要释放一个货物, 使用自我互动菜单并选择"断开绳索"即可。<br/><br/> <img image='\a3\Missions_F_Heli\data\img\Showcase_SlingLoading_overview_CA.paa' width='355' height='200' />
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> At the logistic point you can require new objects (like ammo, fortifications, supplies for the side missions...) and repair destroyed vehicles.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> En el punto logístico puede requerir nuevos objetos (como municiones, fortificaciones, suministros para las misiones secundarias...) y reparar vehículos destruidos.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Am Logistikpunkt kann man neue Objekte (wie zB. Munition, Baumaterial, Nachschubgüter für Nebenaufgaben...) anfordern und zerstörte Fahrzeuge reparieren.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> No ponto logístico, você pode solicitar novos objetos (como munição, fortificações, suprimentos para as missões secundárias ...) e reparar veículos destruídos.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> 后勤点可以生成新的物件(如弹药、防御工事、用于支线任务的救援物资等), 也可以维修受损载具。
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> At the logistic point you can require new objects (like ammo, fortifications, supplies for the side missions...) and repair destroyed vehicles.<br/><br/> <img image='A3\Missions_F_Tank\data\img\Showcase_TankDestroyers.paa' width='355' height='200' />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> En el punto logístico puede requerir nuevos objetos (como municiones, fortificaciones, suministros para las misiones secundarias...) y reparar vehículos destruidos.<br/><br/> <img image='A3\Missions_F_Tank\data\img\Showcase_TankDestroyers.paa' width='355' height='200' />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Am Logistikpunkt kann man neue Objekte (wie zB. Munition, Baumaterial, Nachschubgüter für Nebenaufgaben...) anfordern und zerstörte Fahrzeuge reparieren.<br/><br/> <img image='A3\Missions_F_Tank\data\img\Showcase_TankDestroyers.paa' width='355' height='200' />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> No ponto logístico, você pode solicitar novos objetos (como munição, fortificações, suprimentos para as missões secundárias ...) e reparar veículos destruídos.<br/><br/> <img image='A3\Missions_F_Tank\data\img\Showcase_TankDestroyers.paa' width='355' height='200' />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> 后勤点可以生成新的物件(如弹药、防御工事、用于支线任务的救援物资等), 也可以维修受损载具。<br/><br/> <img image='A3\Missions_F_Tank\data\img\Showcase_TankDestroyers.paa' width='355' height='200' />
- <img image='\z\ace\addons\cargo\UI\Icon_Module_Cargo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Cargo System:</marker><br/> Use ACE 3 Cargo system. <br/><br/> <img image='\z\ace\addons\attach\UI\attach_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Towing system:</marker><br/> To tow a vehicle interact with it and select the option 'HOOK'.<br/>After that place the tow vehicle in front of it and select 'TOW' in the interaction menu.<br/> If the two vehicles are too far away or the vehicle can't tow that load (Car can't tow truck or tank), the option will be disabled.<br/> To unhook interact with one of the two vehicles and select the option 'UNHOOK'.<br/><br/> <img image='\z\ace\addons\dragging\UI\icons\box_carry.paa' width='20' height='20'/> <marker name='blufor_base'>Place option:</marker><br/> With this option you can move heavy objects to build small outpost or base.<br/> When you select the option an hint will show all the keys required to move the object.
- <img image='\z\ace\addons\cargo\UI\Icon_Module_Cargo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Fracht-System:</marker><br/>Siehe ACE3 Dokumentation. <br/><br/> <img image='\z\ace\addons\attach\UI\attach_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Abschleppsystem:</marker><br/> Um ein Fahrzeug abzuschleppen muss man mit diesem interagieren und 'EINHACKEN' auswählen.<br/>Als nächstes muss man das Zugfahrzeug vor das abzuschleppende Fahrzeug stellen und über das Interagtionsmenü die Option 'ABSCHLEPPEN' aktivieren.<br/> Zu beachten ist dabei, dass die beiden Fahrzeuge nicht zu weit von einander entfernt sein dürfen. Ebenso ist daruf zu achten, dass das Zugfahrzeug auch das andere Fahrzeug abschleppen kann (zB. Autos können keine Lkw/Panzer abschleppen).<br/> Um das Abschleppseil wieder zu entfernen muss man einen bei einem der beiden Fahrzeuge die Option 'AUSHACKEN' auswählen.<br/><br/> <img image='\z\ace\addons\dragging\UI\icons\box_carry.paa' width='20' height='20'/> <marker name='blufor_base'>Platzierung von Objekten:</marker><br/> Mit dieser Option können Sie schwere Objekte bewegen, um einen kleinen Außenposten oder eine Basis zu bauen.<br/> Wenn Sie die Option auswählen, zeigt ein Hinweis alle Tasten an, die zum Verschieben des Objekts erforderlich sind.
- <img image='\z\ace\addons\cargo\UI\Icon_Module_Cargo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Cargo System:</marker><br/> Use ACE 3 Cargo system. <br/><br/><br/> <img image='\z\ace\addons\attach\UI\attach_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Towing system:</marker><br/> Para rebocar um veículo, interaja com ele e selecione a opção "GANCHO".<br/> Depois disso, coloque o veículo de reboque na frente dele e selecione "REBOCAR" no menu de interação.<br/> Se os dois veículos estiverem muito distantes ou o veículo não puder rebocar essa carga (o carro não poderá rebocar o caminhão ou o tanque), a opção será desativada.<br/> Para desengatar, interaja com um dos dois veículos e selecione a opção "DESENGANCHAR".<br/><br/> <img image='\z\ace\addons\dragging\UI\icons\box_carry.paa' width='20' height='20'/> <marker name='blufor_base'>Place option:</marker><br/> Com esta opção, você pode mover objetos pesados para construir um posto avançado ou uma base pequena.<br/> Quando você selecionar a opção, uma dica mostrará todas as ações necessárias para mover o objeto.
- <img image='\z\ace\addons\cargo\UI\Icon_Module_Cargo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>货运系统:</marker><br/> 使用ACE3货运系统。 <br/><br/> <img image='\z\ace\addons\attach\UI\attach_ca.paa' width='20' height='20'/> <marker name='blufor_base'>牵引系统:</marker><br/> 如需牵引一辆载具, 与其互动并选择"启用牵引"。<br/>然后, 将牵引车辆(前车)置于被牵引车辆(后车)前方, 并在互动菜单中选择"牵引"。<br/> 如果两辆车的距离过远, 或前车无法牵引这一载荷(比如汽车(Car)无法牵引卡车(Truck)或坦克(Tank)), 则该选项不可用。<br/> 如需取消牵引, 与两车之一互动并选择"取消牵引"。<br/><br/> <img image='\z\ace\addons\dragging\UI\icons\box_carry.paa' width='20' height='20'/> <marker name='blufor_base'>物体放置:</marker><br/> 您可以使用该选项来移动重物, 从而建造一个小的前哨或基地。<br/> 选择该选项后, 移动对象所需键位的提示将会出现。
+ <img image='\z\ace\addons\cargo\UI\Icon_Module_Cargo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Cargo System:</marker><br/> Use ACE 3 Cargo system. <br/><br/> <img image='\z\ace\addons\attach\UI\attach_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Towing system:</marker><br/> To tow a vehicle interact with it and select the option 'HOOK'.<br/>After that place the tow vehicle in front of it and select 'TOW' in the interaction menu.<br/> If the two vehicles are too far away or the vehicle can't tow that load (Car can't tow truck or tank), the option will be disabled.<br/> To unhook interact with one of the two vehicles and select the option 'UNHOOK'.<br/><br/> <img image='\A3\Ui_f\data\IGUI\Cfg\VehicleToggles\VehicleCargoIconOn2_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Vehicle in vehicle system:</marker><br/> BI Vehicle in Vehicle (ViV) system is extended to allow load of any vehicle in a vehicle. To move ViV use the towing system. To unload, move in driver seat of the tower vehicle and select in scroll menu "unload all objects".<br/><br/> <img image='\A3\Data_F_Exp\Images\FeatureVehicleInVehicle_co.paa' width='355' height='200' /><br/><br/> <img image='\z\ace\addons\dragging\UI\icons\box_carry.paa' width='20' height='20'/> <marker name='blufor_base'>Place option:</marker><br/> With this option you can move heavy objects to build small outpost or base.<br/> When you select the option an hint will show all the keys required to move the object.
+ <img image='\z\ace\addons\cargo\UI\Icon_Module_Cargo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Fracht-System:</marker><br/>Siehe ACE3 Dokumentation. <br/><br/> <img image='\z\ace\addons\attach\UI\attach_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Abschleppsystem:</marker><br/> Um ein Fahrzeug abzuschleppen muss man mit diesem interagieren und 'EINHACKEN' auswählen.<br/>Als nächstes muss man das Zugfahrzeug vor das abzuschleppende Fahrzeug stellen und über das Interagtionsmenü die Option 'ABSCHLEPPEN' aktivieren.<br/> Zu beachten ist dabei, dass die beiden Fahrzeuge nicht zu weit von einander entfernt sein dürfen. Ebenso ist daruf zu achten, dass das Zugfahrzeug auch das andere Fahrzeug abschleppen kann (zB. Autos können keine Lkw/Panzer abschleppen).<br/> Um das Abschleppseil wieder zu entfernen muss man einen bei einem der beiden Fahrzeuge die Option 'AUSHACKEN' auswählen.<br/><br/> <img image='\z\ace\addons\dragging\UI\icons\box_carry.paa' width='20' height='20'/> <marker name='blufor_base'>Platzierung von Objekten:</marker><br/> Mit dieser Option können Sie schwere Objekte bewegen, um einen kleinen Außenposten oder eine Basis zu bauen.<br/> Wenn Sie die Option auswählen, zeigt ein Hinweis alle Tasten an, die zum Verschieben des Objekts erforderlich sind.<br/><br/> <img image='\A3\Data_F_Exp\Images\FeatureVehicleInVehicle_co.paa' width='355' height='200' />
+ <img image='\z\ace\addons\cargo\UI\Icon_Module_Cargo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Cargo System:</marker><br/> Use ACE 3 Cargo system. <br/><br/><br/> <img image='\z\ace\addons\attach\UI\attach_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Towing system:</marker><br/> Para rebocar um veículo, interaja com ele e selecione a opção "GANCHO".<br/> Depois disso, coloque o veículo de reboque na frente dele e selecione "REBOCAR" no menu de interação.<br/> Se os dois veículos estiverem muito distantes ou o veículo não puder rebocar essa carga (o carro não poderá rebocar o caminhão ou o tanque), a opção será desativada.<br/> Para desengatar, interaja com um dos dois veículos e selecione a opção "DESENGANCHAR".<br/><br/> <img image='\z\ace\addons\dragging\UI\icons\box_carry.paa' width='20' height='20'/> <marker name='blufor_base'>Place option:</marker><br/> Com esta opção, você pode mover objetos pesados para construir um posto avançado ou uma base pequena.<br/> Quando você selecionar a opção, uma dica mostrará todas as ações necessárias para mover o objeto.<br/><br/> <img image='\A3\Data_F_Exp\Images\FeatureVehicleInVehicle_co.paa' width='355' height='200' />
+ <img image='\z\ace\addons\cargo\UI\Icon_Module_Cargo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>货运系统:</marker><br/> 使用ACE3货运系统。<br/><br/> <img image='\z\ace\addons\attach\UI\attach_ca.paa' width='20' height='20'/> <marker name='blufor_base'>牵引系统:</marker><br/> 如需牵引一辆载具, 与其互动并选择"启用牵引"。<br/>然后, 将牵引车辆(前车)置于被牵引车辆(后车)前方, 并在互动菜单中选择"牵引"。<br/> 如果两辆车的距离过远, 或前车无法牵引这一载荷(比如汽车(Car)无法牵引卡车(Truck)或坦克(Tank)), 则该选项不可用。<br/> 如需取消牵引, 与两车之一互动并选择"取消牵引"。<br/><br/> <img image='\z\ace\addons\dragging\UI\icons\box_carry.paa' width='20' height='20'/> <marker name='blufor_base'>物体放置:</marker><br/> 您可以使用该选项来移动重物, 从而建造一个小的前哨或基地。<br/> 选择该选项后, 移动对象所需键位的提示将会出现。<br/><br/> <img image='\A3\Data_F_Exp\Images\FeatureVehicleInVehicle_co.paa' width='355' height='200' />
@@ -192,20 +156,20 @@
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Any object could be an IED, approach it carefully (DO NOT rotate while you are walking: prefer walk, stop, rotate, walk again etc). Turn On your mine detector (VMH3 or VMMH3) and search for a charge in a circle of 2 meter around.<br/> <img image='\z\ace\addons\explosives\UI\Defuse_ca.paa' width='20' height='20'/> If you are an engineer and have a defusal kit, you can disarm it.<br/> You can also blow them off with high caliber and explosive satchels.
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\mine_ca.paa' width='20' height='20'/> <marker name='blufor_base'>IED:</marker><br/> Any object could be an IED or a fake IED.<br/> <img image='\A3\EditorPreviews_F\Data\CfgVehicles\IEDLandSmall_F.jpg' width='355' height='200'/> <br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>Detection:</marker><br/> Approach IED carefully (DO NOT rotate while you are walking: prefer walk, stop, rotate, walk again etc). Turn On your mine detector (VMH3 or VMMH3) and search for a charge in a circle of 2 meter around.<br/> <img image='\z\ace\addons\minedetector\data\equip\w_vmh3_ca.paa' width='70' height='100'/> <br/><br/> <img image='\z\ace\addons\explosives\UI\Defuse_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Defuse:</marker><br/> If you are an engineer and have a defusal kit, you can disarm it. You can also blow them off with high caliber and explosive satchels.<br/> <img image='\z\ace\addons\explosives\Data\UI\Pliers.paa' width='50' height='50'/> <br/><br/> <img image='\A3\armor_f_beta\APC_Tracked_01\Data\UI\APC_Tracked_01_CRV_ca.paa' width='30' height='20'/> <marker name='blufor_base'>Clean up:</marker><br/> You can remove wreck or object around IED or fake IED by driving a Nemmera in their direction. <img image='\A3\EditorPreviews_F\Data\CfgVehicles\B_APC_Tracked_01_CRV_F.jpg' width='355' height='200'/>
<img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Cualquier objeto puede ser un artefacto explosivo improvisado, acérquese a él con cuidado (NO rote mientras camina: prefiera caminar, detenerse, rotar, volver a caminar, etc.). Encienda su detector de minas (VMH3 o VMMH3) y busque una carga en un círculo de 2 metros alrededor.<br/> <img image='\z\ace\addons\explosives\UI\Defuse_ca.paa' width='20' height='20'/> Si usted es ingeniero y tiene un kit de desactivación, puede desarmarlo.<br/> También puedes volarlos con explosivos y fuego de alto calibre.
<img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Jedes Objekt kann eine IED sein, seien sie ensprechen Vorsichtig und machen Sie keine hastigen Bewegungen (NICHT drehen wenn man läuft: besser gehen, stop, drehen, gehen und so weiter). Schalten Sie ihren Minendetektor (VMH3 oder VMMH3) ein und suchen sie in eim 2m Radius nach der Ladung.<br/> <img image='\z\ace\addons\explosives\UI\Defuse_ca.paa' width='20' height='20'/> Wenn Sie ein Ingenieur sind und ein Entschärfungskit dabei habe, können Sie die Sprengladung entschärfen.<br/> Es is ebenfalls möglich die IED mithilfe von hohen Kalibern oder Sprengladungen zu entfernen (kontrollierte Explosion).
<img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Qualquer objeto pode ser um IED, aproxime-o com cuidado (NÃO vire-se enquanto estiver andando: ande, pare, olhe, ande de novo, etc.). Ative o seu detector de minas (VMH3 ou VMMH3) e procure uma carga em um círculo de 2 metros ao redor.<br/> <img image='\z\ace\addons\explosives\UI\Defuse_ca.paa' width='20' height='20'/> Se você é um engenheiro e possui um kit de desarme, você pode desarmá-lo.<br/> Também é possível destruir o IED usando grosso calibre ou explosivos (explosão controlada).
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> 每个物体都可能是一个简易爆炸装置(IED), 小心地接近它(切勿在行走的同时转身, 而应当"走-停-转身-再走")。打开你的探雷器( VMH3 或 VMMH3 ), 在2米范围内寻找炸弹。<br/> <img image='\z\ace\addons\explosives\UI\Defuse_ca.paa' width='20' height='20'/> 如果你是工程师(Engineer)且携带了拆弹工具, 你就可以拆除它。<br/> 你也可以使用大口径子弹或炸药包来引爆它。
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\mine_ca.paa' width='20' height='20'/> <marker name='blufor_base'>简易爆炸装置(IED):</marker><br/> 任何物体都有可能是IED, 或者是假IED。<br/> <img image='\A3\EditorPreviews_F\Data\CfgVehicles\IEDLandSmall_F.jpg' width='355' height='200'/> <br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>探测:</marker><br/> 任何物体都可能是一个简易爆炸装置(IED), 小心地接近它(切勿在行走的同时转身, 而应当"走-停下-转身-继续走")。打开你的探雷器(VMH3或VMMH3), 在2米范围内寻找炸弹。<br/> <img image='\z\ace\addons\minedetector\data\equip\w_vmh3_ca.paa' width='70' height='100'/> <br/><br/> <img image='\z\ace\addons\explosives\UI\Defuse_ca.paa' width='20' height='20'/> <marker name='blufor_base'>拆除:</marker><br/> 如果你是工程师并且携带了拆弹工具, 你就可以拆除它。你也可以使用大口径子弹或者炸药包来引爆它。<br/> <img image='\z\ace\addons\explosives\Data\UI\Pliers.paa' width='50' height='50'/> <br/><br/> <img image='\A3\armor_f_beta\APC_Tracked_01\Data\UI\APC_Tracked_01_CRV_ca.paa' width='30' height='20'/> <marker name='blufor_base'>清理:</marker><br/> 你可以通过驾驶豹式装甲车(Nemmera)朝向IED或假IED, 来移除它们周围的残骸或物体。<img image='\A3\EditorPreviews_F\Data\CfgVehicles\B_APC_Tracked_01_CRV_F.jpg' width='355' height='200'/>
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> Intel can be retrieved in the following ways:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> Searching dead bodies<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> Interrogate prisoner<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> Talking to civilians<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Keep in mind that only the interpreter can talk to civilians and they can lie if your reputation level is low.<br/><br/> When you find an intel from a dead body or interrogate a prisoner, a marker will appear in the map. Remember, prisoner have a random number of intel more or less interesting.<br/> There are two types of intel:<br/> - Red question mark (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>) and pictures under diary log map menu: ammo cache intel<br/> - Red exclamation mark (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): hideout intel<br/><br/><br/> When you destroy an hideout or an ammo cache, all the markers related to it will be deleted.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> La Inteligencia se puede recuperar de las siguientes maneras:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> Registrando cadáveres<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> Interrogando prisioneros<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> Conversando con Civiles<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Tenga en cuenta que sólo el intérprete puede hablar con civiles y ellos pueden mentir si su nivel de reputación es bajo.<br/><br/> Cuando encuentres una información de un cadáver o interrogues a un prisionero, aparecerá un marcador en el mapa. Recuerda, los prisioneros tienen un número aleatorio de información más o menos interesante.<br/> Hay 2 tipos de marcas:<br/> - Signo de interrogacion rojo (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>): intel sobre cache de municion<br/> - Signo de exclamacion rojo (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): intel sobre escondite<br/><br/><br/> Cuando destruyes un escondite o una caché de munición, todos los marcadores relacionados con él se borrarán.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> Informationen kann man auf verschiedene Arten erhalten:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> Durchsuchen von toten Personen<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> Verhören von Gefangenen<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> Mit Zivilisten reden<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Nur der Dolmetscher kann sich mit Zivilisten unterhalten. Wenn ihr Ansehen bei der Bevölkerunge niedrig ist, so kann es auch mal vorkommen das manche Zivilisten sie belügen.<br/><br/> Wenn Sie Information erhalten, erscheint eine Markierung auf der Karte. Zur Erinnerung: Gefangene habe mal mehr und mal weniger interessante Informationen.<br/> Es gibt zwei Arten von Markierungen:<br/> - Ein rotes Fragezeichen (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>): Information über ein Waffenlager <br/> - Ein rotes Ausrufezeichen (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): Information über ein Versteck <br/><br/><br/> Wenn Sie ein Versteck oder ein Waffenlager zersört haben, so werden alle relevanten Markierungen automatisch gelöscht.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> Informações podem ser obtidas de diferentes maneiras:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> Procurando nos corpos dos mortos<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> Interrogando prisioneiros<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> Falando com civis<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Somente o intérprete pode conversar com os civis. Se a reputação entre a população é baixa, pode acontecer de alguns civis passarem informações mentirosas.<br/><br/> Quando você encontrar uma informação em um cadáver ou interrogando um prisioneiro, uma marcação aparecerá no mapa. Lembre-se, os prisioneiros possuem um número aleatório de informações que são mais ou menos importante.<br/> Existem dois tipos de marcação:<br/> - Interrogação em Vermelho (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>): Informações sobre depósito de armas<br/> - Exclamação em Vermelho (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): Informações sobre um esconderijo<br/><br/><br/> Quando você destroí um esconderijo ou depósito de munição, o marcador será excluído.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> 可以通过以下方式获取情报:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> 搜查尸体<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> 审问俘虏<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> 询问平民<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> 请谨记: 只有翻译员可以与平民交谈, 而且如果你的声誉低, 他们也会说谎。<br/><br/> 当通过搜查尸体或审问俘虏得到情报时, 地图上会出现标记。记住, 俘虏所持情报的数量和价值都是随机的。<br/> 情报标记有两类:<br/> - 红色问号标记 (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>): 武器箱情报<br/> - 红色叹号标记 (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): 藏匿点情报<br/><br/><br/> 当你摧毁了藏匿点或武器箱时, 与之相关的所有标记将被删除。
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> Intel can be retrieved in the following ways:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> Searching dead bodies<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> Interrogate prisoner<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> Talking to civilians<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Keep in mind that only the interpreter can talk to civilians and they can lie if your reputation level is low.<br/><br/> When you find an intel from a dead body or interrogate a prisoner, a marker will appear in the map. Remember, prisoner have a random number of intel more or less interesting.<br/> There are two types of intel:<br/> - Red question mark (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>) and pictures under diary log map menu: ammo cache intel<br/> - Red exclamation mark (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): hideout intel<br/><br/><br/> When you destroy an hideout or an ammo cache, all the markers related to it will be deleted.<br/><br/> <img image='\a3\data_f_argo\Logos\arma3_argo_artwork.jpg' width=362' height='512 />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> La Inteligencia se puede recuperar de las siguientes maneras:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> Registrando cadáveres<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> Interrogando prisioneros<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> Conversando con Civiles<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Tenga en cuenta que sólo el intérprete puede hablar con civiles y ellos pueden mentir si su nivel de reputación es bajo.<br/><br/> Cuando encuentres una información de un cadáver o interrogues a un prisionero, aparecerá un marcador en el mapa. Recuerda, los prisioneros tienen un número aleatorio de información más o menos interesante.<br/> Hay 2 tipos de marcas:<br/> - Signo de interrogacion rojo (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>): intel sobre cache de municion<br/> - Signo de exclamacion rojo (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): intel sobre escondite<br/><br/><br/> Cuando destruyes un escondite o una caché de munición, todos los marcadores relacionados con él se borrarán.<br/><br/> <img image='\a3\data_f_argo\Logos\arma3_argo_artwork.jpg' width=362' height='512 />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> Informationen kann man auf verschiedene Arten erhalten:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> Durchsuchen von toten Personen<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> Verhören von Gefangenen<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> Mit Zivilisten reden<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Nur der Dolmetscher kann sich mit Zivilisten unterhalten. Wenn ihr Ansehen bei der Bevölkerunge niedrig ist, so kann es auch mal vorkommen das manche Zivilisten sie belügen.<br/><br/> Wenn Sie Information erhalten, erscheint eine Markierung auf der Karte. Zur Erinnerung: Gefangene habe mal mehr und mal weniger interessante Informationen.<br/> Es gibt zwei Arten von Markierungen:<br/> - Ein rotes Fragezeichen (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>): Information über ein Waffenlager <br/> - Ein rotes Ausrufezeichen (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): Information über ein Versteck <br/><br/><br/> Wenn Sie ein Versteck oder ein Waffenlager zersört haben, so werden alle relevanten Markierungen automatisch gelöscht.<br/><br/> <img image='\a3\data_f_argo\Logos\arma3_argo_artwork.jpg' width=362' height='512 />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> Informações podem ser obtidas de diferentes maneiras:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> Procurando nos corpos dos mortos<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> Interrogando prisioneiros<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> Falando com civis<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Somente o intérprete pode conversar com os civis. Se a reputação entre a população é baixa, pode acontecer de alguns civis passarem informações mentirosas.<br/><br/> Quando você encontrar uma informação em um cadáver ou interrogando um prisioneiro, uma marcação aparecerá no mapa. Lembre-se, os prisioneiros possuem um número aleatório de informações que são mais ou menos importante.<br/> Existem dois tipos de marcação:<br/> - Interrogação em Vermelho (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>): Informações sobre depósito de armas<br/> - Exclamação em Vermelho (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): Informações sobre um esconderijo<br/><br/><br/> Quando você destroí um esconderijo ou depósito de munição, o marcador será excluído.<br/><br/> <img image='\a3\data_f_argo\Logos\arma3_argo_artwork.jpg' width=362' height='512 />
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> 可以通过以下方式获取情报:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> 搜查尸体<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> 审问俘虏<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> 询问平民<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> 请谨记: 只有翻译员可以与平民交谈, 而且如果你的声誉低, 他们也会说谎。<br/><br/> 当通过搜查尸体或审问俘虏得到情报时, 地图上会出现标记。记住, 俘虏所持情报的数量和价值都是随机的。<br/> 情报标记有两类:<br/> - 红色问号标记 (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>): 武器箱情报<br/> - 红色叹号标记 (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): 藏匿点情报<br/><br/><br/> 当你摧毁了藏匿点或武器箱时, 与之相关的所有标记将被删除。<br/><br/> <img image='\a3\data_f_argo\Logos\arma3_argo_artwork.jpg' width=362' height='512 />
@@ -217,20 +181,20 @@
声誉
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Reputation can be ask to civilian<br/> Bad actions cause bad effects.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Helping the local population by fighting the Oplitas and disarming IED's will rise your reputation; killing civilians, mutilating alive/dead civilians, firing near civilians for no reason, firing to civilian car, damaging/destroying buildings, losing vehicles, player respawns will decrease your reputation. At the beginning you have a very low reputation level, so civilians won't help you in revealing important information about the Oplitas, they will likely lie instead.<br/> Aborting a side mission does not affect reputation.
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <marker name='blufor_base'>System:</marker><br/> At the beginning you have a very low reputation level, so civilians won't help you in revealing important information about the Oplitas, they will likely lie instead. Reputation can be ask to civilian. <br/><br/> <img image='\A3\Data_F_Orange\Logos\arma3_orange_picture_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Good actions:</marker><br/> Helping the local population by fighting the Oplitas, disarming IED's, heal civilians, remove tag with spraypaint red, succed side mission and destroy cache/hideout will rise your reputation. <br/><br/> <img image='\a3\missions_f_orange\Data\Img\AAN\aan_3_4_co.paa' width='355' height='200' /> <br/><br/> <img image='\a3\Ui_f\data\GUI\Cfg\Debriefing\endDefault_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Bad actions:</marker><br/> Bad actions cause bad effects: killing civilians/animals, mutilating alive/dead civilians/animals, firing near civilians for no reason, firing to civilian car, damaging/destroying buildings, losing player's vehicles and player respawns will decrease your reputation. Aborting a side mission does not affect reputation. <br/><br/> <img image='\a3\missions_f_orange\Data\Img\AAN\aan_3_3_co.paa' width='355' height='200'/> <br/><br/> <img image='\A3\Data_F_Orange\Logos\arma3_orange_artwork.jpg' width='362' height='512' /> <br/><br/>
<img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> La reputación se puede solicitar a los civiles<br/> Las malas acciones causan malos efectos sobre la reputacion.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Ayudar a la población local luchando contra los Oplitas y desarmando los artefactos explosivos improvisados aumentará tu reputación; matar civiles, mutilar civiles vivos/muertos, disparar cerca de civiles sin razón alguna, disparar a vehículos civiles, dañar/destruir edificios, perder vehículos, respawns de jugadores disminuirá tu reputación. Al principio tienes un nivel de reputación muy bajo, por lo que los civiles no te ayudarán a revelar información importante sobre los Oplitas, es probable que mientan en su lugar.<br/> Abortar una misión secundaria no afecta a la reputación.
<img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Ihr Ansehen bei der Bevölkerung können Sie bei Zivilisten erfragen <br/> Schlechte bzw. böse Handlungen habe zur Folge das ihr Ansehen sinkt. <br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Das Unterstützen der lokalen Bevölkerung, das Entschärfen von IEDs und der aktive Kampf gegen die Oplitas wird sich positiv auf ihr Ansehen auswirken. Negative Aktionen wie zb. das Töten oder verstümmeln von Zivlisten, das grundlose Abfeueren einer Waffe in der Nähe von Zivilisten, das Zerstören oder Beschädigen von Gebäuden, der Angriff auf zivile Fahrzeuge, der Verlust von Fahrzeugen im Allgemeinen oder das Respawnen haben hingegen einen nicht so guten Effekt. Zu Beginn ist Ihr Ansehen nur recht gering, weshalb es sein kann das Zivlisten eher zruückhaltend mit Informationen sind. In manchen Fällen werden die Zivilisten Sie auch einfach belügen.<br/> Das Abbrechen von Nebenaufgaben hat keine Auswirkung auf Ihr Ansehen.
<img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> A Reputação entre a população é obtida por meio dos civis <br/> Ações ruins ou más fazem a reputação diminuir. <br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Ajudar a população local combatendo os inimigos e desarmando os IED's aumentará sua reputação. Matar civis, mutilar civis vivos/mortos, atirar perto de civis sem motivo, atirar nos veículos civis, danificar/destruir prédios, perder veículos civis, respawns de jogadores diminuirão a reputação. No começo, o nível de reputação é muito baixo, então, os civis não irão ajudá-lo a revelar informações importantes sobre os inimigos ou provavelmente irão mentir.<br/> Cancelar tarefas secundárias não afeta a reputação.
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> 可以向平民询问声誉状况<br/> 不良作风及恶劣行为会导致声誉下降。<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> 救助当地居民, 拆除IED并积极地与Oplitas作战将对声誉产生积极影响。另一方面, 攻击或击杀平民、残害平民遗体、毁坏建筑物、攻击或掠夺民用车辆、损失我方载具和玩家重生均会降低声誉。一开始, 你的声誉很低, 因此平民不会为你提供情报, 他们可能会欺骗你。<br/> 中止支线任务不会影响声誉。
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <marker name='blufor_base'>System:</marker><br/> 在任务开始时, 你只有很低的声誉, 所以平民不会向你展示关于Oplitas的重要信息, 他们更倾向于说谎。可以通过询问平民来获知声誉状况。<br/><br/> <img image='\A3\Data_F_Orange\Logos\arma3_orange_picture_ca.paa' width='20' height='20'/> <marker name='blufor_base'>善举:</marker><br/> 帮助当地居民反抗Oplitas, 拆除IED, 救助平民, 使用红色喷漆去除涂鸦, 完成支线任务和摧毁武器箱/藏匿点将会提升你的声誉。<br/><br/> <img image='\a3\missions_f_orange\Data\Img\AAN\aan_3_4_co.paa' width='355' height='200' /> <br/><br/> <img image='\a3\Ui_f\data\GUI\Cfg\Debriefing\endDefault_ca.paa' width='20' height='20'/> <marker name='blufor_base'>恶行:</marker><br/> 恶行将会酿成恶果: 击杀或残害平民/动物、毫无理由地向平民身边射击、攻击民用车辆、毁坏或摧毁建筑物、损失我方载具和玩家重生均会降低声誉。中止支线任务不会影响声誉。<br/><br/> <img image='\a3\missions_f_orange\Data\Img\AAN\aan_3_3_co.paa' width='355' height='200'/> <br/><br/> <img image='\A3\Data_F_Orange\Logos\arma3_orange_artwork.jpg' width='362' height='512' /> <br/><br/>
- Any player can give orders to civilians.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> To do this, just open your self interaction menu and select 'ORDERS' or use one of the shortcuts. Shortcuts can changed under 'configure' >> 'controls' >> 'configure addons' >> 'Hearts and Minds: Mission' (drop down menu).<br/> Your options are:<br/> - STOP<br/> - GET DOWN<br/> - GO AWAY<br/><br/> If you want to give an order to just one unit, interact with it (ace object interaction).<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> You can also drop leaflets to ask all civilians in a circle of 200m to evacuate to a religious building (if not available a safe area) with a AR-2 drone.
- Cualquier jugador puede dar órdenes a civiles.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Para ello, sólo tienes que abrir el menú de auto-interacción y seleccionar `ORDENES' o utilizar uno de los accesos directos. Los accesos directos pueden cambiarse en 'configuración'. >> 'controls' >> 'configure addons' >> 'Hearts and Minds: Mission' (menu desplegable).<br/> Tus opciones son:<br/> - ALTO<br/> - AGACHATE<br/> - FUERA DE AQUI<br/><br/> Si quieres dar una orden a una sola unidad, interactúa con ella (ace object interaction).<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> También puede tirar panfletos para pedir a todos los civiles en un círculo de 200 metros que evacuen a un edificio religioso (si no está disponible un área segura) con un drone
- Jeder Spieler kann einem Zivlisten Anweisungen geben.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Dies geht recht einfach in dem man das Eigen-Interaktionsmenü öffnet und dann 'BEFEHLE(ZIVILISTEN)' auswählt. Oder in dem man Kurztasten nutzt. Diese können unter 'Konfigurieren' >> 'Steuerung' >> 'Modifikationen anpassen' >> Hearts and Minds: Mission' (Drop-Down-Menü) geändert werden.<br/><br/> Folgende Optionen stehen zur Verfügung:<br/> - STOPP!<br/> - AUF DEN BODEN!<br/> - GEH WEG!<br/><br/> Wenn Sie einen Befehl an eine bestimmte Person geben wollen, so können Sie auch direkt mir dieser Interagieren (ACE Objekt-Interaction).<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Sie können mithilfe einer Drohne Broschüren abwerfen, um die Zivilisten im Umkreis von ca. 200 m aufzufordern, sich in dem nächsten religiösen Gebäude einzufinden (sollte kein Gebäude vorhanden sein, so wird ein sicherer Bereich festgelegt).
- Qualquer jogador pode dar instruções a um civil.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Para fazer isso, basta abrir o menu de interação do civil e selecionar a opção "ORDENS" ou usar tecla de atalho. Atalhos podem ser alterados no menu "CONFIGURAÇÃO" >> "CONTROLES" >> "CONFIGURAR COMPLEMENTOS (ADDONS)" >> Corações e Mentes: Missão (Menu suspenso).<br/><br/> As seguintes opções estão disponíveis: <br/> - PARE!<br/> - DEITADO!<br/> - VÁ EMBORA!<br/><br/> Se você quiser dar uma ordem para apenas uma unidade, interaja com ela (interação do objeto ACE).<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Você pode usar um drone para soltar panfletos solicitando que civis, dentro de um raio de 200m, se abriguem em um prédio religioso mais próximo (se não houver prédio, uma área segura será definida).
- 玩家可以向平民发出指令。<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> 如要向平民发出指令, 只需打开自我互动菜单并选择"命令平民", 或使用已设定的快捷键即可。快捷键可以在"设置" >> "控制设定" >> "模组设定选项" >> "Hearts and Minds: Mission"(下拉菜单) 中进行变更。<br/> 可以使用的命令如下:<br/> - 站住<br/> - 趴下<br/> - 走开<br/><br/> 如果你希望只对某个单位发出指令, 与该单位进行互动即可(ACE物体互动)。<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> 你也可以使用 AR-2 无人机投放传单, 要求200米范围内的平民疏散至最近的宗教建筑避难(若无宗教建筑, 则前往安全区域)。
+ Any player can give orders to civilians.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> To do this, just open your self interaction menu and select 'ORDERS' or use one of the shortcuts. Shortcuts can changed under 'configure' >> 'controls' >> 'configure addons' >> 'Hearts and Minds: Mission' (drop down menu).<br/> Your options are:<br/> - STOP<br/> - GET DOWN<br/> - GO AWAY<br/><br/> If you want to give an order to just one unit, interact with it (ace object interaction).<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> You can also drop leaflets to ask all civilians in a circle of 200m to evacuate to a religious building (if not available a safe area) with a AR-2 drone.<br/><br/> <img image='\a3\missions_f_orange\Data\Img\orange_leaflets_overview_ca.paa' width='355' height='200'/>
+ Cualquier jugador puede dar órdenes a civiles.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Para ello, sólo tienes que abrir el menú de auto-interacción y seleccionar `ORDENES' o utilizar uno de los accesos directos. Los accesos directos pueden cambiarse en 'configuración'. >> 'controls' >> 'configure addons' >> 'Hearts and Minds: Mission' (menu desplegable).<br/> Tus opciones son:<br/> - ALTO<br/> - AGACHATE<br/> - FUERA DE AQUI<br/><br/> Si quieres dar una orden a una sola unidad, interactúa con ella (ace object interaction).<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> También puede tirar panfletos para pedir a todos los civiles en un círculo de 200 metros que evacuen a un edificio religioso (si no está disponible un área segura) con un drone<br/><br/> <img image='\a3\missions_f_orange\Data\Img\orange_leaflets_overview_ca.paa' width='355' height='200'/>
+ Jeder Spieler kann einem Zivlisten Anweisungen geben.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Dies geht recht einfach in dem man das Eigen-Interaktionsmenü öffnet und dann 'BEFEHLE(ZIVILISTEN)' auswählt. Oder in dem man Kurztasten nutzt. Diese können unter 'Konfigurieren' >> 'Steuerung' >> 'Modifikationen anpassen' >> Hearts and Minds: Mission' (Drop-Down-Menü) geändert werden.<br/><br/> Folgende Optionen stehen zur Verfügung:<br/> - STOPP!<br/> - AUF DEN BODEN!<br/> - GEH WEG!<br/><br/> Wenn Sie einen Befehl an eine bestimmte Person geben wollen, so können Sie auch direkt mir dieser Interagieren (ACE Objekt-Interaction).<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Sie können mithilfe einer Drohne Broschüren abwerfen, um die Zivilisten im Umkreis von ca. 200 m aufzufordern, sich in dem nächsten religiösen Gebäude einzufinden (sollte kein Gebäude vorhanden sein, so wird ein sicherer Bereich festgelegt).<br/><br/> <img image='\a3\missions_f_orange\Data\Img\orange_leaflets_overview_ca.paa' width='355' height='200'/>
+ Qualquer jogador pode dar instruções a um civil.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Para fazer isso, basta abrir o menu de interação do civil e selecionar a opção "ORDENS" ou usar tecla de atalho. Atalhos podem ser alterados no menu "CONFIGURAÇÃO" >> "CONTROLES" >> "CONFIGURAR COMPLEMENTOS (ADDONS)" >> Corações e Mentes: Missão (Menu suspenso).<br/><br/> As seguintes opções estão disponíveis: <br/> - PARE!<br/> - DEITADO!<br/> - VÁ EMBORA!<br/><br/> Se você quiser dar uma ordem para apenas uma unidade, interaja com ela (interação do objeto ACE).<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Você pode usar um drone para soltar panfletos solicitando que civis, dentro de um raio de 200m, se abriguem em um prédio religioso mais próximo (se não houver prédio, uma área segura será definida).<br/><br/> <img image='\a3\missions_f_orange\Data\Img\orange_leaflets_overview_ca.paa' width='355' height='200'/>
+ 任何玩家都可以向平民发出指令。<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> 如要向平民发出指令, 只需打开自我互动菜单并选择"命令平民", 或使用已设定的快捷键即可。快捷键可以在"设置" >> "控制设定" >> "模组设定选项" >> "Hearts and Minds: Mission"(下拉菜单) 中进行变更。<br/> 可以使用的命令如下:<br/> - 站住<br/> - 趴下<br/> - 走开<br/><br/> 如果你希望只对某个单位发出指令, 与该单位进行互动即可(ACE物体互动)。<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> 你也可以使用 AR-2 无人机投放传单, 要求200米范围内的平民疏散至最近的宗教建筑避难(若无宗教建筑, 则前往安全区域)。<br/><br/> <img image='\a3\missions_f_orange\Data\Img\orange_leaflets_overview_ca.paa' width='355' height='200'/>
@@ -242,36 +206,11 @@
交通
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> Civilians are travelling by vehicle across cities. If your reputation is higher than normal, you can ask for a lift to a location chosen on the map. If you bump into a Oplitas patrol, don't worry, the civilian driver will do their best to hide you in the car.<br/>
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> Los civiles viajan en vehículo a través de las ciudades. Si tu reputación es más alta de lo normal, puedes pedir que te lleven a un lugar elegido en el mapa. Si te encuentras con una patrulla de Oplitas, no te preocupes, el conductor civil hará todo lo posible para esconderte en el coche.<br/>
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> Zivlisten sind mit Fahrzeugen in den Städten unterwegs. Wenn Sie ein hohes Ansehen in der Bevölkerung genießen, so sind Zivlisten auch gerne mal dazu bereit Sie mitzunehmen (nutzen sie die Karte um den Zivlisten zu zeigen wo sie hinwollen). Sollten Sie dabei durch Zufall auf Feinde stoßen, so wird der Zivilist sein Bestes geben um sie im Fahrzeug zu verstecken.<br/>
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> Civis estarão viajando de veículo pelo mapa, entre uma cidade e outra. Se sua reputação com a população local for alta, eles estarão dispostos a levá-lo a qualuqer lugar do mapa (use o mapa para mostrar onde você quer ir). Se vocês encontrarem uma patrulha inimiga, o civil fará todo possível para te esconder no veículo.<br/>
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> 平民会在城市间开车穿梭。如果你的声誉够高, 平民会乐意载你一程(用地图指出你要去的地方)。如果你在途中遭遇了Oplitas巡逻队, 不要担心, 平民会尽其所能地把你藏在车里。<br/>
-
-
-
-
- Gear (Arsenal)
- Equipamiento (Arsenal)
- Ausrüstung (Arsenal)
- Equipamento (Arsenal)
- 装备(军火库)
-
-
- <img image='\A3\Ui_f\data\Logos\a_64_ca.paa' width='20' height='20'/>You can choose your gear at the red box inside the base. Located at the spawn point.<br/>
- <img image='\A3\Ui_f\data\Logos\a_64_ca.paa' width='20' height='20'/>Puedes elegir tu equipo en las cajas dentro de la base. Ubicado en el punto de respawn.<br/>
- <img image='\A3\Ui_f\data\Logos\a_64_ca.paa' width='20' height='20'/>Sie können ihre Ausrüstung jederzeit an der roten Box in der Basis anpassen. Diese steht in der Nähe des Startpunktes<br/>
- <img image='\A3\Ui_f\data\Logos\a_64_ca.paa' width='20' height='20'/>Você pode configurar seu equipamento na caixa vermelha dentro da BASE. Geralmente fica localizado próximo ao porto de nascimento (respawn).<br/>
- <img image='\A3\Ui_f\data\Logos\a_64_ca.paa' width='20' height='20'/>你可以在基地内的红色箱子处选择装备, 它位于重生点附近。<br/>
-
-
-
-
- <img image='\z\ace\addons\interaction\UI\Icon_Module_Interaction_ca.paa' width='20' height='20'/>Use ACE 3 interactions system.
- <img image='\z\ace\addons\interaction\UI\Icon_Module_Interaction_ca.paa' width='20' height='20'/>Use los sistema de interaccion de ACE 3.
- <img image='\z\ace\addons\interaction\UI\Icon_Module_Interaction_ca.paa' width='20' height='20'/>Nutzen Sie das Interactions-System von ACE 3.
- <img image='\z\ace\addons\interaction\UI\Icon_Module_Interaction_ca.paa' width='20' height='20'/>Use o sistema de interação do ACE 3.
- <img image='\z\ace\addons\interaction\UI\Icon_Module_Interaction_ca.paa' width='20' height='20'/>使用 ACE 3 互动系统。
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> Civilians are travelling by vehicle across cities. If your reputation is higher than normal, you can ask for a lift to a location chosen on the map. If you bump into a Oplitas patrol, don't worry, the civilian driver will do their best to hide you in the car.<br/><br/> <img image='\A3\Data_F_Argo\Images\AssetMaldenTerrain_co.paa' width='355' height='200'/>
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> Los civiles viajan en vehículo a través de las ciudades. Si tu reputación es más alta de lo normal, puedes pedir que te lleven a un lugar elegido en el mapa. Si te encuentras con una patrulla de Oplitas, no te preocupes, el conductor civil hará todo lo posible para esconderte en el coche.<br/><br/> <img image='\A3\Data_F_Argo\Images\AssetMaldenTerrain_co.paa' width='355' height='200'/>
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> Zivlisten sind mit Fahrzeugen in den Städten unterwegs. Wenn Sie ein hohes Ansehen in der Bevölkerung genießen, so sind Zivlisten auch gerne mal dazu bereit Sie mitzunehmen (nutzen sie die Karte um den Zivlisten zu zeigen wo sie hinwollen). Sollten Sie dabei durch Zufall auf Feinde stoßen, so wird der Zivilist sein Bestes geben um sie im Fahrzeug zu verstecken.<br/><br/> <img image='\A3\Data_F_Argo\Images\AssetMaldenTerrain_co.paa' width='355' height='200'/>
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> Civis estarão viajando de veículo pelo mapa, entre uma cidade e outra. Se sua reputação com a população local for alta, eles estarão dispostos a levá-lo a qualuqer lugar do mapa (use o mapa para mostrar onde você quer ir). Se vocês encontrarem uma patrulha inimiga, o civil fará todo possível para te esconder no veículo.<br/><br/> <img image='\A3\Data_F_Argo\Images\AssetMaldenTerrain_co.paa' width='355' height='200'/>
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> 平民会在城市间开车穿梭。如果你的声誉够高, 平民会乐意载你一程(用地图指出你要去的地方)。如果你在途中遭遇了Oplitas巡逻队, 不要担心, 平民会尽其所能地把你藏在车里。<br/><br/> <img image='\A3\Data_F_Argo\Images\AssetMaldenTerrain_co.paa' width='355' height='200'/>
@@ -281,9 +220,9 @@
化学战
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\danger_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Chemical agent:</marker><br/> A chemical agent can be found in the battlefield at cache location for example. When an object is contaminated, the chemical agent propagates to people around (in a circle of 3m). Those people will be hurt constantly until they died or found a decontaminating shower (available at the logistic point) to clean up their body. When they are contaminated, they can propagate it to other people around (in a circle of 1.5m) or vehicle if they get inside. Keep in mind, dead body stay contaminated but body bag will isolate it. Also, a contaminated object loaded as cargo will contaminate the container or vehicle. <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Protection:</marker><br/> Use CBRN gear (uniform, mask and breather backpack) to protect you from the contamination effect. But, don't forget to take a shower for more than 5s before removing your CBRN gear. Be aware, even with a CBRN equipment you can propagate the agent to people or vehicle, you are just protected from the effect. <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\box_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Decontaminate:</marker><br/> You can use a small shower to decontaminate units only. Use the big shower for objects, vehicles and objects loaded as cargo. To activate them, just stay under the shower. <br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>Detection:</marker><br/> You can analyze an object, vehicle or man with ED-1E drone to determine if it is contaminated (Note: The drone will never be contaminated.). You can also check if you are in a contaminated area by using a chemical detector (THREAT from 0.1 to 0.9: contaminated objects are around, THREAT at 1: you are in the propagating range (you will be contaminated)).
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\danger_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Chemische Wirk- bzw. Kampfstoffe:</marker><br/> Chemische Wirk- bzw. Kampfstoffe werden immer mal wieder im Einsatz, zum Beispiel bei den Waffenkisten, gefunden. Wenn ein Objekt kontaminiert ist, dann verbreitet sich der chemische Wirkstoff auf Personen in der näheren Umgebung (in ein Umkreis von ca. 3m). Personen, welche sich ungeschützt einem solchen Objekt nähern, werden kontaminiert und erleiden Schaden, bis Sie sterben. Man kann sich mir Hilfe einer Dekontaminationsdusche (am Logistikpunkt erhältlich) von diesem Effekt befreien. Die Kontaminierung von Personen kann untereinander weitergegeben werden, wenn man nicht aufpasst (in einem Umkreis von ca. 1,5m). Das gilt auch für die Innenräume von Fahrzeugen. Denken Sie daran, dass Leichen kontaminiert bleiben, die Leichensäcke diese jedoch isolieren. Kontaminierte Objekte können beim Verladen auch den Container und das Fahrzeug verseuchen. <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Schutz:</marker><br/> Verwenden Sie CBRN-Ausrüstung (auch ABC-Ausrüstung genannt, bestehend aus Uniform, Maske und Atemgerät), um sich vor Kontamination zu schützen. Vor dem ablegen der CBRN-Ausrüstung ist es wichtig, mindestens 5 Sekunden zu duschen, um sämtliche Verseuchungen zu entfernen. Beachten Sie, dass die CBRN-Ausrüstung nur Sie selbst vor den chemischen Kampfstoffen schütz. Sie können weiterhin andere Personen und Fahrzeuge kontaminieren. <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\box_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Dekontaminierung:</marker><br/> Mit der kleinen Dekontaminationsdusche können Sie nur Personen dekontaminieren. Verwenden Sie die große Dusche für Objekte, Fahrzeuge und den Ladenraum von Fahrzeugen (oder Containern). Um die Duschen zu aktivieren, stellen Sie sich einfach darunter. <br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>Erkennung:</marker><br/> Sie können ein Objekt, Fahrzeug oder eine Person mit einer ED-1E-Drohne analysieren, um festzustellen, ob es kontaminiert ist (Hinweis: Die Drohne wird niemals von einer Kontamination betroffen sein). Ebenso können Sie einen Chemischen Detektor nutzen um feststellen wie stark der nähere Bereich um Sie herum kontaminiert ist. (THREAT von 0.1 bis 0.9: kontaminierte Gegenstände sind in der Nähe, THREAT von 1: Sie befinden sich in einen verseuchten Bereich (Sie sind somit selbst kontaminiert)).
- <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\danger_ca.paa' width='20' height='20'/> <marker name='blufor_base'>化学试剂:</marker><br/> 化学试剂会在战场上的武器箱等位置出现。当一个物体受到污染时, 这种化学试剂会传播它到周围的人身上(3米范围内)。这些人将持续受到伤害直至死亡, 或找到一个净化淋浴(位于在后勤点)来清理他们的身体。当这些人受到污染时, 他们会将污染传播给周围的其他人(1.5米范围内)或车辆(如果他们进入车辆的话)。记住, 尸体将保持受到污染的状态, 但尸体袋可以将其隔离。此外, 作为货物装载受污染物体将会污染集装箱或车辆。 <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa' width='20' height='20'/> <marker name='blufor_base'>防护措施:</marker><br/> 使用CBRN(生化核辐)装备(服装, 面具和呼吸器背包)可以保护您免受污染影响。但是, 在取下CBRN装备之前, 不要忘记进行至少5秒的净化淋浴。请注意, 即使穿戴了CBRN装备, 您也会向人员或车辆传播化学试剂, 只有你免受污染影响。 <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\box_ca.paa' width='20' height='20'/> <marker name='blufor_base'>清除污染:</marker><br/> 小型淋浴器只能用来净化单兵单位。使用大型淋浴器来清洗物品、车辆和货物。要激活净化过程, 只需待在淋浴下即可。<br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>检测:</marker><br/> 你可以使用 ED-1E 无人机分析物体、车辆或人, 以测定其是否受到污染(注: 该无人机永远不会受到污染)。您也可以使用化学探测器检测您是否处于污染区域内(威胁度介于0.1至0.9之间: 附近存在受污染物体, 威胁度等于1: 您处于传播区域内(您将受到污染))。
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\danger_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Chemical agent:</marker><br/> A chemical agent can be found in the battlefield at cache location for example. When an object is contaminated, the chemical agent propagates to people around (in a circle of 3m). Those people will be hurt constantly until they died or found a decontaminating shower (available at the logistic point) to clean up their body. When they are contaminated, they can propagate it to other people around (in a circle of 1.5m) or vehicle if they get inside. Keep in mind, dead body stay contaminated but body bag will isolate it. Also, a contaminated object loaded as cargo will contaminate the container or vehicle. <img image='\a3\Data_F_Enoch\Images\CBRNObjects_ca.paa' width='355' height='200'/> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Protection:</marker><br/> Use CBRN gear (uniform, respirator mask and breather backpack) for full protection from the contamination effect. But, don't forget to take a shower for more than 5s before removing your CBRN gear. Be aware, even with a CBRN equipment you can propagate the agent to people or vehicle, you are just protected from the effect. <img image='\a3\Data_F_Enoch\Images\CBRNSuit_ca.paa' width='355' height='200'/> <br/><br/> Simple mask and simple uniform can reduce from 65% to 80% the probability to take damage.<img image='\A3\Data_F_Orange\Images\Respirator_ca.paa' width='355' height='200'/> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\box_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Decontaminate:</marker><br/> You can use a small shower to decontaminate units only. Use the big shower for objects, vehicles and objects loaded as cargo. To activate them, just stay under the shower. <img image='\A3\EditorPreviews_F_Enoch\Data\CfgVehicles\DeconShower_01_F.jpg' width='355' height='200'/> <br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>Detection:</marker><br/> You can analyze an object, vehicle or man with ED-1E drone to determine if it is contaminated (Note: The drone will never be contaminated.). You can also check if you are in a contaminated area by using a chemical detector (THREAT from 0.1 to 0.9: contaminated objects are around, THREAT at 1: you are in the propagating range (you will be contaminated)). <img image='\a3\Data_F_Enoch\Images\ChemicalDetector_ca.paa' width='355' height='200'/>
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\danger_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Chemische Wirk- bzw. Kampfstoffe:</marker><br/> Chemische Wirk- bzw. Kampfstoffe werden immer mal wieder im Einsatz, zum Beispiel bei den Waffenkisten, gefunden. Wenn ein Objekt kontaminiert ist, dann verbreitet sich der chemische Wirkstoff auf Personen in der näheren Umgebung (in ein Umkreis von ca. 3m). Personen, welche sich ungeschützt einem solchen Objekt nähern, werden kontaminiert und erleiden Schaden, bis Sie sterben. Man kann sich mir Hilfe einer Dekontaminationsdusche (am Logistikpunkt erhältlich) von diesem Effekt befreien. Die Kontaminierung von Personen kann untereinander weitergegeben werden, wenn man nicht aufpasst (in einem Umkreis von ca. 1,5m). Das gilt auch für die Innenräume von Fahrzeugen. Denken Sie daran, dass Leichen kontaminiert bleiben, die Leichensäcke diese jedoch isolieren. Kontaminierte Objekte können beim Verladen auch den Container und das Fahrzeug verseuchen. <img image='\a3\Data_F_Enoch\Images\CBRNObjects_ca.paa' width='355' height='200'/> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Schutz:</marker><br/> Verwenden Sie CBRN-Ausrüstung (auch ABC-Ausrüstung genannt, bestehend aus Uniform, Maske und Atemgerät), um sich vor Kontamination zu schützen. Vor dem ablegen der CBRN-Ausrüstung ist es wichtig, mindestens 5 Sekunden zu duschen, um sämtliche Verseuchungen zu entfernen. Beachten Sie, dass die CBRN-Ausrüstung nur Sie selbst vor den chemischen Kampfstoffen schütz. Sie können weiterhin andere Personen und Fahrzeuge kontaminieren. <img image='\a3\Data_F_Enoch\Images\CBRNSuit_ca.paa' width='355' height='200'/> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\box_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Dekontaminierung:</marker><br/> Mit der kleinen Dekontaminationsdusche können Sie nur Personen dekontaminieren. Verwenden Sie die große Dusche für Objekte, Fahrzeuge und den Ladenraum von Fahrzeugen (oder Containern). Um die Duschen zu aktivieren, stellen Sie sich einfach darunter. <img image='\A3\EditorPreviews_F_Enoch\Data\CfgVehicles\DeconShower_01_F.jpg' width='355' height='200'/> <br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>Erkennung:</marker><br/> Sie können ein Objekt, Fahrzeug oder eine Person mit einer ED-1E-Drohne analysieren, um festzustellen, ob es kontaminiert ist (Hinweis: Die Drohne wird niemals von einer Kontamination betroffen sein). Ebenso können Sie einen Chemischen Detektor nutzen um feststellen wie stark der nähere Bereich um Sie herum kontaminiert ist. (THREAT von 0.1 bis 0.9: kontaminierte Gegenstände sind in der Nähe, THREAT von 1: Sie befinden sich in einen verseuchten Bereich (Sie sind somit selbst kontaminiert)). <img image='\a3\Data_F_Enoch\Images\ChemicalDetector_ca.paa' width='355' height='200'/>
+ <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\danger_ca.paa' width='20' height='20'/> <marker name='blufor_base'>化学试剂:</marker><br/> 化学试剂会在战场上的武器箱等位置出现。当一个物体受到污染时, 这种化学试剂会传播它到周围的人身上(3米范围内)。这些人将持续受到伤害直至死亡, 或找到一个净化淋浴(位于在后勤点)来清理他们的身体。当这些人受到污染时, 他们会将污染传播给周围的其他人(1.5米范围内)或车辆(如果他们进入车辆的话)。记住, 尸体将保持受到污染的状态, 但尸体袋可以将其隔离。此外, 作为货物装载受污染物体将会污染集装箱或车辆。<img image='\a3\Data_F_Enoch\Images\CBRNObjects_ca.paa' width='355' height='200'/><br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa' width='20' height='20'/> <marker name='blufor_base'>防护措施:</marker><br/> 使用CBRN(生化核辐)装备(服装、口罩、面具和呼吸器背包)可以保护您完全免受污染影响。但是, 在取下CBRN装备之前, 不要忘记进行至少5秒的净化淋浴。请注意, 即使穿戴了CBRN装备, 您也会向人员或车辆传播化学试剂, 只有你免受污染影响。普通的面具和制服会将受到伤害的可能性减免60%至80%。<img image='\a3\Data_F_Enoch\Images\CBRNSuit_ca.paa' width='355' height='200'/> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\box_ca.paa' width='20' height='20'/> <marker name='blufor_base'>清除污染:</marker><br/> 小型淋浴器只能用来净化单兵单位。使用大型淋浴器来清洗物品、车辆和货物。要激活净化过程, 只需待在淋浴下即可。<img image='\A3\EditorPreviews_F_Enoch\Data\CfgVehicles\DeconShower_01_F.jpg' width='355' height='200'/><br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>检测:</marker><br/> 你可以使用 ED-1E 无人机分析物体、车辆或人, 以测定其是否受到污染(注: 该无人机永远不会受到污染)。您也可以使用化学探测器检测您是否处于污染区域内(威胁度介于0.1至0.9之间: 附近存在受污染物体, 威胁度等于1: 您处于传播区域内(您将受到污染))。<img image='\a3\Data_F_Enoch\Images\ChemicalDetector_ca.paa' width='355' height='200'/>
@@ -292,8 +231,8 @@
频谱探测仪
- <img image='\A3\Data_F_Enoch\Logos\arma3_enoch_logo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Electromagnetic field:</marker><br/> There are two types of electromagnetic field from UAV or electromagnetic pulse (EMP). UAV emit electromagnetic field from 390MHz to 500MHz due to device transmission. Electromagnetic pulse are used as weapon to create electronic failure to vehicles. The range of frequency is from 78MHz to 89MHz and is powerfull enough to turn off light, engine and avionic devices. <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Protection:</marker><br/> Electromagnetic field from UAV are safe but EMP have a range of 500m where vehicles with engine turn ON will be affected. <br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>Detection:</marker><br/> You can detect the origin of electromagnetic field with spectrum devices. The amplitude of the peak depend on the distance and angle between the emiter and the antenna. The maximum range is 1000m.
- <img image='\A3\Data_F_Enoch\Logos\arma3_enoch_logo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>电磁场:</marker><br/> UAV 和电磁脉冲装置(EMP)会产生两种不同的电磁场。为了传输信号, UAV 会发出频率在 390MHz 到 500MHz 之间的电磁场。电磁脉冲装置是一种能使载具上的电子设备失效的武器。它的频率范围在 78MHz 到 89MHz 之间, 其能量足以使电灯、引擎和航空电子设备实效。<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa' width='20' height='20'/> <marker name='blufor_base'>防护:</marker><br/> UAV 产生的电磁场是安全的, 但电磁脉冲装置将会影响500米范围内引擎开启的载具。<br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>探测:</marker><br/> 你可以使用频谱探测仪来探测电磁场的源头。波形的峰值取决于发射器与天线之间的距离和角度。最大探测距离为1000米。
+ <img image='\A3\Data_F_Enoch\Logos\arma3_enoch_logo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Electromagnetic field:</marker><br/> There are two types of electromagnetic field from UAV or electromagnetic pulse (EMP). UAV emit electromagnetic field from 390MHz to 500MHz due to device transmission. Electromagnetic pulse are used as weapon to create electronic failure to vehicles. The range of frequency is from 78MHz to 89MHz and is powerfull enough to turn off light, engine and avionic devices. <img image='\A3\Data_F_Mark\Images\watermarkInfo_page14_ca.paa' width='355' height='200'/> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Protection:</marker><br/> Electromagnetic field from UAV are safe but EMP have a range of 500m where vehicles with engine turn ON will be affected. <br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>Detection:</marker><br/> You can detect the origin of electromagnetic field with spectrum devices. The amplitude of the peak depend on the distance and angle between the emiter and the antenna. The maximum range is 1000m. <img image='\a3\Data_F_Enoch\Images\SpectrumDevice_ca.paa' width='355' height='200'/>
+ <img image='\A3\Data_F_Enoch\Logos\arma3_enoch_logo_ca.paa' width='20' height='20'/> <marker name='blufor_base'>电磁场:</marker><br/> UAV 和电磁脉冲装置(EMP)会产生两种不同的电磁场。为了传输信号, UAV 会发出频率在 390MHz 到 500MHz 之间的电磁场。电磁脉冲装置是一种能使载具上的电子设备失效的武器。它的频率范围在 78MHz 到 89MHz 之间, 其能量足以使电灯、引擎和航空电子设备实效。<img image='\A3\Data_F_Mark\Images\watermarkInfo_page14_ca.paa' width='355' height='200'/> <br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa' width='20' height='20'/> <marker name='blufor_base'>防护:</marker><br/> UAV 产生的电磁场是安全的, 但电磁脉冲装置将会影响500米范围内引擎开启的载具。<br/><br/> <img image='\z\ace\addons\minedetector\ui\icon_mineDetectorOn.paa' width='20' height='20'/> <marker name='blufor_base'>探测:</marker><br/> 你可以使用频谱探测仪来探测电磁场的源头。波形的峰值取决于发射器与天线之间的距离和角度。最大探测距离为1000米。<img image='\a3\Data_F_Enoch\Images\SpectrumDevice_ca.paa' width='355' height='200'/>
@@ -318,6 +257,26 @@
Spiel wird automatisch Gespeichert, wenn alle Spieler das Spiel verlassen
所有玩家离线后自动存档
+
+ Auto restart/shutdown server (Must define in server.cfg: serverCommandPassword = "btc_password")
+ 自动重启/关闭服务器(必须在server.cfg中定义: serverCommandPassword = "btc_password")
+
+
+ Shutdown
+ 关闭
+
+
+ Save and restart
+ 保存并重启
+
+
+ Save and shutdown
+ 保存并关闭
+
+
+ Time before auto restart/shutdown server
+ 自动重启/关闭服务器前的时间
+
@@ -375,12 +334,20 @@
敌军密度:
Densidade inimiga:
+
+ Enemy static density:
+ 敌军固定式武器密度:
+
Civilian density:
Zivilistendichte:
平民密度:
Densidade civil:
+
+ Animal density:
+ 动物密度:
+
Density of military in house:
Feinddichte in Gebäuden:
@@ -497,18 +464,46 @@
敌军尸体携带情报的几率:
-
-
- << Medical options >>
- << Sanitäts-Einstellungen >>
- << Opções Médicas >>
- << 医疗设置 >>
+
+
+ << Respawn options >>
+ << 重生选项 >>
+
+
+ Respawn locations available:
+ 可用的重生位置
+
+
+ Allow respawn from FOB to base:
+ 允许从FOB重新部署至基地
+
+
+ FOB and Rallypoint
+ FOB 和 集合点
+
+
+ FOB, Rallypoint and Helo
+ FOB、集合点和可重生载具
+
+
+ FOB, Rallypoint and Transport helicopter
+ FOB、集合点和运输直升机
+
+
+ FOB, Rallypoint, Transport helicopter and Transport vehicle
+ FOB、集合点、运输直升机和运输车辆
+
+
+ FOB, Rallypoint, Transport helicopter, Transport vehicle and Leader
+ FOB、集合点、运输直升机、运输车辆和小队长
+
+
+ Time before rallypoint self-destruction:
+ 集合点自毁时间:
-
- Allow re-deploy?
- Verlegen erlauben?
- Permitir ressurgimento?
- 允许重新部署?
+
+ ACE Arsenal available on respawn after been killed:
+ ACE军火库在玩家死亡重生后可用:
@@ -681,6 +676,10 @@
Reputação inicial:
初始声誉:
+
+ Show reputation change:
+ 显示声誉变化:
+
Spawn city radius offset:
Radius zum Spawnen von Einheiten:
@@ -1252,6 +1251,24 @@
找到并摧毁导致电子设备失效的 EMP 发射站。
+
+
+ Remove rubbish in %1
+ 清除 %1 地区的垃圾
+
+
+ Civilian population reported many rubbish on road making driving difficult around %1. They are requesting your help to remove them with a Nemmera.
+ 平民报告称 %1 附近的道路上有许多垃圾, 导致行车困难。平民请求您派遣豹式装甲车(Nemmera)来清除这些垃圾。
+
+
+ Rubbish spotted
+ 垃圾目击地点
+
+
+ A civilian spotted this rubbish as particularly annoying while driving.
+ 一位平民发现这些垃圾非常阻碍行车。
+
+
@@ -1389,12 +1406,21 @@
-
- Re-deploy
- Re-deploy
- Verlegen
- Ressurgir na FOB
- 重新部署
+
+ BI respawn
+ BI重生
+
+
+ Re-deploy base
+ 重新部署至基地
+
+
+ Re-deploy rallypoints
+ 重新部署至集合点
+
+
+ Re-deploy FOB/vehicles
+ 重新部署至FOB/载具
@@ -1413,6 +1439,12 @@
<t color='#ff1111'>军火库(ACE)</t>
+
+
+ Remove tag
+ 移除标记
+
+
Tow
@@ -1666,6 +1698,35 @@
不! 老子想去哪就去哪!
+
+
+ GET OUT
+
+
+ LEAVE NOW
+
+
+ WE WILL KILL YOU
+
+
+ BE AFRAID
+
+
+ GO HOME
+
+
+ IED EVERYWHERE
+
+
+ DRONE WATCHING YOU
+
+
+ WE HATE YOU
+
+
+ YOU GONNA DIE
+
+
@@ -1725,26 +1786,6 @@
Desmontando, se afaste...
正在拆除, 请远离 ...
-
- No FOBs deployed
- No hay FOBs desplegados
- Es sind keine FOBs aufgebaut
- Nenhuma FOB montada
- 未部署FOB
-
-
- Moving to %1
- Moviéndose a %1
- Verlege zu %1
- Movendo para %1
- 移动到 %1
-
-
- Select a FOB
- FOB auswähen
- 选择一个FOB:
- Selecione uma FOB
-
Name the FOB:
Nombra el FOB:
@@ -1752,6 +1793,22 @@
Nome da FOB:
命名FOB:
+
+ This rallypoint will self-destruct in %1min.
+ 该集合点将在 %1 分钟后自毁。
+
+
+ Can't redeploy,
+ 无法重新部署,
+
+
+ you need to be stabilized
+ 需要稳定伤势
+
+
+ you need to have a splint
+ 需要佩戴固定夹板
+
@@ -1851,6 +1908,10 @@
Nur Nebenmissionen können abgebrochen werden
只能中止支线任务
+
+ Server reboot in 5min, leave it NOW!
+ 服务器将在5分钟后重启, 请立即离开服务器!
+
@@ -1973,13 +2034,39 @@
在创建新的物件前, 该区域必须清空!
-
-
- Interact with a vehicle to tow it!<br/>(This vehicle can't tow %1)
- Interactúe con un vehículo para remolcarlo!<br/>(Este vehículo no puede remolcar %1)
- Interagieren Sie mit dem Zug-Fahrzeug, um es abzuschleppen!<br/>(Folgende Fahrzeuge können nicht gezogen werden: %1)
- Interaja com o veículo para rebocá-lo!<br/>(Este veículo não pode rebocar %1)
- 与牵引车(前车)互动以牵引它!<br/>(当前载具(后车)无法牵引如下类型的载具: %1)
+
+
+ Can't tow!<br/>(This vehicle can't tow %1)
+ Can't tow!<br/>(Este vehículo no puede remolcar %1)
+ Can't tow!<br/>(Folgende Fahrzeuge können nicht gezogen werden: %1)
+ Can't tow!<br/>(Este veículo não pode rebocar %1)
+ 无法拖车!<br/>(当前载具(后车)无法牵引如下类型的载具: %1)
+
+
+ Interact with a vehicle to tow it!
+ Interactúe con un vehículo para remolcarlo!
+ Interagieren Sie mit dem Zug-Fahrzeug, um es abzuschleppen!
+ Interaja com o veículo para rebocá-lo!
+ 与牵引车(前车)互动以牵引它!
+
+
+ Too far!
+ 距离太远!
+
+
+ This vehicle is already attached to another!
+ Este vehículo ya está unido a otro!
+ Dieses Fahrzeug zieht bereits ein anderes Fahrzeug!
+ Este veículo já está atracado a outro!
+ 这辆载具已经连接一辆载具了!
+
+
+ Towing in progress, please wait...
+ 正在拖车, 请稍后...
+
+
+ Towing done
+ 拖车完成
@@ -2062,23 +2149,5 @@
只能删除由后勤点创建的物件
-
-
- This vehicle is already attached to another!
- Este vehículo ya está unido a otro!
- Dieses Fahrzeug zieht bereits ein anderes Fahrzeug!
- Este veículo já está atracado a outro!
- 这辆载具已经连接一辆载具了!
-
-
-
-
- This vehicle is not attached to another!
- Este vehículo no está unido a otro!
- Das Fahrzeug schleppt kein anderes Fahrzeug ab!
- Este veículo não está atracado a outro!
- 该载具没有连接其他载具!
-
-
diff --git a/README.md b/README.md
index f7bcfa0c3..cfd45e15b 100644
--- a/README.md
+++ b/README.md
@@ -5,8 +5,8 @@
-
-
+
+
@@ -23,7 +23,7 @@ Online [wiki available](http://vdauphin.github.io/HeartsAndMinds/).
- **Dedicated server support only**
- Dynamic battlefield
- - Enemies and civilian spawn randomly
+ - Enemies, civilian and animals spawn randomly
- Random patrol and [traffic](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#traffic)
- Dynamic caching system to save performance
- Extend battlefield to sea (you are not safe on sea!)
@@ -34,13 +34,14 @@ Online [wiki available](http://vdauphin.github.io/HeartsAndMinds/).
- Request a lift
- Discussion ([interpreter](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#intel))
- Fleeing
- - More than 17 [side mission](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#side-mission)
+ - More than 18 [side mission](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#side-mission)
- Deep ACE3 support
- Use mainly ACE interaction
- Rearm system
- ACEX Fortify
- Logistic system
- [Tow](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#towing-system)
+ - [Vehicle in vehicle](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#towing-system) extended
- [Sling loading](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#sling-loading)
- Repair [destroyed vehicles](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#respawn)
- [FOB/Rallypoints](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#fobrallypoint)
@@ -50,7 +51,7 @@ Online [wiki available](http://vdauphin.github.io/HeartsAndMinds/).
- [Spectrum devices](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#spectrum-devices)
- Under the hood
- A lot of optional gameplay
- - More than 315 enemies and 27 civilians factions available
+ - More than 321 enemies and 27 civilians factions available
- Full saving Database ([even player markers](http://vdauphin.github.io/HeartsAndMinds/InGame-documentation#headless--database))
- Easy map change (See [here](http://vdauphin.github.io/HeartsAndMinds/Change-MAP-of-Hearts-and-Minds))
- Auto Headless support
diff --git a/docs/Add-factions.md b/docs/Add-factions.md
index 9babf763e..de781300f 100644
--- a/docs/Add-factions.md
+++ b/docs/Add-factions.md
@@ -4,15 +4,15 @@ You have two way to add new factions. First one need to know all class name of t
## First way
- Get all class names of your faction.
-- Replace `_allclasse select` by the corresponding array of faction name in [/core/def/mission.sqf#L590-L598](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L590-L598).
+- Replace `_allclasse select` by the corresponding array of faction name in [/core/def/mission.sqf#L639-L647](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L639-L647).
## Second way
- Launch your game with all factions mods you want to have in the H&M and launch the H&M mission.
- Execute locally in [debug console](https://community.bistudio.com/wiki/Mission_Editor:_Debug_Console_(Arma_3)) : `copyToClipboard str (["EN"] call btc_fnc_get_class);`.
- Open a text editor and paste the result.
- You have an array of 4 array: [author name, text entry for mission parameters, faction name array, corresponding number for each faction].
- - text entry for mission parameters (second array): copy and paste it in [/core/def/param.hpp#L41](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/param.hpp#L41).
- - corresponding number for each faction (fourth array): copy and paste it in [/core/def/param.hpp#L40](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/param.hpp#L40).
- - faction name array (third array): copy and paste it in [/core/def/mission.sqf#L585](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L585).
+ - text entry for mission parameters (second array): copy and paste it in [/core/def/param.hpp#L83](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/param.hpp#L83).
+ - corresponding number for each faction (fourth array): copy and paste it in [/core/def/param.hpp#L82](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/param.hpp#L82).
+ - faction name array (third array): copy and paste it in [/core/def/mission.sqf#L634](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L634).
-Note: if you don't want some class name take a look here [/core/def/mission.sqf#L600-L621](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L600-L621).
\ No newline at end of file
+Note: if you don't want some class name take a look here [/core/def/mission.sqf#L649-L670](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L649-L670).
\ No newline at end of file
diff --git a/docs/Add-vehicle-or-boat-to-H&M-system.md b/docs/Add-vehicle-or-boat-to-H&M-system.md
index 277959681..b091201ea 100644
--- a/docs/Add-vehicle-or-boat-to-H&M-system.md
+++ b/docs/Add-vehicle-or-boat-to-H&M-system.md
@@ -9,7 +9,7 @@ You can add new vehicle in the mision.sqm :
- Give a unique name like: `btc_veh_16`,`btc_veh_17` ...
- Add in the init field : `this setVariable ["btc_dont_delete",true]`
- Save.
-- Open the [/core/def/mission.sqf L265](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L265)
+- Open the [/core/def/mission.sqf L285](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L285)
- Add names you gave to your vehicles.
- Save.
@@ -20,8 +20,8 @@ A garage is available for admin only. Activate the garage through mission parame
You can add a new vehicle/boat to respawn system by :
- in the editor, name it like **btc_helo_2**
-- in the [core/def/mission.sqf L266](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L266) file, add **btc_helo_2** to the list of btc_helo.
+- in the [core/def/mission.sqf L286](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L286) file, add **btc_helo_2** to the list of btc_helo.
like : btc_helo = [btc_helo_1,**btc_helo_2**];
-Note: you can tweak respawn time here: [/core/init_server.sqf L36](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/init_server.sqf#L36) by changing 30s to what you want.
+Note: you can tweak respawn time here: [/core/init_server.sqf L46](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/init_server.sqf#L46) by changing 30s to what you want.
diff --git a/docs/Change-MAP-of-Hearts-and-Minds.md b/docs/Change-MAP-of-Hearts-and-Minds.md
index 203212edd..07f368217 100644
--- a/docs/Change-MAP-of-Hearts-and-Minds.md
+++ b/docs/Change-MAP-of-Hearts-and-Minds.md
@@ -11,5 +11,5 @@
# Tips :
- Some map does not provide enough city. You can add new cities by using `btc_custom_loc` in [/define_mod.sqf#L1](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/define_mod.sqf#L1) like it has been talk [here](https://forums.bohemia.net/forums/topic/165948-mp-btc-hearts-and-minds/?page=39&tab=comments#comment-3280136).
-- For small map, you should tweak the safezone for hideout spawn ([/core/def/mission.sqf#L132](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L132)).
-- [Some map](https://forums.bohemia.net/forums/topic/165948-mp-btc-hearts-and-minds/?page=52&tab=comments#comment-3348268) use only NameCity for the type of locations but H&M hideouts system looks for "NameLocal", "Hill", "NameVillage", "Airport". You should add in the array the "NameCity" [here](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout.sqf#L44).
+- For small map, you should tweak the safezone for hideout spawn ([/core/def/mission.sqf#L141](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L141)).
+- [Some map](https://forums.bohemia.net/forums/topic/165948-mp-btc-hearts-and-minds/?page=52&tab=comments#comment-3348268) use only NameCity for the type of locations but H&M hideouts system looks for "NameLocal", "Hill", "NameVillage", "Airport". You should add in the array the "NameCity" [here](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout.sqf#L50).
diff --git a/docs/InGame-documentation.md b/docs/InGame-documentation.md
index fe96df662..d363bb088 100644
--- a/docs/InGame-documentation.md
+++ b/docs/InGame-documentation.md
@@ -3,22 +3,13 @@
## Headless & Database
This mission automatically uses one Headless client when available.
-This mission has a database system. Enemy units, towns, hideouts, cache, objects created or static weapons assembled by players or Zeus, vehicles, players markers (not lines) on global channel are saved. All admin can save mission progress at any time with his self interaction key.
-
-
-## Wounds
-Use the interaction menu to treat your wounds. Keep in mind that all the actions will be available, even if you do not need them. It is always recommended examine first.
-
-
-## Deafness
-Use the earplugs to protect your ears to avoid combat deafness. You can put them on with your self interaction key.
-
+This mission has a database system. Enemy units, towns, hideouts, cache, objects created or static weapons assembled by players or Zeus, vehicles, vehicle in vehicle, tag, players markers on global channel are saved. All admin can save mission progress at any time with his self interaction key.
## Chemical Warfare
### Chemical agent:
A chemical agent can be found in the battlefield at cache location for example. When an object is contaminated, the chemical agent propagates to people around (in a circle of 3m). Those people will be hurt constantly until they died or found a decontaminating shower (available at the logistic point) to clean up their body. When they are contaminated, they can propagate it to other people around (in a circle of 1.5m) or vehicle if they get inside. Keep in mind, dead body stay contaminated but body bag will isolate it. Also, a contaminated object loaded as cargo will contaminate the container or vehicle.
### Protection:
-Use CBRN gear (uniform, mask and breather backpack) to protect you from the contamination effect. But, don't forget to take a shower for more than 5s before removing your CBRN gear. Be aware, even with a CBRN equipment you can propagate the agent to people or vehicle, you are just protected from the effect.
+Use CBRN gear (uniform, respirator mask and breather backpack) for full protection from the contamination effect. But, don't forget to take a shower for more than 5s before removing your CBRN gear. Be aware, even with a CBRN equipment you can propagate the agent to people or vehicle, you are just protected from the effect. Simple mask and simple uniform can reduce from 65% to 80% the probability to take damage.
### Decontaminate:
You can use a small shower to decontaminate units only. Use the big shower for objects, vehicles and objects loaded as cargo. To activate them, just stay under the shower.
### Detection:
@@ -36,7 +27,7 @@ You can detect the origin of electromagnetic field with spectrum devices. The am
## Vehicles
### Respawn:
-When a vehicle is destroyed it will not respawn in base, you need to tow or lift it back to base and repair it near the logistic point (Interact with the red box). Helicopter wrecks can only be lifted. The Chinook is the only exception, it will respawn after 30 seconds.
+When a vehicle is destroyed it will not respawn in base, you need to tow, use vehicle in vehicle or lift it back to base and repair it near the logistic point (Interact with the red box). Helicopter wrecks can only be lifted. The Chinook is the only exception, it will respawn after 30 seconds.
### Rearm:
You can also rearm them by spawning the corresponding caliber at logistic point (Interact with the red box, select the vehicle type and caliber). Carry the ammo created and interact with the vehicle to rearm. This only works if rearming is setting on entire magazine or amount based on caliber (not for entire vehicle setting).
@@ -47,16 +38,15 @@ A side mission can be requested by the officer with his self interaction menu.
If you don't want to complete a task, you can always abort it with the self interaction menu.
-## FOB/Rallypoint
+## Respawn position
- FOB:
In this mission a FOB is a forward spawn point, to create a FOB approach the red box at the logistic point and require a blue container.
- Deploy:
- Move it where you want to deploy a new FOB and interact with it to set it up. Keep in mind that you can not deploy a FOB close to the main base (2.500m) and the terrain needs to be flat.
+ Move it where you want to deploy a new FOB and interact with it to set it up. Keep in mind that you can not deploy a FOB close to the main base (2.500m) and the terrain needs to be flat.
- Dismantle:
- You can dismantle a FOB by interacting with the flag on the HQ roof.
-
+ You can dismantle a FOB by interacting with the flag on the HQ roof.
- Rallypoint:
- You can also use the Zeus rallypoint backpack available in Arsenal. Those have a limited number of respawn.
+ You can also use the Zeus rallypoint backpack available in Arsenal but they have some limitation. After some times or after player disconnected, rallypoint will self-destruct.
## Sling loading
@@ -79,6 +69,9 @@ To tow a vehicle interact with it and select the option 'HOOK'. After that place
If the two vehicles are too far away or the vehicle can't tow that load (Car can't tow truck or tank), the option will be disabled.
To unhook interact with one of the two vehicles and select the option 'UNHOOK'.
+### Vehicle in vehicle system:
+BI Vehicle in Vehicle (ViV) system is extended to allow load of any vehicle in a vehicle. To move ViV use the towing system. To unload, move in driver seat of the tower vehicle and select in scroll menu "unload all objects".
+
### Place option:
With this option you can move heavy objects to build small outpost or base.
When you select the option an hint will show all the keys required to move the object.
@@ -93,9 +86,16 @@ To destroy an hideout just place a satchel near the ammo box, it's close to the
## IED
-Any object could be an IED, approach it carefully (DO NOT rotate while you are walking: prefer walk, stop, rotate, walk again etc). Turn On your mine detector (VMH3 or VMMH3) and search for a charge in a circle of 2 meter around.
-If you are an engineer and have a defusal kit, you can disarm it.
-You can also blow them off with high caliber and explosive satchels.
+Any object could be an IED or a fake IED.
+
+### Detection:
+Approach IED carefully (DO NOT rotate while you are walking: prefer walk, stop, rotate, walk again etc). Turn On your mine detector (VMH3 or VMMH3) and search for a charge in a circle of 2 meter around.
+
+### Defuse:
+If you are an engineer and have a defusal kit, you can disarm it. You can also blow them off with high caliber and explosive satchels.
+
+### Clean up
+You can remove wreck or object around IED or fake IED by driving a Nemmera in their direction.
## Intel
@@ -115,12 +115,12 @@ When you destroy an hideout or an ammo cache, all the markers related to it will
## Reputation
-Reputation can be ask to civilian. Bad actions cause bad effects.
-
-Helping the local population, fighting the Oplitas, disarming IED will rise your reputation; killing civilians, mutilate alive/dead civilian, firing near civilians for no reason, damaging/destroying buildings, losing vehicles, respawns will decrease your reputation. At the beginning you have a very low reputation level, so civilians won't help you revealing important information about Oplitas, they will likely lie instead.
-
-Aborting a side mission does not affect reputation.
-
+### System:
+At the beginning you have a very low reputation level, so civilians won't help you in revealing important information about the Oplitas, they will likely lie instead. Reputation can be ask to civilian.
+### Good actions:
+Helping the local population by fighting the Oplitas, disarming IED's, heal civilians, remove tag with spraypaint red, succed side mission and destroy cache/hideout will rise your reputation.
+### Bad actions:
+Bad actions cause bad effects: killing civilians/animals, mutilating alive/dead civilians/animals, firing near civilians for no reason, firing to civilian car, damaging/destroying buildings, losing player's vehicles and player respawns will decrease your reputation. Aborting a side mission does not affect reputation.
## Civil Orders
Any player can give orders to civilians. To do this, just open your self interaction menu and select 'ORDERS' or use one of the shortcuts. Shortcuts can changed under 'configure >> controls>> configure addons >> Hearts and Minds: Mission (drop down menu)'. Your options are:
@@ -134,11 +134,3 @@ You can also drop leaflets to ask all civilians in a circle of 200m to evacuate
## Traffic
Civilians are travelling by vehicle across cities. If your reputation is higher than normal, you can ask for a lift to a location chosen on the map. If you bump into a Oplitas patrol, don't worry, the civilian driver will do their best to hide you in the car.
-
-
-## Gear
-You can choose your gear at the red box inside the base. Located at the spawn point.
-
-
-## Interaction
-Use ACE 3 interactions system.
\ No newline at end of file
diff --git a/docs/faction_player.md b/docs/faction_player.md
index 078441f1b..645bc6524 100644
--- a/docs/faction_player.md
+++ b/docs/faction_player.md
@@ -2,5 +2,5 @@
You can change player faction by:
- Migrate all playable slot to the desired side in /mission.sqm.
-- Define the correct player side in [/core/def/mission.sqf#L373](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L376).
+- Define the correct player side in [/core/def/mission.sqf#L421](https://github.com/Vdauphin/HeartsAndMinds/blob/master/%3DBTC%3Dco%4030_Hearts_and_Minds.Altis/core/def/mission.sqf#L421).
- Choose in mission parameter an enemy faction with a different side from player side.
\ No newline at end of file