From 1331d5138921b52f899dc1877184e56b495ad211 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 8 May 2025 13:08:28 -0400 Subject: [PATCH] v3.1.0: balance changes to Priest subclass --- .../assets/messages/actors/actors.properties | 20 +++++++++---------- .../shatteredpixeldungeon/actors/Char.java | 2 +- .../actors/hero/spells/HallowedGround.java | 13 ++++++------ .../actors/hero/spells/HolyLance.java | 6 +++--- .../actors/hero/spells/MnemonicPrayer.java | 4 +--- .../actors/hero/spells/Radiance.java | 9 +++++++-- .../items/artifacts/Artifact.java | 2 +- .../items/wands/Wand.java | 2 +- 8 files changed, 31 insertions(+), 27 deletions(-) diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index a85d4d9fe..c7c040ded 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -665,18 +665,18 @@ actors.hero.spells.flash.desc=The Cleric channels their ascended form at a nearb actors.hero.spells.guidinglight.name=guiding light actors.hero.spells.guidinglight.short_desc=Deals ranged magic damage and guarantees a hit. actors.hero.spells.guidinglight.desc=The Cleric fires a bolt of magical energy which strikes a target, dealing 2-8 damage and illuminating them. The next non-encumbered physical attack made against an illuminated enemy is guaranteed to hit them. -actors.hero.spells.guidinglight.desc_priest=_This spell is more powerful when cast by the Priest._ The first cast of the spell every 100 turns costs no tome charges, and illumination will be consumed by wands, other characters, and artifacts that directly affect enemies. When illuminated is used in this way, it deals bonus magic damage equal to the Priest's level + 5. +actors.hero.spells.guidinglight.desc_priest=_This spell is more powerful when cast by the Priest._ The first cast of the spell every 100 turns costs no tome charges, and illumination will be consumed by radiance, wands, other characters, and artifacts that directly affect enemies. When illuminated is used in this way, it deals bonus magic damage equal to the Priest's level + 5. actors.hero.spells.guidinglight$guidinglightpriestcooldown.name=Guiding Light actors.hero.spells.guidinglight$guidinglightpriestcooldown.desc=The Priest will be able to cast Guiding Light for free again after 100 turns elapse.\n\nTurns remaining: %s. actors.hero.spells.guidinglight$illuminated.name=Illuminated actors.hero.spells.guidinglight$illuminated.desc=This character is glowing as a result of being struck by guiding light. While the glow isn't strong enough to brighten the surrounding area, the magical effect will make landing blows on them much easier for the Cleric. -actors.hero.spells.guidinglight$illuminated.desc_priest=The Priest can additionally consume illuminated with a wand zap, strike from an ally, or effects from some artifacts. Using illuminated in this way will deal bonus magic damage equal to the Priest's level + 5. +actors.hero.spells.guidinglight$illuminated.desc_priest=The Priest can additionally consume illuminated with radiance, a wand zap, strike from an ally, or effects from some artifacts. Using illuminated in this way will deal bonus magic damage equal to the Priest's level + 5. actors.hero.spells.guidinglight$illuminated.desc_generic=Other heroes can still use illuminated to benefit from the searing light talent, but will not gain any accuracy. actors.hero.spells.hallowedground.name=hallowed ground actors.hero.spells.hallowedground.prompt=Choose a location actors.hero.spells.hallowedground.short_desc=Heals allies, slows enemies, and spreads grass in an AOE. -actors.hero.spells.hallowedground.desc=The Priest focuses their divine magic into the ground nearby, creating a %1$dx%1$d area of hallowed terrain for 20 turns.\n\nWhen it is cast, this spell heals all allies for 10 HP (healthy allies and the Priest get shielding), briefly roots enemies, and spreads short grass.\n\nThe hallowed terrain heals allies for 1 HP per turn (healthy allies and the Priest get shielding), cripples enemies, and randomly causes tall grass to grow.\n\nHallowed terrain is destroyed by fire, and will produce furrowed grass if passive regen effects are disabled or the Priest has not gained exp in a while. +actors.hero.spells.hallowedground.desc=The Priest focuses their divine magic into the ground nearby, creating a %1$dx%1$d area of hallowed terrain for 20 turns.\n\nWhen it is cast, this spell heals all allies for 15 HP (healthy allies and the Priest get shielding), briefly roots enemies, and spreads short grass.\n\nThe hallowed terrain heals allies for 1 HP per turn (healthy allies and the Priest get shielding), cripples enemies, and randomly causes tall grass to grow.\n\nHallowed terrain is destroyed by fire, and will produce furrowed grass if passive regen effects are disabled or the Priest has not gained exp in a while. actors.hero.spells.hallowedground$hallowedterrain.desc=The ground has been hallowed here. Hallowed ground slows enemies, heals allies, and causes grass to spread. actors.hero.spells.holyintuition.name=holy intuition @@ -688,7 +688,7 @@ actors.hero.spells.holyintuition.desc=The Cleric focuses their senses on an item actors.hero.spells.holylance.name=holy lance actors.hero.spells.holylance.short_desc=Deals heavy ranged magic damage. -actors.hero.spells.holylance.desc=The Priest concentrates a large amount of energy into a devastating thrown lance made of light. This lance deals %1$d-%2$d damage and always deals maximum damage to undead and demonic targets.\n\nThis spell is very expensive, and has a cooldown of 50 turns. +actors.hero.spells.holylance.desc=The Priest concentrates a large amount of energy into a devastating thrown lance made of light. This lance deals %1$d-%2$d damage and always deals maximum damage to undead and demonic targets.\n\nThis spell is very expensive, and has a cooldown of 30 turns. actors.hero.spells.holylance$lancecooldown.name=holy lance cooldown actors.hero.spells.holylance$lancecooldown.desc=The Priest has recently cast Holy Lance, and must wait before casting it again.\n\nTurns remaining: %s. @@ -732,11 +732,11 @@ actors.hero.spells.mindform.desc=The Cleric chooses a wand or thrown weapons tha actors.hero.spells.mnemonicprayer.name=mnemonic prayer actors.hero.spells.mnemonicprayer.short_desc=Extends buffs/debuffs on an ally/enemy, & re-applies illuminated. -actors.hero.spells.mnemonicprayer.desc=The Priest utters a prayer that extends the duration of all buffs or debuffs on a specific target by %1$d turns. Positive effects will last longer on allies (including the Priest themselves), and harmful effects will last longer on enemies. This spell will also re-apply illuminated to an enemy that has been illuminated previously.\n\nMnemonic Prayer can only extend a specific instance of a buff or debuff once, and cannot extend buffs granted from armor abilities. +actors.hero.spells.mnemonicprayer.desc=The Priest utters a prayer that extends the duration of all buffs or debuffs on a specific target by %1$d turns. This spell takes no time to cast. Positive effects will last longer on allies (including the Priest themselves), and harmful effects will last longer on enemies. This spell will also re-apply illuminated to an enemy that has been illuminated previously.\n\nMnemonic Prayer can only extend a specific instance of a buff or debuff once, and cannot extend buffs granted from armor abilities. actors.hero.spells.radiance.name=radiance actors.hero.spells.radiance.short_desc=Illuminates and briefly stuns visible enemies. -actors.hero.spells.radiance.desc=The Priest erupts in holy light, stunning all visible enemies for 3 turns and illuminating them as if they were hit by Guiding Light. Radiance will also cause the Priest to glow for 100 turns if the current floor is dark. +actors.hero.spells.radiance.desc=The Priest erupts in holy light, stunning all visible enemies for 3 turns and illuminating them as if they were hit by Guiding Light. If an enemy is already illuminated, Radiance will trigger illuminate's bonus damage and re-apply the illuminated debuff. Radiance will also cause the Priest to glow for 100 turns if the current floor is dark. actors.hero.spells.recallinscription.name=recall inscription actors.hero.spells.recallinscription.short_desc=Repeats a recently used runestone or scroll. @@ -859,7 +859,7 @@ 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.\n\n1 Energy: quickly strike with fists\n2 Energy: focus to dodge next attack\n3 Energy: instantly dash nearby\n4 Energy: kick an enemy away\n5 Energy: meditate to clear statuses and restore wand & artifact charge actors.hero.herosubclass.priest=priest actors.hero.herosubclass.priest_short_desc=The _Priest_ gains new long-range spells and an empowered version of guiding light. -actors.hero.herosubclass.priest_desc=The Priest gains a variety of new and upgraded spells that emphasize ranged combat and synergy with magical items.\n\nThe Priest can cast _Guiding Light_ for free once every 100 turns, and can consume the illumination debuff with allies, wands, and some artifacts for bonus damage equal to their level.\n\nThe Priest also gains the _Radiance_ spell, which dispels darkness and illuminates and briefly stuns all visible enemies at the cost of 2 charges. +actors.hero.herosubclass.priest_desc=The Priest gains a variety of new and upgraded spells that emphasize ranged combat and synergy with magical items.\n\nThe Priest can cast _Guiding Light_ for free once every 100 turns, and can consume the illumination debuff with allies, wands, and some artifacts for bonus damage equal to their level.\n\nThe Priest also gains the _Radiance_ spell, which dispels darkness, and affects all visible enemies, triggering and applying illuminate, and briefly stunning them at the cost of 2 charges. actors.hero.herosubclass.paladin=paladin actors.hero.herosubclass.paladin_short_desc=The _Paladin_ gains new short-range spells and empowered versions of holy weapon and ward. actors.hero.herosubclass.paladin_desc=The Paladin gains a variety of new and upgraded spells that emphasize melee combat and synergy with weapons and armor.\n\nThe Paladin's _Holy Weapon_ and _Holy Ward_ spells grant larger bonuses, no longer override existing enchantments and glyphs, and can be extended by casting other spells.\n\nThe Paladin also gains the _Smite_ spell, which lets them perform a guaranteed melee hit with bonus damage and enchantment power. @@ -1253,11 +1253,11 @@ actors.hero.talent.light_reading.desc=_+1:_ The Cleric can use their holy tome w actors.hero.talent.light_reading.meta_desc=_If this talent is gained by a different hero_ it will instead increase the recharging speed of all wands by 7/13/20% at +1/+2/+3. actors.hero.talent.holy_lance.title=Holy Lance -actors.hero.talent.holy_lance.desc=_+1:_ The Priest can cast _Holy Lance,_ a devastating spell that deals _30-55 damage_ at the cost of 4 charges.\n\n_+2:_ The Priest can cast _Holy Lance,_ a devastating spell that deals _45-83 damage_ at the cost of 4 charges.\n\n_+3:_ The Priest can cast _Holy Lance,_ a devastating spell that deals _60-110 damage_ at the cost of 4 charges.\n\nHoly Lance always deals maximum damage to demonic and undead foes. Holy Lance has a 50 turn cooldown before it can be cast again. +actors.hero.talent.holy_lance.desc=_+1:_ The Priest can cast _Holy Lance,_ a devastating spell that deals _30-55 damage_ at the cost of 4 charges.\n\n_+2:_ The Priest can cast _Holy Lance,_ a devastating spell that deals _45-83 damage_ at the cost of 4 charges.\n\n_+3:_ The Priest can cast _Holy Lance,_ a devastating spell that deals _60-110 damage_ at the cost of 4 charges.\n\nHoly Lance always deals maximum damage to demonic and undead foes. Holy Lance has a 30 turn cooldown before it can be cast again. actors.hero.talent.hallowed_ground.title=Hallowed Ground -actors.hero.talent.hallowed_ground.desc=_+1:_ The Priest can cast _Hallowed Ground,_ a spell that hallows terrain in a _3x3 area_ for 20 turns, at the cost of 2 charges.\n\n_+2:_ The Priest can cast _Hallowed Ground,_ a spell that hallows terrain in a _5x5 area_ for 20 turns, at the cost of 2 charges.\n\n_+3:_ The Priest can cast _Hallowed Ground,_ a spell that hallows terrain in a _7x7 area_ for 20 turns, at the cost of 2 charges.\n\nWhen it is cast, Hallowed Ground heals allies for 10 HP, briefly roots enemies, and spreads short grass. Afterward, it slowly heals allies, cripples enemies, and causes tall grass to randomly grow. Hallowed ground grants shielding to the Priest instead of healing and is destroyed by fire. +actors.hero.talent.hallowed_ground.desc=_+1:_ The Priest can cast _Hallowed Ground,_ a spell that hallows terrain in a _3x3 area_ for 20 turns, at the cost of 2 charges.\n\n_+2:_ The Priest can cast _Hallowed Ground,_ a spell that hallows terrain in a _5x5 area_ for 20 turns, at the cost of 2 charges.\n\n_+3:_ The Priest can cast _Hallowed Ground,_ a spell that hallows terrain in a _7x7 area_ for 20 turns, at the cost of 2 charges.\n\nWhen it is cast, Hallowed Ground heals allies for 15 HP, briefly roots enemies, and spreads short grass. Afterward, it slowly heals allies, cripples enemies, and causes tall grass to randomly grow. Hallowed ground grants shielding to the Priest instead of healing and is destroyed by fire. actors.hero.talent.mnemonic_prayer.title=Mnemonic Prayer -actors.hero.talent.mnemonic_prayer.desc=_+1:_ The Priest can cast _Mnemonic Prayer,_ a spell that extends buffs/debuffs on an ally/enemy for _3 turns_ at 1 charge cost.\n\n_+2:_ The Priest can cast _Mnemonic Prayer,_ a spell that extends buffs/debuffs on an ally/enemy for _4 turns_ at 1 charge cost.\n\n_+3:_ The Priest can cast _Mnemonic Prayer,_ a spell that extends buffs/debuffs on an ally/enemy for _5 turns_ at 1 charge cost.\n\nMnemonic Prayer also re-illuminates the target if they were illuminated previously. Mnemonic Prayer can only extend a particular instance of a buff/debuff once, and cannot extend buffs from armor abilities. +actors.hero.talent.mnemonic_prayer.desc=_+1:_ The Priest can cast _Mnemonic Prayer,_ a spell that extends buffs/debuffs on an ally/enemy for _3 turns_ at 1 charge cost.\n\n_+2:_ The Priest can cast _Mnemonic Prayer,_ a spell that extends buffs/debuffs on an ally/enemy for _4 turns_ at 1 charge cost.\n\n_+3:_ The Priest can cast _Mnemonic Prayer,_ a spell that extends buffs/debuffs on an ally/enemy for _5 turns_ at 1 charge cost.\n\nMnemonic prayer takes no time to cast. Mnemonic Prayer also re-illuminates the target if they were illuminated previously. Mnemonic Prayer can only extend a particular instance of a buff/debuff once, and cannot extend buffs from armor abilities. actors.hero.talent.lay_on_hands.title=lay on hands actors.hero.talent.lay_on_hands.desc=_+1:_ The Paladin can cast _Lay on Hands,_ a spell that instantly heals a nearby character for _15 HP,_ or grants the Paladin _15 shielding,_ at the cost of 1 charge.\n\n_+2:_ The Paladin can cast _Lay on Hands,_ a spell that instantly heals a nearby character for _20 HP,_ or grants the Paladin _20 shielding,_ at the cost of 1 charge.\n\n_+3:_ The Paladin can cast _Lay on Hands,_ a spell that instantly heals a nearby character for _25 HP,_ or grants the Paladin _25 shielding,_ at the cost of 1 charge.\n\nExcess healing from this spell is converted into shielding. Lay on Hands can be cast repeatedly, but cannot apply more than three casts worth of shielding at once. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index 3606c4833..ed16b186f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -422,7 +422,7 @@ public abstract class Char extends Actor { dmg += 1 + 2*Dungeon.hero.pointsInTalent(Talent.SEARING_LIGHT); } if (this != Dungeon.hero && Dungeon.hero.subClass == HeroSubClass.PRIEST){ - enemy.damage(Dungeon.hero.lvl, GuidingLight.INSTANCE); + enemy.damage(5+Dungeon.hero.lvl, GuidingLight.INSTANCE); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/HallowedGround.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/HallowedGround.java index 272f8101f..77fc9e9bf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/HallowedGround.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/HallowedGround.java @@ -139,20 +139,21 @@ public class HallowedGround extends TargetedClericSpell { if (ch.alignment == Char.Alignment.ALLY){ if (ch == Dungeon.hero || ch.HP == ch.HT){ - Buff.affect(ch, Barrier.class).incShield(10); - ch.sprite.showStatusWithIcon( CharSprite.POSITIVE, "10", FloatingText.SHIELDING ); + int barrierToGive = Math.min(15, 30 - ch.shielding()); + Buff.affect(ch, Barrier.class).incShield(barrierToGive); + ch.sprite.showStatusWithIcon( CharSprite.POSITIVE, Integer.toString(barrierToGive), FloatingText.SHIELDING ); } else { - int barrier = 10 - (ch.HT - ch.HP); + int barrier = 15 - (ch.HT - ch.HP); barrier = Math.max(barrier, 0); - ch.HP += 10 - barrier; - ch.sprite.showStatusWithIcon( CharSprite.POSITIVE, Integer.toString(10-barrier), FloatingText.HEALING ); + ch.HP += 15 - barrier; + ch.sprite.showStatusWithIcon( CharSprite.POSITIVE, Integer.toString(15-barrier), FloatingText.HEALING ); if (barrier > 0){ Buff.affect(ch, Barrier.class).incShield(barrier); ch.sprite.showStatusWithIcon( CharSprite.POSITIVE, Integer.toString(barrier), FloatingText.SHIELDING ); } } } else if (!ch.flying) { - Buff.affect(ch, Roots.class, 1f); + Buff.affect(ch, Roots.class, 2f); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/HolyLance.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/HolyLance.java index b6b6cb387..47186702a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/HolyLance.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/HolyLance.java @@ -126,7 +126,7 @@ public class HolyLance extends TargetedClericSpell { enemy.sprite.burst(0xFFFFFFFF, 10); hero.spendAndNext(1f); onSpellCast(tome, hero); - FlavourBuff.affect(hero, LanceCooldown.class, 50f); + FlavourBuff.affect(hero, LanceCooldown.class, 30f); } }); } else { @@ -141,7 +141,7 @@ public class HolyLance extends TargetedClericSpell { Dungeon.level.pressCell(aim.collisionPos); hero.spendAndNext(1f); onSpellCast(tome, hero); - FlavourBuff.affect(hero, LanceCooldown.class, 50f); + FlavourBuff.affect(hero, LanceCooldown.class, 30f); } }); } @@ -181,6 +181,6 @@ public class HolyLance extends TargetedClericSpell { icon.hardlight(0.67f, 0.67f, 0); } - public float iconFadePercent() { return Math.max(0, visualcooldown() / 50); } + public float iconFadePercent() { return Math.max(0, visualcooldown() / 30); } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/MnemonicPrayer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/MnemonicPrayer.java index 9ef78bc02..a7c404df5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/MnemonicPrayer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/MnemonicPrayer.java @@ -111,13 +111,11 @@ public class MnemonicPrayer extends TargetedClericSpell { } if (ch == hero){ - hero.busy(); hero.sprite.operate(ch.pos); - hero.spend( 1f ); BuffIndicator.refreshHero(); } else { hero.sprite.zap(ch.pos); - hero.spendAndNext( 1f ); + hero.next(); } onSpellCast(tome, hero); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Radiance.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Radiance.java index e5452dff8..4b441921e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Radiance.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Radiance.java @@ -67,8 +67,13 @@ public class Radiance extends ClericSpell { for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { if (mob.alignment != Char.Alignment.ALLY && Dungeon.level.heroFOV[mob.pos]) { - Buff.affect(mob, GuidingLight.Illuminated.class); - Buff.affect(mob, GuidingLight.WasIlluminatedTracker.class); + + if (mob.buff(GuidingLight.Illuminated.class) != null){ + mob.damage(hero.lvl+5, GuidingLight.class); + } else { + Buff.affect(mob, GuidingLight.Illuminated.class); + Buff.affect(mob, GuidingLight.WasIlluminatedTracker.class); + } Buff.affect(mob, Paralysis.class, 3f); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/Artifact.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/Artifact.java index 49661e55b..21c33fc3a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/Artifact.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/Artifact.java @@ -150,7 +150,7 @@ public class Artifact extends KindofMisc { public static void artifactProc(Char target, int artifLevel, int chargesUsed){ if (Dungeon.hero.subClass == HeroSubClass.PRIEST && target.buff(GuidingLight.Illuminated.class) != null) { target.buff(GuidingLight.Illuminated.class).detach(); - target.damage(Dungeon.hero.lvl, GuidingLight.INSTANCE); + target.damage(5+Dungeon.hero.lvl, GuidingLight.INSTANCE); } if (target.alignment != Char.Alignment.ALLY diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java index 6fd77a80f..6a122e5e4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java @@ -222,7 +222,7 @@ public abstract class Wand extends Item { if (Dungeon.hero.subClass == HeroSubClass.PRIEST && target.buff(GuidingLight.Illuminated.class) != null) { target.buff(GuidingLight.Illuminated.class).detach(); - target.damage(Dungeon.hero.lvl, GuidingLight.INSTANCE); + target.damage(Dungeon.hero.lvl+5, GuidingLight.INSTANCE); } if (target.alignment != Char.Alignment.ALLY