diff --git a/SQF/dayz_code/loot/spawn.sqf b/SQF/dayz_code/loot/spawn.sqf index a6b787388..f90af2b30 100644 --- a/SQF/dayz_code/loot/spawn.sqf +++ b/SQF/dayz_code/loot/spawn.sqf @@ -35,45 +35,21 @@ _vehicle = objNull; call { //Spawn a single magazine if (_type == Loot_MAGAZINE) exitWith { - if (dayz_classicBloodBagSystem && _item in dayz_typedBags) then { + if (dayz_classicBloodBagSystem && {_item in dayz_typedBags}) then { if (_item in ["bloodTester","bloodBagAPOS","bloodBagABPOS"]) then { // reduce ItemBloodBag output slightly since typed bags spawn in bulk _item = ["ItemBandage","ItemPainkiller","ItemMorphine","ItemHeatPack","ItemAntibacterialWipe"] call BIS_fnc_selectRandom; } else { _item = "ItemBloodbag"; }; }; - if (!dayz_toolBreaking) then { - if (_item == "equip_lever") then { // The levers are only used if tool breaking is turned on. - _item = ["equip_hose","ItemPlank","equip_nails","ItemLog","equip_brick"] call BIS_fnc_selectRandom; - }; - }; - if (!dayz_knifeDulling) then { - if (_item == "equip_brick") then { // Bricks are only used to sharpen tools - _item = ["equip_hose","ItemPlank","equip_nails","ItemLog"] call BIS_fnc_selectRandom; - }; - }; _vehicle = "WeaponHolder" createVehicle [0,0,0]; _vehicle addMagazineCargoGlobal [_item, 1]; - + // Fix generator spawning half way in the floor by raising z coordinate by .3 meters. if (_item == "ItemGenerator") then { _pos set [2, ((_pos select 2) + .3)]; }; - - if (_isWater) then { - _vehicle setPos (_pos); - } else { - _vehicle setPosATL (_pos); - }; - - INCREMENT_WEAPON_HOLDERS - }; - - //Spawn a single weapon with [0,MAX_WEAPON_MAGAZINES] magazines. - if (_type == Loot_WEAPON) exitWith { - _vehicle = "WeaponHolder" createVehicle [0,0,0]; - _vehicle addWeaponCargoGlobal [_item, 1]; - + if (_isWater) then { _vehicle setPos (_pos); } else { @@ -81,35 +57,49 @@ call { }; INCREMENT_WEAPON_HOLDERS - + }; + + //Spawn a single weapon with [0,MAX_WEAPON_MAGAZINES] magazines. + if (_type == Loot_WEAPON) exitWith { + _vehicle = "WeaponHolder" createVehicle [0,0,0]; + _vehicle addWeaponCargoGlobal [_item, 1]; + + if (_isWater) then { + _vehicle setPos (_pos); + } else { + _vehicle setPosATL (_pos); + }; + + INCREMENT_WEAPON_HOLDERS + _magazines = getArray (configFile >> "CfgWeapons" >> _item >> "magazines"); - + if (count _magazines > 0 && {getNumber (configFile >> "CfgWeapons" >> _item >> "melee") != 1}) then { _vehicle addMagazineCargoGlobal [_magazines select 0, floor random (MAX_WEAPON_MAGAZINES + 1)]; }; }; - + //Spawn backpack if (_type == Loot_BACKPACK) exitWith { _vehicle = _item createVehicle [0,0,0]; - + // Fix floating backpacks by lowering z coordinate by .15 meters. _pos set [2, ((_pos select 2) - .15)]; - + if (_isWater) then { _vehicle setPos (_pos); } else { _vehicle setPosATL (_pos); }; }; - + //Spawn multiple items from a given group. All but weapons and magazines are ignored. if (_type == Loot_PILE) exitWith { _spawnCount = (_lootInfo select 2) + floor random ((_lootInfo select 3) - (_lootInfo select 2) + 1); _vehicle = "WeaponHolder" createVehicle [0,0,0]; Loot_InsertCargo(_vehicle, _item, _spawnCount); - + if (_isWater) then { _vehicle setPos (_pos); } else { @@ -117,28 +107,28 @@ call { }; INCREMENT_WEAPON_HOLDERS }; - + //Spawn a vehicle if (_type == Loot_VEHICLE) exitWith { _vehicle = _item createVehicle [0,0,0]; _vehicle setDir random 360; - + if (_isWater) then { _vehicle setPos (_pos); } else { _vehicle setPosATL (_pos); }; }; - + //Spawn a container and populate it with loot from a given group if (_type == Loot_CONTAINER) exitWith { _vehicle = _item createVehicle [0,0,0]; - + //Number of items to spawn _spawnCount = (_lootInfo select 3) + floor random ((_lootInfo select 4) - (_lootInfo select 3) + 1); Loot_InsertCargo(_vehicle, _lootInfo select 2, _spawnCount); _vehicle setDir random 360; - + if (_isWater) then { _vehicle setPos (_pos); } else { @@ -146,12 +136,12 @@ call { }; INCREMENT_WEAPON_HOLDERS }; - + //Call a function which is assumed to return an object reference. if (_type == Loot_CUSTOM) exitWith { _vehicle = call (_item); if ((typeName _vehicle) != "OBJECT") exitWith {}; - + if (!isNull _vehicle) then { if (_isWater) then { _vehicle setPos (_pos);