Update insert.sqf

Replace switch do block with call scope using if exitWith statements. The most common spawned item is a magazine class so it is placed at the top.
This commit is contained in:
worldwidesorrow
2020-01-09 16:52:06 -06:00
committed by GitHub
parent f9a92b2394
commit a1618e0dcf

View File

@@ -11,46 +11,43 @@ Author:
Foxy Foxy
*/ */
#include "\z\addons\dayz_code\util\debug.hpp"
#include "Loot.hpp" #include "Loot.hpp"
if (!local (_this select 0)) exitWith private ["_unit","_group","_count","_type","_item"];
{
diag_log format ["ERROR: Loot_Insert unit must be local. (%1)", _this select 0]; _unit = _this select 0;
_group = _this select 1;
_count = _this select 2;
// Prevent loot spawning on non-local zombies - this check is needed if the server is running safezones that delete zombies.
if (!local _unit) exitWith {
diag_log format ["ERROR: Loot_Insert unit must be local. (%1)", _unit];
}; };
{ {
switch (_x select 0) do _type = _x select 0;
{
case Loot_WEAPON:
{
(_this select 0) addWeapon (_x select 1);
Debug_Assert(typeName (_x select 1) == typeName "" && { (_x select 1) != "" });
//Debug_Log(String_Format2("DEBUG: Loot_Insert Weapon: %1 Unit: %2", _x select 1, _this select 0));
};
case Loot_MAGAZINE:
{
private "_item";
_item = _x select 1; _item = _x select 1;
call {
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 if (_item in ["emptyBloodBag","bloodTester","bloodBagAPOS","bloodBagABPOS"]) then { // reduce ItemBloodBag output slightly since typed bags spawn in bulk
_item = ["ItemBandage","ItemPainkiller","ItemMorphine","ItemHeatPack","ItemAntibacterialWipe"] call BIS_fnc_selectRandom; _item = ["ItemBandage","ItemPainkiller","ItemMorphine","ItemHeatPack","ItemAntibacterialWipe"] call BIS_fnc_selectRandom;
} else { } else {
_item = "ItemBloodbag"; _item = "ItemBloodbag";
}; };
}; };
(_this select 0) addMagazine _item; _unit addMagazine _item;
}; };
case Loot_BACKPACK: if (_type == Loot_WEAPON) exitWith {
{ _unit addWeapon _item;
if (!isNull unitBackpack (_this select 0)) then };
{
(_this select 0) addBackpack (_x select 1); if (_type == Loot_BACKPACK) exitWith {
if (!isNull unitBackpack _unit) then {
_unit addBackpack _item;
}; };
}; };
}; };
} count Loot_Select(_this select 1, _this select 2); } count Loot_Select(_group,_count);
//foreach ([_this select 1, _this select 2] call loot_select);