mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-13 19:52:38 +03:00
52 lines
2.1 KiB
Plaintext
52 lines
2.1 KiB
Plaintext
/*
|
|
Created exclusively for ArmA2:OA - DayZMod.
|
|
Please request permission to use/alter/distribute from project leader (R4Z0R49)
|
|
*/
|
|
private ["_type","_position","_minDist","_maxDist","_isWreck","_nearByPlayer","_iPos","_positions","_zombieChance","_unitTypes","_min","_max","_num","_obj","_config","_i","_objPos"];
|
|
_obj = _this select 0;
|
|
_objPos = _this select 1;
|
|
_config = _this select 2;
|
|
_isWreck = _this select 3;
|
|
_type = typeOf _obj;
|
|
|
|
if (!([_objPos] call DZE_SafeZonePosCheck)) then {
|
|
|
|
_unitTypes = getArray (_config >> "zombieClass");
|
|
_min = getNumber (_config >> "minRoaming");
|
|
_max = getNumber (_config >> "maxRoaming");
|
|
_zombieChance = getNumber (_config >> "zombieChance");
|
|
_num = round(random(_max - _min) + _min);
|
|
_minDist = (sizeOf _type);
|
|
_maxDist = [(_minDist + 10),(_minDist + 20)] select (_isWreck); // zeds at crash sites can spawn further away.
|
|
|
|
// Walking Zombies
|
|
for "_i" from 0 to _num do {
|
|
if ((dayz_spawnZombies < dayz_maxControlledZombies) && {dayz_CurrentNearByZombies < dayz_maxNearByZombies} && {dayz_currentGlobalZombies < dayz_maxGlobalZeds}) then {
|
|
//_position = [_objPos,_minDist,_maxDist,1] call fn_selectRandomLocation;
|
|
[_objPos,true,_unitTypes,_isWreck,false] call zombie_generate;
|
|
};
|
|
};
|
|
|
|
// Internal Zombies
|
|
_nearByPlayer = ({isPlayer _x} count (_objPos nearEntities ["CAManBase",30])) > 0;
|
|
if (!_nearByPlayer) then {
|
|
_positions = getArray (_config >> "zedPos");
|
|
{
|
|
if (random 1 < _zombieChance) then {
|
|
_iPos = _obj modelToWorld _x;
|
|
_iPos set [2, 0 max (_iPos select 2)];
|
|
if ((dayz_spawnZombies < dayz_maxControlledZombies) && {dayz_CurrentNearByZombies < dayz_maxNearByZombies} && {dayz_currentGlobalZombies < dayz_maxGlobalZeds}) then {
|
|
[_iPos,false,_unitTypes,false,true] call zombie_generate;
|
|
};
|
|
};
|
|
} forEach _positions;
|
|
};
|
|
|
|
// Bloodsuckers
|
|
if (DZE_Bloodsuckers) then {
|
|
if ((dayz_spawnBloodsuckers < DZE_BloodsuckersMaxLocal) && {dayz_CurrentNearBloodsuckers < DZE_BloodsuckersMaxNear} && {dayz_currentGlobalBloodsuckers < DZE_BloodsuckersMaxGlobal} && {_type in DZE_BloodsuckerBuildings} && {(random 1) < DZE_BloodsuckerChance}) then {
|
|
_objPos call mutant_generate;
|
|
};
|
|
};
|
|
};
|