/* 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")); { //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 { { //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")]; }; };