/*
* Need to use a real creature, because the
* creature needs to be offensive to see the
* targets.
*/
final Creature creature = SingletonRepository.getEntityManager().getCreature("rat");
Player veteran = PlayerTestHelper.createPlayer("veteran");
Player newbie = PlayerTestHelper.createPlayer("newbie");
StendhalRPZone arena = new StendhalRPZone("arena");
arena.add(creature);
assertFalse("is not attacking", strat.hasValidTarget(creature));
arena.add(veteran);
arena.add(newbie);
veteran.addXP(10000);
newbie.addXP(100);
assertTrue("sanity check for player levels", veteran.getLevel() > newbie.getLevel());
creature.setPosition(3, 3);
veteran.setPosition(3, 4);
// Should pick the nearest: veteran
strat.findNewTarget(creature);
assertTrue("has a valid target", strat.hasValidTarget(creature));
assertEquals("attack nearest", veteran, creature.getAttackTarget());
// move newbie near. this should result in switching targets
newbie.setPosition(2, 3);
assertTrue("has a valid target", strat.hasValidTarget(creature));
assertEquals("attack weakest", newbie, creature.getAttackTarget());
// move veteran away for a moment
veteran.setPosition(3, 5);
// should make no difference
assertTrue("has a valid target", strat.hasValidTarget(creature));
assertEquals("attack weakest", newbie, creature.getAttackTarget());
veteran.setPosition(3, 4);
// and neither should putting him back (unlike newbie's arrival)
assertTrue("has a valid target", strat.hasValidTarget(creature));
assertEquals("attack weakest", newbie, creature.getAttackTarget());
}