diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java index 253368217..2d4f37684 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java @@ -68,7 +68,25 @@ abstract public class Weapon extends KindOfWeapon { public int RCH = 1; // Reach modifier (only applies to melee hits) public enum Imbue { - NONE, LIGHT, HEAVY + NONE (1.0f, 1.00f), + LIGHT (0.7f, 0.67f), + HEAVY (1.5f, 1.67f); + + private float damageFactor; + private float delayFactor; + + Imbue(float dmg, float dly){ + damageFactor = dmg; + delayFactor = dly; + } + + public int damageFactor(int dmg){ + return Math.round(dmg * damageFactor); + } + + public float delayFactor(float dly){ + return dly * delayFactor; + } } public Imbue imbue = Imbue.NONE; @@ -145,7 +163,7 @@ abstract public class Weapon extends KindOfWeapon { encumrance -= 2; } - float DLY = this.DLY * (imbue == Imbue.LIGHT ? 0.667f : (imbue == Imbue.HEAVY ? 1.667f : 1.0f)); + float DLY = imbue.delayFactor(this.DLY); int bonus = 0; for (Buff buff : hero.buffs(RingOfFuror.Furor.class)) { @@ -175,7 +193,7 @@ abstract public class Weapon extends KindOfWeapon { } } - return Math.round(damage * (imbue == Imbue.LIGHT ? 0.7f : (imbue == Imbue.HEAVY ? 1.5f : 1f))); + return imbue.damageFactor(damage); } public int STRReq(){ diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Lucky.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Lucky.java index b8975127a..0e0de3ed1 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Lucky.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Lucky.java @@ -38,9 +38,9 @@ public class Lucky extends Weapon.Enchantment { if (Random.Int(100) < (50 + level)){ int exStr = 0; if (attacker == Dungeon.hero) exStr = Math.max(0, Dungeon.hero.STR() - weapon.STRReq()); - damage = weapon.max() + exStr - Random.IntRange(0, defender.dr()); + damage = weapon.imbue.damageFactor(weapon.max()) + exStr - Random.IntRange(0, defender.dr()); } else { - damage = weapon.min() - Random.IntRange(0, defender.dr()); + damage = weapon.imbue.damageFactor(weapon.min()) - Random.IntRange(0, defender.dr()); } return Math.max(0, damage); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java index 0d0b89647..a5b6f93c0 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java @@ -63,8 +63,7 @@ public class MeleeWeapon extends Weapon { String info = desc(); if (levelKnown) { - float dmgfactor = (imbue == Imbue.LIGHT ? 0.7f : imbue == Imbue.HEAVY ? 1.5f : 1); - info += "\n\n" + Messages.get(MeleeWeapon.class, "stats_known", tier, Math.round(min()*dmgfactor), Math.round(max()*dmgfactor), STRReq()); + info += "\n\n" + Messages.get(MeleeWeapon.class, "stats_known", tier, imbue.damageFactor(min()), imbue.damageFactor(max()), STRReq()); if (STRReq() > Dungeon.hero.STR()) { info += " " + Messages.get(Weapon.class, "too_heavy"); } else if (Dungeon.hero.STR() > STRReq()){ diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java index 7374d57b9..3b0bca4cd 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java @@ -145,7 +145,7 @@ abstract public class MissileWeapon extends Weapon { String info = desc(); - info += "\n\n" + Messages.get( MissileWeapon.class, "stats", min(), max(), STRReq()); + info += "\n\n" + Messages.get( MissileWeapon.class, "stats", imbue.damageFactor(min()), imbue.damageFactor(max()), STRReq()); if (STRReq() > Dungeon.hero.STR()) { info += " " + Messages.get(Weapon.class, "too_heavy");