From 14d7cedb07afee2dc7d7393eb9d98ae0a58c6109 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 7 Mar 2019 00:48:29 -0500 Subject: [PATCH] v0.7.2: bugfixes: - fixed burning continuing and destroying scrolls when hero is immune - fixed unstable proccing precise + other buffs at once - fixed precise proccing far more often than intended - fixed grim proccing when the enemy is already dead - fixed chasms killing enemies that are already dead --- .../shatteredpixeldungeon/actors/buffs/Burning.java | 2 +- .../shatteredpixeldungeon/actors/hero/Hero.java | 6 +++--- .../shatteredpixeldungeon/items/wands/WandOfBlastWave.java | 4 ++-- .../items/weapon/enchantments/Grim.java | 2 +- .../items/weapon/enchantments/Precise.java | 2 +- .../shatteredpixeldungeon/levels/features/Chasm.java | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Burning.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Burning.java index b6ec19399..552a8801b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Burning.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Burning.java @@ -80,7 +80,7 @@ public class Burning extends Buff implements Hero.Doom { @Override public boolean act() { - if (target.isAlive()) { + if (target.isAlive() && !target.isImmune(getClass())) { int damage = Random.NormalIntRange( 1, 3 + Dungeon.depth/4 ); Buff.detach( target, Chill.class); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index a1ff5192a..d9d90fbf2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -321,11 +321,11 @@ public class Hero extends Char { || (((Weapon) wep).hasEnchant(Unstable.class, this) && Random.Int(11) == 0))){ if (Precise.rollToGuaranteeHit((Weapon) wep)){ target.sprite.emitter().start( Speck.factory(Speck.LIGHT), 0.05f, 5 ); + if (((Weapon) wep).hasEnchant(Unstable.class, this)){ + Unstable.justRolledPrecise = true; + } return Integer.MAX_VALUE; } - if (((Weapon) wep).hasEnchant(Unstable.class, this)){ - Unstable.justRolledPrecise = true; - } } float accuracy = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfBlastWave.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfBlastWave.java index 41ee068f1..8af82719b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfBlastWave.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfBlastWave.java @@ -129,12 +129,12 @@ public class WandOfBlastWave extends DamageWand { Actor.addDelayed(new Pushing(ch, ch.pos, newPos, new Callback() { public void call() { if (initialpos != ch.pos) { - //something cased movement before pushing resolved, cancel to be safe. + //something caused movement before pushing resolved, cancel to be safe. ch.sprite.place(ch.pos); return; } ch.pos = newPos; - if (ch.pos == trajectory.collisionPos) { + if (ch.pos == trajectory.collisionPos && ch.isAlive()) { ch.damage(Random.NormalIntRange((finalDist + 1) / 2, finalDist), this); Paralysis.prolong(ch, Paralysis.class, Random.NormalIntRange((finalDist + 1) / 2, finalDist)); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Grim.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Grim.java index c8a74da3c..912d56d7c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Grim.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Grim.java @@ -40,7 +40,7 @@ public class Grim extends Weapon.Enchantment { int level = Math.max( 0, weapon.level() ); int enemyHealth = defender.HP - damage; - if (enemyHealth == 0) return damage; //no point in proccing if they're already dead. + if (enemyHealth <= 0) return damage; //no point in proccing if they're already dead. //scales from 0 - 40% based on how low hp the enemy is, plus 2% per level float maxChance = 0.4f + .02f*level; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Precise.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Precise.java index 1186672b9..fe2c8d7e6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Precise.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Precise.java @@ -42,7 +42,7 @@ public class Precise extends Weapon.Enchantment { // lvl 2 - 30% int level = Math.max( 0, weapon.level() ); - if (Random.Int( level + 80 ) >= 7) { + if (Random.Int( level + 8 ) >= 7) { return true; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/Chasm.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/Chasm.java index 282d63076..ac7c8f0c5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/Chasm.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/features/Chasm.java @@ -125,7 +125,7 @@ public class Chasm { } public static void mobFall( Mob mob ) { - mob.die( Chasm.class ); + if (mob.isAlive()) mob.die( Chasm.class ); ((MobSprite)mob.sprite).fall(); }