private ["_position","_target","_targetPos","_isAlive","_list","_isSomeone","_myDest","_agent"]; //Definitions _agent = _this select 0; //Add handlers //_id = _agent addeventhandler ["HandleDamage",{_this call local_zombieDamage}]; //Loop behaviour _list = (getposATL _agent) nearEntities ["Man",200]; _isSomeone = ({isPlayer _x} count _list) > 0; _isAlive = alive _agent; while {_isAlive and _isSomeone} do { //NO TARGET _agent disableAI "FSM"; _target = objNull; _targetPos = []; //Spawn roaming script (individual to unit) _myDest = getPosATL _agent; //Loop looking for targets while {isNull _target and _isAlive and _isSomeone} do { _isAlive = alive _agent; _list = (getposATL _agent) nearEntities ["Man",200]; _isSomeone = ({isPlayer _x} count _list) > 0; _target = _agent call zombie_findTargetAgent; if (_isAlive and (_agent distance _myDest < 5)) then { [_agent,_position] call zombie_loiter; }; _agent forceSpeed 2; sleep 1; }; //CHASE TARGET //Leader cries out [_agent,"attack",0,false] call dayz_zombieSpeak; //Start Movement loop while {!isNull _target and _isAlive and _isSomeone} do { _target = _agent call zombie_findTargetAgent; _isAlive = alive _agent; _targetPos = getPosATL _target; //Move to target _agent moveTo _targetPos; _agent forceSpeed 8; sleep 1; }; //LOOP _agent setVariable ["targets",[],true]; _isAlive = alive _agent; sleep 1; }; //Wait for a while then cleanup sleep 5; deleteVehicle _agent;