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.
Zeds and loot should not spawn in trader cities by default, regardless
of whether the server uses safe zones.
For servers that do not use safezones, the only other things affected
are salvage and instant kill for vehicle explosions in trader cities.
Neither is a significant issue. Most servers use safezones anyway.
Following d750f57, changed to exitWith so the check is only called once
instead of multiple times. Also no need to call again in
zombie_generate, since that function is only called by
building_spawnZombies which already checks it.
AFAIK there is no performance difference between configFile and
missionConfigFile.
Using missionConfigFile by default simplifies loot scripts and makes the
extra config variable unnecessary. It's one less step for admins to
customize their tables.
MPHit does not always fire when a player is killed:
https://community.bistudio.com/wiki/ArmA_2:_Event_Handlers#MPHit
Using either MPHit or MPKilled is not a good idea here. There is already
a local 'killed' event handler which fires on player death
(player_death.sqf). That script sends a PV (priority message) to the
server which triggers server_playerDied. That means fnc_plyrHit needed
to finish sending its data to the server via public setVariables
(non-priority messages) before server_playerDied executed. Triggering
both these scripts at the same time was a bad idea.
Instead of sending the data to the server via setVariable I just
included it in PVDZ_plr_Death. This also lets us pass extra information
from the damage handler like ammo type, cause of death, etc. Still need
to test, but it should be more reliable and performant than
fnc_playerHit called from MPHit or MPKilled.
Fnc_veh_handleRepair is a new version of fnc_veh_setFixServer with extra
handling. It is used in salvage and some other scripts, but not
server_monitor.