diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 5aec8d298..5992cdf16 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -567,7 +567,7 @@ actors.hero.spells.divinesense$divinesensetracker.desc=The Cleric is temporarily actors.hero.spells.divineintervention.name=divine intervention actors.hero.spells.divineintervention.short_desc=Massive shield boost to Cleric and allies. -actors.hero.spells.divineintervention.desc=The Cleric pours a tremendous amount of power from their tome into themselves and allies, boosting everyone to %d shielding. This spell's incredible defensive power is weighed against its very high charge cost.\n\nJust like other shielding granted by ascended form, this shielding does not decay normally, but will immediately expire when ascended form ends. +actors.hero.spells.divineintervention.desc=The Cleric pours a tremendous amount of power from their tome into themselves and allies, boosting everyone to %1$d shielding and extending Ascended Form by %2$d turns. This spell's incredible defensive power is weighed against its very high charge cost.\n\nJust like other shielding granted by ascended form, this shielding does not decay normally, but will immediately expire when ascended form ends. actors.hero.spells.flash.name=flash actors.hero.spells.flash.prompt=Choose a location @@ -1121,7 +1121,7 @@ actors.hero.talent.paladint3c.title=Unknown actors.hero.talent.paladint3c.desc=This talent hasn't been implemented yet, it currently does nothing. actors.hero.talent.divine_intervention.title=divine intervention -actors.hero.talent.divine_intervention.desc=_+1:_ While in Ascended Form, the Cleric can cast _Divine Intervention,_ which boosts the Cleric and all allies up to _200 shielding._\n\n_+2:_ While in Ascended Form, the Cleric can cast _Divine Intervention,_ which boosts the Cleric and all allies up to _250 shielding._\n\n_+3:_ While in Ascended Form, the Cleric can cast _Divine Intervention,_ which boosts the Cleric and all allies up to _300 shielding._\n\n_+4:_ While in Ascended Form, the Cleric can cast _Divine Intervention,_ which boosts the Cleric and all allies up to _350 shielding._\n\nDivine Intervention costs a whopping 6 tome charges, and can only be cast once in the same ascended form. +actors.hero.talent.divine_intervention.desc=_+1:_ While in Ascended Form, the Cleric can cast _Divine Intervention,_ which boosts the Cleric and all allies up to _150 shielding_ and extends Ascended Form by _1 turn._\n\n_+2:_ While in Ascended Form, the Cleric can cast _Divine Intervention,_ which boosts the Cleric and all allies up to _200 shielding_ and extends Ascended Form by _2 turns._\n\n_+3:_ While in Ascended Form, the Cleric can cast _Divine Intervention,_ which boosts the Cleric and all allies up to _250 shielding_ and extends Ascended Form by _3 turns._\n\n_+4:_ While in Ascended Form, the Cleric can cast _Divine Intervention,_ which boosts the Cleric and all allies up to _300 shielding_ and extends Ascended Form by _4 turns._\n\nDivine Intervention costs a whopping 5 tome charges, and can only be cast once in the same ascended form. actors.hero.talent.judgement.title=judgement actors.hero.talent.judgement.desc=_+1:_ While in Ascended Form, the Cleric can cast _Judgement,_ which deals _10-20 damage_ to all visible enemies.\n\n_+2:_ While in Ascended Form, the Cleric can cast _Judgement,_ which deals _15-30 damage_ to all visible enemies.\n\n_+3:_ While in Ascended Form, the Cleric can cast _Judgement,_ which deals _20-40 damage_ to all visible enemies.\n\n_+4:_ While in Ascended Form, the Cleric can cast _Judgement,_ which deals _25-50 damage_ to all visible enemies.\n\nJudgement costs 3 tome charges. Judgement deals an additional 5-10 damage for every spell the Cleric has cast since entering ascended form or since the last cast of Judgement. actors.hero.talent.flash.title=flash diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/cleric/AscendedForm.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/cleric/AscendedForm.java index d159a6c03..e867da183 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/cleric/AscendedForm.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/cleric/AscendedForm.java @@ -103,12 +103,17 @@ public class AscendedForm extends ArmorAbility { public int left = 10; public int spellCasts = 0; public int flashCasts = 0; + public boolean divineInverventionCast = false; public void reset(){ setShield(30); left = (int)DURATION; } + public void extend( int amt ){ + left += amt; + } + @Override //logic edited slightly as buff should not detach public int absorbDamage(int dmg) { @@ -149,6 +154,7 @@ public class AscendedForm extends ArmorAbility { public static final String LEFT = "left"; public static final String SPELL_CASTS = "spell_casts"; public static final String FLASH_CASTS = "flash_casts"; + public static final String DIVINE_INTERVENTION_CAST = "divine_intervention_cast"; @Override public void storeInBundle(Bundle bundle) { @@ -156,6 +162,7 @@ public class AscendedForm extends ArmorAbility { bundle.put(LEFT, left); bundle.put(SPELL_CASTS, spellCasts); bundle.put(FLASH_CASTS, flashCasts); + bundle.put(DIVINE_INTERVENTION_CAST, divineInverventionCast); } @Override @@ -164,6 +171,7 @@ public class AscendedForm extends ArmorAbility { left = bundle.getInt(LEFT); spellCasts = bundle.getInt(SPELL_CASTS); flashCasts = bundle.getInt(FLASH_CASTS); + divineInverventionCast = bundle.getBoolean(DIVINE_INTERVENTION_CAST); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/DivineIntervention.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/DivineIntervention.java index a4f934c9f..07533485f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/DivineIntervention.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/DivineIntervention.java @@ -48,12 +48,14 @@ public class DivineIntervention extends ClericSpell { @Override public float chargeUse(Hero hero) { - return 6; + return 5; } @Override public boolean canCast(Hero hero) { - return super.canCast(hero) && hero.buff(AscendedForm.AscendBuff.class) != null; + return super.canCast(hero) + && hero.buff(AscendedForm.AscendBuff.class) != null + && !hero.buff(AscendedForm.AscendBuff.class).divineInverventionCast; } @Override @@ -64,7 +66,7 @@ public class DivineIntervention extends ClericSpell { for (Char ch : Actor.chars()){ if (ch.alignment == Char.Alignment.ALLY && ch != hero){ - Buff.affect(ch, DivineShield.class).setShield(150 + 50*hero.pointsInTalent(Talent.DIVINE_INTERVENTION)); + Buff.affect(ch, DivineShield.class).setShield(100 + 50*hero.pointsInTalent(Talent.DIVINE_INTERVENTION)); new Flare(6, 32).color(0xFFFF00, true).show(ch.sprite, 2f); } } @@ -72,16 +74,20 @@ public class DivineIntervention extends ClericSpell { hero.spendAndNext( 1f ); onSpellCast(tome, hero); - //we apply buffs here so that the 6 charge cost and shield boost do not stack - hero.buff(AscendedForm.AscendBuff.class).setShield(150 + 50*hero.pointsInTalent(Talent.DIVINE_INTERVENTION)); + //we apply buffs here so that the 5 charge cost and shield boost do not stack + hero.buff(AscendedForm.AscendBuff.class).setShield(100 + 50*hero.pointsInTalent(Talent.DIVINE_INTERVENTION)); new Flare(6, 32).color(0xFFFF00, true).show(hero.sprite, 2f); + hero.buff(AscendedForm.AscendBuff.class).divineInverventionCast = true; + hero.buff(AscendedForm.AscendBuff.class).extend(hero.pointsInTalent(Talent.DIVINE_INTERVENTION)); + } @Override public String desc() { - int shield = 150 + 50*Dungeon.hero.pointsInTalent(Talent.DIVINE_INTERVENTION); - return Messages.get(this, "desc", shield) + "\n\n" + Messages.get(this, "charge_cost", (int)chargeUse(Dungeon.hero)); + int shield = 100 + 50*Dungeon.hero.pointsInTalent(Talent.DIVINE_INTERVENTION); + int leftBonus = Dungeon.hero.pointsInTalent(Talent.DIVINE_INTERVENTION); + return Messages.get(this, "desc", shield, leftBonus) + "\n\n" + Messages.get(this, "charge_cost", (int)chargeUse(Dungeon.hero)); } public static class DivineShield extends ShieldBuff{