if (!actor.isInCombat())
{
_lastMinionsTargetRef = HardReferences.emptyRef();
return;
}
final MinionList ml = actor.getMinionList();
if ((ml == null) || !ml.hasMinions())
{
_lastMinionsTargetRef = HardReferences.emptyRef();
return;
}
final long now = System.currentTimeMillis();
if ((_nextOrderTime > now) && (_lastMinionsTargetRef.get() != null))
{
final Player old_target = _lastMinionsTargetRef.get();
if ((old_target != null) && !old_target.isAlikeDead())
{
for (MinionInstance m : ml.getAliveMinions())
{
if (!m.getAI().getAttackTarget().equals(old_target))
{
m.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, old_target, 10000000);
}
}
return;
}
}
_nextOrderTime = now + 30000;
final List<Player> pl = World.getAroundPlayers(actor);
if (pl.isEmpty())
{
_lastMinionsTargetRef = HardReferences.emptyRef();
return;
}
final List<Player> alive = new LazyArrayList<>();
for (Player p : pl)
{
if (!p.isAlikeDead())
{
alive.add(p);
}
}
if (alive.isEmpty())
{
_lastMinionsTargetRef = HardReferences.emptyRef();
return;
}
final Player target = alive.get(Rnd.get(alive.size()));
_lastMinionsTargetRef = target.getRef();
Functions.npcSayCustomMessage(actor, "Kama56Boss.attack", target.getName());
for (MinionInstance m : ml.getAliveMinions())
{
m.getAggroList().clear();
m.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, target, 10000000);
}
}