Relatively minor tweaks today

* NEW CONFIG VALUES:
DMS_SpawnMineWarningSigns
DMS_BulletProofMines
* You can now manually define the rare loot chance per crate.
* You can now define the mine amount and radius directly from the call
for DMS_fnc_SpawnMinefield.
This commit is contained in:
eraser1
2015-09-25 19:28:04 -05:00
parent 39af7c584c
commit fdee4e4527
5 changed files with 73 additions and 15 deletions

View File

@ -69,6 +69,8 @@ DMS_DEBUG = false;
DMS_MineInfo_moderate = [10,50]; // Mine info for "moderate" missions. This will spawn 10 mines within a 50m radius.
DMS_MineInfo_difficult = [15,75]; // Mine info for "difficult" missions. This will spawn 15 mines within a 75m radius.
DMS_MineInfo_hardcore = [25,100]; // Mine info for "hardcore" missions. This will spawn 25 mines within a 100m radius.
DMS_SpawnMineWarningSigns = true; // Whether or not to spawn mine warning signs around a minefield.
DMS_BulletProofMines = true; // Whether or not you want to make the mines bulletproof. Prevents players from being able to shoot the mines and creating explosions.
/*Mine settings*/
DMS_MinPlayerCount = 0; // Minimum number of players until mission start

View File

@ -6,8 +6,9 @@
Usage:
[
_crate, // The crate object
_lootValues // Array, string, or number. String or number refers to a crate case in config.cfg; array determines random crate weapons/items/backpacks
_crate, // OBJECT: The crate object
_lootValues, // ARRAY, STRING, or NUMBER: String or number refers to a crate case in config.cfg; array determines random crate weapons/items/backpacks
_rareLootChance // (OPTIONAL) NUMBER: Manually define the percentage chance of spawning some rare items.
] call DMS_fnc_FillCrate;
Loot values can be a number or a string with a corresponding "Crate Case" defined in the config. EG: DMS_CrateCase_Sniper. Or it can be an array.
@ -25,7 +26,7 @@
or an array as [_wepCount,_weps], where _wepCount is the number of weapons, and _weps is an array of weapons from which the guns are randomly selected.
*/
private ["_crate","_lootValues","_wepCount","_weps","_itemCount","_items","_backpackCount","_backpacks","_weapon","_ammo","_item","_backpack","_crateValues"];
private ["_crate","_lootValues","_wepCount","_weps","_itemCount","_items","_backpackCount","_backpacks","_weapon","_ammo","_item","_backpack","_crateValues","_rareLootChance","_marker"];
@ -176,8 +177,14 @@ else
if(DMS_RareLoot && {count DMS_RareLootList>0}) then
{
_rareLootChance = DMS_RareLootChance;
if ((count _this)>2) then
{
_rareLootChance = param [2,DMS_RareLootChance,[0]];
};
// (Maybe) Add rare loot
if(random 100 < DMS_RareLootChance) then
if(random 100 < _rareLootChance) then
{
_item = DMS_RareLootList call BIS_fnc_selectRandom;
if ((typeName _item)=="STRING") then

View File

@ -30,11 +30,6 @@ if (!_OK) then
diag_log format ["DMS ERROR :: Calling DMS_SpawnAIGroup with invalid parameters: %1",_this];
};
if (_count < 1) exitWith
{
diag_log format ["DMS ERROR :: Calling DMS_SpawnAIGroup with less than 1 _count! _this: %1",_this];
};
_pos_x = _pos select 0;
_pos_y = _pos select 1;
_pos_z = _pos select 2;
@ -76,6 +71,12 @@ _group = createGroup (missionNamespace getVariable [format ["DMS_%1Side",_side],
_group setVariable ["DMS_LockLocality",nil];
_group setVariable ["DMS_SpawnedGroup",true];
if (_count < 1) exitWith
{
diag_log format ["DMS ERROR :: Calling DMS_SpawnAIGroup with less than 1 _count! _this: %1",_this];
_group
};
for "_i" from 1 to _count do
{
_unit = [_group,[_pos_x,_pos_y,_pos_z],_class,_difficulty,_side,"Soldier"] call DMS_fnc_SpawnAISoldier;

View File

@ -4,9 +4,11 @@
Usage:
[
_centerPos,
_difficulty,
_side
_centerPos, // ARRAY: Position to spawn the minefield around
_difficulty, // STRING or ARRAY: The "difficulty" level of the minefield. Determines the number of mines and the radius it spawns at. String refers to a difficulty set in config, array is defined as [_mineCount,_radius];
_side, // STRING: The "side" for which the mines should spawn. The spawned mines will be revealed to the AI so they don't run into it.
_spawnWarningSign, // (OPTIONAL) BOOL: Whether or not to spawn the warning signs around the minefield (at maximum radius, to the North/West/East/South)
_mineClassname // (OPTIONAL) STRING: The classname of the mine to spawn.
] call DMS_fnc_SpawnMinefield;
*/
@ -17,11 +19,10 @@ _mines = [];
if (DMS_SpawnMinesAroundMissions) then
{
_OK = params
[
["_centerPos","",[[]],[2,3]],
["_difficulty","",[""]],
["_difficulty","",["",[]],[2]],
["_side","",[""]]
];
@ -30,8 +31,24 @@ if (DMS_SpawnMinesAroundMissions) then
diag_log format ["DMS ERROR :: Calling DMS_fnc_SpawnMinefield with invalid parameters: %1",_this];
};
_spawnWarningSign = DMS_SpawnMineWarningSigns;
_mineClassname = "ATMine";
if ((count _this)>3) then
{
_spawnWarningSign = param [3,DMS_SpawnMineWarningSigns,[true]];
if ((count _this)>4) then
{
_mineClassname = param [4,"ATMine",[true]];
};
};
_minesInfo = _difficulty;
if ((typeName _difficulty)=="STRING") then
{
_minesInfo = missionNamespace getVariable [format ["DMS_MineInfo_%1", _difficulty], [10,50]];
};
_minesInfo = missionNamespace getVariable [format ["DMS_MineInfo_%1", _difficulty], [10,50]];
_AISide = missionNamespace getVariable [format ["DMS_%1Side", _side], EAST];
@ -45,12 +62,35 @@ if (DMS_SpawnMinesAroundMissions) then
_minePos = [_centerPos,random _radius,random 360] call DMS_fnc_SelectOffsetPos;
_mine = createMine ["ATMine", _minePos, [], 0];
// Fixes players shooting the mine and causing premature 'splosions
if (DMS_BulletProofMines) then
{
_mine allowDamage false;
};
//In case you're using directional mines such as tripwires/SLAMs
_mine setDir (random 360);
_AISide revealMine _mine;
_mines pushBack _mine;
};
if (_spawnWarningSign) then
{
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 setDir _i;
_sign setVectorUp [0,0,1];
// _mines array is for only cleanup atm, so just add them to the list
_mines pushBack _sign;
};
};
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];

View File

@ -52,6 +52,14 @@ if (!hasInterface && !isServer) then
## Changelog:
#### September 25, 2015 (7:30 PM CST-America):
* NEW CONFIG VALUES:
DMS_SpawnMineWarningSigns
DMS_BulletProofMines
* You can now manually define the rare loot chance per crate.
* You can now define the mine amount and radius directly from the call for DMS_fnc_SpawnMinefield.
#### September 25, 2015 (1:30 AM CST-America):
* NEW CONFIG VALUES:
DMS_SpawnMinesAroundMissions