From 5bf5ff081006d6728ad4846b17253923dfa49aa4 Mon Sep 17 00:00:00 2001 From: LingASDJ <2735951230@qq.com> Date: Fri, 13 Oct 2023 21:37:11 +0800 Subject: [PATCH] upate 0.6.5.0-Alpha6-Patch5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修复隐藏13挑徽章使用水晶之心存档崩溃的问题 2.修复少量类使用HashMap导致的类迭代异常问题 3.优化灯火前行,具体查看更新记录 4.优化繁花史莱姆,种子概率25%变为5% 5.优化变幻莫测和药水癔症的一些冲突 6.优化部分UI --- build.gradle | 4 +- .../assets/messages/actors/actors.properties | 2 +- .../assets/messages/items/items.properties | 2 +- .../main/assets/messages/misc/misc.properties | 4 + .../assets/messages/scenes/scenes.properties | 7 + core/src/main/assets/sprites/items/items.png | Bin 91775 -> 91808 bytes core/src/main/assets/sprites/items/lanter.png | Bin 0 -> 820 bytes .../shatteredpixeldungeon/Assets.java | 3 + .../shatteredpixeldungeon/PaswordBadges.java | 2 +- .../buffs/ClearBleesdGoodBuff/BlessAnmy.java | 3 +- .../ClearBleesdGoodBuff/BlessGoRead.java | 3 +- .../ClearBleesdGoodBuff/BlessGoodSTR.java | 3 +- .../ClearBleesdGoodBuff/BlessImmune.java | 2 +- .../buffs/ClearBleesdGoodBuff/BlessLing.java | 2 +- .../ClearBleesdGoodBuff/BlessMixShiled.java | 2 +- .../ClearBleesdGoodBuff/BlessMobDied.java | 3 +- .../ClearBleesdGoodBuff/BlessNoMoney.java | 3 +- .../ClearBleesdGoodBuff/BlessRedWhite.java | 3 +- .../ClearBleesdGoodBuff/ClearLanterBuff.java | 6 + .../MagicGirlDebuff/MagicGirlDebuff.java | 7 + .../MagicGirlDebuff/MagicGirlSayCursed.java | 3 +- .../MagicGirlDebuff/MagicGirlSayKill.java | 3 +- .../MagicGirlSayMoneyMore.java | 3 +- .../MagicGirlDebuff/MagicGirlSayNoSTR.java | 3 +- .../MagicGirlDebuff/MagicGirlSaySlowy.java | 2 +- .../MagicGirlDebuff/MagicGirlSaySoftDied.java | 3 +- .../MagicGirlDebuff/MagicGirlSayTimeLast.java | 2 +- .../actors/buffs/Nyctophobia.java | 11 +- .../actors/hero/Hero.java | 10 + .../actors/hero/HeroClass.java | 4 - .../actors/mobs/DimandKing.java | 2 +- .../actors/mobs/FlowerSlime.java | 4 +- .../actors/mobs/Golem.java | 24 +- .../actors/mobs/OldDM300.java | 12 +- .../actors/mobs/Slime_Orange.java | 2 +- .../actors/mobs/Slime_Red.java | 2 +- .../actors/mobs/YogReal.java | 12 +- .../actors/mobs/YogRealFirst.java | 76 ++- .../actors/mobs/bosses/CrivusFruits.java | 4 +- .../actors/mobs/npcs/PinkGhostNPC.java | 3 + .../actors/mobs/spical/GooMob.java | 21 +- .../actors/mobs/spical/SlimeKingMob.java | 4 +- .../custom/testmode/MobPlacer.java | 5 +- .../custom/testmode/SpawnWeapon.java | 4 +- .../effects/Lightning.java | 4 +- .../shatteredpixeldungeon/items/Amulet.java | 1 + .../shatteredpixeldungeon/items/Item.java | 124 +++-- .../items/lightblack/OilLantern.java | 49 +- .../items/potions/PotionOfMindVision.java | 6 +- .../scenes/ChangesScene.java | 52 +- .../scenes/MobCatLogScene.java | 22 + .../scenes/NewChangesScene.java | 62 ++- .../scenes/NewsScene.java | 2 +- .../sprites/ItemSpriteSheet.java | 4 +- .../sprites/SlimeKingMobSprites.java | 71 +++ .../ui/changelist/mlpd/vM0_6_4_P_Changes.java | 523 ++++++++++++++++++ .../ui/changelist/mlpd/vM0_6_7_X_Changes.java | 469 +--------------- 57 files changed, 974 insertions(+), 695 deletions(-) create mode 100644 core/src/main/assets/sprites/items/lanter.png create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ClearBleesdGoodBuff/ClearLanterBuff.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicGirlDebuff/MagicGirlDebuff.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/MobCatLogScene.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/SlimeKingMobSprites.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_4_P_Changes.java diff --git a/build.gradle b/build.gradle index c76ce2805..628ee1b9d 100644 --- a/build.gradle +++ b/build.gradle @@ -18,8 +18,8 @@ allprojects { appName = 'Magic Ling Pixel Dungeon' appPackageName = 'com.ansdomagiclingpixeldungeon.ling' - appVersionCode =914000 - appVersionName = '0.6.5.0-Alpha6-Patch4' + appVersionCode =915000 + appVersionName = '0.6.5.0-Alpha6-Patch5' appJavaCompatibility = JavaVersion.VERSION_1_8 diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 55f5b0fa9..8665bbc85 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -1165,7 +1165,7 @@ actors.buffs.championenemy$longsider.name=突变烟雾体 actors.buffs.championenemy$longsider.desc=攻击力减少10%,攻击范围+2,攻击敌人10%概率造成眩晕……\n\n突变烟雾体喜好在远处骚扰敌人,他就像烟雾一样来无影去无踪…… actors.buffs.championenemy$sider.name=突变酸液体 -actors.buffs.championenemy$sider.desc=该词条的敌人获得远程攻击,攻击范围+6,造成自身可造成的伤害20%的额外法术伤害并有概率随机产生一种有害烟雾。\n\n突变酸液体喜欢使用酸液来攻击敌人,他们的酸液不稳定性可以造成大量伤害,但是这种致命的酸液需要时间来准备,因此他们的攻击速度会降低_300%_。\n\n部分敌人突变为酸液体还会进行多次连击造成巨额伤害。 +actors.buffs.championenemy$sider.desc=该词条的敌人获得远程攻击,攻击范围+2,造成自身可造成的伤害20%的额外法术伤害并有概率随机产生一种有害烟雾。\n\n突变酸液体喜欢使用酸液来攻击敌人,他们的酸液不稳定性可以造成大量伤害,但是这种致命的酸液需要时间来准备,因此他们的攻击速度会降低_300%_。\n\n部分敌人突变为酸液体还会进行多次连击造成巨额伤害。 actors.buffs.charm.name=魅惑 diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index d3353a077..b92bf174e 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -15,7 +15,7 @@ items.potions.potionofpurity$potionofpurityling.desc=从骸骨中翻出的药剂 items.quest.devitem.crystalling.name=水晶项链 items.quest.devitem.crystalling.desc=这个紫色项链下挂着一块蓝紫色的琉璃,当光线透过水晶,水晶的中间仿佛也亮堂了起来。\n\n根据历史记载,翼绫使用圣洁之心创造了世界,将其一半力量分给了三使者后,又让他们将另一半铸造为水晶之心。\n\n圣洁之心并没有常规意义上的实体,尽管没有人真正见过水晶之心,但人们还是按照传说中的模样复制出了这个项链。\n\n他们在翼绫的生日这天制造这种水晶项链,以此寻求着创世神的祝福。至少他们也在用自己的方式寻求着自己的未来。\n\n你知道这块水晶并不能给你带来什么,但是,当你握住这块水晶时,你仍然感觉心里踏实了许多。 -items.quest.devitem.crystalling.active=\n\n此为MLPD制作团队主要开发者-Ling生日物品\n\n有效加成时间:f8.22-8.25(阴历) +items.quest.devitem.crystalling.active=\n\n此为MLPD制作团队主要开发者-Ling生日物品\n\n有效加成时间:8.22-8.25(阴历) items.quest.devitem.crystalling.end=\n\n开发者Ling的生日活动已经结束,该物品的所有额外加成全部失效。 items.quest.devitem.crystalling.last=\n\n今天是水晶项链的有效期最后一天,切勿错失使用良机。 diff --git a/core/src/main/assets/messages/misc/misc.properties b/core/src/main/assets/messages/misc/misc.properties index a0c0c1b26..31a5c3f10 100644 --- a/core/src/main/assets/messages/misc/misc.properties +++ b/core/src/main/assets/messages/misc/misc.properties @@ -304,6 +304,10 @@ paswordbadges$badge.zqj_ghost.desc=完成悲伤幽灵的中秋时期特别任务 paswordbadges$badge.night_cat.title=不眠之夜 paswordbadges$badge.night_cat.desc=在夜间通关一次。\n\n[再玩一局就睡觉……睡觉了,啊?怎么早上七点了?! +paswordbadges$badge.allchsx.title=末日测验-试炼之心 +paswordbadges$badge.allchsx.desc=你从地牢的末日出走了出来,你今后还会前往何处?\n\n开启13项以上挑战通关,地表三巨头已经邀请你前往更危险的地表。 + + challenges.no_food=缩餐节食 challenges.no_food_desc=食物本就稀缺,但你还需要注意节食!\n\n・使用各类食物与丰饶之角的饱腹效果为原本的三分之一。\n・其他恢复饥饿的机制不受影响。 diff --git a/core/src/main/assets/messages/scenes/scenes.properties b/core/src/main/assets/messages/scenes/scenes.properties index b6bd9ce43..e869f7823 100644 --- a/core/src/main/assets/messages/scenes/scenes.properties +++ b/core/src/main/assets/messages/scenes/scenes.properties @@ -37,7 +37,14 @@ scenes.feedbackscene$1.join_link=加入魔绫开发总群 scenes.changesscene.earlier=破碎更新日志 + + scenes.changesscene.later=魔绫更新动态 +scenes.changesscene.mlpd-0.6.4-5=v0.6.4-5-更新日志 +scenes.changesscene.mlpd-0.6.0-3=v0.6.0-3-更新日志 +scenes.changesscene.mlpd-0.5.x=v0.5.X-更新日志 +scenes.changesscene.mlpd-0.4.x=v0.0-0.4.X-更新日志 + scenes.changesscene.shpd=破碎更新日志 #scenes.aboutscene.= diff --git a/core/src/main/assets/sprites/items/items.png b/core/src/main/assets/sprites/items/items.png index a61ebe336c53ed30fa24f66da09a13244f985f78..400306a11e7ee4689861935ba518d4b4a89a79f0 100644 GIT binary patch delta 33399 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

C$#K_(1H;uR4>q=^ z*`bj%vQ8o~EAjPunC^q1_{S3k3_DCQa4F%O0L+4Th z(rT^w#Or+!10szp!}(N`kencVR>Ko9hXI-WorQr{Q57lZE*`xnOj$OvQg>HV zS50U{laj1+0b(J`632SYwsLLV+8YQ2 zQo@}wXZY`tDM6yZfr(vogp;DP5yDAE$@kx*qo-@?m&zw2BSLc=YvM!)KMwx(DI&ir z1YKG`XAymMWpbGNAOhk0F^?*IY>eGu>84ESfl*$KvZmh7Qr^0#7qd($GfCtc#qvWSCzdBugn>f=2iL`Vx0U6rT=Ik42`_Qv}K=| zVE*ygDs|5)pFd;SFUPe1_CJdV9rP`qkDAR#*Wr9(rSbu+3CE??+J0h+BszLX{S)BF z&t^jM+_0I;dKe*$G}%C04PqSG?e#cjHG6y@`g89%ov*{HU(d4mH_(ME?}SJa2K)jwfxZ+)M}#}>gFHvIfH9zv7H-dXs6wcH~6dt;(rjGwrvBQ6fqzYYA6ZosWkP z{G^E_S`0txw!XLxX!;7no@cepCqE(>=GVztF>WODa(TM*+x)WkSr1|sK-?fveobbvr094n4HLlM85}ZeguRkhOuB4wDdg6P@K6IA%nKbPDZ5CT@qA745Hx}0ZMk#Y(qr8@7AqN1EphW9mr{g} z^ub(53p%b=b6Wb*Xxci{Ei_<$-e0=|o=vsLDA{Jqdv7L*w2|(L@n1v1_L=sKPGLBF z&MWTEd+v1042$m!I$~)uUrCi^eSKseNZo(LqcS|hICe;cL;#RyK=!tkg)zdbjqU&j zMO_THtJ>I>R_$0{@w1^CRq5k@dFy&P%q$2@yfbTA!WUMugaXdfV&Kk+MX>qoq2X!U z-~zi&=!(feU+9S=rU-bn(aE?!r=1+I!ZseeeE`lnJ@ZooV z+jd^}Y~GTL`@}bcAx%&d892?&0CgJ*!#9Z?I|jSKn7}CU$Q&U1Gcl2{i_}xf?P|?lekL_{M<2?pC{Z4dan50nV@m|=c-zjHaC~r&>m0X;~X1~Th(au$IWhx{;CbZ?ESl|7N!Tcby3BB zc7g!M92*ky!qHR}u>sFA(}fR|Z(@UM)t7}5rV~t}!{f5)-KL9AE6F?GUpu4QoB;bh zb(Kb;ZKq!-8tqctj9>i6ZVBIRrj)zMnaBzQ}_8#<& z#$O%N^c^yq+~QTu>)fO#f4VTYsiQJB7sMixmp}9zSy`Z2V7${gp}(^ebmk3=rt6V~ zKV;^B#yqQh^UToIy#sIv=_>&MXo&yZ3MJ6NZNKl}p?M*40dP0iN6`4HZTD9^J_GTq z+`*;{-%IUGNBWJipvm6X#Kqqsa+^PbN=*Ed1^CZM=t#VOAZ+QZ9fWgUtqwS1@_oUJ z^EnL?u-^$ZjTV>cd23UGn60h<5G#rf6=7}{o-24zJ8_;<_a}-*y%;_Lp0>)j&=OQ` zMfZ*dZ?T)US_~5gzPqP(>y-#-_Ac;wh>ZR-^+`^_vyScXae$dg87q2jz1VMAUq13Q zV0Bzz<7bIT{Tomr^%s~4A~O}>zqL9c)AZp8XA8jvqeP^cn6*{fTz}%AcQY-gMY(r zTjpJP`&egK(wa6`^quCDowT_A`8PRTs#N$Snf&T_K_9(w+~11icXH= zh;>sY%a>oVqzx%X&y{a& zj;1#toSCRXg(H?YXh_A1zBhx0iHVs$jQuSxPN=+_i0b9i2cTt#M>+0CxU)AkUmvDQ zgXW(YrMSz3joQV3!zoW`;cwIfHY~-LK8g78bZo1%%MFAFi_aeKv4e3sCMUHraeV~b zPN@uSJUFv=tk2&H3(rAo#hLgv-l?(cOba<7p5?Mv_A`4U7BTnAP9U%&d6p0G1GNrA z0;%Z#0^>{rAS27}NUG#6#-kgZh0FcSthVnRRBR`-Rfn-VM|LKJRaVNqHTJ?W&ER_D{uA6@mSDe-HG@<-yyYDZ0wYO*sA zAlM01lRf^83~d@Zh~~mG1Rc*}NEu9T40_MDrvj`$V877E^VdSBRDSr{KBGPU(Njjq zLz=YG7_YQ_+dP+LKxmWq$$EgMrnJ`6u>yIbBl95OYC!7oEeBX4GJl3Xa6*A+7EInv zZb6dd#<<Ri+(+*EZ2Q~pD_selSefL9+piP9ltKYe_@w7nIA%S`qVUIT?gnE+<%>o; zBSf+1vH4*8%-TH*V-J@mmGS_Gi1&>Q(C3r3-{3}Vl}W1X0&y5eAC)9EC(DgHBMRSt1 z3tMuHMQpBZT^9#Z%xk>)JPrwH#LkZbF$h*t(%xd3VVi*xnIgl9=w@hm7vDiZ)qzge z#Cb$~^w65Z#Nzl{Q8Y6}&f;uT(jBBxd9VYzyt(peVgs%*FY*uZfr5VTFwRqm_y zA7+^9+-6PZ&|$Ik9y>u>J{sst=w5~ zb!Ap5Xa8rinN{fi8z6TEf9zOGa&Zl<@TRVUJg(>Sxs8e--Q^{0Jl!GWJ|^hD=_>{;c{`k-&Xdtc6^YrEQmgk!2ovugWoeGU> zMP}Md81{dvU)Ou+Gj*i@U+1Y>c^3EHDc++ddTf(o{`axd{+n8A{H*W>dCI}#14*U z%~y7hH3z{eJFj%KK93yD8u}~Gm_*B4RQ;@=rkwk3a9vo~<|Gt@qzgC=*12|FxF^np z5EB^p;B^rHkxdbP-&j0jqCYXv{-P4Qdtvo13i&4z2;_9|5j7HeLVL!c=4gbt$m2>u zf--u6jmfks7rO&HzBgm$5BuB%kQ))Xt1}&LXi0$(6{=Q=`Mw7zGaqWewc`D0v^dkm zOQbi5%Lg(7r_!;nUABr}%&jc)`H%Z75eA1838 z{reNj56){k6LoFdKDQc*{D%>qH2E6maT#xwU%%-fcJXF(VI z`s3!G_JI?k^EiHsJ_Y5F@072#v|f@>*tp1iufFh0{V4s;@F{-CG5_D268YF22w<(a z=nQZD9nt1+Q~3hJM0*rN!? zT375^FZ{}em89yBRkhBK2}gtd2;(d6;+j`690knxtraj$ngXzg#+dVl&Zm7i(L#-_ z#YB0%di0h%9n03~HAp3ky0fdFfn@75-+cyo`oj?Z{=+J&^3!BWE3Z-D7Ld)OXQEkk zsnVA-V_-b5@ZqWMI#~0OUq(cgJSm|v6HqqhKGgEphNH(BP|23v5Nm=29{&Dos7a%T z?B4H{5X)G{UCB#Xzgnl^>R)}|UJB?}nxf^D8FmLp&rlE8M7GE=(Mom-^0 zJY}5u9tBNSvX!te01B-JYW!e6FE;GX{yY=8%{6{g>FOb_N8VX{Q(FLI{42`7+ zvE`B{(L9~k&2*0+8*0}aA?rbeHYAAJo6i|EysgHA$`!Nl{@06>J}LZlGaH<)X!cAq zopZOGGHCW}!wLn1LG?NZz+Wfsb{>pUb=J7U&5|bMW3pi%1HcEhufwxE1U7Mexe_$k zHTi6k&Yt6M3*lN~=k>!K*qH2nUqlOdAs z+RZ3^g$)j7D1+&nqZ4Y=v%pLsUcNpGpA~$xZIUU7Uz(fV|Lg4hV@V}=I&Yox{7s;! z`}UC8QiCf26xe+FCFILo;4w8$RJ4HrAZgj%4Wkz6+}pKro19QlqYf0A@A9)Y;#Ysj zAyx{Lc$!iw@lxJQwzWemR^UV(+$NI@aK2}cl8VI8hukKh%YI;!2@d2G z)u7RH`hZ(wYnkr8RLzmTJYKaZ?$pQBUQ?mcwwA2bZ zC-wJoI`(i$!p+gra2Bz{hohZOC%~Vry_|dSU(P zgDxt7CfECWq|B{tBcsX2(BDTeQAj*U)w`u@DZ|1@{3-TlR?OL79={H3lZ9uhn4}J~ zy&%u|NYD3UjGjn(q-oDig zAH-eSI#Mn9g056jvd5-~{jw9xoQ#)|?FCFci@6-(;=&n>r7Li^3%k4j!CVDfEw22P zD)6{{yfN`xvX(N-7N%Kw57v1{OOI6TY2b1?Erz$3?Y|2O91)ghTDd!Dp=b`CE@TDT zDIAlWLSab5!Bq`jDc9>T=CUdMpfXsvpM3=;hGWO&fZd-eB~d@`^${~(*Uu$l4+emn zpXZ>I^D*@m@yN_y0p(PFUg8gIFG-{4l`^M$O2@W~;yF1p z%fk`wwQCsEO&m!Nnm_oPnL04M*QV6I(0p~nLxfN;CP7CmtslfX)q_N-`9f5`ZA(BB z$i9q8VG)y&QvP3SZxz+n7rl#y;85HhTATupQ_+=@esyA+pD zio3g8aS5(D`Tfthy`h)EVussQ}`Q(x4GhTV&3zeij7zz{Nve@N}>`LH9zA*m)BJ zg|FIz9otr=r`pPd@nEs=!-5mcQki?%Ft#G`2ZmJL+YT-ktVTvzsItY>?r{c!CADAU z{eNOkS$k6812UmJ%ARP#1?1o^j0GKsFFTsaxw|@PE`=;K`YXR*)`cKGr)E;qRFOrn zjlHgN3+^L;8^Y*cZewLEkE>-OJg$yAGc_hqPQ+TmuSA}i!Xmp0U(7rnntF*v{QNk zuoyIC-eU^$t4mk6GgiAi(3R@b!1a*+nPlI%|FMPptYBll2@@R1f`$l%;U_(hY2a67 ze0>Y4y7@(LM%UTSe=lsr()->5KlPhJ81^kUD+-;sr>fO-Nz!k-MZp48H1}`x{Y~1$(iFuFB=FkfI&Yo-uU0;9RhiRDVyVl00k;)!s+%ZZHFRcLR5={fh|0Bwo$uVZ!0M!SAX{YVqTSoE&oPp0tY@zPu zAM6LmpzH6cz+aYY!Z;G%O_@q5FPM+8S;ogXhUJW3Z%!YFRkQ}FJ20S$97@^Ci;Peq z1FUC)3-<{@`yU*{Zc)I!J*T?kW->S1QadF-(*|19ANcqp*l zM5|Awz$d*{p!zV>6WtnC=6%w}zfY(3i&QZ-F|li<&F5QGl=*atmiX12nPH22)ZC3H zPGm$Q?yiPw)J2fA@6lU_&y}%WF4`PavnUk1Q{`fo$~~#N4(J1l0n%{AQCxLXS?*9C zDcN%BeTar8epcA^HnLPfgt`J%ypyuhg&NZT*JJj?Bm@tyST)2A@e3z?+KvAo4`Z@kpcajUQ zqkV1Uw4#*6%k2ACk`?%gACBglPbjnK#MFF08k0V^x_JD3eO52;56W#>zZAhceFqT( zI!Jxy2E+4+;9;rewB#qRjF^1Lq4I-(f9j2KWGvP;{#6l9$BgT8Uv+=Hb|9^l$=K<@ z3!S{mbC}@bQ^-BZON;9Mr`U>2=C@U54+oVb#Kh7cKVo}4qm~&+9>v1PVzgbAEGaDw z^pmiZOfLRPx?~9{?+duh28nBHqQGSj$F;Y zmrE>OJ5v*@b#EfQuUPM#U;EHkmZWM4}>H|B-zTEAr3xAt|oUKY3@V++{DdUOZ80>85j z4*>PbkU?c!XiLf&_2*^_3vGXqugetg1Y?c*S`fb7Ighg%p&jR>=0LRZ^Z1xjRMeC4 zidpr@F*{*(C6TGm&*vHn8Ywq;(p5eUaJ|mt8Q|iq;~@CYem_XKLfC{&s-cxe5^sNf zecsEepy2P10UU2+DkNx5NCK$pLMFL*A0hhaaQp-`Ypd$t7mcPSW3-=Y&9LD(8>EF; zaGakfTkTyHT8{+Nm$Mr9B;pGnRYv{8&0w_KrzH(k5L40WLKPC-i~%+n%ld2q-fi6_ zPF*OoT6)4e?QOh^p|QOTebeJyBXv_dZXM?>+tovL9yPhAef`H17XY~#-rWgGR5id) zIr#a=<5(c0&1e}hphd7T(m5ke>q;%351Gy)$p=$-Z4rn^kL=JQdK;#9Dn4w zl#xl*+bZuTh@Rx=kbtjV-Jyu^A}n3k3ij9h(guXW2rr*1u+le*1X`tdpzJlm4Wg%h6MU^S_sdD>F+!= zjB>gcf?~;ROWA9Qj~x2hd>5w`;?A-Uq6piIB}7^YC;rJ@QYN3ZCrTmYF)=c}D``Pr z+{RYKSogzwr6_NI9jV5&fxSdm?b#n}wSR8ig8aQz@4D|6KLXfwaCaXSF>4oDk;Xp1 z2Zb$;&S8qpM)e>^4T*py03d$yL>&KoY-o9T<#M$DuEN5A33htD;3%aH)-vDt`T_4b z&>3vmnXME}s50NJf9P?a#Hj4l_j_H_{U+8+C8F_1%SO& zcXt;%ySb0e@YGwl$dchRY*jsdm8T%$^I8;42ze*);F-&AD&ly_?=v;}!b^T%ihu;Z z7{QybZrya+SOFFpEEfvps)gJB=%}W! z=M4dr0^oYd2*bsKpADIr%vfObAjSl!+0o@`kwiTIsRREEthjM?Rd3*BVuIh7OWL&Y z?-l~TsF0x~{Qp;80{{DNJqU99s~{9$8=db7!GkE|#`=VBgn5+=Qdco{^7N?LdwIQyx8cQc6;O|~D{9OT^OzFFP%CysGelr9Vsn3k{62 zM-;CbtVyJX<_p4YeO~lIhUl#-{UEB0tjt?NRqUV7r@`!6X^gUHongfCXwULuLj=@? z`oXEI3_wEa(D8`9AYsJ#Dt92-}%th?l zW)j%@4XoO}MjpT*rYvFGdv(MY64`$w9?hz^&onF*D;+$?g zr&|iT#2hJ^K`^X*qZ?*#nT17PwvN)aRQlLb&jaswJ%7SkGBUHtY!tAuVDGU#8(m)2 zWau%Y?3_Rk=?ED=rztiz;a=DPk%E63bRP!o^!F~o9o<3TQg;Dt2F~v>dde2YL@ee) z$mDPNuCti=n!P;V7x(BbPOlfc{C^D#VJLydBoMx3QJbJ$jAx*nPZzt?FfNU#1x?V> zH85{k-Al8|dt%Uo9xH55mrv=ac!Tm~+errbyz|Y9kjwYG9wFiSva{M6Ct1)js*d6& z+)3n%k$9Pwk=~6*`x-|tWukP@k?)^`w@`{jU%Q*iN}n##2A6+Ng*e-U>%{cNryU(0 zva+Ya$iQ!WJc&=s7bu=S)BL#jHRbSWV2!u+h7(%3+UGzsy=u7BSd1C!^}f;CV5W7c zWAQ!KndMFPTsoIz&XZ^9n1e-Y=O7Zg^xokRhF#B3TIK90n>c9Acx>~R1Zmlh`POFV zH=lo{2~o^Ej-dqAPgKK%sG7j>2@kXTV63m>ZRxlNm4?+ea&JFUApzsyd9w}}&VIY8 zaG03o4&W(8$d*r^VV|sB$${O zzPH@6`P=J!c?pC6xW5HEAFD$>N7X!sP>vF6F9tpdTK`LD-@E%KXug*y@eGv5{wG;2 z(9R1}9>dS*B_?K4XUIpKKNhLLNc-3g#M7s7V}1MY(l?PZJ*S}V1i;4IZ+6?VWcF4C7mH65u~J3ucfPu(*8UWv<7}n zA&4yeJjM(!p=A<&oO35v>F@YE*jr|s^ZD){&F*Wsxpy5w?pjTtUAoXZ$=r`OP;S#< z9R-l?`7|*GzW0;`$%XN834`1QI6N+}L^{C1x_0`oal4(n-Z>g5-{lx4$P<95YN9RD za@j^E+EN)>Ysq{_!;iM>H1pM3g(VsD(%y*DbfP>;xBIW76I%?eU0mNcHQr)vZG~qK zmB%*5paL*%4{Q)M+M9yLsjfNhe^f2o;=CvAGPWtc#s)m?Ufxs90*Yj7hI*UFtI=~` z3P0Z_%`n7HCJq3(f<;cpHO>aE*6+8kS_3yN%^ zeCUL1mzT^ssCbojnzAtJ`4g7cpV~LkzE<4Bp8MOB*^)X25$0}L7~7y@7$oHuU)!^$ zBi80t>VMFAAMbl(37WtAXKBQL4x*bEZpi=R$v{A3wg zdRewj2%td$oJ`ha{IG@BHdsBuL5}?IK;cb<@@4DP4pa)`63$)CTtxU9n05aSR#s7B zEndgHG7EcPV#5?=eRqG7Yf@t4*PYKAp`etQxV*)iKtPjC^sc3xf!lwTlo8e%1mj^T zbw@$&F?xZ)8EBKy;#4y@cIhe0pOuw%lx?eUSW!4jMFoU6)->1lK?A`{n z+Tp6`oSUd|D_#$FLW*oJJNX~a@$#l95bTniOr7}x4v>4;TRJEN>~}!4YoPKS$MBC031a_{>1bA=C+{=_40nT@pc!=`>JhMLSnE0myc zRR1?0VKg>wvhEq3uW!-AM`uC`*C zF90D}R{;XmTEmEwuQ7PS5nI^8 z4K9^&r@=?3(5o4&jFlPHEJWq3@QldoTj|IApsq(GzH_MVl3LV=+M!1t3?qNF^=iD-qyn98At8;)C($@ydO}0Ea4U% zoSS$0|ERr)e`Aa-upxAXGF#@&v*4=P;kq2qykpl@rCry|KoBS#g|0Otjj zCj1Vy^-8=cj0ajG|NhGq$N4Q(a&I}$2HIu(`+vpue6iF*qbVD}&^;;jV4yFTt;5R! ziWnmwXx+obsF35jIx&rq@1Jnfzvd|ru1kjzqmTa-!;7ctloA4j#0Ubd3AO>-U{(RNx=g&?}M|OG>Z<9 zq>46t)MB6UU~>-$4b4N1YVGC=dbPH38)LQnxqkjvE(fA2w+4x;Z@vNjCoT z*=Z3z$o1oDf?c=XSXBc&VBO(OM1<5}>6ZwkL+KfTr0!#sW30Xw=$3=Uwap#Fnq@5^ zb?Gu%S=5x6vi0r+G}nHzXj8$KxS5fU>vJcG*4hc_yB zU2t^!un`|&6S|u0ak_Y`PLJl4tMY~mW%>tV;6vI?qbmFE{LP{omm$XE#4EQda!oXhamKoRxF?xGi?z8XT$&Xsu~xeW zvPj}|xs<`d(bDhWNB$>}1C1Pt(lOb8X5As0z-CsIfu9%xHOBhw=~T{xR$@fJ$QzmO z&l7M5is)Kn_@eTz?$M9SuC%ydJcq5rN>ie~c^m*+eTMnY^1QI47kk?C=tAkWEMp1);`q2zb=C2Ov{fU)W;yc+_+GI%F**4> z1WKdEBtQ$cyPGWRR^uW6Jm|K>Ir4b~?ZAFII8(N6PhF1Gzf!)%ZR@LqAvxN#ApK|) zn7>eZgsiVxST}Wrn<}krao}wv@uDJPZ(sO}L2QMfO?2u8060w$`ZX z$0x7FURSqek!(*Q5bRDe9Ho@$`hELzrR8AGH_M$LyQi-mUGiH`3-ly?G(8>*7V8o2 z9APp>lOyLLi6s1|EaBQ1PRpM2Gw(_W&@a6p=^~&*3YGRF>k1U z!4AZj1xus-C`22imqVWpfHRG8UZYex8tA{WWjK+J7~v?>0qWW8ua*b@}!{qF)eV5!-whfVtWf?B#TEz>`E0|i~N{@aXl;r%E#yJpU zxA6jBKlF|D-)hJ(gFcq+MA(b3SH;OHqhtrCmx3o7i7A@cfN|~-Fdq<%>o#sc(N4l; z0`#BrxGzdnXo8>S$o&Hh8tliXP%ZqLB19@B9j;raonDC<%r?K<#(`A6_Hyr7UQU`Z z>-sYni9R!mqDcy!ln}e*;u>zUnOEe>f8`_nUFm?=_gu*}rmAW#!u$%oRasZJTtpQy z%7958QgUA~xtF*tlg?SMF@=L0RApE=$&~r`XRAb>3)k$_d(dCIY4hL(Us^%%uA!3u zpbtC-plzIdhad)BNJ`S)>@DiwLso(82338|ly4F!F96iESqdSn^#$`5ek$9#6XpUfO{ZUjvAwdoy{XuehFXpXcz@hV|kSxsR? zbAtHSc>yk$!*9X?sr(c;pp!NsEiJ30WZ1NymICKwO_#Z4{BuS^9^+=#l-#RcUgW=W z5`Hd2QlNr(rEPs_WaKy3blzfBvWFPWXi~+(!9inu@j^ihTgJnN-B7B+a!nVxO#4hz(Rvtta(P7log##2~scukXXK6nEh z+4#HJ&5n&Zf(*<+BzKoIaQPUQ5y zc~6b{Ln?ndWywDvHg?CkN2Acca^?`5$n`W<7; znLbtsTc(t}IY>LTwVIN2Q+s)AJ(fd+5qy)Q{NaPkz`%f$+a(h}|NJ@$IRyp4Z$7|` zjGo~v;5~cE-93V^f^sIc!8TS) z63!GRh^OK2G(xh+C#YNhX!=8UF&+P(aDgF3_qjV%W)>DAYHFJTv@h7Ou9^fY(SVfB z;1KYpTa6M;>btD4*lpg){!jLYuiqiQVvKSBHfL5fsE&Gmb+YQPJ6o9z&mf94hB%x~&6+=y zY1e6`ye3sp8u2LHKHhqmo>nukE3Oy`KT>-N`y=O^=Tk}D!+JERhjG%w=Sd)YBoy(Z z;jEYE(fisRK%E0lP3FH7sq{?$UhY1SMgy5uT+$RtJW#KRi0ZjeAtGhU7TPrWUcSMZ zyV01s@I@Yi6XD?ECjE<~q^r>kcLkJnFYdesy`LZdTnYbW`9vOHE1&10?ZG25Iwxrt zTJ5(mGxH{Wn(6a<+)nI}4L@P$r|^XN_ol}L2DEJ$z?ZE^-DcO~SY%C*t(_hH<;~x` zme^8VG#ixaG7BlSA^d+A2eXj_0TWjLWa$*D{901S@@b`q;a7~MWxKn$*!dgA4NvzS z+jGGu$|ETsls^3p*3aBdBygQj+y;+pGW+A*mp}@yY-7`}+E^H;VJuw4c?1AoGmBQS zv@64bFTZ{P(k$@o&m$QkVMRskrO$4=g{b*Y1>- zGg~H6vLZ@znRY_m;Z59&!u2W!e~}~IzFTlV9@1D&n;(E`JSPlYb#yX#nXOpM6Q}sp>CG=9^>obxDoLO`cfEX0Fs$Lz;*Yw=u5Tnax3{ttP?+&N zD@Zb(^6wQp@NShIsF%B?apws)y)1AkTXBu1N*{@fOZuC-euS4ID(tkTNxs@jZ`0UF zT)SETJz23gLZzk$|IZw&r)^89+Pa=K6XyCy;_tedd%l^{NYs;(oxr|rnG(wYBJxP4 z&OJJ1SCj9!MRPa;eS(v=t4=}BcY1h8qFIdGr$pbsq~q035^>qVy1zbY`2A#YDM(#q zOv(2`*-F5q4J0!ZzTn-UEesC-@lY8i?X3OnR98$0C0x}L-MJk(`#20rG%v)b%TrJH z$BsKoR4lPn+-zBwLWLN)6#Dl8L>+j2)7UM<98ofJm##Pa(S-ur1(XOs=iWu9 zpJ_tKxZ~Qu=8xpskWOaX7;`BL!wV*F*eH>}SZIMb=p6eaj3oW zIk*(CDWi|==%jI^1eo~sTLJ58LveHnH;MxS$M{aKj)0qph>YGQ9ETw3AQIuk7k9KU zDJ+oqQ30sZgFaOD^i7xQ$VF4}_kdmriSjwyyMD^^IA-)lr+}AF_@7?KC2gW>1DaR&ssAa10lR)0;jGMg z+{k;~!V0$hl~3X!1{6S{eQ7(XIk{?s7S!J8Av3+5Y3s=?Q8cp|WzE<#UexUf)8?^I zwbUp;+tlpH~Q?H+*U=e>x`XW0*=!N%t;>4V>d{rHxV&?zise-vJ(7*4CKcfNIgZf!k_ZBs;F z^;)DMsC19T_bhamb5Y~jw3@Rd`8rxyWZ~KY`Wl10TPJTl6L)Y2BLlN6A?4Ozmq)Qz zMF^0(1ZwL2U-CERq`ZFGmBw^Uj_cB>9gR+#&qx3^hoN73C!_Q3 z?Ju3rcSfJDdi~q$OXglAr2Rr?EOzV*h(gLqp#Bpgtt2Rt-rpPA!o{-flV;Ucpod-E z8dbL~q9OH8iZ_8bw)6RMPEHh9&)`h#9WjlKxQ2r~QO^iY!+om{9`n30v~}DbriwLQ zQ1BR9{TEF3&!1BEzHnx9+>aK|hq>B$d*A~ZZ%3KoPT-!vAwQHHNwwl{$esg2#`T;e zXUG66Dsc(fNJCfd%+j!g$Pqg6RxFd9p;U~3-@gUYmKnn6GZV>CVzZ%Af8Ihl#pR1B z_N6nmU!2+$6(Y4*bNSuIv}#ObJNMfc(N&KVEbY;cvCVH|5*nZm)3Lzwx&`zfbTd7t zvi|f5|9qt?i|7^gs%bHs(Jg?+&}hqZA4=x+RrD^Yt*TU+WR`NrA|@(1gvH-Z%NIHb zN)`2CObuA*JnseOG zvZs^Hbj<%sFj1?g!>D4!sPw;voo3(SH$7^Hpkc1N4u1Q^HtNjXGF1kANrs{tulP^d zQ+z>&mW3gs{gbsywfPP+h1(zC3fdKhRP)VAw8C0&%CguH#MBI8%)0OXKOx3MREVzR zab@h9LVgT<%Ys9nMu_Kp^9hF3!#y`>AN+5)yF}%n`1$?25P@ ziIW)_N?(g6H%#|Kfo9cpHBPQDBv|Jk90`ZpysM9fWp{n2-VHuZ7M1r&5!L=(prl78 zY#J3RyS!%Nn;0G(bmU`tdrW?Ml^&MMlsk7o4mxWNtB(7bA7ehNsCI*rtlYgu@3zRq z^r4MavW*hB1E25&@u|Ewd7b)U*)Z)RzKd zLBi*m2W9YIc7PaX)!_Z7xzI4*nEZ=o_E%(v_sX0(({dwSxN@6iArMLNju-IH_2aL4 zm2aIkd#K1?>UQji7bVa035VOLG7v4D-I400jn`2!6ig4wD<4dV|eK#eEj$^S0RPx!%9&6;{0tQx>PX_gPAnl z_Y@ipwz-h>bhe&BR&o8T0`W?Toh~nK>is)8WONp_KkQWC9YZLJ76zof1~6EQB`j0OBE{}vJ4&Z1zCbH!!T0H0 zt+ORC=wujgGuJ?sS}LBrxxFXx*#Dg>4ca={Utq)@%YEE?_`wc!iJ~|YUap~gJ8%4m zv`k?mnPRnG$`oO3B)z|_Cu5hq2{AFqG(wO>)|enkLahHNB?Q=?Du#EM93-#Z$9g#e zGdDM$5s{H1uDgUzPEMXv=Q+FjTC>ICVqYUEcqi)Z43HN&cq)jOA{0i~O-b93aQxih z=HlupQlLnZPW{oqto3Yky8TIY#0x6h=hl>Pe-1?J?}5KaIAx^x`I@g+Dn?_f9+1y5 z{;aARGkHZR?7W55JR*}NY2&`6#ssM1D2fxpOxJ7UPIwk%Kf&D$>?^s~G1tnk+0KU| z-)VBgLb73yn2UpV=d6ER_om_wAHW;RnHY{!cY~e0dQa4bwZ73sr>gH%1F}mFDw#)n zbuQ7`z%lD_7aTofv#El1X`gR5lcdXfP_NngXJ7(ty6qSry~>Q+MB#X^&;ay15^=ts zGNTEFPu`dNvWxY0xj7%mo%@dn2q@%kH#ax?hsz`Emt5DSjXu7&%>c`=tm*G_bAbty zg49xY7zm8clI+)p&l2ryah?{EQ<8f}P`R{3N)jx_iNVS{!fzf{= zLW~$ZEoiTM^JS}a)KK*v6_68O-bW9H;Aw?2#!)i$~sSuZ+8J+%ELWFU{Hb$mZU_c8CbVzV#qg$0gL+Vh8l z4f@jaHy7x*+o77;+VrJ5sHYf|l7Akkg}%&nAU}0>agm2y|4U1NVSGZVu}rP$UyO7L z`sNKTBl*qQ5QEw8Q@D4L-bX=1#PFio&Xo8mfu#s>N0;-woQZ9RX2*4i@hQvkbX2%- zqSvtMb=2%|GrFc8wA5`aG&D4fMIpJb6R2EB`r*4g#+ny6pAAb{Wkk*4e2C6)`S9;m zuruiN{adEn&`<%uf%ut}u|G<$a@NM~HtF=6QzXYyfZ2cEyP7S+Q-?vR&l+6t2Ui(4 z{$t4zP~Le`6Z83SIq_#_FzVss>^$N3S4z+M3GlPAw{KMv%9`b40!-BtA;B?QG6jAj zgQ|PjYbPfTR*UuJda_8{WOBOpr^dr^cP#e<065*f0+6Leb}sW3GdZQS5bgG6d_7&| zw(o~G5ES1$T^2{BZ%Rq%jL#YX#FJ08`$`FYLjUIjufP_4KH)r??Qi2^kVVx zMiUi?iztSBIeq`1H;=i~7h3AWT_7U3tBM|0b}*Y;fpK3zMbcW`0Bs=kM?&a z0CqONJ5`krX0Xile6C+_5KZZz+}+>fK0SSE{#~wEs{!jl`o^;{${yUi(x#bDmYpm2 zBX(D6igOJ-*?hS$AK-9Yc6QF^XYkefGFXj-$3j7P56Uq{jy`gk-2R6XXn4V^*7~i5 z(x|BlcA18#y%t+`t_5o6vZ(QA3IAw&m}`3y`P^zwvwY>mMX~fq~4ri}zrUX>QwpzFpl#w2tY>9E1EyAks??lD2q#QJQ^O3xi@bTBdvW$J)n$lGZX8@cms&w-yD$Z@u-O{~-Y;Ra{a&vQLpxCUsAw;%>qMA?1 z^`-A>9&{wcttfBky4_3#{dnocV@N4WZ>UV0-RcH1y;iD-n~p_ zM~4#o=gT2~--&=Upu#j<9Ax#f(P|q7WPuuzJawd%(u&MRdGs@HfbQdeFhh-g242_) zBi#y`PAV2C%*eyt$AgasTXsI3yh0^9MsWP?RK5E&EI?||v5FEiw!ZGI6kZhP@i$CH zCTt(25U4a9jhPl8^Z$lKOPfA`^?{mtXQ~-noc=`w_6|+dxS;3{+#3sOgTWb> z2$F}=;;kP?sUaBzP^QAP4GspY7?71!hlDB!6c?8X9MZ#_rtg-=-f(354?WQsm2zc& zx-LTA@hft=o4uE3uvmJt`rB;oFO@+4c+==pn`$vuoA_p5?kM(cAGhIx&7fQ#Az8M! zhokf(?t^la4hs?$xo0YGeQ0&x{huGe|Nloe0V2@=yG(B^5A~aB4M3ikwCNYTP79co zTs|p!I75}As{l?TAmtOTncY_q@uvf^5@0rh!WE>HE=UGKnoe6yNnTzR%qmmkEJH+| z3ibRD>>|pw_A!p%*LM5*U>2y%M$#hCu0L#rb25n6V~!hWxa9S7>!3@@{{7jZdtN3n1hIS4qg?v@d{F~drnar}>^=p5&C|IeR!9B)BI9|E2*qpo zY5BkRs15`b6x7yhN2c!LdF?IA9)+E3XLB63e~PddMK511W@{l+bb!+z-k+Frd)pDo zb}A4{ttW}Lj=n#C=d1ikj6`MPlagdpc#J+MEALdoo_?Mduxl~}Dq%f)#>~tdg10Et zZ*D=p`vZQhMqanelRfGD9~MkC&T_XYd>uLF(ADWn=o}rYCN|=D8A41oKW zDfz9ikS)7i{W548_?Rv5sUs)uv$=Wh?7{e+tFVa3`u;u=Ia~w5a&--`$Mlo`kGYVE-5Tl@AGB!zx@m$`d7WP1Gl*Qx_%lGSw=vQ1VdBc1lW2Hlj zWXan3_Z4Zxx=E7h`IY#NMVUf4T`tqJ>Djgu@ogoy5brS{l**`EXLN7JVov;|nOMyi z3AJGp-jl4*+&^PC70l)Z`^jTx$CZ2B;B>{rNoJNRk8AtdR#XgpO$oW#mEf(T5RiwL z*y)L(-dZI^#L1YZ23pAp+F{#~nAd&BI%MxWfISbBfyVaUhLl#!UGYsD@_e9V4qR)wn3l_ac0dN8w?b8I}?w5dVSzYp^CLh&WwW$US*@Fm@icK~wwaznNWGKU5Ps z=?Kg0zTNcsvLlk>8JbeSQzf5$@$rRm)`Q^VJ#bx^lLKlq9!0toZXd5#_vWf!eEasz zb$=-ZIWslt;AE_zW+hde@_0Dh8Cl(>lZPIf$+;Gvh7#h~ z5V6uwhDUpBE77&nYGP{^ojI=sBeRb!PR60r_JdM+-@ty)o%_T<1j` z!MhHhzF~xTH(2XwD-ZH)Fu3g%^N;NT{=#k;gy>LpuzY;2I+cj0aDV?NU+L|ujzCnT z5F}&>@$ih49sXc5n5-}oD|K%x+9#FStP_U?h*3H5Sk32+}MJUMVEKW{N z?(4d{3xd4cvLt-2VpCGSwzP<)@Io!N`r?Ge#Lh>=@&%Iuxc@YWSFmDjZ+`+>7`%6x zkYyU?TV|JP-pk36(9jIRw+FvPM+=rJ)I20-Nojkf&5I-^uM*jl(k39iMBAL8?uOP} zDI;vGAgS>>1y3!U_64V^ax77NuZ-63w$Cok-jF;5R$P(&VURW3)w?YxeG*#vfzc68 zq*Cp)Nl+p$MQq=Hak*M({5222N;H0p)D-7^Qdc3XapFcT?)kQ}6|~}>V_$%$hg-Ni zvO>1jAU+(I`RdjRG;$oiy_VJlI($4OsrUO$sGLazqm!z6>hJG|*ULCNzkY#9Af#|G z*~Wy7X5D(y3rZmRe?d7q)hEq*QA$?C9>!%FP{RzuZhTSCllZ`_`?~fvd9rbLX^{fCq9f zStA5GJfwI0(7SVS{_o`plB>W2|khySv_u-Ab+UJzWh4W3qHh#ecncK z*ICJll_Hxp(qrY)T9I@%{+)68H+#KpZ&Vdx_;7JDvD6w1z&(UIkQtJj6wz4qzr5OL z+>>BmV?4o9PxYaUSdA?$lgLuSuA+1(C@5d%YeJDpt*6}-(9>a|RmbBck^f**RgKk~ zpRctPTXG+KjfAA6*T~Rts~RQ0J25dJjm+<4A4@xb)Z$~h87=o*kHf9)4L5)%hg)Bb z)RNlyz-T=+n<|pvu(|VCjNV;)T1_c}YH*d@EAw|3SZW;x?Y7$&Bo2hPoV*Ow!SUM- zOAVpO#(`T~+b&n9m0zIeMAhfUo7db2XV;f;NdfV#@vq_X16YGR=Fk&gP`%I{foak) zFo{AyNc!cu)jc&Rs3qd957I96b8(a|&jkSSgAl(vSL9J$(!Dyp&jtH=zFg{Nu!fT* zUI?1tpT+rvKvc|${CCX#dc_tqP<3MD1q+;a8_1;va<$@eN3ExA?#oLtE*mhhbktGG zk?`x(yBx&PeyjnjFdPt?UnNSJ?l|3UhGXWmh7G3+x$IAI@EA4AAiLxtGtibA0jFSO zDX{n-Kls|+lV=(Fg3H>r&ULr^p zUMJd+hgP8EJGD=pWhao%Qd~*6wiNPLEZWJlmk*qgUd4P#HcwLZbpoz%sE5dE^;?%` zLKRDIK_t&2y65m;LIvI*;|n`K0>+Y;<^-UU5F_i`r2BeG$(y%#cr?nNznWP1|4vj| z1UA=K=&%l^v%mUyR1KUMjN+|&+k-;PQ;2UocueQ>1FW|BCkz>{c9|{H@ugm{w z=Y#NRpC|c^Y)R?@iTd`gspoI}$3v0I;~Krx7WR z&d%UiqemXP=fiLdbMyI2!g^X_%)k+2;ZYcb0SjXdZNp<*uI8y8?KU#0vdEsRT5G1o zROfcH2oqFgi%i7CKvh;&K3r)__q)G}i;tH^q9iLTn<3&7CgJmi;1wrgO&+&!ss8tp zo}ONrQA={2?QDE@Hg6$d;EgfhocvFBVuupq+S(H@*lV>zjP#u(;g&Z!=f24v9%bri z!bTdFA-MjhL3ps;0k4|t5wUT0B&sL>&%Zy$ZotM-C%^t%tOr2O(FY_EmxhC0F8lTG z>&)VTc1dTFu`An^hN`$;8n>i$S67noAL3l5uZ*7lA<*B}0S;!lTF|7DPURpURjc}6 zR*GY>M_q7L)nn*+w*_t1Fdet z6Fvs<&Z#=-^<{$D+s}~UY<@^}h~zQjZNF}HgC}TqC-Nhw85zUD*@-V!;xU?C<(+e9 z`=9gcAYg%j07lhy%;&HePwD!nzjES#&Ut&+4s4I;@(T;iUZ?KP*Rmni=f9;U7o>9) zGgDbEQ}kz+!&DIwotXRQRmsb^pGeUk1l+gT+nf!CFQ*SKk?ltMvXTTCv0`Im8CA&S zgM%4*zq6e^=#4-d9Wg!R==$Nal_&4?BdpF?26+K&SlXpdP4%H#2t&8^^v|M8&&MgM z6E-~30;4W5-S2WDz6*}&+bRx^p{FB8Lraf=6+019srIE}jtAQLHJmFbw@?&S|8v32 z&IR}*k=w6_nW>M7Y4+>K>M0z241;^ty$wVHzKm4C*(in|#M+0;4C{;nER@p6{sq!& zXYT{5`cFDL<(ubJzdp{jKa0sopnM!Q`qY2t;c4|6q_E-@%u-w-p5dJkNn)Amg%W?+ zZ~<;Nz9S39B(Qjh+}sw}E`pc{-mrN+qq0*^J)IzYA45NU^l0lSR!_F#4R|g6D_Kl7kBp2gCkGYlA=ZHxSvmg#{z;uOA!+)N>ocm?AvHCx)zznd zG1PyVC$_Y-EJX&X>D5{=VFiiznHLkHy{&Tgi;RdExcV zxK@k!ITP8rdLx+(wN*Imv;_6ptpL={eQ3~Y8YV*e;Z>c5GtK04h! zJ^xJuyPnLVc#nKD%PY~>OeE5x4O>(1wo$32DYY@?_vYf~n7451k|;dN7XRA2Km?WY zA~M&HI3Q`;V>J3-QUDe)XA3Bv_!Q_9u{OFncY9@Bz3-(W{`88C^S&Sxm}e=hG=8EZ zVN;eNMAMJ)isRsg4JC6Mto^q7$ZZKublqLfd^U^a-hL-I8+F>VkZIAI-LjhGFgk~r zzKa4@1~Pd^ApNy5F%4>+hEA)o3AHDnm3TKv2l{!Xo>_%G1uDu zzPy)Llel2c#j`I=cwnB7exb7kk;}i4u(vL3xoG8n<(!35A5|7_r&J;i_4u#-I}@kj z?dKKQ+pd*8*Twjs+&vY5Ua#@6c{$9N*Van<+}yMp5D0zqzdi;i z;<|gUsmunb1T)*QE{9*3LHh`!0$U>42OfRunVz=DR?vzgRnkv1|9qx@+s6SK=5(r1l8gZFd&s2n7zLzt@2|paz`y%+Um8fTs55Bk<5rp8 zv(C_x%5|}+AY!A}e+G&Ay*B32$h_3q2q#u0c_P@UG@HPUA)d$!v`MX`P}xK`+TMr! z!E^pn7B|_f*4QN=e%3n>SdH`_rbcz zKEP^!hoVJ-<~3KZ%v)dIun^btqLwWK)+nkMS#>3Ti}oE+1Fmlgk;JB&_=%@daTBPV zhB{s9za~K32bWyn$JN|Bh>$RH1f%=`Z;w=FX)GzO#OB3YZ@M?4QtMr?t^Ufq z7R`fx^}k)n`OrmQ6ATa(3a!02+j~Maj4oA4B@*A)(tCRS!gbf>@A?%Nck6avTiPjC zFX&|p#YFt)00-D3IWI47DIY3O)z&%c%u!WN7ToUbu#~ay>@N56eCA}WJIk?0v&Z>F zK2%@y*_BkU;%<-D>9W#PAs2^W8J`&9))kco$}qakU)uc-#A%5>5*6xYCZ;+g`JG?Z zQuA1!Y_cIU~?^{%OR;9=1i8ut!y;<89C!Mp%LG{mQ+{wKS+k;v&Cj*y&bG^ zMmiRRA3dne?(S~IouI+; z<@cZYX7VPR_hypp*>mpRy?Zu$1OqXQQSo9M*m2a-xi6ceq9<^;HwaAI`@A5BEaBeI=Ciz$@xU}p_N4q@Ce!Sf9 z9s2v|BS%mq?V_Re{!+S~xER~`#}6KQntx5@t;Tu=y8$ti!Tr)SWqBSk*i+MCS+y2?z*WKV~TG_sGe+ z>Pp?La_HXA=xnz8qG>@vshNW~KL^$z#?Z6hzwrtpmHFr6AN+3QHb@_r?A$b9P+oW4 zTe_t3#aNxb$Hy#agw2#43|`E;ku?{+rm4b==#8M(f^nQ(TuilTl{o?Y@YboI@V^D+ zHHl5AYUA=JWk|SdUY~--IavETccXIz5i?G6Ht{}eaOH`raA6t7-iZ<$*J{k0{!rY` zi+eFQs4)&$Mb)A`mi(uy)6V|xHqEc^Y$$=l9MGl0Ob^EaIa%k+LDEK55)uqa7GO-I zY>5?|6h@5oLgKyP6;L&#&ifXFQ=$b24uYk>+gxM|iT>nD^tfaiX&aN)WKj`))Ddx* zKuVq%oun~*6|dd~Kgl;4d6+X=%lp9M2zZL9gju5`8zI!+QnItc_o^EX`^4Kb4#hQvUaeKUt&6b^Dw&SA0=%EFU|5NR zijn+}uyW+xwoiv$2A(i(49^&6}9heRFHNx4ukTlDsf5P5T~ z)#h*u^75z9I+gLoo)krlubv_bEQk!kniFehjil2(ON6~&p74u~;%2U&Mp{-H zrzfa<37CwPgw;`fLPm9smhL%{D^!`Tx&D>tryIz0;rZam`QYP9=a1jyetsFPY_oM9 zBnY!Kg6udnG4Ap!1PIj+6xK}M)9ADxMvA<=k&Cf>ks##lC^k3rxfvkM*X+uI08slbRKN z`OwpGn@v?I4cK#H{oxXaa&aZ@bo4BKoR;LhZ}y>rb9OwZ7YD@soiZ~GMmaZSWz7C^ zm(kqRA8kg+?HDk^^i!Xv{L6{wr}{o(|2L62y9s?UI%SQC3p2hjSk2_61-Y&_e?^!Z zK#FFyW30Dqn656A(+9$nChoKzmTBvfWA3nFZDsJfvV!W@Ae|kcDr+AWC zZXlL5b{_N!3M3qc7nNggcrD2z79OY<$SB$TAmFfd*#w^@rwM~wo&cSqSzTDk5_16x+6v5zg2X}1OpMTVGTlGaLwX|OX3a5~CXl8Qp zyIBbSd2K~LdOME*h}8ddGU5A!yU6$$B{DT0TTs_ME_ zNVs~uGm28I)@?JtCv$X~7A7BJ4VLIQM*!hG?~KKj;V(rk4z93fkJ639)AjzNfbO48u>|EU7z>_?m=nP?K+JJ{w z^uX!C;qT@m#a0^c!mawIe-;qfV#LYpurqP%FGWIXOYkQ8n2l zRNLlc3l_e2DgO&?C*6>jm%o0S1UP3c$dmPK=x=WR+`h0+Ebc}S4Ja8oqXrEvvcNoL zLw9xze;2OQbkF7P4KnADy<>`|@hVjF^EqOMqRL>KZ_TFPUtCcy*EVs=sZ2+k-|q+T z9|M#WWeJb9OPH2YQc~K?OiaU6d~6c)rPa%Tx#7xaYCXqTKtM7kZiA@o9=xH-9KX?blM z-(7glp&6fsNQWf*9x!W{n_t#t&LBM z#A~D-D-Zd#Bw^SDv3OfhlSLz4DXGqvKJ)Xsp#QpPdi$d+ej$)P%7m@rf+)4|vZ!V2 z?Jk7&Q#{&8umsyo@Pon_H|etZT+Sk(dh@nE-i{f5=u<(b-3Ww=N}z;aaX$B?3HcY} z;jNsKf;LLrk#za})qk8-8XVr@eBOfi_k43}oRx>o=FhOKxGrvF)jP`^AsBGeWhNZ7 zyef@)*$-*g8#Hg7((o7a)9NXVrZdNtbTib4q5VGD;%aOVt-A8m&hQRzC+D0#L{LQ2 zStAVfOYH4&fa5hz1UN!Zoae7cV<};pevyiSstVI-`X`A-X8cPXz!Be(uAaT9^*N%I z(%iB&S>K&vb|QPMKnuepRki$W>_hK$LOCm|db0N5h#!t1CHi{nxOc8d7W#R4_35-s~% zqikVi(6PCv3X8q~R+mfd) zLDGwYu5!MRNq#dBmjVk9Phdo`_?Vy4s);@X2N%Aje(^-3*1vWhnaOl4h9Rk`IsMW{ z#V%679ylqhBN29jzx2rz_b4yf9!ZgUJi{cUHJ|4hI-j5PMcag%c1_>-=Hzty&QH0> zCQQ_liV4`XeN#i#rl`Apx2wz%*dR@Y;YcRpmG_T^ z`EpbXnPbSQ-%C>vg6fy<<9Ah>=B~|FIT;ywPM{?G?0nxun_Sqbak|=aZ1FWp-r7dg zcfphpk42oq8zP*Fm=o$Zg5*^!S%uzrA>2ZfsxL zX1~No&E_=miCTdkkN%?hB=?3f>7eR1q(_Jh#>$$uy&QmoM<-!$G~V&hJoidmJmc~H zCK&LChe=8*OEd}*x6pBPA)SkpuvU@+Kk?+2T?@`>^cH+wZj z${1j&&bICVEt|+_@}^9$=Z{=hkA3F+n3MiC(Pps42*uddNqY~4agD+Ml#O%jVa z%4aUYF?YSt2Q5SSmVxLoPF62UwcYcg5+Gzrpup|IBHfr&1e2bJr(zW67K}z1uG)*o zz{3;m8<^zrNW(cRdHnr4ja!+`24EWw%pHU{;E5oamv)k+A30y=@993tZ4JF~h=tha*0%%so z&p{vV2M~`pY2v{v&8`%sB_)^f(j$+SmQMSV%v!S@>N1>g4$rWGyX7P@hHanpF}tww z@o_CsQ9aPHPp4BV*X(k9uymgmgYYMmXdr7Xnz#aGE{Xci5I$nHH?GoPsn}X;_mSHH z3sD<~#*mTPE|7&LS@KGBKg2;4-MtYgDBZ(LKDp z<{r-Up8}V&Ffin}=nx_l{_D3x@g>P~b6AnEy?xSNy!6+AvH@0eWeE*}nGfwUW7c2v z1Z9!3a2Q`N8eSZ~e!y9*8!ohJrkZ~RMRKCk(T(U-jw{g8d(QA4pq?e4?YGZYW9Q%~ z{`058T~k{-H$ku(q;xTW>@%D0yg#zfEtD&G+*=!xE-rPNzqnLs5J>Kh47eXXt_P}& zU{QJo?s}%e%zpA~qf5MaNkJjpmyK>+it#rFktnhqUkUD4kW_qZ8xfHm4Q#Juop-M8qU<$WM*Xtx#;U$XMMZ76seMshe;_BAnckPX_NRD{*oRFi z)Ho)~{&G!SoD(UFo!8_(s0BB3uTea*BkvXU%b5xud9TgOs+Uqc*2nybCGW2@N=rDx zW*c0;gXgRB?5pR&Q44NvRFlLau#*#Vjt0Qe12j3T>{+?Btv`eEKTt-+!MopvCLy3d z0--Nlnp(eCsL!c0%9?Y>1eXAq@KgPg5rUS1ERVE3c9d{wP`!6~EE{~SNj#>k>`ljH zvJus*GAuS$lQaB0Cn2Js%20hBSgCmN=G7bnRFHr8kJ8cwwBp8%E9$soyHXt3YkH?u zFVTLADESQTaP*__nIJN8gt|I&8^mOd`ShHI3$f1&@$dyn^3AGzd$4Dwwj6COlXd?jl zngq5S%;C%HQtAGMUjCwts1?{h?)^c=njW<{74n}p3XU+$X6e$Rt0*39w-C-xWZoIv zmY)e4^tDk7k&-Xma`iYxwO`5n*fC&M3P0kO71luX-J4ToRQvHnJ0;Yf9$H^3ViJT5 zqQLNc+_?m%ce?Tf5w#6sb(rrIGIa*%s@AE)ZJBK+Rs9wzt8`C+pOlilt6l;&Q;X#Y zJrRsgpFTNNS&ZNqZ5*%{HZ_+9Gs&BkG&j$~M&J35Wr4wcy?qegdugufZ{DeFa9b%N z^d0E6-XDK||1Zw9Odo9Lx70Xi*j1&U4Cq)x#NC&J&Q5S0C} zzh74+Y8)`M<@%aZg}eJi7p(+eX59AgSlM#kfwv~&S%xv#l%D>#d*ufr-`^h330S?d z)*w3++!0QGK$aRjHAz2wR@s=5tiORGu>cvm7Qw_I=L-N0ViVp4*%uH0MBWdDA8EUYj4XUgddLEld;4gE~;r46V%9pYCF!*Ccw z{UmYICX^8Mvyye2|LC6eBqHflS4tX&VeF3v@_K1QpM@m7Q%<>cg){wL20$Bq>7 z)zxSaW%m1^m%zCuCmuDM_bb;Fqc= zY~(Qga0O*zFEV~7LPkF5MU*B6_%*{~y{Fw`d$xwp*CoZL(jhk!2 z12ERz8gg0V<6!xB_M{${!3JiU=;d6Eqd$ajy1Vd)1pVA?&y~nWa=j)mpy*{ z=)k7W0yUKI(ZG1+wbJSI1AXG+7&jgFR1T6ID~g$&atC_zUJG;`y(Xn##YALr;8_J~ zB_zfU@CqS)IvBA&=a7>lHgYQ{Uwsno0}xri>H@JU?sDj;c3~;c&$T+K9W2H{D|8nd z!E^)&WP;UGMo5eK+Y1zi!LxM{A>{8<_;tu;)beP>@^TSpy5){~X68E^$CnRNg|cMJ z5r@{MN5^zAve%RD(R4)F%zlhR61p$$VarJ^O*aigxD`U=nj=q^n|A+(s`TZafI{(+ zq6$uW7Ki2Sj$PNE@AT9(eRXX1cu%U77289OxCl{Cm(nrLF5^4LdR&M+M#e~rTu+7@ z8C~M&eClkM!a&T-%-UZ-qRt2AE~C%C$I*S?iJRM%ixmWViFj>QF*sbyw!`3s2v;G7nbe(S3TSooebS)~k8|AiC6-uQ$PN+v+wywMEJY&n*Tt$+NZ zJ=r!pJK=8~in5gH$#<(FC-;m7?ES2)4^<#w0U}dn8p7{9nV%smvbz^tn6x;$0J!$U_y5eq3#y;L67?y;F!B;6hC<$wYL$ zj%K?r3-kcGxSPkakHqt<^K=Yi8htd{Oq7*4s$ z9&gc)h-(vhCZ)0f>MCoILY0x#_fCP2FX9m&I>!a+!`9s zeBd}q6Im)7H8l3(V($j#IQqJY!^6T-r|RvEH8u~ugP!r;`y!KZ97jh-a%C@Rwd9j( zX5|~X^uIfuht_ExXlp*2}=`ZreyI|{EKstgZ#daaE*&p(VvJ#!8- zO_Gw984)nC?frCB_sz`A?8B4+2p{e|;t(BbS8PhMDLlOkx9@lV9^!$8LAiHe%}XKK zQMtKUyvKx=u?9>We{-)x;~E+K{Soqj`Ekr8TYAYFwa>6znaihkjP!apD+KM?^lkBI z&tT~fsvwjrLrh6R>oh-ou#VOj1pXH0BOR21ulQ*cv$-7i-TZ~LP$9FvtXCCE$J0-f zZw=oir`&;kr~9=EpAXWxZG@6u+ho(u;(myrd&sF2B>pyEQPT=W}~=9QqN_jq(=ONSZt>k;=j?u@90U}7e*Eev30f8 zEK&&;iD23Ahb-F_bMrwkVw_apsu4kUb4o?Rv4eLMuv=+9jqvyT=4?L_`B4UXTG7Bh zr2zhf2PonEYcXaTL{P+bQcZX_u|rwEWXQms=~pT8;?=<*5Iso#!+TAlcF6hpYeW%R z__@~h8hy{ESw0A&)R=U6iI;nAJf2za@ikX;5b;;{oq33W>Ed%S{4^U67k)_I>mZlI z;E()~FQ2#TqD-@8HK1%C;#&&u;(x{Xsx4So4Ww1euxg2KcY#(FL!YlivchcbXnW%5 z(A%9agd~=l^+DfI4{_kn652(`6)AOxDcKin7zYo9CdmG@l9Duwk zHs!3hm_}k8<#KCTdilT7QIHd!jpX77uWinpFMW{~Yi`!oB`b-6oXFj!Dd#pTXDXe< z%>{fGrFWfr=FBGMDAUYY4Gi1V#D#=SoMzJ+5_s(%lhT__fPL3eU$9RkCsCazuFv#D zoV~_H|HIAa7FKa43%dpDnJ$~qeBj#qnYf$&f8$gdy|$OBxAIPfj{z*P@vmJMyMIfL zCyov|Dw^Vg5wpv(y|q6V>kr#)G?J3peP6)R`nh{`)ccJ+x7m^Vas1ocDeemNlWS{P z0RaIbmG3@GPVw)FKFut?0qGmN@qY_VYr0hhb$1Z7yn|iq4XOT!F4D*X4#$0CiUprP zAW3J_4{z2OHW?ZGDG+Gl%qU%zlc zh%?EIXqQ2#ts&0F0VgKIHmS*N4$a$}jslPDfR3a34^MN2gBsaXbCZn@&h$D_+YVQ{ z1UL68Uq0OL6F;k7BZe2Xh>=7O5Jo?LB%zuBPlPKJ{wsb|D#3<&PMwCq?X)d0t`c-6 zklQNq4E6_`V0ps_)~+TuMgkZ5;Wf_)6dPFFOZAkk=t0&2fDbM%OC8M1l9)stN0+@t zY%!jBC`vbGS5?---0|cIV?t{?vAkY1YB>;zdPke6W9N2t@8+3YU8W5~NMoTnyvq!! zk0PXE4Ep3CO8yLUeUDKNRXxDduA8UD%M|f6Ou3gvP7Mrt*-DCs$ zT-+%FQE)l{qB(>X*I7Yso8icrK{f#;S${Fc-LtQ>zcTmdq0I+0vs@pPtFar>l+v*` z%|7+YdEXTPfEfcqY-|QmQTIsL3l0s(t9YFpB4K7`3{yiEWJmc|_|w3z3Z=Sn(y~6q zfCaxiJAK-vk&q7xV4z8M-(C5@bRt+v2bUoZCImE^3%t(fNB(iVx#x1*S*vdJCGW z^1f7RV+Z_K*PI~M!TtI`OG6{xhZ=gwVgF1677VWs3?U1E*Z0iL%_TNaA;)*@mD$`2 zG1;-))5Tg@XD6<%ao(|#Q^Lmw3~AsI_iKU4TZpUOUb5u?+`0HGE~woyfW*p!{nj|0 zvn+hUfDXPnK=|rAJTX~Y>+RjIm^cwX>XGfY?Z%3y9aA2JT2`O&*ni~zg5{mvqm&-c zn7*{HEEnu!APODF8B5lkm|g-qOn`46A}6}Z@LAa)(ZXQkt}fM46NTHC1c|`Me6ZjP zdRSn-gZ5o$ZgD-Lwpj7@F@zAU*=W<#>=hl}FMr^vG1=F!d3}oD2ljuxZo= zAanO=n`%;rFE(9)jIo@oZL;~G$P{i8<6;s`#xE17YVkg>rn*}mODZJQ041xmEO==-IIZTawIXy72jTC6>oP=X7^pey+dCrl-Su}0n_7sl70C>Am_mixN) zxAPVjDD39xW&ziqQBL_&Qscmi7o`vF1jp$7;Rwa$4Wb5D5AyhPEY--^21EDou@;6c zZCyBNQwD%AhhWS}lrO4=_gbI(wV_83K-iqR!-A(&Hud8X9DNU>M1wd-MmQx#uraUz z^TYqtj-1Gp6!X@9zCkLybIK#iAgABgHbx&A=mU_!Fv`8*i|vDbUVR<5_~+7Nw?RY+ zj4ST8dB19H1djk}@lxQ8ZRW$dzN~nk6#)5nIdGtA(TlRI{w}S5NPIGW)r;+$Xlh$R zbHBonV9BROTRLUBmhjRfh}zGt;SNkmJ9V5qU&HhwX(K_I-kt-})m~O(yk`z#Z&)Aa z-+ODh%-8XEe74;dx2WAg9JZGHtuqx}DZ0A8zq{)^A<-^+QYyNyS$%4=nXB@cdjaGX zgE_^T8E#Gtchh2w4yk!Gu!537a(|2^9HsjaQH;b`9LNl07|1Gk%tYgnT8+qpI7rCY~W@1(F_VkQ5iP)=5_Sr(2)11o7% zQ_s16dhzFj(fL_ihfF-o;b;DeIGD2cZh__WIDl^qT$Uzm`b3#>j|2aE^)x7kU>%6Q zkFRWmL>sG09DN2OL%JV_Vnn)U!%ql9>rU+^k*4{KeRDay8=n~gjRXSQ{5xBb840_F z7sx+s3!-BkIzhT2wRThHjzCyr7W&01?#?y03v9P)Q~4-)N{g>t-aGZqLP#5M-8k5>osl>*k8re0}xij&Ir|bADbF1Lf=2uU0A^NK?gEop&^A zl#;v3Y)5o@(oc&Y?g884laC74?2X~%#as1qZHm_aKG3F+51h_REHHoaq6Fy&&oBCqh?&oOY8ZIO62q z7*lC3lL!6oPsImMv|+Osc)k+sWm}-V!8G(cUB)&e{p30wTtGx)+WKj2ZmwQ?Yi=+r zmDe9hj9CREYMipSsD#WlLM3@BXm=E`PE_6o-~cMQNG$8u7PfYYh;k-+&Zm>_qWS}p zIB&e3p!ZMIp9m@8sMf_Gr-IR<(<%!VS)5fUU`?Y_mUUFfxaaJ#Kj^~1J$UUxUS(m9|50*U|pd9Z%} z94N@GijOi{6T4|LSekU^G=#Q=%TLR-l~=jrTIyO4%?ftjtw z*75H|QXlb~b1)(2IVQnNsvORDF5m0#j7qVNv_Xsj z;`5@{DP_(~>%V-ks~v0kpZNS1DWju__gVmm#4pS25*FE6;H;&7vmYsI+xM$i0YkMZ zCN^0?sinn9J{(myQ%Ea1G9!j3y&1mr9;A{L-Sy4h_*~*8Eov)1eukj-Gtoao{@D`U z!A1vfo@kQ_G%$!2Q>SJtlgU+JHN$>}7B+Q(sKd#;UAc^Q$BVUv1PwesyG2)(DGb2v zA&SWQYH7wxCNniucB?Q2qz$N{`TBt&lGai6??(eUI1jUFVP4voifSkRbn)hN6v4_~ zJB(aU^1uf$7fyU4Pmma7X7S1#xN6922M*Vr51vlkSPxUL4ffZt|F5M!3pc=^Db>nU<4?`!2v& z$rVsu>n<3p`ElV2)}wiP`Kw}>MleY2wtGO9c}gQ=N4~E8-3E(5hX?V8$V;>k5vzd3@4ikR=tg-HTupQc}_o{V1CC;``pi z)l%B@^p|UT*WaKa{PGKcIeEgx5d28L5S?E+&+Jt~FtHb7NdFqX!9Cx_pek zZk0k>tkz=uWGpe#mG^C9E1TGR#Mhvi|CV?(ONUUuf3Uy)ZtaCpvZ(s-00;ebyNb6S zg1ftb8`f9%T5M(I>~zm|s_GA<#m~)#FgPt4;oLc)2q)bgy64#0r97^twEFQaM-Q~< z>Fw{Vp7yzf2cR#@&XzPFyNcM`*&%U_Agpi3- zR8K}s-;E8Y#Oc{z+VbXHkB+VjT)>h8Noqguc3kt5IV|mi$M_sDP zX}T9w+-y1{#H%Sa(mQZ&a)mS#W4W0yaR?s~KoRBijuTJ`wDqTEKix)C*IQf-xiD<% zOJNSc_O+XIN!jAR`}=!HRic>YFTNJI(3Sn>$Yh`4R-7xm(hFxA>3bo&bo(kqW+S}lbPUDt^1uXs z-2K>D@~KOr()U{Gtsp{}Y1>siwX(t5fYtYDa@<`JG+U>?d=Hki=b6{WL(;{Wmd(rT zDNa5!heDJEByJ#dptgF}1mXW!B*5IJ?!qXnquPu0pLPQCSIHbV|4}O;kqX3oqK9Pv z7CcAH` z(N^#jx)f34$vv7+R#^+M&-7()lLm(zroE&#z|PNS($LdW`SgiP*v6NAHNSs2mh#OTMVDHg$s|ijtXOX_yr0QC}+olFMZ8OVfAO<-s47* zzkIkBa0CL-4Co71G12uu5}6c!lfl}fxUasZQT_vvSbm?|}f z^8Ol@WBx594FD=L7I;R@BFXa{!yK0MAU`M~*Sw9A>fus{2#Uy2xu;P|Bvek}npJLe6Jsw^P|7vp?YFTK9 z1*2rgZ@qqFNfMPq1Xx@WnIf;DR`*~zUC(>DqjW8N3D;0k?_3VP-P9iXb51}@`uO>~B32QV zr+>5-_Oe{2iqdZM+x;o~>EI*1T&1htynJ`8OFPZ4vV@P%&iRdd9d{50A*4IziyVXw zup>7GMa6;pB1xk#F9qq2j;&NHXkHS`%@r7O`%8?4c6*)96lB}TWj)4rc5`EVwF|qp zRF49b4>4~(Awl>1?UYZ8NIkfi@Vw|)ak0e6Z1^S9dXikM(etn@)@!~N{4ZVGh0V7N zNRVksZo`2#riC87jVruq8O~NbWP51aOpG?Ra_aC)VyxLEq!k zWi0!V)mz2nA`(A997Y^`>nD7Q@L@aEXJ{p-ez`w4iU~z|Z1L#kf z#)qwfDzTo`>p`@w1Su!wTuYMXeDmc6c`U$n$j#9{x2!?A=&nti6$phIHgqI(Gu=V! z^aajwr#~nbzT6Db=Gi8i#niC~@jPfdFAKYq6?535{KTOX6x>S0;{F{kKO*g&ewPdJ zT_>*D^kBlE^T_|$-n|X3w$Qffj?Iv3sQ#kgCX(u|*biwfjEnoHub9+Ef#QI)*?a(5 zbVGlge-F@p_EQ@`SNBA%zRAiso@ETl&&pFC;=DsWA;i=A>pyIh($ad%=}k$}Gbs#4 z$)5T!q|k+DM0<dsrkq_a zZ?YYm(f|ZgnTbAlv^yAW6K%>U4~YI=iA0W>6$0uKYXh{Vb!h32MQf%#oo$bv$3Djn zXcb`_zZ5+i&D`e%2Ap_>ABsZ4M{c zgtR?%RgJPWmmOQ*xb4i`>4(V^S zL32BGIL~xS#i4!=u?mX~0$K@@C|o6E>tt1@9e-%$)8pA#WMIPDhq zeF#Cm7KBZ+%yw;o(8J@`V90DjccxX)UBvR;OxmiW7(J?MhCx#QtC4 z^ISe>ilgxD>X^LI=@GY&8UE`4VNQN=%W657Lt)+2rgPR@ik8mW5#zKOoqh;&+vL=Z zEx*(c`;8vL``p*^{3=+Joj)Uu^?sMB842*NtMkz_Qg0YF2R%1+;lg`<{q&8ZvZ1&o zM4B3HiA=FQf>?!>d9riBw>x&H&{whva0B`J`jY3NAk7u_`23}@>yg6->1 z1;fyPL-n$E6Q171`gTfY+T6fmZ{8#4wMki2p$~Z8wx@^MN4u6c;%`Mn+G^kATXqMQ znX$9mufiB4y-bqiR}WSlC-v7J`hF?B?xI`OrjD`HJIicNh zgMqoWlbPDm7&gg6K%*{sTV-Nmgu6$;KDJ4SY?wUvz7R@_pDQqxlE3 zu}HS8$hR>o$E7ebv)`&bHHV;M(X(T($KOvJ!JHVTD5fCf2`OZaVVs70N!l9}?re8M zUO>q63R+W<9u}P{hO*IWp(&XIj-uV+y3bfUL+?Pcavf^eYk87OLb z!JE7PNp;8Ck``q>$!nSANKt*osg7xR2fB zH0?@6jpe6L&o6ezEXOj%nV6Y*y&rxdkM``5QGRm`I$Zu_nD1>w&~&vMd0^%uA;FB> zdbbZRFgH+U5{K@p+AJu z({z;M&xXh4%Md>b%FC*^uukr_%3D6$8mI!81Kbc+&sn2&q42B;BP3e;*j5-=KT+FO zn#<6PTlun5=#MjQA|*MKsx?Uabs%NyUp7pwb0mNFLxsO^b4PfE789zF*#kE&d2~6& zaU`y5!amE^n8i&^sb<{V>gwvh+?U_3!sTAeMZMezpDD%0CA7RM%0kwo+{Nq32?6wm zgUmUzlRsSQQ{a)^S2N}Pu?vvnV`ME?4~Z0s`%t+r=YG)NT=!;SN;vp-9W8C=-!vwZ z&;t`CO(9Oli~PXtw=&Jet!F3y$P%L2TF z2hhG8usM~)=U}yOAs{erwpua*;H5vj?DBvYi$l|r2oIqK#j)OxNgPz-7U@0u-&U#` zPd4@~#6i!pr}|)tsHGZwS#F z6c*h{+bt}r@bQ8H%`+s944iN386wz=m>>Ifs)~P4(TTp^<9~Yb7w;UC zQ?G`HWA0s1PnAfVyy%%Y=pSnkkGB~X#%C)fj~$Fc@e4oqr?aeCrzSqvq7u350rjhB zVp}<>r<&foLD{e$6`?*Goh!o!HA#X4-KR-y`N`Qnt~S7zIy64`P(jZ(vX5Tu%c&|N5BHvuyH7W5ik0dktAw8^$FMsV{SsS^xrm7~+)Ag4AuB;Vr z+oY(FG2>M70KUF9!R@gs{&{p$w|H+XP=+yInRUFswbA;Z8Mihv)Yt#O-9I@*IU76< z!Iy#x)f~^IAH*#@IJ*eT zx)-ieMzUtGA|F<>l~5><}a+P$QKS5BrJ{@XAiUSDCOQ`uiHShtS09h7lty zS1ky&IjO#YuY9_M_}j$r+nok|86I#S&~I^({GJ4KQKQ1S^LKF=9v)tnO zx?dqLAz0W%7YzPDN?xlsL-fxv{4(oFfQ=bTQG`p^WoHJ%ns99?!^(1FG?FvfWmf(gJAGuT z8q^7@d)pWm#~zljpYV(UTDJ@NONPX^(_=)_*r#)HX=Ixq`{r(JT zqs?`4LR7x3vx7o$uLh@n#fCdwmUX0VQy#azWJ`NvkZsq^3I0)$XW<7hUV6S`Soc|9 z3O$Ou{wx9h+n8o*S<*o<4=A%dGD};!$opZQwinc*FGXyV!Z3ODSfCx|maFeNReeNX zR`}rm-t_X0Bll5L#2_Z8dBGX!`0~ro9}_7uHL!0zx#Hp9B|O#uL~C?f8V5cVUqB3_ z9G}nIfQ8ep#KCl7Le|mYjbv#ZZJNo1|P-I`Yz5Wm&C1`lNro)H4f_D@s!Kr^%JCvQMQC?YXjB>=( zB^&}5atWbE8D-YfYyXBuAETGhc_ql646q_BE>A#VaR&CDs@xqiahZP6zwuXj=HHwY zsszm&k~(lB>KnM=W64d+_;Y|sm8f)LW_$*pLQK8>@c4BpEeS0g{b(UiU`f?#2B&AI##wO(0>4)R64c) ziweUOO0e!Xg*0-+pV0Q2ST4vCvxqw|H&U^-D%~R zQX77SS#l8GS3BWH7|%5zX#kakQpTP-^q;vp#n)O%Bhco7(hs<=VX!S;`h3ERn-}5V z!pIvbk|e!84XKB^#oYCjPOR}$u3>V@{C%fUsk=FE08n#rB_%Qf8dnR((GIUqE=CjC zwBQ`SHa~rY`EO7JpTNA4xZo$+SBh!mK6q!_b=Ql6WJThw`wQbAb zqhu`344YErkR*+zMpUI^ODbD6o(KhKwB3EwkHZZ{Cb$LJc>7q#k%}A`c>^r3FaM%H zd>&x&HCagfaYcwW!o##=+bMSUy)!Q9^@?r3ja7mofqwxgU;ugbxa6NHB-Eq+v}4W; z(I9PM@QHtp?7N~B$TGwXA07YYY{`le0B39fWX8l`goTAQ8+U=?xBw}8Lo)m}Hx(@{ zdTT@$YHHaxg2`wW1cVGX_|k~wr`PXTWg*eKzeWX5u9(bJwCGRP;6y|je-;=9WN(EB z-@IhTX{ZC7KC5YU)jH@zmi$%+-jG^AI-O0b6nWAvCI!xh@2UbxqUof9`i$LyE zc`s&GH~A;^7f$Z@=P-L#rlvbdj$Ou>KVefJ+n<3djfi1DI2K(%L3D5b0DA3bjNrHNF62CsZ`@v)WymgE&3%h>- zD@O#uOA>L#ocXQ-6D`-%hw4fwleL56;%4p z){iWN?XMLZs`1a7F0P=+xS82_v7 z2L&2et5HdSI2WE?aJVBWQIerr7vBmtm+&oic()Xg1&bL)g5wE%kx?cJ zY+MQ*i`Yeprsdgm57;Y;U~Vsq*2Mu2y&?);gG=)Q;P?TvfyIyQ{_)wq!;;^&EL}LW zW@m}UCTJ^4WjZ-jQwG>k#wZB%R&#D~D&0=|zvVl!QF| zk`ES6$0N_OukMUmJ=K6to9}f1cIsx}o)G=ia2znlH%_A(EG%plp*JMr>F(Pzc5!k> z8dl-7xrV;WmBu&H?`D$P&NF;or9QnR#xymKhOkMG0EBkh%7bozyVJk_dXOTHZlE{0 zuU^i((@wiq%}s1HA|4L!AFsohCJ;}aHId&gw-NG!Tn1)YPm~SN_vuTR^~MJ6SUcmw z3QW4UTTyq2z$j=Z=HleO`^Do@6U+aBUG{}LEcO+lR=!1nTJ!$TEhVjQM76EV^sKn! zuxoN@U;AjR4geXEwvzyz#^#m(mb60^URUCKBwP&)iS@%f{vZwd)s_S~lY-J(jB&k| zI1NorOUGWevT2YkgU7Bnzc>K3W%t{VL=Oej0}Ys|GjW-42xd->VQwA0~DUyR`!*B?5G)c%9C{P3ZWH4|_K8ch}!P8UNh@(&|!=jL*02Y62Pke{z*-7W~I7kS%{7UM4t36kjLiJC#iqW$48x3IeRf_{1HQUZ3 zEMMO?SDRxas=Z#VG)Is|YoA-23YC6{J#QznZk{}3DC)?FJTPl_^<=&(nT(R5dbjZ_&PGOZYX=dON{}3^;cy||IVi4WUIS- zS!?Zu9q>;j>I+>k{4yku7Os=N_HpTAeeELD$@X|0P62n2yqj8}ed90W{CC)fwB790 zDS>Bi%OTvwU8&h8qMx$6Wq%F44>>!v+OpQ?%fKzo4l3xVj*<2wjpZIK{!Nh>TN77+ zutQUl&)3%)_1yJQ_e6~cKP|54bQIx9$U~U65^TQ-vNOI+?Qu4T@R`hX|K8=06o(y4 z`C|<+yiK8xf!&l7JQeNZdEz4m45b$r?wo#$(QMSqmNHaeN~%WPEtS}pnd^B?I-tzT zS5!Y)V)uH^gJ@IKL*_K6-ixMLUT1){9fP+0p2USl{*Te7Sl*FZ$L~c&U8X{})3E9O zNH-_K(Pr9nngj}vtiM>IzZlUE>(o=^_Un)jF3rT0NT{Zy(u)0XF?sMhQV5N^#B}%< zad{1KAZyTqZVZV~m>juo~EEgR<$-e|HZr5F2Tw&%TaYKOUF{iId zZ(WN&dBv*P_%6aJLl&8iX`pRr=EZNfE8XISZ39|YV*&%$5M(yjBeKR0V3bh4>ILv` zuG7i{ojmJ)bbt{0O(#nVK{(jaB?rn^zQspCs*`jj=~ltb@O64iCsy1xi_J=W$YzjR?P6(!@&IdA z`&OH3GnpS*!M6Qi?|)>Zn)l^B%gPhV&pH~`3x$?vQen_;rM`pcg@G0Qsj;k!z! zaQ^{a#$4$+_l_E`JXp9Q5${xSV7*lqOzXCjo*NfNwYc(&s90m-+C`KwtsTnCnUyPx zoC?&)$xHZnYGI;l)O_9mb<#(muzyGC=fAO5=)nD|8on!H6?^N}^z6s?lNnz+}sqN1Mlh!WE4_z@< z2$L1jCyLuB9;1phUZJ#J7Pl%feaY+U{M`(|lCr+G%ku zRUc>{H&{Wnw-Y1nwtFxFLOb!q(OqwG z_3OmiJp0}K8|X1!?U<3_3)H~!nr}V<>E4=e<#MQI{_qIt zH$sL_mkQ@_{C4i#?%BVbnUjzU+x=YmC(!zwI@$_%rwDk0Ms)Q|$_%j4LA`!C@oSaE z4nGZt)HJlchfb^HLlZT%0k7P@i60FVsCg*V8zH#pVg646ltyLD%i9nPUYZ;QL*u&7 zn;xlif9Y&;!;7O?@`PY8&s23~$;rgpY3~GJTF~sj<@{w8eJ4)@FB16sJHbU_vUlb(28!R&+qmBsaMgA&M+9wiOmUffmzbvw3Jq z!c-c32&46Y$c%prIch@2qxvv4wF3;&8@RD znKvLxzWwGauh)0A*zeP*Gd;@FPzD8+vEG6s=-c$lSn zwJo020u_h7``*ktK_hZ+sE{RRk2wI3?6(PKET%pZyG(Lg$jqS(2xM1`cwTNCqME}J4Q>=HZueqr zlKG;ah5XX@W4@c%mc?lK17}ZOnk(+Y_~p}1Y@#=TJIE)wiEINq-J{?iBrc9EP5^)x zbIFU3v1G$MQ8rn`E|lw8T}`~n(4kA7D&{b z2rqniGqH>8Dq()V`}pP=8F(nfgag=Pqx+_ccl7_oL%Zf_z7}^TKbr13286A-5K>ea zv?DPU1W>xhPnXT-?Q&Kdy=MO@eO$%!M}_r~OcrKu!gD9#7y>Cs z3r4PbuWwMTjrTD6m4x_#jATv7z2bIv!oYLsWfQwnHO3wR@kl4Fpa|!qUlY)jip6u= zqp$t`H_ayMS4??kL6BcutqxD}dcPzRjijfg60a0eKZq*e?WOMNyW3wuCD5>i@Gc)n zIvC8QNO<8S@jyLq&<#~)%>!a6VmU9LWEZveiCC`iX#}v7DjG7uU6q%2)O=PDaD9cF zy;1>d4m^f`D>t~O?g@F92_2*7|Je{^R@)W$%!O+*#+D$@`6}{a z`1cJGC$Q~QXS#6BUYp6~0HZkK>@&+nZ_pd^wgKJ{Qr*78(1lrp@WWv^LhFAHu=9b5 z2EAG+OI=ZfU~*80h!PozCF40|PR=xq8MSnu#&tbR=KBf*c#IN2S|_XDL8S>_PSQ~S zn~*Hs71t1uhNUPEHy0iOMX1Q%pGX8QFhbFMO0`gm`=L5N-8&ErD?0JCj*h+XIrL>%QsngM{U6`>{#jIE zzseSmX8{WB+|HYUw9J#OzkiVWGO2C_rkh5qy`prdE~$%a2@SWY7zEf%DrSvl^ z%x+IgKD2p83JQw8eYkE?2*JKM1C~ZsLBHz*VD-JH}0zmVA@~+*~RTrueRN4%N$*SWYmSl?%DzsVAr$o;snO>a7I-@gt|6XUkc*ySlw`8yg-se|$( zJ)FnJPs>On(sk{1IZ|5fbr`WWQVg314z~2kCf*$`T*FI6@Q&a- zYDbp0e(^e4%I+6Je4Y+L0J7D50axDPC@K9M+zq6uT<30*MC^XcfVoSlR8m&%kN5qN zCuYur-2F6F*7t*D$85+Y0oUZSRfbE`QEpV;l5+_qDp;dnmG5Sog#{(Rk}%rT!2d9w z{2BG94pI5{^SBtr_>sC1!9!S8T+%Gk=oPico3@I#H-|@S!lwy$*&Cv?kf2htVrY}6 zQ)2)+jttp$ke`7MX|LaGj1#*;Y~h(`V#=_Cvcs+5iY`54vq{nf$*dmuu<;bE7e=l$ zU%yR6zWc!8jgprrs>`k4`sjBgF8bdn-QE5*^+o|vUmV0Au9MNv%v&y&7&V;db-bxg z!Y7O%uI96H8N|qFu11?xzjYsK-v!76Y_+fWcV;G9vzMnxfyn6SwEVKV4@p@L@gA&T zJGF@f>giP8afq|+?HhPD%0QFzKNEPe6&-zZHYd@zFIqp@yS7*gVoJRECuKZ(-+|O; zGFNjhwy#>;HVKXG+4goB*|)cjGir2%t}OYtcny8XAX4A=xupg+E6yMq(m;3cRSJqR z63@-&7y|6Mm8c=hM~e(0q$h8Nte!==dWt3)$!N3lbesd5a>*y=FRXjoYorcx-o2t_ z7c@VJ9!Fksga5nXtCnu?){fHrRn_EyTU6dG^WcPL4NVhCZ?0l=qvWF|Qv^{YyzxVF~+T+{= zjOs_dc|q<+E5@-FqakO;g3nI6<#NZY-p@AQn=USz!>I2N+U4EdD|i*(CP(KhTu(9r3z~28fz_ zdfu==H$p-u&yQ`|&%(m?*-eVd6v^d+FqFV++B_~SgPDHq_v+_ixntTQ=Z1WBmc1a4AtAG?}`d_sC9C0)q* z`QvwX7#rq7F)NPI;wHTg`XI*kIS(8^EKOPL6!4?IfF;J;?(F1H%*|&IqZmN!o2&q{ z%gJvZzr*Q$G|)L%SWC@3F$p~DqbAFs!ro_M7Dqvb!J^yFlAL=tzzTgU2ObKE?Lzri zI(ds*Jw2a=&evzW(!)1}Y#{?=R8)8}K|vKYlwN0ZI&Y3`-W-{O*W0}j`P%Ege-_{H z+p*gMn&a`)U?(S=WlMFc`2HIm;80SsH**1Jhmct7V`*-#60vI$)!E#Y-Fjyv zOrl+OY$LOvznS(UvKEc`;dXyYEc#}y+dzr|g&Wd;<0)b`xaLp3l6eGPE%jY&<|ilZ zK|02u?WY@jEZW<9LJsrZNJ0xY<`)Z#p`Cr5O1q$mHInfYk7M`qkqY=`zqOu7S&zI# zyTfg%&YA=!Z20ETXYl$gwUxQ~S4{>#2armU@5kgc&#}>~_4ZUdE%n6qb}MAD-*TIz z{I2iNaD7eHY)^+#%~b%;sR5rz43dxzN>pvVjfx*`G)aROoNb;90ygBuZ2_ zaD0Xl6H6PxSIC04NH|9SY%v9YbzS#Ow#+*|GWdd)I#qbJ;NE^aa`D(O{kCl@L$7qM z+^V}OSLu01vZlF6G*Alf-ButUIr$hpGjq@E?5~K3pT86|RaJrBKi{x5s|{;13O_<< zv)sGO&pUS{TF-Vv$$s=M5tjRmzI0gcHuZ8|XICyV-#)`&z>5}Dz|TxJd+o4vt#uIM zvzx}PtRoGMu*b#5o>bo=eU*`+;NY0~jID2 zT3n%-h>o?wi!wp94aFW#bP@6VIlTE?aXT0c&}OPxKbp_eJIv-f+Fp%UjtS{p03pIxh6$ zH8VTjZrW$^;|6-f4YNr{M-eLor*?SmbULl~r9Z5d!D&A(Y>C3}4QG7w2YHWyqnRQz z1%TVHWp73s_Catl}TrL!3I9lTi*YL{#PC%N*ie(#!9mL^pLc^z)f*}OL(z5L4 z%C*FxCUWH+ODX;dP3dd`4Q-9bOiN)$Z-&t0;l_lVw@#DK%w<3BI^t|r3U9Sc&PK0J zi&#u5f{aL-ZYhv*KUyHxBW_Zff6HX<@- z1*L|s1dU4CiminqZ{CfsbywIB@1EE8AvZO;e7sVZKvou#9)DEW$dW*6?4ADxWZ5|1 zC=^RT;z!dsM=*$qZ4$|=4rnUi@_9CNzvuf}y;mlN4wLXKZ*dedA*Sxrk-9T#)YA)a za`bjCs0%fj5K7-$8be1JscVoPMeNZk%dYciB}0{WLC9kLdwY7wMYCbBCSdvgWY1F> z3)__SvxIaIL6$p{vSqxbpg2&(!O>2PYwFI=GFpB*5KTHTF~MpHE#(^Kg1LBn&}@`? zCiIkkh6-T4+DD&>kvqd=H>B?SvVGFcsI@$L$GUw@Cib(u>D4J=ZV1}QmuH)&o0G#i z-kePszyIc#sz7TEu0aa70tNG^$^4hTMwo`UU@-opDiv`uShk%KDE`VPF9^`;-q;kc z=Mkr2HFIlfeLzDeb97z7+Wb02EnQ)}vsII)mda_BRPA=IFMDjKZU>c1@Q>*zl*p$F z9KS(}f9dCQsM4^p*l)9nU&om~k=Py6fMQXrM8>&WH3&Di>GOk%+BmTF30KrKFBdsB z4_U^7+Aa`(n$T+jui#{I@2UK#>K%hwZGiol@5deNkGtsfAe1^>R@qRv|5ZDtdNSToR2k-vwc*hV7qXFW&y{py;B zY$Fjg%cH5i@z7+fANBM+Ma?D?;mRCa|F4q~dEkqLv@|vjPH9n&mDYIS4lvz=pcQCvT|p?=dF5eZs{O@E-l&d` zP_6jx)jf2vLzw&XV{@I44%T@?M|MqeXekkEHIP@kK9O-N?4oQdyVeCYDH6?<0X`Q& z`pZw-S|Dh>PQ`uSOpnnD?Z7F@6_T>8GpDK4TB=wkJNZx5?z@`}Ej=rZk;pZ8XBI4lG_ei5n^^-%&dhm*mm z(O5F^{roRFF9ro%I3h0wq&`>;Rs-@vsSkYVaq&>LTmjXK`p%mAdlpPB$HAe`KZKM( z>|Gbg7{bI{%#ra-Mh)uqZwEiDC-_I#Ewoa;7ZT{`lU=2%vl0}7d4HJ-f(=Jnrivp8 zg`++1SIzRY8{bj#Ebz78)i?nbFYQv^kKYDDKfpg6d|A8OT4>=YYmd76D@F^IYUKJn zImhUiO{A?VvqTAEe%GunGSUFp7arFWf%!U_JPKHWJpH2=(7XU#Ss9=2)y|L-l-bEW zn$8_vCmgi_DVpE<=ko4-8+DEM;}snaYgf5$e`g8D38%&M-lvoQcg!xBOYK8fiA8*B3K zI-x((&fGN2I$?0DumJmt*g);2&%3ybbC40a<)Cw(OnegWOw3JBvKIGSOL3xbUwndZ zU7^hXk|%)&7y13hdIX6c=PHlY9D2yc2I7rxJv+JoZFx|Qv4omLa(TPA7UoO4Dd7eqYnD=X+R`Cd;i6X z(?pF?A8JUuS436kQ`qiEvUGzjHIjUy03svRrf|!nuruBb%yJX;iCVU|6p0B(?wnk%UtfiM59n3?J$3q~jZhB_o^S&gjMG9!lb+y6qi$ zc`7QY7HF4A7AmU2RoFF;kHQ5wS@=k%{UET#ePRYgfn;2hUggk5Q_J-E6v^*XK zmWpt}rwyd63X35Y3Ox7$fdti1*b=73x>d<@=Z#8AUV-!slm`h5QFKurNhJOIJR<-2 z#ke1DZ!CSFUn|r7Y}L42vnBv4yfRP6VMkEh){+MO3(zN5s59!V9hpjmFezVP2&EzC z0=a6NlTb3P`D6|ZIXO9p7g@&5jk9AFO?+IOSdn~YOgjQ~Q{5Hadp|5alKvn*JXX#^ z`DzqyZiR^C@9y;il3Hi4cq(%nq-35VyTOvPx>IjHmOXHx0x=GHpCG9yzm-&7ksP_+ zKA9BhZ5K&ArdhRz4wS68!kc*AN=r)< z^0}T2LM4EAb@rw3duqVWTp-Wq;uMO65uazN;*-U1wqUB4cv^)dBt)Gi`1N07Kww?} zz<`RXYOg;W64a{kNNxq_+Vy8$7)FNox`WZ`Ev7^A@+iW>O5vNfwyxdrB&&8@lZxGC zWy3!oO-U3eGVC#T(uC}{f+2?Eo(7VG4lVJ|*Fco^A*{8KZ-R!mx5;MJ_b4RA<4+4@ zwK+LmhM)0xoDVQsqa-rWQ_nyVAp zKviaNP&QaN`tDHjn&z+b(PS3Xz@jn*5H^Z$lYUte>+W5y z)%GX37usV!kjrLC#5b2|CvKS(lRWBbU|=9VUIk~h`S9hjb?au12O(6ZtD#p%9iEH< zA)iG~h@|zzO7Bg_m|osS^q{ut?XnEkDjyBwZD{)~Zbh7Z#Jo%=Cm{6#{Cw7?B=Qnu z;zk8uYNPufw9ID-RsnZNQQn2K;fMf1DXOr@Jd$>?UiNpt=&U`t0A63QcO+Sf$qIEF z{T%P!{pr;A9{TM(il}Z2u4p~U>`~f8TEH&k){%LycJ_Q{^X<=5<>q9rxGAb$8pX?V zH%r+y=M4hdZZNd-FA1Xt>;(;;P~Qu|e1*=y#b(dt&CQ?U;!pq@F~r4}=}XkvuJWbh z{?Eb4Y|jT@9ZMY{yvlVn{zXPa*F%|1^D7 z@qUbZv=u>B%b?6<1A2Nv2(+EXP&ZJul$he(gYjvq>ttfR$IcH%5yw}0oVVDxS(F## z&JOl#4*+1(xKR+vxLLC)Y2_Usl*5h)+&6hb`qnvWou92{5KGosBOjJ|f9={~Ji6+p zV4O~Li7zUZ7>s>Z z^@M$RekNS1w=h=!2X*}TJoY&!#6&#yWW(zQ8Gz8}_;{m-4}Cl>n&K?DYFRVli<0kZ zvDV8QMXa68qhzSNO?wX`klcKHyl5@jOLGepjH> z{ii4dxrQ|o>%WJS4JImH^PfEK%*-~IOFmSbYA};R!?}0I>qBb{!fm_1u@bd)(;)8{626eg<(^9gl^0 z;ByN867;Wk>rh_{rs$wi5U^Z9NRtIr+h$bpEZfHUmB~Imr&YfO7TX|H*M>YwYn{yB z;QUNdL3Pv77vCn8v|)x1klDlyix%*@JwbP6=W2VycfM^cul-7bWVm7)G19^$f1N=3 z*?>j2>DPiT_>-@@z#eA4x=_jbWb zr4{#)8C8DpdG#3@`$UQO{PY~>MV8zucto*V(~G%@WKR_x(l6|`##+Nd~0+N0ra&!Kz@s$Txu7u8ES5RTTgn0G#<-Y7bB5JO35p5Ev9pwG~J|=Y_LrIFn?@pFcih}!@Ra&zJBf2 z$KFhi5r9DfpnFObIVM4gNI59rkPzO6GZ+rnGppgCb()@tHTo zC8&mcXeb5!r(jr6l}mS;y*o|^y%3b56%QDbeCfC8Z?0#ZoqrnHwQ+_KbF&Nm7SL=U zka3z6&9PSNr7OOj9dO4}9rFLYfd9ug`rjy=K{|ZS*k^w(wrStu^ywU>cdg1G;~lMQ zN{{)^ANY0Ox=aAAfa80rU|EXSUee*0%D4;cA9%3j`&b zt2Pz5Ot&z7?kRel8$O>0iWEry{$ztvY+yRn3Ox*L>U1Es#|AIjV15SSAOFs@O8~hV zGSE8*oCVFj2Yy$nx#>fY@7hE7=jtK%M*ZhfsYGGk9RohU{2^X3TL*fZfYHFc426ll zrYyqu?SjophJXBJU9lSb!N_*DlpPC$**_IyK{ELP3Wm~-RW`&P`lovU z6&jBUc{Lm%0A<)hHWFZ%o}tlEiK_Yh=|g)*$L`r#99&#nE*s6e&m-8vO#a$om3&CaK1TXpBHmOcvm0)xR8nSB})ho(i#0_SN)O5P#O zsJbohA;H{>+xjjF&uvS#)8lORYp;xO=@H4(RMgd8`|@?|uTS?Hg3|k0a66|#AU6;G z3&$v?3vSe2H}g_@*jYE&yOpbs_Kx!ngBwr9k5jMF(TzTws8K|`d1-3}vbeL(ey6;t zTOows0gqO63yZ^Y!I;6jjPIY$mrzyd{rzb_z*KWmES(Ugrlwxq)vzOiv?lG=+P^vO zaf*qJ8sow`-#QuDE-9sPm&-aYg9?K=X)>)q@YGy2wkPk>lgaDc7Mo0;efm2UZBnVP zi#B}uT$(vdj{NHm9Z9*)EBnpfpKYUtb~5j;u0`sw-$o#$>0D7Zx`5 z;baXrbY^}Qz%yaOyQJrQ)TV|u+iGrYHDXKEypF0yiyWXhkVZ@H4Sk+t);k5h3TJZ-a4Tf?vU;+u2HLzI1e&4dZn& zePD{+b|_4cXOo4Nw$zCH7OBhS(DWp*3B%(-fPrA33@a1IUiHO$LoqJC?;&XT6xxlr z&h{9Q_q@hD&Na zi&aEHB?Xf+f4taWg$pgdZfj+$K_TzG z(r%9dRW;Z+d)dOObCO#=fJ!pw29?0wD@7Wymi8rT=WwNkJ(J(f^bPWA`s}nnp4i0i zc2=(K>SsXaz}gG4H`O6}))+%HyqC_d-Q9k)zp8&Y1;yPe$jc`+QOCu{;|tjrYiU7%;T%(maZrVuaB0}wFASrI z`TMVSM}~%njV5zM-Mze~%eB}uGBdx)$rV6V44%u&}J9yA$(?X3Ugfp^6F;Q^6<+{ z~qmb8fvGpBjuyj9)H4|xPr`>m5`GAKDk=j0{UMc+XxMh7fLVDq~VwUwXePB zA6XawC5S=>EJF_gSXo^?oGHQP%Z&2#13{N2y}9DQ9rHEX{lJzXfr!S5+t{i{f|Ee zCBWIYc=(^J2#gcGL{^ju(b$e3ztmVTLpp_Ou@vKUbY-A^Xj6;&+aE39 z!;$;TUAW%;0p1}0xgsd|u^+S2|28&zXNoGmwbJ4Qs<)zah2tV_?g~maC>=I5v)7Qz z5%i(ZygX)8e`$TEKzfW}a+e??+OPDu9g39G9ui5&?Rd5GjYYrxtGxUN=$-?x((Vy| zy4)0>k}{aYtn*cYn{+1aOTML|c+qt3^kHaZWa6}uvGJ~R1Dl@!BAFHtKO~{0g`duC z*T~oO2fi=@7(F7$vf_xBoY$xBYC%D2BHr9+q=e_;{_(Ft!$hHrL}rAw#_II>>h6&d z;pW`@45Fj|mYly_Xzsflgu5_Q+ffc^~^6}5`2C}3PCJjf+JpX*Fi z$iSTNKP1oYTMl!Uq1uq&9-h+w*Lgi{SFKi%HXaIuJGP+EGXU(i29y(!mG`Q@8FUW~ zp@_KN@;8LDjijfhTFi?tIExU$^Ep9?-XM9xcz)ZV>xra8Ps><4tjXZg){0(rt@Dt~ z-ROK0P#4s4KjXcFHcO~++LymOSrnI%L4|_g$4{RepKdH%PiqCcieCa5nKK-hryR{p zO=~@GE!C^^<@EJ|tPI;je7X^>EMutC_O%8wC4WdmodyfqTjF&^i(@Be_QV(sRIp>Z z-D6kUMk7~&Hpi?=?ynU32BC27(?;F+^A7_0k>~jrPm*=VK=qhCW0i>56^LooXXr>{ z{ypdbV=cs?szdxFhLK6PBR$x`4ugLO^)_9oYtkQG3)s~-o@Z=>7fHMr5Rg=?9%8Bz zK&FelVO(^(U=>S4tUJ#cCTf=1ZgW2DhSu1n@Vl|76v>+$&6JF0@+Y@A?Oz>baPmxf z=_EM*o=4N&GAsStx9F0`poNVk<|OQ_jF| zF?NkN0PN3!Sp7WlGvtGpaw7z4_(Nz_y<5jtr^E#X1wYtQ57s*Pp)k6AvRF4$qJoqu zFP+Jkmt{9oj0x3Rvk8*h*t}GBvtht>m#)K6XY6+N`1ax9VK6I^gA5rOq>(A$$OHyv z_eN1)uHcVn3Ij-P(!@ho^Ht~KmSN_X)W8TU3OManqqg(rOHg*N#ccOMgZt|W=6TV( zkAL*L_%$P>d7Xz9({~kYAc>(-nWHPOkjlL(5XU_lR9>O#jAy(2dIJ8WLT+k;O5A$PPs8+CqYCDKhPiDivwljRoJo`MTwM}P{k z%*Y#5hTdOns8Dp0H)4HY^T92$Oj>WQ=nC+L|Jv+o57HQ;b=&%aFWE=iK|@bEo-pf7 zkTht%itVnT#xc!thV(PxOT0kHO|?~omj?!=bkxq>np!il)(4SfBro>;woC!vE7mqE zV(Z8wFxwv5tj$QRq@<)ew0C+r@HY8FVX9;On(P5uN?GR0hxndA!oq@{p8n_`x=y3@ z@4C9WSv=X5MqsVHBmIDV}1Is|=CRtR6$p7b+g`RDYN1}*Rc@^K|8{Onml z_Y!$-e0a;%I|h96%XmJQ#(>vfwfAV+OCgXIPmXZylZV4#6*@ z*7d56r8dsY4b*GFN0)#EOQdhL39S1@LIEQ-=K zeAQ;wcWo&`g_5WT`Uar5|IDstdFdlasaCvgAINqO+D`PDjsl;>Olz>bW?gO%P$I)t zNO$!9(a`@fT_|TSQ~xK49Y$v9_C%)DifY-w>ldMvyVI>}-S&j=#;{w_>6;}q@HE^V z$KB1`Xrb+2qWe+FvzE?><=5U$6h)*K9sbbIA1-=<=>|`#>>ZShWE5j&<8wz9G^Au(~t z7*1xQ>(dn3MxIsG)st#XdXmdAK^5ntnA$<^@NKfxvz6uJ?y;~_|7Zs(w?#qwdHXgl z?`qklPibJvDX=!@AYcE(bpUii@Bdy07;ruyV2xOpJe!Y(C1G+)4gIpqK`5{1_p}#V zGf@=Y-?b|Fakq1|Csf!WI7i@34+KK!{_h-vCRzoU=t=*{gLVzxZT7B%zx2-PoXCDB66sFetE!W!eSdm z8&CN=7iylwtUo*$OUdi|!sGLNXEHEwzIh9QH46FAa0QxKsJX=eh@OK#3m*vI=38Db zi^-uZj97gO-;1=_BW2q} z6Kr#WhU7I;Fx;!*bTzrzrY>lqF} z*l+NSDnWmC!BAL$y52#b`_%zxZhnZhm=a)w`Sw69*>nt~U0fVl`Bk+b8Oox}{6tk4 zg2EkrYMm6zy3;XM1e}3-!^^%Bm~zk%E4ID34Uo80FT>yY<=&D7@GI0Bi?oPsH{f}8gD2gr&I3yP$eK}g5RI;~vPtb&X3^x-1XAzJ&Tcx|5|c&jLTFF2zaznsRB;B-E~E?tAVy>9yK4bkDU zU%8b|dlO?q*h_xy@BK3iJ-tNw4MqOxJV`Vy6go_J|7fZC?abLe$22wEE@hP72s|U# zQOwc8r$&~|S%22}Y8Mp4Q-~~@pOI^Y`suPOjIDYhT7ZbPb$Q~2o2Lta3RJzMmCeU{ z?5vZj7c_;(tpX#dpl|p$XrJhuT&athvd{-q<$NNc!1|wkSM$y3hYM1{xH;2T7ZuS$ zVU!8dzX!(-dU$$DTP2mfC*7E;c}gJoo3Ed^%gQO%rq4}m3!duMiCQT`0Xx3ys`Vmg z{)YH))^-kUw^U02u!EKvUzn0%m$knfl->7_m9UsK_I)us<y>Ri z8-K1ykA(=$!8Od@zCGWbPn>1)qnwiyu=n^2ss{)kq@Qm9>F2#8PYx9sXJ^XE!qK6t zi7x?+2`LQrZkRYCaCYcM2Iqqj6Vcb>_jwlsooliC#^|NdFkb^I;qK~seao1u8`jo& zE=(?U3eKx^5zNEmx!It5$RXCb(4g@UIU@6Olu3AU?UXTFMdX&@5@Y64jrl){GN-S@ z8w>b>BWYz_IHlDa^-R)j=?|+5bcszQr(|$p zH~JlOdxtSp5no=s%TA#m0fB)gCW@MxU$)l?Ya;r_ieh+(v_fmkDdgm^y3X3jw zBI+)5N5+jB@%H9P^zeWkJ$X4#eARU2uz}++@?{n4+1HphqK={L1~KPI$*=_SEg2n7 zQxL#0Pc4)v1vio)Resn#@P&F9==rt(U`D;aJO8$1cxkxhsm?!5c6ZEa&M{fjShhTM z*cexkD-Q%sMByJsGvZuAHIP0008}Nkl)Po>W{D9&idXiiW7}SE)gB84p z9z0YKWt)mt3razd(h6^C?sC`ky_@_BmRveut*i)Se^PvonTEa$e%`Z358!Tx{d;!j z(Z)s!LSuz7y~mNEFOMI12kr(bZ0yq`4`^dWDU9hBz|hO_t0?vi!Pv*GKEI>NJ&JbI z$(;>wuMwIW>d{@(Vd#DSeeNG2m{SP9YkmFc0Nsk4tO zrL6zp_7@?rHUrpOf!YFKngU?nlMl($)s}xRTeLAIIEN;@UizwqR|=lI)a%!p-zeBh z(R(ai-Qc=N*XDs!-LmU<)N}yMzXrSm9KT*trW#NrP_zKW5-~PBIwl$_8sC`eS3dW& zQHZj73V%~Gup-Fn5j%Lx_ z%WKk`JC3pWM-sEG41OtkTD$^$J-y~7-23<`9QHwIhqE4TTxg>c`aXD587A@J)n-q| z*Gu2nd7NI&L^ebz*S9!Zh`t4Wy2b!p1Z>Z_knH@I;0UB`M88*FzeM=K8uXe1ga_Y3 zY= 90){ + for (Buff b : hero.buffs(ClearLanterBuff.class)){ + if(b == null){ + goodLanterFire(); + } + spend(200f); + } } if (hero.lanterfire < 51 && hero.lanterfire>31) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index c20fe356c..a5a9e6e8c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -155,6 +155,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfMi import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfDivineInspiration; import com.shatteredpixel.shatteredpixeldungeon.items.quest.DevItem.CrystalLing; import com.shatteredpixel.shatteredpixeldungeon.items.quest.MIME; +import com.shatteredpixel.shatteredpixeldungeon.items.quest.Red; import com.shatteredpixel.shatteredpixeldungeon.items.quest.RedWhiteRose; import com.shatteredpixel.shatteredpixeldungeon.items.quest.SakaFishSketon; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfAccuracy; @@ -972,6 +973,15 @@ public class Hero extends Char { Buff.detach(hero, BlessRedWhite.class); } + DriedRose rose = Dungeon.hero.belongings.getItem(DriedRose.class); + Red red = hero.belongings.getItem(Red.class); + if(red != null && Statistics.deadGo ){ + red.detachAll(hero.belongings.backpack); + } + if(rose != null && Statistics.deadGo){ + rose.detachAll(hero.belongings.backpack); + } + CrystalLing crystalLing = Dungeon.hero.belongings.getItem(CrystalLing.class); if(crystalLing != null){ Buff.affect(hero, BlessLing.class).set( (100), 1 ); 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 e64cdab73..76bf65e81 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 @@ -80,7 +80,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfLig import com.shatteredpixel.shatteredpixeldungeon.items.quest.CrivusFruitsFlake; import com.shatteredpixel.shatteredpixeldungeon.items.quest.DevItem.CrystalLing; import com.shatteredpixel.shatteredpixeldungeon.items.quest.MIME; -import com.shatteredpixel.shatteredpixeldungeon.items.quest.RedWhiteRose; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfFlameCursed; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfIdentify; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfLullaby; @@ -104,7 +103,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagicTorch; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RedBloodMoon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WashCrime; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortsword; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.legend.DiedCrossBow; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingKnife; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingStone; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.HaloDart; @@ -171,8 +169,6 @@ public enum HeroClass { new AncityArmor().quantity(1).identify().collect(); new TengusMask().quantity(1).identify().collect(); new SpawnWeapon().quantity(1).identify().collect(); - new DiedCrossBow().quantity(1).identify().collect(); - new RedWhiteRose().quantity(1).identify().collect(); Buff.affect(hero, ChampionHero.AntiMagic.class, 50000f); new WraithAmulet().quantity(1).identify().collect(); new BloodthirstyThorn().quantity(1).identify().collect(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DimandKing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DimandKing.java index 194752612..ed2194c51 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DimandKing.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DimandKing.java @@ -725,7 +725,7 @@ public class DimandKing extends Boss { @Override public void detach() { super.detach(); - for (Mob m : Dungeon.level.mobs){ + for (Mob m : Dungeon.level.mobs.toArray(new Mob[0])){ if (m instanceof DimandKing){ m.damage(24, this); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FlowerSlime.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FlowerSlime.java index 00bf29b0a..0d60afc14 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FlowerSlime.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FlowerSlime.java @@ -11,11 +11,11 @@ public class FlowerSlime extends Mob { spriteClass = FlowerSlimeSprites.class; loot = Generator.Category.SEED; - lootChance = 0.25f; + lootChance = 0.05f; HP = HT = 12; defenseSkill = 2; - maxLvl = 7; + maxLvl = 5; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Golem.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Golem.java index 3c3ff1f8c..abeccd48f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Golem.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Golem.java @@ -20,7 +20,6 @@ */ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; - import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; @@ -30,20 +29,20 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Imp; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation; +import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.GolemSprite; import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.watabou.utils.Bundle; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; - public class Golem extends Mob { - + { spriteClass = GolemSprite.class; - + HP = HT = 120; defenseSkill = 15; - + EXP = 12; maxLvl = 22; @@ -61,15 +60,15 @@ public class Golem extends Mob { public int damageRoll() { return Random.NormalIntRange( 25, 30 ); } - + @Override public int attackSkill( Char target ) { return 28; } - + @Override public int drRoll() { - return Random.NormalIntRange(0, 12); + return super.drRoll() + Random.NormalIntRange(0, 12); } @Override @@ -89,7 +88,7 @@ public class Golem extends Mob { Dungeon.LimitedDrops.GOLEM_EQUIP.count++; //uses probability tables for demon halls if (loot == Generator.Category.WEAPON){ - return Generator.randomWeapon(5); + return Generator.randomWeapon(5, true); } else { return Generator.randomArmor(5); } @@ -149,8 +148,8 @@ public class Golem extends Mob { int bestPos = enemy.pos; for (int i : PathFinder.NEIGHBOURS8){ if (Dungeon.level.passable[pos + i] - && Actor.findChar(pos+i) == null - && Dungeon.level.trueDistance(pos+i, enemy.pos) > Dungeon.level.trueDistance(bestPos, enemy.pos)){ + && Actor.findChar(pos+i) == null + && Dungeon.level.trueDistance(pos+i, enemy.pos) > Dungeon.level.trueDistance(bestPos, enemy.pos)){ bestPos = pos+i; } } @@ -164,6 +163,7 @@ public class Golem extends Mob { if (enemy instanceof Hero){ ((Hero) enemy).interrupt(); Dungeon.observe(); + GameScene.updateFog(); } } @@ -247,4 +247,4 @@ public class Golem extends Mob { } } -} +} \ No newline at end of file diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/OldDM300.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/OldDM300.java index efb494957..1b754cc68 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/OldDM300.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/OldDM300.java @@ -94,6 +94,7 @@ public class OldDM300 extends FlameB01 { public void add(Buff buff) { super.add(buff); LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); + if(lock == null && !seenBefore && Dungeon.level.heroFOV[pos]){ if(Dungeon.isChallenged(MOREROOM) && !(Dungeon.isDLC(Conducts.Conduct.BOSSRUSH))) { AlarmTrap alarmTrap = new AlarmTrap(); @@ -106,7 +107,7 @@ public class OldDM300 extends FlameB01 { } } - if (state == PASSIVE && buff.type == Buff.buffType.NEGATIVE){ + if (state == PASSIVE && buff.type == Buff.buffType.NEGATIVE && Dungeon.level.heroFOV[pos]){ state = HUNTING; } } @@ -114,14 +115,15 @@ public class OldDM300 extends FlameB01 { @Override public boolean act() { LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); - if(lock == null && !seenBefore && Dungeon.level.heroFOV[pos]){ + + if (lock == null && Dungeon.level.heroFOV[pos]){ + CavesLevel level = (CavesLevel) Dungeon.level; + level.seal(); + level.updateChasmTerrain(); if(Dungeon.isChallenged(MOREROOM) && !(Dungeon.isDLC(Conducts.Conduct.BOSSRUSH))) { AlarmTrap alarmTrap = new AlarmTrap(); alarmTrap.pos = pos; alarmTrap.activate(); - CavesLevel level = (CavesLevel) Dungeon.level; - level.seal(); - level.updateChasmTerrain(); ScrollOfTeleportation.appear(hero, pos+8); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Slime_Orange.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Slime_Orange.java index 6f5d02847..416410ef6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Slime_Orange.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Slime_Orange.java @@ -38,7 +38,7 @@ public class Slime_Orange extends Slime { lootChance = 0.25f; //by default, see rollToDropLoot() loot = PotionOfLiquidFlame.class; properties.add(Property.ACIDIC); - maxLvl = 12; + maxLvl = 4; EXP=3; } private int combo = 0; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Slime_Red.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Slime_Red.java index 2b778eb2e..a68dabd0c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Slime_Red.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Slime_Red.java @@ -32,7 +32,7 @@ public class Slime_Red extends Slime { { spriteClass = RedSprites.class; - maxLvl = 16; + maxLvl = 4; lootChance = 0.15f; loot = PotionOfHealing.class; properties.add(Property.ACIDIC); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogReal.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogReal.java index 807321a19..125a0c77d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogReal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogReal.java @@ -148,7 +148,7 @@ public class YogReal extends Boss { } } - if (spawnPos != -1) { + if (spawnPos != -1 && summon != null) { summon.pos = spawnPos; GameScene.add( summon ); Actor.addDelayed( new Pushing( summon, pos, summon.pos ), -1 ); @@ -178,7 +178,7 @@ public class YogReal extends Boss { } } - if (spawnPos != -1) { + if (spawnPos != -1 && summon != null) { summon.pos = spawnPos; GameScene.add( summon ); CellEmitter.get(spawnPos).start(ElmoParticle.FACTORY, 0.05f, 20); @@ -266,10 +266,12 @@ public class YogReal extends Boss { for(int i=0;i 0) rangedCooldown--; @@ -143,12 +146,12 @@ public abstract class YogRealFirst extends Mob { @Override public int damageRoll() { - return (Random.NormalIntRange( 20, 39 ) + (isNearYog()?12:0)) ; + return (Random.NormalIntRange( 24, 40 ) + (isNearYog()?50:0)) ; } @Override public int drRoll() { - return Random.NormalIntRange(0, 15); + return Random.NormalIntRange(6, 16); } @Override @@ -178,6 +181,11 @@ public abstract class YogRealFirst extends Mob { properties.add(Property.FIERY); } + @Override + protected void incrementRangedCooldown() { + rangedCooldown += Random.NormalFloat(2, 3); + } + @Override public boolean act() { @@ -216,12 +224,23 @@ public abstract class YogRealFirst extends Mob { } + @Override + public int attackProc(Char enemy, int damage) { + return super.attackProc(enemy, damage); + } } public static class SoiledFist extends YogRealFirst { { spriteClass = YogRealFistSprite.Soiled.class; + + immunities.add(Burning.class); + } + + @Override + protected void incrementRangedCooldown() { + rangedCooldown += Random.NormalFloat(6, 10); } @Override @@ -304,11 +323,6 @@ public abstract class YogRealFirst extends Mob { && !isNearYog(); } - { - resistances.add(Burning.class); - } - - } public static class RottingFist extends YogRealFirst { @@ -319,6 +333,11 @@ public abstract class YogRealFirst extends Mob { properties.add(Property.ACIDIC); } + @Override + protected void incrementRangedCooldown() { + rangedCooldown += Random.NormalFloat(5, 7); + } + @Override protected boolean act() { //ensures toxic gas acts at the appropriate time when added @@ -384,9 +403,14 @@ public abstract class YogRealFirst extends Mob { properties.add(Property.INORGANIC); } + @Override + protected void incrementRangedCooldown() { + rangedCooldown += Random.NormalFloat(5, 7); + } + @Override public int damageRoll() { - return super.damageRoll()+Random.NormalIntRange(5, 10); + return super.damageRoll()+Random.NormalIntRange(10, 20); } @Override @@ -457,10 +481,11 @@ public abstract class YogRealFirst extends Mob { int i; do { i = Random.Int(Dungeon.level.length()); - } while (Dungeon.level.heroFOV[i] + } while (Dungeon.level.distance(Dungeon.hero.pos, i) < 6 || Dungeon.level.solid[i] || Actor.findChar(i) != null - || PathFinder.getStep(i, Dungeon.level.exit, Dungeon.level.passable) == -1); + || !canTeleport(i) + ); ScrollOfTeleportation.appear(this, i); state = WANDERING; GameScene.flash(0xFFFFFF); @@ -527,10 +552,11 @@ public abstract class YogRealFirst extends Mob { int i; do { i = Random.Int(Dungeon.level.length()); - } while (Dungeon.level.heroFOV[i] + } while (Dungeon.level.distance(Dungeon.hero.pos, i) < 6 || Dungeon.level.solid[i] || Actor.findChar(i) != null - || PathFinder.getStep(i, Dungeon.level.exit, Dungeon.level.passable) == -1); + || !canTeleport(i) + ); ScrollOfTeleportation.appear(this, i); state = WANDERING; GameScene.flash(0, false); @@ -567,19 +593,19 @@ public abstract class YogRealFirst extends Mob { TextureFilm frames = new TextureFilm( texture, 24, 17 ); - idle = new MovieClip.Animation( 2, true ); + idle = new Animation( 2, true ); idle.frames( frames, c+0, c+0, c+1 ); - run = new MovieClip.Animation( 3, true ); + run = new Animation( 3, true ); run.frames( frames, c+0, c+1 ); - attack = new MovieClip.Animation( Math.round(1 / SLAM_TIME), false ); + attack = new Animation( Math.round(1 / SLAM_TIME), false ); attack.frames( frames, c+0 ); - zap = new MovieClip.Animation( 8, false ); + zap = new Animation( 8, false ); zap.frames( frames, c+0, c+5, c+6 ); - die = new MovieClip.Animation( 10, false ); + die = new Animation( 10, false ); die.frames( frames, c+0, c+2, c+3, c+4 ); play( idle ); @@ -619,13 +645,6 @@ public abstract class YogRealFirst extends Mob { } } - @Override - public void attack( int cell ) { - super.attack( cell ); - - jump(ch.pos, ch.pos, null, 9, SLAM_TIME ); - } - public void zap( int cell ) { turnTo( ch.pos , cell ); @@ -645,7 +664,7 @@ public abstract class YogRealFirst extends Mob { } @Override - public void onComplete( MovieClip.Animation anim ) { + public void onComplete( Animation anim ) { super.onComplete( anim ); if (anim == attack) { Camera.main.shake( 4, 0.2f ); @@ -813,5 +832,4 @@ public abstract class YogRealFirst extends Mob { } } -} - +} \ No newline at end of file diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/CrivusFruits.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/CrivusFruits.java index 7cded07fd..c7117c741 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/CrivusFruits.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/CrivusFruits.java @@ -173,9 +173,9 @@ public class CrivusFruits extends Mob { public void detach() { super.detach(); //遍历楼层生物,寻找CrivusFruits执行扣血,在触手死亡时强制扣除本体CrivusFruits - for (Mob m : Dungeon.level.mobs){ + for (Mob m : Dungeon.level.mobs.toArray(new Mob[0])){ if (m instanceof CrivusFruits){ - m.damage((int)7.5, this); + m.damage(7, this); } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/PinkGhostNPC.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/PinkGhostNPC.java index b22b655aa..ba5bdfea9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/PinkGhostNPC.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/PinkGhostNPC.java @@ -11,6 +11,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; +import com.shatteredpixel.shatteredpixeldungeon.items.quest.Red; import com.shatteredpixel.shatteredpixeldungeon.items.quest.RedWhiteRose; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfRoseShiled; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; @@ -222,6 +223,7 @@ public class PinkGhostNPC extends NPC { sd = false; } else { DriedRose rose = Dungeon.hero.belongings.getItem(DriedRose.class); + Red red = hero.belongings.getItem(Red.class); GLog.i(Messages.get(PinkGhost.class, "thanks_5")); die(null); Statistics.deadGo = true; @@ -233,6 +235,7 @@ public class PinkGhostNPC extends NPC { Dungeon.level.drop( new RedWhiteRose(), pos ).sprite.drop(); Dungeon.level.drop( rose.ghostArmor(), pos ).sprite.drop(); rose.detach(hero.belongings.backpack); + red.detach(hero.belongings.backpack); PaswordBadges.ZQJ_FLOWER(); } return true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/GooMob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/GooMob.java index adad15901..ffa16e7ee 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/GooMob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/GooMob.java @@ -100,36 +100,19 @@ public class GooMob extends Mob { @Override public void add(Buff buff) { super.add(buff); - LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); - - if (state == PASSIVE && buff.type == Buff.buffType.NEGATIVE){ + if (state == PASSIVE && buff.type == Buff.buffType.NEGATIVE && Dungeon.level.heroFOV[pos]){ state = HUNTING; } - - if(lock == null && !seenBefore && Dungeon.level.heroFOV[pos]){ - SewerLevel level = (SewerLevel) Dungeon.level; - level.seal(); - level.updateChasmTerrain(); - seenBefore = false; - if(Dungeon.isChallenged(MOREROOM) && !(Dungeon.isDLC(Conducts.Conduct.BOSSRUSH))) { - AlarmTrap alarmTrap = new AlarmTrap(); - alarmTrap.pos = pos; - alarmTrap.activate(); - ScrollOfTeleportation.appear(hero, pos+3); - tell(Messages.get(this, "notice")); - } - } } @Override public boolean act() { LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); - if(lock == null && !seenBefore && Dungeon.level.heroFOV[pos]){ + if (lock == null && Dungeon.level.heroFOV[pos]){ SewerLevel level = (SewerLevel) Dungeon.level; level.seal(); level.updateChasmTerrain(); - seenBefore = false; if(Dungeon.isChallenged(MOREROOM) && !(Dungeon.isDLC(Conducts.Conduct.BOSSRUSH))) { AlarmTrap alarmTrap = new AlarmTrap(); alarmTrap.pos = pos; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/SlimeKingMob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/SlimeKingMob.java index a4fc474e7..95a778420 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/SlimeKingMob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/SlimeKingMob.java @@ -25,7 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; -import com.shatteredpixel.shatteredpixeldungeon.sprites.SlimeKingSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.SlimeKingMobSprites; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; @@ -105,7 +105,7 @@ public class SlimeKingMob extends Mob { EXP = 20; defenseSkill = 12; - spriteClass = SlimeKingSprite.class; + spriteClass = SlimeKingMobSprites.class; lootChance = 1; HUNTING = new Hunting(); properties.add(Property.BOSS); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/MobPlacer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/MobPlacer.java index 22c3818ee..1b4e6c003 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/MobPlacer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/MobPlacer.java @@ -73,7 +73,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Thief; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Warlock; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Wraith; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.XTG200; -import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.spical.GooMob; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.spical.SlimeKingMob; import com.shatteredpixel.shatteredpixeldungeon.custom.dict.DictSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.custom.messages.M; @@ -408,7 +407,7 @@ public class MobPlacer extends TestItem{ updateMobText(); } }; - btn.icon( DictSpriteSheet.miscImages(allData.get(dataThreshold(mobTier)+i).imageId) ); + btn.icon( Reflection.newInstance(allData.get(dataThreshold(mobTier)+i).getMobClass()).sprite()); float max = Math.max(btn.icon().width(), btn.icon().height()); btn.icon().scale = new PointF(BTN_SIZE/max, BTN_SIZE/max); if(i ShatteredPixelDungeon.scene().add(new WndTextNumberInput( - "自定义武器等级", "输入要生成的武器的等级,非数字会被自动处理,同时也不能超过INT的最大值2,147,483,647", + "自定义武器等级", "输入要生成的武器的等级,非数字会被自动处理,同时也不能超过9999级", Integer.toString(weapon_level), - 9, false, Messages.get(WndSadGhost.class, "confirm"), + 4, false, Messages.get(WndSadGhost.class, "confirm"), Messages.get(WndSadGhost.class, "cancel")) { @Override public void onSelect(boolean check, String text) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Lightning.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Lightning.java index 2455756c6..c3ac621a0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Lightning.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Lightning.java @@ -64,7 +64,7 @@ public class Lightning extends Group { super(); this.arcs = arcs; - for (Arc arc : this.arcs) + for (Arc arc : this.arcs.toArray(new Arc[arcs.size()])) add(arc); this.callback = callback; @@ -87,7 +87,7 @@ public class Lightning extends Group { float alpha = life / DURATION; - for (Arc arc : arcs) { + for (Arc arc : arcs.toArray(new Arc[0])) { arc.alpha(alpha); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Amulet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Amulet.java index a8c4bc8e1..d261fb3c1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Amulet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Amulet.java @@ -112,6 +112,7 @@ public class Amulet extends Item { public void afterCreate() { Badges.validateVictory(); Badges.validateChampion(Challenges.activeChallenges()); +// PaswordBadges.loadGlobal(); PaswordBadges.ALLCS(Challenges.activeChallenges()); Badges.saveGlobal(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java index c0dac9182..83d06763d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java @@ -70,7 +70,11 @@ public class Item implements Bundlable { //TODO should these be private and accessed through methods? public int image = 0; - public int icon = -1; //used as an identifier for items with randomized images + + public Class ItemSpriteClass; + + public int icon = -1; + //used as an identifier for items with randomized images public boolean stackable = false; @@ -82,10 +86,10 @@ public class Item implements Bundlable { public int level = 0; public boolean levelKnown = false; - + public boolean cursed; public boolean cursedKnown; - + // Unique items persist through revival public boolean unique = false; @@ -94,14 +98,14 @@ public class Item implements Bundlable { // whether an item can be included in heroes remains public boolean bones = false; - + public static final Comparator itemComparator = new Comparator() { @Override public int compare( Item lhs, Item rhs ) { return Generator.Category.order( lhs ) - Generator.Category.order( rhs ); } }; - + public ArrayList actions( Hero hero ) { ArrayList actions = new ArrayList<>(); actions.add( AC_DROP ); @@ -119,17 +123,17 @@ public class Item implements Bundlable { public boolean doPickUp(Hero hero, int pos) { if (collect( hero.belongings.backpack )) { - + GameScene.pickUp( this, pos ); Sample.INSTANCE.play( Assets.Sounds.ITEM ); hero.spendAndNext( TIME_TO_PICK_UP ); return true; - + } else { return false; } } - + public void doDrop( Hero hero ) { hero.spendAndNext(TIME_TO_DROP); int pos = hero.pos; @@ -144,39 +148,39 @@ public class Item implements Bundlable { public void doThrow( Hero hero ) { GameScene.selectCell(thrower); } - + public void execute( Hero hero, String action ) { GameScene.cancel(); curUser = hero; curItem = this; - + if (action.equals( AC_DROP )) { - + if (hero.belongings.backpack.contains(this) || isEquipped(hero)) { doDrop(hero); } - + } else if (action.equals( AC_THROW )) { - + if (hero.belongings.backpack.contains(this) || isEquipped(hero)) { doThrow(hero); } - + } } - + public void execute( Hero hero ) { execute( hero, defaultAction ); } - + protected void onThrow( int cell ) { Heap heap = Dungeon.level.drop( this, cell ); if (!heap.isEmpty()) { heap.sprite.drop( cell ); } } - + //takes two items and merges them (if possible) public Item merge( Item other ){ if (isSimilar( other )){ @@ -185,7 +189,7 @@ public class Item implements Bundlable { } return this; } - + public boolean collect( Bag container ) { if (quantity <= 0){ @@ -209,7 +213,7 @@ public class Item implements Bundlable { if (!container.canHold(this)){ return false; } - + if (stackable) { for (Item item:items) { if (isSimilar( item )) { @@ -238,11 +242,11 @@ public class Item implements Bundlable { return true; } - + public boolean collect() { return collect( Dungeon.hero.belongings.backpack ); } - + //returns a new item if the split was sucessful and there are now 2 items, otherwise null public Item split( int amount ){ if (amount <= 0 || amount >= quantity()) { @@ -250,27 +254,27 @@ public class Item implements Bundlable { } else { //pssh, who needs copy constructors? Item split = Reflection.newInstance(getClass()); - + if (split == null){ return null; } - + Bundle copy = new Bundle(); this.storeInBundle(copy); split.restoreFromBundle(copy); split.quantity(amount); quantity -= amount; - + return split; } } - + public final Item detach( Bag container ) { - + if (quantity <= 0) { - + return null; - + } else if (quantity == 1) { @@ -279,18 +283,18 @@ public class Item implements Bundlable { } return detachAll( container ); - + } else { - - + + Item detached = split(1); updateQuickslot(); if (detached != null) detached.onDetach( ); return detached; - + } } - + public final Item detachAll( Bag container ) { Dungeon.quickslot.clearItem( this ); @@ -312,7 +316,7 @@ public class Item implements Bundlable { updateQuickslot(); return this; } - + public boolean isSimilar( Item item ) { return level == item.level && getClass() == item.getClass(); } @@ -328,7 +332,7 @@ public class Item implements Bundlable { public int level(){ return level; } - + //returns the level of the item, after it may have been modified by temporary boosts/reductions //note that not all item properties should care about buffs/debuffs! (e.g. str requirement) public int buffedLvl(){ @@ -344,39 +348,39 @@ public class Item implements Bundlable { updateQuickslot(); } - + public Item upgrade() { - + this.level++; updateQuickslot(); - + return this; } - + final public Item upgrade( int n ) { for (int i=0; i < n; i++) { upgrade(); } - + return this; } - + public Item degrade() { - + this.level--; - + return this; } - + final public Item degrade( int n ) { for (int i=0; i < n; i++) { degrade(); } - + return this; } - + public int visiblyUpgraded() { return levelKnown ? level() : 0; } @@ -384,19 +388,19 @@ public class Item implements Bundlable { public int buffedVisiblyUpgraded() { return levelKnown ? buffedLvl() : 0; } - + public boolean visiblyCursed() { return cursed && cursedKnown; } - + public boolean isUpgradable() { return true; } - + public boolean isIdentified() { return levelKnown && cursedKnown; } - + public boolean isEquipped( Hero hero ) { return false; } @@ -415,18 +419,18 @@ public class Item implements Bundlable { levelKnown = true; cursedKnown = true; Item.updateQuickslot(); - + return this; } - + public void onHeroGainExp( float levelPercent, Hero hero ){ //do nothing by default } - + public static void evoke( Hero hero ) { hero.sprite.emitter().burst( Speck.factory( Speck.EVOKE ), 5 ); } - + @Override public String toString() { @@ -441,19 +445,23 @@ public class Item implements Bundlable { return name; } - + public String name() { return trueName(); } - + public final String trueName() { return Messages.get(this, "name"); } - + public int image() { return image; } - + + public ItemSprite itemSprite() { + return Reflection.newInstance(ItemSpriteClass); + } + public ItemSprite.Glowing glowing() { return null; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/lightblack/OilLantern.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/lightblack/OilLantern.java index e801c44a2..c4371931e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/lightblack/OilLantern.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/lightblack/OilLantern.java @@ -3,24 +3,25 @@ package com.shatteredpixel.shatteredpixeldungeon.items.lightblack; import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LighS; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LostInventory; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; -import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.MagicFlameParticle; +import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagicTorch; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.audio.Sample; +import com.watabou.noosa.particles.Emitter; import com.watabou.utils.Bundle; import java.util.ArrayList; -public class OilLantern extends Item { +public class OilLantern extends Artifact { private static final String ACTIVE = "active"; @@ -38,7 +39,6 @@ public class OilLantern extends Item { private static final String TXT_STATUS = "%d%%"; private boolean active = false; - private int charge = 100+Challenges.activeChallenges()/5*50; public int flasks = 0; public int plingks = 0; @@ -47,14 +47,51 @@ public class OilLantern extends Item { this.image = ItemSpriteSheet.LANTERNA; this.unique = true; updateSprite(); + charge = 100; defaultAction = AC_LIGHT; } + //TODO 仍然有问题 +// public ItemSprite itemSprite() { +// ItemSprite sprite = new LS(); +// sprite.setPos(0, 0); +// return sprite; +// } + public void updateSprite() { this.image = isActivated() ? ItemSpriteSheet.LANTERNB : ItemSpriteSheet.LANTERNA; defaultAction = isActivated() ? AC_SNUFF : AC_LIGHT; + emitter(); } + @Override + public Emitter emitter() { + Emitter emitter = new Emitter(); + emitter.pos(4.5f, 6); + emitter.fillTarget = false; + if(image == ItemSpriteSheet.LANTERNB){ + emitter.pour(StaffParticleFactory, 0.1f); + } + return emitter; + } + + + private final Emitter.Factory StaffParticleFactory = new Emitter.Factory() { + /** + * @param emitter 目标来源 + * @param index 特效来源 + * @param x,y 位置 + */ + @Override + public void emit( Emitter emitter, int index, float x, float y ) { + ((MagicFlameParticle)emitter.recycle( MagicFlameParticle.class )).reset( x, y+3 ); + } + @Override + public boolean lightMode() { + return true; + } + }; + public int getCharge() { return this.charge; } @@ -137,7 +174,7 @@ public class OilLantern extends Item { public void refill(Hero hero) { this.flasks--; - this.charge += Math.min(MAX_CHARGE,100); + this.charge = Math.min(this.charge + MAX_CHARGE, 100); hero.spend(TIME_TO_USE); hero.busy(); Sample.INSTANCE.play(Assets.Sounds.DRINK, TIME_TO_USE, TIME_TO_USE, 1.2f); @@ -148,7 +185,7 @@ public class OilLantern extends Item { public void refills(Hero hero) { this.plingks--; - this.charge += Math.min(MIX_CHARGE,100); + this.charge = Math.min(this.charge + MAX_CHARGE, 100); hero.spend(TIME_TO_USE); hero.busy(); Sample.INSTANCE.play(Assets.Sounds.DRINK, TIME_TO_USE, TIME_TO_USE, 1.2f); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfMindVision.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfMindVision.java index 236ba9ab9..502294e88 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfMindVision.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfMindVision.java @@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Blindness; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; @@ -44,10 +45,9 @@ public class PotionOfMindVision extends Potion { public void apply(Hero hero) { identify(); - if (Dungeon.isChallenged(EXSG)&& Random.Float()>0.4f) { + if (Dungeon.isChallenged(EXSG) && Random.Float()>0.4f && !(Dungeon.level.feeling == Level.Feeling.DIEDROOM)) { if (Dungeon.level.mobs.size() > 0) { GLog.i(Messages.get(this, "can't_see_mobs")); - } else { GLog.i(Messages.get(this, "cant'see_none")); } @@ -72,7 +72,7 @@ public class PotionOfMindVision extends Potion { @Override public String desc() { //三元一次逻辑运算 - return Dungeon.isChallenged(Challenges.EXSG) ? Messages.get(this, "descx") : Messages.get(this, "desc"); + return Dungeon.isChallenged(Challenges.EXSG) && !(Dungeon.level.feeling == Level.Feeling.DIEDROOM) ? Messages.get(this, "descx") : Messages.get(this, "desc"); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java index 1765dfd19..b9260d7d2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java @@ -131,7 +131,8 @@ public class ChangesScene extends PixelScene { float nextPosY = 0; boolean second = false; if (changesSelected == 0) { - ChangeSelection selection = new ChangeSelection(Messages.get(this, "later"), Messages.get(this, "mlpd")) { + ChangeSelection selection2 = new ChangeSelection(Messages.get(this, "later"), Messages.get(this, + "mlpd-0.6.4-5")) { @Override public void onClick() { NewChangesScene.changesSelected = 0; @@ -139,11 +140,54 @@ public class ChangesScene extends PixelScene { ShatteredPixelDungeon.switchNoFade(NewChangesScene.class); } }; - selection.icon(new ItemSprite(ItemSpriteSheet.MAGICGIRLBOOKS)); + selection2.icon(new ItemSprite(ItemSpriteSheet.REDWHITEROSE)); + selection2.hardlight(Window.TITLE_COLOR); + selection2.setRect(0, posY, panel.innerWidth(), 0); + content.add(selection2); + + ChangeSelection selection3 = new ChangeSelection(null, Messages.get(this, + "mlpd-0.6.0-3")) { + @Override + public void onClick() { + NewChangesScene.changesSelected = 1; + NewChangesScene.fromChangesScene = false; + ShatteredPixelDungeon.switchNoFade(NewChangesScene.class); + } + }; + selection3.icon(new ItemSprite(ItemSpriteSheet.LANTERNB)); + selection3.hardlight(Window.TITLE_COLOR); + selection3.setRect(0, posY+35, panel.innerWidth(), 0); + content.add(selection3); + + ChangeSelection selection = new ChangeSelection(null, Messages.get(this, + "mlpd-0.5.X")) { + @Override + public void onClick() { + NewChangesScene.changesSelected = 2; + NewChangesScene.fromChangesScene = false; + ShatteredPixelDungeon.switchNoFade(NewChangesScene.class); + } + }; + selection.icon(new ItemSprite(ItemSpriteSheet.DG19)); selection.hardlight(Window.TITLE_COLOR); - selection.setRect(0, posY, panel.innerWidth(), 0); + selection.setRect(0, posY+60, panel.innerWidth(), 0); content.add(selection); - posY = nextPosY = selection.bottom(); + + ChangeSelection selection0 = new ChangeSelection(null, Messages.get(this, + "mlpd-0.4.X")) { + @Override + public void onClick() { + NewChangesScene.changesSelected = 3; + NewChangesScene.fromChangesScene = false; + ShatteredPixelDungeon.switchNoFade(NewChangesScene.class); + } + }; + selection0.icon(new ItemSprite(ItemSpriteSheet.RedBloodMoon)); + selection0.hardlight(Window.TITLE_COLOR); + selection0.setRect(0, posY+85, panel.innerWidth(), 0); + content.add(selection0); + + posY = nextPosY = selection0.bottom(); } for (ChangeInfo info : changeInfos){ if (info.major) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/MobCatLogScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/MobCatLogScene.java new file mode 100644 index 000000000..ea4bfc87f --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/MobCatLogScene.java @@ -0,0 +1,22 @@ +package com.shatteredpixel.shatteredpixeldungeon.scenes; + +import com.shatteredpixel.shatteredpixeldungeon.ui.Archs; +import com.watabou.noosa.Camera; + +//怪物图鉴 尚未完成 +public class MobCatLogScene extends PixelScene { + + @Override + public void create() { + super.create(); + uiCamera.visible = false; + + int w = Camera.main.width; + int h = Camera.main.height; + + Archs archs = new Archs(); + archs.setSize(w,h); + addToBack(archs); + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewChangesScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewChangesScene.java index d4e0c6411..2c945e191 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewChangesScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewChangesScene.java @@ -5,15 +5,14 @@ import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.Archs; import com.shatteredpixel.shatteredpixeldungeon.ui.ExitButton; -import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock; import com.shatteredpixel.shatteredpixeldungeon.ui.ScrollPane; import com.shatteredpixel.shatteredpixeldungeon.ui.StyledButton; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.ChangeInfo; -import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.ChangeSelection; import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.S_Changes; import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.mlpd.vM0_5_X_Changes; +import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.mlpd.vM0_6_4_P_Changes; import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.mlpd.vM0_6_7_X_Changes; import com.watabou.noosa.Camera; import com.watabou.noosa.NinePatch; @@ -62,12 +61,15 @@ public class NewChangesScene extends PixelScene { switch (changesSelected){ case 0: default: - vM0_6_7_X_Changes.addAllChanges(changeInfos); + vM0_6_4_P_Changes.addAllChanges(changeInfos); break; case 1: - vM0_5_X_Changes.addAllChanges(changeInfos); + vM0_6_7_X_Changes.addAllChanges(changeInfos); break; case 2: + vM0_5_X_Changes.addAllChanges(changeInfos); + break; + case 3: S_Changes.addAllChanges(changeInfos); break; } @@ -114,21 +116,6 @@ public class NewChangesScene extends PixelScene { } } } - if (changesSelected == 0) { - posY = nextPosY; - ChangeSelection selection = new ChangeSelection(Messages.get(ChangesScene.class, "earlier"), Messages.get(ChangesScene.class, "shpd")) { - @Override - public void onClick() { - ChangesScene.changesSelected = 0; - ShatteredPixelDungeon.switchNoFade(ChangesScene.class); - } - }; - selection.icon(Icons.get(Icons.SHPX)); - selection.hardlight(Window.TITLE_COLOR); - selection.setRect(0, posY, panel.innerWidth(), 0); - content.add(selection); - posY = selection.bottom(); - } content.setSize( panel.innerWidth(), (int)Math.ceil(posY) ); @@ -139,7 +126,7 @@ public class NewChangesScene extends PixelScene { panel.innerHeight() + 2); list.scrollTo(0, fromChangesScene ? posY - list.height() : 0); - StyledButton btnBeta = new StyledButton(Chrome.Type.TOAST, "0.6.X"){ + StyledButton btnBeta2 = new StyledButton(Chrome.Type.TOAST, "0.6.4-5"){ @Override protected void onClick() { super.onClick(); @@ -150,11 +137,11 @@ public class NewChangesScene extends PixelScene { } }; - if (changesSelected != 0) btnBeta.textColor( 0xBBBBBB ); - btnBeta.setRect(list.left()-4f, list.bottom(), 46, changesSelected == 0 ? 19 : 15); - addToBack(btnBeta); + if (changesSelected != 0) btnBeta2.textColor( 0xBBBBBB ); + btnBeta2.setRect(list.left()-4f, list.bottom(), 32, changesSelected == 0 ? 19 : 15); + addToBack(btnBeta2); - StyledButton btn0_8 = new StyledButton(Chrome.Type.TOAST, "0.5.X"){ + StyledButton btnBeta = new StyledButton(Chrome.Type.TOAST, "0.6.0-3"){ @Override protected void onClick() { super.onClick(); @@ -164,11 +151,12 @@ public class NewChangesScene extends PixelScene { } } }; - if (changesSelected != 1) btn0_8.textColor( 0xBBBBBB ); - btn0_8.setRect(btnBeta.right()+1, list.bottom(), 47, changesSelected == 1 ? 19 : 15); - addToBack(btn0_8); - StyledButton btn0_7 = new StyledButton(Chrome.Type.TOAST, "0.0-0.4"){ + if (changesSelected != 1) btnBeta.textColor( 0xBBBBBB ); + btnBeta.setRect(btnBeta2.right()+1, list.bottom(), 32, changesSelected == 1 ? 19 : 15); + addToBack(btnBeta); + + StyledButton btn0_8 = new StyledButton(Chrome.Type.TOAST, "0.5.X"){ @Override protected void onClick() { super.onClick(); @@ -178,8 +166,22 @@ public class NewChangesScene extends PixelScene { } } }; - if (changesSelected != 2) btn0_7.textColor( 0xBBBBBB ); - btn0_7.setRect(btn0_8.right() + 1, btn0_8.top(), 46, changesSelected == 2 ? 19 : 15); + if (changesSelected != 2) btn0_8.textColor( 0xBBBBBB ); + btn0_8.setRect(btnBeta.right()+1, list.bottom(), 30, changesSelected == 2 ? 19 : 15); + addToBack(btn0_8); + + StyledButton btn0_7 = new StyledButton(Chrome.Type.TOAST, "0.0-0.4"){ + @Override + protected void onClick() { + super.onClick(); + if (changesSelected != 3) { + changesSelected = 3; + ShatteredPixelDungeon.seamlessResetScene(); + } + } + }; + if (changesSelected != 3) btn0_7.textColor( 0xBBBBBB ); + btn0_7.setRect(btn0_8.right() + 1, btn0_8.top(), 44, changesSelected == 3 ? 19 : 15); addToBack(btn0_7); Archs archs = new Archs(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java index c56995bd8..b57d0fd4c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java @@ -266,7 +266,7 @@ public class NewsScene extends PixelScene { icon(News.parseArticleIcon(article)); long lastRead = SPDSettings.newsLastRead(); if (lastRead > 0 && article.date.getTime() > lastRead) { - textColor(Window.SHPX_COLOR); + textColor(Window.Pink_COLOR); } Calendar cal = Calendar.getInstance(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java index a74ef1649..870f1bd40 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -838,8 +838,8 @@ public class ItemSpriteSheet { assignItemRect(HOLSTER, 15, 16); assignItemRect(DRAGONKINGHALOFIRE, 12, 14); assignItemRect(REDDRAGON, 14, 14); - assignItemRect(LANTERNA, 10, 14); - assignItemRect(LANTERNB, 10, 14); + assignItemRect(LANTERNA, 10, 16); + assignItemRect(LANTERNB, 10, 16); assignItemRect(SKPOTION, 8, 15); assignItemRect(SKNANO, 15, 14); assignItemRect(WATERSOUL, 14, 14); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/SlimeKingMobSprites.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/SlimeKingMobSprites.java new file mode 100644 index 000000000..b6ecc0e3c --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/SlimeKingMobSprites.java @@ -0,0 +1,71 @@ +package com.shatteredpixel.shatteredpixeldungeon.sprites; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.spical.SlimeKingMob; +import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; +import com.watabou.noosa.TextureFilm; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Callback; +import com.watabou.utils.GameMath; + +public class SlimeKingMobSprites extends GolemSprite { + public SlimeKingMobSprites() { + this.texture("sprites/boss/SlimeKing.png"); + TextureFilm var1 = new TextureFilm(this.texture, 18, 18); + Integer var2 = 2; + Integer var3 = 1; + this.idle = new Animation(2, true); + Animation var4 = this.idle; + Integer var5 = 0; + var4.frames(var1, var5, var5, var5, var3, var5, var5, var3, var3); + this.run = new Animation(12, true); + this.run.frames(var1, var2, 1, 2, 3, var2); + this.attack = new Animation(12, false); + this.attack.frames(var1, 3, 4, 5); + this.die = new Animation(12, false); + this.die.frames(var1, 6, 7); + this.play(this.idle); + } + + private static final int[] tierFrames = {0, 21, 32, 43, 54, 65}; + + public void setArmor( int tier ){ + int c = tierFrames[(int) GameMath.gate(0, tier, 5)]; + + TextureFilm frames = new TextureFilm( texture, 12, 15 ); + + idle.frames( frames, c, c, c, c, c, 1+c, 1+c ); + run.frames( frames, 2+c, 3+c, 4+c, 5+c, 6+c, 7+c ); + attack.frames( frames, 8+c, 9+c, 10+c ); + //death animation is always armorless + + play( idle, true ); + + } + + public void zap( int cell ) { + + turnTo( ch.pos , cell ); + play( zap ); + + MagicMissile.boltFromChar( parent, + MagicMissile.FROST, + this, + cell, + new Callback() { + @Override + public void call() { + ((SlimeKingMob)ch).onZapComplete(); + } + } ); + Sample.INSTANCE.play( Assets.Sounds.ZAP ); + } + + @Override + public int blood() { + return 0xFFcdcdb7; + } +} + + + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_4_P_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_4_P_Changes.java new file mode 100644 index 000000000..1ce20c257 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_4_P_Changes.java @@ -0,0 +1,523 @@ +package com.shatteredpixel.shatteredpixeldungeon.ui.changelist.mlpd; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Badges; +import com.shatteredpixel.shatteredpixeldungeon.PaswordBadges; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.PinkLingSprite; +import com.shatteredpixel.shatteredpixeldungeon.effects.BadgeBanner; +import com.shatteredpixel.shatteredpixeldungeon.effects.PasswordBadgeBanner; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.scenes.ChangesScene; +import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; +import com.shatteredpixel.shatteredpixeldungeon.sprites.CrivusFruitsSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.FireDragonSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.FlowerSlimeSprites; +import com.shatteredpixel.shatteredpixeldungeon.sprites.GhostSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.IceSlowGirlSprites; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.sprites.SakaFishBossSprites; +import com.shatteredpixel.shatteredpixeldungeon.sprites.SalamanderSprites; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ShopkeeperSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.SlimeKingSprite; +import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; +import com.shatteredpixel.shatteredpixeldungeon.ui.Window; +import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.ChangeButton; +import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.ChangeInfo; +import com.watabou.noosa.Image; + +import java.util.ArrayList; + +public class vM0_6_4_P_Changes { + public static void addAllChanges(ArrayList changeInfos) { + add_v0_6_56_Changes(changeInfos); + add_v0_6_55_Changes(changeInfos); + add_v0_6_54_Changes(changeInfos); + } + public static void add_v0_6_56_Changes( ArrayList changeInfos ) { + ChangeInfo changes = new ChangeInfo("Coming Soon V0.6.5.0-Alpha7", true, ""); + changes.hardlight(Window.CBLACK); + changeInfos.add(changes); + +// changes.addButton(new ChangeButton(new RedNecromancerSprite(), ("BossRush2.0"), +// ("地牢发生了翻天覆地的改变,一切的矛头指向了死灵军团……"))); +// +// Image s = new DM300AttackSprite(); +// s.scale.set(PixelScene.align(0.74f)); +// changes.addButton(new ChangeButton(s, ("DM-ZERO"), +// ("时间在这里停止流动,与DMZERO正面对决的即将到来"))); + + Image c = new IceSlowGirlSprites(); + c.scale.set(PixelScene.align(0.74f)); + changes.addButton(new ChangeButton(c, ("冰雪魔女重做"), + ("石碑上记录了有关于她的一切,她的过去,她的现在,她的未来。而当你与她对峙时,你是否能够看清她的真实面目?"))); + + Image i = new Image("sprites/boss/fireDragon.png", 0, 0, 24, 24); + i.scale.set(PixelScene.align(0.74f)); + changes.addButton(new ChangeButton(i, ("熔岩火龙"), + ("丛林暴乱的真相"))); + + changes = new ChangeInfo("v0.6.5.0-Alpha6-Patch5", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.LANTERNB), ("灯火前路:v3.1"), + ("现在灯火最大值为100%,且有益BuffRoll的时候最多同时存在一个。\n\n" + + "高挑可能会更加困难,但低挑来说正常。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG25), ("开发者模式v0.6"), + ("修复了一些Bug"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CHALLANEESICON_16), ("变幻莫测v0.4"), + ("1.修复了部分情况下无法传送的问题\n\n" + + "2.修复灵视在特定MINIBOSS层无法使用的问题\n\n" + + "3.改动界面迭代优化"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改"), + ("1.修复了部分文案问题\n\n" + + "2.修复了一些错误\n\n" + + "3.部分素材优化" ))); + + changes.addButton(new ChangeButton(new FlowerSlimeSprites(), ("丛林繁花史莱姆"), + ("掉落种子的概率从25%改为5%。"))); + + + changes = new ChangeInfo("v0.6.5.0-Alpha6-Patch4", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG25), ("开发者模式v0.5"), + ("新增武器生成秘卷,感谢潘多拉的代码制作和注解版的代码支持。"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("挑战:变幻莫测V0.3"), + ("修复了一堆问题,并改善了部分体验"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改"), + ("1.修复了部分文案问题\n\n" + + "2.调整了一些底层代码" ))); + + changes = new ChangeInfo("v0.6.5.0-Alpha6.9-6.93-LAST", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton(new ChangeButton((new Image("Ling.png", 0, 0, 16, 16)), ("开发者的话"), + ("v0.6.5.0-Alpha6.9-LAST--完成于2023-10-6\n\n" + + "今天对我来说是一个特别的日子,因为今天是我21岁生日。\n\n" + + "回想MLPD的两年,我也从一名曾经的准大学生变成了即将毕业的大学生\n\n" + + "生活的忙碌,社会的考验,实习的困难比比皆是。但好在我有一批非常爱我和这个游戏的玩家\n\n" + + "Alpha6.9,是MLPD的近期的最终版本。接下来,她(代指魔绫)将进入休整期阶段,\n\n" + + "但游戏的内容足够玩家游玩,当然,如果有bug,我会来修复。\n\n" + + "最近只是没有大版本更新了。最后,近期是我的生日,我在游戏中为各位玩家准备了水晶项链。\n\n" + + "她应该可以帮助你们更好的游玩游戏,希望水晶项链能给你们带来不错的体验。\n\n" + + "最后,让我们在冬季版本大更新中相见,再会!!!\n\n" + + "---MLPD主要开发者:JDSALing" ))); + + changes.addButton(new ChangeButton(Icons.get(Icons.DISPLAY_LAND), ("农历计算系统"), + ("现在MLPD支持农历计算系统,中秋节,端午节,以及作者的生日,均使用此系统计算。\n" + + "Ling的生日:农历8.22\n\n有效时间范围:8.22-8.25\n\n" + + "中秋节:农历8.15\n\n有效时间范围:中秋节前10天到中秋节后12天\n\n" + + "端午节:农历5.5\n\n有效时间范围:端午节前3天到端午节后7天\n\n注意:如果与西方节日冲突,优先将用中国传统节日!"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.AUDIO), ("新主题BGM"), + ("在玩家在新版本胜利一次后,有机会在主界面播放新BGM和下半段暗示。"))); + + changes.addButton(new ChangeButton(new FlowerSlimeSprites(), ("新生物:丛林繁花史莱姆"), + ("替代普通老鼠,老鼠现在只会在丛林边缘(第一层生成),后面都是这个新生物。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.REDWHITEROSE), ("一种载体彻底实装"), + ("效果:力量+2,移速+10%,每5回合回复1HP"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CRYSTAL_LING), ("新开发者物品:水晶项链"), + ("在每年绫的生日有效活得时间直接在开局就能获得,自带韧性之戒效果,治疗效果小幅度提升。"))); + + changes.addButton(new ChangeButton(PasswordBadgeBanner.image(PaswordBadges.Badge.NIGHT_CAT.image), ( + "新隐藏徽章:不眠之夜"), + ("解密片段:月黑风高,古神陨落。"))); + + changes.addButton(new ChangeButton(BadgeBanner.image(Badges.Badge.HIDEEN_BADAGEX.image), ("新徽章:隐秘探索"), + ("获得方式:发现隐藏徽章的位置"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + Image xax = new SakaFishBossSprites(); + xax.scale.set(PixelScene.align(0.72f)); + changes.addButton(new ChangeButton(xax, "萨卡班甲鱼", + "现在免疫恐惧!")); + + changes.addButton(new ChangeButton(new CrivusFruitsSprite(), ("克里弗斯之果"), + ("现在净化药剂有特定版,且绝命头目地形改变。"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("开发者模式V0.4"), + ("开发者模式进行一些小型优化,追加新怪物:丛林繁花史莱姆"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("挑战:变幻莫测V0.2"), + ("修复了一堆问题:\n\n" + + "1.可能导致钥匙丢失\n\n2.重复Boss警报\n\n3.看见人不传送\n\n4.改善了Goo和DM300原型机的属性与地形。"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项改动-1"), + ("1.优化了主题背景界面,并且植入夜间状态,在晚上22点到早上7点前是夜间状态。因此是夜间背景。反之则是白天背景。\n\n" + + "2.圣境密林层改善了几个地块,部分敌人素材迭代\n\n" + + "3.上个版本的一些FB-bug修复"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项改动-2"), + ("1.修复了提灯环境下火把能量无法被保存的相关问题\n" + + "2.修复了变幻莫测挑战相关问题\n" + + "3.修复了DM300原型机无限护盾问题\n" + + "4.修复了徽章界面可能闪退的问题\n" + + "5.修复了沉沦效果动画丢失问题\n" + + "6.优化了部分地块贴图\n" + + "7.修复了DM300 DM720进入即过关的问题\n" + + "8.修复了隐藏徽章-不眠之夜,无法被获得的问题\n" + + "9.新增夜晚文本提醒"))); + + + changes = new ChangeInfo("v0.6.5.0-Alpha6-6.8-国庆", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("新挑战:变幻莫测V0.1"), + ("追加两个随机地形感觉,整体战斗全面处于大地型,怪物生成变多,追加两个迷你Boss战。"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改2"), + ("1.修复三井协定的三井重复生成问题\n" + + "2.改善变幻莫测迷你Boss地形以及战利品\n" + + "3.种子现在分为A类,B类,BossRush类\n" + + "4.部分界面UI迭代,变幻莫测挑战平衡\n" + + "5.修复鼠王可以改造特定护甲,例如板鳖甲"))); + + + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改"), + ("1.迭代了UI材质\n\n2.优化了一些代码"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.DEPTH_WELLS), ("更多地形认知"), + ("在变幻莫测中加入了更多地形认知!"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("基因突变"), + ("现在蝇群和重甲豺狼无法获得基因突变效果"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.LANTERNB), ("灯火平衡"), + ("灯火进行了一波平衡,使之游玩起来更好玩。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CHALLANEESICON_9), ("梦魇领袖"), + ("梦魇领袖进行了一些调整,并改名为绝命头目"))); + + changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), + Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X88"))); + + changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), + Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X87"))); + + changes = new ChangeInfo("v0.6.5.0-Alpha5.2-国庆", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), + Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X86"))); + + changes = new ChangeInfo("v0.6.5.0-Alpha5-中秋", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new GhostSprite.PinkGhostSprites(), ("新限时任务:映月离合之殇"), + ("在中秋和国庆节这个期间一起探索悲伤幽灵它们的故事……"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(Icons.get(Icons.INFO), ("修复"), + ("修复上个版本的一些错误"))); + + changes = new ChangeInfo("v0.6.5.0-Alpha4.5", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton( new ChangeButton(new ItemSprite(ItemSpriteSheet.GREATSWORD, + new ItemSprite.Glowing( 0xcc7770 )), "新附魔:爆破", + "这个附魔会让使用者陷入癫狂,能使爆炸的能量从武器中喷薄而出,能够使敌人目标处受到一次范围伤害亦或者给造成敌人短暂的残废效果。(PS:爆炸效果不会摧毁物品)\n")); + + changes.addButton(new ChangeButton(PasswordBadgeBanner.image(PaswordBadges.Badge.ZQJ_GHOST.image), ("两个隐藏徽章资源预载"), + ("两个隐藏徽章资源预载,将在后续版本更新。"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + Image isa = new SlimeKingSprite(); + isa.scale.set(PixelScene.align(0.89f)); + changes.addButton( new ChangeButton(isa, "史莱姆王子", + "修复错误的继承类导致的Cast Exception错误")); + + changes.addButton(new ChangeButton(Icons.get(Icons.DISPLAY), ("界面修复"), + ("修复部分界面在新版的异常布局"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("药水癔症v0.2"), + ("现在全肉大饼在英雄低于12力量前必定加力量,且整体加力量的幸运度提升。"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("其他改动"), + ("1.鬼磷和爆破现在是稀有附魔\n\n" + + "2.修复了吸血鬼刀的异常吸血-贡献者:\nzxcPandora\n\n"+ + "3.修复了药水癔症描述问题,纯洁的祝福-守护护盾描述异常,以及开发者升降器追加探查功能-\n贡献者:zxcPandora"))); + + changes = new ChangeInfo("v0.6.5.0-Alpha4", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("电子斗蛐蛐v0.2"), + ("开发者模式怪物放置器拥有更多功能,欢迎尝试!另追加黏咕,史莱姆王,豺狼炼药长老,豺狼萨满长老,Flame-C01"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.DISPLAY), ("信息栏滚动"), + ("在游戏缩放较大或者拥有较多词条时,该项会很有用。"))); + + changes.addButton(new ChangeButton(BadgeBanner.image(Badges.Badge.BOMBBOW_DIED.image), ("新徽章:碎片飞溅"), + ("又是一个死亡徽章,新人:悲鸣 因为意味着另类死亡爱好者多了一个新徽章(未解锁该徽章的就更麻烦了)"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new SalamanderSprites(), ("深蓝蝾螈"), + ("修复被深蓝蝾螈击败不会记录在排行榜的问题。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DIEDCROSSBOW), ("重型弩炮"), + ("修复使用还会扣减飞镖的问题。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.WAND_KCX), ("共生法杖"), + ("修复共生法杖可能能被永续的问题。"))); + + changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), + Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X85"))); + + changes = new ChangeInfo("v0.6.5.0-Alpha3", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("开发者模式更新"), + ("添加了更多开发者选项,优化了一些问题,怪物放置器支持电子斗蛐蛐"))); + + Image dragonSprite = new FireDragonSprite(); + dragonSprite.scale.set(PixelScene.align(0.72f)); + changes.addButton(new ChangeButton(dragonSprite, ("熔岩火龙资源预载"), + ("丛林额外Boss-熔岩火龙资源预载,预计将在Alpha7加入。"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DIEDCROSSBOW), ("重型弩炮"), + ("现在不需要飞镖作为弹药,但有装填时间。"))); + + Image xa = new SakaFishBossSprites(); + xa.scale.set(PixelScene.align(0.72f)); + changes.addButton(new ChangeButton(xa, "萨卡班甲鱼", + "初始防御调为35,常规伤害降低。")); + + changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), + Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X84"))); + + changes = new ChangeInfo("v0.6.5.0-Alpha1-2", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DIEDCROSSBOW), ("传奇武器"), + ("新类别传奇武器测试已经开始。在后续版本中需要通过货币解锁。"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.BADGES), ("加密徽章"), + ("添加了加密徽章,长按徽章按钮进入。记录一些隐藏成就。\n\n_注意:_这些成就不会在获取之前不会显示出来"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项改动"), + ("1.添加了暂停更新界面的功能\n\n" + + "2.少量bug修复"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + Image a = new SakaFishBossSprites(); + a.scale.set(PixelScene.align(0.72f)); + changes.addButton(new ChangeButton(a, "萨卡班甲鱼", + "数值方面进行了一定平衡。")); + + changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), + Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X83"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项调整"), + ("1.书籍现在不可堆积,且成就有一些变化\n\n" + + "2.其它bug修复"))); + } + + public static void add_v0_6_55_Changes( ArrayList changeInfos ) { + ChangeInfo changes = new ChangeInfo("v0.6.4.0-BetaI-XIII", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton(new ChangeButton((new Image("Ling.png", 0, 0, 16, 16)), ("开发者的话"), + ("你好,我应该有很久没有写开发者的话了。近期,真的很忙。\n" + + "我只有晚上更新一会魔绫,但总会熬夜到很晚。\n" + + "再这样下去,不清楚还能如此坚持多久。\n" + + "我想,我需要休息一下。\n" + + "并且降低更新频率,我想现在魔绫的更新速度已经太快了\n"+ + "所以后面的更新,可能会慢一点。\n"+ + "还是希望各位能玩的愉快吧,毕竟,人总是不能在虚拟世界里生活的。\n" + + "现实仍然有很多东西,我是时候调节一下了。\n"+ + "那么还是祝各位游戏中冒险愉快吧!"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("快捷栏V1/V2"), + ("快捷栏降至9个,并且V1是魔绫原版快捷栏,V2是碳素那边借鉴优化的快捷栏。任君挑选。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ALCH_PAGE), ("炼金界面优化"), + ("炼金指南进行优化。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.TORCH), ("火把调整"), + ("现在火把会在灯火中成为燃料。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ARMOR_ANCITY), ("板鳖甲"), + ("来自远古的护甲,你是想现在使用,亦或者是收入囊中等待合适的时机?"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.RING_DIAMOND), ("财富之戒"), + ("财富戒指同步为破碎。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.FIREFISHSWORD), ("尚方宝剑"), + ("尚方宝剑属性重新优化,并且拥有两个形态的弱切换。具体怎么切换,看你们自己探索了"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.LANTERNB), ("深度调查"), + ("娱乐模式改名为深度调查,并且追加黄金时代新娱乐模式。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SCROLL_LAGUZ), ("升级卷轴"), + ("现在追加一个使用全部升级卷轴的按钮"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.DISPLAY), ("游戏内区域文本"), + ("现在每个大区有区域文本,给各位更加身临其境的感觉。"))); + + Image a = new SakaFishBossSprites(); + a.scale.set(PixelScene.align(0.72f)); + changes.addButton(new ChangeButton(a, "新Boss:萨卡班甲鱼", + "远古遗迹的领袖级Boss,欢迎前来挑战。")); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SAI), ("吸血鬼刀-Beta13"), + ("修复了一些吸血权重问题。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.WRALIPS), ("暗金宝石护符"), + ("现在最高上限+10,并调整优化了一些问题"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SCROLL_ODAL), ("升级卷轴"), + ("现在修复升级卷轴可能丢失的问题,并且采用平衡算法。例如,你在1区摸到了4个升级,在监狱只有两个。总量不变。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.WAND_KCX), ("再生法杖"), + ("修复一些问题,并且可以持续使用。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CHALLANEESICON_15), ("挑战加成"), + ("在高挑中,提灯的容量更多,商店售卖更多灯油,但灯火的每次减少可能会加剧!"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("支离破碎"), + ("支离破碎进行了一些怪组优化,并且调整了巨魔铁匠任务(如果在支离破碎遇到巨魔的蝙蝠任务确实有突变buff)"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改"), + ("添加Boss专武保底机制,连续三局未获得,下次必定获得"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.GREATSHIELD), ("5阶武器"), + ("现在5阶武器生成平均化"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SAI), ("吸血鬼刀-Beta12"), + ("优化数值,调整吸血权重。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG3), ("归溯钥剑"), + ("现在只能在怪物那里获得极少经验,更多经验应该通过装备此武器后拾取钥匙吸收能量。"))); + + changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), + Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X82"))); + + } + + public static void add_v0_6_54_Changes( ArrayList changeInfos ) { + ChangeInfo changes = new ChangeInfo("v0.6.4.0-Beta1", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton( new ChangeButton(new Image(Assets.Environment.TILES_SEWERS, 48, 48, 16 + , 16), "房间改动", + "全新房间:慧眼墓碑房/太极八卦房加入")); + + changes.addButton(new ChangeButton(new ShopkeeperSprite(), ("回购系统"), + ("商店追加回购系统,除了商人领主和奈亚子均可原价退回商品"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new PinkLingSprite(), ("杂项改动"), + ("优化地牢部分数据,并且为即将更新的每日狩猎等设好底层。"))); + + changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), + Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X81"))); + + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_7_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_7_X_Changes.java index ca3c41073..378356945 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_7_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_7_X_Changes.java @@ -1,12 +1,8 @@ package com.shatteredpixel.shatteredpixeldungeon.ui.changelist.mlpd; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Badges; -import com.shatteredpixel.shatteredpixeldungeon.PaswordBadges; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.NewDM300; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.PinkLingSprite; -import com.shatteredpixel.shatteredpixeldungeon.effects.BadgeBanner; -import com.shatteredpixel.shatteredpixeldungeon.effects.PasswordBadgeBanner; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.ChangesScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; @@ -23,12 +19,9 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.DM720Sprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.DiedMonkLoaderSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.DimandKingSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.FireCrystalSprites; -import com.shatteredpixel.shatteredpixeldungeon.sprites.FireDragonSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.FlameBoiSprite; -import com.shatteredpixel.shatteredpixeldungeon.sprites.FlowerSlimeSprites; import com.shatteredpixel.shatteredpixeldungeon.sprites.GhostSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.IceFireScorpioSprite; -import com.shatteredpixel.shatteredpixeldungeon.sprites.IceSlowGirlSprites; import com.shatteredpixel.shatteredpixeldungeon.sprites.IceStalSprites; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -43,10 +36,8 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.NyzSprites; import com.shatteredpixel.shatteredpixeldungeon.sprites.OGPDNQHZTT; import com.shatteredpixel.shatteredpixeldungeon.sprites.RedSwarmSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.SRPDHBLRTT; -import com.shatteredpixel.shatteredpixeldungeon.sprites.SakaFishBossSprites; import com.shatteredpixel.shatteredpixeldungeon.sprites.SalamanderSprites; import com.shatteredpixel.shatteredpixeldungeon.sprites.ShopkKingSprite; -import com.shatteredpixel.shatteredpixeldungeon.sprites.ShopkeeperSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.SlimeKingSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.SnakeSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.WFSprite; @@ -63,9 +54,9 @@ import java.util.ArrayList; public class vM0_6_7_X_Changes { public static void addAllChanges(ArrayList changeInfos) { - add_v0_6_56_Changes(changeInfos); - add_v0_6_55_Changes(changeInfos); - add_v0_6_54_Changes(changeInfos); +// add_v0_6_56_Changes(changeInfos); +// add_v0_6_55_Changes(changeInfos); +// add_v0_6_54_Changes(changeInfos); add_v0_6_53_Changes(changeInfos); add_v0_6_52_Changes(changeInfos); add_v0_6_51_Changes(changeInfos); @@ -122,460 +113,6 @@ public class vM0_6_7_X_Changes { add_v0_6_0_Changes(changeInfos); } - public static void add_v0_6_56_Changes( ArrayList changeInfos ) { - ChangeInfo changes = new ChangeInfo("Coming Soon V0.6.5.0-Alpha7", true, ""); - changes.hardlight(Window.CBLACK); - changeInfos.add(changes); - -// changes.addButton(new ChangeButton(new RedNecromancerSprite(), ("BossRush2.0"), -// ("地牢发生了翻天覆地的改变,一切的矛头指向了死灵军团……"))); -// -// Image s = new DM300AttackSprite(); -// s.scale.set(PixelScene.align(0.74f)); -// changes.addButton(new ChangeButton(s, ("DM-ZERO"), -// ("时间在这里停止流动,与DMZERO正面对决的即将到来"))); - - Image c = new IceSlowGirlSprites(); - c.scale.set(PixelScene.align(0.74f)); - changes.addButton(new ChangeButton(c, ("冰雪魔女重做"), - ("石碑上记录了有关于她的一切,她的过去,她的现在,她的未来。而当你与她对峙时,你是否能够看清她的真实面目?"))); - - Image i = new Image("sprites/boss/fireDragon.png", 0, 0, 24, 24); - i.scale.set(PixelScene.align(0.74f)); - changes.addButton(new ChangeButton(i, ("熔岩火龙"), - ("丛林暴乱的真相"))); - - changes = new ChangeInfo("v0.6.5.0-Alpha6-Patch4", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - - changes = new ChangeInfo("新内容", false, null); - changes.hardlight(Window.GREEN_COLOR); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG25), ("开发者模式v0.5"), - ("新增武器生成秘卷,感谢潘多拉的代码制作和注解版的代码支持。"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("挑战:变幻莫测V0.3"), - ("修复了一堆问题,并改善了部分体验"))); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改"), - ("1.修复了部分文案问题\n\n" + - "2.调整了一些底层代码" ))); - - changes = new ChangeInfo("v0.6.5.0-Alpha6.9-6.93-LAST", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes = new ChangeInfo("新内容", false, null); - changes.hardlight(Window.GREEN_COLOR); - changeInfos.add(changes); - - changes.addButton(new ChangeButton((new Image("Ling.png", 0, 0, 16, 16)), ("开发者的话"), - ("v0.6.5.0-Alpha6.9-LAST--完成于2023-10-6\n\n" + - "今天对我来说是一个特别的日子,因为今天是我21岁生日。\n\n" + - "回想MLPD的两年,我也从一名曾经的准大学生变成了即将毕业的大学生\n\n" + - "生活的忙碌,社会的考验,实习的困难比比皆是。但好在我有一批非常爱我和这个游戏的玩家\n\n" + - "Alpha6.9,是MLPD的近期的最终版本。接下来,她(代指魔绫)将进入休整期阶段,\n\n" + - "但游戏的内容足够玩家游玩,当然,如果有bug,我会来修复。\n\n" + - "最近只是没有大版本更新了。最后,近期是我的生日,我在游戏中为各位玩家准备了水晶项链。\n\n" + - "她应该可以帮助你们更好的游玩游戏,希望水晶项链能给你们带来不错的体验。\n\n" + - "最后,让我们在冬季版本大更新中相见,再会!!!\n\n" + - "---MLPD主要开发者:JDSALing" ))); - - changes.addButton(new ChangeButton(Icons.get(Icons.DISPLAY_LAND), ("农历计算系统"), - ("现在MLPD支持农历计算系统,中秋节,端午节,以及作者的生日,均使用此系统计算。\n" + - "Ling的生日:农历8.22\n\n有效时间范围:8.22-8.25\n\n" + - "中秋节:农历8.15\n\n有效时间范围:中秋节前10天到中秋节后12天\n\n" + - "端午节:农历5.5\n\n有效时间范围:端午节前3天到端午节后7天\n\n注意:如果与西方节日冲突,优先将用中国传统节日!"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.AUDIO), ("新主题BGM"), - ("在玩家在新版本胜利一次后,有机会在主界面播放新BGM和下半段暗示。"))); - - changes.addButton(new ChangeButton(new FlowerSlimeSprites(), ("新生物:丛林繁花史莱姆"), - ("替代普通老鼠,老鼠现在只会在丛林边缘(第一层生成),后面都是这个新生物。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.REDWHITEROSE), ("一种载体彻底实装"), - ("效果:力量+2,移速+10%,每5回合回复1HP"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CRYSTAL_LING), ("新开发者物品:水晶项链"), - ("在每年绫的生日有效活得时间直接在开局就能获得,自带韧性之戒效果,治疗效果小幅度提升。"))); - - changes.addButton(new ChangeButton(PasswordBadgeBanner.image(PaswordBadges.Badge.NIGHT_CAT.image), ( - "新隐藏徽章:不眠之夜"), - ("解密片段:月黑风高,古神陨落。"))); - - changes.addButton(new ChangeButton(BadgeBanner.image(Badges.Badge.HIDEEN_BADAGEX.image), ("新徽章:隐秘探索"), - ("获得方式:发现隐藏徽章的位置"))); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - Image xax = new SakaFishBossSprites(); - xax.scale.set(PixelScene.align(0.72f)); - changes.addButton(new ChangeButton(xax, "萨卡班甲鱼", - "现在免疫恐惧!")); - - changes.addButton(new ChangeButton(new CrivusFruitsSprite(), ("克里弗斯之果"), - ("现在净化药剂有特定版,且绝命头目地形改变。"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("开发者模式V0.4"), - ("开发者模式进行一些小型优化,追加新怪物:丛林繁花史莱姆"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("挑战:变幻莫测V0.2"), - ("修复了一堆问题:\n\n" + - "1.可能导致钥匙丢失\n\n2.重复Boss警报\n\n3.看见人不传送\n\n4.改善了Goo和DM300原型机的属性与地形。"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项改动-1"), - ("1.优化了主题背景界面,并且植入夜间状态,在晚上22点到早上7点前是夜间状态。因此是夜间背景。反之则是白天背景。\n\n" + - "2.圣境密林层改善了几个地块,部分敌人素材迭代\n\n" + - "3.上个版本的一些FB-bug修复"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项改动-2"), - ("1.修复了提灯环境下火把能量无法被保存的相关问题\n" + - "2.修复了变幻莫测挑战相关问题\n" + - "3.修复了DM300原型机无限护盾问题\n" + - "4.修复了徽章界面可能闪退的问题\n" + - "5.修复了沉沦效果动画丢失问题\n" + - "6.优化了部分地块贴图\n" + - "7.修复了DM300 DM720进入即过关的问题\n" + - "8.修复了隐藏徽章-不眠之夜,无法被获得的问题\n" + - "9.新增夜晚文本提醒"))); - - - changes = new ChangeInfo("v0.6.5.0-Alpha6-6.8-国庆", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes = new ChangeInfo("新内容", false, null); - changes.hardlight(Window.GREEN_COLOR); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("新挑战:变幻莫测V0.1"), - ("追加两个随机地形感觉,整体战斗全面处于大地型,怪物生成变多,追加两个迷你Boss战。"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改2"), - ("1.修复三井协定的三井重复生成问题\n" + - "2.改善变幻莫测迷你Boss地形以及战利品\n" + - "3.种子现在分为A类,B类,BossRush类\n" + - "4.部分界面UI迭代,变幻莫测挑战平衡\n" + - "5.修复鼠王可以改造特定护甲,例如板鳖甲"))); - - - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改"), - ("1.迭代了UI材质\n\n2.优化了一些代码"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.DEPTH_WELLS), ("更多地形认知"), - ("在变幻莫测中加入了更多地形认知!"))); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("基因突变"), - ("现在蝇群和重甲豺狼无法获得基因突变效果"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.LANTERNB), ("灯火平衡"), - ("灯火进行了一波平衡,使之游玩起来更好玩。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CHALLANEESICON_9), ("梦魇领袖"), - ("梦魇领袖进行了一些调整,并改名为绝命头目"))); - - changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), - Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X88"))); - - changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), - Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X87"))); - - changes = new ChangeInfo("v0.6.5.0-Alpha5.2-国庆", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), - Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X86"))); - - changes = new ChangeInfo("v0.6.5.0-Alpha5-中秋", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes = new ChangeInfo("新内容", false, null); - changes.hardlight(Window.GREEN_COLOR); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(new GhostSprite.PinkGhostSprites(), ("新限时任务:映月离合之殇"), - ("在中秋和国庆节这个期间一起探索悲伤幽灵它们的故事……"))); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(Icons.get(Icons.INFO), ("修复"), - ("修复上个版本的一些错误"))); - - changes = new ChangeInfo("v0.6.5.0-Alpha4.5", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes = new ChangeInfo("新内容", false, null); - changes.hardlight(Window.GREEN_COLOR); - changeInfos.add(changes); - - changes.addButton( new ChangeButton(new ItemSprite(ItemSpriteSheet.GREATSWORD, - new ItemSprite.Glowing( 0xcc7770 )), "新附魔:爆破", - "这个附魔会让使用者陷入癫狂,能使爆炸的能量从武器中喷薄而出,能够使敌人目标处受到一次范围伤害亦或者给造成敌人短暂的残废效果。(PS:爆炸效果不会摧毁物品)\n")); - - changes.addButton(new ChangeButton(PasswordBadgeBanner.image(PaswordBadges.Badge.ZQJ_GHOST.image), ("两个隐藏徽章资源预载"), - ("两个隐藏徽章资源预载,将在后续版本更新。"))); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - Image isa = new SlimeKingSprite(); - isa.scale.set(PixelScene.align(0.89f)); - changes.addButton( new ChangeButton(isa, "史莱姆王子", - "修复错误的继承类导致的Cast Exception错误")); - - changes.addButton(new ChangeButton(Icons.get(Icons.DISPLAY), ("界面修复"), - ("修复部分界面在新版的异常布局"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("药水癔症v0.2"), - ("现在全肉大饼在英雄低于12力量前必定加力量,且整体加力量的幸运度提升。"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("其他改动"), - ("1.鬼磷和爆破现在是稀有附魔\n\n" + - "2.修复了吸血鬼刀的异常吸血-贡献者:\nzxcPandora\n\n"+ - "3.修复了药水癔症描述问题,纯洁的祝福-守护护盾描述异常,以及开发者升降器追加探查功能-\n贡献者:zxcPandora"))); - - changes = new ChangeInfo("v0.6.5.0-Alpha4", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes = new ChangeInfo("新内容", false, null); - changes.hardlight(Window.GREEN_COLOR); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("电子斗蛐蛐v0.2"), - ("开发者模式怪物放置器拥有更多功能,欢迎尝试!另追加黏咕,史莱姆王,豺狼炼药长老,豺狼萨满长老,Flame-C01"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.DISPLAY), ("信息栏滚动"), - ("在游戏缩放较大或者拥有较多词条时,该项会很有用。"))); - - changes.addButton(new ChangeButton(BadgeBanner.image(Badges.Badge.BOMBBOW_DIED.image), ("新徽章:碎片飞溅"), - ("又是一个死亡徽章,新人:悲鸣 因为意味着另类死亡爱好者多了一个新徽章(未解锁该徽章的就更麻烦了)"))); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(new SalamanderSprites(), ("深蓝蝾螈"), - ("修复被深蓝蝾螈击败不会记录在排行榜的问题。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DIEDCROSSBOW), ("重型弩炮"), - ("修复使用还会扣减飞镖的问题。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.WAND_KCX), ("共生法杖"), - ("修复共生法杖可能能被永续的问题。"))); - - changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), - Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X85"))); - - changes = new ChangeInfo("v0.6.5.0-Alpha3", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes = new ChangeInfo("新内容", false, null); - changes.hardlight(Window.GREEN_COLOR); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("开发者模式更新"), - ("添加了更多开发者选项,优化了一些问题,怪物放置器支持电子斗蛐蛐"))); - - Image dragonSprite = new FireDragonSprite(); - dragonSprite.scale.set(PixelScene.align(0.72f)); - changes.addButton(new ChangeButton(dragonSprite, ("熔岩火龙资源预载"), - ("丛林额外Boss-熔岩火龙资源预载,预计将在Alpha7加入。"))); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DIEDCROSSBOW), ("重型弩炮"), - ("现在不需要飞镖作为弹药,但有装填时间。"))); - - Image xa = new SakaFishBossSprites(); - xa.scale.set(PixelScene.align(0.72f)); - changes.addButton(new ChangeButton(xa, "萨卡班甲鱼", - "初始防御调为35,常规伤害降低。")); - - changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), - Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X84"))); - - changes = new ChangeInfo("v0.6.5.0-Alpha1-2", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes = new ChangeInfo("新内容", false, null); - changes.hardlight(Window.GREEN_COLOR); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DIEDCROSSBOW), ("传奇武器"), - ("新类别传奇武器测试已经开始。在后续版本中需要通过货币解锁。"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.BADGES), ("加密徽章"), - ("添加了加密徽章,长按徽章按钮进入。记录一些隐藏成就。\n\n_注意:_这些成就不会在获取之前不会显示出来"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项改动"), - ("1.添加了暂停更新界面的功能\n\n" + - "2.少量bug修复"))); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - Image a = new SakaFishBossSprites(); - a.scale.set(PixelScene.align(0.72f)); - changes.addButton(new ChangeButton(a, "萨卡班甲鱼", - "数值方面进行了一定平衡。")); - - changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), - Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X83"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项调整"), - ("1.书籍现在不可堆积,且成就有一些变化\n\n" + - "2.其它bug修复"))); - } - - public static void add_v0_6_55_Changes( ArrayList changeInfos ) { - ChangeInfo changes = new ChangeInfo("v0.6.4.0-BetaI-XIII", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes = new ChangeInfo("新内容", false, null); - changes.hardlight(Window.GREEN_COLOR); - changeInfos.add(changes); - - changes.addButton(new ChangeButton((new Image("Ling.png", 0, 0, 16, 16)), ("开发者的话"), - ("你好,我应该有很久没有写开发者的话了。近期,真的很忙。\n" + - "我只有晚上更新一会魔绫,但总会熬夜到很晚。\n" + - "再这样下去,不清楚还能如此坚持多久。\n" + - "我想,我需要休息一下。\n" + - "并且降低更新频率,我想现在魔绫的更新速度已经太快了\n"+ - "所以后面的更新,可能会慢一点。\n"+ - "还是希望各位能玩的愉快吧,毕竟,人总是不能在虚拟世界里生活的。\n" + - "现实仍然有很多东西,我是时候调节一下了。\n"+ - "那么还是祝各位游戏中冒险愉快吧!"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("快捷栏V1/V2"), - ("快捷栏降至9个,并且V1是魔绫原版快捷栏,V2是碳素那边借鉴优化的快捷栏。任君挑选。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ALCH_PAGE), ("炼金界面优化"), - ("炼金指南进行优化。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.TORCH), ("火把调整"), - ("现在火把会在灯火中成为燃料。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ARMOR_ANCITY), ("板鳖甲"), - ("来自远古的护甲,你是想现在使用,亦或者是收入囊中等待合适的时机?"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.RING_DIAMOND), ("财富之戒"), - ("财富戒指同步为破碎。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.FIREFISHSWORD), ("尚方宝剑"), - ("尚方宝剑属性重新优化,并且拥有两个形态的弱切换。具体怎么切换,看你们自己探索了"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.LANTERNB), ("深度调查"), - ("娱乐模式改名为深度调查,并且追加黄金时代新娱乐模式。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SCROLL_LAGUZ), ("升级卷轴"), - ("现在追加一个使用全部升级卷轴的按钮"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.DISPLAY), ("游戏内区域文本"), - ("现在每个大区有区域文本,给各位更加身临其境的感觉。"))); - - Image a = new SakaFishBossSprites(); - a.scale.set(PixelScene.align(0.72f)); - changes.addButton(new ChangeButton(a, "新Boss:萨卡班甲鱼", - "远古遗迹的领袖级Boss,欢迎前来挑战。")); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SAI), ("吸血鬼刀-Beta13"), - ("修复了一些吸血权重问题。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.WRALIPS), ("暗金宝石护符"), - ("现在最高上限+10,并调整优化了一些问题"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SCROLL_ODAL), ("升级卷轴"), - ("现在修复升级卷轴可能丢失的问题,并且采用平衡算法。例如,你在1区摸到了4个升级,在监狱只有两个。总量不变。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.WAND_KCX), ("再生法杖"), - ("修复一些问题,并且可以持续使用。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CHALLANEESICON_15), ("挑战加成"), - ("在高挑中,提灯的容量更多,商店售卖更多灯油,但灯火的每次减少可能会加剧!"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("支离破碎"), - ("支离破碎进行了一些怪组优化,并且调整了巨魔铁匠任务(如果在支离破碎遇到巨魔的蝙蝠任务确实有突变buff)"))); - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改"), - ("添加Boss专武保底机制,连续三局未获得,下次必定获得"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.GREATSHIELD), ("5阶武器"), - ("现在5阶武器生成平均化"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SAI), ("吸血鬼刀-Beta12"), - ("优化数值,调整吸血权重。"))); - - changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG3), ("归溯钥剑"), - ("现在只能在怪物那里获得极少经验,更多经验应该通过装备此武器后拾取钥匙吸收能量。"))); - - changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), - Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X82"))); - - } - - public static void add_v0_6_54_Changes( ArrayList changeInfos ) { - ChangeInfo changes = new ChangeInfo("v0.6.4.0-Beta1", true, ""); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes = new ChangeInfo("新内容", false, null); - changes.hardlight(Window.GREEN_COLOR); - changeInfos.add(changes); - - changes.addButton( new ChangeButton(new Image(Assets.Environment.TILES_SEWERS, 48, 48, 16 - , 16), "房间改动", - "全新房间:慧眼墓碑房/太极八卦房加入")); - - changes.addButton(new ChangeButton(new ShopkeeperSprite(), ("回购系统"), - ("商店追加回购系统,除了商人领主和奈亚子均可原价退回商品"))); - - changes = new ChangeInfo("改动", false, null); - changes.hardlight(Window.CYELLOW); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(new PinkLingSprite(), ("杂项改动"), - ("优化地牢部分数据,并且为即将更新的每日狩猎等设好底层。"))); - - changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), - Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X81"))); - - } - public static void add_v0_6_53_Changes( ArrayList changeInfos ) { ChangeInfo changes = new ChangeInfo("v0.6.3.0-Beta5-5.1", true, ""); changes.hardlight(Window.TITLE_COLOR);