v3.1.0: Warrior talent changes to accommodate new seal effect:

- provoked anger now triggers when any individual shield breaks, dmg up to +3/+5
- liquid willpower now grants regular barrier equal to 6.5%/10% of max HP
- lethal defence now grants a flat 5/10/15 barrier, instead of using broken seal's buff
This commit is contained in:
Evan Debenham
2025-04-03 14:13:01 -04:00
parent e7bdda0dbe
commit 81d53f2e3a
5 changed files with 22 additions and 34 deletions

View File

@@ -903,16 +903,15 @@ 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 _2 bonus damage_.\n\n_+2:_ When the Warrior's shielding breaks, his next physical attack will deal _3 bonus damage_.
actors.hero.talent.provoked_anger.desc=_+1:_ When any shielding buff applied to the Warrior is broken by damage, his next physical attack will deal _3 bonus damage_.\n\n_+2:_ When any shielding buff applied to the Warrior is broken by damage, his next physical attack will deal _5 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.
actors.hero.talent.iron_will.desc=_+1:_ The shield provided by the Warrior's seal is _increased by 1_.\n\n_+2:_ The 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 passively grant a 1 or 2 max shield version of the Warrior's broken seal effect.
actors.hero.talent.iron_stomach.title=iron stomach
actors.hero.talent.iron_stomach.desc=_+1:_ Eating food takes the Warrior 1 turn and grants him _75% damage resistance_ while eating.\n\n_+2:_ Eating food takes the Warrior 1 turn and grants him _100% damage resistance_ while eating.
actors.hero.talent.liquid_willpower.title=liquid willpower
actors.hero.talent.liquid_willpower.desc=_+1:_ The Warrior instantly regains _50% of the shielding_ from his broken seal when drinking or throwing a potion, brew, or elixir.\n\n_+2:_ The Warrior instantly regains _75% of the shielding_ from his broken seal when drinking or throwing a potion, brew, or elixir.\n\nThe shield regeneration effect is doubled when using potions of strength, experience, or alchemy items that must be crafted using those potions.\n\nFor alchemy items with higher output quantities (e.g. aqua brew), this talent has a chance to trigger based on how many of that item is produced.
actors.hero.talent.liquid_willpower.meta_desc=_If this talent is gained by a different hero_ it will instead grant shielding equal to 5% max hp at +1, or 7.5% max hp at +2.
actors.hero.talent.liquid_willpower.desc=_+1:_ The Warrior gains _6.5% of his max HP in shielding_ when drinking or throwing a potion, brew, or elixir.\n\n_+2:_ The Warrior gains _10% of his max HP in shielding_ when drinking or throwing a potion, brew, or elixir.\n\nThe shield amount is doubled when using potions of strength, experience, or alchemy items that must be crafted using those potions.\n\nFor alchemy items with higher output quantities (e.g. aqua brew), this talent has a chance to trigger based on how many of that item is produced.
actors.hero.talent.runic_transference.title=runic transference
actors.hero.talent.runic_transference.desc=_+1:_ The Warrior's broken seal can transfer _regular glyphs_ in the same way it transfers an upgrade.\n\n_+2:_ The Warrior's broken seal can transfer _regular, powerful, and curse glyphs_ in the same way it transfers an upgrade.\n\nThe seal can only transfer glyphs if they were applied to the armor when the seal was attached.
actors.hero.talent.runic_transference.meta_desc=_If this talent is gained by a different hero_ it will instead help glyphs on your armor resist being removed by scrolls of upgrade. Glyphs will begin to be lost when upgrading from level 6(up from 4) at +1, or level 7(up from 4) at +2. The level where glyphs are guaranteed to be lost is unchanged at +8.
@@ -936,7 +935,7 @@ actors.hero.talent.enraged_catalyst.desc=_+1:_ Enchantments and curses on the Be
actors.hero.talent.cleave.title=cleave
actors.hero.talent.cleave.desc=_+1:_ When the Gladiator kills an enemy, the combo cooldown for his next hit is increased to _15 turns_.\n\n_+2:_ When the Gladiator kills an enemy, the combo cooldown for his next hit is increased to _30 turns_.\n\n_+3:_ When the Gladiator kills an enemy, the combo cooldown for his next hit is increased to _45 turns_.
actors.hero.talent.lethal_defense.title=lethal defense
actors.hero.talent.lethal_defense.desc=_+1:_ When the Gladiator kills an enemy with a combo move, he _regains 33%_ of the broken seal's shielding.\n\n_+2:_ When the Gladiator kills an enemy with a combo move, he _regains 67%_ of the broken seal's shielding.\n\n_+3:_ When the Gladiator kills an enemy with a combo move, he _regains 100%_ of the broken seal's shielding.
actors.hero.talent.lethal_defense.desc=_+1:_ When the Gladiator kills an enemy with a combo move, he gains _7 shielding_.\n\n_+2:_ When the Gladiator kills an enemy with a combo move, he gains _13 shielding_.\n\n_+3:_ When the Gladiator kills an enemy with a combo move, he gains _20 shielding_.
actors.hero.talent.enhanced_combo.title=enhanced combo
actors.hero.talent.enhanced_combo.desc=_+1:_ When the Gladiator's combo is 7 or higher, Clobber's knockback range increases to 3, it inflicts vertigo, and it can knock enemies into pits.\n\n_+2:_ In addition to the benefits of +1, when the Gladiator's combo is 9 or higher Parry works on multiple attacks.\n\n_+3:_ In addition to the benefits of +1 and +2, the Gladiator can leap up to combo/3 tiles when using Slam, Crush, or Fury.

View File

@@ -920,12 +920,6 @@ public abstract class Char extends Actor {
shielded -= dmg;
HP -= dmg;
if (HP > 0 && shielded > 0 && shielding() == 0){
if (this instanceof Hero && ((Hero) this).hasTalent(Talent.PROVOKED_ANGER)){
Buff.affect(this, Talent.ProvokedAngerTracker.class, 5f);
}
}
if (HP > 0 && buff(Grim.GrimTracker.class) != null){
float finalChance = buff(Grim.GrimTracker.class).maxChance;

View File

@@ -411,13 +411,10 @@ public class Combo extends Buff implements ActionIndicator.Action {
ch.sprite.bloodBurstA(target.sprite.center(), aoeHit);
ch.sprite.flash();
if (!ch.isAlive()) {
if (hero.hasTalent(Talent.LETHAL_DEFENSE) && hero.buff(BrokenSeal.WarriorShield.class) != null) {
BrokenSeal.WarriorShield shield = hero.buff(BrokenSeal.WarriorShield.class);
int shieldAmt = Math.round(shield.maxShield() * hero.pointsInTalent(Talent.LETHAL_DEFENSE) / 3f);
shield.supercharge(shieldAmt);
hero.sprite.showStatusWithIcon(CharSprite.POSITIVE, Integer.toString(shieldAmt), FloatingText.SHIELDING);
}
if (!ch.isAlive() && hero.hasTalent(Talent.LETHAL_DEFENSE)) {
int shieldToGive = Math.round(6.67f*hero.pointsInTalent(Talent.LETHAL_DEFENSE));
hero.sprite.showStatusWithIcon(CharSprite.POSITIVE, Integer.toString(shieldToGive), FloatingText.SHIELDING);
Buff.affect(hero, Barrier.class).setShield(shieldToGive);
}
}
}

View File

@@ -22,6 +22,8 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
import com.watabou.utils.Bundle;
import java.util.ArrayList;
@@ -120,7 +122,13 @@ public abstract class ShieldBuff extends Buff {
}
});
for (ShieldBuff buff : buffs){
if (buff.shielding() <= 0) continue;
damage = buff.absorbDamage(damage);
if (buff.shielding() <= 0){
if (target instanceof Hero && ((Hero) target).hasTalent(Talent.PROVOKED_ANGER)){
Buff.affect(target, Talent.ProvokedAngerTracker.class, 5f);
}
}
if (damage == 0) break;
}
}

View File

@@ -692,20 +692,10 @@ public enum Talent {
public static void onPotionUsed( Hero hero, int cell, float factor ){
if (hero.hasTalent(LIQUID_WILLPOWER)){
if (hero.heroClass == HeroClass.WARRIOR) {
BrokenSeal.WarriorShield shield = hero.buff(BrokenSeal.WarriorShield.class);
if (shield != null) {
// 50/75% of total shield
int shieldToGive = Math.round(factor * shield.maxShield() * 0.25f * (1 + hero.pointsInTalent(LIQUID_WILLPOWER)));
hero.sprite.showStatusWithIcon(CharSprite.POSITIVE, Integer.toString(shieldToGive), FloatingText.SHIELDING);
shield.supercharge(shieldToGive);
}
} else {
// 5/7.5% of max HP
int shieldToGive = Math.round( factor * hero.HT * (0.025f * (1+hero.pointsInTalent(LIQUID_WILLPOWER))));
hero.sprite.showStatusWithIcon(CharSprite.POSITIVE, Integer.toString(shieldToGive), FloatingText.SHIELDING);
Buff.affect(hero, Barrier.class).setShield(shieldToGive);
}
// 6.5/10% of max HP
int shieldToGive = Math.round( factor * hero.HT * (0.030f + 0.035f*hero.pointsInTalent(LIQUID_WILLPOWER)));
hero.sprite.showStatusWithIcon(CharSprite.POSITIVE, Integer.toString(shieldToGive), FloatingText.SHIELDING);
Buff.affect(hero, Barrier.class).setShield(shieldToGive);
}
if (hero.hasTalent(LIQUID_NATURE)){
ArrayList<Integer> grassCells = new ArrayList<>();
@@ -850,7 +840,7 @@ public enum Talent {
if (hero.hasTalent(Talent.PROVOKED_ANGER)
&& hero.buff(ProvokedAngerTracker.class) != null){
dmg += 1 + hero.pointsInTalent(Talent.PROVOKED_ANGER);
dmg += 1 + 2*hero.pointsInTalent(Talent.PROVOKED_ANGER);
hero.buff(ProvokedAngerTracker.class).detach();
}