diff --git a/Sources/epoch_code/compile/EPOCH_zombieSpawn.sqf b/Sources/epoch_code/compile/EPOCH_zombieSpawn.sqf index e62367dc..2ddd996f 100644 --- a/Sources/epoch_code/compile/EPOCH_zombieSpawn.sqf +++ b/Sources/epoch_code/compile/EPOCH_zombieSpawn.sqf @@ -20,25 +20,41 @@ Returns: OBJECT - Zombie Agent */ -private ["_zRange","_disableAI","_unitClass","_unit","_clutterPos","_zedHandle"]; -_zRange = getNumber (getMissionConfig "CfgEpochRyanZombie" >> "range"); +params [["_justSpawn",false]]; +private ["_zRange","_disableAI","_unitClass","_unit","_clutterPos","_zedHandle","_zMax"]; _disableAI = {{_this disableAI _x}forEach["TARGET","AUTOTARGET","FSM"];}; -_unitClass = selectRandom ["EPOCH_RyanZombie_1","EPOCH_RyanZombie_2","EPOCH_RyanZombie_3","EPOCH_RyanZombie_4","EPOCH_RyanZombie_5"]; -_unit = createAgent[_unitClass, position player, [], _zRange, "FORM"]; -_clutterPos = getPosATL _unit; -if!(isOnRoad _unit)then{ - // todo cleanup this object after some time - // _grave = createVehicle ["Land_Grave_dirt_F", _clutterPos, [], 0, "CAN_COLLIDE"]; -}; -_unit call _disableAI; -_unit switchMove "AmovPercMstpSnonWnonDnon_SaluteOut"; -[[_unit,player], 4, Epoch_personalToken] remoteExec ["EPOCH_server_handle_switchMove",2]; +_units = []; +_zRange = getNumber (getMissionConfig "CfgEpochRyanZombie" >> "range"); +_zeds = getArray (getMissionConfig "CfgEpochRyanZombie" >> "zeds"); +_zMax = getNumber (getMissionConfig "CfgEpochRyanZombie" >> "maxNumber"); +_zDoCnt = 0; +//Check for horde +_nrZeds = nearestObjects [player,_zeds,_zRange]; +_currZCount = count _nrZeds; +if(_currZCount < _zMax)then{_zDoCnt = _zMax - _currZCount;}; +for "_i" from 1 to _zDoCnt step 1 do{ -_unit setmimic "dead"; -_unit setface (selectRandom ["RyanZombieFace1", "RyanZombieFace2", "RyanZombieFace3", "RyanZombieFace4", "RyanZombieFace5"]); -removegoggles _unit; -_zedHandle = [_unit,true] execFSM "epoch_code\system\EPOCH_zombie_brain.fsm"; -_unit addEventHandler ["FiredNear", "(_this select 0) setVariable [""zFiredNear"",[_this select 1, _this select 2]];"]; -_unit addEventHandler ["Hit", "(_this select 0) setVariable [""zHit"",[_this select 1, _this select 2]];"]; -//if(isNil "axeFlag")then{ axeFlag = createVehicle ["Flag_Blue_F", (getpos player), [], 10, "CAN_COLLIDE"];}; -_unit + _unitClass = selectRandom _zeds; + _unit = createAgent[_unitClass, position player, [], _zRange, "FORM"]; + // todo cleanup this object after some time + //_clutterPos = getPosATL _unit; + //if!(isOnRoad _unit)then{ + // _grave = createVehicle ["Land_Grave_dirt_F", _clutterPos, [], 0, "CAN_COLLIDE"]; + //}; + _unit call _disableAI; + _unit switchMove "AmovPercMstpSnonWnonDnon_SaluteOut"; + [[_unit,player], 4, Epoch_personalToken] remoteExec ["EPOCH_server_handle_switchMove",2]; + + _unit setmimic "dead"; + _unit setface (selectRandom ["RyanZombieFace1", "RyanZombieFace2", "RyanZombieFace3", "RyanZombieFace4", "RyanZombieFace5"]); + removegoggles _unit; + _zedHandle = [_unit,true] execFSM "epoch_code\system\EPOCH_zombie_brain.fsm"; + _unit addEventHandler ["FiredNear", "(_this select 0) setVariable [""zFiredNear"",[_this select 1, _this select 2]];"]; + _unit addEventHandler ["Hit", "(_this select 0) setVariable [""zHit"",[_this select 1, _this select 2]];"]; + _units pushBack _unit; + +}; + +if !(_units isEqualTo []) then { + _units remoteExec ["EPOCH_localCleanup",2]; +};