From de18dc085c65d1b409980e8a9fa306ea890b5ef0 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 27 Apr 2018 01:20:32 -0400 Subject: [PATCH] v0.6.5: bugfixes: - fixed stone converting 100% of evasion to armor - fixed shields applying full defence when hero has inadequate str --- .../shatteredpixeldungeon/actors/hero/Hero.java | 14 ++++++++++---- .../items/armor/glyphs/Stone.java | 5 +++-- 2 files changed, 13 insertions(+), 6 deletions(-) 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 92cfa3584..09779e654 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 @@ -336,13 +336,19 @@ public class Hero extends Char { Barkskin bark = buff(Barkskin.class); if (belongings.armor != null) { - dr += Random.NormalIntRange( belongings.armor.DRMin(), belongings.armor.DRMax()); + int armDr = Random.NormalIntRange( belongings.armor.DRMin(), belongings.armor.DRMax()); if (STR() < belongings.armor.STRReq()){ - dr -= 2*(belongings.armor.STRReq() - STR()); - dr = Math.max(dr, 0); + armDr -= 2*(belongings.armor.STRReq() - STR()); } + if (armDr > 0) dr += armDr; + } + if (belongings.weapon != null) { + int wepDr = Random.NormalIntRange( 0 , belongings.weapon.defenseFactor( this ) ); + if (STR() < ((Weapon)belongings.weapon).STRReq()){ + wepDr -= 2*(((Weapon)belongings.weapon).STRReq() - STR()); + } + if (wepDr > 0) dr += wepDr; } - if (belongings.weapon != null) dr += Random.NormalIntRange( 0 , belongings.weapon.defenseFactor( this ) ); if (bark != null) dr += Random.NormalIntRange( 0 , bark.level() ); return dr; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/Stone.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/Stone.java index 034db2b61..a9937a04e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/Stone.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/Stone.java @@ -31,7 +31,6 @@ public class Stone extends Armor.Glyph { @Override public int proc(Armor armor, Char attacker, Char defender, int damage) { - //no proc effect, see armor.DrMin and the end of hero.getCloser testing = true; float evasion = defender.defenseSkill(attacker); @@ -45,7 +44,9 @@ public class Stone extends Armor.Glyph { hitChance = 1f - (evasion/accuracy)/2f; } - //FIXME this is probably very OP, needs balancing + //60% of dodge chance is applied as damage reduction + hitChance = (2f + 3f*hitChance)/5f; + damage = (int)Math.ceil(damage * hitChance); return damage;