v3.0.0: icon and text implementation for last 2 paladin talents

This commit is contained in:
Evan Debenham
2025-01-17 13:22:37 -05:00
parent 0d4791ee2d
commit de66460049
11 changed files with 171 additions and 10 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -564,6 +564,12 @@ actors.hero.abilities.ratmogrify$transmograt.desc=This enemy has been transforme
actors.hero.abilities.ratmogrify$transmograt.rankings_desc=Slain by: ratmogrified enemy
##Cleric Spells
actors.hero.spells.auraofprotection.name=aura of protection
actors.hero.spells.auraofprotection.short_desc=Boosts defence for Paladin and nearby allies.
actors.hero.spells.auraofprotection.desc=The Paladin begins radiating protective energy for 20 turns. Any ally within 2 tiles of the Paladin (including themselves) takes %1$d%% less damage, and gains the effect of the Paladin's armor glyph at +%2$d%% power.\n\nThe power boost will always apply, but this spell cannot cause the Paladin's glyph to apply more than once if a character is already benefitting from it (e.g. the Paladin themselves, or a prismatic image).
actors.hero.spells.auraofprotection$aurabuff.name=aura of protection
actors.hero.spells.auraofprotection$aurabuff.desc=The Paladin is radiating protective energy around themselves.\n\nAny nearby ally (including the Paladin themselves) takes reduced damage and gains the effect of the Paladin's armor glyph with boosted power.\n\nTurns Remaining: %s.
actors.hero.spells.blessspell.name=bless
actors.hero.spells.blessspell.short_desc=Blesses & shields Cleric, blesses & heals others.
actors.hero.spells.blessspell.desc=The Cleric places a holy blessing on themselves or another character they can see.\n\nWhen cast on themselves the effect is weaker, granting %1$d turns of bless and %2$d barrier.\n\nWhen cast on other characters the spell is more powerful, granting %3$d turns of bless and %4$d healing. Excess healing is converted into barrier.
@@ -687,6 +693,10 @@ actors.hero.spells.sunray.name=sunray
actors.hero.spells.sunray.short_desc=Deals ranged magic damage and blinds a target once.
actors.hero.spells.sunray.desc=The Cleric fires a ray of blinding light at a target, dealing %1$d-%2$d damage and blinding them for %3$d turns. Sunray always deals maximum damage to undead and demonic targets.\n\nAfter being struck with this spell an enemy's vision will adjust, preventing them from being blinded by it again. However, if they are struck again while blinded by this spell, then the light is overwhelming and paralyses them instead.
actors.hero.spells.walloflight.name=wall of light
actors.hero.spells.walloflight.short_desc=Creates a wall that blocks enemies.
actors.hero.spells.walloflight.desc=The Paladin creates a wall of solid light directly in front of themselves that's 1 tile thick, %1$d tiles wide, and lasts for 20 turns.\n\nThis wall blocks movement and ranged attacks, but can be seen through. Enemies that are caught in the wall when its created will be pushed back if possible, otherwise they will be caught inside it and be able to exit through either side.\n\nThe wall can be cast in any of the four cardinal or four diagonal directions. Only one wall can exist at a time.
##main hero
actors.hero.hero.name=you
actors.hero.hero.leave=You can't leave yet, the rest of the dungeon awaits below!
@@ -771,8 +781,8 @@ 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 trigger 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.paladin=paladin
actors.hero.herosubclass.paladin_short_desc=_(UNFINISHED)_ The _Paladin_ gains new short-range spells and empowered versions of holy weapon and ward.
actors.hero.herosubclass.paladin_desc=_The Paladin has not been implemented yet, and so is currently unselectable._\n\nThe 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.
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.
##talents
actors.hero.talent$provokedangertracker.name=provoked anger
@@ -1158,10 +1168,10 @@ actors.hero.talent.mnemonic_prayer.desc=_+1:_ The Priest can cast _Mnemonic Pray
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 _10 HP,_ or grants the Paladin _10 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 _15 HP,_ or grants the Paladin _15 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 _20 HP,_ or grants the Paladin _20 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.
actors.hero.talent.paladint3b.title=Unknown
actors.hero.talent.paladint3b.desc=This talent hasn't been implemented yet, it currently does nothing.
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.aura_of_protection.title=aura of protection
actors.hero.talent.aura_of_protection.desc=_+1:_ The Paladin can cast _Aura of Protection,_ a spell that grants the Paladin and all allies within 2 tiles _15% damage resistance_ and the effect of the Paladin's armor glyph at _+50% power_ for 20 turns, at the cost of 2 charges.\n\n_+2:_ The Paladin can cast _Aura of Protection,_ a spell that grants the Paladin and all allies within 2 tiles _23% damage resistance_ and the effect of the Paladin's armor glyph at _+75% power_ for 20 turns, at the cost of 2 charges.\n\n_+1:_ The Paladin can cast _Aura of Protection,_ a spell that grants the Paladin and all allies within 2 tiles _30% damage resistance_ and the effect of the Paladin's armor glyph at _+100% power_ for 20 turns, at the cost of 2 charges.
actors.hero.talent.wall_of_light.title=wall of light
actors.hero.talent.wall_of_light.desc=_+1:_ The Paladin can cast _Wall of Light,_ a spell that creates a _3 tile wide_ solid wall in front of the paladin that pushes away enemies and lasts for 20 turns, at the cost of 3 charges.\n\n_+2:_ The Paladin can cast _Wall of Light,_ a spell that creates a _5 tile wide_ solid wall in front of the paladin that pushes away enemies and lasts for 20 turns, at the cost of 3 charges.\n\n_+3:_ The Paladin can cast _Wall of Light,_ a spell that creates a _7 tile wide_ solid wall in front of the paladin that pushes away enemies and lasts for 20 turns, at the cost of 3 charges.\n\nThe wall can be placed cardinally or diagonally, only one wall can exist at a time.
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 _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.

View File

@@ -183,7 +183,7 @@ public enum Talent {
//Priest T3
HOLY_LANCE(171, 3), HALLOWED_GROUND(172, 3), MNEMONIC_PRAYER(173, 3),
//Paladin T3
LAY_ON_HANDS(174, 3), PALADINT3B(175, 3), PALADINT3C(176, 3),
LAY_ON_HANDS(174, 3), AURA_OF_PROTECTION(175, 3), WALL_OF_LIGHT(176, 3),
//Ascended Form T4
DIVINE_INTERVENTION(177, 4), JUDGEMENT(178, 4), FLASH(179, 4),
//Trinity T4
@@ -1022,7 +1022,7 @@ public enum Talent {
Collections.addAll(tierTalents, HOLY_LANCE, HALLOWED_GROUND, MNEMONIC_PRAYER);
break;
case PALADIN:
Collections.addAll(tierTalents, LAY_ON_HANDS, PALADINT3B, PALADINT3C);
Collections.addAll(tierTalents, LAY_ON_HANDS, AURA_OF_PROTECTION, WALL_OF_LIGHT);
break;
}
for (Talent talent : tierTalents){

View File

@@ -0,0 +1,90 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2025 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.shatteredpixel.shatteredpixeldungeon.actors.hero.spells;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
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;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HolyTome;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.HeroIcon;
public class AuraOfProtection extends ClericSpell {
public static AuraOfProtection INSTANCE = new AuraOfProtection();
@Override
public int icon() {
return HeroIcon.AURA_OF_PROTECTION;
}
@Override
public String desc() {
int dmgReduction = Math.round(7.5f + 7.5F*Dungeon.hero.pointsInTalent(Talent.AURA_OF_PROTECTION));
int glyphPow = 25 + 25*Dungeon.hero.pointsInTalent(Talent.AURA_OF_PROTECTION);
return Messages.get(this, "desc", dmgReduction, glyphPow) + "\n\n" + Messages.get(this, "charge_cost", (int)chargeUse(Dungeon.hero));
}
@Override
public float chargeUse(Hero hero) {
return 2f;
}
@Override
public void onCast(HolyTome tome, Hero hero) {
Buff.affect(hero,AuraBuff.class, AuraBuff.DURATION);
//TODO vfx/sfx
hero.spend( 1f );
hero.busy();
hero.sprite.operate(hero.pos);
onSpellCast(tome, hero);
}
public static class AuraBuff extends FlavourBuff {
public static float DURATION = 20f;
{
type = buffType.POSITIVE;
}
@Override
public int icon() {
return BuffIndicator.PROT_AURA;
}
@Override
public float iconFadePercent() {
return Math.max(0, (DURATION - visualcooldown()) / DURATION);
}
}
}

View File

@@ -155,6 +155,12 @@ public abstract class ClericSpell {
if (cleric.hasTalent(Talent.LAY_ON_HANDS)){
spells.add(LayOnHands.INSTANCE);
}
if (cleric.hasTalent(Talent.AURA_OF_PROTECTION)){
spells.add(AuraOfProtection.INSTANCE);
}
if (cleric.hasTalent(Talent.WALL_OF_LIGHT)){
spells.add(WallOfLight.INSTANCE);
}
} else if (tier == 4){

View File

@@ -0,0 +1,54 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2025 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.shatteredpixel.shatteredpixeldungeon.actors.hero.spells;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HolyTome;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.ui.HeroIcon;
public class WallOfLight extends TargetedClericSpell {
public static WallOfLight INSTANCE = new WallOfLight();
@Override
public int icon() {
return HeroIcon.WALL_OF_LIGHT;
}
@Override
public String desc() {
return Messages.get(this, "desc", 1 + 2*Dungeon.hero.pointsInTalent(Talent.WALL_OF_LIGHT)) + "\n\n" + Messages.get(this, "charge_cost", (int)chargeUse(Dungeon.hero));
}
@Override
public float chargeUse(Hero hero) {
return 3f;
}
@Override
protected void onTargetSelected(HolyTome tome, Hero hero, Integer target) {
}
}

View File

@@ -129,6 +129,7 @@ public class BuffIndicator extends Component {
public static final int HOLY_SIGHT = 77;
public static final int GLYPH_RECALL= 78;
public static final int ASCEND = 79;
public static final int PROT_AURA = 80;
public static final int SIZE_SMALL = 7;
public static final int SIZE_LARGE = 16;

View File

@@ -89,8 +89,8 @@ public class HeroIcon extends Image {
public static final int MNEMONIC_PRAYER = 53;
public static final int SMITE = 54;
public static final int LAY_ON_HANDS = 55;
//56
//57
public static final int AURA_OF_PROTECTION = 56;
public static final int WALL_OF_LIGHT = 57;
public static final int DIVINE_INTERVENTION = 58;
public static final int JUDGEMENT = 59;
public static final int FLASH = 60;