v2.0.0: added a final T1 talent for the Duelist

This commit is contained in:
Evan Debenham
2022-12-30 19:32:06 -05:00
parent d90a23c8ab
commit 0f69858355
5 changed files with 22 additions and 5 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@@ -808,8 +808,8 @@ actors.hero.talent.strengthening_meal.title=strengthening meal
actors.hero.talent.strengthening_meal.desc=_+1:_ Eating food grants the Duelist 2 bonus damage on her next _2 physical attacks_.\n\n_+2:_ Eating food grants the Duelist 2 bonus damage on her next _3 physical attacks_.
actors.hero.talent.adventurers_intuition.title=adventurer's intuition
actors.hero.talent.adventurers_intuition.desc=_+1:_ The Duelist identifies weapons _2.5x faster_ and armor _1.75x faster_.\n\n_+2:_ The Duelist identifies weapons _when she equips them_ and armor _2.5x faster_.
actors.hero.talent.aaa.title=aaa
actors.hero.talent.aaa.desc=
actors.hero.talent.patient_strike.title=patient strike
actors.hero.talent.patient_strike.desc=If the Duelist waits before performing a melee attack, she will deal _1-2 bonus damage_.\n\nIf the Duelist waits before performing a melee attack, she will deal _2 bonus damage_.
actors.hero.talent.aggressive_barrier.title=aggressive barrier
actors.hero.talent.aggressive_barrier.desc=_+1:_ The Duelist gain 2 shielding when she uses a weapon ability and is below _33% health_.\n\n_+2:_ The Duelist gain 2 shielding when she uses a weapon ability and is below _50% health_.
actors.hero.talent.aggressive_barrier.meta_desc=_If this talent is gained by a different hero_ it will instead grant shielding when making a melee attack at low health, with a 50 turn cooldown.

View File

@@ -1221,6 +1221,9 @@ public class Hero extends Char {
if (hasTalent(Talent.HOLD_FAST)){
Buff.affect(this, HoldFast.class).pos = pos;
}
if (hasTalent(Talent.PATIENT_STRIKE)){
Buff.prolong(this, Talent.PatientStrikeTracker.class, cooldown());
}
if (!fullRest) {
if (sprite != null) {
sprite.showStatus(CharSprite.DEFAULT, Messages.get(this, "wait"));

View File

@@ -148,7 +148,7 @@ public enum Talent {
EAGLE_EYE(119, 4), GO_FOR_THE_EYES(120, 4), SWIFT_SPIRIT(121, 4),
//Duelist T1
STRENGTHENING_MEAL(128), ADVENTURERS_INTUITION(129), DUELIST_T1_3(130), AGGRESSIVE_BARRIER(131),
STRENGTHENING_MEAL(128), ADVENTURERS_INTUITION(129), PATIENT_STRIKE(130), AGGRESSIVE_BARRIER(131),
//Duelist T2
FOCUSED_MEAL(132), RESTORED_AGILITY(133), WEAPON_RECHARGING(134), LETHAL_HASTE(135), SWIFT_EQUIP(136),
//Duelist T3
@@ -228,6 +228,7 @@ public enum Talent {
public float iconFadePercent() { return Math.max(0, visualcooldown() / 20); }
};
public static class SpiritBladesTracker extends FlavourBuff{};
public static class PatientStrikeTracker extends FlavourBuff{};
public static class AggressiveBarrierCooldown extends FlavourBuff{
public int icon() { return BuffIndicator.TIME; }
public void tintIcon(Image icon) { icon.hardlight(0.35f, 0f, 0.7f); }
@@ -613,6 +614,16 @@ public enum Talent {
hero.buff(Talent.SpiritBladesTracker.class).detach();
}
if (hero.hasTalent(PATIENT_STRIKE)){
if (hero.buff(PatientStrikeTracker.class) != null){
hero.buff(PatientStrikeTracker.class).detach();
dmg += Random.IntRange(hero.pointsInTalent(Talent.PATIENT_STRIKE), 2);
if (!(enemy instanceof Mob) || !((Mob) enemy).surprisedBy(hero)){
Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG, 0.75f, 1.2f);
}
}
}
if (hero.hasTalent(DEADLY_FOLLOWUP)) {
if (hero.belongings.weapon() instanceof MissileWeapon) {
Buff.prolong(enemy, DeadlyFollowupTracker.class, 5f);
@@ -662,7 +673,7 @@ public enum Talent {
Collections.addAll(tierTalents, NATURES_BOUNTY, SURVIVALISTS_INTUITION, FOLLOWUP_STRIKE, NATURES_AID);
break;
case DUELIST:
Collections.addAll(tierTalents, STRENGTHENING_MEAL, ADVENTURERS_INTUITION, DUELIST_T1_3, AGGRESSIVE_BARRIER);
Collections.addAll(tierTalents, STRENGTHENING_MEAL, ADVENTURERS_INTUITION, PATIENT_STRIKE, AGGRESSIVE_BARRIER);
break;
}
for (Talent talent : tierTalents){

View File

@@ -254,10 +254,13 @@ public class Toolbar extends Component {
Dungeon.hero.waitOrPickup = true;
if ((Dungeon.level.heaps.get(Dungeon.hero.pos) != null || Dungeon.hero.canSelfTrample())
&& Dungeon.hero.handle(Dungeon.hero.pos)){
//trigger hold fast here, even if the hero didn't specifically wait
//trigger hold fast and patient strike here, even if the hero didn't specifically wait
if (Dungeon.hero.hasTalent(Talent.HOLD_FAST)){
Buff.affect(Dungeon.hero, HoldFast.class).pos = Dungeon.hero.pos;
}
if (Dungeon.hero.hasTalent(Talent.PATIENT_STRIKE)){
Buff.prolong(Dungeon.hero, Talent.PatientStrikeTracker.class, Dungeon.hero.cooldown());
}
Dungeon.hero.next();
} else {
examining = false;