v2.4.0: replaced the two T1 on-id talents with damage boost talents

This commit is contained in:
Evan Debenham
2024-03-28 14:10:20 -04:00
parent 5576a7777f
commit bfee2fb98d
5 changed files with 54 additions and 21 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@@ -591,6 +591,10 @@ actors.hero.herosubclass.monk_short_desc=The _Monk_ builds energy while fighting
actors.hero.herosubclass.monk_desc=The Monk is a master of physical technique. As she defeats enemies, she gains energy which can be used on a variety of defensive and utility-focused abilities. This energy does not fade over time, but has a cap based on the Monk's level.
##talents
actors.hero.talent$provokedangertracker.name=provoked anger
actors.hero.talent$provokedangertracker.desc=The Warrior has recently lost his shielding, his next physical attack will deal bonus damage.\n\nTurns remaining: %s.
actors.hero.talent$lingeringmagictracker.name=lingering magic
actors.hero.talent$lingeringmagictracker.desc=The Mage has recently used a staff or wand, his next physical attack will deal bonus damage.\n\nTurns remaining: %s.
actors.hero.talent$followupstriketracker.name=followup strike
actors.hero.talent$followupstriketracker.desc=The Huntress has recently attacked an enemy with a thrown weapon, her next melee attack against the same target will have boosted damage.\n\nTurns remaining: %s.
actors.hero.talent$patientstriketracker.name=patient strike
@@ -620,8 +624,8 @@ actors.hero.talent.hearty_meal.title=hearty meal
actors.hero.talent.hearty_meal.desc=_+1:_ Eating food heals the Warrior for _3 HP_ when he is at or below 30% health.\n\n_+2:_ Eating food heals the Warrior for _5 HP_ when is at or below 30% health.
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.test_subject.title=test subject
actors.hero.talent.test_subject.desc=_+1:_ Whenever the Warrior identifies an item, he heals for _2 HP_.\n\n_+2:_ Whenever the Warrior identifies an item, he heals for _3 HP_.
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.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.
@@ -684,8 +688,8 @@ actors.hero.talent.empowering_meal.title=empowering meal
actors.hero.talent.empowering_meal.desc=_+1:_ Eating food grants the Mage _2 bonus damage_ on his next 3 wand zaps.\n\n_+2:_ Eating food grants the Mage _3 bonus damage_ on his next 3 wand zaps.
actors.hero.talent.scholars_intuition.title=scholar's intuition
actors.hero.talent.scholars_intuition.desc=_+1:_ The Mage identifies wands _3x faster_.\n\n_+2:_ The Mage identifies wands _when he uses them_.
actors.hero.talent.tested_hypothesis.title=tested hypothesis
actors.hero.talent.tested_hypothesis.desc=_+1:_ Whenever the Mage identifies an item, he gains _2 turns of wand recharging_.\n\n_+2:_ Whenever the Mage identifies an item, he gains _3 turns of wand recharging_.
actors.hero.talent.lingering_magic.title=lingering magic
actors.hero.talent.lingering_magic.desc=_+1:_ When the Mage zaps with a wand or staff, his next physical attack deals _1-2 bonus damage_.\n\n_+2:_ When the Mage zaps with a wand or staff, his next physical attack deals _2 bonus damage_.
actors.hero.talent.backup_barrier.title=backup barrier
actors.hero.talent.backup_barrier.desc=_+1:_ The Mage gains _3 shielding_ whenever he spends the last charge in his staff.\n\n_+2:_ The Mage gains _5 shielding_ whenever he spends the last charge in his staff.
actors.hero.talent.backup_barrier.meta_desc=_If this talent is gained by a different hero_ it will instead trigger from the hero's highest level wand.

View File

@@ -773,6 +773,12 @@ 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

@@ -85,7 +85,7 @@ import java.util.LinkedHashMap;
public enum Talent {
//Warrior T1
HEARTY_MEAL(0), VETERANS_INTUITION(1), TEST_SUBJECT(2), IRON_WILL(3),
HEARTY_MEAL(0), VETERANS_INTUITION(1), PROVOKED_ANGER(2), IRON_WILL(3),
//Warrior T2
IRON_STOMACH(4), LIQUID_WILLPOWER(5), RUNIC_TRANSFERENCE(6), LETHAL_MOMENTUM(7), IMPROVISED_PROJECTILES(8),
//Warrior T3
@@ -102,7 +102,7 @@ public enum Talent {
SUSTAINED_RETRIBUTION(23, 4), SHRUG_IT_OFF(24, 4), EVEN_THE_ODDS(25, 4),
//Mage T1
EMPOWERING_MEAL(32), SCHOLARS_INTUITION(33), TESTED_HYPOTHESIS(34), BACKUP_BARRIER(35),
EMPOWERING_MEAL(32), SCHOLARS_INTUITION(33), LINGERING_MAGIC(34), BACKUP_BARRIER(35),
//Mage T2
ENERGIZING_MEAL(36), INSCRIBED_POWER(37), WAND_PRESERVATION(38), ARCANE_VISION(39), SHIELD_BATTERY(40),
//Mage T3
@@ -658,21 +658,23 @@ public enum Talent {
//note that IDing can happen in alchemy scene, so be careful with VFX here
public static void onItemIdentified( Hero hero, Item item ){
if (hero.hasTalent(TEST_SUBJECT)){
//heal for 2/3 HP
hero.HP = Math.min(hero.HP + 1 + hero.pointsInTalent(TEST_SUBJECT), hero.HT);
if (hero.sprite != null) {
hero.sprite.showStatusWithIcon(CharSprite.POSITIVE, Integer.toString(1 + hero.pointsInTalent(TEST_SUBJECT)), FloatingText.HEALING);
}
}
if (hero.hasTalent(TESTED_HYPOTHESIS)){
//2/3 turns of wand recharging
Buff.affect(hero, Recharging.class, 1f + hero.pointsInTalent(TESTED_HYPOTHESIS));
ScrollOfRecharging.charge(hero);
}
//currently no talents that trigger here, it wasn't a very popular trigger =(
}
public static int onAttackProc( Hero hero, Char enemy, int dmg ){
if (hero.hasTalent(Talent.PROVOKED_ANGER)
&& hero.buff(ProvokedAngerTracker.class) != null){
dmg += Random.IntRange(hero.pointsInTalent(Talent.PROVOKED_ANGER) , 2);
hero.buff(ProvokedAngerTracker.class).detach();
}
if (hero.hasTalent(Talent.LINGERING_MAGIC)
&& hero.buff(LingeringMagicTracker.class) != null){
dmg += Random.IntRange(hero.pointsInTalent(Talent.LINGERING_MAGIC) , 2);
hero.buff(LingeringMagicTracker.class).detach();
}
if (hero.hasTalent(Talent.SUCKER_PUNCH)
&& enemy instanceof Mob && ((Mob) enemy).surprisedBy(hero)
&& enemy.buff(SuckerPunchTracker.class) == null){
@@ -719,6 +721,18 @@ public enum Talent {
return dmg;
}
public static class ProvokedAngerTracker extends FlavourBuff{
{ type = Buff.buffType.POSITIVE; }
public int icon() { return BuffIndicator.WEAPON; }
public void tintIcon(Image icon) { icon.hardlight(1.43f, 1.43f, 1.43f); }
public float iconFadePercent() { return Math.max(0, 1f - (visualcooldown() / 5)); }
}
public static class LingeringMagicTracker extends FlavourBuff{
{ type = Buff.buffType.POSITIVE; }
public int icon() { return BuffIndicator.WEAPON; }
public void tintIcon(Image icon) { icon.hardlight(1.43f, 1.43f, 0f); }
public float iconFadePercent() { return Math.max(0, 1f - (visualcooldown() / 5)); }
}
public static class SuckerPunchTracker extends Buff{};
public static class FollowupStrikeTracker extends FlavourBuff{
public int object;
@@ -759,10 +773,10 @@ public enum Talent {
//tier 1
switch (cls){
case WARRIOR: default:
Collections.addAll(tierTalents, HEARTY_MEAL, VETERANS_INTUITION, TEST_SUBJECT, IRON_WILL);
Collections.addAll(tierTalents, HEARTY_MEAL, VETERANS_INTUITION, PROVOKED_ANGER, IRON_WILL);
break;
case MAGE:
Collections.addAll(tierTalents, EMPOWERING_MEAL, SCHOLARS_INTUITION, TESTED_HYPOTHESIS, BACKUP_BARRIER);
Collections.addAll(tierTalents, EMPOWERING_MEAL, SCHOLARS_INTUITION, LINGERING_MAGIC, BACKUP_BARRIER);
break;
case ROGUE:
Collections.addAll(tierTalents, CACHED_RATIONS, THIEFS_INTUITION, SUCKER_PUNCH, PROTECTIVE_SHADOWS);
@@ -934,6 +948,9 @@ public enum Talent {
private static final HashSet<String> removedTalents = new HashSet<>();
static{
//v2.4.0
removedTalents.add("TEST_SUBJECT");
removedTalents.add("TESTED_HYPOTHESIS");
//v2.2.0
removedTalents.add("EMPOWERING_SCROLLS");
}

View File

@@ -445,8 +445,14 @@ public abstract class Wand extends Item {
&& !Dungeon.hero.belongings.contains(this)){
Buff.prolong(Dungeon.hero, Talent.EmpoweredStrikeTracker.class, 10f);
}
if (Dungeon.hero.hasTalent(Talent.LINGERING_MAGIC)
&& charger != null && charger.target == Dungeon.hero){
Buff.affect(Dungeon.hero, Talent.LingeringMagicTracker.class, 5f);
}
Invisibility.dispel();
updateQuickslot();