From 5251f8683b16855e95500aa3f03455d9110fe2bf Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 28 Nov 2024 13:18:27 -0500 Subject: [PATCH] v3.0.0: implemented the cleanse talent/spell --- .../src/main/assets/interfaces/hero_icons.png | Bin 2783 -> 2800 bytes .../main/assets/interfaces/talent_icons.png | Bin 7406 -> 7130 bytes .../assets/messages/actors/actors.properties | 8 +- .../actors/hero/Talent.java | 4 +- .../actors/hero/spells/Cleanse.java | 101 ++++++++++++++++++ .../actors/hero/spells/ClericSpell.java | 5 + .../shatteredpixeldungeon/ui/HeroIcon.java | 1 + 7 files changed, 115 insertions(+), 4 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/Cleanse.java diff --git a/core/src/main/assets/interfaces/hero_icons.png b/core/src/main/assets/interfaces/hero_icons.png index 5c506ce885e0d3ece1e7cab349734765f078b93e..52a2d638a036f2b76dc3ee615dfe4d8f122a78bc 100644 GIT binary patch delta 2635 zcmY+GSyWT^7Ki^Q2^macB4M^A5v?G|pva&Vk}wpM3OFrs!g$qC5lx+e!Z`;79H1I! zDPn?H72663G|FI(pkm9AT%-g?!EYKPr9Z-_tA3Zh`clopU0dtVwqLJDmw74V8OY-H7l1~ zI8at{;TX}fJjFcir=4sf!t!iqKlfQB!w8a%Vi|?m(N9m-0OOfA=AL?b}qFkMf`oX z{&?S@QtBfUHZ|Wk%MzHydI#FcK3YS7l8X5@YC;+((a^?&k6aTd(Y^|rQ|4sI>4wdy z1RWeJSbw4+3vKrnC%nmMg&vUAH>&8Ht^aZKn|xRuRKgb9JRL@5S;}rY7RT!&C3!WA zXQ%hZt0j2PVqo$s58)bGk#P$@0t>*^+q610pzqw(3$tTLFTJ8FO##vpN2Z?A{pU?I zUmrXlvm9tBxiFjl^UIV3i-}!k*(}>P^yJkR0i0Xbl%>~YzmvZQk6g>4qmMff-M9~= zr$k#D?gu$a;~Xr-IIRL|ZY&C+j&YfLv&=?<+VLRp=V6bK%J@ee@^ExaFG|7|MI68* zn^8o9_Uen!5mK~|R>O)n6Qml_%O~RTB6_a1um*LzUPh)pW)bnY!+ z9aWWw!?+C06SD*{*bn#fPwmJ9CYOyl-|~Vm%R&xk;C-*GBmbT1w!7wPq0>1sH?j<# z>uYI)W@%nE#K>>MRo*~e;bg6+YIP$1W1~*&H?jW_TYU0O-2GYGssCt-(HQmzC4q6(*}Wj^2VP=wx{YKeY<7s!nF)I&ZQL zg}3_shWxx}g4*hqL&VX99{L3pfo^2p-gGED#~jWQ4~KI(!Yl*T2$qV`Be1Jn(>{P@a#7dk8_{oriVhPs4ZE#tlWtq9L#*TEj{hF)b+5=pt8&gyh?nm28R z^m*7Q?fW{5=ay!IGM7I(mOUUh*V1Q5V@kVJ;NoZ~r0(bPoO5L%xM&iM3Y<_qFxFrn zYKNCRX7bQ49o#4t&1*91`dnF3yC8zTIj}Snk-dgd*z8unU*0~Ax-L0C_w4Ggy7P9t zD`p6o7sky|)@`9vmp3oY%5d0{Wh*@x3Piz0B`L&b(}{ni%~tO`Uwkj(rk%R0?9&Fe zEFu^xQJ|cQ!%3l=yTiZ_#LM9Rw+)j}l)ezNkxD4n;G#!XNpTT*(7d7Y?PRR4F}J;PF4SDT_MsvWEoa5AYPw-P!9XKPpgw3@+nazsTG)(Oj*8}cj%Ec zH+t7H`r+d)_B?Yfa|OF#1_zegonde+aiVYVzrRLKa>&`AgY&u}`-Aa9*C%#}wXxPt z_H=PPdNqnyzh7m4_sJMk>KbhA(dJb-|0x95*kW>v>bPy%#pFvL@?(aB^wZ5uB)XrG zxoZ_RiO-kBxuBOvH^}HnwuG_;7y=$mns}LiUG=OgWbnAGU_@p!Wdi2q+zNftr9LpW z$gujjWK|h7Wx~4t&ynua2-UAm_s4qF?kQ06P?&;IZ!m6^9uu46PKqGzogouCsUwz1 z@`OkSxNCDe(SM(UapMN;*d3@nUCW#>@#<{Q^?~PI&m^}E9HpM!?S~7&kG%gtx^snEmzgm%WVn+WNaDbu=+2$>{f8lab-&fVR=oo*%o7Z{sZIBoS(PE5 z*&hum{mlGd`08Gnd=X~oYg;mLudSp*g+36U+vv;NFC6i*<&X7C{KDCER6?162?+?D zQ=|7WC4y2m_ric_{R4AIju6GWK#D$Os}bpe$bdTm*ProL&O{HSCI7VB*I=`Q;D{Ml zz{)XP!7+UK!B=*?K^icRDs0N+9E%W?*b8dn6ic-T#JOIOuDnVhRRfcr?As#qN;p)TKE)mAh}ll=ys0n34`2YaFg~3t|(tQ>QLB zHfi*0e^_w$qvPe+tiOxS2F+>QR{JH1&m??~iL^MEv!?yH@#v?A5Uhxdjkp^o$o?P4 CHuS6j delta 2618 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 C+WZXw diff --git a/core/src/main/assets/interfaces/talent_icons.png b/core/src/main/assets/interfaces/talent_icons.png index 7fe590edc7a42f9666e3c9f47e9f195cacb79ef2..3878a31beb01257d3a8ef68f6073c843ffe9d3c9 100644 GIT binary patch delta 6845 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 + */ + +package com.shatteredpixel.shatteredpixeldungeon.actors.hero.spells; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.AllyBuff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barrier; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LostInventory; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; +import com.shatteredpixel.shatteredpixeldungeon.effects.Flare; +import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HolyTome; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfCleansing; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.ui.HeroIcon; +import com.watabou.noosa.audio.Sample; + +import java.util.ArrayList; + +public class Cleanse extends ClericSpell { + + public static Cleanse INSTANCE = new Cleanse(); + + @Override + public int icon() { + return HeroIcon.CLEANSE; + } + + @Override + public float chargeUse(Hero hero) { + return 2; + } + + public String desc(){ + int immunity = 2 * (Dungeon.hero.pointsInTalent(Talent.CLEANSE)-1); + if (immunity > 0) immunity++; + int shield = 10 * Dungeon.hero.pointsInTalent(Talent.CLEANSE); + return Messages.get(this, "desc", immunity, shield) + "\n\n" + Messages.get(this, "charge_cost", (int)chargeUse(Dungeon.hero)); + } + + @Override + public void onCast(HolyTome tome, Hero hero) { + + ArrayList affected = new ArrayList<>(); + affected.add(hero); + + for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { + if (Dungeon.level.heroFOV[mob.pos] && mob.alignment == Char.Alignment.ALLY) { + affected.add(mob); + } + } + + for (Char ch : affected) { + for (Buff b : ch.buffs()) { + if (b.type == Buff.buffType.NEGATIVE + && !(b instanceof AllyBuff) + && !(b instanceof LostInventory)) { + b.detach(); + } + } + + if (hero.pointsInTalent(Talent.CLEANSE) > 1) { + //0, 2, or 4. 1 less than displayed as spell is instant + Buff.affect(ch, PotionOfCleansing.Cleanse.class, 2 * (Dungeon.hero.pointsInTalent(Talent.CLEANSE)-1)); + } + Buff.affect(ch, Barrier.class).setShield(10 * hero.pointsInTalent(Talent.CLEANSE)); + new Flare( 6, 32 ).color(0xFF4CD2, true).show( ch.sprite, 2f ); + } + + hero.busy(); + hero.sprite.operate(hero.pos); + Sample.INSTANCE.play(Assets.Sounds.READ); + + onSpellCast(tome, hero); + + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/ClericSpell.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/ClericSpell.java index 1744c5123..ca801f2f8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/ClericSpell.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/spells/ClericSpell.java @@ -104,6 +104,10 @@ public abstract class ClericSpell { } else if (tier == 3){ + if (cleric.hasTalent(Talent.CLEANSE)){ + spells.add(Cleanse.INSTANCE); + } + if (cleric.subClass == HeroSubClass.PRIEST) { spells.add(Radiance.INSTANCE); @@ -131,6 +135,7 @@ public abstract class ClericSpell { spells.add(Sunray.INSTANCE); spells.add(RecallGlyph.INSTANCE); spells.add(DivineSense.INSTANCE); + spells.add(Cleanse.INSTANCE); spells.add(Radiance.INSTANCE); spells.add(HolyLance.INSTANCE); return spells; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/HeroIcon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/HeroIcon.java index 666518226..acc2c4392 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/HeroIcon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/HeroIcon.java @@ -83,6 +83,7 @@ public class HeroIcon extends Image { public static final int RECALL_GLYPH = 47; public static final int HOLY_LANCE = 48; public static final int RADIANCE = 49; + public static final int CLEANSE = 50; //all cleric spells have a separate icon with no background for the action indicator public static final int SPELL_ACTION_OFFSET = 32;