v3.1.0: wand and artifact charge from separate talents can now stack

This commit is contained in:
Evan Debenham
2025-04-27 17:31:35 -04:00
parent a9b134dc79
commit d7ed1d96db
2 changed files with 23 additions and 18 deletions

View File

@@ -1230,7 +1230,7 @@ actors.hero.talent.shield_of_light.meta_desc=_If this talent is gained by a diff
actors.hero.talent.enlightening_meal.title=Enlightening Meal
actors.hero.talent.enlightening_meal.desc=_+1:_ Eating food takes the Cleric 1 turn and grants them _1 charge_ on their holy tome.\n\n_+2:_ Eating food takes the Cleric 1 turn and grants them _1.5 charges_ on their holy tome.
actors.hero.talent.enlightening_meal.meta_desc=_If this talent is gained by a different hero_ it will instead grant 2 turns of wand and artifact recharging at +1, or 3 turns at +2.
actors.hero.talent.enlightening_meal.meta_desc=_If this talent is gained by a different hero_ it will instead grant 2 turns of wand and artifact recharging at +1, or 3 turns at +2. This cannot be used to let the horn of plenty recharge itself.
actors.hero.talent.recall_inscription.title=Recall Inscription
actors.hero.talent.recall_inscription.refunded=Your item was refunded!
actors.hero.talent.recall_inscription.desc=_+1:_ The Cleric can cast _Recall Inscription,_ a spell that lets them repeat the effect of the last runestone or scroll they used within _10 turns._\n\n_+2:_ The Cleric can cast _Recall Inscription,_ a spell that lets them repeat the effect of the last runestone or scroll they used within _300 turns._\n\nRecall Inscription cannot be used with scrolls of upgrade. This spell's charge cost varies based on which item was used recently: 2 for a runestone, 3 for a scroll, 4 for an exotic scroll. This charge cost is also doubled when used with a scroll of transmutation, or alchemy items that must be crafted using transmutation or upgrade.

View File

@@ -596,20 +596,15 @@ public enum Talent {
Buff.affect( hero, WandEmpower.class).set(1 + hero.pointsInTalent(EMPOWERING_MEAL), 3);
ScrollOfRecharging.charge( hero );
}
int wandChargeTurns = 0;
if (hero.hasTalent(ENERGIZING_MEAL)){
//5/8 turns of recharging
Buff.prolong( hero, Recharging.class, 2 + 3*(hero.pointsInTalent(ENERGIZING_MEAL)) );
ScrollOfRecharging.charge( hero );
SpellSprite.show(hero, SpellSprite.CHARGE);
wandChargeTurns += 2 + 3*hero.pointsInTalent(ENERGIZING_MEAL);
}
int artifactChargeTurns = 0;
if (hero.hasTalent(MYSTICAL_MEAL)){
//3/5 turns of recharging
ArtifactRecharge buff = Buff.affect( hero, ArtifactRecharge.class);
if (buff.left() < 1 + 2*(hero.pointsInTalent(MYSTICAL_MEAL))){
Buff.affect( hero, ArtifactRecharge.class).set(1 + 2*(hero.pointsInTalent(MYSTICAL_MEAL))).ignoreHornOfPlenty = foodSource instanceof HornOfPlenty;
}
ScrollOfRecharging.charge( hero );
SpellSprite.show(hero, SpellSprite.CHARGE, 0, 1, 1);
artifactChargeTurns += 1 + 2*hero.pointsInTalent(MYSTICAL_MEAL);
}
if (hero.hasTalent(INVIGORATING_MEAL)){
//effectively 1/2 turns of haste
@@ -650,16 +645,26 @@ public enum Talent {
ScrollOfRecharging.charge(hero);
}
} else {
//2/3 turns of recharging
ArtifactRecharge buff = Buff.affect( hero, ArtifactRecharge.class);
if (buff.left() < 1 + (hero.pointsInTalent(ENLIGHTENING_MEAL))){
Buff.affect( hero, ArtifactRecharge.class).set(1 + (hero.pointsInTalent(ENLIGHTENING_MEAL))).ignoreHornOfPlenty = foodSource instanceof HornOfPlenty;
}
Buff.prolong( hero, Recharging.class, 1 + (hero.pointsInTalent(ENLIGHTENING_MEAL)) );
ScrollOfRecharging.charge( hero );
SpellSprite.show(hero, SpellSprite.CHARGE);
//2/3 turns of recharging, both kinds
wandChargeTurns += 1 + hero.pointsInTalent(ENLIGHTENING_MEAL);
artifactChargeTurns += 1 + hero.pointsInTalent(ENLIGHTENING_MEAL);
}
}
//we process these at the end as they can stack together from some talents
if (wandChargeTurns > 0){
Buff.prolong( hero, Recharging.class, wandChargeTurns );
ScrollOfRecharging.charge( hero );
SpellSprite.show(hero, SpellSprite.CHARGE);
}
if (artifactChargeTurns > 0){
ArtifactRecharge buff = Buff.affect( hero, ArtifactRecharge.class);
if (buff.left() < artifactChargeTurns){
buff.set(artifactChargeTurns).ignoreHornOfPlenty = foodSource instanceof HornOfPlenty;
}
ScrollOfRecharging.charge( hero );
SpellSprite.show(hero, SpellSprite.CHARGE, 0, 1, 1);
}
}
public static class WarriorFoodImmunity extends FlavourBuff{