Files
DayZ-Epoch/SQF/dayz_code/compile/building_spawnLoot.sqf

88 lines
2.3 KiB
Plaintext

/*
Spawns loot at the given building.
Single parameter:
object building to spawn loot at
Author:
Foxy
*/
#include "\z\addons\dayz_code\util\Vector.hpp"
#include "\z\addons\dayz_code\loot\Loot.hpp"
private
[
"_vectorUp",
"_type",
"_config",
"_lootChance",
"_lootPos",
"_lootGroup",
"_worldPos",
"_existingPile",
"_loot"
];
_vectorUp = vectorUp _this;
if (Vector_Angle(Vector_UP,_vectorUp) > 20) exitWith { 0 };
_type = typeOf _this;
_config = missionConfigFile >> "CfgLoot" >> "Buildings" >> _type;
if (!isClass _config) exitWith {};
_lootChance = getNumber (_config >> "lootChance");
if (_lootChance <= 0) exitWith {};
_lootPos = getArray (_config >> "lootPos");
_lootGroup = Loot_GetGroup(getText(_config >> "lootGroup"));
if (!([_this] call DZE_SafeZonePosCheck)) then {
{
//Get the world position of the spawn position
_worldPos = _this modelToWorld _x;
_worldPos set [2, 0 max (_worldPos select 2)];
//Delete existing lootpiles within 1m of spawn location
{
deleteVehicle _x;
dayz_currentWeaponHolders = dayz_currentWeaponHolders - 1;
} foreach (_worldPos nearObjects ["ReammoBox", 1]);
if (_lootChance > random 1 && {dayz_currentWeaponHolders < dayz_maxMaxWeaponHolders}) then
{
Loot_SpawnGroup(_lootGroup, _worldPos);
};
} foreach _lootPos;
};
// EPOCH ADDITION
// lootPosSmall are additional positions in lockers, on shelves, etc. for small objects only.
// Example: soda cans, small ammo, pistols, bandage, etc.
if (isArray (_config >> "lootPosSmall")) then {
_lootPos = getArray (_config >> "lootPosSmall");
_lootGroup = Loot_GetGroup((getText(_config >> "lootGroup")) + "Small");
if (_lootGroup >= 1) then {
if (!([_this] call DZE_SafeZonePosCheck)) then {
{
//Get the world position of the spawn position
_worldPos = _this modelToWorld _x;
_worldPos set [2, 0 max (_worldPos select 2)];
//Delete existing lootpiles within 1m of spawn location
{
deleteVehicle _x;
dayz_currentWeaponHolders = dayz_currentWeaponHolders - 1;
} foreach (_worldPos nearObjects ["ReammoBox", 1]);
if (_lootChance > random 1 && {dayz_currentWeaponHolders < dayz_maxMaxWeaponHolders}) then
{
Loot_SpawnGroup(_lootGroup, _worldPos);
};
} foreach _lootPos;
};
} else {
diag_log format["Loot group small: %1 does not exist", ((getText(_config >> "lootGroup")) + "Small")];
};
};