diff --git a/@ExileServer/addons/a3_dms/config.sqf b/@ExileServer/addons/a3_dms/config.sqf index 0576ba5..a5dfde0 100644 --- a/@ExileServer/addons/a3_dms/config.sqf +++ b/@ExileServer/addons/a3_dms/config.sqf @@ -610,14 +610,3 @@ DMS_DEBUG = false; "Exile_Chopper_Taru_Transport_Black" ]; /* Loot Settings */ - - -// Debug Overwrites -if(DMS_DEBUG) then -{ - DMS_TimeBetweenMissions = [10,15]; - DMS_MissionTimeOut = [60,70]; - //DMS_BanditMissionTypes = [["testmission",1]]; - //DMS_BanditMissionTypes = [["mercbase",1]]; - diag_log format ["DMS_DEBUG CONFIG :: Overriding DMS_TimeBetweenMissions (%1) and DMS_MissionTimeOut (%2)",DMS_TimeBetweenMissions,DMS_MissionTimeOut]; -}; diff --git a/@ExileServer/addons/a3_dms/missions/bandit/bandits.sqf b/@ExileServer/addons/a3_dms/missions/bandit/bandits.sqf index 384d74c..605490a 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/bandits.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/bandits.sqf @@ -36,7 +36,7 @@ _group = // Create Crate _crate = ["Box_NATO_Wps_F",_pos] call DMS_fnc_SpawnCrate; -_vehicle = ["Exile_Car_Offroad_Armed_Guerilla01",_pos] call DMS_fnc_SpawnNonPersistentVehicle; +_vehicle = ["Exile_Car_Offroad_Armed_Guerilla01",[_pos,3+(random 5),random 360] call DMS_fnc_SelectOffsetPos] call DMS_fnc_SpawnNonPersistentVehicle; // Set crate loot values _crate_loot_values = @@ -106,7 +106,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/bauhaus.sqf b/@ExileServer/addons/a3_dms/missions/bandit/bauhaus.sqf index db42eab..9fc931d 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/bauhaus.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/bauhaus.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -117,7 +117,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/beertransport.sqf b/@ExileServer/addons/a3_dms/missions/bandit/beertransport.sqf index da597c4..9a0ca26 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/beertransport.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/beertransport.sqf @@ -16,11 +16,11 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty -_difficulty = "difficult"; +_difficulty = "easy"; // Create AI @@ -110,7 +110,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/behindenemylines.sqf b/@ExileServer/addons/a3_dms/missions/bandit/behindenemylines.sqf index 71554f1..9365890 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/behindenemylines.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/behindenemylines.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -110,7 +110,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/blackhawkdown.sqf b/@ExileServer/addons/a3_dms/missions/bandit/blackhawkdown.sqf index a745a3c..3d38577 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/blackhawkdown.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/blackhawkdown.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -110,7 +110,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/cardealer.sqf b/@ExileServer/addons/a3_dms/missions/bandit/cardealer.sqf index 405326d..44eaea0 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/cardealer.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/cardealer.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -115,7 +115,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/construction.sqf b/@ExileServer/addons/a3_dms/missions/bandit/construction.sqf index bd969c0..117941d 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/construction.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/construction.sqf @@ -113,7 +113,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/donthasslethehoff.sqf b/@ExileServer/addons/a3_dms/missions/bandit/donthasslethehoff.sqf index 38e6105..10c360a 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/donthasslethehoff.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/donthasslethehoff.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -124,7 +124,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/foodtransport.sqf b/@ExileServer/addons/a3_dms/missions/bandit/foodtransport.sqf index c19ed85..b3d9a69 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/foodtransport.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/foodtransport.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -66,16 +66,16 @@ _missionObjs = ]; // Define Mission Start message -_msgStart = format["Humantarian Supplies!
A humanitarian supply truck has been sized by ruthless bandits, stop them!"]; +_msgStart = format["Food Supplies!
A food supply truck has been sized by ruthless bandits, stop them!"]; // Define Mission Win message -_msgWIN = format["Humantarian Supplies!
Convicts have successfully claimed the humanitarian supplies for themselves!"]; +_msgWIN = format["Food Supplies!
Convicts have successfully claimed the food supplies for themselves!"]; // Define Mission Lose message -_msgLOSE = format["Humantarian Supplies!
The bandits have taken the humanitarian supplies and escaped!"]; +_msgLOSE = format["Food Supplies!
The bandits have taken the food supplies and escaped!"]; // Define mission name (for map marker and logging) -_missionName = "Humantarian Supplies"; +_missionName = "Food Supplies"; // Create Markers _markers = @@ -110,7 +110,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/guntransport.sqf b/@ExileServer/addons/a3_dms/missions/bandit/guntransport.sqf index 39a8191..83a7c4a 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/guntransport.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/guntransport.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -110,7 +110,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/humanitarian.sqf b/@ExileServer/addons/a3_dms/missions/bandit/humanitarian.sqf index fcb62c6..af3f05a 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/humanitarian.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/humanitarian.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -110,7 +110,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/lost_battalion.sqf b/@ExileServer/addons/a3_dms/missions/bandit/lost_battalion.sqf index b3faf98..5780b13 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/lost_battalion.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/lost_battalion.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -108,7 +108,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/medical.sqf b/@ExileServer/addons/a3_dms/missions/bandit/medical.sqf index 94a3f51..37b3bbb 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/medical.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/medical.sqf @@ -110,7 +110,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/mercbase.sqf b/@ExileServer/addons/a3_dms/missions/bandit/mercbase.sqf index 3668ef5..375affa 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/mercbase.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/mercbase.sqf @@ -32,11 +32,18 @@ _group = _side ] call DMS_fnc_SpawnAIGroup; -// Use "base" waypoint instead -while {(count (waypoints _group)) > 0} do -{ - deleteWaypoint ((waypoints _group) select 0); -}; +_veh = +[ + [ + [_pos,100,random 360] call DMS_fnc_SelectOffsetPos, + _pos + ], + _group, + "assault", + _difficulty, + _side +] call DMS_fnc_SpawnAIVehicle; + [ _group, @@ -84,7 +91,7 @@ _missionAIUnits = // Define mission-spawned objects and loot values _missionObjs = [ - _staticGuns+_baseObjs, // base objects and static gun + _staticGuns+_baseObjs+[_veh], // armed AI vehicle, base objects, and static gun [], [[_crate,"Sniper"]] ]; @@ -134,7 +141,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/mercenaries.sqf b/@ExileServer/addons/a3_dms/missions/bandit/mercenaries.sqf index 16315d3..a8c02d2 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/mercenaries.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/mercenaries.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -108,7 +108,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/roguenavyseals.sqf b/@ExileServer/addons/a3_dms/missions/bandit/roguenavyseals.sqf index 278f0f8..febbfa6 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/roguenavyseals.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/roguenavyseals.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -108,7 +108,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/testmission.sqf b/@ExileServer/addons/a3_dms/missions/bandit/testmission.sqf index 932f906..490ca5e 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/testmission.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/testmission.sqf @@ -13,7 +13,7 @@ _side = "bandit"; // find position -_pos = [10,10] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -155,7 +155,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/missions/bandit/walmart.sqf b/@ExileServer/addons/a3_dms/missions/bandit/walmart.sqf index d2bd715..efb871f 100644 --- a/@ExileServer/addons/a3_dms/missions/bandit/walmart.sqf +++ b/@ExileServer/addons/a3_dms/missions/bandit/walmart.sqf @@ -16,7 +16,7 @@ _side = "bandit"; // find position -_pos = [10,100] call DMS_fnc_findSafePos; +_pos = [10] call DMS_fnc_findSafePos; // Set general mission difficulty @@ -113,7 +113,9 @@ _added = _missionObjs, [_msgWIN,_msgLOSE], _markers, - _side + _side, + _difficulty, + [] ] call DMS_fnc_AddMissionToMonitor; // Check to see if it was added correctly, otherwise delete the stuff diff --git a/@ExileServer/addons/a3_dms/scripts/fn_AddMissionToMonitor.sqf b/@ExileServer/addons/a3_dms/scripts/fn_AddMissionToMonitor.sqf index 93e166b..a0d281f 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_AddMissionToMonitor.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_AddMissionToMonitor.sqf @@ -42,15 +42,16 @@ ], [_msgWIN,_msgLose], [_markerDot,_markerCircle], - _side + _side, + _difficulty, + _missionEvents ] call DMS_fnc_AddMissionToMonitor; Returns whether or not info was added successfully - "_completionInfo", "_timeOutInfo", "_inputUnits", "_missionObjs", "_messages", "_markers", "_side", "_timeStarted", "_timeUntilFail" */ -private ["_added", "_pos", "_OK", "_completionInfo", "_timeOutInfo", "_inputUnits", "_missionObjs", "_mines", "_messages", "_markers", "_timeStarted", "_timeUntilFail", "_buildings", "_vehs", "_crate_info_array", "_msgWIN", "_msgLose", "_markerDot", "_markerCircle", "_side","_arr"]; +private ["_added", "_pos", "_OK", "_completionInfo", "_timeOutInfo", "_inputUnits", "_missionObjs", "_mines", "_messages", "_markers", "_timeStarted", "_timeUntilFail", "_buildings", "_vehs", "_crate_info_array", "_msgWIN", "_msgLose", "_markerDot", "_markerCircle", "_side", "_difficulty", "_missionEvents", "_arr"]; _added = false; @@ -64,7 +65,9 @@ _OK = params ["_missionObjs","",[[]],[3,4]], ["_messages","",[[]],[2]], ["_markers","",[[]],[2]], - ["_side","bandit",[""]] + ["_side","bandit",[""]], + ["_difficulty","moderate",[""]], + ["_missionEvents",[],[[]]] ]; if (!_OK) exitWith @@ -124,6 +127,12 @@ try _mines = _missionObjs param [3,[],[[]]]; }; + // Don't spawn a minefield if there is one already defined in _missionObjs. + if (DMS_SpawnMinefieldForEveryMission && {_mines isEqualTo []}) then + { + _mines = [_pos, _difficulty, _side] call DMS_fnc_SpawnMinefield; + }; + _OK = _messages params [ @@ -170,7 +179,9 @@ try _markerDot, _markerCircle ], - _side + _side, + _difficulty, + _missionEvents ]; DMS_Mission_Arr pushBack _arr; _added = true; diff --git a/@ExileServer/addons/a3_dms/scripts/fn_FindSafePos.sqf b/@ExileServer/addons/a3_dms/scripts/fn_FindSafePos.sqf index 4d9c54b..743d634 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_FindSafePos.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_FindSafePos.sqf @@ -74,8 +74,6 @@ while{!_validspot} do if (DMS_MissionNearBlacklist>0) then { _missionPos = missionNamespace getVariable [format ["%1_pos",_x], []]; - - diag_log format["Marker %1 has _missionPos: %2",_x,_missionPos]; if (!(_missionPos isEqualTo []) && {(_missionPos distance2D _pos)<=DMS_MissionNearBlacklist}) then { throw ("another mission"); diff --git a/@ExileServer/addons/a3_dms/scripts/fn_ImportFromM3E_Convert.sqf b/@ExileServer/addons/a3_dms/scripts/fn_ImportFromM3E_Convert.sqf index 781593f..465cdc2 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_ImportFromM3E_Convert.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_ImportFromM3E_Convert.sqf @@ -58,7 +58,7 @@ _export = call compile preprocessFileLineNumbers (format ["\x\addons\DMS\objects if (_x select 4) then { _obj setDir (_x select 2); - _obj setPos _pos; + _obj setPosATL _pos; } else { diff --git a/@ExileServer/addons/a3_dms/scripts/fn_OnKilled.sqf b/@ExileServer/addons/a3_dms/scripts/fn_OnKilled.sqf index 1d7dff6..6eba288 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_OnKilled.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_OnKilled.sqf @@ -15,7 +15,7 @@ */ -private ["_unit", "_killer", "_side", "_type", "_launcher", "_playerObj", "_rockets", "_grpUnits", "_av", "_memCount", "_gunner", "_driver", "_veh", "_moneyChange", "_repChange", "_money", "_respect", "_roadKilled"]; +private ["_unit", "_killer", "_side", "_type", "_launcher", "_launcherVar", "_playerObj", "_removeAll", "_rockets", "_grpUnits", "_av", "_memCount", "_gunner", "_driver", "_gunnerIsAlive", "_driverIsAlive", "_grp", "_owner", "_start", "_roadKilled", "_veh", "_boom", "_revealAmount", "_silencer", "_moneyChange", "_repChange", "_money", "_respect", "_msgType", "_msgParams"]; if (DMS_DEBUG) then @@ -245,16 +245,6 @@ if (isPlayer _killer) then _playerObj = _killer; - // Reveal the killer to the AI units - if (DMS_ai_share_info) then - { - { - if (((position _x) distance2D (position _unit)) <= DMS_ai_share_info_distance ) then - { - _x reveal [_killer, 4.0]; - }; - } forEach allUnits; - }; // Fix for players killing AI from mounted vehicle guns if (!(_killer isKindOf "Exile_Unit_Player") && {!isNull (gunner _killer)}) then @@ -286,6 +276,27 @@ if (isPlayer _killer) then _unit call _removeAll; }; }; + + + // Reveal the killer to the AI units + if (DMS_ai_share_info) then + { + _revealAmount = 4.0; + + _silencer = _playerObj weaponAccessories currentMuzzle _playerObj select 0; + if (!isNil "_silencer" && {_silencer != ""}) then + { + _revealAmount = 2.0; + }; + + + { + if ((alive _x) && {!(isPlayer _x) && {((getPosWorld _x) distance2D (getPosWorld _unit)) <= DMS_ai_share_info_distance}}) then + { + _x reveal [_killer, _revealAmount max (_x knowsAbout _playerObj)]; + }; + } forEach allUnits; + }; }; diff --git a/@ExileServer/addons/a3_dms/scripts/fn_SetGroupBehavior.sqf b/@ExileServer/addons/a3_dms/scripts/fn_SetGroupBehavior.sqf index cc08b03..907a69e 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_SetGroupBehavior.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_SetGroupBehavior.sqf @@ -45,6 +45,14 @@ if(_difficulty == "random") then _radius = missionNamespace getVariable [format["DMS_AI_WP_Radius_%1",_difficulty],40]; + +// Remove all previous waypoints +for "_i" from count (waypoints _group) to 1 step -1 do +{ + deleteWaypoint ((waypoints _group) select _i); +}; + +// Add waypoints around the center position. for "_i" from 0 to 359 step 45 do { _npos = [(_pos select 0) + (sin(_i)*_radius), (_pos select 1) + (cos(_i)*_radius)]; diff --git a/@ExileServer/addons/a3_dms/scripts/fn_SpawnAIGroup.sqf b/@ExileServer/addons/a3_dms/scripts/fn_SpawnAIGroup.sqf index 865d938..ca1fea1 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_SpawnAIGroup.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_SpawnAIGroup.sqf @@ -8,7 +8,7 @@ _pos, // Position of AI _count, // Number of AI _difficulty, // AI Difficulty: "random","hardcore","difficult","moderate", or "easy" - _class // AI Class: "random","assault","MG","sniper" or "unarmed" OR [_class,_launcher] + _class, // AI Class: "random","assault","MG","sniper" or "unarmed" OR [_class,_launcher] _side // Only "bandit" is supported atm ] call DMS_fnc_SpawnAIGroup; diff --git a/@ExileServer/addons/a3_dms/scripts/fn_SpawnAISoldier.sqf b/@ExileServer/addons/a3_dms/scripts/fn_SpawnAISoldier.sqf index e6468eb..efc4f0e 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_SpawnAISoldier.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_SpawnAISoldier.sqf @@ -104,7 +104,7 @@ switch (toLower _class) do }; // Unit name -_unit setName format["[DMS_Unit_%1%2]",_class,floor(random 1000)]; +_unit setName format["[DMS_%3Unit_%1%2]",_class,floor(random 1000),toUpper _side]; if (!_useCustomGear) then { diff --git a/@ExileServer/addons/a3_dms/scripts/fn_SpawnMinefield.sqf b/@ExileServer/addons/a3_dms/scripts/fn_SpawnMinefield.sqf index 3fad2b5..74729e7 100644 --- a/@ExileServer/addons/a3_dms/scripts/fn_SpawnMinefield.sqf +++ b/@ExileServer/addons/a3_dms/scripts/fn_SpawnMinefield.sqf @@ -12,7 +12,7 @@ ] call DMS_fnc_SpawnMinefield; */ -private ["_centerPos", "_difficulty", "_side", "_mines", "_minesInfo", "_AISide", "_mineCount", "_radius"]; +private ["_centerPos", "_difficulty", "_side", "_mines", "_minesInfo", "_AISide", "_mineCount", "_radius", "_randDirOffset", "_sign"]; _mines = []; @@ -80,9 +80,10 @@ if (DMS_SpawnMinesAroundMissions) then if (_spawnWarningSign) then { + _randDirOffset = random 45; for "_i" from 0 to 359 step 90 do { - _sign = createVehicle ["Land_Sign_Mines_F",[_centerPos, _radius+2, _i] call DMS_fnc_SelectOffsetPos, [], 0, "CAN_COLLIDE"]; + _sign = createVehicle ["Land_Sign_Mines_F",[_centerPos, _radius+2, _randDirOffset+_i] call DMS_fnc_SelectOffsetPos, [], 0, "CAN_COLLIDE"]; _sign setDir _i; _sign setVectorUp [0,0,1]; @@ -93,7 +94,7 @@ if (DMS_SpawnMinesAroundMissions) then if (DMS_DEBUG) then { - diag_log format ["DMS_DEBUG SpawnMinefield :: Spawned %1 mines around %2 with _minesInfo: %3 | _mines: %4",count _mines,_centerPos,_minesInfo,_mines]; + diag_log format ["DMS_DEBUG SpawnMinefield :: Spawned %1 mines around %2 with _minesInfo: %3 | Warning signs spawned: %5 | _mines: %4",_mineCount,_centerPos,_minesInfo,_mines,_spawnWarningSign]; }; }; diff --git a/Pre-Packed PBO/a3_dms.pbo b/Pre-Packed PBO/a3_dms.pbo index 22364f5..12e3f74 100644 Binary files a/Pre-Packed PBO/a3_dms.pbo and b/Pre-Packed PBO/a3_dms.pbo differ diff --git a/README.md b/README.md index 8bdeaee..481ac0e 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,20 @@ if (!hasInterface && !isServer) then ## Changelog: +#### September 30, 2015 (9:30 PM CST-America): +* NEW CONFIG VALUE: DMS_SpawnMinefieldForEveryMission +* You can now force-spawn an AT mine minefield on every mission with the above config. These mines will only blow up on Tanks, APCs, and MRAPs (Ifrits, Hunters, Striders). +* ALL MISSIONS HAVE BEEN EDITED TO MATCH THE NEW STANDARD FOR DMS_fnc_AddMissionToMonitor. **If you have made any custom missions or modified any of the current mission scripts, make sure you merge your changes**! +* Adjusted the placement of the armed car in "bandits" mission. It should no longer spawn right on the crate. +* Marker and message names for the "foodtransport" mission have been adjusted. +* Added the AI vehicle to the "mercbase" mission. +* Removed some RPT spam... +* Standardize ATL for DMS_fnc_importFromM3E_Convert +* When revealing a player to AI, the reveal amount will be reduced if the player has a suppressor. +* DMS_fnc_SetGroupBehavior will now remove all previous waypoints from the AI group. +* Improved logging message for DMS_fnc_SpawnMinefield. Also, the mine warning signs should be on a random offset (instead of always spawning at 0, 90, 180, and 270 degrees) + + #### September 25, 2015 (11:30 PM CST-America): * Improved DMS_fnc_FindSafePos when checking for nearby missions - it should now use the proper mission location (if it was given correctly in the parameters for DMS_fnc_CreateMarker) instead of the marker position, which could be offset. Thanks to [Rod Serling](https://github.com/Rod-Serling) for complaining about this "issue" :P