diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index d4162e59b..0cccda625 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -775,7 +775,7 @@ actors.hero.talent.enhanced_rings.desc=_+1:_ When the Rogue uses an artifact, hi actors.hero.talent.enhanced_lethality.title=enhanced lethality actors.hero.talent.enhanced_lethality.desc=_+1:_ The Assassin can assassinate enemies left at below _4/13/27/67% health_ per level of preparation, up from 3/10/20/50%.\n\n_+2:_ The Assassin can assassinate enemies left at below _5/17/33/83% health_ per level of preparation, up from 3/10/20/50%.\n\n_+3:_ The Assassin can assassinate enemies left at below _6/20/40/100% health_ per level of preparation, up from 3/10/20/50%. actors.hero.talent.assassins_reach.title=assassin's reach -actors.hero.talent.assassins_reach.desc=_+1:_ The Assassin's blink range per level of preparation is increased to _1/3/4/6 tiles_, from 1/2/3/4.\n\n_+2:_ The Assassin's blink range per level of preparation is increased to _2/4/6/8 tiles_, from 1/2/3/4.\n\n_+3:_ The Assassin's blink range per level of preparation is increased to _2/5/7/10 tiles_, from 1/2/3/4. +actors.hero.talent.assassins_reach.desc=_+1:_ The Assassin's blink range per level of preparation is increased to _1/3/4/6 tiles_, from 1/2/3/4.\n\n_+2:_ The Assassin's blink range per level of preparation is increased to _2/4/6/8 tiles_, from 1/2/3/4.\n\n_+3:_ The Assassin's blink range per level of preparation is increased to _2/5/7/10 tiles_, from 1/2/3/4.\n\nThis blink can go through hazards and enemies, but not through solid terrain like walls. actors.hero.talent.bounty_hunter.title=bounty hunter actors.hero.talent.bounty_hunter.desc=_+1:_ When the Assassin kills an enemy with a prepared strike their item drop chance is increased by _2/4/8/16%_, per level of preparation.\n\n_+2:_ When the Assassin kills an enemy with a prepared strike their item drop chance is increased by _4/8/16/32%_, per level of preparation.\n\n_+3:_ When the Assassin kills an enemy with a prepared strike their item drop chance is increased by _6/12/24/48%_, per level of preparation. @@ -915,7 +915,7 @@ actors.hero.talent.combined_energy.title=combined energy actors.hero.talent.combined_energy.desc=_+1:_ If the Monk uses a weapon ability and a _4+ energy_ ability successively, she regains 50% of her spent energy and resets her ability cooldown.\n\n_+2:_ If the Monk uses a weapon ability and a _3+ energy_ ability successively, she regains 50% of her spent energy and resets her ability cooldown.\n\n_+3:_ If the Monk uses a weapon ability and a _2+ energy_ ability successively, she regains 50% of her spent energy and resets her ability cooldown. actors.hero.talent.close_the_gap.title=close the gap -actors.hero.talent.close_the_gap.desc=_+1:_ The Duelist blinks _up to two tiles_ toward her target when starting a duel.\n\n_+2:_ The Duelist blinks _up to three tiles_ toward her target when starting a duel.\n\n_+3:_ The Duelist blinks _up to four tiles_ toward her target when starting a duel.\n\n_+4:_ The Duelist blinks _up to five tiles_ toward her target when starting a duel.\n\nThis blink can go through enemies and hazards, and is taken into account when determining if an enemy is in range to be challenged. +actors.hero.talent.close_the_gap.desc=_+1:_ The Duelist blinks _up to two tiles_ toward her target when starting a duel.\n\n_+2:_ The Duelist blinks _up to three tiles_ toward her target when starting a duel.\n\n_+3:_ The Duelist blinks _up to four tiles_ toward her target when starting a duel.\n\n_+4:_ The Duelist blinks _up to five tiles_ toward her target when starting a duel.\n\nThis blink can go through hazards and enemies, but not solid terrain like walls. The blink is taken into account when determining if an enemy is in range to be challenged. actors.hero.talent.invigorating_victory.title=invigorating victory actors.hero.talent.invigorating_victory.desc=_+1:_ If the Duelist defeats her target before the duel ends, she heals for _5 HP plus 30% of the damage_ she took during the duel.\n\n_+2:_ If the Duelist defeats her target before the duel ends, she heals for _10 HP plus 50% of the damage_ she took during the duel.\n\n_+3:_ If the Duelist defeats her target before the duel ends, she heals for _15 HP plus 65% of the damage_ she took during the duel.\n\n_+4:_ If the Duelist defeats her target before the duel ends, she heals for _20 HP plus 75% of the damage_ she took during the duel. actors.hero.talent.elimination_match.title=elimination match diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java index ba17e07bc..f972a1ff8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java @@ -472,7 +472,7 @@ public class Combo extends Buff implements ActionIndicator.Action { Ballistica c = new Ballistica(target.pos, enemy.pos, Ballistica.PROJECTILE); if (c.collisionPos == enemy.pos){ final int leapPos = c.path.get(c.dist-1); - if (!Dungeon.level.passable[leapPos]){ + if (!Dungeon.level.passable[leapPos] && !(target.flying && Dungeon.level.avoid[leapPos])){ GLog.w(Messages.get(Combo.class, "bad_target")); } else if (Dungeon.hero.rooted) { Camera.main.shake( 1, 1f ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Preparation.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Preparation.java index c3e1940b4..63b39bc41 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Preparation.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Preparation.java @@ -291,7 +291,9 @@ public class Preparation extends Buff implements ActionIndicator.Action { for (int i : PathFinder.NEIGHBOURS8){ //cannot blink into a cell that's occupied or impassable, only over them if (Actor.findChar(cell+i) != null) continue; - if (!Dungeon.level.passable[cell+i]) continue; + if (!Dungeon.level.passable[cell+i] && !(target.flying && Dungeon.level.avoid[cell+i])) { + continue; + } if (dest == -1 || PathFinder.distance[dest] > PathFinder.distance[cell+i]){ dest = cell+i; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/duelist/Challenge.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/duelist/Challenge.java index 355270950..d5aedddcf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/duelist/Challenge.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/duelist/Challenge.java @@ -104,7 +104,7 @@ public class Challenge extends ArmorAbility { return; } - boolean[] passable = Dungeon.level.passable.clone(); + boolean[] passable = BArray.not(Dungeon.level.solid,null); for (Char c : Actor.chars()) { if (c != hero) passable[c.pos] = false; } @@ -120,6 +120,7 @@ public class Challenge extends ArmorAbility { for (int i = 0; i < PathFinder.distance.length; i++){ if (PathFinder.distance[i] == Integer.MAX_VALUE || reachable[i] == Integer.MAX_VALUE + || (!Dungeon.level.passable[i] && !(hero.flying && Dungeon.level.avoid[i])) || i == targetCh.pos){ continue; } @@ -134,7 +135,7 @@ public class Challenge extends ArmorAbility { } } - if (PathFinder.distance[blinkpos] == Integer.MAX_VALUE){ + if (reachable[blinkpos] == Integer.MAX_VALUE){ GLog.w(Messages.get(this, "unreachable_target")); if (hero.rooted) Camera.main.shake( 1, 1f ); return; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/duelist/Feint.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/duelist/Feint.java index a5f834c5f..7b24c63ff 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/duelist/Feint.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/duelist/Feint.java @@ -90,7 +90,7 @@ public class Feint extends ArmorAbility { return; } - if (!Dungeon.level.passable[target] || Actor.findChar(target) != null){ + if (!Dungeon.level.solid[target] || Actor.findChar(target) != null){ GLog.w(Messages.get(this, "bad_location")); return; }