Finally another update... warming up

* 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)
This commit is contained in:
eraser1 2015-09-30 21:29:33 -05:00
parent 01f04a0d96
commit 1997fb7614
29 changed files with 154 additions and 79 deletions

View File

@ -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];
};

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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["<t color='#FFFF00' size='1.25'>Humantarian Supplies! </t><br/> A humanitarian supply truck has been sized by ruthless bandits, stop them!"];
_msgStart = format["<t color='#FFFF00' size='1.25'>Food Supplies! </t><br/> A food supply truck has been sized by ruthless bandits, stop them!"];
// Define Mission Win message
_msgWIN = format["<t color='#0080ff' size='1.25'>Humantarian Supplies! </t><br/> Convicts have successfully claimed the humanitarian supplies for themselves!"];
_msgWIN = format["<t color='#0080ff' size='1.25'>Food Supplies! </t><br/> Convicts have successfully claimed the food supplies for themselves!"];
// Define Mission Lose message
_msgLOSE = format["<t color='#FF0000' size='1.25'>Humantarian Supplies! </t><br/> The bandits have taken the humanitarian supplies and escaped!"];
_msgLOSE = format["<t color='#FF0000' size='1.25'>Food Supplies! </t><br/> 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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");

View File

@ -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
{

View File

@ -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;
};
};

View File

@ -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)];

View File

@ -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;

View File

@ -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
{

View File

@ -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];
};
};

Binary file not shown.

View File

@ -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