From 1bbab016ac196cfc088a3acc454ea265fd394c8b Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 5 Sep 2018 17:54:25 -0400 Subject: [PATCH] v0.7.0: Artifact spawning and boss reward changes: - master thieve's armband now drops regularly - thieves now rarely drop a random ring or artifact instead of armband - Goo and DM-300 now drop unique alchemy ingredients, no artifacts - Lloyd's beacon and cape of thorns effectively removed from the game --- core/src/main/assets/items.png | Bin 17271 -> 17413 bytes .../actors/mobs/Bandit.java | 4 +- .../actors/mobs/DM300.java | 15 ++++-- .../actors/mobs/Goo.java | 15 ++++-- .../actors/mobs/Thief.java | 14 +---- .../items/Generator.java | 2 +- .../items/quest/GooBlob.java | 48 ++++++++++++++++++ .../items/quest/MetalShard.java | 48 ++++++++++++++++++ .../journal/Catalog.java | 6 +-- .../sprites/ItemSpriteSheet.java | 4 ++ .../messages/items/items.properties | 10 +++- 11 files changed, 138 insertions(+), 28 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/GooBlob.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MetalShard.java diff --git a/core/src/main/assets/items.png b/core/src/main/assets/items.png index 2cab2c07fd765bba9e110e0d79b23c31b191bcfa..34ce11af584e04903a9b9897d42b2e32c0f6a48f 100644 GIT binary patch literal 17413 zcmbWf2|SeD|37?Y7`vt{p<)zn`%)CL%(P01qEKX%q|H*YGc%Ub9VN1~V026FR+Q|_ zAW@bfg|f`ZGGv)yFf(R*F8BBT{hr_R`al2Y^?yBHUaqrz&bhAZb3W%>@AG+ojz5n% zJIKpyk^un7J09Ba3IGgB!hw_obP0U?jt9WL4#)j_PDH|H>m@V2zvs=J84J!Rle9%{jd9&m?mT6^3l zQ)Bt7o+e{u4l7rlWZc_RW7JcYYXLjo#j2VQoS4yP?>RLaO+Sy(dUTbu<9v{GOF`;O z=dBLc4dVaQY?34Tz^f)UVzyxLaXjLb_q|am)hM}*pZ8~7lN)0jFTdSZO5aF0xn<5R zYnQ>N(f4i9Z&RI(_FVCU9m^Kgrk??5MG!_Rt zKZ2KQ*rh~Rz6v{(KoUdTUx#nFE?e;T5WG}LHy3`$bz3>tMLVTxzxqw|8}Q5DzpJ|B zY-CYh_954mS2Xo1(X~|;>$=d$poDpFIYuhue3#;qkj4J2cg(3=+p$n@kFH~e_VTTS zi0E5E?Sdle1<89};SFvX;v_rtkBdPm{y5$sRruG`#kcp>^KmbGs(~54^*H_#Q?*fv zhN>?gpw;Mb?kdwa4fSlhFD_!v^-g(-4GB&Ly8gP$rR0vfABrf*Cej$9Ow>rRG{fDl^eo};rzZ6DGI8N@!f?|{3Dvm zLQ94fTJOCe=aFS`9v zUY>|9XBmII&S`xMOmah23GBD0&yBJI_y}1{AwJ+4oVmh)M{4CTclp{V`;zDFve{`0 zz8kbtg~xoQOQkGU(~6#T|Ej}(oNLob{Wa&VY6{hB@|0=F&8&ZABwP+p*E+U44uWG=~5Fy56qJ;~r}XY)k$#@P%fh=!;>A=c89}4riys z=|@^zfJ7p_3|loTZXaw*4#u&bgwK|T&E2WDG~1L@R{uS$uAVsZv((fj|Eg}_yFYuX zQs>^h^%FiWGW`*Nv}Zl1XhbggTbTI8yqbB4s^Pi69vq*X`}&WR8|=^l7|!d%<&%$O zb&i=diDnbtAMRB6Tb5)Rzn}BsEB{Gw!zIG%j9^ghZu`K<@7*KW0#=m7-;&`EFaO&k zo}2SZ{#fw#z*g&jOR&pb*Iy5oU+PW$)q+;Mk6e z%9?vzJa1SOOxQH@pL<6B5XR~B87KMvCwl_8UV@Q3+grjqfPo4~J#tOmoZtzQTeq&_ z#%q8R%wQ{TM8PgfXgbD!I^@E%-W*a4o}SduvTLMYCFjA(4d5?kZxLdBGI0e_&=2ag z>p95^4 z3W9dV9gN(BhlC?Er(4i_yH0`BK(oGTgpHtevhY8#CGdi0 z>tkf^o6OI!j1t_#qp(0+!=!$TA%G)m+k4c=)5Sy|i>?Ky{!3U8k$3z?BAp}QH;iS- z(jK-TPxn~0258I(qp`r_%#PxV`D4wV?EY8aS%Qof+98thwTC)k{X1tuFok6)0W*3o z984ZA2Dow;I|Q>Z?zcVxHRt968@gEHM)>;~Z41f7oFPl-#l7YA5)Q#aep13BHqm4> z7q=CJ{!Sr`d^Uwg7uQLtE>!6Q$3+CW2%BuE403Sl_mnUhPBNOGA=O93N~~vB830Ea zf;s&Rz~u2vFfZd^&wi@>bMZoGhMk4^Qd8l2d9WiFBRn%K-bgQdS4l@Yg`&^j;r{V0 zbo39Jai`#6&e|lq^i3#%p)1urU`72N-!7%E@hVn@FE3+Y{RGcn47L$PR^1oO>zJ>4 zICvR-yej(4lAE^x9=kS41lYrV8w~iCIt%z0dON02J6}&dy~2LZ#?Jq+lONH*wx=%DG$bmN_?6m%?yOW$ z+2NdopQx7Kgdq5T5$iIIKf*y?tqHN7bBrt)M4xFhZhogYVJVu*0~htHs_sn+{iBd* zmS=F5F25g(x0^kz`I2UDAkQg#og0D5lHhx~cZo&fLNhdc!h+Qc(8GO_{<{D|Q^s`2^t*TK=$K4As z-)X^M(TuwZXqsmUYOiLW01r3Z@Pg&y7LW5|#rte_ib=J=nfc#EQHg@^CdvjBllUF| z5f1pCUmL`?K_Aw{H$PcJ+YMoGkySi>;v3vknKlmBN{by*|_*$nD!#8~suagE_a z;b)8r5kTyQNu0*uX=NbKaSH&p^wtb#BXEQ#sMK}Cih(7I_a9^kh4wl62*BaCUgKZW zsGBW62RoL8GTj3UF-k%BCcnXDRS2Ilm`epAHi)U?;z{VS@5i33zPRLf68==mu1}qx zB?Ai4nbDibaLsQA6j%J)vy}t)(dR55BgiaKwmA^(CQuY(u@W7X2H+uGn1n`X=Ck}h zFK0rF06N<{*$tO$#X!~6QiPMw-Uz0MXff4hIN(^w5@@}-`podXJ-9!*jdjc{ZUkPF z@U80L9f^{seNlY=llDW{@-`9%rW}H78r|#Tl&_k`viJLK=P%}v#5tZ7Mc|wc@QB(F z@+tg56^Xb(wIq1?cc=p2#LFn5CRj{CSi^vqfzpxBkb++z%o1QRpLclx!UzfB=}n0| z{#sBhmJ|}1z9HJ^T6Nb0=0npXFTCLm0N8)jkp*O%02P9pCapngTOnE*RJJP$BQ+Kg z_YJV%1#~gNf^JV`Ou;F@mmPpsVX3gjpeLbaz-l5{cBZ_xdG-;;M#;Uz=UkG8leaU8 zRIb28U^vwuS1L#nw1W%olem*CJp|E357fBBy44VvenY}iKj8S_ADw}v^0)0EZua~N zeL~(HKt8-#9kOr+#LNr_|H$~B+^ALz)O0}QdoU8mzNEF}`D+KGozfDH5aW3&-&pREa3-24T7L!dyoMaZ!p|HRy}G8jTw+v8Abgj zc0zVmb=4BNTnpE0Qzl=$=NyPeaE2NAJNKp)84|*?F`84J8|OyZPUmALu(e!x+auU| zVJiGk7Y}|Y5B80(U0_PMWeD_612gJKVG3k&um-dURSPe8x@#lI_BQnn|6&-wt4@AE z?5mt_%N^aq2KJYzLVGc$4j{wuWdNXM$;~Kz!rS8oXVl0i!lhGB0KQJqL+iLluVYvZ zU<5D1dOb$0j}c~`2|5WH#A)gF3R`&9d`Uu$;LnF|QiFY4hGjDrNpdIH)r$JCU>_pu ze2%t0iq>V9ePe6p)`={J&x`Nw%L_L!Q4{8iXLK8bS(|1y^*QLH78zKsbVknZSPj3M z%ltZ&^jbmC=ZGwElC`9jB_&-mn;P*|+i>@?5M4&GcMrLa``Yltv&Wt~KUT?Wc<`Dw z&aaDNtzG^?R;nsQ+K5%<%_lG0uV zC)n|!^(uzrCIeQO#Y$jy)I}c*G!tDxX)+puzuVTTZ8#^v8R0shPD_nlQX=Tka{18b zcrk^b)5YQTV#RMb<2ICboLp>xR5-`y#$cm2o8g{BZ!R4R7JDZybWxD2EZ`bysNjOnpbOZm|_$s zE4X%s5--jP$Qz*E6I)M%K9%a-gL9SCpvsZxS8;S3YMBkAu9w-~Q~}{yH633)@e7|8 zKcj7JZ8xD~Lgo!PYXIy8s6uxRPJd%GH{&O=JbrF(-O?Pp8s~hTGk6@dXB)rY99*}d zp!pMT&xVjZol@UMc&1ooni`*P!>g{0ScsCBb$H|F$vDhWl%X~7<`a!~{F)@AGHB=+ z-P*;Z7Y8`|grOKF-2nXFHswv4s~Ak3c_{BYy%Icg1u0ZPrfuUt?WZL_)Z&+IuvGTF zVzEdQHD!8p5^1P22=s5Xh|j8s0;rUfxU$QuUBfmp& zwxdTJ->S_>gsMvgr0;K$4O4gLpb@D)6T8qd7w!K@ z$86!C5Uw|-hQk7Gn$}q`b!h`Ztl!f1Z0mZQLATYEkr<$~hX@U)u6d@oh)4f*ga?x$ zsFg5PO4{*T9K|q?HByY?qKfHu2Z$M_l#d@!RwxIrT9cgl!Dsy;rrP z$+0H>pqtKLW;xIp0wOw9mLn;t#niRK1v?(Tg+=_takh#UM#k$x6SVbZar%| z?W3h`dU**wd0DvQa}?d#!OyxL%swij4Snm(F^i`|^`boHMGaKxZM?bB3~wNQm+sYe z6198?k6luZS^YU2$V_$Ff%@Y&74dhB95yDzD`tEpERuLCvDLXfXHa*6-(Gdsd|f^1 zq`hjEkUvwzNU~9;A-8&BvDjaM99hi za|*mjJG<};LS9u!GA|iP!;jrF-8D+>caQaZZWl4;v(gb3!%;XCkN$R(nuAFrqh2A^n-v(J!{jq5KOI#ZhG29KzDEF?4wFZ@J?Y$)&YNJGXT`t zB*DTfcnT4bs>2@)e#elciTyBxELhUfoQTVX2KX2z@2lsMK|DP%_9uvAYoe#32A^8s+D_g7~6R|@=- zj4-XF`lxyBx}PV^%pE-W?!nU(ENMnc%cy$wOxZfcc?2(ejojg#uIrTY1H7HWx4j|m0a6=Squ>@L{mUvu5dM;4q zauF)HE`elDY~Or?uddgPzIEZPV1cP4T)KnVZrJ^)79Sv@Pw6LFd`5UY`rd8y7HuF~e5rLm75kWp)+RW5V zvmauAK$5XN5E3q@ssJ*HmFhA`doeg@tb26lMsQakeGSe(7GjNsMk(zTyo$Y&wt2{e zbFJEhZ#$A+32S~s^=Ul@-$|p#sS#WruQ<@Cc#$CGJqZF}Hx;JD`LM32p6Q9kM=M_~ zSIQt;m`My34$IM+Wglw^1B>InG+bLeQM-`j@^krp<%e^yQlmSqnxkRyAYyt7iQs&7 z>Nn5C*wB*OX#vlb`CF3=i0aZU3Wt)2QQ73bn_O5YLWYzH$z-wntC#UR_+0b#_NSQc zDC}ITHF`~zFns7YYFCgI&Z{=4Z`Y&)z6n{}U_$!{r(!*ST+TZZfT$bNYd|on2zM%(P(}JM@Cm)H;#lJB(uF?ywV@{I2@HX|t6&V$XuB59iqvo_26= z{vi$Yts>yhGI{J38U2mxziUt9TO>L4_*`l>tLbR~HZAt4?qb}Hh=w%w-wWKO@2@-t zV;J=TW_@My{bz|&f@*f%n7^i@-AY~vQWT8h$%g8HfM$H3I{P4L(<~`%&nzH$?^hRtb?Cm6K2=p51l&)yiO!hA=d!A@Czy zlT*%`kGj;N1eIBAA$#4tw(PSi-@r*m9>9tTxvp0I8M!bmzT7%wfZTD-0k9K>0zI;ct8 zkJ9OKKTm=-4+6DwzxE4Bk!F&lr4M{z5D@f0P>M3hZn34c>MEO$ATFK)RrjLiv86J; zLryZ4v$e0zT0drnE*TlZ<~)5@G{=L`tf^r5e!kIkmT zzU8A4#bO_5X(|{Ciud3MLJu~gve!e2@JyjC0aaL+OnfVgU#OAe3_|;i_|`e)GmEDP z3xm-x1^5}wRe(g+OgSdeU&#y3+4!t65 zedMf*`OM;&TL!Hakqx|yz>qawg-p$dhtOgo_CdaGv|w|D8uLA7_hZQ+VIB}2C@?@A z`#g3ef4d4X@K1GnXOPxpN( z6mwk_4Z5_6=TmI@?ROTqiR`L&?$kKjNJ(d5?+s5l>pinY-MV$_wZNPS{bM2`5OAvf0uCiSy}Zld>{)W5G%bt@#UvT-738M%g8M!)A-kT2_>8A0e#YZ*MGG{`2`kN%z{p?9ALsIt z(L%i17p2{1tF5BINNvTv7}yPoZEQ8=Y{KRqrvT&DEulxsz!3iZ?<3N*oiGpZh-tI^ z0YGP(36fc(>{EtPE*0)YX8E)LiPq#59uGg*C(q;^(S^KscTd#Zz>_KM>u^}ay!@4-DBH#U3z;W={xFs06> z$-R|DJ6s?4CBAZnclGcnNmRr2IH?>PB)(<`nW4wm68L=$BA|MOcX(-OYM5G@Zuu## zvIy;*b$I?V;aY4L$}apGv-aG0ag)_8)Gup%D~*y1%WTHa;a~AvO}~tyY(7jpxaW5g zs4*R=(o=BG(~n2!qwMMhc@nSm*eRIOQD~#23CH*U?N;c#MYyCeFTr^B%AMwK$4$^+2HCs${x|e4pDf}VW2c>_xP=l5#{H@y=qb{A$K9i*({8pEY-ub`F;ye#?$5dNm&)&J_RRTd& zpRcCas0l>eIBnV6Cu%~6oi)1l1g_b8^>U?3u|=? z3>F*rk9?faXRY#CaI}6&9puneQpin@_(Ex2X&0#(=%cAm$5cq_FZw5hx?EVwKQzF; z=H|2tKJh{dg-V%Rc6rZz&$b}Rx2t|MCGp?cG09@LbSf8iWNQtxUt*2R+?MB2ii>XGFZgFIqv1+0|5spQ8LqtupEg%YIo|j;(fK{~ z@sIj;+(olKk25>Jm#V+rolr?2n%pExFcE&6A!ouxX|Yui``hLecj=|7gyby-8wuR& z15xBV2-?=x=$?ixwuGd*-(TsYjG><3Eu%1Nlh8cKosgw01=C$R;J5iO(2(8&cb<~{ zv?~*I#J0PBH0*8qwmhOl_!X_Vmkji30K5C z^@OXAO7E_`HXgxDJ}11dZfTZU1@a_jy<5Wu0-mXnPgGzV)@Hnr|H8pFrgBe$c|B_aL+cS zEejvGT-fzkayDdxFtFlrW9*Hk2pxjXXt7`#D1n`g7hsVb0ZzCbgeVgZYnFn#(s~)G zAPI=G_$#9q)*-cyD6lj^nF74bv8^azQ&3E)`F&?EY`^kaS`^LDIu3dk^_%V<&(Bfk zXm!HjbFzd#mbwny+^Ay~?+nx4NJvJ#6;Dq@(FKl(klv$~A0EO!Dp@0LpFagZP}~qF zK}&h-`uO2wa~Yg$-vDy=E}Q_96ED$d3RicMOHz96oh4gboVO*s^xQjm^17SxqF{Aqt_ zd^zw{CfKjD{fiUs`)Cju((sEtxYDX|n3kr58S%S)S6D8Cxr`QfWzt$@HN9ZI5e-1w zQ6_1)HV*;bgVOmom2jO)L%9hbL^!SfFxUShFVlaqs{avoWzL_s*K!CzCHj1cpf!x% z2%BfC)ah>FCk8Oi-%yvD>o|3=|Fer=Ax++yj}U*KC@)+{k>@=L$p0J-&%HJ!s9@jI z^%~~?{{9NNNke1gMUXImO!(8sIs*IZ2{FRAc{QBhd%6|BIR06p-}o#KW9ad=yhcZ1 z)2rFsPomcXmg%Vv-Cg+kj?-unbLqj|{160~lD}**3wh5S?Foc@uHqBtPBH#q=hZ<8m)qq1*svH}xZ7QL*Q9hU#!yZMSA&nTYfAa|t2DEi{Xi&F(ju?5uXNOa6>rrm7% zgYXg$GU-Vmd+0~$r6(onxsn``NWeG+K1Z4FlVCP~079W|=cI+uVHaP(T73|d$lNy= zOscZ?cWe$!Y$VVZP(|(Wke{#C>9|1VZ+}=y@>? zir4n3p!)sHVYt^16SU1 z=ss=mYmw8HJ+U*o9SuW~SwFlv`+iL!Iq7+t2-@=?r(4Nf${%j)d}&g0Q6n}=3V=;>T7Au$Xy9v)d zpz>3C^kQP`CgF2t+5v$g`dKRf%G>JaXHV&hggjD2bs37QVzJINbu|HXSe<)iLRxsx zayaubn`zD%3g>u0U44y}bGkn2lB|ou@dM71(-i)GK=n(rv*mwAi@NhfS7l510h^Ib zmw`)oW6p3J@v$yva|e-{zjz7FH+;e@x!6S7rYP(>$}@l7nY$8PGyOc9%ZeCZ2pA77 zN+;4>s%PKv(@EyclAtEiJFcpGxE5cPdu?{dK^!?PoutLQGS1NEKhi=s5@Qo2Xvg`S;HSZ7vp^opY2eTxp^1WXE*hC6Nen>;x$aBW$eazL#Trh5P+e z`NuxBQEVHrj7+z$EHy23rZk!%68ymzz2~Y511{UsKO_AcD9CF+v1~fMoD`%{vJ$}O zLxL9Z4mgAJWaLdb&Qrkbmwy^=FNV`wEBJ%YfS!XF#!_>^>1n(0&Wz--bm_y^`0FF} zKZ&^%0!l_v4X0-XL4rj)lm7%!9G%GY@L_tnC0=>+fSt$qv@41$igI#q*luNPiuOC~ zj^l{l*YVIdg4}UWZuw7`+AJ~_al)I4r?|Drx85yAI%wIMA_y+YJB3DERzDzWT)z4c znnX+8^@7h_3373B`I0TU_)08Yoz~lLZ=Z`30iy6#!#Gr^Ybo)71?9d3?7gl*>t)@u z+hL7lPDgDO2x0bi9~IISezNB5#W)b}Z?_f69Ic5WAp1MTVylAkY5%!u(3--%!kd* zt>LAoR)GmoYW>UMP;t>Q+uIhE?6sthUZz*nM6HeK{~d7hU+d^{met9p8Cs|P?(S@o z3Q8SM;;l<>&CO+y1GO&|$IPqgU2Bdq>2H4<8uTqpICx{sh$yOK#O9NO>lQv8)Xl~e zh+^O9_kAgo+&{n`x@P!fVY*X(pRlB4r<&C>ZOjpEi#weXcc>XF2Bh5j1gSTz-9{ivZv{Ys0+W#P6plSZNL{Tl7uRAPQE6iw^Bk_ zyN$GXI(LQrTP*8M2xBHL90>`D(>2UG)}}1}pQuyszhS+`3PV!r5~;O^Vb2H*Cvr2A zSTmL^*DZ$2B>&lKZ}H2B+)P>Ck&_9Oq^!uXw0OzC;^zk@SNdGIN!f5vEq zwV3Y<4xF6hc?WxC!vAft3L%+PE zmvhjF@WH;u=S8}{AwWVALFqCDQs_QdOizP2{}OIhn; za&XKu_-&g)AdD)ydjbI4T|aZ?=)g2On|d(h3vBjxEQn3YoiVF4KK1V7JV}JRQ1?)B z+&(QZi$xfsmvz$XS8e$>4#UV`bB@;|CjN4JeRT<%ZAo_KRP#H&9Ze~QJ$()CFim5} zPCnKlq?5{lLICi2YW20*{Q27}xXnSlpA+a@$<}{({A!3)#S2nA<~l9&%hE4^EpyVf zs5vLLAsKZ6_w|dnc=C*j#yc(iz5F)C-Gs@boQ+1F>tR)XTs~a0d+88Ug}s32mcd~m zmfPx`4f7hWLFzO_&9*3zGfFEAKq|+AX1d9oup_NePV=h0SqQ~4$NLK2l0R^W*({HK zgSu88!D~#S8{(~htXvh=4F)rhZyL1SuTgLFnBGf(=xTG=-uXtxV7Lsq^_@Q~x+mdMOp+0L@NM1LRh#gUt=Wqv816;JN+?7+R^*r83asfOlB;H6P5wf; z_fLYngqaizaDBpd6diD|IS5^FmTvKjtD1C;^U0y16)- z6l{_CRYMaUeea>@a$$O=X;aF?9#rbDES5*$X-mddBe-gEC5y{ffsO9qc)cSnjYpq`SE)l|F9jNsNoz)jzNX)yaGNA`o3;AJ(z_Sf^a*xB zw3j&{mh&_<0+t~In7+ek4WcgpZrrYlPxQW$+*UaPZ3Gu;j-F8*aMwq2wu=G&G*?5P zkg5WEfl*v?WnR+TA)xDFCoDkFvNYx=m1GKg^pzC zKKuySFFMl<7}T{K=frQHg6G0Q zo>&F|1ZR}bfLE!3#$xy2T@05i z@_Y1Hx6TT$`!Q=#4@M^Dr;(&8BNxuGc~jo@r-5g29IV_;nZ!|~>JD>Jh^}-)0-Gx8 z&o(h6cynGD6xz-96*3B29lCnj{gg~Ez{0a^uM^PLE*}WUlBVW?fVxRuu2aQwIh_1< za+eZDm=nL(1aii@qFF@l(Q;?H*r@3|#ZAmei)$jp)G!2n#h%J_bpy5Vn_5!4)Oev z&?g*+Rn1Fj+&3N<%pG#|Qs)0XPrK*CfT5#Ad2*A>IGZyPJNBT%@Le0fR9IK*+tW-p zg2o7@BvCi%1u*vzx7I?gZKCQGd=^&kU(!>0&ePfmC?c;;_`%%>vOjv&4GIJKregZ& z)q{XPu5Y%}b2K1ew@f?95c;dP=_z5xl>qZSIA_LQ7C{`Z@ch6W$}~QyuKnO5B>F1~ zjU6u(q!5PYWfLw($Ytvt~IO_Ns;g>n!>XMR!Q^x+~2-F8PD#InFw1m{|m?bugK>AvqV_up0?(eVj_{~ zvlm1|Uk4<4E6!`EDTLkBKI>p=9CT^6IdRw~Y9cGADZy*4N@|}F zyPwY(kR#|MwZi=B1&Apqu!LW&<+}@1& z&2b^Tc0q}t8NO^CS&YLQ<*%U7FXj;UMdI_&GM$G;ObKEG?h%z}CkWA65R7)Mnp}MF zI$;<#`zHh?_ZbjSLtzJ;{7~#YcQo48{Bkr|`j!jSnzIEEJYzG`*YKty#EE<{{1;YU zGWff0F#*52G#%c(NAiQkN@GL)1IQz)f3@Prg$f8?Ra&f!HqPg*H9T8*ch|d1z0cLI zHb2RJ>xY`%+}>OrH6D~#E8iD7kG4+Z+0D~lc(%Ul8*_LbX|oeAtVyGqhB8QQQC035 zt#&wmQMfW_?8L!W6%HZpJ5ypJzp{jm13C!uSROJ&xRCsSWji18eT?x8&Z(?LUvP+v z+T6TYyr(U8ntQKEGsKxOY;1i>%aUl)9d<2QT^T?}!?8Qmj3kf9ZO?7B?c$Kxv}yBzLh z?Rqy)qV4AXdKWHa##NA4ABy-)(-L0u@z0{U<1=YofmRHs!}#p$N|CT=MHvi9gUci6 zc@^3Pn0H(GQxLt28b79suu?7<`A6}6XCltL@{Is7+n`~(FXP*8TzU1YSa@Qh{`zX%Nyhqt<#8ZP-RhxNtKMH(0E zLoI|_7mJfbOPT1~_0Zla>cu#%bA~vHd}ed|&0^`ITGSSN)hoO(x0Q00$H2;jjMI9o z2q71<9I~A$z1D1se|;T#T^^Tf6T<(=m}Lz*wmE6VW=h@=8B)n1W@F5{DClYg7-C{SnJ_CA4-7K=yx*LqO*_*KUqupB3|D5XjRxZyV3zOw@9T->F ze7|=Fqiy~%Z$<;pC)vYxnNYvLFI?$@0)f_z)%?fh9J&5Sfo)_+8XfBN7wn_LBy3i& zW~NVDU~+c3&>cRbZ1L-3EZ6$Et&XXZgmh@SK$G9O%VJ>DpsL(iwZP+(0dIntBy9bo z#`W1JSuDDRoJIqWBzN}IPO2&=b0_U7W%F8w)Ypk5PPaqL3qzZuC0XXN zmglCyd8T4TIHdu+n%;6DS=f&Gj6$qnB@XlTN<}-4{dS0lh&flZ%q&SRbM?5d$iLv* z|JvjQ3Sq+Cv3_y_BMU zJfuK)PwX>sNW)P0Upf>JsHFpG_%Nj5%ry=Fw}7|L;nl;XHj#D@AzPA`*}!)HZ>2!K z%Kw_7Ol;kXX5mbolwUh9_3Z;ub*EX4GsGT2e}(bvj;Y<;eI}?KP=+eeIkh{=i|=- zYF!&ZeMHfJ365l~32H^@uS44=Y-2jGHgF2LQv9A+ap6UKINkykkA4h=FLgT5(k8Y3 zsUCx>7wVM2>KY{$B<=AS2U~h7zj-n{q{tS7jXl{sr0_OVa_a6=%44sltVJN8x#6xt za$m%jK0IeX`ll=|Ty(!$$6FuSt%6?-4|S??)hJkF%>EI(5i6t`j~gPg}FYGL!dGOFP?Q8vw#sxiIZ<9esDOp+#2nuSnR^x%jmQ5jrkG?i*pT z;6Xqx-MnZ_*YW949wh*J=YK)sQd~InT3^{e!uZ;b)PVkl2ikGOxL<2!{il}M5buB} z7}J%;iNq74s##p4>6vdC&lvA#IF7Df4PCYWW8vsr?vSnpB$QL&{tDb9h;HJE4=rQjpG>fCUTRMg888#yH(%=!lJ zBbT)HQOh8=P_ny4#dl-kNfIy5n#ZHW$eHj=U5Mx3c+=^g%Wdfry5sO6In|rXhwRxx zF@B#{a1k}F9Xh%;Xil+h9&|L>6VDhWTKD1>I%i66=ydN!dIrP=U1>@Q^Ld*a&^IW$ zF8$+XE6UfbPvAfMU`K)?Ckrq7OYqB5bf?G^rpMS`4n$nT3(>5aXGAe(J+9wFcKxUK zzPP`o1-`vNX6BVg$%PSpkx<$+FB;tec~`j}8E+!hD;;p*dl-%McT)_Ls<%quXS2_B z>&LqMlQIQY%a^;AhcAn-&_YiwHIuly9++hfv7-YiwANVB>*0e5+TE1=9Y3=3cK^t? z34B){HzJW#`t_pR0L-2pnp3~XAOhWlFI&9p%bqFg2B;^ZtJFh?pp)AFp8yhA#Z}BR~QF1%_mbpma;weyV+dSj^mO{goq% zWL=ls^OT)iV?RW3v&@UZUdv5629cq=)>EEQNvK9QjLuX!S~-%x(0aG><|)`~xZZ7M z4xuZs2d>KbvXV85>8;talBVag;r!fR4x`B=Hs{JD1HHVR>~Bs` z<(u`}JtG9R-*|WhnSq$ktzh=Y~@WRdve(x`A{myGJee70~>jp3!Nl6 z5JRgEt{Uex04b~afRAu;TqtUQ0?yHThlpIAR(w-FI_{mFYTx^qwACuRxJB)lSJpCq zf6iz;T9)>TrELnQG+r6_Ychk`c+yAe;}p`&$(+l^h6~rF_1rikV|FmC30gLi9{%xK zWAc}M;UkJMQ0-ma!6AAwGr3_{kks(okDQT~cmW22kalP4-aZu6mb^V1p;C@}citaSaD-&N5W)kc8@Q6bfgu?~~+_HQ2>y;>46p)ke#+{Gi?e31*1ev2)b} zX${s|XvnA=6Dd9TtFjmwi#_anx%+Oawgq-1Z@X>LnCxc1e}8vgA)Dy6_pMZ&Lyd@8 z|A#k0o(B6^+i)jcg%(#@KV552xL+77Y(rmWqo9*EM;uoja-x2$4B-z-Pf+pTgz{X$ zVH9^TL?k@Pla?nvgC9M4C}OpZD&(1d&~^-TjU8tMLJ<^d+!*f+?FGMv1Z>9Ao3x>&*t*=GGIOvMCFCq9@#3g|MXwhD{!tGbEUxaE_HWpmG;1ifS}J737Su3{M) z!XXb-sAcc;Elqe>QZDk6FH9~ufCrp4{Ni zH^ijd@#mt1_C2c(!|HbPs~W4~?6VE5H-e*6ZnCt$n$cp+(Pz_^nx=`UmmvnU(bliE7BdI&WTL%n zNTEpl3F1%^Nvgt9mW)j^l53Mj_rvV$0=ja)AWD}$#|*zXXj_?_hz6?(qS9^RNksGb zOgBmNFSj1Icm+=2N$6a=ApUG#e`7klz)hA=h#n>W{T?WTzWNk5JQCL<3eU_Fb^nWk{Ra=CSunud19Lt=* zx}a{hM+PHP3I#FbC6i`%*+N`kb&{XU$Hrjq1Dxt3(Hq*EMakY34-t`^(U&^3(FhYV zwFW@(ZyGqOQFXBUblpvb5N5OD9#_>DQv6J`M1m)qSz@IDUy47+mH6YZFTB|_iZ;C)bqmISp@tTtz3UR#aM~wi2~hlLzDT!D5mTuL zLz3(_=zTa7$W>BTR)Yd}U+Dz=!DXXv2~8FVi*ayTL? zbIn?Y*>P#`FUbD%l9m)yTYBSlnwu40iEDQPlP9$+M?E*HL!=b?U@$qQy(a=}(;*E0 zrcDDM#fP3cn$t?4(B4JNRTkVA!x@bs?%OL)eVis6ydN=zIhw+oA_q$@5|EW}ljwP@ zaHFrYv=UkuQ$$>MY(b&hMl3_!eu^AH|2l4+RmJyh{?j1MczNy->R3{d2ttehj~_z3SY5`~SKU<( S&_DVB!0~|d{x?4ruDxkEWh@b)i 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 Z2;cv{CNoyIJM%a0@cv`_O85H2{a;mj_H6(F diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bandit.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bandit.java index 6a8d14a96..e13041fab 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bandit.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bandit.java @@ -38,8 +38,8 @@ public class Bandit extends Thief { { spriteClass = BanditSprite.class; - //1 in 50 chance to be a crazy bandit, equates to overall 1/150 chance. - lootChance = 0.333f; + //1 in 50 chance to be a crazy bandit, equates to overall 1/100 chance. + lootChance = 0.5f; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java index abde634f7..47fdd81d3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java @@ -35,9 +35,9 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle; -import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CapeOfThorns; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon; import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; +import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -48,6 +48,7 @@ import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.Camera; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; +import com.watabou.utils.PathFinder; import com.watabou.utils.Random; public class DM300 extends Mob { @@ -59,8 +60,6 @@ public class DM300 extends Mob { EXP = 30; defenseSkill = 18; - loot = new CapeOfThorns(); - lootChance = 0.333f; properties.add(Property.BOSS); properties.add(Property.INORGANIC); @@ -146,6 +145,16 @@ public class DM300 extends Mob { GameScene.bossSlain(); Dungeon.level.drop( new SkeletonKey( Dungeon.depth ), pos ).sprite.drop(); + //60% chance of 2 shards, 30% chance of 3, 10% chance for 4. Average of 2.5 + int shards = Random.chances(new float[]{0, 0, 6, 3, 1}); + for (int i = 0; i < shards; i++){ + int ofs; + do { + ofs = PathFinder.NEIGHBOURS8[Random.Int(8)]; + } while (!Dungeon.level.passable[pos + ofs]); + Dungeon.level.drop( new MetalShard(), pos + ofs ).sprite.drop( pos ); + } + Badges.validateBossSlain(); LloydsBeacon beacon = Dungeon.hero.belongings.getItem(LloydsBeacon.class); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java index 98d4ba4be..a91d3e404 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java @@ -33,8 +33,8 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Ooze; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle; -import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon; import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; +import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; @@ -56,9 +56,6 @@ public class Goo extends Mob { defenseSkill = 8; spriteClass = GooSprite.class; - loot = new LloydsBeacon(); - lootChance = 0.333f; - properties.add(Property.BOSS); properties.add(Property.DEMONIC); properties.add(Property.ACIDIC); @@ -236,6 +233,16 @@ public class Goo extends Mob { GameScene.bossSlain(); Dungeon.level.drop( new SkeletonKey( Dungeon.depth ), pos ).sprite.drop(); + //60% chance of 2 blobs, 30% chance of 3, 10% chance for 4. Average of 2.5 + int blobs = Random.chances(new float[]{0, 0, 6, 3, 1}); + for (int i = 0; i < blobs; i++){ + int ofs; + do { + ofs = PathFinder.NEIGHBOURS8[Random.Int(8)]; + } while (!Dungeon.level.passable[pos + ofs]); + Dungeon.level.drop( new GooBlob(), pos + ofs ).sprite.drop( pos ); + } + Badges.validateBossSlain(); yell( Messages.get(this, "defeated") ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java index 0afc90948..80056fd2c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java @@ -28,10 +28,10 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; +import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Gold; import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot; import com.shatteredpixel.shatteredpixeldungeon.items.Item; -import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.MasterThievesArmband; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ThiefSprite; @@ -52,8 +52,7 @@ public class Thief extends Mob { EXP = 5; maxLvl = 10; - //see createloot - loot = null; + loot = Random.oneOf(Generator.Category.RING, Generator.Category.ARTIFACT); lootChance = 0.01f; WANDERING = new Wandering(); @@ -102,15 +101,6 @@ public class Thief extends Mob { } super.rollToDropLoot(); } - - @Override - protected Item createLoot(){ - if (!Dungeon.LimitedDrops.THIEVES_ARMBAND.dropped()) { - Dungeon.LimitedDrops.THIEVES_ARMBAND.drop(); - return new MasterThievesArmband().identify(); - } else - return new Gold(Random.NormalIntRange(100, 250)); - } @Override public int attackSkill( Char target ) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java index 55d4d75d5..20d47f069 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java @@ -224,7 +224,7 @@ public class Generator { return item instanceof Bag ? Integer.MAX_VALUE : Integer.MAX_VALUE - 1; } - private static final float[] INITIAL_ARTIFACT_PROBS = new float[]{ 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1}; + private static final float[] INITIAL_ARTIFACT_PROBS = new float[]{ 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}; static { GOLD.classes = new Class[]{ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/GooBlob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/GooBlob.java new file mode 100644 index 000000000..09e14b8a7 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/GooBlob.java @@ -0,0 +1,48 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2018 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.items.quest; + +import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + +public class GooBlob extends Item { + + { + image = ItemSpriteSheet.BLOB; + stackable = true; + } + + @Override + public boolean isUpgradable() { + return false; + } + + @Override + public boolean isIdentified() { + return true; + } + + @Override + public int price() { + return 40; + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MetalShard.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MetalShard.java new file mode 100644 index 000000000..88ac4c2d7 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MetalShard.java @@ -0,0 +1,48 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2018 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.items.quest; + +import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + +public class MetalShard extends Item { + + { + image = ItemSpriteSheet.SHARD; + stackable = true; + } + + @Override + public boolean isUpgradable() { + return false; + } + + @Override + public boolean isIdentified() { + return true; + } + + @Override + public int price() { + return 80; + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java index cb6c4f79d..58e874217 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java @@ -33,13 +33,11 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.RogueArmor; import com.shatteredpixel.shatteredpixeldungeon.items.armor.ScaleArmor; import com.shatteredpixel.shatteredpixeldungeon.items.armor.WarriorArmor; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.AlchemistsToolkit; -import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CapeOfThorns; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.EtherealChains; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HornOfPlenty; -import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.MasterThievesArmband; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.SandalsOfNature; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TalismanOfForesight; @@ -219,13 +217,13 @@ public enum Catalog { RINGS.seen.put( RingOfWealth.class, false); ARTIFACTS.seen.put( AlchemistsToolkit.class, false); - ARTIFACTS.seen.put( CapeOfThorns.class, false); + //ARTIFACTS.seen.put( CapeOfThorns.class, false); ARTIFACTS.seen.put( ChaliceOfBlood.class, false); ARTIFACTS.seen.put( CloakOfShadows.class, false); ARTIFACTS.seen.put( DriedRose.class, false); ARTIFACTS.seen.put( EtherealChains.class, false); ARTIFACTS.seen.put( HornOfPlenty.class, false); - ARTIFACTS.seen.put( LloydsBeacon.class, false); + //ARTIFACTS.seen.put( LloydsBeacon.class, false); ARTIFACTS.seen.put( MasterThievesArmband.class, false); ARTIFACTS.seen.put( SandalsOfNature.class, false); ARTIFACTS.seen.put( TalismanOfForesight.class, false); 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 616b7dd41..809961bbe 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -588,6 +588,8 @@ public class ItemSpriteSheet { public static final int PICKAXE = QUEST+4; public static final int ORE = QUEST+5; public static final int TOKEN = QUEST+6; + public static final int BLOB = QUEST+7; + public static final int SHARD = QUEST+8; static{ assignItemRect(SKULL, 16, 11); assignItemRect(DUST, 12, 11); @@ -596,6 +598,8 @@ public class ItemSpriteSheet { assignItemRect(PICKAXE, 14, 14); assignItemRect(ORE, 15, 15); assignItemRect(TOKEN, 12, 12); + assignItemRect(BLOB, 10, 9); + assignItemRect(SHARD, 8, 10); } private static final int BAGS = xy(1, 31); //16 slots diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties index 4ac7ac57b..d26cd1104 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties @@ -260,8 +260,8 @@ items.artifacts.lloydsbeacon.desc=Lloyd's beacon is an intricate magical device items.artifacts.lloydsbeacon.desc_set=This beacon was set somewhere on the level %d of Pixel Dungeon. items.artifacts.masterthievesarmband.name=master thieves' armband -items.artifacts.masterthievesarmband.desc=This purple velvet armband bears the mark of a master thief. This doesn't belong to you, but it probably didn't belong to the person you took it from either. -items.artifacts.masterthievesarmband.desc_worn=With the armband around your wrist, every piece of gold you find makes you desire other people's property more. Perhaps it wouldn't be too hard to steal from pixel mart... +items.artifacts.masterthievesarmband.desc=This purple velvet armband bears the mark of a master thief. This doesn't belong to you, but it probably didn't belong to its last user either. +items.artifacts.masterthievesarmband.desc_worn=With the armband around your wrist, every piece of gold you find makes you desire other people's property more. Perhaps it wouldn't be too hard to steal from a shop... items.artifacts.sandalsofnature.name=sandals of nature items.artifacts.sandalsofnature.name_1=shoes of nature @@ -672,6 +672,12 @@ items.quest.dwarftoken.desc=Many dwarves and some of their larger creations carr items.quest.embers.name=elemental embers items.quest.embers.desc=Special embers which can only be harvested from young fire elementals. They radiate thermal energy. +items.quest.gooblob.name=blob of goo +items.quest.gooblob.desc=A jiggly blob of goop, split off from Goo as it died. It's almost like a big ball of jelly, though you wouldn't dare eat it.\n\nIt does nothing on its own, but perhaps it could be used as an ingredient. At the very least it should sell for a decent price. + +items.quest.metalshard.name=cursed metal shard +items.quest.metalshard.desc=A shard of rusted cursed metal, which broke off DM-300 as it was destroyed. You can feel an inactive malevolent magic within it.\n\nIt does nothing on its own, but perhaps it could be used as an ingredient. At the very least it should sell for a decent price. + items.quest.pickaxe.name=pickaxe items.quest.pickaxe.ac_mine=MINE items.quest.pickaxe.no_vein=There is no dark gold vein near you to mine.