From 998cc211cd8a9486bf92163774888ee03cd38088 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 9 Apr 2024 11:33:00 -0400 Subject: [PATCH] v2.4.0: converted most damaging duelist abilities show damage ranges also fixed a bug in war scythe where stated bleed rate was 90%, when it was actually 99% (now rounded to 100%) --- .../assets/messages/items/items.properties | 50 ++++++++++++------- .../items/quest/Pickaxe.java | 5 ++ .../items/weapon/melee/BattleAxe.java | 9 ++++ .../items/weapon/melee/Glaive.java | 9 ++++ .../items/weapon/melee/Greataxe.java | 9 ++++ .../items/weapon/melee/Greatsword.java | 9 ++++ .../items/weapon/melee/HandAxe.java | 9 ++++ .../items/weapon/melee/Katana.java | 10 ++++ .../items/weapon/melee/Longsword.java | 8 +++ .../items/weapon/melee/Mace.java | 9 ++++ .../items/weapon/melee/MeleeWeapon.java | 7 ++- .../items/weapon/melee/Rapier.java | 9 ++++ .../items/weapon/melee/Shortsword.java | 8 +++ .../items/weapon/melee/Sickle.java | 13 ++++- .../items/weapon/melee/Spear.java | 9 ++++ .../items/weapon/melee/Sword.java | 9 ++++ .../items/weapon/melee/WarHammer.java | 9 ++++ .../items/weapon/melee/WarScythe.java | 11 +++- .../items/weapon/melee/WornShortsword.java | 9 ++++ 19 files changed, 189 insertions(+), 22 deletions(-) diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index 9076267dc..1a0e3c2b6 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -876,7 +876,7 @@ items.quest.pickaxe.name=pickaxe 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 double damage to enemies with rigid skin. +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.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 @@ -1595,7 +1595,8 @@ items.weapon.melee.assassinsblade.desc=A small wavy blade made of obsidian, diff items.weapon.melee.battleaxe.name=battle axe items.weapon.melee.battleaxe.stats_desc=This is a rather accurate weapon. items.weapon.melee.battleaxe.ability_name=heavy blow -items.weapon.melee.battleaxe.ability_desc=The Duelist can perform a _heavy blow_ with a battle axe. This concentrated attack deals +35% damage and dazes for 5 turns, reducing accuracy and evasion by 50%. This ability costs 2 charges if it does not surprise the enemy. +items.weapon.melee.battleaxe.typical_ability_desc=The Duelist can perform a _heavy blow_ with a battle axe. This concentrated attack typically deals _%1$d-%2$d damage_ and dazes for 5 turns, reducing accuracy and evasion by 50%%. This ability costs 2 charges if it does not surprise the enemy. +items.weapon.melee.battleaxe.ability_desc=The Duelist can perform a _heavy blow_ with a battle axe. This concentrated attack deals _%1$d-%2$d damage_ and dazes for 5 turns, reducing accuracy and evasion by 50%%. This ability costs 2 charges if it does not surprise the enemy. items.weapon.melee.battleaxe.desc=The enormous steel head of this battle axe puts considerable heft behind each wide stroke. items.weapon.melee.crossbow.name=crossbow @@ -1636,7 +1637,8 @@ items.weapon.melee.gauntlet.desc=This massive gauntlet is made of crimson fabric items.weapon.melee.glaive.name=glaive items.weapon.melee.glaive.stats_desc=This is a rather slow weapon.\nThis weapon has extra reach. items.weapon.melee.glaive.ability_name=spike -items.weapon.melee.glaive.ability_desc=The Duelist can use the tip of a glaive to _spike_ an enemy that is in range but not adjacent. This deals +30% damage, knocks the enemy back, and is guaranteed to hit. +items.weapon.melee.glaive.typical_ability_desc=The Duelist can use the tip of a glaive to _spike_ an enemy that is in range but not adjacent. This typically deals _%1$d-%2$d_ damage, knocks the enemy back, and is guaranteed to hit. +items.weapon.melee.glaive.ability_desc=The Duelist can use the tip of a glaive to _spike_ an enemy that is in range but not adjacent. This deals _%1$d-%2$d_ damage, knocks the enemy back, and is guaranteed to hit. items.weapon.melee.glaive.desc=A massive polearm consisting of a sword blade on the end of a pole. items.weapon.melee.gloves.name=studded gloves @@ -1648,7 +1650,8 @@ items.weapon.melee.gloves.desc=These studded gloves don't provide any real prote items.weapon.melee.greataxe.name=greataxe items.weapon.melee.greataxe.stats_desc=This weapon is incredibly heavy. items.weapon.melee.greataxe.ability_name=retribution -items.weapon.melee.greataxe.ability_desc=The Duelist can perform a _retribution_ attack with a greataxe if she is below 50% health. This devastating attack is guaranteed to hit and deals +50% damage. +items.weapon.melee.greataxe.typical_ability_desc=The Duelist can perform a _retribution_ attack with a greataxe if she is below 50%% health. This devastating attack typically deals _%1$d-%2$d damage_ and is guaranteed to hit. +items.weapon.melee.greataxe.ability_desc=The Duelist can perform a _retribution_ attack with a greataxe if she is below 50%% health. This devastating attack typically deals _%1$d-%2$d damage_ and is guaranteed to hit. items.weapon.melee.greataxe.desc=Meant to be wielded over the shoulder, this titanic axe is as powerful as it is heavy. items.weapon.melee.greatshield.name=greatshield @@ -1660,30 +1663,35 @@ items.weapon.melee.greatshield.desc=More like a mobile wall than a shield, this items.weapon.melee.greatsword.name=greatsword items.weapon.melee.greatsword.ability_name=cleave -items.weapon.melee.greatsword.ability_desc=The Duelist can _cleave_ an enemy with a greatsword. This deals +20% damage and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. +items.weapon.melee.greatsword.typical_ability_desc=The Duelist can _cleave_ an enemy with a greatsword. This typically deals _%1$d-%2$d damage_ and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. +items.weapon.melee.greatsword.ability_desc=The Duelist can _cleave_ an enemy with a greatsword. This deals _%1$d-%2$d damage_ and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. items.weapon.melee.greatsword.desc=This towering blade inflicts heavy damage by investing its heft into every swing. items.weapon.melee.handaxe.name=hand axe items.weapon.melee.handaxe.stats_desc=This is a rather accurate weapon. items.weapon.melee.handaxe.ability_name=heavy blow -items.weapon.melee.handaxe.ability_desc=The Duelist can perform a _heavy blow_ with a hand axe. This concentrated attack deals +45% damage and dazes for 5 turns, reducing accuracy and evasion by 50%. This ability costs 2 charges if it does not surprise the enemy. +items.weapon.melee.handaxe.typical_ability_desc=The Duelist can perform a _heavy blow_ with a hand axe. This concentrated attack typically deals _%1$d-%2$d damage_ and dazes for 5 turns, reducing accuracy and evasion by 50%%. This ability costs 2 charges if it does not surprise the enemy. +items.weapon.melee.handaxe.ability_desc=The Duelist can perform a _heavy blow_ with a hand axe. This concentrated attack deals _%1$d-%2$d damage_ and dazes for 5 turns, reducing accuracy and evasion by 50%%. This ability costs 2 charges if it does not surprise the enemy. items.weapon.melee.handaxe.desc=A light axe, most commonly used for felling trees. The wide blade works well against foes as well. items.weapon.melee.katana.name=katana items.weapon.melee.katana.stats_desc=This weapon blocks 0-3 damage. items.weapon.melee.katana.ability_name=lunge -items.weapon.melee.katana.ability_desc=The Duelist can _lunge_ with a katana at an enemy 1 tile away. This moves toward the enemy, deals +35% damage, and is guaranteed to hit. +items.weapon.melee.katana.typical_ability_desc=The Duelist can _lunge_ with a katana at an enemy 1 tile away. This moves toward the enemy, typically deals _%1$d-%2$d damage_, and is guaranteed to hit. +items.weapon.melee.katana.ability_desc=The Duelist can _lunge_ with a katana at an enemy 1 tile away. This moves toward the enemy, deals _%1$d-%2$d damage_, and is guaranteed to hit. items.weapon.melee.katana.desc=A slender sword with a large metal guard above the handle. items.weapon.melee.longsword.name=longsword items.weapon.melee.longsword.ability_name=cleave -items.weapon.melee.longsword.ability_desc=The Duelist can _cleave_ an enemy with a longsword. This deals +23% damage and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. +items.weapon.melee.longsword.typical_ability_desc=The Duelist can _cleave_ an enemy with a longsword. This typically deals _%1$d-%2$d damage_ and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. +items.weapon.melee.longsword.ability_desc=The Duelist can _cleave_ an enemy with a longsword. This deals _%1$d-%2$d damage_ and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. items.weapon.melee.longsword.desc=This sword's long razor-sharp steel blade shines reassuringly, though its size does make it quite heavy. items.weapon.melee.mace.name=mace items.weapon.melee.mace.stats_desc=This is a rather accurate weapon. items.weapon.melee.mace.ability_name=heavy blow -items.weapon.melee.mace.ability_desc=The Duelist can perform a _heavy blow_ with a mace. This concentrated attack deals +40% damage and dazes for 5 turns, reducing accuracy and evasion by 50%. This ability costs 2 charges if it does not surprise the enemy. +items.weapon.melee.mace.typical_ability_desc=The Duelist can perform a _heavy blow_ with a mace. This concentrated attack typically deals _%1$d-%2$d damage_ and dazes for 5 turns, reducing accuracy and evasion by 50%%. This ability costs 2 charges if it does not surprise the enemy. +items.weapon.melee.mace.ability_desc=The Duelist can perform a _heavy blow_ with a mace. This concentrated attack deals _%1$d-%2$d damage_ and dazes for 5 turns, reducing accuracy and evasion by 50%%. This ability costs 2 charges if it does not surprise the enemy. items.weapon.melee.mace.desc=The large iron head of this weapon inflicts substantial damage. items.weapon.melee.magesstaff.name=mage's staff @@ -1723,7 +1731,8 @@ items.weapon.melee.meleeweapon.swap_full=You can't do that with a full inventory items.weapon.melee.shortsword.name=shortsword items.weapon.melee.shortsword.ability_name=cleave -items.weapon.melee.shortsword.ability_desc=The Duelist can _cleave_ an enemy with a shortsword. This deals +30% damage and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. +items.weapon.melee.shortsword.typical_ability_desc=The Duelist can _cleave_ an enemy with a shortsword. This typically deals _%1$d-%2$d damage_ and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. +items.weapon.melee.shortsword.ability_desc=The Duelist can _cleave_ an enemy with a shortsword. This deals _%1$d-%2$d damage_ and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. items.weapon.melee.shortsword.desc=A quite short sword, only a few inches longer than a dagger. items.weapon.melee.quarterstaff.name=quarterstaff @@ -1737,7 +1746,8 @@ items.weapon.melee.quarterstaff$defensivestance.desc=The Duelist is using her qu items.weapon.melee.rapier.name=rapier items.weapon.melee.rapier.stats_desc=This weapon blocks 0-1 damage. items.weapon.melee.rapier.ability_name=lunge -items.weapon.melee.rapier.ability_desc=The Duelist can _lunge_ with a rapier at an enemy 1 tile away. This moves toward the enemy, deals +67% damage, and is guaranteed to hit. +items.weapon.melee.rapier.typical_ability_desc=The Duelist can _lunge_ with a rapier at an enemy 1 tile away. This moves toward the enemy, typically deals _%1$d-%2$d damage_, and is guaranteed to hit. +items.weapon.melee.rapier.ability_desc=The Duelist can _lunge_ with a rapier at an enemy 1 tile away. This moves toward the enemy, deals _%1$d-%2$d damage_, and is guaranteed to hit. items.weapon.melee.rapier.desc=A slim straight sword that offers some protection in exchange for less slashing power. items.weapon.melee.roundshield.name=round shield @@ -1775,18 +1785,21 @@ items.weapon.melee.scimitar$sworddance.desc=The Duelist is making quick momentum items.weapon.melee.sickle.name=sickle items.weapon.melee.sickle.stats_desc=This is a rather inaccurate weapon. items.weapon.melee.sickle.ability_name=harvest -items.weapon.melee.sickle.ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack inflicts bleed equal to 110% of damage and is guaranteed to hit, but costs 2 charges. +items.weapon.melee.sickle.typical_ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack typically inflicts _%1$d-%2$d bleed_ instead of damage and is guaranteed to hit, but costs 2 charges. +items.weapon.melee.sickle.ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack inflicts _%1$d-%2$d bleed_ instead of damage and is guaranteed to hit, but costs 2 charges. items.weapon.melee.sickle.desc=A handheld farming tool that can double as a strong but unwieldy weapon. items.weapon.melee.spear.name=spear items.weapon.melee.spear.stats_desc=This is a rather slow weapon.\nThis weapon has extra reach. items.weapon.melee.spear.ability_name=spike -items.weapon.melee.spear.ability_desc=The Duelist can use the tip of a spear to _spike_ an enemy that is in range but not adjacent. This deals +45% damage, knocks the enemy back, and is guaranteed to hit. +items.weapon.melee.spear.typical_ability_desc=The Duelist can use the tip of a spear to _spike_ an enemy that is in range but not adjacent. This typically deals _%1$d-%2$d_ damage, knocks the enemy back, and is guaranteed to hit. +items.weapon.melee.spear.ability_desc=The Duelist can use the tip of a spear to _spike_ an enemy that is in range but not adjacent. This deals _%1$d-%2$d_ damage, knocks the enemy back, and is guaranteed to hit. items.weapon.melee.spear.desc=A slender wooden rod tipped with sharpened iron. items.weapon.melee.sword.name=sword items.weapon.melee.sword.ability_name=cleave -items.weapon.melee.sword.ability_desc=The Duelist can _cleave_ an enemy with a sword. This deals +27% damage and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. +items.weapon.melee.sword.typical_ability_desc=The Duelist can _cleave_ an enemy with a sword. This typically deals _%1$d-%2$d damage_ and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. +items.weapon.melee.sword.ability_desc=The Duelist can _cleave_ an enemy with a sword. This deals _%1$d-%2$d damage_ and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. items.weapon.melee.sword.desc=A nicely balanced sword. Not too large, but still notably longer than a shortsword. items.weapon.melee.sword$cleavetracker.name=cleave items.weapon.melee.sword$cleavetracker.desc=The Duelist is ready to follow up on her previous cleave. The next use of cleave will not cost any weapon ability charge.\n\nTurns remaining: %s. @@ -1794,13 +1807,15 @@ items.weapon.melee.sword$cleavetracker.desc=The Duelist is ready to follow up on items.weapon.melee.warhammer.name=war hammer items.weapon.melee.warhammer.stats_desc=This is a rather accurate weapon. items.weapon.melee.warhammer.ability_name=heavy blow -items.weapon.melee.warhammer.ability_desc=The Duelist can perform a _heavy blow_ with a war hammer. This concentrated attack deals +30% damage and dazes for 5 turns, reducing accuracy and evasion by 50%. This ability costs 2 charges if it does not surprise the enemy. +items.weapon.melee.warhammer.typical_ability_desc=The Duelist can perform a _heavy blow_ with a v. This concentrated attack typically deals _%1$d-%2$d damage_ and dazes for 5 turns, reducing accuracy and evasion by 50%%. This ability costs 2 charges if it does not surprise the enemy. +items.weapon.melee.warhammer.ability_desc=The Duelist can perform a _heavy blow_ with a war hammer. This concentrated attack deals _%1$d-%2$d damage_ and dazes for 5 turns, reducing accuracy and evasion by 50%%. This ability costs 2 charges if it does not surprise the enemy. items.weapon.melee.warhammer.desc=Few creatures can withstand the crushing blow of this towering mass of lead and steel, but it takes great strength to use effectively. items.weapon.melee.warscythe.name=war scythe items.weapon.melee.warscythe.stats_desc=This is a rather inaccurate weapon. items.weapon.melee.warscythe.ability_name=harvest -items.weapon.melee.warscythe.ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack inflicts bleed equal to 90% of damage and is guaranteed to hit, but costs 2 charges. +items.weapon.melee.warscythe.typical_ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack typically inflicts _%1$d-%2$d bleed_ instead of damage and is guaranteed to hit, but costs 2 charges. +items.weapon.melee.warscythe.ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack inflicts _%1$d-%2$d bleed_ instead of damage and is guaranteed to hit, but costs 2 charges. items.weapon.melee.warscythe.desc=This large and unwieldy tool has been reinforced to make it better at cutting foes than crops. items.weapon.melee.whip.name=whip @@ -1811,7 +1826,8 @@ items.weapon.melee.whip.desc=While the barbed length of rope at the end of this items.weapon.melee.wornshortsword.name=worn shortsword items.weapon.melee.wornshortsword.ability_name=cleave -items.weapon.melee.wornshortsword.ability_desc=The Duelist can _cleave_ an enemy with a worn shortsword. This deals +33% damage and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. +items.weapon.melee.wornshortsword.typical_ability_desc=The Duelist can _cleave_ an enemy with a worn shortsword. This typically deals _%1$d-%2$d damage_ and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. +items.weapon.melee.wornshortsword.ability_desc=The Duelist can _cleave_ an enemy with a worn shortsword. This deals _%1$d-%2$d damage_ and is guaranteed to hit. If cleave kills an enemy the Duelist can use cleave again within 5 turns for free. items.weapon.melee.wornshortsword.desc=A quite short sword, worn down through heavy use. It is both weaker and a bit lighter than a shortsword in better condition. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java index 4a3fcec84..72b997031 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java @@ -242,6 +242,11 @@ public class Pickaxe extends MeleeWeapon { }); } + @Override + public String abilityInfo() { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 2f)), augment.damageFactor(Math.round(max() * 2f))); + } + private static final String BLOODSTAINED = "bloodStained"; @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java index 35c51605d..4b325c9a3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/BattleAxe.java @@ -64,4 +64,13 @@ public class BattleAxe extends MeleeWeapon { Mace.heavyBlowAbility(hero, target, 1.35f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.35f)), augment.damageFactor(Math.round(max() * 1.35f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.35f), Math.round(max(0) * 1.35f)); + } + } + } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Glaive.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Glaive.java index 6e637537b..aa1e5fd96 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Glaive.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Glaive.java @@ -54,4 +54,13 @@ public class Glaive extends MeleeWeapon { Spear.spikeAbility(hero, target, 1.30f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.30f)), augment.damageFactor(Math.round(max() * 1.30f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.30f), Math.round(max(0) * 1.30f)); + } + } + } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java index 772543ac6..eb4abc6d2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java @@ -102,4 +102,13 @@ public class Greataxe extends MeleeWeapon { } }); } + + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.50f)), augment.damageFactor(Math.round(max() * 1.50f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.50f), Math.round(max(0) * 1.50f)); + } + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java index 91c153426..d9dc9650c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greatsword.java @@ -56,4 +56,13 @@ public class Greatsword extends MeleeWeapon { Sword.cleaveAbility(hero, target, 1.20f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.20f)), augment.damageFactor(Math.round(max() * 1.20f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.20f), Math.round(max(0) * 1.20f)); + } + } + } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java index 62b7556f3..095a9e968 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/HandAxe.java @@ -64,4 +64,13 @@ public class HandAxe extends MeleeWeapon { Mace.heavyBlowAbility(hero, target, 1.45f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.45f)), augment.damageFactor(Math.round(max() * 1.45f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.45f), Math.round(max(0) * 1.45f)); + } + } + } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Katana.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Katana.java index 3284d7c22..b13476022 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Katana.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Katana.java @@ -57,4 +57,14 @@ public class Katana extends MeleeWeapon { protected void duelistAbility(Hero hero, Integer target) { Rapier.lungeAbility(hero, target, 1.35f, 0, this); } + + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.35f)), augment.damageFactor(Math.round(max() * 1.35f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.35f), Math.round(max(0) * 1.35f)); + } + } + } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java index fb356613d..f019ef970 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Longsword.java @@ -56,4 +56,12 @@ public class Longsword extends MeleeWeapon { Sword.cleaveAbility(hero, target, 1.23f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.23f)), augment.damageFactor(Math.round(max() * 1.23f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.23f), Math.round(max(0) * 1.23f)); + } + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java index cae717f00..bd8e2b957 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Mace.java @@ -73,6 +73,15 @@ public class Mace extends MeleeWeapon { Mace.heavyBlowAbility(hero, target, 1.40f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.40f)), augment.damageFactor(Math.round(max() * 1.40f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.40f), Math.round(max(0) * 1.40f)); + } + } + public static void heavyBlowAbility(Hero hero, Integer target, float dmgMulti, MeleeWeapon wep){ if (target == null) { return; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java index 44451b499..ceafb4928 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java @@ -350,7 +350,6 @@ public class MeleeWeapon extends Weapon { damage += Char.combatRoll( 0, exStr ); } } - return damage; } @@ -408,7 +407,7 @@ public class MeleeWeapon extends Weapon { //the mage's staff has no ability as it can only be gained by the mage if (Dungeon.hero.heroClass == HeroClass.DUELIST && !(this instanceof MagesStaff)){ - info += "\n\n" + Messages.get(this, "ability_desc"); + info += "\n\n" + abilityInfo(); } return info; @@ -418,6 +417,10 @@ public class MeleeWeapon extends Weapon { return Messages.get(this, "stats_desc"); } + public String abilityInfo() { + return Messages.get(this, "ability_desc"); + } + @Override public String status() { if (isEquipped(Dungeon.hero) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Rapier.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Rapier.java index 1e0f03243..098e55812 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Rapier.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Rapier.java @@ -73,6 +73,15 @@ public class Rapier extends MeleeWeapon { lungeAbility(hero, target, 1, dmgBoost, this); } + @Override + public String abilityInfo() { + if (levelKnown){ + return Messages.get(this, "ability_desc", augment.damageFactor(min()+3+level()), augment.damageFactor(max()+3+level())); + } else { + return Messages.get(this, "typical_ability_desc", min(0)+3, max(0)+3); + } + } + public static void lungeAbility(Hero hero, Integer target, float dmgMulti, int dmgBoost, MeleeWeapon wep){ if (target == null){ return; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java index cbd3f4c96..536d28151 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Shortsword.java @@ -56,4 +56,12 @@ public class Shortsword extends MeleeWeapon { Sword.cleaveAbility(hero, target, 1.30f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.30f)), augment.damageFactor(Math.round(max() * 1.30f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.30f), Math.round(max(0) * 1.30f)); + } + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sickle.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sickle.java index ab273405c..9ea974ba5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sickle.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sickle.java @@ -65,7 +65,16 @@ public class Sickle extends MeleeWeapon { @Override protected void duelistAbility(Hero hero, Integer target) { - harvestAbility(hero, target, 1f, this); + harvestAbility(hero, target, 1.10f, this); + } + + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.10f)), augment.damageFactor(Math.round(max() * 1.10f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.10f), Math.round(max(0) * 1.10f)); + } } public static void harvestAbility(Hero hero, Integer target, float bleedFactor, MeleeWeapon wep){ @@ -95,7 +104,7 @@ public class Sickle extends MeleeWeapon { AttackIndicator.target(enemy); Buff.affect(enemy, HarvestBleedTracker.class, 0).bleedFactor = bleedFactor; - if (hero.attack(enemy, 1.1f, 0, Char.INFINITE_ACCURACY)){ + if (hero.attack(enemy, 1f, 0, Char.INFINITE_ACCURACY)){ Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java index f2b189286..bb6d855a5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Spear.java @@ -64,6 +64,15 @@ public class Spear extends MeleeWeapon { Spear.spikeAbility(hero, target, 1.45f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.45f)), augment.damageFactor(Math.round(max() * 1.45f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.45f), Math.round(max(0) * 1.45f)); + } + } + public static void spikeAbility(Hero hero, Integer target, float dmgMulti, MeleeWeapon wep){ if (target == null) { return; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java index bd26dab30..00a94b992 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Sword.java @@ -66,6 +66,15 @@ public class Sword extends MeleeWeapon { Sword.cleaveAbility(hero, target, 1.27f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.27f)), augment.damageFactor(Math.round(max() * 1.27f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.27f), Math.round(max(0) * 1.27f)); + } + } + public static void cleaveAbility(Hero hero, Integer target, float dmgMulti, MeleeWeapon wep){ if (target == null) { return; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java index faa9c05e2..01ecddd0a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarHammer.java @@ -64,4 +64,13 @@ public class WarHammer extends MeleeWeapon { Mace.heavyBlowAbility(hero, target, 1.30f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.30f)), augment.damageFactor(Math.round(max() * 1.30f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.30f), Math.round(max(0) * 1.30f)); + } + } + } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarScythe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarScythe.java index 3db306bae..303245472 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarScythe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WarScythe.java @@ -56,7 +56,16 @@ public class WarScythe extends MeleeWeapon { @Override protected void duelistAbility(Hero hero, Integer target) { - Sickle.harvestAbility(hero, target, 0.9f, this); + Sickle.harvestAbility(hero, target, 1f, this); + } + + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.0f)), augment.damageFactor(Math.round(max() * 1.0f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.0f), Math.round(max(0) * 1.0f)); + } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java index d26dd4520..98cde4eeb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/WornShortsword.java @@ -58,4 +58,13 @@ public class WornShortsword extends MeleeWeapon { Sword.cleaveAbility(hero, target, 1.33f, this); } + @Override + public String abilityInfo() { + if (levelKnown) { + return Messages.get(this, "ability_desc", augment.damageFactor(Math.round(min() * 1.33f)), augment.damageFactor(Math.round(max() * 1.33f))); + } else { + return Messages.get(this, "typical_ability_desc", Math.round(min(0) * 1.33f), Math.round(max(0) * 1.33f)); + } + } + }