Revision 236:
- updated U240.3 action_act_start proto

Revision 235:
- added sanity check on joker's owner id

Revision 234:
- fixed a crash when checking presence of object covering loot to bag
- disabled network messages when playing offline

Revision 233:
- added spanish translation by Kilowide

Revision 232:
- prevent assigning the same object interaction to multiple bots

Revision 231:
- reworked conditions when r230's distance check should apply
- reverted r224's change for small loot

Revision 230:
- added a distance restriction around waypoint to search interactable objects (so when placing a bot, putting a waypoint on the ground won't catch nearby objects, solving conflict between placement and actually wanted interactions)

Revision 229:
- NPCs immediately respond to changes of move orders
- fixed bots doing crap when called while they're on a navlink

Revision 228:
- changed "use cover" mode so bots won't go back to their assigned position until their health ratio is above 50%
- fixed compatibility issue with "Bulletstorm-enabled Ammo Bag Contours" and "Uppers-enabled First Aid Kit Contours"

Revision 227:
- prevent bots from taking parachutes

Revision 226:
- fixed interrupted interaction potentially called if bot's objective was cancelled before interaction has started

Revision 225:
- improved stationary mode, see https://youtu.be/OPiDhP4K4AY

Revision 224:
- reworked bot behaviour after having interacted with an object, see https://youtu.be/zCdJsny8QuE
- fixed bag attached to zipline by bot not properly linked client-side
- disabled annoying interactions with small loot

Revision 223:
- fixed r222's health regen ratio to conform to the specifications of the web page

Revision 222:
- added an option to trade some regen rate for reducing movement penalty while carrying heavy bags

Revision 221:
- adjusted regen rate depending on the type of objective

Revision 220:
- fixed issue with bags put on ziplines by Monkeepers
- updated for compatibility with Crew Ability: Pockets r8

Revision 219:
- decreased risk of cops overlapping a bot assigned to a position

Revision 218:
- fixed interaction axis of fuse box of Scarface Mansion

Revision 217:
- fixed a crash when a mission script refers to another mission script which doesn't exists
- improved forbidden interaction checks

Revision 216:
- reworked evalutation of interaction positions

Revision 215:
- updated for Monkeepers r74

Revision 214:
- fixed a crash when interaction objective is interrupted before action has started
- fixed meleeing an already broken glass

Revision 213:
- fixed a bunch of interactions broken by r212

Revision 212:
- added support for complex interactions implying to break glass first for Monkeepers
- fixed a few very broken interaction positions

Revision 211:
- added naive check to prevent bot from interacting with the far side of a door, see https://youtu.be/1tu5qsPadSQ

Revision 210:
- fixed held "stop AI" command that was possible during an interaction

Revision 209:
- disabled counterpart of option "TeamAIs interactions" while playing holdout since this feature is useless in this game mode

Revision 208:
- fixed bots wrongfully able to interact with a tied civilian

Revision 207:
- fixed bots unable to answer to surrendered guards' pagers
- fixed "all join" keybind affecting bots managed by another player
- fixed despawn of jokers on Beneath the Mountain, part 2

Revision 206:
- fixed bots visible only to civs and not guards while masked during stealth

Revision 205:
- fixed interaction position for objects having totally broken sabotage position

Revision 204:
- added option to emulate "stop AI" control

Revision 203:
- fixed bots sometimes stuck out of the map when trying to interact with objects
- fixed some interaction positions (like inside a wall to grab a painting on Scarface Mansion)

Revision 202:
- added better identification of bots' interactions

Revision 201:
- added a check on objective's validity after bag has been dropped at designated position
- changed conditions for enforcing moving forward in rescue ops to apply only when destination is far

Revision 200:
- improved search of position for interactions for units lacking ray objects

Revision 199:
- fixed crash when bot is hit by a turret

Revision 198:
- fixed a crash sometimes happening when bots drop bags at a designated location

Revision 197:
- changed r196's bot health modifications not to apply when the attacker is a turret

Revision 196:
- added an option to allow bots to interact on objects or not, if enabled bots' tankiness is decreased to prevent abuse

Revision 195:
- added tools to temporarily recruit a fixed bot for nearby objectives (used by Monkeepers)

Revision 194:
- reworked how position to pick up a bag is determined

Revision 193:
- fixed a crash when starting an action

Revision 192:
- readded old search method of position for interactions as a fallback

Revision 191:
- updated for features introduced in Monkeepers r55
- reworked searching of position for interactions (sometimes fails for units having their center of mass in a corner)

Revision 190:
- fixed typo in _check_action_interact

Revision 189:
- [Border Crossing] fixed joker transfer
- reworked conditions that make a bot stay or not where he interacted
- fixed finding a right bot interaction position when script waypoint is involved

Revision 188:
- more shiny compatibility

Revision 187:
- updated for Monkeepers r51 compatibility
- fixed bot interaction with ziplines accepting bags

Revision 186:
- fixed another r184 issue where bots couldn't be called at all

Revision 185:
- fixed change of r184 which broke control of jokers

Revision 184:
- changed how controls are handled to allow more mode combinations

Revision 183:
- prevent bots from interacting with obstructed objects (grabbing jewelry without breaking glass was possible)

Revision 182:
- fixed bot unable to grab a bag when player already carries one

Revision 181:
- fixed default spawn objective being reassigned on awaken bots (stealth only)

Revision 180:
- reworked pathfinding in casing mode
- reintroduced use of direct-to-pos (only when results are guessed to be good)

Revision 179:
- added a notification to install SMU if not installed

Revision 178:
- added special behaviours if "stop AI" control key is held 0.5 sec
  stealth: to prevent waking up a bot by mistake
  loud: to use the mode not used by primary and secondary interactions

Revision 177:
- improved check on carry interaction availability
- fixed detection profile not updated when going loud for bots awaken during stealth

Revision 176:
- fixed bots not detected by civilians when masked up during stealth

Revision 175:
- improved bot movement when assigned a special objective (ie less backward walk)
- added special objective support for pagers
- fixed inconsistent bot behaviour when *situation too long to explain* happens (should stay on waypoint, did not)
- changed icons in stealth: hand when normal, head with glasses when ability spotter is active

Revision 174:
- fixed a crash introduced in r173 for interactions with no timer

Revision 173:
- added option to increase interaction time of bots

Revision 172:
- compatibility with Crew Ability Spotter

Revision 171:
- prevent normal call on a bot not awaken from having any effect in stealth

Revision 170:
- improved bot control in stealth:
  1/ at first bot doesn't follow
  2/ if called once with secondary interaction, bot follows in casing mode
  3/ if called a second time, bot masks up
NB: casing mode only available if player started in that state

Revision 169:
- reverted use of direct-to-pos as it did a bad job regarding streamlining of non straightforward paths

Revision 168:
- fixed a crash when a bag retrieve operation is attempted on a level blacklisted by Monkeepers

Revision 167:
- fixed quotes in chinese translation

Revision 166:
- updated chinese translation by Arknights (卢比扬卡)

Revision 165:
- bots can be ordered to activate an ecm feedback

Revision 164:
- patrol mode will use random positions if no cover is found

Revision 163:
- fixed cover not correctly updated in follow mode
- fixed bots dropping their bags when getting back on their initial positions
- fixed revive objectives not correctly managed when assigned manually

Revision 162:
- fixed a client crash when network messages were processed too soon during loading

Revision 161:
- patrol mode is not forced to stationary anymore in stealth (overrides r147 behaviour)

Revision 160:
- changed how chinese translation is loaded

Revision 159:
- fixed dependencies in mod.txt

Revision 158:
- changed update system to Simple Mod Updater

Revision 157:
- fixed limited call distance

Revision 156:
- improved significantly efficiency of friendly AI to cross long distances, see https://youtu.be/OPghZ2Li7NE
- prevent reset of objective (and pathfinding) when calling a bot already running to revive you

Revision 155:
- added chinese translation by Shark_Yi

Revision 154:
- made sure that mugshot's interaction circle is visible (sadly doesn't work with MUI)
- changed icons for assist, stationary and patrol

Revision 153:
- fixed a crash when retrieving a bag which disappears during the process

Revision 152:
- fixed option "shouts filter"

Revision 151:
- [Border Crossing] finally made a proper joker transfer...
- prevent some useless mod messages related to bot state changes

Revision 150:
- [Border Crossing] reworked again how jokers follow from Arizona to Mexico

Revision 149:
- [Border Crossing] reworked how jokers follow from Arizona to Mexico (r148 was causing a bot to follow in stealth)

Revision 148:
- [Border Crossing] jokers made in Arizona will follow to Mexico

Revision 147:
- improved how bots can be ordered to retrieve bags taken by cops, see https://youtu.be/EJWg0oeyKaw
- (stealth only) bots waken up and moved to a position always use the stationary setting, independently of the configuration

Revision 146:
- fixed assistants keeping their objective if downed player is not rescued and sent to custody

Revision 145:
- improved group placement around a single position

Revision 144:
- fixed a crash when a bot sent to interact with something is recruited to assist a revive operation

Revision 143:
- reworked how rescuers are sent back to their initial positions to handle properly concurrent revives, reassignments and retries

Revision 142:
- fixed a crash when a bot goes down
- fixed an issue when an assistant receives a revive objective (was interrupted)

Revision 141:
- changed revive objectives: a fixed bot will switch temporarily his objective to revive and then go back to his original assigned position
- added "assist medic" behaviour, see https://youtu.be/CakZN9pqva0

Revision 140:
- reworked option "Jokers move like TeamAIs"

Revision 139:
- added a safety check when updating a joker's healthbar

Revision 138:
- fixed when a TeamAI fails to interact with marked object and loops

Revision 137:
- added italian translation by LycanCHKN

Revision 136:
- fixed wrong id for a few options (making it not possible to change from default value)
- cleaned up store and access to Keepers' variables

Revision 135:
- added support for Iter's direct-to-pos functionality

Revision 134:
- updated for compatibility with Moveable Intimidated Cop and Please Go There use of "Stop AI" control

Revision 133:
- fixed r132's check that didn't consider special carry types like paintings

Revision 132:
- made sure that a bot already carrying a bag won't try to take another one if sent to a waypoint near a bag

Revision 131:
- improved placement when multiple AI are sent to the same waypoint, see https://youtu.be/cldprcNuJx0
- fixed animation sync with vanilla clients
- added "No Duplicated Bullets" as a dependency, a client-side mod only that prevents clients from doing the host's job

Revision 130:
- fixed a crash when TeamAI's followed player quits or go into custody while bot is sent on another objective

Revision 129:
- added thai translation by NewPJzuza

Revision 128:
- removed obsolete code
- fixed a graphical glitch with MUI Optional Assets

Revision 127:
- use proper revive objective when a bot is ordered with a manually set waypoint (not using prev/next functions)

Revision 126:
- fixed a crash when player goes down

Revision 124:
- improved handling of revive objectives

Revision 123:
- a bot can be sent to revive another bot or a player via waypoint
- a bot sent to interact will stay around if a custom waypoint is nearby

Revision 122:
- prevent players in custody to issue SO orders
- when sent to a waypoint, bots will drop their bag once arrived

Revision 121:
- prevent some interactions to block game (for those cases, special equipment is transfered to host)

Revision 120:
- removed a crashy debug leftover

Revision 119:
- forgot a case in r118

Revision 118:
- fixed interaction circle for revive objectives

Revision 117:
- added code that should prevent a rare vanilla crash related to joker removal
- changed again some interaction threshold

Revision 116:
- changed objective acceptance threshold so it's not impossible to place a bot to guard bags close to him

Revision 115:
- improved compatibility with MUI (hoping it was the cause of name labels sometimes getting misplaced)

Revision 114:
- fixed a crash when a joker is exchanged

Revision 113:
- added a check for presence of interaction circle (blabla custom hud blabla crash)

Revision 112:
- prevent bots from interacting with players' deployables

Revision 111:
- added basic lootbag support, see https://youtu.be/tPklhMa8zuk
- improved slightly if a bot should leave or stay after having interacted with something

Revision 110:
- fixed recent network changes that broke stop commands for clients

Revision 109:
- fixed an issue when a bot on an interaction objective gets replaced by a player
- fixed bot's weapon still visible for clients during lockpick animation
- fixed loot taken by bots not always synchronized on clients

Revision 108:
- fixed a serious compatibility issue with non-modded clients

Revision 107:
- fixed a crash with patrol covers

Revision 106:
- don't assume panel ID are the same for host and clients
- fixed generic interaction animation synchronization with clients (but non-modded clients won't see it)
- fixed bots turning away when executing a generic interaction animation

Revision 105:
- blocked ability to send bots doing objectives having a waypoint but not yet reachable
- fixed interaction orientation in a few cases

Revision 104:
- changed icon used for revive interaction in teammate panel so difference between providing help and needing help is clear
- fixed a crash when managers.hud is not available
- improved method to find best interaction position
- blacklisted a few bogus interaction types

Revision 103:
- added interaction circle for bots reviving players
- fixed team panel icons not correctly reset
- fixed vertical issues mostly seen on Undercover

Revision 102:
- fixed some crash issues with interaction UI elements
- fixed interaction with armored car on Hoxton Breakout D1 (some locations don't work due to navdata being picky)
- (MUI only) fixed interaction circle not removed for cancelled interaction

Revision 101:
- added interaction circle and description for bots

Revision 100:
- changed a few animations
- made sure a bot doesn't get stuck, looping an interaction animation forever
- fixed a crash with objects lacking a position (computer of jewelry store of Stealing Xmas)

Revision 99:
- added checks so bots won't interact on wrong side of a door/wall
- fixed incorrect animations with some drills
- some crashes have disappeared without me remembering the exact reason
- due to the lack of proper animation for long+high interactions, bots will convince objects to act solely through power of words! (I'll have to ask for one to OVERKILL for Christmas... actually, I might just do that)

Revision 98:
- extended support for interaction on waypoint, see https://youtu.be/OCdTeoJ008g
it includes anything without skill or equipment requirements, from repairing a drill to getting a code number on GGC
known bug: bots try to interact on the wrong side of some doors

Revision 97:
- fixed bots' icons not appearing at all for clients

Revision 96:
- removed forgotten debug leftovers
- fixed a crash on clients

Revision 95:
- fixed bots' icons not removed client-side
- bots can't be interrupted when executing an objective having the forced attribute

Revision 94:
- changed and delayed bot response to order so all characters have something to say
- changed player's gesture when sending a bot to a waypoint (stop replaced by move)

Revision 93:
- fixed bots' interaction position with powerbox
- reworked scan of powerbox in mission scripts: wasn't working on certain maps such as Election or The Diamond, afaik Counterfeit is the only not working one 

Revision 92:
- improved positioning of bots when sending them to a custom waypoint put on a wall
- reworked how teammates' icons are set
- added medic icon on bots having an objective of type "revive", see https://youtu.be/YQGfROmP6QM
- added ability to repair powerboxes, see https://youtu.be/xwmTztNwiQ4

Revision 91:
- fixed a crash when marking a camera

Revision 90:
- fixed a crash when shouting at another player

Revision 89:
- updated to U162
- added ability to control bots woken up by Monkeepers in stealth

Revision 88:
- removed Announcer

Revision 87:
- fixed option to give jokers same speed than bots (did nothing)

Revision 86:
- added code to prevent multiple mod loading

Revision 85:
- fixed mod.txt dependencies section
- fixed keybinds

Revision 84:
- even more absolutely essential BLT2 integration

Revision 83:
- more absolutely essential BLT2 integration

Revision 82:
- BLT2

Revision 81:
- added an option to give jokers same speed than bots

Revision 80:
- don't show cover positions within distance but on different level as usable ("use cover" only)
- added extra checks in convert_hostage_to_criminal()

Revision 79:
- fixed despawn of jokers on Birth of Sky's plane

Revision 78:
- added Goonmod's Custom Waypoints as a dependency

Revision 77:
- fixed malformed JSON when a bot enters surrender logic

Revision 76:
- removed code that's been integrated in last BLT
- fixed a vanilla crash occuring when bots's masks take too long to load

Revision 75:
- fixed JSON errors

Revision 74:
- like normal bots, jokers won't move crouched anymore (and follow better)

Revision 73:
- compatibility update for FSS r79

Revision 72:
- fixed an oversight in r70 preventing to call jokers while carrying a bag

Revision 71:
- added synchronization of jokers for dropped-in players (works with non-modded clients too)

Revision 70:
- fixed a crash when calling a joker while in an arrested state

Revision 69:
- fixed jokers that forced to set their attention on Charon (vanilla bug)

Revision 68:
- fixed despawn of jokers on Beneath the Mountain and Hoxton Breakout
- changed one generic despawn method so it doesn't affect jokers (Hotline Miami D2)
- the shout filter "only blocks" does not affect secondary interaction anymore

Revision 67:
- reverted some changes from r66 that broke use cover and patrol modes for jokers

Revision 66:
- fixed a case where a bot would not shoot after being revived
- bots in patrol mode will take better covers when attacked

Revision 65:
- fixed shown cover positions when a client uses a custom waypoint to stop a bot

Revision 64:
- fixed a crash related to automatically changed default joker name (bis)

Revision 63:
- fixed a crash related to automatically changed default joker name
- added some sanity checks to prevent searching a cover nearby an inexistant position

Revision 62:
- added a menu option to ease the setting of a custom joker name
- fixed mode when using keybind "all hold"

Revision 61:
- fixed visual hints of r60 (that relied on data not available when debug is not enabled)

Revision 60:
- added visual hints to show the position of available covers
- each mode has a specific icon ("go to" icon for stationary, "shield" for use cover and "running" for patrol)
- added an option to set the mode to use when using the "all hold" keybind

Revision 59:
- changed mode "defend area" to "patrol" (the bot will scout his segment randomly)
- fixed how a bot in "use cover" mode would return to his assigned position

Revision 58:
- several bug and crash fixes

Revision 57:
- added mode "restricted" where the bot can move up to 4 meters from his assigned position
- added mode "defend area" where the bot can move in the whole segment where he is assigned
- added options to associate a mode to primary and secondary interactions

Revision 56:
- jokers stop immediately when told to hold their position
- fixed label deletion of despawned jokers
- fixed the destination used when a bot is asked to get back on his assigned position after being hurt (if assigned a new position while hurt, it ended up doing a back and forth between old and new positions)

Revision 55:
- moved all path improvements into an external library: Iter

Revision 54:
- improved path streamliner

Revision 53:
- r52 broke jokers for clients... fixed

Revision 52:
- streamlined paths

Revision 51:
- remove the assigned position of a bot when he is teleported elsewhere

Revision 50:
- increased priority of path calculation of jokers
- made sure that jokers are always flagged "important"

Revision 49:
- properly fixed a bug with the skill Inspire aced

Revision 48:
- changed the method used by bots to go back to their assigned positions
- fixed a bug with the skill Inspire aced
- team ais and jokers go back to their assigned positions after executing a dodge movement
- removed values for Partner in Crime's damage reduction as they were fixed in U119

Revision 47:
- fixed values for Partner in Crime's damage reduction

Revision 46:
- don't change the bot objective when exiting an interrupted hurt action (might solve the "chk_should_turn" crash)

Revision 45:
- changed the pathing of TeamAIs and jokers so they join you faster
- fixed an issue after inspiring a bot, he'd try to leave his position

Revision 44:
- clean-up the fix for stuck jokers
- using the right method to access Announcer

Revision 43:
- switched announcement code to library Announcer

Revision 42:
- fixed some callbacks that were not updated when AI objective changed

Revision 41:
- fixed properly the vanilla bug making jokers to stop following
- reworked objective and logic assignments

Revision 40:
- definitely fixed the bug that permitted to change the objective of a downed bot (checked on "dead" and "bleed_out" states but not "fatal")
- fixed some occurences of a vanilla bug making jokers to stop following
- added some code to ensure a joker follows his converter rather than just the closest player

Revision 39:
- added more checks to prevent from changing the objective of downed bots
- really prevent a bot to leave his assigned place to take cover :s

Revision 38:
- prevent a bot to leave his assigned place to take cover
- fixed a crash when using the "all join" keybind while a TeamAI is in disabled state

Revision 37:
- the fix of r36 but done properly this time :s

Revision 36:
- fixed a bug that made vanilla clients to crash when a joker was set to hold his position

Revision 35:
- instead of ignoring task delays of jokers, they now receive the logic tag "important", making them more efficient while somehow sticking more to the rules
- fixed jokers' health bar that was not visible with vanilla HUD (worked perfectly with MUI though)

Revision 34:
- updated to U107

Revision 33:
- enhanced reactivity of converted cops (they will shoot more and follow like normal bots)

Revision 32:
- fixed a crash when going to jail while a converted cop is holding his position

Revision 31:
- the player can manage his 2 jokers (skill "confident" aced)

Revision 30:
- added a check to prevent a crash in GroupAIStateBase:_determine_objective_for_criminal_AI()

Revision 29:
- added russian translation by chrom[K]a

Revision 28:
- like r23's "fixed bot returning from custody or replacing a leaving player not having his shield icon", but really this time :s

Revision 27:
- fixed keybinds trigged while typing a message
- fixed the "dont_follow" objectives that were partially reset

Revision 26:
- prevent keybinds to issue an order to bots already in the wanted state

Revision 25:
- added 2 keybinds to order all bots to follow/hold their position

Revision 24:
- fixed 2 crashes when the player to follow is not alive anymore

Revision 23:
- changed behaviour: if the player shouting at a bot holding his position has an active waypoint then the bot will directly hold the new position
- fixed bot returning from custody or replacing a leaving player not having his shield icon

Revision 22:
- changed a bit how jokers' names are handled

Revision 21:
- the host-only task of getting back the assigned position after taking damages was executed on clients too

Revision 20:
- reworked the announce so it tells about all gameplay changing mods in only one chat message

Revision 19:
- simplified the filter settings

Revision 18:
- added an option menu
- added the possibility to filter only blocking shouts

Revision 17:
- a better implementation of what's done in the previous revision

Revision 16:
- changed pathfinding so jokers can follow us wherever we go

Revision 15:
- make all bots leave their position when all players are in fatal state

Revision 14:
- major code clean-up

Revision 13:
- fixed the filter so only AI are excluded

Revision 12:
- added an optional control key to filter shouts (if not pressed, bots are excluded from the target list)

Revision 11:
- fixed assignable position for jokers (was broken by new feature of r10)

Revision 10:
- you have to be followed by a TeamAI first before being able to stop him (2nd shout)
- team AI don't leave its assigned position when you enter a vehicle

Revision 9:
- fixed again sync of the keeper state/icon when a non modded interact with team AI (was broken by jokers' custom names)

Revision 8:
- far GoonMod's custom waypoints can now be reached
- adjusted position of health indicator of jokers

Revision 7:
- the name of a joker gets the color of his owner
- added health indicator to jokers (not mandatory, change the value of show_joker_health in mods/saves/keepers.txt)

Revision 6:
- silly me disabled in r5 the fix of r4
- customisable joker name (can be synched, no options GUI yet)
- fixed bot leaving its position when tased

Revision 5:
- called jokers will come to your position instead of weirdly lonewolfing
- block voice call to a joker when in bleedout
- (like in r3 but really this time) jokers never leave their assigned position

Revision 4:
- fixed the team AI unsolicited revive (reintroduced by cleanups of r3)

Revision 3:
- inform clients through the chat that the mod is active
- jokers never leave their assigned position (they were patrolling their area)
- several minor cleanups

Revision 2:
- fixed travel loop (and anim) when trying to go to unreachable coordinates
- fixed team AI's shield icon unrecovered after going into custody
- when in bleedout you can't stop a bot anymore
- added some sanity checks
- fixed team AI leaving by itself its assigned position when you are in bleedout
  (this probably fixed the issue with tased team AI)
- fixed sync of the keeper state/icon when a non modded interact with team AI
