v2.3.0: fixed char swapping and ally warp working on immobile allies
This commit is contained in:
@@ -208,6 +208,7 @@ public abstract class Char extends Actor {
|
|||||||
return true;
|
return true;
|
||||||
} else if (c instanceof Hero
|
} else if (c instanceof Hero
|
||||||
&& alignment == Alignment.ALLY
|
&& alignment == Alignment.ALLY
|
||||||
|
&& !hasProp(this, Property.IMMOVABLE)
|
||||||
&& Dungeon.level.distance(pos, c.pos) <= 2*Dungeon.hero.pointsInTalent(Talent.ALLY_WARP)){
|
&& Dungeon.level.distance(pos, c.pos) <= 2*Dungeon.hero.pointsInTalent(Talent.ALLY_WARP)){
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@@ -235,6 +236,11 @@ public abstract class Char extends Actor {
|
|||||||
int oldPos = pos;
|
int oldPos = pos;
|
||||||
int newPos = c.pos;
|
int newPos = c.pos;
|
||||||
|
|
||||||
|
//can't swap or ally warp if either char is immovable
|
||||||
|
if (hasProp(this, Property.IMMOVABLE) || hasProp(c, Property.IMMOVABLE)){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
//warp instantly with allies in this case
|
//warp instantly with allies in this case
|
||||||
if (c == Dungeon.hero && Dungeon.hero.hasTalent(Talent.ALLY_WARP)){
|
if (c == Dungeon.hero && Dungeon.hero.hasTalent(Talent.ALLY_WARP)){
|
||||||
PathFinder.buildDistanceMap(c.pos, BArray.or(Dungeon.level.passable, Dungeon.level.avoid, null));
|
PathFinder.buildDistanceMap(c.pos, BArray.or(Dungeon.level.passable, Dungeon.level.avoid, null));
|
||||||
|
|||||||
Reference in New Issue
Block a user