v2.5.0: added wndUpgrade info for weapon abilities and augments

This commit is contained in:
Evan Debenham
2024-06-21 17:09:56 -04:00
parent 07bed7c724
commit 5381809f55
36 changed files with 204 additions and 6 deletions

View File

@@ -877,6 +877,7 @@ items.quest.pickaxe.ac_mine=MINE
items.quest.pickaxe.no_vein=There is no dark gold vein near you to mine.
items.quest.pickaxe.ability_name=pierce
items.quest.pickaxe.ability_desc=The Duelist can _pierce_ an enemy with a pickaxe. This is guaranteed to hit, applies vulnerable for 3 turns, and deals _%1$d-%2$d damage_ to enemies with rigid skin.
items.quest.pickaxe.upgrade_ability_stat_name=Ability Damage
items.quest.pickaxe.desc=This is a sturdy and heavy tool for breaking rocks. You don't need to equip the pickaxe to mine with it, but it can probably be equipped as a weapon in a pinch.
items.quest.ratskull.name=giant rat skull
@@ -961,6 +962,7 @@ items.rings.ringofforce.typical_stats=When unarmed, at your current strength, ty
items.rings.ringofforce.combined_stats=Your equipped rings are combining their power, dealing a total of _%1$d-%2$d damage_ without a weapon, or increasing damage by _%3$d_ with one.
items.rings.ringofforce.upgrade_stat_name_1=Unarmed Damage
items.rings.ringofforce.upgrade_stat_name_2=Armed Damage Boost
items.rings.ringofforce.upgrade_stat_name_3=Ability Damage
items.rings.ringofforce.ability_name=brawler's stance
items.rings.ringofforce.typical_ability_desc=The Duelist can adopt a _brawler's stance_ with this ring, causing her regular attacks to always use this ring even with a weapon equipped. These attacks will typically deal _%1$d-%2$d damage_ and will also inherit the weapon's enchantment and augmentation. This stance slows weapon recharging speed by 50%%.
items.rings.ringofforce.ability_desc=The Duelist can adopt a _brawler's stance_ with this ring, causing her regular attacks to always use this ring even with a weapon equipped. These attacks will deal _%1$d-%2$d damage_ and will also inherit the weapon's enchantment and augmentation. This stance slows weapon recharging speed by 50%%.
@@ -1666,6 +1668,7 @@ items.weapon.melee.assassinsblade.stats_desc=This weapon is stronger against una
items.weapon.melee.assassinsblade.ability_name=sneak
items.weapon.melee.assassinsblade.typical_ability_desc=The Duelist can _sneak_ while wielding an assassin's blade. This ability lets the Duelist instantly blink up to 3 tiles away and typically grants her _%d turns of invisibility._
items.weapon.melee.assassinsblade.ability_desc=The Duelist can _sneak_ while wielding an assassin's blade. This ability lets the Duelist instantly blink up to 3 tiles away and grants her _%d turns of invisibility._
items.weapon.melee.assassinsblade.upgrade_ability_stat_name=Ability Duration
items.weapon.melee.assassinsblade.desc=A small wavy blade made of obsidian, difficult to use despite being lightweight, but deadly if it finds the right mark.
items.weapon.melee.battleaxe.name=battle axe
@@ -1681,6 +1684,7 @@ items.weapon.melee.crossbow.ability_name=charged shot
items.weapon.melee.crossbow.typical_ability_desc=The Duelist can ready a _charged shot_ with a crossbow. This ability activates instantly and causes the next fired dart to always hit, apply on-hit effects to enemies in a 7x7 tile area, and typically last for _%d more uses_ if it is tipped.
items.weapon.melee.crossbow.ability_desc=The Duelist can ready a _charged shot_ with a crossbow. This ability activates instantly and causes the next fired dart to always hit, apply on-hit effects to enemies in a 7x7 tile area, and last for _%d more uses_ if it is tipped.
items.weapon.melee.crossbow.desc=A fairly intricate weapon which shoots bolts at exceptional speeds. While it isn't designed for it, this crossbow's heft and sturdy construction make it a decent melee weapon as well.
items.weapon.melee.crossbow.upgrade_ability_stat_name=Ability Extra Uses
items.weapon.melee.crossbow$chargedshot.name=charged shot
items.weapon.melee.crossbow$chargedshot.desc=The Duelist is focusing power into her crossbow. The next dart she fires with it will always hit and apply tipped dart effects and the crossbow's enchantment in a 7x7 area. Positive dart effects will only affect allies, and harmful effects will only apply to enemies.\n\nTipped darts will also have extra uses when fired using a charged shot. The Duelist cannot use this ability to apply positive dart effects to herself.
@@ -1689,6 +1693,7 @@ items.weapon.melee.dagger.stats_desc=This weapon is stronger against unaware ene
items.weapon.melee.dagger.ability_name=sneak
items.weapon.melee.dagger.typical_ability_desc=The Duelist can _sneak_ while wielding a dagger. This ability lets the Duelist instantly blink up to 5 tiles away and typically grants her _%d turns of invisibility._
items.weapon.melee.dagger.ability_desc=The Duelist can _sneak_ while wielding a dagger. This ability lets the Duelist instantly blink up to 5 tiles away and grants her _%d turns of invisibility._
items.weapon.melee.dagger.upgrade_ability_stat_name=Ability Duration
items.weapon.melee.dagger.desc=A simple iron dagger with a worn wooden handle.
items.weapon.melee.dirk.name=dirk
@@ -1696,6 +1701,7 @@ items.weapon.melee.dirk.stats_desc=This weapon is stronger against unaware enemi
items.weapon.melee.dirk.ability_name=sneak
items.weapon.melee.dirk.typical_ability_desc=The Duelist can _sneak_ while wielding a dirk. This ability lets the Duelist instantly blink up to 4 tiles away and typically grants her _%d turns of invisibility._
items.weapon.melee.dirk.ability_desc=The Duelist can _sneak_ while wielding a dirk. This ability lets the Duelist instantly blink up to 4 tiles away and grants her _%d turns of invisibility._
items.weapon.melee.dirk.upgrade_ability_stat_name=Ability Duration
items.weapon.melee.dirk.desc=A longer thrusting dagger, gives a bit more steel to plunge into foes.
items.weapon.melee.flail.name=flail
@@ -1742,6 +1748,7 @@ items.weapon.melee.greatshield.stats_desc=This weapon blocks 0-%d damage. This b
items.weapon.melee.greatshield.ability_name=guard
items.weapon.melee.greatshield.typical_ability_desc=The Duelist can _guard_ herself with a greatshield, completely negating all physical or magical attacks made against her typically for _%d turns_. Once the Duelist has blocked an attack, attacking back or using magic will end guarding.
items.weapon.melee.greatshield.ability_desc=The Duelist can _guard_ herself with a greatshield, completely negating all physical or magical attacks made against her for _%d turns_. Once the Duelist has blocked an attack, attacking back or using magic will end guarding.
items.weapon.melee.greatshield.upgrade_ability_stat_name=Ability Duration
items.weapon.melee.greatshield.desc=More like a mobile wall than a shield, this gigantic mass of metal aids defense, but doesn't leave much room for attacking.
items.weapon.melee.greatsword.name=greatsword
@@ -1809,6 +1816,7 @@ items.weapon.melee.meleeweapon.ability_cant_use=You can't use that ability right
items.weapon.melee.meleeweapon.ability_no_target=There is no target there.
items.weapon.melee.meleeweapon.ability_target_range=That target isn't in range.
items.weapon.melee.meleeweapon.ability_occupied=That location is occupied.
items.weapon.melee.meleeweapon.upgrade_ability_stat_name=Ability Damage
items.weapon.melee.meleeweapon.prompt=Select a Target
items.weapon.melee.meleeweapon.swap=Swap Weapons
items.weapon.melee.meleeweapon.swap_full=You can't do that with a full inventory.
@@ -1824,6 +1832,7 @@ items.weapon.melee.quarterstaff.stats_desc=This weapon blocks 0-2 damage.
items.weapon.melee.quarterstaff.ability_name=defensive stance
items.weapon.melee.quarterstaff.typical_ability_desc=The Duelist can assume a _defensive stance_ with a quarterstaff. This stance takes no times to activate and triples her evasion typically for _%d turns._
items.weapon.melee.quarterstaff.ability_desc=The Duelist can assume a _defensive stance_ with a quarterstaff. This stance takes no times to activate and triples her evasion for _%d turns._
items.weapon.melee.quarterstaff.upgrade_ability_stat_name=Ability Duration
items.weapon.melee.quarterstaff.desc=A staff of hardwood, its ends are shod with iron.
items.weapon.melee.quarterstaff$defensivestance.name=defensive stance
items.weapon.melee.quarterstaff$defensivestance.desc=The Duelist is using her quarterstaff to deflect incoming blows and projectiles. As long as she is in this stance, her evasion against all attacks is tripled.\n\nTurns remaining: %s.
@@ -1841,6 +1850,7 @@ items.weapon.melee.roundshield.stats_desc=This weapon blocks 0-%d damage. This b
items.weapon.melee.roundshield.ability_name=guard
items.weapon.melee.roundshield.typical_ability_desc=The Duelist can _guard_ herself with a round shield, completely negating all physical or magical attacks made against her typically for _%d turns_. Once the Duelist has blocked an attack, attacking back or using magic will end guarding.
items.weapon.melee.roundshield.ability_desc=The Duelist can _guard_ herself with a round shield, completely negating all physical or magical attacks made against her for _%d turns_. Once the Duelist has blocked an attack, attacking back or using magic will end guarding.
items.weapon.melee.roundshield.upgrade_ability_stat_name=Ability Duration
items.weapon.melee.roundshield.desc=This large shield effectively blocks attacks and makes a decent weapon in a pinch.
items.weapon.melee.roundshield$guardtracker.name=guarding
items.weapon.melee.roundshield$guardtracker.guarded=guarded
@@ -1851,6 +1861,7 @@ items.weapon.melee.runicblade.stats_desc=This weapon benefits more from upgrades
items.weapon.melee.runicblade.ability_name=runic slash
items.weapon.melee.runicblade.typical_ability_desc=The Duelist can perform a _runic slash_ with a runic blade. This attack is guaranteed to hit and typically has _+%d%% enchantment power._
items.weapon.melee.runicblade.ability_desc=The Duelist can perform a _runic slash_ with a runic blade. This attack is guaranteed to hit and has _+%d%% enchantment power._
items.weapon.melee.runicblade.upgrade_ability_stat_name=Ability Power
items.weapon.melee.runicblade.desc=A mysterious weapon from a distant land, with a bright blue blade.
items.weapon.melee.sai.name=sai
@@ -1867,6 +1878,7 @@ items.weapon.melee.scimitar.stats_desc=This is a rather fast weapon.
items.weapon.melee.scimitar.ability_name=sword dance
items.weapon.melee.scimitar.typical_ability_desc=The Duelist can perform a _sword dance_ with a scimitar. This stance takes no time to activate and grants the Duelist +60%% attack speed and +50%% accuracy typically for _%d turns._
items.weapon.melee.scimitar.ability_desc=The Duelist can perform a _sword dance_ with a scimitar. This stance takes no time to activate and grants the Duelist +60%% attack speed and +50%% accuracy for _%d turns._
items.weapon.melee.scimitar.upgrade_ability_stat_name=Ability Duration
items.weapon.melee.scimitar.desc=A thick curved blade. Its shape allows for faster, yet less powerful attacks.
items.weapon.melee.scimitar$sworddance.name=sword dance
items.weapon.melee.scimitar$sworddance.desc=The Duelist is making quick momentum based strikes in a sort of dance. While this stance is active, she attacks 60%% faster (enough to attack exactly twice a turn with a scimitar) and has +50%% accuracy.\n\nTurns remaining: %s.

View File

@@ -249,6 +249,11 @@ public class Pickaxe extends MeleeWeapon {
return Messages.get(this, "ability_desc", augment.damageFactor(min()+dmgBoost), augment.damageFactor(max()+dmgBoost));
}
public String upgradeAbilityStat(int level){
int dmgBoost = 8 + 2*level;
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
private static final String BLOODSTAINED = "bloodStained";
@Override

View File

@@ -195,6 +195,10 @@ public class Ring extends KindofMisc {
public String upgradeStat2(int level){
return null;
}
public String upgradeStat3(int level){
return null;
}
@Override
public Item upgrade() {

View File

@@ -142,6 +142,17 @@ public class RingOfForce extends Ring {
return Integer.toString(level+1);
}
@Override
public String upgradeStat3(int level) {
if (Dungeon.hero != null && Dungeon.hero.heroClass == HeroClass.DUELIST){
float tier = tier(Dungeon.hero != null ? Dungeon.hero.STR() : 10);
int bonus = Math.round(1+tier+((level+1)*((3+tier)/8f)));
return (min(level+1, tier) + bonus) + "-" + (max(level+1, tier) + bonus);
} else {
return null;
}
}
public class Force extends RingBuff {
}

View File

@@ -88,4 +88,9 @@ public class AssassinsBlade extends MeleeWeapon {
}
}
@Override
public String upgradeAbilityStat(int level) {
return Integer.toString(2+level);
}
}

View File

@@ -65,4 +65,9 @@ public class BattleAxe extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 5 + Math.round(1.5f*level);
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
}

View File

@@ -85,6 +85,11 @@ public class Crossbow extends MeleeWeapon {
}
}
@Override
public String upgradeAbilityStat(int level) {
return Integer.toString(3 + level);
}
public static class ChargedShot extends Buff{
{

View File

@@ -102,6 +102,11 @@ public class Dagger extends MeleeWeapon {
}
}
@Override
public String upgradeAbilityStat(int level) {
return Integer.toString(2+level);
}
public static void sneakAbility(Hero hero, Integer target, int maxDist, int invisTurns, MeleeWeapon wep){
if (target == null) {
return;

View File

@@ -88,4 +88,9 @@ public class Dirk extends MeleeWeapon {
}
}
@Override
public String upgradeAbilityStat(int level) {
return Integer.toString(2+level);
}
}

View File

@@ -134,6 +134,10 @@ public class Flail extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
return "+" + augment.damageFactor(8 + 2*level);
}
public static class SpinAbilityTracker extends FlavourBuff {
{

View File

@@ -65,4 +65,8 @@ public class Gauntlet extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
return "+" + augment.damageFactor(4 + Math.round(0.75f*level));
}
}

View File

@@ -56,6 +56,11 @@ public class Glaive extends MeleeWeapon {
Spear.spikeAbility(hero, target, 1, dmgBoost, this);
}
public String upgradeAbilityStat(int level){
int dmgBoost = 12 + 2*level;
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
@Override
public String abilityInfo() {
int dmgBoost = levelKnown ? 12 + 2*buffedLvl() : 12;

View File

@@ -67,4 +67,8 @@ public class Gloves extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
return "+" + augment.damageFactor(2 + Math.round(0.5f*level));
}
}

View File

@@ -123,4 +123,9 @@ public class Greataxe extends MeleeWeapon {
return Messages.get(this, "typical_ability_desc", min(0)+dmgBoost, max(0)+dmgBoost);
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 12 + 2*level;
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
}

View File

@@ -75,4 +75,9 @@ public class Greatshield extends MeleeWeapon {
return Messages.get(this, "typical_ability_desc", 3);
}
}
@Override
public String upgradeAbilityStat(int level) {
return Integer.toString(3 + level);
}
}

View File

@@ -68,4 +68,9 @@ public class Greatsword extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 5 + level;
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
}

View File

@@ -65,4 +65,9 @@ public class HandAxe extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 4 + Math.round(1.5f*level);
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
}

View File

@@ -70,4 +70,9 @@ public class Katana extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 6 + Math.round(1.5f*level);
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
}

View File

@@ -67,4 +67,9 @@ public class Longsword extends MeleeWeapon {
return Messages.get(this, "typical_ability_desc", min(0)+dmgBoost, max(0)+dmgBoost);
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 4 + level;
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
}

View File

@@ -76,6 +76,11 @@ public class Mace extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 5 + Math.round(1.5f*level);
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
public static void heavyBlowAbility(Hero hero, Integer target, float dmgMulti, int dmgBoost, MeleeWeapon wep){
if (target == null) {
return;

View File

@@ -400,6 +400,10 @@ public class MeleeWeapon extends Weapon {
return Messages.get(this, "ability_desc");
}
public String upgradeAbilityStat(int level){
return null;
}
@Override
public String status() {
if (isEquipped(Dungeon.hero)

View File

@@ -70,6 +70,11 @@ public class Quarterstaff extends MeleeWeapon {
}
}
@Override
public String upgradeAbilityStat(int level) {
return Integer.toString(4+level);
}
public static class DefensiveStance extends FlavourBuff {
{

View File

@@ -83,6 +83,11 @@ public class Rapier extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 4 + level;
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
public static void lungeAbility(Hero hero, Integer target, float dmgMulti, int dmgBoost, MeleeWeapon wep){
if (target == null){
return;

View File

@@ -85,6 +85,11 @@ public class RoundShield extends MeleeWeapon {
}
}
@Override
public String upgradeAbilityStat(int level) {
return Integer.toString(5 + level);
}
public static void guardAbility(Hero hero, int duration, MeleeWeapon wep){
wep.beforeAbilityUsed(hero, null);
Buff.prolong(hero, GuardTracker.class, duration).hasBlocked = false;

View File

@@ -112,6 +112,11 @@ public class RunicBlade extends MeleeWeapon {
}
}
@Override
public String upgradeAbilityStat(int level) {
return "+" + (300+50*level) + "%";
}
public static class RunicSlashTracker extends FlavourBuff{

View File

@@ -77,6 +77,10 @@ public class Sai extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
return "+" + augment.damageFactor(3 + Math.round(0.67f*level));
}
public static void comboStrikeAbility(Hero hero, Integer target, float multiPerHit, int boostPerHit, MeleeWeapon wep){
if (target == null) {
return;

View File

@@ -65,6 +65,11 @@ public class Scimitar extends MeleeWeapon {
}
}
@Override
public String upgradeAbilityStat(int level) {
return Integer.toString(4+level);
}
public static class SwordDance extends FlavourBuff {
{

View File

@@ -67,4 +67,9 @@ public class Shortsword extends MeleeWeapon {
return Messages.get(this, "typical_ability_desc", min(0)+dmgBoost, max(0)+dmgBoost);
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 3 + level;
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
}

View File

@@ -75,6 +75,11 @@ public class Sickle extends MeleeWeapon {
}
}
@Override
public String upgradeAbilityStat(int level) {
return Integer.toString(augment.damageFactor(Math.round(15f + 2.5f*level)));
}
public static void harvestAbility(Hero hero, Integer target, float bleedMulti, int bleedBoost, MeleeWeapon wep){
if (target == null) {

View File

@@ -77,6 +77,11 @@ public class Spear extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 7 + Math.round(1.5f*level);
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
public static void spikeAbility(Hero hero, Integer target, float dmgMulti, int dmgBoost, MeleeWeapon wep){
if (target == null) {
return;

View File

@@ -78,6 +78,11 @@ public class Sword extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 4 + level;
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
public static void cleaveAbility(Hero hero, Integer target, float dmgMulti, int dmgBoost, MeleeWeapon wep){
if (target == null) {
return;

View File

@@ -55,6 +55,11 @@ public class WarHammer extends MeleeWeapon {
Mace.heavyBlowAbility(hero, target, 1, dmgBoost, this);
}
public String upgradeAbilityStat(int level){
int dmgBoost = 6 + Math.round(1.5f*level);
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
@Override
public String abilityInfo() {
int dmgBoost = levelKnown ? 6 + Math.round(1.5f*buffedLvl()) : 6;

View File

@@ -65,4 +65,9 @@ public class WarScythe extends MeleeWeapon {
}
}
@Override
public String upgradeAbilityStat(int level) {
return Integer.toString(augment.damageFactor(Math.round(30f + 4.5f*level)));
}
}

View File

@@ -106,4 +106,9 @@ public class Whip extends MeleeWeapon {
return Messages.get(this, "typical_ability_desc", min(0)+dmgBoost, max(0)+dmgBoost);
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 2 + Math.round(0.5f*level);
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
}

View File

@@ -70,4 +70,9 @@ public class WornShortsword extends MeleeWeapon {
}
}
public String upgradeAbilityStat(int level){
int dmgBoost = 3 + level;
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
}
}

View File

@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
@@ -33,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Greatshield;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RoundShield;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
import com.shatteredpixel.shatteredpixeldungeon.messages.Languages;
@@ -156,17 +158,27 @@ public class WndUpgrade extends Window {
//physical damage
if (toUpgrade instanceof Weapon){
Weapon.Augment aug = ((Weapon) toUpgrade).augment;
bottom = fillFields(Messages.get(this, "damage"),
((Weapon) toUpgrade).min(levelFrom) + "-" + ((Weapon) toUpgrade).max(levelFrom),
((Weapon) toUpgrade).min(levelTo) + "-" + ((Weapon) toUpgrade).max(levelTo),
aug.damageFactor(((Weapon) toUpgrade).min(levelFrom)) + "-" + aug.damageFactor(((Weapon) toUpgrade).max(levelFrom)),
aug.damageFactor(((Weapon) toUpgrade).min(levelTo)) + "-" + aug.damageFactor(((Weapon) toUpgrade).max(levelTo)),
bottom);
}
if (Dungeon.hero != null && Dungeon.hero.heroClass == HeroClass.DUELIST
&& toUpgrade instanceof MeleeWeapon && ((MeleeWeapon) toUpgrade).upgradeAbilityStat(levelFrom) != null){
bottom = fillFields(Messages.get(toUpgrade, "upgrade_ability_stat_name"),
((MeleeWeapon) toUpgrade).upgradeAbilityStat(levelFrom),
((MeleeWeapon) toUpgrade).upgradeAbilityStat(levelTo),
bottom);
}
//blocking (armor and shields)
if (toUpgrade instanceof Armor){
Armor.Augment aug = ((Armor) toUpgrade).augment;
bottom = fillFields(Messages.get(this, "blocking"),
((Armor) toUpgrade).DRMin(levelFrom) + "-" + ((Armor) toUpgrade).DRMax(levelFrom),
((Armor) toUpgrade).DRMin(levelTo) + "-" + ((Armor) toUpgrade).DRMax(levelTo),
((Armor) toUpgrade).DRMin(levelFrom) + "-" + (((Armor) toUpgrade).DRMax(levelFrom) + aug.defenseFactor(levelFrom)),
((Armor) toUpgrade).DRMin(levelTo) + "-" + (((Armor) toUpgrade).DRMax(levelFrom) + aug.defenseFactor(levelTo)),
bottom);
} else if (toUpgrade instanceof RoundShield){
bottom = fillFields(Messages.get(this, "blocking"),
@@ -193,8 +205,6 @@ public class WndUpgrade extends Window {
bottom);
}
//TODO Duelist weapon abilities
//durability
if (toUpgrade instanceof MissileWeapon){
//missile weapons are always IDed currently, so we always use true level
@@ -257,6 +267,12 @@ public class WndUpgrade extends Window {
((Ring) toUpgrade).upgradeStat2(levelTo),
bottom);
}
if (((Ring) toUpgrade).upgradeStat3(levelFrom) != null){
bottom = fillFields(Messages.get(toUpgrade, "upgrade_stat_name_3"),
((Ring) toUpgrade).upgradeStat3(levelFrom),
((Ring) toUpgrade).upgradeStat3(levelTo),
bottom);
}
}
//visual separators for each column