The default number for dayz_maxMaxWeaponHolders is for DayZ Mod. Since Epoch has the addition of small loot spawn points, it should have slightly higher allowed loot spawns around the player.
Replace switch do block with call using if and exitWith statements. Magazine class items are the most commonly spawned item so it is placed at the top. Switch to the more efficient form of createVehicle. Set more local variables at the top to make the file more readable. Prevent the generator from spawning halfway into the floor by raising the z coordinate. Lower the backpack spawns to prevent them from floating. Add replacement items if dayz_toolBreaking and dayz_knifeDulling are disabled.
Replace switch do block with call scope with if, exitWith. Add magazine selection to spawned weapons. This functions spawns weapons into a container. It should also spawn a random amount of matching magazines.
If a military building is selected then matching groups of RU,US,EU, or CZ loot are selected so that weapons, ammo, and attachments spawned in the building will match. Reintroduce loot position shuffling. This was a feature in 1.0.5.1. I'm not sure if this is necessary but it changes the order in which the loot positions are selected so the loot would in theory be in different places each time.
Checking for near zombies and players in the forEach loop is inappropriate and inefficient. Because it was checking for near zombies, the internal zombies were not spawning at all. It appeared that they were because the walking zombies were using the building position plus the radius option on createAgent. fn_selectRandomLocation using the size of the object as the minimum distance prevents the zombies from potentially spawning into objects and dying. The max distance for the crash site zombies is increased a bit so they can spawn farther away from the object since they are in an open field. The position on the internal zombies should not have the z coordinate automatically set to zero. This prevents the zombies from spawning at positions on upper floors of buildings.
Function _cantSee should not be recompiled every time this file runs. fnc_fieldOfView is compiled in compiles.sqf and called here. Checking zombie counts in this file is redendant. It is already being done in player_spawnCheck and building_SpawnZombies. Variables "agentObject" and "BaseLocation" are unused. The createAgent command should not be used with a radius. This causes some of the zombies to be killed after being spawned into objects. Some of the walking zombies were spawning inside the building when they should not.
Added server side security for higher risk PVDZ_send usage. Replace switch do block with inline function. Since only one option is selected for each call, a function using exitWith is the better option here. The transfuse completed option was removed. It is not used anywhere. Added options for drag, carry, load, and unconscious. There is a commented diag_log in the security check than can be used if server owners want it. However, Battleye logs all PVDZ_send usage.
isDead check should be done after the animation is finished. Remove redundant setVariable entries. If the animation is interrupted, return the item to the player's inventory. Add localized string.
Infection chance does not have to be recalculated repeatedly. There is no reason that the start message should be inside the loop. Display control 1300 does not need to be enabled here. It always runs. Remove redundant player check.
Public variables used in the carry and drag functions are only compiled on the client. Only the server can use these PVs. They should be blacklisted in Battleye publicvariable.txt. PVDZ_sendUnconscious has been replaced by PVDZ_Send with server side security.
Add unconscious array to unload action. Add the carry action. Add the rest of the bloodbags to the bloodbag array. The typed bloodbags get their own actions so the player can select which bloodbag to administer. Alter the sepsis bandage option with a new localized string. NORRN_loadWoundedAction variable is no longer necessary. Remove redundant gear checks.
In cases like this where only one selection is required, the switch option is not the best option because it is slow. Using an inline function with exitWith, the most common options are placed at the top with the least common options placed near the bottom.