Is using methods a better idea then using states in your onLoop method?
Is it a good idea to use a static value (2000 ms) for a conditional sleep? Or better to use rand(1500,2500)?
I would add:
Hover over next npc if current npc health < rand(20%,50%)
Moving mouse off screen (not too often)
Turn camera to npc if npc is not visible