dwonderley / mookAI

If you encounter problems, please leave an issue or message me on the FVTT discord with the handle @Daveofwonders
MIT License
9 stars 13 forks source link

mookAI

mookAI provides combat automation for low-utility NPCs.

The mook is a creature characterizied by their lack of ambition: they must be told where to go, what to do, and when to do it. This module automates those decisions, freeing you of managing their doomed efforts. In effect, this tool is primarily a time-saving device: it shifts the burden of attention, freeing the GM to spend more time playing the villian(s) without dominating combat activity. For example, the GM could use mookAI to take several NPC turns in just a few seconds while describing all of the mooks' actions as though they had happend simultaneously, as below.

Move mooks quickly

Now with multi-token automation!

How does it work?

When a hotkey is pressed ('g', for [g]o), mookAI takes the turn for the active token in the turn order*. This process consists of the following steps:

A different keybind, shift+g, moves all currently controlled tokens, regardless of their position in the combat tracker, or even if they are not in the combat tracker at all.

Mooks respect vision

Notes and future plans

Currently, only 5e is supported, but the core of mookAI is system-agnostic. Other systems can be implemented in a few hours by overriding the indicated methods in the MookModel class. MookModel5e demonstrates how this is done. Mainly, mookAI needs to be told where to find certain data (movement speed, attack range, actions per turn) and how to interpret it. I can't implement these models for every system, but I am more than happy to assist anyone who wants to adapt mookAI for the system they use.

mookAI provides three key bindings: [g]o, [n]ext, and [b]ack. The 'g' key activates mookAI. The other two -- 'n' and 'b' -- change whose turn it is in the combat tracker. These keys are disabled when mookAI is already active and when typing in a window. I may add the ability to remap these keys if there is demand for it.

A future update will add target and attack selection to the post-planning confirmation scene. Additionally, it will likely add a pre-planning screen where the user can change how the mook behaves, such as the number of dashes they may take, the number of attack actions they possess, and the number of attacks per action. These features are already supported for 5e, but they don't have an interface at the moment because I don't know HTML yet.

mookAI has a single dependency, my path finding library. Originally, it was part of this module, but I split it out so others could use it independently. If you would like to use it in your own module but think it needs some additional functionality, please feel free to message me, and I'll see what I can do.

There is a known bug where sometimes the ids of combatants in the combat tracker do not match the token ids. I haven't been able to replicate this problem with consistency. The only way I've found to fix it is to delete the token and re-add it to the combat tracker. Failing that, moving to a different combat will solve the problem. This has only happened a couple of times in months of testing.

I recommend using the "creep" option for mook exploration. I may make the "wander" option more intelligent (i.e. use the path planner) eventually, but at the moment, I feel like it is too random.

Mooks respect boundaries

*mookAI will not take the turn of PCs

**Right now, mookAI makes no differentiation between hostile and friendly NPCs, so only use mookAI when you want to attack the players.

***Actor and token-level configuration is coming, but for right now, all accessible settings are global, under the module configuration page