diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 7fb15c599..2d74cb35a 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -666,7 +666,7 @@ 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 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.desc_priest=_This spell is more powerful when cast by the Priest._ The first cast of the spell every 50 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 @@ -733,11 +733,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. 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.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.\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. 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.radiance.desc=The Priest erupts in holy light, stunning all visible enemies for 3 turns. If an enemy is already illuminated, Radiance will trigger illuminate's bonus damage and then 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. @@ -860,7 +860,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 + 5.\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.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 50 turns, illuminates enemies directly targeted by any of their spells, and can consume the illumination debuff with allies, wands, and some artifacts for bonus damage equal to their level + 5.\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. @@ -1258,7 +1258,7 @@ actors.hero.talent.holy_lance.desc=_+1:_ The Priest can cast _Holy Lance,_ a dev 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 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 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.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 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/hero/spells/BeamingRay.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/BeamingRay.java index 30be865cc..b86d6a32f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/BeamingRay.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/BeamingRay.java @@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LifeLink; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.cleric.PowerOfMany; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; @@ -124,6 +125,9 @@ public class BeamingRay extends TargetedClericSpell { Char chTarget = null; if (Actor.findChar(target) != null && Actor.findChar(target).alignment == Char.Alignment.ENEMY){ chTarget = Actor.findChar(target); + if (hero.subClass == HeroSubClass.PRIEST){ + Buff.affect(chTarget, GuidingLight.Illuminated.class); + } } if (ally == Stasis.getStasisAlly()){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/BlessSpell.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/BlessSpell.java index 6b2f65521..56b234606 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/BlessSpell.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/BlessSpell.java @@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barrier; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bless; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.cleric.PowerOfMany; import com.shatteredpixel.shatteredpixeldungeon.effects.Flare; @@ -121,6 +122,10 @@ public class BlessSpell extends TargetedClericSpell { ch.sprite.showStatusWithIcon( CharSprite.POSITIVE, Integer.toString(totalHeal), FloatingText.HEALING ); } } + + if (ch.alignment != Char.Alignment.ALLY && hero.subClass == HeroSubClass.PRIEST){ + Buff.affect(ch, GuidingLight.Illuminated.class); + } } public String desc(){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/GuidingLight.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/GuidingLight.java index 962a60913..2dfc2563b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/GuidingLight.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/GuidingLight.java @@ -99,7 +99,7 @@ public class GuidingLight extends TargetedClericSpell { onSpellCast(tome, hero); if (hero.subClass == HeroSubClass.PRIEST && hero.buff(GuidingLightPriestCooldown.class) == null) { - Buff.prolong(hero, GuidingLightPriestCooldown.class, 100f); + Buff.prolong(hero, GuidingLightPriestCooldown.class, 50f); ActionIndicator.refresh(); } @@ -137,7 +137,7 @@ public class GuidingLight extends TargetedClericSpell { icon.brightness(0.5f); } - public float iconFadePercent() { return Math.max(0, visualcooldown() / 100); } + public float iconFadePercent() { return Math.max(0, visualcooldown() / 50); } @Override public void detach() { 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 1258c019b..cbc0435ec 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 @@ -153,6 +153,7 @@ public class HallowedGround extends TargetedClericSpell { } } } else if (!ch.flying) { + Buff.affect(ch, GuidingLight.Illuminated.class); 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 5784635fe..2a9b063fa 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 @@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; @@ -123,6 +124,10 @@ public class HolyLance extends TargetedClericSpell { Sample.INSTANCE.play( Assets.Sounds.HIT_MAGIC, 1, Random.Float(0.8f, 1f) ); Sample.INSTANCE.play( Assets.Sounds.HIT_STAB, 1, Random.Float(0.8f, 1f) ); + if (enemy.isActive()){ + Buff.affect(enemy, GuidingLight.Illuminated.class); + } + enemy.sprite.burst(0xFFFFFFFF, 10); hero.spendAndNext(1f); onSpellCast(tome, hero); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Judgement.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Judgement.java index 18c941169..27a82b888 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Judgement.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Judgement.java @@ -25,7 +25,9 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.cleric.AscendedForm; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HolyTome; @@ -72,6 +74,9 @@ public class Judgement extends ClericSpell { for (Char ch : Actor.chars()){ if (ch.alignment != hero.alignment && Dungeon.level.heroFOV[ch.pos]){ ch.damage( Random.NormalIntRange(damageBase, 2*damageBase), Judgement.this); + if (hero.subClass == HeroSubClass.PRIEST){ + Buff.affect(ch, GuidingLight.Illuminated.class); + } } } 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 54bb1737d..2fabbb363 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 @@ -166,12 +166,9 @@ public class MnemonicPrayer extends TargetedClericSpell { Sample.INSTANCE.play(Assets.Sounds.DEBUFF); ch.sprite.emitter().start(Speck.factory(Speck.DOWN), 0.15f, 4); - for (Buff b : ch.buffs()){ - if (b instanceof GuidingLight.WasIlluminatedTracker){ - Buff.affect(ch, GuidingLight.Illuminated.class); - continue; - } + Buff.affect(ch, GuidingLight.Illuminated.class); + for (Buff b : ch.buffs()){ if (b.type != Buff.buffType.NEGATIVE || b.mnemonicExtended){ continue; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/ShieldOfLight.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/ShieldOfLight.java index 9cf4e3c2f..d8a9206b4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/ShieldOfLight.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/ShieldOfLight.java @@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.cleric.PowerOfMany; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; @@ -81,6 +82,10 @@ public class ShieldOfLight extends TargetedClericSpell { //1 turn less as the casting is instant Buff.prolong( hero, ShieldOfLightTracker.class, 4f).object = ch.id(); + if (hero.subClass == HeroSubClass.PRIEST) { + Buff.affect(ch, GuidingLight.Illuminated.class); + } + hero.busy(); hero.sprite.operate(hero.pos); hero.sprite.emitter().start(Speck.factory(Speck.LIGHT), 0.15f, 6); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Sunray.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Sunray.java index 658881ae0..9c2bb4f69 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Sunray.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Sunray.java @@ -30,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.effects.Beam; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HolyTome; @@ -118,6 +119,9 @@ public class Sunray extends TargetedClericSpell { Buff.prolong(ch, SunRayRecentlyBlindedTracker.class, 2f + 2f*hero.pointsInTalent(Talent.SUNRAY)); Buff.affect(ch, SunRayUsedTracker.class); } + if (hero.subClass == HeroSubClass.PRIEST){ + Buff.affect(ch, GuidingLight.Illuminated.class); + } } }