Wicked AI 2.2.6
This release is for DayZ Epoch/Overpoch 1.0.6.2.
<<<Download Here>>>
Due to reports of poor performance on high population servers. I have rewritten this mod so it runs more efficiently.
Most of the work is code optimization and bug fixes, but I did add some new features.
Review of changes
Each mission only spawns one thread with one loop unless it has a para-drop, then it spawns two.
The patrol missions also spawn two threads for now.
The mission files no longer suspend, waiting for the mission to complete to spawn the crate loot and remove the mission data.
The minefield feature no longer spawns an individual thread for each mine. It uses a player check radius.
Players in vehicles receive a bold red warning when they are 200 meters from the edge of a mine field.
Optional mission vehicle entry messages.
Improved mission clean up. All mission objects and data are deleted including unclaimed vehicles and AI unit groups.
The AI monitor loop has been replaced by a modified version of the server scheduled function sched_corpses.
AI vehicles no longer spawn their own vehicle monitoring threads. It is all handled in the mission thread in a queue.
The invisible static gun glitch has been fixed.
The static spawns have a dedicated monitoring loop much like the mission system. One loop manages all vehicles and deletes AI unit groups.
Where possible, I moved commonly used code blocks to compiled functions.
I made a few new missions - hero outpost, bandit outpost, and farmer.
Captured MV-22, medical camp, and weapon cache missions have been reworked for improved aesthetics and/or functionality.
Rewritten auto claim feature that is fully integrated.
Boat patrols - examples in the static mission files.
Redundant and\or unnecessary code has been removed from some of the files.
I cleaned up and standardized the formatting in the mission files and elsewhere.
Helicopters for AI drops and patrols start at a random distance of 3k to 4k away from the mission instead of way down by debug island.
Added a new check for mission locations. As they are used, positions get added to an array and checked in find_position.sqf, so missions will not spawn in the same spot twice.
Optional indestructible mission vehicles.
The AI and mission clean up times and spawn schedule in config.sqf have been converted to minutes for easier reading.
Fixed an issue with the spawn time delays in the mission init file.
Adjusted the distance the vehicles spawn from the crate so there is no trouble with accessing gear when near a locked vehicle.
You can disable static gun placements, vehicle patrols, and paratrooper drops on missions with variables in config.sqf
AI numbers have been standardized on all missions. You can adjust the numbers. Easy = 5-10, Medium = 10-15, Hard = 15-20, Extreme = 20-25.
I removed the cache units feature because it spawns a thread with a monitoring loop for each unit group and it only works on ground troops.
I moved the Dynamic Text mission announcements up the screen and made the text a little smaller so it is not so overwhelming.
Added a second dynamic text option for the minefield warnings.
Fixed the "auto-repair" glitch on mission vehicles. This also fixes the inability to repair mission vehicles due to the hitpoint variables not being set.
Notes
The AK_74 and RPK_74 variants have been disabled in config.sqf until the 1.0.6.3 patch because the 45rnd 5.45mm magazine was removed in the A2 OA 1.64 corepatch and they post errors to the logs.
The format of the missions has changed, so if you have your own custom missions they will have to be adjusted.
I have updated the mission example file and created a new mission example file for a single spawn point mission. They are heavy on comments to help server owners create their own missions.
I have left extensive comments throughout the updated files if you want to understand more about how the updated code and functions work.
Since this is a major coding overhaul, this release will not be merged into the main github repository until all potential bugs, errors, and incompatibilities have been corrected. Please report errors, discrepancies, and general weirdness in this topic.
Also, most of the files have been altered, so please use this version as a base and merge your custom files into it, paying attention to the changes.
Optional Mission Vehicle Entry Messages
If you turn this option on players will get a message that says either "You have claimed this vehicle! It is now saved to the database." or "WARNING: This vehicle will be deleted at restart!" depending on if you have vehicle hive saving turned on or not. This feature can be toggled with this variable:
https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/config.sqf#L101
Indestructible Mission Vehicles
This option will disable the damage handlers on mission vehicles until a player enters them. It can be toggled on and off with this variable:
https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/config.sqf#L99
Avoid Same Spot
This option will prevent a mission spawning in the same spot twice by adding the position to an array. The find position function will check that a new position will not be selected that is within 200 meters of one that was previously used.
https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/config.sqf#L80
Enable/Disable Static Gun Placements, Vehicle Patrols, and Paradrops
I added this feature for scalability and because someone asked for it. These are the variables to set true or false.
https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/config.sqf#L115-L117
Auto-Claim
The original author of the auto-claim feature is no longer a part of this community. I wrote my own version of it which is fully integrated. I never really used this mod myself in the past, so please let me know if I need to add features that were there previously.
https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/config.sqf#L222-L229
Boat Patrols
There is really no difference between a boat patrol and a land vehicle patrol other than the classname of the vehicle the fact that they spawn offshore. I have placed examples in the static mission files and I left my Skalisty Island test boat patrols commented in the chernarus.sqf file. To activate them, enable the static_per_world feature in config.sqf and remove the comments from this section:
https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/static/Chernarus.sqf#L114-L147
When creating boat patrols you should make sure that the distance you place them offshore is at least the distance of the radius used for waypoints, otherwise the waypoints will be on land and the AI might not handle the boat correctly.
https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/static/Chernarus.sqf#L140
Mission Cleanup
All mission data and mission objects will be removed from the map after mission completion or mission timeout, including the ai unit groups and unclaimed mission vehicles. You can remove the crates from cleanup if you want them to remain on the map for looting by toggling this variable to false:
https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/config.sqf#L94
If a player is within 75 meters of the crate, it will not be deleted as it is assumed that it is still being looted.
To "claim" a mission vehicle, a player simply has to get into it and it will not be deleted.
Invisible Static Gun Glitch
Credit to salival for discovering that this was a JIP issue and the fix is to have the AI get out and back into the static gun at regular intervals. During testing, I could not even see this happening unless I added a sleep, so players shouldn't notice.
Static Spawn Manager
Instead of having each static spawned group and vehicle spawn its own monitoring thread, the data is added to a multi-dimensional array and monitored in one loop. The monitor is spawned from the static init.sqf file and will shut down when all null AI groups have been removed from the array.
The Overwatch configs have been moved to its own file in the configs folder. The file is not loaded unless the Overwatch mod is detected.
According to KillZone Kid and other Arma super nerds, when selecting random things from arrays, it is faster to use a statement like this: selection = array select (floor (random (count array))); instead of calling BIS_fnc_selectRandom. I replaced several instances in files where it is called repeatedly like dynamic crate and group spawning. This might save a millisecond or two :).
That is all of the updates I can think of right now. If I can remember more, I will add them.
Thanks to @MerlijnD and @LadyVal for testing my initial files.
Credit to @salivalfor the invisible static gun glitch fix.
Credit to @ibenfor the original IWAC.
Credit to @BigEgg for the localization solution
Credit to @Schalldampfer for testing and finding bugs
Credit to @Grahame for assistance in discord with mission vehicle spawning issue