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
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 effectiveDamage = Math.max( dmg - dr, 0 );
@ -210,7 +210,7 @@ public abstract class Char extends Actor {
return Messages.get(this, "def_verb");
}
public int dr() {
public int drRoll() {
return 0;
}

View File

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

View File

@ -298,11 +298,17 @@ public class Hero extends Char {
}
@Override
public int dr() {
public int drRoll() {
int dr = 0;
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 (bark != null) dr += bark.level();
@ -368,13 +374,9 @@ public class Hero extends Char {
}
}
public boolean encumbered(){
return (belongings.weapon != null
&& belongings.weapon instanceof Weapon
&& STR() < ((Weapon)belongings.weapon).STRReq())
||
(belongings.armor != null
&& STR() < belongings.armor.STRReq());
public boolean canSurpriseAttack(){
return !(belongings.weapon != null && belongings.weapon instanceof Weapon
&& STR() < ((Weapon)belongings.weapon).STRReq());
}
public boolean canAttack(Char enemy){
@ -942,7 +944,7 @@ public class Hero extends Char {
//TODO improve this when I have proper damage source logic
if (belongings.armor != null && belongings.armor.hasGlyph(AntiMagic.class)
&& 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 );

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -339,7 +339,7 @@ public abstract class Mob extends Char {
@Override
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) {
int defenseSkill = this.defenseSkill;
int penalty = RingOfAccuracy.getBonus(enemy, RingOfAccuracy.Accuracy.class);
@ -353,7 +353,7 @@ public abstract class Mob extends Char {
@Override
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) {
damage *= 1.25f;
Wound.hit(this);

View File

@ -56,7 +56,7 @@ public class Monk extends Mob {
@Override
public int damageRoll() {
return Random.NormalIntRange( 12, 16 );
return Random.NormalIntRange( 16, 20 );
}
@Override
@ -70,8 +70,8 @@ public class Monk extends Mob {
}
@Override
public int dr() {
return 2;
public int drRoll() {
return Random.NormalIntRange(0, 2);
}
@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.items.quest.Embers;
import com.shatteredpixel.shatteredpixeldungeon.sprites.NewbornElementalSprite;
import com.watabou.utils.Random;
public class NewbornElemental extends Elemental {
@ -44,8 +45,8 @@ public class NewbornElemental extends Elemental {
@Override
public int damageRoll() {
return super.damageRoll()/2;
} //8-10
return Random.NormalIntRange(10, 15);
}
@Override
public void add(Buff buff) {

View File

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

View File

@ -46,7 +46,7 @@ public class Rat extends Mob {
}
@Override
public int dr() {
return 1;
public int drRoll() {
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.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.RotHeartSprite;
import com.watabou.utils.Random;
import java.util.HashSet;
@ -103,8 +104,8 @@ public class RotHeart extends Mob {
}
@Override
public int dr() {
return 5;
public int drRoll() {
return Random.NormalIntRange(0, 5);
}
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

@ -29,7 +29,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Roots;
import com.shatteredpixel.shatteredpixeldungeon.effects.Wound;
import com.shatteredpixel.shatteredpixeldungeon.sprites.TrapSprite;
import com.watabou.utils.Random;
public class GrippingTrap extends Trap {
@ -44,7 +43,7 @@ public class GrippingTrap extends Trap {
Char c = Actor.findChar( pos );
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.prolong( c, Cripple.class, 15f);
Buff.prolong( c, Roots.class, 5f);

View File

@ -66,7 +66,7 @@ public class RockfallTrap extends Trap {
if (ch != null){
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);
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);
if (ch != null && !ch.flying){
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);
if (!ch.isAlive() && ch == Dungeon.hero){
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.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.curr_absorb=This armor blocks up to _%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.too_heavy=Because of your inadequate strength wearing this armor will decrease your ability to move and evade.
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 _%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, evade, and defend.
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.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.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.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.