08/02/17


- Changes from this version:
================= BUILD IS NATIVE ONLY:
Path builder:
- Added Botz_DirectPlatformBelow path, it's a direct link that activates when it becomes walkable.
- Added Botz_NavigRemoverSmart, removes clustered/excess PathNodes and InventorSpot within its radius.
- Added Botz_Telewatcher, dynamically disables routes through disabled teleporters within its radius.
- Fixed bug preventing 45 routes from being pathed upwards.
- Botz_NavigDoorSpecial paths can optimally remove links between other nodes blocked by a gate.
- Botz_NavigDoorSpecial works normally in case of one-way incoming paths.
- Botz_NavigDoorSpecial supports triggered doors.
- Various bugfixes on direct link node placement.
- Water reachspecs have added weight (as with unreal editor built paths)

New pathfinder:
Maps the entire path network and sets on each node the path's weight (that leads to said node).
Then objectives are evaluated based on said networks mapping, this allows botz and game profiles to
evaluate multiple goals by mapping the network once.
It is possible to even determine which of many objectives can be reachable sooner.
- Used for all (except inventory finding) pathfinding now.
- Ported to c++, can call an event to customize cost in the route network.
- Can be used to remap the network from a different starting point without having to recalculate the cost.
- It's possible to modify the requirements for allowed reachspecs during mapping.
- Fixed route caching bug causing bots to get stuck on walls.

Botz_LiftCenter path better handled by both Botz and other pawns.
Botz are less likely to get stuck at items.
Botz's weapons no longer freeze when they go out of ammo.
Shock rifle profile and combo code greatly improved.

Game profiles:
- Attacking code revamped, BotzTargetAdder.SuggestAttack is always called, then bot decides whether to get items or not.
** This lets SuggestAttack modify the bot's inventory picking priorities.
- MonsterHunt profile: prioritization of objectives according to orders:
-- Attack: MonsterWaypoints/MonsterEnd, Monsters, Triggers
-- Freelence: MonsterWaypoints/MonsterEnd, Triggers, Monsters
-- Defend: Triggers, Monsters, MonsterWaypoints/MonsterEnd
*** If bots try going through locked doors/gates, order 'defense'.




- Changes from version 19
================= BUILD IS NATIVE ONLY:
XC_Engine (v19) is required to run FerBotz
- Dummy pawn code entirely removed.
- Servers require XC_GameEngine.bUseNewRelevancy=True to display bots on clients.
- Bots that imitate a player type not supported in clients will look like Xan instead of being invisible (VA styled).
- UnrealScript-only classes and plugins can use XC_Engine natives (previously in FerBotz) for improved functionality.
Vastly improved elevator handling, botz can even assess when generic elevators can be at the nearest to them.
Botz are less likely to jump down bridges and other ledges during combat.
Path weighting rewritten, botz are more likely to select alternative routes.
Alternative UnrealScript pathfinder implemented, botz can find kill routes that give it a line of sight to a target.
Random Botz may take the face setting as name.
Botz added from list properly select a team.
Improved long range sight and sniping.
Combat profiles:
- Added 'EnemyTooClose' condition to weapon profiles.
- Fixed bug causing bots to not select appropiate weapon profile in arena matches.
- Improved Shock Rifle and Rocket Launcher usage at melee range.
- Weapon profiles loaded up to down, custom profiles are prioritized over default ones.
MonsterHunt profile reworked:
- Only compatible with the MonsterHunt prototype: https://github.com/CacoFFF/MonsterHunt-Rebuild
- Bots tend to hunt and clear most monsters.
- Less performance drain at high bot count
DLL changes:
- Botz is no longer a native class, now subclassed from FerBotz_cl_4.BotzClientPawn.
- Botz_PathLoader is no longer a native class, path loader uses XC_Core.BinarySerializer.
- Added Botz_NavigBase.ResetScriptRunaway function.
- Improved Botz_NavigBase.ClearAllPaths function, can relink previously pruned paths going through node being cleared.
Path builder:
- DynamicBotzPlayer displays real/path distance on each connection.
- Simplified and improved path pruning (some maps were broken due to this, recheck!).


- Changes from version 18:
Moved ProfileFire logs into a debug section.
Game profiles now receive notifications of Botz killing enemies.
Enhanced TeamGamePlus profile, attacker bots will go hunting for easy targets.
Fixed small bug in aim system, should be less jerky now.
DynamicBotzPlayer (mutate editpaths) also shows normal path's connections.
Botz's no longer cheat closed doors (lol)
Botz no longer attack flock pawns (unless they are attacking the botz)
Improved elevator handling, now with lift jumping.
Fixed massive log warnings on non-native version.
MonsterHunt profile reworked:
- Botz are more aggressive but tend to attack in groups (they recognize Bot and Players as supports).
- Nalis and Cows aren't selected as enemies.
- Changed objective targeting order and polls for existant and reachability in this order:
--> MonsterEnd
--> MonsterWaypoint
--> Strong Monster
--> Trigger (bTriggerOnceOnly)
================= NATIVE ONLY:
CollideTrace function moved to native code.
Linux binary no longer requires __Context::Env symbol, works on all v436 builds.
DirectLinkPaths no longer save with erroneous orientation (caused mislinking).
Fixed Botz_NavigRemover (should no longer crash)
Native branch is the main version now.


- Changes from version 17:
Updated client interface to Ferbotz_cl_3
Dummy pawn creation should no longer cause issues with player count in servers (credits to Gust).
Fixed Bug in path cost adder, lots of log spam removed.
Fixed bots getting stuck on pickup locations.
Botz plugins may now select which AI state botz should use.
Fixed Siege plugin, following players supported now.
Fixed bots resetting state while traversing between very distant points.
Fixed bug causing bots to fall when jumping between very thin platforms.
================= NATIVE ONLY:
Fixed bug causing base Botz nodes to connect to other high, unreachable nodes.
Basic Botz nodes now respect each other's MaxDistance when connecting each other, makes simple one-ways possible.
Moved more functions to native code.


- Changes from version 16.1:
Fixed bug making botz attempt to translocate without translocator.
Fixed debug actors being visible showing up on normal games.
Included updated SiegeIV profile and lots of map navigation files.
================= NATIVE ONLY:
High jump and high transloc nodes now do proper path generation.
Fixed bug preventing Nav file loading (user created ones).


- Changes from version 16:
Botz can now properly roam in DeathMatch and TeamGamePlus (Instagib Ready!).
Increased stability in flight code (not yet usable).
Simplified navigation code.
Enhanced obstruction evasion code during navigation.
Fixed bad export in DM and TGP plugins, won't crash linux clients.
Fixed outdated DM-Oblivion plugin crashing all clients.
Fixed botz disregarding Mutator's PreventDeath.
Fixed bug in 'retreat' combat substate.
Fixed some more log warnings.
Updated Setting up.txt
================= NATIVE ONLY:
Linux build included.
Full source code included.


- Changes from version 15:
Fixed botz getting stuck near items (InventorySpot too far from item).
Fixed botz not waiting in elevator if jumps towards it.
Fixed botz resetting move state mid air.
Botz now do path shortening mid air.
Added flight navigation base system.
- Support for JetReplaceG.GhandiJetLauncher (crash if you kill bot while flying)
Botz can do pathfinding on destinations that aren't reachable to it's closest path node.
Fixed log spam in Siege games.
Fixed weapon profiles failing to work with custom versions of supported weapons.
Botz will now be forced to attack/perform tasks instead of trying to get items if map has no items (CTF. AS. MH).
Players VS Botz mutator added!
"MUTATE ADDBOTZLIST INDEX=x" now adds the bot number 'x' in the list.
Major code cleanup, removed useless beta waypoint system.
UPDATED: SETTING UP.TXT
================= NATIVE ONLY:
Fixed air nodes not properly connecting with ground nodes


- Changes from version 14:
Botz avoiding danger spots works 100%, some danger points are shared among teammates.
Botz's behave better in low grav games when chasing players or navigating through Botz_NavigBase points at altitudes that require jumping over a wall.
Completely reworked movement during navigation code.
Botz can now tell when they reach a path mid air and assess what to do next.
Fixed bug causing bots to decelerate if fall destination was further than reachable.
Fixed bots pausing after exiting a water zone (DM-Pyramid playable).
Path shortening now works again.
Bots now have acquisition delay before firing, said delay is higher if enemy is invisible.
CHARGE combat state will no longer force primary fire regardless of what the profile says.
Improved weapon profiles for Rocket Launcher, Piston and Bio Rifle.
Weapon profiles now work with basic modificatios of original weapons.
Reduced debug log count.
Reduced UT_Eightball related log warnings.
Fixed log spam before game starts (Tick).
================= NATIVE ONLY:
Fixed bug with DirectLink Transloc Piston launch.
Fixed bug with DirectLink Transloc point.
The NavigationActors iterator has had the trace check implemented.
The path creation routine now does the free reachspec slot check on each new node at c++ level (faster), and can reserve free reachspec slots for Botz_NavigBase points.
Removed some bugs in path pruning, should help mostly Siege gametypes.


- Changes from version 13:
Botz won't take classes/skins from packages that aren't in the ServerPackages list if added automatically or via MUTATE ADDBOTZ, this fixes the invisible botz issue.
SmartCTF hack allows Botz to show up on scoreboards.
Botz Jumps may now add their base lift's Z velocity.
================= NATIVE ONLY:
Added DirectLink points.
Added DirectLink translocator points.
Added DirectLink Transloc Piston launch points.
Added LiftExit variant for lift-jumping points.
Botz can now tell special nodes that they're going to navigate through them soon, so that these alter the bot'z behaviour.
-> Example: Translocator DirectLink and Translocator Simple Dests tell Botz to switch to translocator before reaching the base transloc zone.
DynamicBotzPlayer now signals destination node when standing near a DirectLink point.
Fixed bug with Botz attempting to translocate without translocators.


- Changes from version 12
Perfect usage of Kicker and swJumpPad.
Betrayal gametype plugin. (for the beta betrayal mod - BetrayalUT)
Siege gametype plugin, for usage with Siege 4th generation.
Experimental last man standing plugin (doesn't work 100% yet).
Upgraded client interface module to Ferbotz_cl_2, fixes pulse beam attachment.
If a destination is directly unreachable, botz will try to go to the nearest reachable point.
Weapon profiles can be instanced using another profile as template, check Ferbotz.int for the flak cannon examples.
Fixed spectating Botz's using spectator's left click (net clients).
Fixed log spam related to Botz_ProjectileStore
Fixed BotZ spawning before game start on dedicated servers
Fixed bSuperAccel jumps.
Fixed log spam with order giving and 'Freelance' mode.
Fixed Botz_PathLoader actor visible during play.
================= NATIVE ONLY:
Added DodgeStart and DodgeEnd points.
Added Path Remover (very unstable).
Added basic Air nodes for air monsters.
Added Mid-game teleporter connector for Siege (slightly unstable).
Door-only reachspecs now generated between door nodes, should prevent pupaes from being smart enough to chase you around a map with doors (:D)


- Changes from version 11.5:
Refined the path shortening to reduce jumping into unreachable platforms.
Improved kicker handling.
Rewrote Domination control point handling and gametype plugin, supports up to 64 points.
Improved MegaDomination compatibility.
Fixed MonsterHunt gametype plugin.
================== NATIVE ONLY:
Non-swimming creatures won't try using underwater BotZ nodes.
Air-only reachspecs can be generated now (still no air nodes present for that)


- Changes from version 11:
Jumping between platforms fixed, navigation is more robust now.
Reduced ocurrences where botZ trigger doors directly, spoiling game objectives.
Fixed log spam in games with heavy usage of projectiles.
================== NATIVE ONLY:
Fixed simple pathing and pruning.
Added lift related navigation points.
Included "Doors.PNG" for explanation with door points
Included "Lifts.PNG" for explanation with door points
Included/updated more navigation files (some unfinished).


- Changes from version 10:
Assault almost fixed, playable.
Deprecated some code.
Botz no longer attack most of the harmless pawns on MH and SP games.
================== NATIVE ONLY:
Navigation network editing in runtime.
Navigation point save/loading support in runtime.
Sort of user friendly interface on edit mode.
Fixed native infinite loop on LockActor(false).
Included "Navigation Editor.txt" for guidelines on this.
Included "SimpleHigh.PNG" for quick explanation on Simple High path linking.
Included some navigation files on /Botz/ (extensionless) for most of stock maps' enhancement.


- Changes from version 9:
Removed air speed hack and perfectioned air control and kicker usage.
Increased the list size for LiftCenter-LiftExit combos to work on more complex maps.
Long range enemy detection based on abilities.
Sniper suppression when teammates are killed.
Weapons marked as sniper are more eligible for long range shooting.
Snipers and campers will not tend to put the sniper weapon away now.
Siege hack to make the BotZ use a sgPRI instead if possible.
Native branch with faster iterators and ability to edit c++ path system.


- Changes from version 8:
Botz addition only controlled by admins or automated tools.
Botz added using ADDBOTZLIST are immune to the automatic player count adjuster.
Jailbreak hack fix for respawning out of jail
Jailbreak (VERY LIMITED) plugin, allows BotZ arena fights and BotZ attackers to switch from between hunting and releasing based on game conditions.
* Tell all BotZ to attack, or execute 'SET BOTZ ORDERS ATTACK' after adding all BotZ, games should flow with no need of user intervention...
NPLoader crash fixed, BotZ is now compatible with ACE.
Higher skilled Botz's fire translocators further away during translocation chain state.
Fixed R6 bug causing BotZ to be drawn twice on Listen Server viewports.
Fixed R7 bug preventing BotZ from following orders properly.
Extended UPD server query, now displays Bots and BotZ on the player list and fixes global player count.
Updated Setting up.txt, PLEASE RECHECK!!


- Changes from version 7:
Function manager for UT community SDK users (unstable), will fall back to normal BFM if SDK not present.
Client/server simulator can be chosen, therefore rebuilt and renamed to suit a server's needs.
Client/server simulator upgraded to CL_1, with NexGen and ZeroPing compatibility.
Better performance on monster based games.
Fixed log warnings when using NGLogs and Translocators.
Extra conditions and abilities to weapon profiles.
* Beta rocket launcher profile with experimental anti-suicide.


- Changes from version 6.5:
Added experimental weapon profile system
Experimental client/server simulator that makes it possible to host BotZ without mismatches
The function manager can be subclassed and replaced, future workframe into using optimized functions from the community SDK.
Weapons that currently have advanced profiles are:
* Flak Cannon
* Bio rifle
* Impact Hammer
* Shock rifle


- Changes from version 6:
Faction system (read Factions.txt)
Spamming fire improved
Some code optimization and bugfixes (more usage of native functions).
Load reduction based on framerate, allows weaker machines to run more BotZ
Improved lift handling
Jailbreak hack fix to enable BotZ spawning (please test and submit).
Corrected aim error at crouching enemies.
Corrected aim error that gave unfair advantage to late joiners (either players or BotZ).


- Changes from version 5:
Further code optimization during pathfinding.
Translocator throwing perfected, a global formula is used now for all throwing modes.
BotzFunctionManager can now be used to calculate non-flying projectile angles at fixed speeds.
Botz won't attempt flag runs on dangerous spots.
Botz avoiding camper killzones and other dangerous zones fully functional now.
Fixed bug causing BotZ getting stuck at chain translocation mode.
Fixed rare log warnings floods ( BotzTTarget ).
Added quick guide to set up preset BotZ, useful for adding a preset team with one command.


- Changes from version 4:
Reduced taunt spamming in net games.
Reduced likeliness to get stuck in translocation chain.
No more log spamming in MonsterHunt and Coop games.
Firing is done more intelligently: less suicides, less teamkills, more spamming.
Translocator kill.
Fixed doublejump.
Little code optimization.
Some dead animations now play on some meshes.
CTFGame map plugin does better tasking.
MonsterHunt plugin doesn't crash anymore, allows map plugins to add MonsterWaypoints, faster code.
Extra map plugins.


- Changes from version 3:
BotZ will properly jump out of water and fall from platforms.
Physics oddities reduced.
Special point creation system using a statlog actor (a guide will come later).
BotZ won't get stuck with a translocator on defense points, or jumping up stairs.
Kicker handling improved (not properly fixed)
Fixed bug causing a botz to constantly aim at ground on deathmatch games.
Added map plugin for CTF-EpicBoy (lots of defense points)


- Changes from version 2:
No more log warnings from UpdateEyeHeight()
Automatic BotZ number adjusting, useful for servers (see BOTZDEFAULT.ini)
Translocation works better in Dedicated servers
Fixed bug causing projectiles to freeze on clients
Fixed bug causing more than one BotZ to have the same name

===================================
Made by Higor (aka CacoFFF)
contact me at caco_fff@hotmail.com