v0.4.0: cleaned up weapon imbuing code

This commit is contained in:
Evan Debenham 2016-06-10 17:19:18 -04:00 committed by Evan Debenham
parent 586e038dc4
commit fee1868999
4 changed files with 25 additions and 8 deletions
src/com/shatteredpixel/shatteredpixeldungeon/items/weapon

View File

@ -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(){

View File

@ -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);

View File

@ -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()){

View File

@ -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");