diff --git a/README.md b/README.md
index 5301356..83e6896 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Exile Occupation (a3_exile_occupation)
-![v68 New Features](https://img.shields.io/badge/v68-New%20Features-red.svg) ![Arma 1.70](https://img.shields.io/badge/Arma-1.70-blue.svg) ![Exile 1.0.2 Kohlrabi](https://img.shields.io/badge/Exile-1.0.2%20Kohlrabi-C72651.svg)
+![v69 New Features](https://img.shields.io/badge/v69-New%20Features-red.svg) ![Arma 1.72](https://img.shields.io/badge/Arma-1.72-blue.svg) ![Exile 1.0.3 Lemon](https://img.shields.io/badge/Exile-1.0.3%20Lemon-C72651.svg)
WTF is Occupation?
An AI spawner and monitor to be used in conjunction with DMS and will not work without it:
@@ -16,13 +16,13 @@ http://www.armaholic.com/page.php?id=16369 - (Please note, only use the x64 vers
For more info:
http://www.exilemod.com/topic/12517-release-exile-occupation-roaming-ai
-###License Overview:
+## License Overview:
This work is protected by [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](http://creativecommons.org/licenses/by-nc-sa/4.0/). By using, downloading, or copying any of the work contained, you agree to the license included.
![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)
Exile Occupation by second_coming is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
-### Donations:
+## Donations:
Anyone wishing to donate can do so here http://exileyorkshire.co.uk/
All donations go towards coffee to keep me awake :)
-###Updated and modified by [FPS]kuplion
\ No newline at end of file
+### Updated and modified by [FPS]kuplion
\ No newline at end of file
diff --git a/pre-packaged pbo/a3_exile_occupation.pbo b/pre-packaged pbo/a3_exile_occupation.pbo
index 790fbc3..306c75e 100644
Binary files a/pre-packaged pbo/a3_exile_occupation.pbo and b/pre-packaged pbo/a3_exile_occupation.pbo differ
diff --git a/source/a3_exile_occupation/config.cpp b/source/a3_exile_occupation/config.cpp
index f08916b..9d41155 100644
--- a/source/a3_exile_occupation/config.cpp
+++ b/source/a3_exile_occupation/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
- a3_exile_occupation_version = "V68 (16-05-2017)";
+ a3_exile_occupation_version = "V69 (21-07-2017)";
requiredAddons[] = {"a3_dms"};
author[]= {"second_coming - updated/modified by [FPS]kuplion"};
};
diff --git a/source/a3_exile_occupation/config.sqf b/source/a3_exile_occupation/config.sqf
index bc392eb..473a6d0 100644
--- a/source/a3_exile_occupation/config.sqf
+++ b/source/a3_exile_occupation/config.sqf
@@ -210,6 +210,7 @@ SC_SpawnHeliCrashGuards = true; // true if you want to enable AI guards
SC_numberofHeliCrashes = 5; // if SC_occupyHeliCrashes = true spawn this many Heli Crashes
SC_HeliCrashGuards = 6; // number of AI to spawn at each crate
SC_HeliCrashGuardsRandomize = true; // Use a random number of guards up to a maximum = SC_HeliCrashGuards (so between 1 and SC_HeliCrashGuards)
+SC_HeliCrashMarkers = true; // true if you want to have markers on the Heli Crashes
// Array of possible common items to go in heli crash crates ["classname",fixed amount,random amount] NOT INCLUDING WEAPONS
// ["HandGrenade",0,2] this example would add between 0 and 2 HandGrenade to the crate (fixed 0 plus 0-2 random)
@@ -455,11 +456,18 @@ if (worldName == 'Chernarus' AND SC_useMapOverrides) then
if (worldName == 'Tanoa' AND SC_useMapOverrides) then
{
- SC_useApexClasses = true;
- SC_maxAIcount = 80;
+ SC_maxAIcount = 80;
+ SC_useApexClasses = true;
};
+if (worldName == 'Malden' AND SC_useMapOverrides) then
+{
+ SC_maxAIcount = 70;
+ SC_useApexClasses = false;
+
+};
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Apex Specific Settings (only used if SC_useApexClasses = true)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/source/a3_exile_occupation/scripts/functions/fnc_findsafePos.sqf b/source/a3_exile_occupation/scripts/functions/fnc_findsafePos.sqf
index 8b8e6aa..debe2e2 100644
--- a/source/a3_exile_occupation/scripts/functions/fnc_findsafePos.sqf
+++ b/source/a3_exile_occupation/scripts/functions/fnc_findsafePos.sqf
@@ -57,7 +57,7 @@ while{!_validspot} do
{
_nearestRoad = _nearRoads select 0;
_position = position _nearestRoad;
- _isEmpty = !(_position isFlatEmpty [15, -1, -1, -1, -1, false, player] isEqualTo []); // Check if there is 15m space around the road position to try and stop vehicles spawning on dirt tracks on Tanoa
+ _isEmpty = !(_position isFlatEmpty [10, -1, -1, -1, -1, false, player] isEqualTo []); // Check if there is 15m space around the road position to try and stop vehicles spawning on dirt tracks on Tanoa
if(!_isEmpty) then
{
_validspot = false;
diff --git a/source/a3_exile_occupation/scripts/functions/fnc_selectName.sqf b/source/a3_exile_occupation/scripts/functions/fnc_selectName.sqf
index 607045c..b9b7b01 100644
--- a/source/a3_exile_occupation/scripts/functions/fnc_selectName.sqf
+++ b/source/a3_exile_occupation/scripts/functions/fnc_selectName.sqf
@@ -9,13 +9,13 @@ if(SC_useRealNames) then
{
case "survivor":
{
- _firstName = SC_SurvivorFirstNames call BIS_fnc_selectRandom;
- _lastName = SC_SurvivorLastNames call BIS_fnc_selectRandom;
+ _firstName = selectRandom SC_SurvivorFirstNames;
+ _lastName = selectRandom SC_SurvivorLastNames;
};
case "bandit":
{
- _firstName = SC_BanditFirstNames call BIS_fnc_selectRandom;
- _lastName = SC_BanditLastNames call BIS_fnc_selectRandom;
+ _firstName = selectRandom SC_BanditFirstNames;
+ _lastName = selectRandom SC_BanditLastNames;
};
};
_name = format["%1 %2",_firstName,_lastName];
diff --git a/source/a3_exile_occupation/scripts/occupationHeliCrashes.sqf b/source/a3_exile_occupation/scripts/occupationHeliCrashes.sqf
index 8109c34..5503442 100644
--- a/source/a3_exile_occupation/scripts/occupationHeliCrashes.sqf
+++ b/source/a3_exile_occupation/scripts/occupationHeliCrashes.sqf
@@ -35,11 +35,23 @@ for "_i" from 1 to SC_numberofHeliCrashes do
_validspot = true;
//Check if near another heli crash site
- _nearOtherCrash = (nearestObjects [_position,["Land_UWreck_MV22_F"],750]) select 0;
+ _nearOtherCrash = (nearestObjects [_position,[
+ // Trucks
+ "Land_Wreck_BMP2_F",
+ "Land_Wreck_HMMWV_F",
+ "Land_Wreck_BRDM2_F",
+ "Land_Wreck_Ural_F",
+ // Tanks
+ "Land_Wreck_Slammer_F",
+ // Helis
+ "Land_Wreck_Heli_Attack_02_F",
+ "Land_UWreck_Heli_Attack_02_F",
+ // VTOL
+ "Land_UWreck_MV22_F"],750]) select 0;
if (!isNil "_nearOtherCrash") then { _validspot = false; };
//Check if near another loot crate site
- _nearOtherCrate = (nearestObjects [_position,["CargoNet_01_box_F"],500]) select 0;
+ _nearOtherCrate = (nearestObjects [_position,["Exile_Container_SupplyBox"],500]) select 0;
if (!isNil "_nearOtherCrate") then { _validspot = false; };
};
@@ -47,7 +59,20 @@ for "_i" from 1 to SC_numberofHeliCrashes do
_logDetail = format['[OCCUPATION:HeliCrashes] Crash %1 : Location %2',_i,_position];
[_logDetail] call SC_fnc_log;
- _helicopter = "Land_UWreck_MV22_F";
+ _helicopter = selectRandom [
+ // Trucks
+ "Land_Wreck_BMP2_F",
+ "Land_Wreck_HMMWV_F",
+ "Land_Wreck_BRDM2_F",
+ "Land_Wreck_Ural_F",
+ // Tanks
+ "Land_Wreck_Slammer_F",
+ // Helis
+ "Land_Wreck_Heli_Attack_02_F",
+ "Land_UWreck_Heli_Attack_02_F",
+ // VTOL
+ "Land_UWreck_MV22_F"
+ ];
_vehHeli = _helicopter createVehicle [0,0,0];
_effect = "test_EmptyObjectForSmoke";
@@ -60,6 +85,7 @@ for "_i" from 1 to SC_numberofHeliCrashes do
_heliFire = _effect createVehicle (position _vehHeli);
_heliFire attachto [_vehHeli, [0,0,-1]];
_vehHeli setPos _position;
+ _vehHeli setVectorUp surfaceNormal position _vehHeli;
if (SC_SpawnHeliCrashGuards) then
{
@@ -106,7 +132,7 @@ for "_i" from 1 to SC_numberofHeliCrashes do
}foreach units _initialGroup;
deleteGroup _initialGroup;
- [_group, _spawnPosition, 100] call bis_fnc_taskPatrol;
+ [_group, _spawnPosition, 25] call bis_fnc_taskPatrol;
_group setBehaviour "STEALTH";
_group setCombatMode "RED";
@@ -122,12 +148,12 @@ for "_i" from 1 to SC_numberofHeliCrashes do
_mapMarkerName = format ["SC_helicrash_marker_%1", _i];
- if (SC_occupyLootCratesMarkers) then
+ if (SC_HeliCrashMarkers) then
{
_heli_marker = createMarker [ format ["SC_helicrash_marker_%1", _i], _position];
_heli_marker setMarkerColor "ColorOrange";
_heli_marker setMarkerAlpha 1;
- _heli_marker setMarkerText "Helicrash";
+ _heli_marker setMarkerText "Heli Crash";
_heli_marker setMarkerType "c_air";
_heli_marker setMarkerBrush "Vertical";
_heli_marker setMarkerSize [(1), (1)];
diff --git a/source/a3_exile_occupation/scripts/occupationLootCrates.sqf b/source/a3_exile_occupation/scripts/occupationLootCrates.sqf
index 83b80af..41743a0 100644
--- a/source/a3_exile_occupation/scripts/occupationLootCrates.sqf
+++ b/source/a3_exile_occupation/scripts/occupationLootCrates.sqf
@@ -32,7 +32,7 @@ for "_i" from 1 to SC_numberofLootCrates do
_validspot = true;
//Check if near another crate site
- _nearOtherCrate = (nearestObjects [_position,["CargoNet_01_box_F"],500]) select 0;
+ _nearOtherCrate = (nearestObjects [_position,["Exile_Container_SupplyBox"],500]) select 0;
if (!isNil "_nearOtherCrate") then { _validspot = false; };
};
@@ -41,12 +41,10 @@ for "_i" from 1 to SC_numberofLootCrates do
if (SC_occupyLootCratesMarkers) then
{
_event_marker = createMarker [ format ["SC_loot_marker_%1", _i], _position];
- _event_marker setMarkerColor "ColorGreen";
+ _event_marker setMarkerColor "ColorWhite";
_event_marker setMarkerAlpha 1;
_event_marker setMarkerText "Gear Crate";
- _event_marker setMarkerType "loc_Tree";
- _event_marker setMarkerBrush "Vertical";
- _event_marker setMarkerSize [(3), (3)];
+ _event_marker setMarkerType "ExileMissionStrongholdIcon";
};
if (SC_SpawnLootCrateGuards) then
@@ -94,7 +92,7 @@ for "_i" from 1 to SC_numberofLootCrates do
}foreach units _initialGroup;
deleteGroup _initialGroup;
- [_group, _spawnPosition, 100] call bis_fnc_taskPatrol;
+ [_group, _spawnPosition, 25] call bis_fnc_taskPatrol;
_group setBehaviour "STEALTH";
_group setCombatMode "RED";
@@ -110,7 +108,7 @@ for "_i" from 1 to SC_numberofLootCrates do
- _box = "CargoNet_01_box_F" createvehicle _position;
+ _box = "Exile_Container_SupplyBox" createvehicle _position;
clearMagazineCargoGlobal _box;
clearWeaponCargoGlobal _box;
clearItemCargoGlobal _box;
@@ -147,6 +145,38 @@ for "_i" from 1 to SC_numberofLootCrates do
{
_box addBackpackCargoGlobal [_item, _amount];
};
- }forEach SC_LootCrateItems;
+ }forEach SC_LootCrateItems;
+ // Add a wreck for defensive purposes
+ _wrecks = selectRandom [
+ // Trucks
+ "Land_Wreck_BMP2_F",
+ "Land_Wreck_HMMWV_F",
+ "Land_Wreck_BRDM2_F",
+ "Land_Wreck_Ural_F",
+ // Tanks
+ "Land_Wreck_Slammer_F",
+ // Helis
+ "Land_Wreck_Heli_Attack_02_F",
+ "Land_UWreck_Heli_Attack_02_F",
+ // VTOL
+ "Land_UWreck_MV22_F"
+ ];
+
+ _vehWreck = _wrecks createVehicle [0,0,0];
+
+ /*
+ _effect = "test_EmptyObjectForSmoke";
+ if(SC_HeliCrashesOnFire) then
+ {
+ _effect = "test_EmptyObjectForFireBig";
+ };
+ _wreckFire = _effect createVehicle (position _vehWreck);
+ _wreckFire attachto [_vehWreck, [0,0,-1]];
+ */
+
+ _vehWreckRelPos = _box getRelPos [(10 + (ceil random 15)), (random 360)];
+ _vehWreck setPos _vehWreckRelPos;
+ _vehWreck setDir (random 360);
+ _vehWreck setVectorUp surfaceNormal position _vehWreck;
};
\ No newline at end of file
diff --git a/source/a3_exile_occupation/scripts/occupationTransport.sqf b/source/a3_exile_occupation/scripts/occupationTransport.sqf
index 8fd0424..6d0207a 100644
--- a/source/a3_exile_occupation/scripts/occupationTransport.sqf
+++ b/source/a3_exile_occupation/scripts/occupationTransport.sqf
@@ -119,7 +119,7 @@ while {true} do
_transport setFuel 1;
_transport setDamage 0;
_transport engineOn true;
- _transport flyInHeight 300;
+ _transport flyInHeight 500;
}
else
{
diff --git a/source/a3_exile_occupation/scripts/occupationVehicle.sqf b/source/a3_exile_occupation/scripts/occupationVehicle.sqf
index a744ccc..49d9d99 100644
--- a/source/a3_exile_occupation/scripts/occupationVehicle.sqf
+++ b/source/a3_exile_occupation/scripts/occupationVehicle.sqf
@@ -30,7 +30,7 @@ if((_aiActive > _maxAIcount) && !SC_occupyLandVehicleIgnoreCount) exitWith
SC_liveVehicles = count(SC_liveVehiclesArray);
-if(SC_liveVehicles >= SC_maxNumberofVehicles) exitWith
+if (SC_liveVehicles >= SC_maxNumberofVehicles) exitWith
{
_logDetail = format['[OCCUPATION:Vehicle] End check %1 currently active (max %2) @ %3',SC_liveVehicles,SC_maxNumberofVehicles,time];
[_logDetail] call SC_fnc_log;
@@ -186,7 +186,7 @@ if(_vehiclesToSpawn > 0) then
if(SC_occupyVehiclesLocked) then
{
- _vehicle lock 2;
+ _vehicle lock 3;
_vehicle setVehicleLock "LOCKED";
_vehicle setVariable ["ExileIsLocked", 1, true];
}