diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index f42a7dbb2..7df41ecb3 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -636,7 +636,7 @@ actors.hero.talent.hearty_meal.desc=_+1:_ Eating food heals the Warrior for _3 H actors.hero.talent.veterans_intuition.title=veteran's intuition actors.hero.talent.veterans_intuition.desc=_+1:_ The Warrior identifies weapons _1.75x faster_ and armor _2.5x faster_.\n\n_+2:_ The Warrior identifies weapons _2.5x faster_ and armor _when he equips it_. actors.hero.talent.provoked_anger.title=provoked anger -actors.hero.talent.provoked_anger.desc=_+1:_ When the Warrior's shielding breaks, his next physical attack will deal _1-2 bonus damage_.\n\n_+2:_ When the Warrior's shielding breaks, his next physical attack will deal _2 bonus damage_. +actors.hero.talent.provoked_anger.desc=_+1:_ When the Warrior's shielding breaks, his next physical attack will deal _2 bonus damage_.\n\n_+2:_ When the Warrior's shielding breaks, his next physical attack will deal _3 bonus damage_. actors.hero.talent.iron_will.title=iron will actors.hero.talent.iron_will.desc=_+1:_ The max shield provided by the Warrior's seal is _increased by 1_.\n\n_+2:_ The max shield provided by the Warrior's seal is _increased by 2_. actors.hero.talent.iron_will.meta_desc=_If this talent is gained by a different hero_ it will grant its shielding benefit without the broken seal. diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index 159c931e2..df487bb9e 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -1809,8 +1809,8 @@ 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.typical_ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack is guaranteed to hit and typically deals _%d damage,_ but applies the damage as bleeding instead. -items.weapon.melee.sickle.ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack is guaranteed to hit and deals _%d damage,_ but applies the damage as bleeding instead. +items.weapon.melee.sickle.typical_ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack is guaranteed to hit and typically deals _%d damage._ This damage is applied as bleeding if the target isn't immune. +items.weapon.melee.sickle.ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack is guaranteed to hit and deals _%d damage._ This damage is applied as bleeding if the target isn't immune. items.weapon.melee.sickle.desc=A handheld farming tool that can double as a strong but unwieldy weapon. items.weapon.melee.spear.name=spear @@ -1838,8 +1838,8 @@ items.weapon.melee.warhammer.desc=Few creatures can withstand the crushing blow 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.typical_ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack is guaranteed to hit and typically deals _%d damage,_ but applies the damage as bleeding instead. -items.weapon.melee.warscythe.ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack is guaranteed to hit and deals _%d damage,_ but applies the damage as bleeding instead. +items.weapon.melee.warscythe.typical_ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack is guaranteed to hit and typically deals _%d damage._ This damage is applied as bleeding if the target isn't immune. +items.weapon.melee.warscythe.ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack is guaranteed to hit and deals _%d damage._ This damage is applied as bleeding if the target isn't immune. 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 diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index c7620bb3f..79d6de3d1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -736,22 +736,19 @@ public abstract class Char extends Actor { } if (buff(Sickle.HarvestBleedTracker.class) != null){ - if (isImmune(Bleeding.class)){ - sprite.showStatus(CharSprite.POSITIVE, Messages.titleCase(Messages.get(this, "immune"))); - buff(Sickle.HarvestBleedTracker.class).detach(); + buff(Sickle.HarvestBleedTracker.class).detach(); + + if (!isImmune(Bleeding.class)){ + Bleeding b = buff(Bleeding.class); + if (b == null){ + b = new Bleeding(); + } + b.announced = false; + b.set(dmg, Sickle.HarvestBleedTracker.class); + b.attachTo(this); + sprite.showStatus(CharSprite.WARNING, Messages.titleCase(b.name()) + " " + (int)b.level()); return; } - - Bleeding b = buff(Bleeding.class); - if (b == null){ - b = new Bleeding(); - } - b.announced = false; - b.set(dmg, Sickle.HarvestBleedTracker.class); - b.attachTo(this); - sprite.showStatus(CharSprite.WARNING, Messages.titleCase(b.name()) + " " + (int)b.level()); - buff(Sickle.HarvestBleedTracker.class).detach(); - return; } for (ChampionEnemy buff : buffs(ChampionEnemy.class)){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java index a56709024..8c636a58f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java @@ -684,7 +684,7 @@ public enum Talent { if (hero.hasTalent(Talent.PROVOKED_ANGER) && hero.buff(ProvokedAngerTracker.class) != null){ - dmg += Random.IntRange(hero.pointsInTalent(Talent.PROVOKED_ANGER) , 2); + dmg += 1 + hero.pointsInTalent(Talent.PROVOKED_ANGER); hero.buff(ProvokedAngerTracker.class).detach(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java index 65d8b957e..4c0da23ef 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Flail.java @@ -81,9 +81,9 @@ public class Flail extends MeleeWeapon { }); //we detach and calculate bonus here in case the attack misses (e.g. vs. monks) spin.detach(); - //+(6+2*lvl) damage per spin, roughly +30% base damage, +45% scaling - // so +90% base dmg, +135% scaling at 3 spins - spinBoost = spin.spins * augment.damageFactor(6 + 2*buffedLvl()); + //+(8+2*lvl) damage per spin, roughly +40% base damage, +45% scaling + // so +120% base dmg, +135% scaling at 3 spins + spinBoost = spin.spins * augment.damageFactor(8 + 2*buffedLvl()); return Float.POSITIVE_INFINITY; } else { spinBoost = 0; @@ -126,7 +126,7 @@ public class Flail extends MeleeWeapon { @Override public String abilityInfo() { - int dmgBoost = levelKnown ? 6 + 2*buffedLvl() : 6; + int dmgBoost = levelKnown ? 8 + 2*buffedLvl() : 8; if (levelKnown){ return Messages.get(this, "ability_desc", augment.damageFactor(dmgBoost)); } else { 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 b594f1d19..594f0db26 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 @@ -512,10 +512,11 @@ public class MeleeWeapon extends Weapon { } public int chargeCap(){ + //caps at level 19 with 8 or 10 charges if (Dungeon.hero.subClass == HeroSubClass.CHAMPION){ - return Math.min(10, 4 + (Dungeon.hero.lvl - 1) / 4); + return Math.min(10, 4 + (Dungeon.hero.lvl - 1) / 3); } else { - return Math.min(8, 2 + (Dungeon.hero.lvl - 1) / 4); + return Math.min(8, 2 + (Dungeon.hero.lvl - 1) / 3); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java index c9afcdbc6..a76f52ed8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/RunicBlade.java @@ -74,7 +74,7 @@ public class RunicBlade extends MeleeWeapon { //we apply here because of projecting RunicSlashTracker tracker = Buff.affect(hero, RunicSlashTracker.class); - tracker.boost = 2f + 0.50f*buffedLvl(); + tracker.boost = 3f + 0.50f*buffedLvl(); hero.belongings.abilityWeapon = this; if (!hero.canAttack(enemy)){ GLog.w(Messages.get(this, "ability_target_range")); @@ -106,9 +106,9 @@ public class RunicBlade extends MeleeWeapon { @Override public String abilityInfo() { if (levelKnown){ - return Messages.get(this, "ability_desc", 200+50*buffedLvl()); + return Messages.get(this, "ability_desc", 300+50*buffedLvl()); } else { - return Messages.get(this, "typical_ability_desc", 200); + return Messages.get(this, "typical_ability_desc", 300); } } 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 f326f8ac5..78c5a1831 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 @@ -60,14 +60,14 @@ public class Sickle extends MeleeWeapon { @Override protected void duelistAbility(Hero hero, Integer target) { - //replaces damage with 12+2*lvl bleed, roughly 110% avg dmg at base, 100% avg scaling - int bleedAmt = augment.damageFactor(12 + 2*buffedLvl()); + //replaces damage with 15+2.5*lvl bleed, roughly 138% avg base dmg, 125% avg scaling + int bleedAmt = augment.damageFactor(Math.round(15f + 2.5f*buffedLvl())); Sickle.harvestAbility(hero, target, 0f, bleedAmt, this); } @Override public String abilityInfo() { - int bleedAmt = levelKnown ? 12 + 2*buffedLvl() : 12; + int bleedAmt = levelKnown ? Math.round(15f + 2.5f*buffedLvl()) : 15; if (levelKnown){ return Messages.get(this, "ability_desc", augment.damageFactor(bleedAmt)); } else { 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 868cdac28..cecf73cd9 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 @@ -50,14 +50,14 @@ public class WarScythe extends MeleeWeapon { @Override protected void duelistAbility(Hero hero, Integer target) { - //replaces damage with 22.5+3.5*lvl bleed, exactly 100% avg damage. - int bleedAmt = augment.damageFactor(Math.round(22.5f + 3.5f*buffedLvl())); + //replaces damage with 30+4.5*lvl bleed, roughly 133% avg base dmg, 129% avg scaling + int bleedAmt = augment.damageFactor(Math.round(30f + 4.5f*buffedLvl())); Sickle.harvestAbility(hero, target, 0f, bleedAmt, this); } @Override public String abilityInfo() { - int bleedAmt = levelKnown ? Math.round(22.5f + 3.5f*buffedLvl()) : 23; + int bleedAmt = levelKnown ? Math.round(30f + 4.5f*buffedLvl()) : 30; if (levelKnown){ return Messages.get(this, "ability_desc", augment.damageFactor(bleedAmt)); } else {