mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 12:12:34 +03:00
Occasionally errors out, but may not be worth implementing in Epoch due to the increased loot
87 lines
2.3 KiB
Plaintext
87 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")];
|
|
};
|
|
}; |