v0.4.1: big armor redesign

This commit is contained in:
Evan Debenham
2016-07-01 06:03:34 -04:00
parent f93b2ac723
commit 2d088c8983
45 changed files with 153 additions and 129 deletions
@@ -143,7 +143,7 @@ public class Bomb extends Item {
int minDamage = c == cell ? Dungeon.depth+5 : 1;
int maxDamage = 10 + Dungeon.depth * 2;
int dmg = Random.NormalIntRange( minDamage, maxDamage ) - Random.Int( ch.dr() );
int dmg = Random.NormalIntRange( minDamage, maxDamage ) - ch.drRoll();
if (dmg > 0) {
ch.damage( dmg, this );
}
@@ -211,13 +211,29 @@ public class Armor extends EquipableItem {
public boolean isEquipped( Hero hero ) {
return hero.belongings.armor == this;
}
public int DR(){
public final int DRMax(){
return DRMax(level());
}
public int DRMax(int lvl){
int effectiveTier = tier;
if (glyph != null) effectiveTier += glyph.tierDRAdjust();
effectiveTier = Math.max(0, effectiveTier);
return effectiveTier * (2 + level());
return effectiveTier * (2 + lvl);
}
public final int DRMin(){
return DRMin(level());
}
public int DRMin(int lvl){
int effectiveTier = tier;
if (glyph != null) effectiveTier += glyph.tierDRAdjust();
effectiveTier = Math.max(0, effectiveTier);
return (effectiveTier-1)/2 + lvl;
}
@Override
@@ -267,7 +283,7 @@ public class Armor extends EquipableItem {
String info = desc();
if (levelKnown) {
info += "\n\n" + Messages.get(Armor.class, "curr_absorb", DR(), STRReq());
info += "\n\n" + Messages.get(Armor.class, "curr_absorb", DRMin(), DRMax(), STRReq());
if (STRReq() > Dungeon.hero.STR()) {
info += " " + Messages.get(Armor.class, "too_heavy");
@@ -275,7 +291,7 @@ public class Armor extends EquipableItem {
info += " " + Messages.get(Armor.class, "excess_str");
}
} else {
info += "\n\n" + Messages.get(Armor.class, "avg_absorb", typicalDR(), STRReq(0));
info += "\n\n" + Messages.get(Armor.class, "avg_absorb", DRMin(0), DRMax(0), STRReq(0));
if (STRReq(0) > Dungeon.hero.STR()) {
info += " " + Messages.get(Armor.class, "probably_too_heavy");
@@ -347,10 +363,6 @@ public class Armor extends EquipableItem {
return (8 + effectiveTier * 2) - (int)(Math.sqrt(8 * lvl + 1) - 1)/2;
}
public int typicalDR() {
return tier * 2;
}
@Override
public int price() {
int price = 10 * (1 << (tier - 1));
@@ -149,12 +149,21 @@ abstract public class ClassArmor extends Armor {
}
@Override
public int DR(){
public int DRMax(int lvl){
int effectiveTier = armorTier;
if (glyph != null) effectiveTier += glyph.tierDRAdjust();
effectiveTier = Math.max(0, effectiveTier);
return effectiveTier * (2 + level());
return effectiveTier * (2 + lvl);
}
@Override
public int DRMin(int lvl){
int effectiveTier = armorTier;
if (glyph != null) effectiveTier += glyph.tierDRAdjust();
effectiveTier = Math.max(0, effectiveTier);
return (effectiveTier-1)/2 + lvl;
}
@Override
@@ -33,7 +33,6 @@ import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions;
import com.watabou.noosa.audio.Sample;
import com.watabou.utils.Bundle;
import com.watabou.utils.Random;
import java.util.ArrayList;
@@ -92,7 +91,7 @@ public class ChaliceOfBlood extends Artifact {
damage = armor.absorb(damage);
}
damage -= Random.IntRange(0, hero.dr());
damage -= hero.drRoll();
hero.sprite.operate( hero.pos );
hero.busy();
@@ -377,9 +377,9 @@ public class DriedRose extends Artifact {
}
@Override
public int dr() {
public int drRoll() {
//defence is equal to the level of rose.
return (HT-10)/3;
return Random.NormalIntRange(0, (HT-10)/3);
}
@Override
@@ -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.imbue.damageFactor(weapon.max()) + exStr - Random.IntRange(0, defender.dr());
damage = weapon.imbue.damageFactor(weapon.max()) + exStr - defender.drRoll();
} else {
damage = weapon.imbue.damageFactor(weapon.min()) - Random.IntRange(0, defender.dr());
damage = weapon.imbue.damageFactor(weapon.min()) - defender.drRoll();
}
return Math.max(0, damage);