private ["_position","_doLoiter","_unitTypes","_isNoone","_loot","_array","_agent","_type","_radius","_method","_nearByPlayer","_myDest","_newDest","_lootType","_isAlive","_rnd","_id"]; _position = _this select 0; _doLoiter = _this select 1; _unitTypes = _this select 2; if (dayz_maxCurrentZeds > dayz_maxZeds) exitwith {}; if (dayz_CurrentZombies > dayz_maxGlobalZombies) exitwith {}; if (dayz_spawnZombies > dayz_maxLocalZombies) exitwith {}; _isNoone = {isPlayer _x} count (_position nearEntities [["AllVehicles","CAManBase"],30]) == 0; _loot = ""; _array = []; _agent = objNull; //Exit if a player is nearby if (!_isNoone) exitWith {}; if (count _unitTypes == 0) then { if (DZE_MissionLootTable) then { _unitTypes = []+ getArray (missionConfigFile >> "CfgBuildingLoot" >> "Default" >> "zombieClass"); } else { _unitTypes = []+ getArray (configFile >> "CfgBuildingLoot" >> "Default" >> "zombieClass"); }; }; _type = _unitTypes call BIS_fnc_selectRandom; //Create the Group and populate it //diag_log ("Spawned: " + _type); _radius = 0; _method = "CAN_COLLIDE"; if (_doLoiter) then { _radius = 40; _method = "NONE"; }; //diag_log ("Spawned: " + str([_type, _position, [], _radius, _method])); _agent = createAgent [_type, _position, [], _radius, _method]; PVDZE_zed_Spawn = [_agent]; publicVariableServer "PVDZE_zed_Spawn"; if (_doLoiter) then { _agent setDir round(random 180); _agent setPosATL _position; _agent setvelocity [0, 0, 1]; //_agent setVariable ["doLoiter",true,true]; } else { _agent setVariable ["doLoiter",false,true]; }; dayz_spawnZombies = dayz_spawnZombies + 1; //diag_log ("CREATE INFECTED: " + str(_this)); _position = getPosATL _agent; _nearByPlayer = ({isPlayer _x} count (_position nearEntities [["AllVehicles","CAManBase"],30]) > 0); if (random 1 > 0.7) then { _agent setUnitPos "Middle"; }; //diag_log ("CREATED: " + str(_agent)); if (_nearByPlayer) then { deleteVehicle _agent; }; /* //_agent setVariable["host",player,true]; if (!_doLoiter) then { _agent setPosATL _position; _agent setDir round(random 180); if (_nearByPlayer) then { deleteVehicle _agent; }; } else { if (_nearByPlayer) then { _attempt = 0; while {_nearByPlayer} do { _position = [_position,0,20,10,0,20,0] call BIS_fnc_findSafePos; _agent setPos _position; _nearByPlayer = ({isPlayer _x} count (_position nearEntities ["CAManBase",30]) > 0); _attempt = _attempt + 1; if (_attempt > 10) exitWith {}; }; _agent setPos _position; }; }; */ if (isNull _agent) exitWith { dayz_spawnZombies = dayz_spawnZombies - 1; }; _isAlive = alive _agent; _myDest = getPosATL _agent; _newDest = getPosATL _agent; _agent setVariable ["myDest",_myDest]; _agent setVariable ["newDest",_newDest]; //Add some loot _rnd = random 1; if (_rnd > 0.3) then { _lootType = configFile >> "CfgVehicles" >> _type >> "zombieLoot"; if (isText _lootType) then { _array = []; if (DZE_MissionLootTable) then { _array = getArray (missionConfigFile >> "cfgLoot" >> getText(_lootType)); } else { _array = getArray (configFile >> "cfgLoot" >> getText(_lootType)); }; if (count _array > 0) then { _loot = _array call BIS_fnc_selectRandomWeighted; if(!isNil "_array") then { _agent addMagazine _loot; }; }; }; }; //Start behavior _id = [_position,_agent] execFSM "\z\AddOns\dayz_code\system\zombie_agent.fsm";