mirror of
https://github.com/Defent/DMS_Exile.git
synced 2024-08-30 16:52:12 +00:00
ef822c5a28
Spent a shitton of time setting up SpawnAISoldier. Highly configurable, with the option of using a custom config. I will set up the "private" var line, as well as some debug info later. Increased magazine count for guns spawned in crates
127 lines
2.5 KiB
Plaintext
127 lines
2.5 KiB
Plaintext
/*
|
|
DMS_FillCrate
|
|
|
|
Original credit goes to WAI: https://github.com/nerdalertdk/WICKED-AI
|
|
Edited by eraser1
|
|
|
|
Usage:
|
|
[
|
|
_crate,
|
|
[
|
|
_weapons,
|
|
_items,
|
|
_backpacks
|
|
]
|
|
] call DMS_FillCrate;
|
|
|
|
Each loot argument can be an explicitly defined array of weapons with a number to spawn, or simply a number and weapons defined in the config.sqf are used
|
|
*/
|
|
|
|
if (isNil "_this") exitWith
|
|
{
|
|
diag_log "DMS ERROR :: Calling DMS_FillCrate with nil argument!";
|
|
};
|
|
|
|
|
|
private ["_box","_lootValues","_wepCount","_weps","_itemCount","_items","_backpackCount","_backpacks","_weapon","_ammo","_item","_backpack"];
|
|
|
|
params
|
|
[
|
|
["_box",objNull,[objNull]],
|
|
["_lootValues",[0,0,0],[[]],[3]];
|
|
];
|
|
|
|
if (isNull _box) exitWith
|
|
{
|
|
diag_log format ["DMS ERROR :: Calling DMS_FillCrate with null _box | _this: %1",_this];
|
|
};
|
|
|
|
// Weapons
|
|
if(typeName (_lootValues select 0) == "ARRAY") then
|
|
{
|
|
_wepCount = (_lootValues select 0) select 0;
|
|
_weps = (_lootValues select 0) select 1;
|
|
}
|
|
else
|
|
{
|
|
_wepCount = _lootValues select 0;
|
|
_weps = DMS_boxWeapons;
|
|
};
|
|
|
|
|
|
// Items
|
|
if(typeName (_lootValues select 1) == "ARRAY") then
|
|
{
|
|
_itemCount = (_lootValues select 1) select 0;
|
|
_items = (_lootValues select 1) select 1;
|
|
}
|
|
else
|
|
{
|
|
_itemCount = _lootValues select 1;
|
|
_items = DMS_boxItems;
|
|
};
|
|
|
|
|
|
// Backpacks
|
|
if(typeName (_lootValues select 2) == "ARRAY") then
|
|
{
|
|
_backpackCount = (_lootValues select 2) select 0;
|
|
_backpacks = (_lootValues select 2) select 1;
|
|
}
|
|
else
|
|
{
|
|
_backpackCount = _lootValues select 2;
|
|
_backpacks = DMS_boxBackpacks;
|
|
};
|
|
|
|
|
|
if(DMS_DEBUG) then
|
|
{
|
|
diag_log format["DMS_DEBUG FillCrate :: Filling %4 with %1 guns, %2 items and %3 backpacks",_wepCount,_itemCount,_backpackCount,_box];
|
|
};
|
|
|
|
|
|
if ((_wepCount>0) && {count _weps>0}) then
|
|
{
|
|
// Add weapons + mags
|
|
for "_i" from 1 to _wepCount do
|
|
{
|
|
_weapon = _weps call BIS_fnc_selectRandom;
|
|
_ammo = _weapon call DMS_selectMagazine;
|
|
_box addWeaponCargoGlobal _weapon;
|
|
_box addMagazineCargoGlobal [_ammo, (4 + floor(random 3))];
|
|
};
|
|
};
|
|
|
|
|
|
if ((_itemCount > 0) && {count _items>0}) then
|
|
{
|
|
// Add items
|
|
for "_i" from 1 to _itemCount do
|
|
{
|
|
_item = _items call BIS_fnc_selectRandom;
|
|
_box addItemCargoGlobal _item;
|
|
};
|
|
};
|
|
|
|
|
|
if ((_backpackCount > 0) && {count _backpacks>0}) then
|
|
{
|
|
// Add backpacks
|
|
for "_i" from 1 to _backpackCount do
|
|
{
|
|
_backpack = _backpacks call BIS_fnc_selectRandom;
|
|
_box addBackpackCargoGlobal _backpack;
|
|
};
|
|
};
|
|
|
|
|
|
if(DMS_RareLoot && {count DMS_RareLoot>0}) then
|
|
{
|
|
// (Maybe) Add rare loot
|
|
if(random 100 < DMS_RareLootChance) then
|
|
{
|
|
_item = DMS_RareLoot call BIS_fnc_selectRandom;
|
|
_box addItemCargoGlobal _item;
|
|
};
|
|
}; |