From f183e3219ff9a841eb7ed6284e17c79142b97dc1 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 11 Oct 2024 15:21:06 -0400 Subject: [PATCH] v3.0.0: added an unlock condition/badge for the cleric --- core/src/main/assets/interfaces/badges.png | Bin 5881 -> 5913 bytes .../assets/messages/actors/actors.properties | 4 ++-- .../main/assets/messages/misc/misc.properties | 2 ++ .../shatteredpixeldungeon/Badges.java | 8 ++++++- .../ShatteredPixelDungeon.java | 2 +- .../actors/hero/HeroClass.java | 2 +- .../items/scrolls/ScrollOfRemoveCurse.java | 3 +++ .../items/scrolls/ScrollOfUpgrade.java | 1 + .../scenes/WelcomeScene.java | 22 +++++++----------- 9 files changed, 25 insertions(+), 19 deletions(-) diff --git a/core/src/main/assets/interfaces/badges.png b/core/src/main/assets/interfaces/badges.png index 9a71e236ea7fe4fc517ac9cd08475c50757513be..83e0d53918bc1cb0e45d097ec9ac3065452c9f14 100644 GIT binary patch delta 5349 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 delta 5301 zcmZvAdo+|=`2Rb1gN!00WJW^gq(Y8MWJWq9xtvO=#Gp8xWJqB&<9&xNPRNLIn=<8g zx*{DZml<8$FP&6`m|Vs!*D(fTX1;SS>$iUEyS{(y{jB}@ywB%(p1t3_*V;RK`|>u{ z4g>%wrR`Xc0HEwN_t3QJIK;@v&*{5hRtW9`+wyRjF${ck`_V}N01y`rdK{9=fv)B? zjsT!(+f`)8%npV!wc z`Gfe`Wf2lqIIpn=e^_%}$&Z`;4(+Rc%3-L#_u`2j<{yRUv=!Y$XBC}c=uqt1sR&=s zHR_oF_~zFNC=KHitm{J~7pv@AM-hK_D9wW<1k8($0i!g-pU4r&WRuP#uRk`zgN2KM z{b3zXOersqn_Sq;8y8veZUYAf2G1^aL0@BDbwf2}K@drWFI?`M-=Mzz==kz)jZovU zg|R;qVdeq?kE0K2hllFfs)HLiHi)PpS9Op*%jl0l#Er0H&4$pgCoJp;=Mif?#A9o% z)w?jgE#v2HPY&U%AzOOT>InL92zl8at5p}c_IpboAPDhuwI*)YB|D~W*X{0~&Xh>! zmnPB8Lrt#%$tYS2dx_Kw#Z)kJDnt1dH752BU!loZvK40+Vs=AvF|T_{n{NV^gy!6y zk*F$tyQF^A0C9ipKm$p&@*Fi2lQ^{W1{(THmzMvRlKj_q(ND)$w!3sDg_BG~W+tL7 zCL$Y*>=z*1{03s+rJw2kJ@a7Nv_^!hdL}Z$l>@HhH}RrxoXz6Rp>7&)X-B@x=GbVA z&HS}cuTnB{YuHK^`HO9?b;KZ8az5Dd9eV~`=NVL)vv!Pq7hYj4dIWn&v^4LIv?EEA zuE>O>ww!B{nRlj6z!*ucdrY@lT|ir;@wuafuU(%zE66-S!o1S40ZgJ+unE`qM-K`I-`Pi!bcy*iFaR-p zHHydoNq0C(w=c{ZtnS%nv6B7RsVHhw(deaYKx9;y1GV3{H2t7vMlnP#AfX&+1{341 zq0T%5kGR`lYoI~)zi&LtI@zC~zjeM;zsSjkei1%o#otz$GLQxA9#f^9hTY#>ssr0v zb$Kl@ndeo`GgEcuyi~Dtrs$>cQfkT5uP%{P)HhSKv_P*?ARko<+XTf~QJD2REluB7 zOvO~)le===C<3m7_X2#fM8m(cRE3{5qLmUL!NiRUweR;Dpr5<>_DVQ!+N%)+b zkzHhkXtU)-x%5N=b2zxE+Bc|W$lMaNPrH0h4sM{_eWNxHYcEj2n3dim`A)?GO9^Vn za%|g)JaZBKm0uEEEqGeqIw^`xc(&Ts=nUIW;1mFY6Asa`40U=a5Wd+N^cs1|Q$2IU zEK(kF_1vMMZ0(ScF|F=7x5qrK8*bxUS^4rwWe&-hf*$Q$fBwI(z&F`jc`tZJDV{f# zdDKzk$GnLO_$?KlFWUp9cT^GbAX8NIv=Ck$fr>Jdv@G{kDr={Y8e4DH0WJXFKA9W+ zad{kDsoX2u!G2QyxLr?oh{|-_?xqC&*8JfqPJ73#N|=v51*N>azsk%30V^>lPa#?( zyB+oTeLlC0N^oGzr6+S!BU86xNt4w2$y^4yy6Bk$WePSsWhCrcsrlYhV*X;P(sU!~ z7y+^^U2rigan09X3SjUPB+`K{jgJgaYf0yUM5bpzepGXOy%Dq}7+M8lWe?bkeeoRwk+%jN5l8Zh@gs-U z4h)_B;q=7aYEo~T+t#j3W+2z^n21)FgMM8**i()D{rc~wHP*RIl`RDZi(H`*U<6`_&t#$!InIkG0yfo!|4^5C-Sm z>go5I+18hlT47&#??!&^_4V_u$PD8P>pFI|Rp`^Tf_k24X(cc3xn)aL`khUvJKgDP zd9KsfDhLykvrSM9w*QqSykZvgL?Nzx1hXCNt@u;_`P7wYNMnupsC4I|R%9*bVrhwj z{=ojkOd3Bl3H)#PG;kha=7FS1O39Qe-J0TnLf!>>Iaer78iM;CX72h<-Ai6ge!6ovA&(LBc+*|_(+y1TOR|MUbUtm$D43$x_1Z+KOS^*04} zrQw%;o}~DP#E~cYW9Tf5(t}eT4QE@c$tkwGci2XgQD0ydLfB8ve*8?Gog}YPRWqFW z!6vtj6hBUV(ng9tvEXJl?hkVz{HNeJ&Z!OL{}Yg_eafOSEx7b z{2%6^5Me~UE{#3iUtK4wotE&TsytOpdxEip$^H@t^|r|Fe3aI^Ca(jObgDBZJ+S9C zUG+)fuMPT{D08dx?1I5#!wm6GPq7OpYKr z-dHBE?<`*!Sfh7CL|qtt+x23&gxeBdSq(Y}k+H~kOr*_s{kjJeZ=i`zsH>P+GGKx4 z3b{)xaG&cnvwa2Yz_TR_$0l>GpO8A|;VV`skEkmGU%xyW+?q%C-)EG%e066u@rbml z>d~V|RRS}iNGcVHMA92B2th&Y?qO^nAY>Tavi}^7d5MU&wziIrwyv_P<<@{THC*nK zXil~MJkr98jbTM%oDqjG-y;iGu4(uW#DgK2=1F(LzfpSY?R84IF|eiyH@k|JVQNw9 zh=^sjut5}tg-XU!q$7^>Pq`JsdML*E?+o&dsF8)(Ql<*3u45}4?oK0~_P`eNs8 z3zK^B+g6Q6GF!?^28A?cCVp?Z(Bd!t!?bEV zrVy#zDB-2vvafW3*sAooKezn00JT+nZ1Gb`TW%O<<(quy+ow>p!=5`*9?4*iz*^eD z(x%17bw|C)bZyt}vJ27=SPkTV`}WNRy`UpUAashk&5&TNO#O0&j7 zy+2X$0|&MnuFS2qr(0(yTnpt7&&`?FH!KD6FMM3S&-92+T!nVd!`ri5v|FHwmby1$ z!;__FJbMJ2E8IhmThCsIjSGHuZFU&#;7%|v8t)Gr#<0`y;q~@`bfgP`n;I*d-dH*z zsC$@;nd>AJhl~~n53V-ZfwSZOBu32g^=y-|lx%|f&K<;h`%R?y(a|#5UqUyGzUP8w zk=oeelwB16ji+3e!4;~-B&89;o&9(lgo)du`Cl$B%x#J0FzC;zp+#!@s?_LN4uQki z>UWJe8^ay^WZK?1r17WBK4{#$zB{Lnm;RMIIo`B}94NrX1_?mS+g6ne^=y|5i%Ki~ zZdD0S3CT}Ny)&6G$UK#7Rcq$IIDwtxr zgDG?*OEp~ouQfeuzQ$)-hu=m$Gi9ANi0s`P=YeKn8qvH*+GKqWVSlhb zr@j^OF-r(9yCY5g)IlMR!d@vn<^gYKeNJ;0-sTdcYx!4z2K@O4Wf=A_*`9pMd`Gy$ zXUDQdD?4cvf_+u&)bzJP=d4boAMx`KG|)lnf~n>l_xt}uCfN>oGWZl&m_z55l2LvqHYiZ$1##!|MsJ( zo;8=e9ikB@XVAt?z?T#C_R#0L8eQnQnjQi6ah$OS)H=Uhr@GLJxbSacG)N~>_I}MW z<8_OQ)kvK5sc*GsXtQ*sCVNIB45}*EFp~G)>4!|RR4LI~>$!4q`W@8t?Uzw|EcAje z)-bNh$#rj*QpdZ)_+1<16%B>VfbI=r7aPL(+=864gKx~#_qu_}I#MUufr&DZ z*^O3;NJeNQ_yBLFEc(Ni$qm1hr3fFMJQ-+>E;{iDP1qgS!TJ^e5_YN=ophNP|kfkWW1CVW9Itw2e8?gG*VgR8ODJQl{5vh>L z>|yVY9VOH=@F5$|P6Kz|)5BKoWCYJYdj@v-C8#ct8R+sf1=4)8L4t|d0w|v z2ddN$;gcIM?b{4JCv(IX;f>6DVB~fl)h;Bx*J>RqAQzocuJkhA+Bd~6iRV`jqoecQ zX3iSz>&ZDI7w^sJuq=7_VEVr0vmPiu)FwqP2)+*o;U8uqhd<1u&uB$Y z_Xj%pSZ=h9Bh_s>ug4o$y-HH12!>s81bcRef#s=7 z-A25f+Er9l{^*%DY+wIlyxt2obVt{OVoaIB>G;CO#kS|i#ZC5k5tCTc?>osj4~{kyjWud{-FrgVT8iNgFjPSAPFUgGbbr1;IZM-eP~{rly_c;{5jI z{FKM=^v$jN^d9o!NBM+zt0>bqBEO@2Bnahw+>SIiE-vhZ?ZD*<+ZlP?$>ZUtU|~3C zc*u{eHwuc{7j?3?Xh>C-dKTTyCgWfr{K=vurN(edd=BaT&M-ocf)U1? z?w|YtyNl(U2+2z)ouC#!E10Tn;lqmTw9IQG`E3&6y_Y@d z`5pb-Bp(@_3H9ZLxW8yCzEkkqD}pY)rp_UqdL8-SnvvC(cU}8#Gy=z^+M%A~cwpk6 zIN&USq6(vb8J=q@M&7+!&TDBgl~vy?#Qkc+?8C4MaYP|qNe{2ge>yw6u$nl!Wp-Cy z&ERN?Y1OYcd{%&G3$WpEz55X92aVFmbAV^Z-1Mo{`CY>)j~RfoqWMUGQqrQC&D^)m z86Ny^5aK#YBJ zD0r@Tbfa%qP=z%q@RHC_Er4J1H{=w_7-b|oGMjxuKS!*xApP*9 z+;?#}V~{Z(tHn>8KM2XarIcLQBM}3%rRxcF}AzJ}>RNNeLFplI-+-(#11;aW`ATOFF zjy7OH9`P=r87UA}4!po?D%}1~`6~uO1j6?PYLJ_e6iT)U^Er;6sBpQ>0Bn82v4??7 zjt^N3o7>5utaNhogutQP#N?!;0}#o68%0!|kTmjxHVc mz9xXfoMi)u^Nupa2meDI&hd>ORTXcKfa}j5d!O#1#QzTMW diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index bbff0162f..48650b4c1 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -578,9 +578,9 @@ actors.hero.heroclass.duelist_desc=The Duelist starts with a _unique rapier_ wit actors.hero.heroclass.duelist_unlock=To unlock the Duelist _equip a tier 2 or higher weapon with no strength penalty._ actors.hero.heroclass.cleric=cleric -actors.hero.heroclass.cleric_desc_short=The Cleric is a divine spellcaster who uses their unique _holy tome_ to channel divine magic. They can learn and upgrade spells_ via talents. +actors.hero.heroclass.cleric_desc_short=The Cleric is a divine spellcaster who uses their unique _holy tome_ to channel divine magic. They can _learn and upgrade spells_ via talents. actors.hero.heroclass.cleric_desc=The Cleric starts with a _unique holy tome_, which they can use to cast various spells.\n\nMost of the Cleric's talents are focused around learning or upgrading spells.\n\nThe Cleric also starts with _a cudgel_, cloth armor, a waterskin, and a velvet pouch.\n\nThe Cleric automatically identifies:\n_-_ Scrolls of Identify\n_-_ Potions of Purity\n_-_ Scrolls of Remove Curse -actors.hero.heroclass.cleric_unlock=TODO +actors.hero.heroclass.cleric_unlock=To unlock the Cleric _fully cleanse the curse on any piece of cursed equipment._ actors.hero.herosubclass.berserker=berserker actors.hero.herosubclass.berserker_short_desc=The _Berserker_ builds rage as he takes damage. Rage increases his damage and can be activated at 100% for bonus shielding. diff --git a/core/src/main/assets/messages/misc/misc.properties b/core/src/main/assets/messages/misc/misc.properties index 07f4faa3c..9d1ac317a 100644 --- a/core/src/main/assets/messages/misc/misc.properties +++ b/core/src/main/assets/messages/misc/misc.properties @@ -201,6 +201,8 @@ badges$badge.unlock_huntress.title=Huntress Unlocked! badges$badge.unlock_huntress.desc=Unlock the Huntress by hitting enemies with thrown weapons 10 times in one game badges$badge.unlock_duelist.title=Duelist Unlocked! badges$badge.unlock_duelist.desc=Unlock the Duelist by equipping a tier 2 or higher weapon with no strength penalty +badges$badge.unlock_cleric.title=Cleric Unlocked! +badges$badge.unlock_cleric.desc=Unlock the Cleric by fully cleansing the curse on any piece of cursed equipment challenges.no_food=On diet challenges.no_food_desc=Food's already scarce, but you have to watch your portions as well!\n\n- Food and the horn of plenty are one third as effective at satisfying hunger\n- Other sources of satiety are unaffected diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java index bc754f51c..0312b2b0b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java @@ -75,7 +75,7 @@ public class Badges { UNLOCK_ROGUE ( 2 ), UNLOCK_HUNTRESS ( 3 ), UNLOCK_DUELIST ( 4 ), - //UNLOCK_CLERIC ( 5 ), + UNLOCK_CLERIC ( 5 ), //TODO CLERIC icon for this badge MONSTERS_SLAIN_1 ( 6 ), MONSTERS_SLAIN_2 ( 7 ), GOLD_COLLECTED_1 ( 8 ), @@ -979,6 +979,12 @@ public class Badges { } } } + + public static void validateClericUnlock(){ + if (!isUnlocked(Badge.UNLOCK_CLERIC)){ + displayBadge( Badge.UNLOCK_CLERIC ); + } + } public static void validateMasteryCombo( int n ) { if (!local.contains( Badge.MASTERY_COMBO ) && n == 10) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index 134889e57..418c31a3f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -44,7 +44,7 @@ public class ShatteredPixelDungeon extends Game { public static final int v2_2_1 = 755; //iOS was 755 (also called v2.2.2), other platforms were 754 public static final int v2_3_2 = 768; public static final int v2_4_2 = 782; - public static final int v2_5_0 = 794; + public static final int v2_5_4 = 802; public ShatteredPixelDungeon( PlatformSupport platform ) { super( sceneClass == null ? WelcomeScene.class : sceneClass, platform ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java index fac472052..332932b1e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java @@ -334,7 +334,7 @@ public enum HeroClass { case DUELIST: return Badges.isUnlocked(Badges.Badge.UNLOCK_DUELIST); case CLERIC: - return true; //TODO CLERIC cleric unlock badge + return Badges.isUnlocked(Badges.Badge.UNLOCK_CLERIC); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java index 4d74e2f19..72ce096cb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.scrolls; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Degrade; @@ -147,6 +148,8 @@ public class ScrollOfRemoveCurse extends InventoryScroll { hero.sprite.emitter().start( ShadowParticle.UP, 0.05f, 10 ); hero.updateHT( false ); //for ring of might updateQuickslot(); + + Badges.validateClericUnlock(); } return procced; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfUpgrade.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfUpgrade.java index 752da888e..2c487ac1b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfUpgrade.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfUpgrade.java @@ -151,6 +151,7 @@ public class ScrollOfUpgrade extends InventoryScroll { public static void removeCurse( Hero hero ){ GLog.p( Messages.get(ScrollOfUpgrade.class, "remove_curse") ); hero.sprite.emitter().start( ShadowParticle.UP, 0.05f, 10 ); + Badges.validateClericUnlock(); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java index c9bd3e6d3..10f8fb2e9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java @@ -53,7 +53,7 @@ import java.util.Collections; public class WelcomeScene extends PixelScene { - private static final int LATEST_UPDATE = ShatteredPixelDungeon.v2_5_0; + private static final int LATEST_UPDATE = ShatteredPixelDungeon.v2_5_4; //used so that the game does not keep showing the window forever if cleaning fails private static boolean triedCleaningTemp = false; @@ -239,24 +239,18 @@ public class WelcomeScene extends PixelScene { Badges.loadGlobal(); Journal.loadGlobal(); + //pre-unlock Cleric for those who already have a win + if (previousVersion <= ShatteredPixelDungeon.v2_5_4){ + if (Badges.isUnlocked(Badges.Badge.VICTORY) && !Badges.isUnlocked(Badges.Badge.UNLOCK_CLERIC)){ + Badges.unlock(Badges.Badge.UNLOCK_CLERIC); + } + } + if (previousVersion <= ShatteredPixelDungeon.v2_4_2){ //Dwarf King's final journal entry changed, set it as un-read if (Document.HALLS_KING.isPageRead(Document.KING_ATTRITION)){ Document.HALLS_KING.unreadPage(Document.KING_ATTRITION); } - - //don't victory nag people who have already gotten a win in older versions - if (Badges.isUnlocked(Badges.Badge.VICTORY)){ - //TODO commented out for the beta as we want to test the window! - //SPDSettings.victoryNagged(true); - } - } - - //pre-unlock Duelist for those who already have a win - if (previousVersion <= ShatteredPixelDungeon.v2_0_2){ - if (Badges.isUnlocked(Badges.Badge.VICTORY) && !Badges.isUnlocked(Badges.Badge.UNLOCK_DUELIST)){ - Badges.unlock(Badges.Badge.UNLOCK_DUELIST); - } } try {