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

View File

@ -127,7 +127,7 @@ public abstract class Char extends Actor {
// FIXME // FIXME
int dr = this instanceof Hero && ((Hero)this).rangedWeapon != null && ((Hero)this).subClass == int dr = this instanceof Hero && ((Hero)this).rangedWeapon != null && ((Hero)this).subClass ==
HeroSubClass.SNIPER ? 0 : Random.IntRange( 0, enemy.dr() ); HeroSubClass.SNIPER ? 0 : enemy.drRoll();
int dmg = damageRoll(); int dmg = damageRoll();
int effectiveDamage = Math.max( dmg - dr, 0 ); int effectiveDamage = Math.max( dmg - dr, 0 );
@ -210,7 +210,7 @@ public abstract class Char extends Actor {
return Messages.get(this, "def_verb"); return Messages.get(this, "def_verb");
} }
public int dr() { public int drRoll() {
return 0; return 0;
} }

View File

@ -221,7 +221,7 @@ public class Combo extends Buff implements ActionIndicator.Action {
break; break;
} }
dmg -= Random.IntRange( 0, enemy.dr() ); dmg -= enemy.drRoll();
dmg = target.attackProc(enemy, dmg); dmg = target.attackProc(enemy, dmg);
dmg = enemy.defenseProc(target, dmg); dmg = enemy.defenseProc(target, dmg);
enemy.damage( dmg, this ); enemy.damage( dmg, this );

View File

@ -298,11 +298,17 @@ public class Hero extends Char {
} }
@Override @Override
public int dr() { public int drRoll() {
int dr = 0; int dr = 0;
Barkskin bark = buff(Barkskin.class); Barkskin bark = buff(Barkskin.class);
if (belongings.armor != null) dr += Math.max( belongings.armor.DR(), 0); if (belongings.armor != null) {
dr += Random.NormalIntRange( belongings.armor.DRMin(), belongings.armor.DRMax());
if (STR() < belongings.armor.STRReq()){
dr -= 2*(belongings.armor.STRReq() - STR());
dr = Math.max(dr, 0);
}
}
if (belongings.weapon != null) dr += Math.max( belongings.weapon.defenceFactor( this ), 0 ); if (belongings.weapon != null) dr += Math.max( belongings.weapon.defenceFactor( this ), 0 );
if (bark != null) dr += bark.level(); if (bark != null) dr += bark.level();
@ -368,13 +374,9 @@ public class Hero extends Char {
} }
} }
public boolean encumbered(){ public boolean canSurpriseAttack(){
return (belongings.weapon != null return !(belongings.weapon != null && belongings.weapon instanceof Weapon
&& belongings.weapon instanceof Weapon && STR() < ((Weapon)belongings.weapon).STRReq());
&& STR() < ((Weapon)belongings.weapon).STRReq())
||
(belongings.armor != null
&& STR() < belongings.armor.STRReq());
} }
public boolean canAttack(Char enemy){ public boolean canAttack(Char enemy){
@ -942,7 +944,7 @@ public class Hero extends Char {
//TODO improve this when I have proper damage source logic //TODO improve this when I have proper damage source logic
if (belongings.armor != null && belongings.armor.hasGlyph(AntiMagic.class) if (belongings.armor != null && belongings.armor.hasGlyph(AntiMagic.class)
&& RingOfElements.FULL.contains(src.getClass())){ && RingOfElements.FULL.contains(src.getClass())){
dmg -= Random.IntRange(0, belongings.armor.DR()/2); dmg -= Random.NormalIntRange(belongings.armor.DRMin(), belongings.armor.DRMax())/2;
} }
super.damage( dmg, src ); super.damage( dmg, src );

View File

@ -51,7 +51,7 @@ public class Bat extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 6, 12 ); return Random.NormalIntRange( 8, 15 );
} }
@Override @Override
@ -60,8 +60,8 @@ public class Bat extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 4; return Random.NormalIntRange(0, 4);
} }
@Override @Override

View File

@ -59,8 +59,8 @@ public class Brute extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return enraged ? return enraged ?
Random.NormalIntRange( 10, 40 ) : Random.NormalIntRange( 20, 40 ) :
Random.NormalIntRange( 8, 18 ); Random.NormalIntRange( 10, 20 );
} }
@Override @Override
@ -69,8 +69,8 @@ public class Brute extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 8; return Random.NormalIntRange(0, 8);
} }
@Override @Override

View File

@ -52,7 +52,7 @@ public class Crab extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 4; return Random.NormalIntRange(0, 4);
} }
} }

View File

@ -70,7 +70,7 @@ public class DM300 extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 18, 24 ); return Random.NormalIntRange( 20, 25 );
} }
@Override @Override
@ -79,8 +79,8 @@ public class DM300 extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 10; return Random.NormalIntRange(0, 10);
} }
@Override @Override

View File

@ -56,7 +56,7 @@ public class Elemental extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 16, 20 ); return Random.NormalIntRange( 18, 24 );
} }
@Override @Override
@ -65,8 +65,8 @@ public class Elemental extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 5; return Random.NormalIntRange(0, 5);
} }
@Override @Override

View File

@ -61,8 +61,8 @@ public class Eye extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 10; return Random.NormalIntRange(0, 10);
} }
private Ballistica beam; private Ballistica beam;

View File

@ -54,8 +54,8 @@ public class FetidRat extends Rat {
} }
@Override @Override
public int dr() { public int drRoll() {
return 2; return Random.NormalIntRange(0, 2);
} }
@Override @Override

View File

@ -51,7 +51,7 @@ public class Gnoll extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 2; return Random.NormalIntRange(0, 2);
} }
} }

View File

@ -44,7 +44,7 @@ public class Golem extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 20, 40 ); return Random.NormalIntRange( 25, 40 );
} }
@Override @Override
@ -58,8 +58,8 @@ public class Golem extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 12; return Random.NormalIntRange(0, 12);
} }
@Override @Override

View File

@ -100,8 +100,8 @@ public class Goo extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 2; return Random.NormalIntRange(0, 2);
} }
@Override @Override

View File

@ -59,7 +59,7 @@ public class Guard extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange(4, 10); return Random.NormalIntRange(5, 10);
} }
@Override @Override
@ -130,8 +130,8 @@ public class Guard extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 9; return Random.NormalIntRange(0, 8);
} }
@Override @Override

View File

@ -89,7 +89,7 @@ public class King extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 20, 38 ); return Random.NormalIntRange( 25, 40 );
} }
@Override @Override
@ -98,8 +98,8 @@ public class King extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 14; return Random.NormalIntRange(0, 14);
} }
@Override @Override
@ -283,7 +283,7 @@ public class King extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 12, 16 ); return Random.NormalIntRange( 16, 20 );
} }
@Override @Override
@ -318,8 +318,8 @@ public class King extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 5; return Random.NormalIntRange(0, 5);
} }
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>(); private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();

View File

@ -339,7 +339,7 @@ public abstract class Mob extends Char {
@Override @Override
public int defenseSkill( Char enemy ) { public int defenseSkill( Char enemy ) {
boolean seen = enemySeen || (enemy == Dungeon.hero && Dungeon.hero.encumbered()); boolean seen = enemySeen || (enemy == Dungeon.hero && !Dungeon.hero.canSurpriseAttack());
if (seen && paralysed == 0) { if (seen && paralysed == 0) {
int defenseSkill = this.defenseSkill; int defenseSkill = this.defenseSkill;
int penalty = RingOfAccuracy.getBonus(enemy, RingOfAccuracy.Accuracy.class); int penalty = RingOfAccuracy.getBonus(enemy, RingOfAccuracy.Accuracy.class);
@ -353,7 +353,7 @@ public abstract class Mob extends Char {
@Override @Override
public int defenseProc( Char enemy, int damage ) { public int defenseProc( Char enemy, int damage ) {
if (!enemySeen && enemy == Dungeon.hero && !Dungeon.hero.encumbered()) { if (!enemySeen && enemy == Dungeon.hero && Dungeon.hero.canSurpriseAttack()) {
if (((Hero)enemy).subClass == HeroSubClass.ASSASSIN) { if (((Hero)enemy).subClass == HeroSubClass.ASSASSIN) {
damage *= 1.25f; damage *= 1.25f;
Wound.hit(this); Wound.hit(this);

View File

@ -56,7 +56,7 @@ public class Monk extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 12, 16 ); return Random.NormalIntRange( 16, 20 );
} }
@Override @Override
@ -70,8 +70,8 @@ public class Monk extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 2; return Random.NormalIntRange(0, 2);
} }
@Override @Override

View File

@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Chill;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.Embers; import com.shatteredpixel.shatteredpixeldungeon.items.quest.Embers;
import com.shatteredpixel.shatteredpixeldungeon.sprites.NewbornElementalSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.NewbornElementalSprite;
import com.watabou.utils.Random;
public class NewbornElemental extends Elemental { public class NewbornElemental extends Elemental {
@ -44,8 +45,8 @@ public class NewbornElemental extends Elemental {
@Override @Override
public int damageRoll() { public int damageRoll() {
return super.damageRoll()/2; return Random.NormalIntRange(10, 15);
} //8-10 }
@Override @Override
public void add(Buff buff) { public void add(Buff buff) {

View File

@ -91,8 +91,8 @@ public class Piranha extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return Dungeon.depth; return Random.NormalIntRange(0, Dungeon.depth);
} }
@Override @Override

View File

@ -46,7 +46,7 @@ public class Rat extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 1; return Random.NormalIntRange(0, 1);
} }
} }

View File

@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
import com.shatteredpixel.shatteredpixeldungeon.plants.Rotberry; import com.shatteredpixel.shatteredpixeldungeon.plants.Rotberry;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.RotHeartSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.RotHeartSprite;
import com.watabou.utils.Random;
import java.util.HashSet; import java.util.HashSet;
@ -103,8 +104,8 @@ public class RotHeart extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 5; return Random.NormalIntRange(0, 5);
} }
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>(); private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();

View File

@ -86,7 +86,7 @@ public class RotLasher extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange(4, 12); return Random.NormalIntRange(6, 12);
} }
@Override @Override
@ -95,8 +95,8 @@ public class RotLasher extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 8; return Random.NormalIntRange(0, 8);
} }
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>(); private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();

View File

@ -57,7 +57,7 @@ public class Scorpio extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 20, 32 ); return Random.NormalIntRange( 26, 36 );
} }
@Override @Override
@ -66,8 +66,8 @@ public class Scorpio extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 16; return Random.NormalIntRange(0, 16);
} }
@Override @Override

View File

@ -35,7 +35,7 @@ public class Senior extends Monk {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 12, 20 ); return Random.NormalIntRange( 16, 24 );
} }
@Override @Override

View File

@ -56,7 +56,7 @@ public class Shaman extends Mob implements Callback {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 2, 6 ); return Random.NormalIntRange( 4, 6 );
} }
@Override @Override
@ -65,8 +65,8 @@ public class Shaman extends Mob implements Callback {
} }
@Override @Override
public int dr() { public int drRoll() {
return 4; return Random.NormalIntRange(0, 4);
} }
@Override @Override

View File

@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Badges;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ShieldedSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ShieldedSprite;
import com.watabou.utils.Random;
public class Shielded extends Brute { public class Shielded extends Brute {
@ -32,8 +33,8 @@ public class Shielded extends Brute {
} }
@Override @Override
public int dr() { public int drRoll() {
return 10; return Random.NormalIntRange(0, 10);
} }
@Override @Override

View File

@ -68,7 +68,7 @@ public class Skeleton extends Mob {
for (int i=0; i < Level.NEIGHBOURS8.length; i++) { for (int i=0; i < Level.NEIGHBOURS8.length; i++) {
Char ch = findChar( pos + Level.NEIGHBOURS8[i] ); Char ch = findChar( pos + Level.NEIGHBOURS8[i] );
if (ch != null && ch.isAlive()) { if (ch != null && ch.isAlive()) {
int damage = Math.max( 0, damageRoll() - Random.IntRange( 0, ch.dr() / 2 ) ); int damage = Math.max( 0, damageRoll() - (ch.drRoll() / 2) );
ch.damage( damage, this ); ch.damage( damage, this );
if (ch == Dungeon.hero && !ch.isAlive()) { if (ch == Dungeon.hero && !ch.isAlive()) {
heroKilled = true; heroKilled = true;
@ -104,8 +104,8 @@ public class Skeleton extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 5; return Random.NormalIntRange(0, 5);
} }
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>(); private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();

View File

@ -53,7 +53,7 @@ public class Spinner extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange(12, 16); return Random.NormalIntRange(14, 18);
} }
@Override @Override
@ -62,8 +62,8 @@ public class Spinner extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 6; return Random.NormalIntRange(0, 6);
} }
@Override @Override

View File

@ -107,8 +107,8 @@ public class Statue extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return Dungeon.depth + weapon.defenceFactor(null); return Random.NormalIntRange(0, Dungeon.depth + weapon.defenceFactor(null));
} }
@Override @Override

View File

@ -64,7 +64,7 @@ public class Succubus extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 15, 25 ); return Random.NormalIntRange( 22, 30 );
} }
@Override @Override
@ -131,8 +131,8 @@ public class Succubus extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 10; return Random.NormalIntRange(0, 10);
} }
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>(); private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();

View File

@ -76,7 +76,7 @@ public class Tengu extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 8, 15 ); return Random.NormalIntRange( 10, 16 );
} }
@Override @Override
@ -85,8 +85,8 @@ public class Tengu extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 5; return Random.NormalIntRange(0, 5);
} }
@Override @Override

View File

@ -82,7 +82,7 @@ public class Thief extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 1, 7 ); return Random.NormalIntRange( 1, 8 );
} }
@Override @Override
@ -117,8 +117,8 @@ public class Thief extends Mob {
} }
@Override @Override
public int dr() { public int drRoll() {
return 3; return Random.NormalIntRange(0, 3);
} }
@Override @Override

View File

@ -60,7 +60,7 @@ public class Warlock extends Mob implements Callback {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 12, 20 ); return Random.NormalIntRange( 14, 24 );
} }
@Override @Override
@ -69,8 +69,8 @@ public class Warlock extends Mob implements Callback {
} }
@Override @Override
public int dr() { public int drRoll() {
return 8; return Random.NormalIntRange(0, 8);
} }
@Override @Override

View File

@ -69,7 +69,7 @@ public class Wraith extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 1, 3 + level ); return Random.NormalIntRange( 1 + level/2, 2 + level );
} }
@Override @Override

View File

@ -230,12 +230,12 @@ public class Yog extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 24, 36 ); return Random.NormalIntRange( 30, 40 );
} }
@Override @Override
public int dr() { public int drRoll() {
return 15; return Random.NormalIntRange(0, 15);
} }
@Override @Override
@ -316,12 +316,12 @@ public class Yog extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 20, 32 ); return Random.NormalIntRange( 26, 32 );
} }
@Override @Override
public int dr() { public int drRoll() {
return 15; return Random.NormalIntRange(0, 15);
} }
@Override @Override
@ -426,12 +426,12 @@ public class Yog extends Mob {
@Override @Override
public int damageRoll() { public int damageRoll() {
return Random.NormalIntRange( 15, 20 ); return Random.NormalIntRange( 24, 28 );
} }
@Override @Override
public int dr() { public int drRoll() {
return 8; return Random.NormalIntRange(0, 8);
} }
} }

View File

@ -143,7 +143,7 @@ public class Bomb extends Item {
int minDamage = c == cell ? Dungeon.depth+5 : 1; int minDamage = c == cell ? Dungeon.depth+5 : 1;
int maxDamage = 10 + Dungeon.depth * 2; 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) { if (dmg > 0) {
ch.damage( dmg, this ); ch.damage( dmg, this );
} }

View File

@ -211,13 +211,29 @@ public class Armor extends EquipableItem {
public boolean isEquipped( Hero hero ) { public boolean isEquipped( Hero hero ) {
return hero.belongings.armor == this; return hero.belongings.armor == this;
} }
public int DR(){ public final int DRMax(){
return DRMax(level());
}
public int DRMax(int lvl){
int effectiveTier = tier; int effectiveTier = tier;
if (glyph != null) effectiveTier += glyph.tierDRAdjust(); if (glyph != null) effectiveTier += glyph.tierDRAdjust();
effectiveTier = Math.max(0, effectiveTier); 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 @Override
@ -267,7 +283,7 @@ public class Armor extends EquipableItem {
String info = desc(); String info = desc();
if (levelKnown) { 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()) { if (STRReq() > Dungeon.hero.STR()) {
info += " " + Messages.get(Armor.class, "too_heavy"); info += " " + Messages.get(Armor.class, "too_heavy");
@ -275,7 +291,7 @@ public class Armor extends EquipableItem {
info += " " + Messages.get(Armor.class, "excess_str"); info += " " + Messages.get(Armor.class, "excess_str");
} }
} else { } 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()) { if (STRReq(0) > Dungeon.hero.STR()) {
info += " " + Messages.get(Armor.class, "probably_too_heavy"); 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; return (8 + effectiveTier * 2) - (int)(Math.sqrt(8 * lvl + 1) - 1)/2;
} }
public int typicalDR() {
return tier * 2;
}
@Override @Override
public int price() { public int price() {
int price = 10 * (1 << (tier - 1)); int price = 10 * (1 << (tier - 1));

View File

@ -149,12 +149,21 @@ abstract public class ClassArmor extends Armor {
} }
@Override @Override
public int DR(){ public int DRMax(int lvl){
int effectiveTier = armorTier; int effectiveTier = armorTier;
if (glyph != null) effectiveTier += glyph.tierDRAdjust(); if (glyph != null) effectiveTier += glyph.tierDRAdjust();
effectiveTier = Math.max(0, effectiveTier); 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 @Override

View File

@ -33,7 +33,6 @@ import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
import com.watabou.utils.Bundle; import com.watabou.utils.Bundle;
import com.watabou.utils.Random;
import java.util.ArrayList; import java.util.ArrayList;
@ -92,7 +91,7 @@ public class ChaliceOfBlood extends Artifact {
damage = armor.absorb(damage); damage = armor.absorb(damage);
} }
damage -= Random.IntRange(0, hero.dr()); damage -= hero.drRoll();
hero.sprite.operate( hero.pos ); hero.sprite.operate( hero.pos );
hero.busy(); hero.busy();

View File

@ -377,9 +377,9 @@ public class DriedRose extends Artifact {
} }
@Override @Override
public int dr() { public int drRoll() {
//defence is equal to the level of rose. //defence is equal to the level of rose.
return (HT-10)/3; return Random.NormalIntRange(0, (HT-10)/3);
} }
@Override @Override

View File

@ -38,9 +38,9 @@ public class Lucky extends Weapon.Enchantment {
if (Random.Int(100) < (50 + level)){ if (Random.Int(100) < (50 + level)){
int exStr = 0; int exStr = 0;
if (attacker == Dungeon.hero) exStr = Math.max(0, Dungeon.hero.STR() - weapon.STRReq()); 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 { } 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); return Math.max(0, damage);

View File

@ -29,7 +29,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Roots; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Roots;
import com.shatteredpixel.shatteredpixeldungeon.effects.Wound; import com.shatteredpixel.shatteredpixeldungeon.effects.Wound;
import com.shatteredpixel.shatteredpixeldungeon.sprites.TrapSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.TrapSprite;
import com.watabou.utils.Random;
public class GrippingTrap extends Trap { public class GrippingTrap extends Trap {
@ -44,7 +43,7 @@ public class GrippingTrap extends Trap {
Char c = Actor.findChar( pos ); Char c = Actor.findChar( pos );
if (c != null) { if (c != null) {
int damage = Math.max( 0, (Dungeon.depth) - Random.IntRange( 0, c.dr() / 2 ) ); int damage = Math.max( 0, (Dungeon.depth) - ( c.drRoll() / 2 ) );
Buff.affect( c, Bleeding.class ).set( damage ); Buff.affect( c, Bleeding.class ).set( damage );
Buff.prolong( c, Cripple.class, 15f); Buff.prolong( c, Cripple.class, 15f);
Buff.prolong( c, Roots.class, 5f); Buff.prolong( c, Roots.class, 5f);

View File

@ -66,7 +66,7 @@ public class RockfallTrap extends Trap {
if (ch != null){ if (ch != null){
int damage = Random.NormalIntRange(Dungeon.depth, Dungeon.depth*2); int damage = Random.NormalIntRange(Dungeon.depth, Dungeon.depth*2);
damage -= Random.IntRange( 0, ch.dr()); damage -= ch.drRoll();
ch.damage( Math.max(damage, 0) , this); ch.damage( Math.max(damage, 0) , this);
Buff.prolong( ch, Paralysis.class, Paralysis.duration(ch)/2); Buff.prolong( ch, Paralysis.class, Paralysis.duration(ch)/2);

View File

@ -61,7 +61,7 @@ public class SpearTrap extends Trap {
Char ch = Actor.findChar( pos); Char ch = Actor.findChar( pos);
if (ch != null && !ch.flying){ if (ch != null && !ch.flying){
int damage = Random.NormalIntRange(Dungeon.depth, Dungeon.depth*2); int damage = Random.NormalIntRange(Dungeon.depth, Dungeon.depth*2);
damage -= Random.IntRange( 0, ch.dr()); damage -= ch.drRoll();
ch.damage( Math.max(damage, 0) , this); ch.damage( Math.max(damage, 0) , this);
if (!ch.isAlive() && ch == Dungeon.hero){ if (!ch.isAlive() && ch == Dungeon.hero){
Dungeon.fail( getClass() ); Dungeon.fail( getClass() );

View File

@ -72,9 +72,9 @@ items.armor.armor.detach_seal=You detach the seal from your armor.
items.armor.armor.equip_cursed=The armor constricts around you painfully. items.armor.armor.equip_cursed=The armor constricts around you painfully.
items.armor.armor.identify=You are now familiar enough with your armor to identify it. items.armor.armor.identify=You are now familiar enough with your armor to identify it.
items.armor.armor.incompatible=Interaction of different types of magic has erased the glyph on this armor! items.armor.armor.incompatible=Interaction of different types of magic has erased the glyph on this armor!
items.armor.armor.curr_absorb=This armor blocks up to _%d damage_ and requires _%d strength_ to use properly. items.armor.armor.curr_absorb=This armor blocks _%d-%d damage_ and requires _%d strength_ to use properly.
items.armor.armor.avg_absorb=Typically this armor blocks up to _%d damage_ and requires _%d strength_ to use properly. items.armor.armor.avg_absorb=Typically this armor blocks _%d-%d damage_ and requires _%d strength_ to use properly.
items.armor.armor.too_heavy=Because of your inadequate strength wearing this armor will decrease your ability to move and evade. items.armor.armor.too_heavy=Because of your inadequate strength wearing this armor will decrease your ability to move, evade, and defend.
items.armor.armor.probably_too_heavy=Probably this armor is too heavy for you. items.armor.armor.probably_too_heavy=Probably this armor is too heavy for you.
items.armor.armor.excess_str=Because of your excess strength, you are _more evasive_ while wearing this armor. items.armor.armor.excess_str=Because of your excess strength, you are _more evasive_ while wearing this armor.
items.armor.armor.inscribed=It is inscribed with a _%s._ items.armor.armor.inscribed=It is inscribed with a _%s._
@ -903,7 +903,7 @@ items.weapon.missiles.tamahawk.desc=This throwing axe is not that heavy, but it
items.weapon.weapon.identify=You are now familiar enough with your weapon to identify it. items.weapon.weapon.identify=You are now familiar enough with your weapon to identify it.
items.weapon.weapon.too_heavy=Because of your inadequate strength you will use this weapon with decreased attack speed and accuracy. items.weapon.weapon.too_heavy=Because of your inadequate strength this weapon will hinder your attack speed, accuracy, and ability to surprise attack.
items.weapon.weapon.excess_str=Because of your excess strength, you will deal up to _%d bonus damage_ with this weapon. items.weapon.weapon.excess_str=Because of your excess strength, you will deal up to _%d bonus damage_ with this weapon.
items.weapon.weapon.incompatible=Interaction of different types of magic has negated the enchantment on this weapon! items.weapon.weapon.incompatible=Interaction of different types of magic has negated the enchantment on this weapon!
items.weapon.weapon.cursed_worn=Because this weapon is cursed, you are powerless to remove it. items.weapon.weapon.cursed_worn=Because this weapon is cursed, you are powerless to remove it.