From 462f4c9d8b6fc3d9aa04b0be3759bacc1d2d67c1 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 30 Oct 2014 10:02:25 -0400 Subject: [PATCH 1/7] v0.2.2: gave heroes remains a unique heap type & sprite --- assets/items.png | Bin 17913 -> 18169 bytes .../actors/hero/Hero.java | 3 +- .../shatteredpixeldungeon/items/Heap.java | 6 +++- .../levels/CavesBossLevel.java | 2 +- .../levels/CityBossLevel.java | 2 +- .../levels/HallsBossLevel.java | 2 +- .../levels/LastShopLevel.java | 8 ++--- .../levels/PrisonBossLevel.java | 8 ++--- .../levels/RegularLevel.java | 14 ++++---- .../levels/SewerBossLevel.java | 10 +++--- .../sprites/ItemSpriteSheet.java | 17 +++++----- .../shatteredpixeldungeon/ui/ItemSlot.java | 12 ++++--- .../ui/LootIndicator.java | 1 + .../windows/WndInfoItem.java | 31 +++++++++++------- 14 files changed, 66 insertions(+), 50 deletions(-) diff --git a/assets/items.png b/assets/items.png index 9da01671ccaf26f00e5e72ad7431946143d1a97a..5a103f460d843066550a09f697fc3e8e3757a1d1 100644 GIT binary patch literal 18169 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 JWt~$(69DFOR6GCx literal 17913 zcmaI82RK|$_&<79@4bcSC3=ezb=4>#hy)Q`g6JjDt<`&rL}!r%39%tWw}=*^3(;GY zM6ipn%i6u0@9+Med++o7pL_N>=Zu*-Gw;0f&O7tI^BF1TcMWK%IH>>tpfxhoy9WRu zLJ$N{kP%*Xfi-S~7n#c)13du$?^oVcolA(J^f!DM1OU{`|85XaRKh`sB!6aPs!zU3 z#YrS6dd)k?902$LBR%c=p^FFhVWG3Ls}OQq(SgQcw`!dn;~f3Z?}h~&kgF1bZ&M{5 zP@C1|A~mgin?w|E*_UmWQ^RlTF_P$u4&T>C5#1w=zZ-Kek1ds@K#axsjT_L%0-FMcYk>bSGwoG;qlRh|74w|R zL-QCh=DQ$ZHg5$*V*~s+5gYEra|Q%$4fd&4OGwCVnW_O=K7|GNX+OC1;P(^ugjbxO zeQ~{Os}XdBkJ`{~rJKsh5H1DIc*I~YCahFWA+VN5p+<*aA}UfqL!-3GYo5-SSJ4#! z(gt*z4of0eTBiuib(Sik<4q^c1jjYZ8G=k=~M3i{4tS+_8jfU%H;U0 zNX;JmsM0f{zUPgdSz}8QpVK&0-o7gwixdgHYarxgRcJt4o=T$y>D#HXx7U2nq>YvC zB?eZ}eVM`}LHK<2YOy#YJRDPV3qkRN@}$hldn|}m&Y~G724hCjYD+ZB_d+71yGKs+xQzXjFeLhJsEdmLHB=qhL!6wR zuD8}5)$nALP5tbLt7gkr1CU5ArBy9!PEOA7=qNKp;w|vh%bnOGE49)k0fTHvhbdJy zmXiQT)CNpwzh3Q-W*c^NAtQseo~p9UVgrzu$4_6J{yK*vugii$G?egC!rjKEwFcPL z&{dNvaZb=!(-~aD2ME_yeSk{iLZjz!v|LK%LA&Ds^tD0Oh)OCunM|m|pGY6L2t@8K z+kJF%`p~ZtmHr>>i2#)zwR|pA6Kk7H92*!ca9Xk(j{BJUXN^ zV#kOH{=5`Z4W?^TL!CM{B<%H@|X#Dk1G@ z?9X*KAl->b-qlx`&^JhjRoU2qqpM2gWBQQ4_IK+e=>{k^TdXm?_8&YH@WM?QT0t ztOxiZap_Rt_s_t*2coI@D9pZon#~FMg3kYYr2VznP^l>_BJY}()<%)!IlDBpzh6&D zPL6RjU*^W@JwVFblNc%D{b4lBIqfw_tVxk5^)={Mpu#){B+ayk7Zr4$a~AL)s)R6t<6DDf!w*n4SW{I>7d97ygnhZqhC>?0sNmtw?{BjQP6PbHL9LTFc4D? zlKwHn&=_#IIE~fu4wZqR?+zAoigk3m>O%)Ndip-OcfI0Aka6UG{TWbQ_1*JnziBul?m|h!5)EoMl|pE@&Rj`5FJI%cvJ^jbNj*PPK%! zhFlQ=FIB_*mLAWQtj$fA7sdNL_~^@n7B8Hc-GK81b!(_1jgPyRG)&^_3-2!sQv>c8 zvbmDqM{*H$4fYbLON*qTrd1!A?uGT3s6cvrx z&Ih2B%p&VOF~t2(h>G}lR5%F3&vU-KGUnxD#t4V*XAw*DFIqbcK5@!~B6u^-QulcT zhbry>&`Dp@__d0aBB$Oj7ZY)b9SWoZjS{gBVt6PNC78^vWB~m8jJykVQirYBjnV1UN(mX-+S+FeWxn=01#EF0UrY)FFC!>`><3`6Ic($ySUV9KRn2nBvt#G{Yrs<0 zr<1oDSpVVRC$i2DLHXq{nloo#0|enH)0IG>&D~v0f0Rh{c|!C$amVkicur-IT;=Q6 zwO!xxVK8XDy-WO4_!OCQvf|&5^#^8M?!d#=C)Mw@5si!X`)YLdeMyu>G=NfZ#?S5T z7zQ1J(r;mvjf&_O(75@CCrY*xJs;Uk6GC^8@}*JF%_|J_8F%0X^gP(t7TU(e#%kaV zY*$csi@q{WtZm*fel7)H|YVKFa?#k?H9yPP_L#tslq`RS^9>+&sLn zZISGyXZTxpUF3<~%*EzAqv`274A(EbrIyWYXHnhdmEPMWv zFg3mtGI-?wvvE?oJb8u9tLJbeW>F8dT(YlULp)f?U(%`N;%k#U$35X9~> znDnrZ99UdiB!|Ug>3@#j>>FAN+fCr%-N%VSp*j_e=J&r)yYan8g`tAf(v34>+yENb zIXDbYI<3OV2S2~@N38=JV5j7H^61U33iGKR(ThXytq7p?T3t|CliH*gOQXk>K;Fca z{^ooWKGF-U%qiq^;9Vi5<<13oJv^wJ>QulPnXQ#)$_AH`U2b6Z@E%NcZgbD6s&64` z4^@w4A52}b7kyjHDc-QCZ9z0=1(oUe!0%s{|9xn=x-xqpLI*jfm0e-N)E262J7rfR(MV>e*o&%=ll5k5K634bG9*K(B~A|D&ZWVPZb zlf6RS$KYW6xy5K9+!|N^DtD^FOyN(`?rW?`gOEnDVj{&_cllem<0{3k-wzl#IR+}v zzpoFs;L-+Q_X63X<4zcVccRG?PX~{|A6mCW*33S&JdR)m-+6nqK<2cgKM^hTE=K*q zqzy9!we|GOwVi3 zsA9i|+-B%!TC@#=4DorY+4pj?``so#kX<@?o zJp2^|zUyN&&^OQA^qExFcEax{fc!^PZC=h<%UN%x{YPMZA}t!yUwb%$f6Na z<@$F7U@^ z?}Hg2@)g2=^lsMLqABp^ig>&N5vjW_D80dpcdUAW))1%SW;E_fn(F|?$$c)O6mXoO zRb2j>qBl#+v4{J;a`gM>WyGCNZ+hjS#W4lI$QhdV(rTsN!_A@J%wmAdoQtukIPEv( z``^LqPDkV#S+hWFa7>|>Ki8~H+$Y{y1|qGvi%=Ak4)$7w=mHsGQA}S}uPjX7N-JXc zL>w1F3wNP+YvWmJ#&*LpcWM*J7>4zGNn+@AD8wWs`*Y1Sjffa~N>qZLoe(S|Lty8% zb>#Z3OeD-Hb<$HwZ&J;gWsJW1AbjnI`i?s~?t~U7iNZ%e#%nc}&?qeITNlxi!4nH9i$sIaG7W zr4;eHN=v zE~kPAwALD4>4<>fN=&|zvLvHJ!Vu`LG(_ulgCLppG+u<$)k5@8$QA_+nb01WNgr?s z5(^6ptMNnyTsN5e@aV?F9$3kBTJ-N)xM6s>DyNcn^2mtspVh8n z4jQuMfFW*Mv#PSi(Q5SbxlXE0@IebYdUSYT?XSMJ<e>B6HC(3tcXPixOMerdOEq zTyG!EPX-T47eK{Orb6B&`b>B8E`^upyY22kz~MAUcR5VSPw(q<^_(3neI?uh$nul! zeWP5FhOMD2cL{Ovo<_;bSxd8q3@+utGK~oT^&U{2O+&1QPw2Ew#4kofn@B%CD@@Ji z)7c}>Yrw5WEdTV|NX6shV<*B$%R!H6E*d;b%Q6_s8CFa+?JJ7mpcj}C?7DMZY>@m!sqH!RGG#Ogx69Cx6`e5Q&+_UlwZMPQLVm&g81QrN)5MMqff5f*tu+9MY9D zl(S8rb8|P%S>tiiK;Vx@7@da|c!vQp0Z72*NcYP_Ap%*C7r#vY-q91f(ZUD#Z}wCA zg?(0m9*+S95oMU1mE&JmZ@9Vxihwu2poAH6H%_CaaqO!f7dHpdt+AG1 z@SjiEs}sBtU8%YZ<@S~A-A_g6M@=3Zuh84XaYp4iN&U%ZSJJcCV?(W3wQ?gY<&DvS zoP0;+XBKE#0Qk`rp=@MoD$LK%f6IRzpu2wSA1ND?6}rRUzUjr0(S8itz1!%sq%>V) zA-F9u`KMFrr8CD0`y`>+kGIKNviBcgIinmqGHu?q7KQuf5_L+P7 zIpkG^SlCYNbnv?v_t|l}Ns6=JvaKt92C4->x^R7mJOz9r8 zYd|zo!F!5`68wI8%p23RDjRDhQPEBIT`a+C!n_E2Ile@W|6@?3{4{;Zy^HrF+U%zt zYk$Y~%q67^j?hI@?&5FwAUF4h5#ow~5l=yOw$`moT@Me@e}kG}*2Ha<92J(_bk8g* zU)gMFxoz~+Rj;Yjk>^@LlznGX<}1O=^pnJw@ga>1i$V|`ieLA-7yVGtr&9*~Zl5+_ z{O>$wD#gN0m+D5<*CJ0$51>krDJ3;$O!T{QxB{DIWinf zsfA_vPI3E-K~DZH;_Ejn6qS9wS%%#Wv!hlmW< zhk3+3SXEcPU9|7@UG(^Q1949$W~X?0#tb}`!J}d8&|MWo4t=Qh?Wg)#Ttomb_7iLl z-wQYq^y2zBb~s?VEc0;z!vpjOUqY@mpey`_;g;B=&Mz96 zpSjMnZ|0MHPttG(7OBm&a!*`-FW_{}pc7)s3q+nr0X}6n`vqA)7 zx^0P??;5VKZG)upf>Iqt!2qiEDtb)$%G++**0-#EBrnDB2;)S^&6phe4h_#$f-d@M z+6F#xw2KZJFY452ZRc&e_iB5l1jeb=m6EqdYG$!TLAg1wf6n#Pt1uKRwzl=dMv{$* zmv`b`TzTs%t=8zkDA0rNj+)!2fFr=iDd3Q}u$L1H94^W7pT0k4;n`l2uX<5aM*W=D zoN+A|_TmK*DeBIM(VaVj0T+G|Rpk^AlJbpB)_&fpw>QopIkB2%nGD@`8s+1kW92{_ z&0FV%fMCqrE@g6=2E$|;9|rG8L~TrmCF|NGFL6Dkx+-3IX)EaS0Ux>eHEpHK>6+41=4wAa|3rGsG1q{r8AtYsXq+r<*Y$xf=zM@FEE_20)X z%oH~2tF+J!udBK`$rq)i8GrtG3kNyHiaM-BzGX3%gw%ddO?D-Ze+exD^dI!Df8ZY( z8i053A4RWe-Vta&)ibgp^P}3~%bOV1fjs*)ovO<+&*37lyQ(^INVvh)K9e)V(`Zt4;u3{G&JZ4 z^%UzocqyaAz)i5P`v(RZo<4or|5%>#1a0k|gNnnn9LUd-h`tvftuaR3ncV%#_&`{b zFkj~3k&1|WdgW{yB)Zt^LyTRUyZK++ufBCsK3;-5ZM~RN;4ZIWA~x?rZ*6TcnxIY? zp;oA0l51Ok*9f&HXJqK-OWWH-_rqUDI&*;vs;!xao06uKK&kIjfJi&6cEUXpbJlGM zg{F6!UvKmrvkn|phZV7&&CmcdZl!LY4y^k{w6qzo6R&@9%X{(=HL(Ar=Kb3G5UFUw zp|<4OAHg+xPmJ*<{c%I?8)6og2c&~84gPFtZ^eDb9s{!Y%d>}mOLW1Qa6h@T>c|S3 zMCbRve_$@7MMY1!v}hfA9@s-3;P6GOAyiZ=NF}=R&&y9kx?Y+ct-r4MOQvPzexAOkG$*-(Is>`?~}x!U`2~^dQw#W z1llHxavFlZ0vKo`2a73(`+5It?egQi!UkTD>ho%vB?-<45NFdQ%ca|s?hN`IO6>G8 z_^)NfeZQdI+)RAeZRfK6%|b}+2D`EXf)O6M6IrhTmQfPn%o;a6Q{{6f%nw2`GV}y* zCYCF?!TAdr)3s|Uot^6coS&&rmhSor9CcrU93l>c0j>K}M&z;H>w(&Ck%^2;u$AVA@9~2lgN8Zfi(i@5BCi34U5YOi3U_+Gf;pWZdB%VA zA6{p=|I9P>(vjvIrxykhC6bNAfNGPh%aduVXNUtUpl5Axxjs}d*B_fXwBcQ?fXykQ12_~~ zW$MR|NVhz8sm*BQtg;#{{b*S;HT;N9=&W3BpAXjT&9WR=zZA%z{^B^#iJF2wG{RzO zFvR*MBFy!K6-stCL$fkYR=N9A`hDMpitvW`;Dg>`KoP1+bbip|YW0H9XeP+9i}gj< zm5G9^(|aKkd)Z&Ge_aYNa4~00r?Ct1I$#%6+H45XJp70M7LPfC1|$sz1_rtZ=f~Tl z8tC)o;^DJ2uav*wKZ8HrlZb(Kx~$%Q(p(VmuNMiiw-K#*ooEgJ`aeYDuk5u(TN7iE zYEAx{y}R`&dw=Ax+;#OplPeFNEaJ=|{slL-c(8}RBhXWibL{J$16|rCO?ecxGl)BS~nb-f`8@3m``xnBwK{@v&Yr*$C8pUz z<&xqbP*oSAn5|GJ3Dl7xi?>5~xklWOq=zlS;Tx?r; zWcjE*sSnAW+Ok4IB-ZtIF)O}F1kZMN*c7oA1fse4*{3#KjwK4MzO*@zm2wMfU2`S& z+lj=9&BSSSm#4YA^(;Td5j$vCw;Yuk<-TRHA&`@XFU>Gmc-3JhmH=}DLjSg<{JBAm z8_mnlk4VPb=5i%$ixaU8P9n}0@B9;Ry^;KKaj?(5pzw$PYJQ zGHlVlzS8Z%2dRYJi;K+&tr8-S_-g=Ut-*i+@_SsNME%Lh9D29m&!pcY(hc~923LEkUqq=1nm|>Fqe!4pyQ=#UOR}(LvnLtP?O8|A>L0t zC;dTXO4n5zGgzznE5itr>V~aV^0}+P{UMNgk@;}=O&*8x&Cfsp%lh{6yE6bO!m!v( zZrh2L3(zNeW}?Nd2v`$Occq>@7AdD1rQ4keu^N{ObZEW#h)+<$@#OA6e}AYRu&<1- zFT^i;$?)$F(;3P1j9Gj@PHmbNq0_9ROv&hzb9eE2wUp`3yV(KwYy1kp-LjVyfZhO! z(B><}Qw&pwz}e9nJy4(#p#(ThzcKo_bl{+39ECS#CWS`k`BMdby>`VwvNbA4cwrQ8vLyX7M>IdJo*9v|zW5;V8k+v9mf zmm98)Ia+&}j_(fWSqwe?Z@D$xVR&L(S7ys{EHOEq$Icyc(1+=+qlxjzB)jZuDIF_|3kt4nfY{&nL!wVKopP@y=Rhy88SRocA+ z#g$XmRl<(&f7f4mQi@Z4#+PQ8zlG8E0(uiLf)|6`c5opi_!q>?!6NU$ddr^6^w@-P z_{`Odtgra*V~(=tq%ruBZ&}Yy%p_qqkZPJry2{b#MfyaDwSxTTCsMGs(Ja^-1eW=7 zuI(Igu6vP%KNUON!p~i{V~V{GlhT*j|F-%<7M;%5>sn{Co}Vxewv)RHN7AoE7LVN~ zY}Rhw@9sX=n+uoy`4@M6DBwD|zu9W^P4XyRox)1V+8!8wL}&$D_ePl%H|ucl?1cSW zl=gbaFNUh(Xcvrn40!9%V+Fh7#YTy(KI}48UOO)Az@ob^M!^k!r4e}8Wj<~T9F=;B zZt;CzjQIN5WIgK+M|Ckw2^|(Qp|?f|$+8ix&8pZbuep7qjJySY?qc|i_`~6@2?tHV zVN#g6=Jvd>=9k&hC4Np%%*pkkoD-?bb*|Tp{JM$jR};#}jjRXE2yZ4MOkwZ2eFnv~ z>oM1ke7=vZg`e+gz&ocWI%4eFO629Q0ix)Gtb}$9!maxT5`Q`NbOl>_xkHK7 zAH@+EKOCIzhjWO=AbbmVR`L432;5u{I!EERV|{U&qb4yhg^+4rT;?E*0-GQf@%&^$ zZJGr4p7-^AbpQ;oDDgWBJkxtsMli2I<1DJcg z-HxI8!chC2iZEMFT<)LRP$W)Vu7!QBzP0OqicD*)D~Vd-3>b%}!Csw;v?yv?m7MHv z{%eBr8^8ElyYmC!hDe_L!TyvWi2Xm=2#|1WGx(S1k!JCbaC#>5F81OqdQDaOAnDg; ziQ^gyrkSu5en;Y8kpvk@FUAbj65`pxKFE{hd+H+NnCB?w!PvAT_Wy!DN?h*pg|`x& ze}AWT3gjEf-TM#VW-;X17Sn%Ip9gutX&^JWB z*H-i1S)~!u;e!uW5s3ARr22oZ)WumctrOLe>PV`uy{@-1w+v6_AkS-&k#s9WTh@_G z47~j;9MQvLAk>U>V9YB#YypJo;Qx5MtAX-y!be}DOhzoaP$v6*TKH`b>*lG^q=zc_ znSPU6yp`qFda?h0wx@zCra}$qiKV;1u)-Mbt2%l+KUBM`%-gR=<2Jt(#gPlaWf!M7 z*C6E?R+FCBNjg%sF-yzx_<=``9iSS80gXBhaDn zYY6T}6x63W#;3ZMJ9U0cd4Wgkx39##kVmL{v)8Y-Ck)9mRlv*nlVjk}JrGN8x~B-y?}jG{4v zX}Q^DWtjxJ>J5|F6IVrJgNo~fH3Usyp*-Zwec=Q;dV6n5-&6IKOad%aHY zgO>K*5#_h*XZZ+R^_mW!yn=!u?V*X(Qtd^5sbnNakL+S!XlVYMKDaCCP=D%j7yRaGkmc_L@Uma#CMZpLW9A+BCFuSXLAqgO>p?dA@+qcFdJ#T0s zId8VF=Xi&{xN`R-VtLN_eu7w3Qqp7ttogYY*+L9IgDA z7~pgutydyx=L-DTB4Dhj!H~9g+AqO`I_Xm;6g~IKsC6TeD?2-T-T7W8ddtO^S#vWP z8e1vdx8?B9F{mqj(bw1aGEeGJrukB`4cd09u`q{)ZRsHfTODyf`^wrSI}gHQ&82GU z^sC#e;KwBk!%7+Q9rSu9I!sXX-Lsk^=&z}-sh2G5L0tV7T6W)jPN^ztV2n_n{$=lb z_Q3~>4+bVa92}W{yQ1f3TcK5nMPrV-GBfv>-7GVR&?PW-e3at{X3a>>o)+R7?J}Zd z$c%xp#cUQuk8cauNr6*&*b8DISpJ^!@$O;Y!1SlOmcK=7lbQXu&y%){6NVbKHB_^I z)GpYx9~J3gt+|MW&)U2Z%UjPs#qaxM8aQr8xo=OE4Ud==<-M&u!3gepjVQ-0F|j~(YGQeA$n z42a3Lp$FRV5NR@6IM3f?fWZ2T__7|@_5r9wH#GE?pdZ8azHa_xY&U$)`Qf00Hu~)= zYh(+h%tnh0*nCm(CUARpZ@2DD&^C7llkcnqtKO`x;Uz1dqyE=cbSlwL9dhW;&QcCm zm7W{!wrha|kD2>3<)7H0}zfX_tQngJExFSf@8bMfqu zO%uTiMnJzy7HF2%a%@JNh6qdUPBX4m!I6(>BM%T;$3A-b0xkTqLXgu=y^tpA2{WcJbek%R^2s^Bc&G=jD z8S52N8vd(Zf~-0IQWC zT-?K;1Mf`}qj_N;hBq}GWaZ3mZIm@BFqjMz;u=7vq#8?*x5*o)@p`9;gByREk^WZi zl-CWPJTk&`QqnlDW$OWiu_BuhMOD>c_Kucl`V=2ZKt6y-^*?kcf|=-eI*u%o88uB&Jp36yUL zA;wy`kgSpMc~a1vIslGN%d{jqmw+j`=^)#w%D>hm!(LqopJq~sck?3xTg3NrjMRzJ0qX}&aX75yCa;n6bGh)~cr>nrr4 z@NquRAMpYg{RCob?)jR)+8%%-;S6+F-F0dv4tyfexj3G5ReivL-~)lNNMdnubw4Xk zMNgLQ2-h-ku)NB(b0Oi48Rsvo`QTTLprI-gi*3Bm*11Qk9O)V@FF%Dt`j8a3y!Vv- z_n!e9iw$I3UEfCe`wv9KP5|`Us;(Ti^I#`$J%M>a{(4x#w#Rf$MH1Rmju()HXcJwh zBR9TxPBo)WsEp@2iVo{_K`ooLTp23cAtKzn;qPR)%i&x!)F5WL?tg1iT8@!JuL%{K|MD;2%m{mrT}+>d)*L+M$0bzWqbDdocwKAk12u02EPXIZ z56zMGcqsxpZA^Ylz2bN8;F;ykl;qjKqx}R#{mc`-wU~`ZGMfU>;1CW)l(1sdX051< z%z1&eg+&ZCyEOWz0ph%j9DLDru5co;D@pP=^4r6jLPy<6HTh}DVm9=KbB2Y(Mt8K3 zq$CT0?H-dKV>n>~96mrNTH3KK(KzWOretV><+bTPm++gkC$9<+BDo3Pq5&T0P&^@c0eyoBo|N%Nc~2@tWV#7khVSPz702LDO}LjF zlY2(4(?xz>T^Ow-U{g66c;-0R@9ar*$I+$$KQ~FCFYc7x_$d-1by27cS;iRKW5+&7 zZ#l}nEl{nwjz6?W`J@I-qf+}YnDnmD68j;h|n+hE9& zxpt@AhnOAan4R#Eqgj^oV9?^q`VB`B9XW+mcon9XYP&1yegpE-zOEt6lA~DpF9U)Q zX!4k*xTAdN-qlR}vaO$oXU>MR`ITKICfbxsEB7{Sz~D-%@0kd0I?%~-CiBNL>zBch z?vtPF&xmAMWRq6oGjxkDH*W$?kZIt$jP6rmr>EsjyU*Zs;dm``9?%E|SlN)+*@=k2KVh6K?)rs#w({P3%%I7e2p z$FnmL6@1lsLLoOHBSoG~RX!Wz(8jKKGNr`QQ4G2= z(Hai|T>4@@bB;I$sr91dAJb{j-5~~}n+d2q$6TyP$86Hc@%-A95;lsAeBkEU`t zc714yB6UU_kJ|=c+&pIl))51h`EWsY+@o)@(~S$XqEc|Jr)|%!>pcx4wY{y-dy0w{ zWIozI=!L0%1{+0UeVI6280Jrz{`Htl=AnT|hC&z;#uF?N_N%x4&GR%abAlr9Ag7?F z)$dRmL-uP-Jznk+y)a31;(~^`iY!(A&1e;V&wco3$^zZ=G)hp0NAvt1OIE>}b0~ci z$0{**;`!tl!TBOe2#+P5YxN>|w5qGR(Qd$Sx+WANg8p*OFhg*;rgXAGwntv+)oRre z*0_b2!wG3m3UJ?|e*VEQsjCDts6=$@1#m+aa$U)dbg+}z4BBYnd~u7wclQJ!?r|T3 zATw3Yp^&DICtwt+!{`Kg`=g_zF2q8`ctpbD-r_)%n=uX{|BoSaPrvS)Gn=Q*_cI(77KRuQ+#6z^Q)OtoNiJy7?PG^eT z&7_ghbbzw5vJ!L(`)#sz&aH3rjEL^}*d`4=Lo)OIAg2ZWjfoZ4Q(vur7E$WOH4uq> zN$#;2;`7PAA_rh%y9mENRC;n@bm#Jw<*gt8v%;3)zh>VMzMww+(^He~V71QpR_IR| zbu5}@V9Mryavaf?H~o=MH7>E2{pw}qI$MyWQFUijx;D|wrJDnHoI784+xy$t-jsX! zWA3i)(RtK>nZqYe-6T4lQ7a2k$&b$abKqx3(Z@yK0Y2{`*cCgka@Qr;^V=7mweJrg zvKT;UX>w$DqPT3!k$0;6y;4bAh=KX%+|r;$xQ{UWp%iAXw?>ZMl~4+xB>?H-P<_Vm z+4qV#f%LQOa|@FF<&=pyaHoYU4;zgMeJJW=7yg+Wzds02QG4r1{mJqt&_{<}r{`9s zSWv0H+B{~@MrIo_-$@~BVf??Y=qx9J<%%j0A13{?1pQ#8y031NUA?!8vk?!E!&B*_(r)n_( zTJWed>5)qG!lXc@oUg~CVSviECB$cE-kJl=;5pZX5^9f9gG=m|siyT~Bz{g*{WGP; z{+Uv^pHrtIOe63+|7&-rh8GZt#!$+7SN=~HFQ6~xk!%1U$0>-~TYhXc6!Qk_gd(RA z92_=OFT%2FK)w%ElVz8bV6Owq%K~rQZERfQo4bXH0T)+Sb}tpsOI{&}q0Pj{!3@UW zI}zd7_gRkc@=%$c8jII##64%Meu5`Ac4zYK$<3HW!G_otu%5`nyIGEkCt@Yi?Q5)e zn5>1LIsBZa;$LPrk~FfXNYgmVaD%0v?!_Y{usMCx1W zkiBhn$aU)47>}J|)p%y0RbwO!*S#FT!%X&h?wc}aM!&Es&_jSu$vxXMAH!~-P$a-1 z*M>SoMwUiXzF6@@$}3+5k6$4!nRnbD7uASn2}|IF!@^g|w6wLgX|+gn&!JRe_LC}n z-L+@uT=k1MVLD~x8#BH#vZBVwQmNBC$Kv_FF}AogJ}UiFqr*d zNCpEN-%7eV+{%y2a>J$5TRjGPK*g6>Q^(JiH^E|JV#Gk>r%wqOw@(jm;(t*x%L7i9 z1dl2$uj>8FzwXKYIQ)Uy%Df}L{GJVvFk<1%^F_I;$!CcTnEdSX2&F}3sw*c(@Jxsy zR=J@546NmU*DVNMRX0u2|L>(=8VjcjemlsbK`Tbkmx^DjkuwBL9Af_}n)M;CLqpyjL zV$<hC40Aiv7&C^0Bj82q){%Qb7gRVi{xp?%xtkju<4*`?!IO`_nx#4F&c@@8H!$7*`YNSp@@vbx?sM23 zK~EjT#E+pH(Fcpogv^%Jcb~j_T>AsisrsXBTz8@wj#366+{D`!#lDoWSFGAAhMf(_ zs35tf@zxu40eWlLCK=pj=jiaq+qXz%E_SM;P?iwlRAt_vqMZN9tCpX3XSbAyDf(ol z8=ZGwE!e@79QaBoH0>W}Z$0`Isauc!SE?EQCVTLbK9C*xFK5RI=O!|%8l-hRW_Gy= zyA?o`kdOfIVRots%hdt0av=y{IE=H;y%bL&>qU*^G=6)A8+c?HK!pRfL<5O4zdbGQdU z+&#KHhKT%0A_?a1sza_j7Gl~f&L)o&gU$cD{ABkOYZF6H2ij3kM0-fb1-q5 zTdHZ#zP|eIT0pnJ#tFBnGT%U;SL7cilDH2LZ%5MJ7N9 zvBcTY_gKEcRP69d%h~I1bRSB05h_re<7TP8k2@zv7ceEpT9b+ zZBB(7GI4Y0GAhK2ephGO=pe~@4vvGJ5B+d<@TwvGC>XNHvpRGUVAah}^0;0*CqVS#Ext=dSoJDsY5*rhzjy zTw2hnhSHqG6DX^|jRviFz47cI4ejj*5jjc+V~!f-ljdo0AAkBJa6aqedlPx-46lF? zN{mm)bj5^cr5JGFFuSl^!p^4cbIFU_qg0h4cx78F22J5x2p{>ctA%ktKyvT<@{9Yz z&v@itcvoy~i4kQ1cdz5(_?~BVag2VL)o3i=wPrn$geL$p^&dVg%oF7+zaocX znO`MyuiIm>;UO9OiCE^Oz3+DzWjPH!F-eIkVD;I4{Hi<8CxXYt!fFR9_x_zVidYNv zBqiU;hXja@xX`PPHN~_1_p1fHR*uGBI^m)KpaF zR#u6zu|!Rt->G2HxV8yp?|+QyKRv8!SFbb`F@`Y`ktX;O?+thM z;}|z}PaQt`uR!wHm1KO|t|5t%J!VArqAOh=OPn#(8wW=5R8x(zR!4oueXwmN!jGBN zQd!=A-J&@7p3`Qj=F!Ua!jx@T&3)EjLcs*cV*LG>SOE?)Co(AB9y^sJ;s+Im8#OzznIvcMq(mKu}%S;6jQ zc@*7IqyEkp*#|_BarF%L)$3b|A=09v44eR=$wGc@5Bj#e1!|kt-X}V%iD2kA^P(J< zJNE|q5MFl5O$R?X5O7tJBD^IDG1*(>dGV63B~8eycz8d13#F(&RX2KcSWS6UIu+Qk<1uR)Wt@0Yui*!yfz6GO$t#m#MOl9_MZMKeWD(xxjDsXT7h zWCiQL;?RmRc+geU-cFPKpJVTTAC*deJLSry7QLG}gsaJ+-Cg2_K1=Gtm)&7Zq z!~DmbG!BmGV)pp*OZY=eXzP5%yZ!X7TLcK+SNz=w@}1WCUjsT8Nwj=E$TY)I6(XSE zF@E7H{HS(-$NpYo;+VopX07PQ+5tD+FK$Ji{tn-yH@;XG5)gZYg#ek;3dzT%^}nAT z8qhPJC2s%>Arr2WKsLYZr==#|A5BuD8=Et=>6;hI(24XfED3%sV)SMizb6g;R`6gj z7!tr+i3=zY z!>p{%^SYf#vfb&6HD6+L1x9IR*;6PVWWPSDPd@lU$DY`4`m0;-B>xh!fyss|!qk*5eKedlACvu^2PBQtCb( zZ9Ed=DYsG2#@r!gQ1dqoHCp}sW5|(%Hny#;Ef#IB*b49X#Q_l3Doag3ho*DNsCvPh zH$w2At@FLMmdl$hzJV!@Wb!0>AG{mTf=l`oo20<;-2F|70mlEWV;bONgM^1CBIOFh z`yT%m<42Cp28ML+kV9vx%_3O#GX9;rxOeX!13UZB;iziLCw6Hn5!tZg$1vI#0q{7* z41X%v!fz(LwhuRVAnImTe!0P={{7GDPd>5K#l4@{gQ$)ybwi?vVevh!?(s z39s_R4747HR*Hm&6+?#tEyn2pwa>#NLnr_s_5JsM0U|S*-(^5E55ppD99aqeY0fl2 z@56*jAdUR{GwaM;Y8EH*Ej`xeCAOM?^r|OOcpGkiT#KB!fx| ziq!O;Q2#4$tadl?U9?|?n;ClYTlj`9@qbMz1r-c5BM#o&%u+6%xEV=OE&$15=p=}o zq)cSk7>oc2d^%HwiF{8dgCq3BipcuZF-)NJ#y+K!-jZCJDU^QcLBHSG6C&}*@Ma6U zknEw6^e0#H^f@Cs5SSop4(@2yPbM3Ui?sSG`*M*1C?Lp;3DF8 z*Xy5Yb#f1Sk$n6rY@Uy9GhwjEf-bOX^Bq3lg(L?>38R7vb+Tdw`rH1E^bhiY%zhEG zJ0}SEv=bgxQ}r=}Kp|re`gyI>V$;(CaCG-aQ&Q&aXWH+ZkZE2~&L6YG8h3m6 zWG&sAVU6=+zSk@b{)LsZF1aDZ<>loRnj8xT%E|}a{*Nhcfm>plLP~OoNcFoi0ME7< zzTq57Qc^`IUkbd6bY#|PfraIJCfRqfx@yRRN!i7dPqx-&L9!E>#gr{uZm=)DwW7^E zxia;2hmB&Q^&J#^ljN@9-hwWx>O_F>yN=SEN>}SssnKCZ630Pt?>rVHiQ>|a`ec#M zo~z?*1+XKhObUlwF*2HwFEzu9D_5^U`4$Na2!_{k_iT^^cYwVs2+he0)Ps+ps83%Au&}Q!zt9 z@#i+%!-o#tY09{32wV$U@^X`e-MmwWx&QCB-QCKnYMjQ^H%!owl1H;+;?rS**>k$zzxVX`KFtvJ`DpJ(){%H+@m4Orgz+C z(a?CckFf_hUuVg};se1Kfg|p|98f^KS9c-*PHhrXSp1 zJC;?yvt&4Mvnv}Ic;UTnOhCf~|6h{*6w=@ZoJiiyyWqcUqVA8EOHX$fKmAirRt2MtfPj9PSkUR(UYKz!?w0pj&+~FIz8&`uv&1}N zH)Y_;Vz{cYkD*uP#&5@?{=ktGihy9rAA6(wB?0eK#cu%*X<_hm^>bP0l+XkKsQA{R diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index 89bf0e60d..d6524cecf 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -658,6 +658,7 @@ public class Hero extends Char { Camera.main.shake( 1, 0.5f ); break; case SKELETON: + case REMAINS: break; default: Sample.INSTANCE.play( Assets.SND_UNLOCK ); @@ -1318,7 +1319,7 @@ public class Hero extends Char { } Heap heap = Dungeon.level.heaps.get( ((HeroAction.OpenChest)curAction).dst ); - if (heap.type == Type.SKELETON) { + if (heap.type == Type.SKELETON || heap.type == Type.REMAINS) { Sample.INSTANCE.play( Assets.SND_BONES ); } heap.open( this ); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java index 14a5c6bfb..5d2d9cf47 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java @@ -56,7 +56,8 @@ public class Heap implements Bundlable { LOCKED_CHEST, CRYSTAL_CHEST, TOMB, - SKELETON + SKELETON, + REMAINS } public Type type = Type.HEAP; @@ -81,6 +82,8 @@ public class Heap implements Bundlable { return ItemSpriteSheet.TOMB; case SKELETON: return ItemSpriteSheet.BONES; + case REMAINS: + return ItemSpriteSheet.REMAINS; default: return 0; } @@ -96,6 +99,7 @@ public class Heap implements Bundlable { Wraith.spawnAround( hero.pos ); break; case SKELETON: + case REMAINS: CellEmitter.center( pos ).start( Speck.factory( Speck.RATTLE ), 0.1f, 3 ); for (Item item : items) { if (item.cursed) { diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java index 2d6f1ead0..6d341b2c5 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java @@ -201,7 +201,7 @@ public class CavesBossLevel extends Level { do { pos = Random.IntRange( ROOM_LEFT, ROOM_RIGHT ) + Random.IntRange( ROOM_TOP + 1, ROOM_BOTTOM ) * WIDTH; } while (pos == entrance || map[pos] == Terrain.SIGN); - drop( item, pos ).type = Heap.Type.SKELETON; + drop( item, pos ).type = Heap.Type.REMAINS; } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java index 77a435cb1..2a714796a 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java @@ -159,7 +159,7 @@ public class CityBossLevel extends Level { Random.IntRange( LEFT + 1, LEFT + HALL_WIDTH - 2 ) + Random.IntRange( TOP + HALL_HEIGHT + 1, TOP + HALL_HEIGHT + CHAMBER_HEIGHT ) * WIDTH; } while (pos == entrance || map[pos] == Terrain.SIGN); - drop( item, pos ).type = Heap.Type.SKELETON; + drop( item, pos ).type = Heap.Type.REMAINS; } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java index fd067170e..2a6a21619 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java @@ -150,7 +150,7 @@ public class HallsBossLevel extends Level { do { pos = Random.IntRange( ROOM_LEFT, ROOM_RIGHT ) + Random.IntRange( ROOM_TOP + 1, ROOM_BOTTOM ) * WIDTH; } while (pos == entrance || map[pos] == Terrain.SIGN); - drop( item, pos ).type = Heap.Type.SKELETON; + drop( item, pos ).type = Heap.Type.REMAINS; } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/LastShopLevel.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/LastShopLevel.java index 72c48139d..3bcf70aac 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/LastShopLevel.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/LastShopLevel.java @@ -17,9 +17,6 @@ */ package com.shatteredpixel.shatteredpixeldungeon.levels; -import java.util.List; - -import com.watabou.noosa.Scene; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Bones; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; @@ -27,9 +24,12 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Imp; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.levels.Room.Type; +import com.watabou.noosa.Scene; import com.watabou.utils.Graph; import com.watabou.utils.Random; +import java.util.List; + public class LastShopLevel extends RegularLevel { { @@ -170,7 +170,7 @@ public class LastShopLevel extends RegularLevel { do { pos = roomEntrance.random(); } while (pos == entrance || map[pos] == Terrain.SIGN); - drop( item, pos ).type = Heap.Type.SKELETON; + drop( item, pos ).type = Heap.Type.REMAINS; } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java index 2dda8e655..a1b845d1d 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java @@ -17,9 +17,6 @@ */ package com.shatteredpixel.shatteredpixeldungeon.levels; -import java.util.List; - -import com.watabou.noosa.Scene; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Bones; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; @@ -34,11 +31,14 @@ import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; import com.shatteredpixel.shatteredpixeldungeon.levels.Room.Type; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.watabou.noosa.Scene; import com.watabou.utils.Bundle; import com.watabou.utils.Graph; import com.watabou.utils.Point; import com.watabou.utils.Random; +import java.util.List; + public class PrisonBossLevel extends RegularLevel { { @@ -297,7 +297,7 @@ public class PrisonBossLevel extends RegularLevel { do { pos = roomEntrance.random(); } while (pos == entrance || map[pos] == Terrain.SIGN); - drop( item, pos ).type = Heap.Type.SKELETON; + drop( item, pos ).type = Heap.Type.REMAINS; } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java index d6c3cbec1..4fba476d9 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java @@ -17,11 +17,6 @@ */ package com.shatteredpixel.shatteredpixeldungeon.levels; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; - import com.shatteredpixel.shatteredpixeldungeon.Bones; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; @@ -34,12 +29,17 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfWealth; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade; import com.shatteredpixel.shatteredpixeldungeon.levels.Room.Type; -import com.shatteredpixel.shatteredpixeldungeon.levels.painters.*; +import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.watabou.utils.Bundle; import com.watabou.utils.Graph; import com.watabou.utils.Random; import com.watabou.utils.Rect; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; + public abstract class RegularLevel extends Level { protected HashSet rooms; @@ -632,7 +632,7 @@ public abstract class RegularLevel extends Level { Item item = Bones.get(); if (item != null) { - drop( item, randomDropCell() ).type = Heap.Type.SKELETON; + drop( item, randomDropCell() ).type = Heap.Type.REMAINS; } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java index 2dda8a00a..dfd9bb068 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java @@ -17,10 +17,6 @@ */ package com.shatteredpixel.shatteredpixeldungeon.levels; -import java.util.ArrayList; -import java.util.List; - -import com.watabou.noosa.Scene; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Bones; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; @@ -31,10 +27,14 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.levels.Room.Type; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.watabou.noosa.Scene; import com.watabou.utils.Bundle; import com.watabou.utils.Graph; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.List; + public class SewerBossLevel extends RegularLevel { { @@ -232,7 +232,7 @@ public class SewerBossLevel extends RegularLevel { do { pos = roomEntrance.random(); } while (pos == entrance || map[pos] == Terrain.SIGN); - drop( item, pos ).type = Heap.Type.SKELETON; + drop( item, pos ).type = Heap.Type.REMAINS; } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/src/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java index 7a18bc08c..0dc35c1d5 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -43,15 +43,16 @@ public class ItemSpriteSheet { public static final int DEWDROP = ROW1+1; // Heaps (containers) public static final int BONES = ROW1+2; - public static final int TOMB = ROW1+3; - public static final int CHEST = ROW1+4; - public static final int LOCKED_CHEST = ROW1+5; - public static final int CRYSTAL_CHEST = ROW1+6; + public static final int REMAINS = ROW1+3; + public static final int TOMB = ROW1+4; + public static final int CHEST = ROW1+5; + public static final int LOCKED_CHEST = ROW1+6; + public static final int CRYSTAL_CHEST = ROW1+7; // Placeholders - public static final int WEAPON = ROW1+7; - public static final int ARMOR = ROW1+8; - public static final int RING = ROW1+9; - public static final int SMTH = ROW1+10; + public static final int WEAPON = ROW1+8; + public static final int ARMOR = ROW1+9; + public static final int RING = ROW1+10; + public static final int SMTH = ROW1+11; //Row Two: Miscellaneous single use items public static final int GOLD = ROW2+0; diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/ui/ItemSlot.java b/src/com/shatteredpixel/shatteredpixeldungeon/ui/ItemSlot.java index 87aa3de54..cb2ff7ef6 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/ui/ItemSlot.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/ui/ItemSlot.java @@ -17,20 +17,19 @@ */ package com.shatteredpixel.shatteredpixeldungeon.ui; -import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey; -import com.shatteredpixel.shatteredpixeldungeon.items.keys.Key; -import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; -import com.watabou.noosa.BitmapText; -import com.watabou.noosa.ui.Button; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; +import com.shatteredpixel.shatteredpixeldungeon.items.keys.Key; +import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; +import com.watabou.noosa.BitmapText; +import com.watabou.noosa.ui.Button; public class ItemSlot extends Button { @@ -68,6 +67,9 @@ public class ItemSlot extends Button { public static final Item SKELETON = new Item() { public int image() { return ItemSpriteSheet.BONES; }; }; + public static final Item REMAINS = new Item() { + public int image() { return ItemSpriteSheet.REMAINS; }; + }; public ItemSlot() { super(); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/ui/LootIndicator.java b/src/com/shatteredpixel/shatteredpixeldungeon/ui/LootIndicator.java index 690d469a2..7848d982c 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/ui/LootIndicator.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/ui/LootIndicator.java @@ -69,6 +69,7 @@ public class LootIndicator extends Tag { heap.type == Heap.Type.CRYSTAL_CHEST ? ItemSlot.CRYSTAL_CHEST : heap.type == Heap.Type.TOMB ? ItemSlot.TOMB : heap.type == Heap.Type.SKELETON ? ItemSlot.SKELETON : + heap.type == Heap.Type.REMAINS ? ItemSlot.REMAINS : heap.peek(); if (item != lastItem || item.quantity() != lastQuantity) { lastItem = item; diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoItem.java b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoItem.java index 3c4694954..3016ad9d0 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoItem.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoItem.java @@ -30,18 +30,22 @@ import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; public class WndInfoItem extends Window { - private static final String TXT_CHEST = "Chest"; - private static final String TXT_LOCKED_CHEST = "Locked chest"; - private static final String TXT_CRYSTAL_CHEST = "Crystal chest"; - private static final String TXT_TOMB = "Tomb"; - private static final String TXT_SKELETON = "Skeletal remains"; + private static final String TTL_CHEST = "Chest"; + private static final String TTL_LOCKED_CHEST = "Locked chest"; + private static final String TTL_CRYSTAL_CHEST = "Crystal chest"; + private static final String TTL_TOMB = "Tomb"; + private static final String TTL_SKELETON = "Skeletal remains"; + private static final String TTL_REMAINS = "Heroes remains"; private static final String TXT_WONT_KNOW = "You won't know what's inside until you open it!"; private static final String TXT_NEED_KEY = TXT_WONT_KNOW + " But to open it you need a golden key."; private static final String TXT_INSIDE = "You can see %s inside, but to open the chest you need a golden key."; private static final String TXT_OWNER = "This ancient tomb may contain something useful, " + "but its owner will most certainly object to checking."; - private static final String TXT_REMAINS = + private static final String TXT_SKELETON = + "This is all that's left of some unfortunate adventurer. " + + "Maybe it's worth checking for any valuables."; + private static final String TXT_REMAINS = "This is all that's left from one of your predecessors. " + "Maybe it's worth checking for any valuables."; @@ -71,22 +75,25 @@ public class WndInfoItem extends Window { String info; if (heap.type == Type.CHEST) { - title = TXT_CHEST; + title = TTL_CHEST; info = TXT_WONT_KNOW; } else if (heap.type == Type.TOMB) { - title = TXT_TOMB; + title = TTL_TOMB; info = TXT_OWNER; } else if (heap.type == Type.SKELETON) { - title = TXT_SKELETON; - info = TXT_REMAINS; + title = TTL_SKELETON; + info = TXT_SKELETON; + } else if (heap.type == Type.REMAINS) { + title = TTL_REMAINS; + info = TXT_REMAINS; } else if (heap.type == Type.CRYSTAL_CHEST) { - title = TXT_CRYSTAL_CHEST; + title = TTL_CRYSTAL_CHEST; if (heap.peek() instanceof Artifact) info = Utils.format( TXT_INSIDE, "an artifact" ); else info = Utils.format( TXT_INSIDE, Utils.indefinite( heap.peek().name() ) ); } else { - title = TXT_LOCKED_CHEST; + title = TTL_LOCKED_CHEST; info = TXT_NEED_KEY; } From 55b920f9bb6bcb3e249fb0cd9b69af172157f9ba Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 30 Oct 2014 11:16:19 -0400 Subject: [PATCH 2/7] v0.2.2: further tweaks to heroes remains system --- .../shatteredpixeldungeon/Bones.java | 33 +++++++++++-------- .../items/armor/ClothArmor.java | 2 ++ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/Bones.java b/src/com/shatteredpixel/shatteredpixeldungeon/Bones.java index 7b6a65d10..c4b91b35e 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/Bones.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/Bones.java @@ -18,10 +18,9 @@ package com.shatteredpixel.shatteredpixeldungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; -import com.shatteredpixel.shatteredpixeldungeon.items.EquipableItem; import com.shatteredpixel.shatteredpixeldungeon.items.Gold; import com.shatteredpixel.shatteredpixeldungeon.items.Item; -import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; import com.watabou.noosa.Game; import com.watabou.utils.Bundle; @@ -44,11 +43,14 @@ public class Bones { private static Item item; public static void leave() { - - item = pickItem(Dungeon.hero); - - depth = Dungeon.depth; + depth = Dungeon.depth; + + //heroes which have already won the game, or who die much higher than their deepest depth drop no bones. + if (Statistics.amuletObtained || (Statistics.deepestFloor - 5) >= depth) + return; + + item = pickItem(Dungeon.hero); Bundle bundle = new Bundle(); bundle.put( LEVEL, depth ); @@ -92,22 +94,26 @@ public class Bones { ArrayList items = new ArrayList(); while (iterator.hasNext()){ curItem = iterator.next(); - if (curItem.bones && !(curItem instanceof EquipableItem)) + if (curItem.bones) items.add(curItem); } - if (!items.isEmpty()) { + if (Random.Int(3) < items.size()) { item = Random.element(items); if (item.stackable){ - item.quantity((int)Math.sqrt(item.quantity())); + if (item instanceof MissileWeapon){ + item.quantity(Random.NormalIntRange(1, item.quantity())); + } else { + item.quantity(Random.NormalIntRange(1, (item.quantity() + 1) / 2)); + } } } } if (item == null) { - if (Dungeon.gold > 0) { - item = new Gold( Random.NormalIntRange( 1, Dungeon.gold ) ); + if (Dungeon.gold > 50) { + item = new Gold( Random.NormalIntRange( 50, Dungeon.gold ) ); } else { - item = new Gold( 1 ); + item = new Gold( 50 ); } } return item; @@ -139,7 +145,8 @@ public class Bones { item.cursed = true; item.cursedKnown = true; if (item.isUpgradable()) { - int lvl = (Dungeon.depth - 1) * 3 / 5 + 1; + //gain 1 level every 3.333 floors down plus one additional level. + int lvl = 1 + ((Dungeon.depth * 3) / 10); if (lvl < item.level) { item.degrade( item.level - lvl ); } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClothArmor.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClothArmor.java index c7e95fc07..ebdbb8556 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClothArmor.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClothArmor.java @@ -25,6 +25,8 @@ public class ClothArmor extends Armor { { name = "cloth armor"; image = ItemSpriteSheet.ARMOR_CLOTH; + + bones = false; //Finding them in bones would be semi-frequent and disappointing. } public ClothArmor() { From 403fe0e0268636501ac5ed0e2c7a49fd721af6c4 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 30 Oct 2014 13:50:39 -0400 Subject: [PATCH 3/7] v0.2.2: corrected sleep immunity interaction with magical sleep/drowsy --- .../shatteredpixeldungeon/actors/buffs/Drowsy.java | 2 +- .../shatteredpixeldungeon/actors/buffs/MagicalSleep.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Drowsy.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Drowsy.java index ea3a2a643..e85712b31 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Drowsy.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Drowsy.java @@ -29,7 +29,7 @@ public class Drowsy extends Buff { } public boolean attachTo( Char target ) { - if (super.attachTo(target)) { + if (super.attachTo(target) && !target.immunities().contains(Sleep.class)) { if (cooldown() == 0) spend(Random.Int(3, 6)); return true; diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java index 9dbbf2ac4..fdf76d624 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java @@ -30,7 +30,7 @@ public class MagicalSleep extends Buff { @Override public boolean attachTo( Char target ) { - if (super.attachTo( target )) { + if (super.attachTo( target ) && !target.immunities().contains(Sleep.class)) { if (target instanceof Hero) if (target.HP == target.HT) { From 2a78053176cadb5ae3db3244435639a82d679ddf Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 30 Oct 2014 14:34:34 -0400 Subject: [PATCH 4/7] v0.2.2: better dreamfoil interaction with the hero --- .../shatteredpixeldungeon/plants/Dreamfoil.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/plants/Dreamfoil.java b/src/com/shatteredpixel/shatteredpixeldungeon/plants/Dreamfoil.java index 81009f679..c6b8ddd69 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/plants/Dreamfoil.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/plants/Dreamfoil.java @@ -20,9 +20,12 @@ package com.shatteredpixel.shatteredpixeldungeon.plants; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSleep; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Weakness; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfPurity; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; public class Dreamfoil extends Plant { @@ -42,6 +45,10 @@ public class Dreamfoil extends Plant { if (ch != null) { if (ch instanceof Mob) Buff.affect(ch, MagicalSleep.class); + else if (ch instanceof Hero){ + GLog.w("The poison isn't strong enough to put you to sleep, you are weakened instead."); + Buff.affect(ch, Weakness.class, Weakness.duration(ch)); + } } } From 66c1cad9a9baac58117c25538290e312f75be36f Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 30 Oct 2014 16:27:41 -0400 Subject: [PATCH 5/7] v0.2.2: improved stormvine description --- .../shatteredpixeldungeon/plants/Stormvine.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/plants/Stormvine.java b/src/com/shatteredpixel/shatteredpixeldungeon/plants/Stormvine.java index fb2c25b41..abff07c4f 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/plants/Stormvine.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/plants/Stormvine.java @@ -1,11 +1,8 @@ package com.shatteredpixel.shatteredpixeldungeon.plants; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ConfusionGas; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSleep; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vertigo; -import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -15,8 +12,8 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Stormvine extends Plant { private static final String TXT_DESC = - "Stormvine is an unusual sort fo vine which 'hangs' on the air. " + - "Gravity affects it strangely, and anything caught in the vine is confused as a result."; + "Stormvine is an unusual sort of vine which 'hangs' on the air. " + + "It somehow nuffies gravity around it, and anything caught in the vine is disoriented as a result."; { image = 9; From 3df12ebf2d56efe0b8b92e0c96b4116662fe5f3c Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 30 Oct 2014 16:30:59 -0400 Subject: [PATCH 6/7] v0.2.2: tweaked spacing on blob cell info --- .../shatteredpixeldungeon/windows/WndInfoCell.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoCell.java b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoCell.java index 49d33391c..8b75e1ef8 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoCell.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoCell.java @@ -62,12 +62,11 @@ public class WndInfoCell extends Window { add( info ); StringBuilder desc = new StringBuilder( Dungeon.level.tileDesc( tile ) ); - - final char newLine = '\n'; + for (Blob blob:Dungeon.level.blobs.values()) { if (blob.cur[cell] > 0 && blob.tileDesc() != null) { if (desc.length() > 0) { - desc.append( newLine ); + desc.append( "\n\n" ); } desc.append( blob.tileDesc() ); } From c23191575e399aaf0540af45aeb9e7869cd7bd05 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 30 Oct 2014 16:31:45 -0400 Subject: [PATCH 7/7] v0.2.2: tweaked confusion gas duration (notably less 'you feel dizzy' spam) --- .../shatteredpixeldungeon/actors/blobs/ConfusionGas.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ConfusionGas.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ConfusionGas.java index fb57fd61b..b3f3a5ee3 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ConfusionGas.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ConfusionGas.java @@ -33,7 +33,7 @@ public class ConfusionGas extends Blob { Char ch; for (int i=0; i < LENGTH; i++) { if (cur[i] > 0 && (ch = Actor.findChar( i )) != null) { - Buff.prolong( ch, Vertigo.class, 1 ); + Buff.prolong( ch, Vertigo.class, 2 ); } } }