v1.4.0: improved target switching behaviour for ranged chars
This commit is contained in:
@@ -349,12 +349,16 @@ public abstract class Mob extends Char {
|
|||||||
if (enemies.isEmpty()){
|
if (enemies.isEmpty()){
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
//go after the closest potential enemy, preferring the hero if two are equidistant
|
//go after the closest potential enemy, preferring enemies that can be attacked, and the hero if two are equidistant
|
||||||
Char closest = null;
|
Char closest = null;
|
||||||
for (Char curr : enemies){
|
for (Char curr : enemies){
|
||||||
if (closest == null
|
if (closest == null){
|
||||||
|| Dungeon.level.distance(pos, curr.pos) < Dungeon.level.distance(pos, closest.pos)
|
closest = curr;
|
||||||
|| Dungeon.level.distance(pos, curr.pos) == Dungeon.level.distance(pos, closest.pos) && curr == Dungeon.hero){
|
} else if (canAttack(closest) && !canAttack(curr)){
|
||||||
|
continue;
|
||||||
|
} else if ((canAttack(curr) && !canAttack(closest))
|
||||||
|
|| (Dungeon.level.distance(pos, curr.pos) < Dungeon.level.distance(pos, closest.pos))
|
||||||
|
|| (Dungeon.level.distance(pos, curr.pos) == Dungeon.level.distance(pos, closest.pos) && curr == Dungeon.hero)){
|
||||||
closest = curr;
|
closest = curr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user