v0.4.1: big armor redesign
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user