v0.6.5: bugfixes:

- fixed stone converting 100% of evasion to armor
- fixed shields applying full defence when hero has inadequate str
This commit is contained in:
Evan Debenham
2018-04-27 01:20:32 -04:00
committed by Evan Debenham
parent f8052e9f9e
commit de18dc085c
2 changed files with 13 additions and 6 deletions
@@ -336,13 +336,19 @@ public class Hero extends Char {
Barkskin bark = buff(Barkskin.class); Barkskin bark = buff(Barkskin.class);
if (belongings.armor != null) { 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()){ if (STR() < belongings.armor.STRReq()){
dr -= 2*(belongings.armor.STRReq() - STR()); armDr -= 2*(belongings.armor.STRReq() - STR());
dr = Math.max(dr, 0);
} }
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() ); if (bark != null) dr += Random.NormalIntRange( 0 , bark.level() );
return dr; return dr;
@@ -31,7 +31,6 @@ public class Stone extends Armor.Glyph {
@Override @Override
public int proc(Armor armor, Char attacker, Char defender, int damage) { 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; testing = true;
float evasion = defender.defenseSkill(attacker); float evasion = defender.defenseSkill(attacker);
@@ -45,7 +44,9 @@ public class Stone extends Armor.Glyph {
hitChance = 1f - (evasion/accuracy)/2f; 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); damage = (int)Math.ceil(damage * hitChance);
return damage; return damage;