v2.1.3: fixed action and minor pathfinding errors with mine action

This commit is contained in:
Evan Debenham
2023-06-23 12:35:47 -04:00
parent 161a67b8e1
commit 10dc3bba75
@@ -1049,6 +1049,7 @@ public class Hero extends Char {
private boolean actOpenChest( HeroAction.OpenChest action ) { private boolean actOpenChest( HeroAction.OpenChest action ) {
int dst = action.dst; int dst = action.dst;
if (Dungeon.level.adjacent( pos, dst ) || pos == dst) { if (Dungeon.level.adjacent( pos, dst ) || pos == dst) {
path = null;
Heap heap = Dungeon.level.heaps.get( dst ); Heap heap = Dungeon.level.heaps.get( dst );
if (heap != null && (heap.type != Type.HEAP && heap.type != Type.FOR_SALE)) { if (heap != null && (heap.type != Type.HEAP && heap.type != Type.FOR_SALE)) {
@@ -1095,6 +1096,7 @@ public class Hero extends Char {
private boolean actUnlock( HeroAction.Unlock action ) { private boolean actUnlock( HeroAction.Unlock action ) {
int doorCell = action.dst; int doorCell = action.dst;
if (Dungeon.level.adjacent( pos, doorCell )) { if (Dungeon.level.adjacent( pos, doorCell )) {
path = null;
boolean hasKey = false; boolean hasKey = false;
int door = Dungeon.level.map[doorCell]; int door = Dungeon.level.map[doorCell];
@@ -1140,8 +1142,9 @@ public class Hero extends Char {
} }
public boolean actMine(HeroAction.Mine action){ public boolean actMine(HeroAction.Mine action){
if (Dungeon.level.adjacent(pos, action.dst) if (Dungeon.level.adjacent(pos, action.dst)){
&& (Dungeon.level.map[action.dst] == Terrain.WALL || Dungeon.level.map[action.dst] == Terrain.WALL_DECO) path = null;
if ((Dungeon.level.map[action.dst] == Terrain.WALL || Dungeon.level.map[action.dst] == Terrain.WALL_DECO)
&& Dungeon.level.insideMap(action.dst)){ && Dungeon.level.insideMap(action.dst)){
sprite.attack(action.dst, new Callback() { sprite.attack(action.dst, new Callback() {
@Override @Override
@@ -1174,14 +1177,21 @@ public class Hero extends Char {
Dungeon.observe(); Dungeon.observe();
spendAndNext(TICK); spendAndNext(TICK);
ready();
} }
}); });
return false; } else {
ready();
} }
return false;
} else if (getCloser( action.dst )) {
return true;
} else {
ready(); ready();
return false; return false;
} }
}
private boolean actTransition(HeroAction.LvlTransition action ) { private boolean actTransition(HeroAction.LvlTransition action ) {
int stairs = action.dst; int stairs = action.dst;