From fb5e8bc3bda5b8d4cfd8aebf51de0835b675414d Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 19 Jul 2017 18:01:14 -0400 Subject: [PATCH] v0.6.1: lots of guidebook implementation --- core/src/main/assets/items.png | Bin 14692 -> 14706 bytes .../items/journal/GuidePage.java | 7 ++- .../journal/Document.java | 23 +++---- .../levels/RegularLevel.java | 57 ++++++++++-------- .../levels/SewerBossLevel.java | 13 ---- .../levels/rooms/standard/EntranceRoom.java | 40 ++++++++++++ .../windows/WndJournal.java | 5 +- .../windows/WndStory.java | 6 +- .../messages/items/items.properties | 2 + .../messages/journal/journal.properties | 18 +++++- .../messages/ui/ui.properties | 2 +- .../messages/windows/windows.properties | 1 + 12 files changed, 116 insertions(+), 58 deletions(-) diff --git a/core/src/main/assets/items.png b/core/src/main/assets/items.png index ab6ebdb11de6f7be2302182c475de102bd3c1819..7886c46b3c3d5eab1aa96650890bd35fe07d5217 100644 GIT binary patch literal 14706 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 ZfWqs_zR?3a+HEY(|$)3Gu<})+vzKxZI zgs7Y-06^l*=@S{ih$G0+TYLJy-s{Lxs z+FuNXzpwAySuQUL51pHQ`{J2KKIu-)hkbosGP)OaZZT%u%LIdM52VO`QBpjWnUtOO zN~f-A#IJS4lvw8C&2{1~5#nh}D689z^CM?!*|S^+94@RbKYh7e#(;G4MZ%*C zJI#AWWx%Hup1v6*C5RiI41VSnk=K*j9~-Mf0ubP!AQ3ttUg9N$iSJc!8h#$c^~O0P zQc3-V#Qb>w3+8;8pFYX{UW>JF3VH`{?{{t$l5I~tx ztpQd#UC=BDm=guX1^uc-G<`JE<1OYhE{G#TI&=Y=!?%t-h6sIt$JtnGh6w~`vEm_>VjjX@8hI7 zC8Rcimn2!}4Zmq5VV%itv^{sxj7THne@y3um@7%$m_omg-`%e_t{v2dm7ACIv%US0 zrs1o5mx$CvTUys5Z%TCpS?*ERM8@XL!inEx@#IKG)Sy%}zCFFU=0n_L4AFIi%Z;)* z1AnL;7teL}@LZ`U1cHqVn9l%?OtSV!rM`rIdW?BCPEzg}GKhXENK9ez-nG>%3`O~m zL2M2T&ZLse2`U2|$pZ_RGz6sDsdPQzl$aRiv{g}KF=RK@${mfP04yP z48Wi2p!a?9wIqJ~XH-25JdOZ4w!}xgec3(vyd26I;RMVL`Th&=?R9%7MvqetE5{-E z5{yIUFlL(;OAz;qKAJuZ5xGEOk#K8Q4%rq#=;Y1Qhipr-*qdy&dS26c|6rjagf)Te z<}x1aZshf?tzht2RomLD=S&v`gD$J_m{8IA5)JC?92z%#WhiEIB3I*e#iPYHxJp4H zQkVDb*`anj@z{&rT#MP4*VN)MWh@-rP7keGT#a@b)(-1_f264LANB$dlk;QsEwKMu z&226@Vlnc--7x>;#bO;02WQYa{nF~o%e&i;)J)tyE-=yBx9*>YYkJrnHBy`KN7EHd ztl0{HHmrc-$(Z`BA#~Mw6GAJ*&Tluxoo&;OP2K#UasE|B*X9bYOfj!j`)=6a3%Ywf zQcoE4J82wohovY0q_1du?{*-NU0rQZ)C8TVCT|7Ui4sHN;8Iwu94QxKAP9ehU0u~R zwGapt1uQ^pvbB=~si9yfl1wN&HHL7O01A*)=rMCi*@x+f0+y56s5xq8SiWW zSAPF#CQZj{*O0ITapav>^{1I=dVO_`sW*spi}ojp0Z~s6_0NyNB{|TKVg7LO0`ToB zsm6If-!x<$M?NW!fM8n8@g_bn{%QYwFIZZsFQ?Ka7CIk%wGdH zhr2z>axF!`Hg@eoK17`ORFy~%C_WGIb}gS)#YEwRtsrqXA&r9?=Boc5?+9Wh_qe3} zr2#!Qb@8h-M7W6lDUoOfOAS?_LmT_U>cmpYR={cdDDby$hY-;QObmB`dyha!-01dl z)C|0LK$m&Gz-Or-Qo;8D)6%v(E?p@3LE9T=s*n`_*`8xd5I5--8S|$L7V$%;$EiwX zZY9>rpDywIs<~|>9K~?`HI7zokfr?%ANqcOmhO3@*KOG!xaGY5LffRG6?Y|jT{$6E zx|?=T#kkFEo$)@7{q-FkA0EDS(SPu^VdRPG_~lF{1iQr?avZWRP}_a_w*{$>Jdadj zC-1y$H?XZFdW*SOv^@{l1e%<=n^g-K;0VBpc#r9ro zI`5%Q7cmCDPY^S5P}z3gZR1(_VfAmDFAkqBLtkI4bX$_zzh$ztmF56ykScmS5{c`3 zu6wLX{i!Te7SbrW0ltXDo@cNRswqMR8M$HeUxmzoxH9av7;)c8?4z@jf=|{oj)5Gv zUaXr1)9v0C14aE&;?> z(Fl^mnX%}FpU&_<1j)PvAnp{%CE%LFe_*e@zas=-x$l_F;a&XKiqI7P}IKWD8W1YWU%MMQ*xDnEmxF#{pr@|a@}+#QSbfHxKv ztAl=edh&A}&fXW^!;wlNDS(rG?jvbvRnWt}Q`859faNu*&W0Ob|H>($*9pXcB{Fi# z<>`xr#>Sgm)NaVeJZQ*jU3Y8TbO4x_>^{yV@h^txt144>tRM_-1L=HaIjPR0ZoPXq zwrfd~d`*(p@HF=TudaykZOccX>hODOh@hJ2rFUx34u5sra)i?K10aWiB^T zQLqQJZk%)iggCREZvgph;`>s^0*cYV70cV@8f-Y9H;7>LQM>)nE)pZt0;yAmaxM$(8Ze3Hh&*M{I&rK9w30G69lOu zL}Uy4sq6x}VHW~3Y%?K^%4j=>JZ&o}S&ri&p=i9B{NKITO%B#*n-TeD^_>TJ z`b`)!Er)qs4R!w+T*!nAx{wrsT{y6*g`|W@06OzUp$vGF*vO&eyuK)q{khJlqq*bx zQ9+{Ap%NMV?->x(EeTS1Icl|Q{uII702%n$>E(?VcA zR3Li}u0(%AJOVIU0AmI)G119t{3jnV#b)umMM06eCg=&Nt=Kjv7Q0CmdYBQU+XLB4 z^k`R9uoEl$RY-tMm;s>#Rw4v2bogE&2?cUvF}0e+m0)E}8?cn@bh4!H#n)36g+1nzOJs&fo?_H6TJ+b8?Bq|H-MJ}yWwmkl6 zcFVNb{$_FCe;kZ|y^Q~k!ztCK!fSD`q}8b*Dw#Xg^ie)|+;Ej_VO8oZ0KqZ`sH2$? zyicR6FxcE(Y3GWAS&=#WOVC@ZeQO;$-NSD^+Wq6WaLC&O?%F^!nOB&frF}SG5m95B zLqOP5C=@@ZLBH(VtbCGg>27NbF^j-uJ^vk4w|wd&cXNJm&@rgeF|hXYQd@JCUwM7i zPAD8UC_bA==6@cwDZV`QjOEq!GEE8?XZ>94k0M~PSn+m48u{mgLkp?ykKAyrey-;; z$Xwv?_Qri2J(_x_*YRf*66WLy??}@To@`uf@xZU&ZYS3#cKJCR_1)dF@=KS11&5t# zD)v*S2EDm9Upcc2{`N1AzVha#FyvBL^ZOh7Pv(ZQ;^hN1kGShLdMHxM3-R--V9c6+62IL{YhT&N zKOaT~vhRmQL}YZ3yzutceTEEk7L61(9W4vY4G4JQo;PuBdSo%sL3hI*&K)9t?QPz0 zXoZ6zxFUYTO~E!AoX^njL_*#BIgoFfg!tbpozxFwmIgD6Gt^|xw(QVJv9Q!m1T;>X zvj2tC^_Lo0H@3%%Yo5~AZe5_19oB)hUhQ_#{Wj;1M*-IQUb4Wi^WMZe2HJJ53B8I2*3XbXkOdS~LT^T|Md{3Oea2rbOpZifr5jYa;be-*Vkv9|(}>x@ z@b0AfrI+S&#^KH%`l}}AH5mF0%g-oRsLRuYgFi0l65vgFR+(29^*Lf1lY;9jhz4)+ zOSWJ%zRNCpEq+UUHsR*^KkJR59o=ClXy&HeQX87R@J`)rOm&3g)crfAj%9Fc<;wy% zdVR&8GASwi7B8NG-upF?mJotZ^5AkqJhO2-@oxI{^MxEIQfbt!8{FZSBH2E zRML6p)>eLKj3!z#G|0h(=*>;lwGF)|0be85-hQ^H`ylXs>$eNvb)pKII#79m{wXNI zTXTNd9UP>1Qc$=Vmvv4Py_8FI)8U0@(0R|7skTi08+f^9S#&!G|Lb?Mc{hSVzIE>1 zI>GN3?^ETIfZq{ofoVK$@qv-C7xc@X3z*mGq|ni(4*H97V{VXGSSC9WqicG?+$F3x zaw_2FzLXpIiBpgk4=!`?N6{6^2lVa$E~c`DLp>JQ{*tmpL-nM5Hbi6bsl3{ZHG`Pe z-B)9nis95}PZqk)9USfU{BylJvpRPtd2t|uyDxgB2&dl3;ilHG5W@jmm!mhvr!LO| zxShmqj7pI={t-}Fu+~Mp(ov|#GilTzfpikn&SHl*al1a*VAPdwVd@6vtK+vyvq&yC zCue^Uf|v6b56;s48C~N|fq%F+_?BTJ)Fy#tjgHhwr><>GkFM2b4pj~u1<=(`CIqjr zFrdX?7Y*;=sZxUei@z1nKE6BcSoOR~`O*oc@QUP@=`)c5Da|$a|+0Jq3)(ZpK1~0`bX4xy#xVDwd0BRFl;fUuKZ?5! zx6?(>%R=4zI15@n#EzgF9;s*o?5E4&$l_#sw$^N014NZ*u#5|uFw5^o@Rb8|os7Jq}w=tfgB$os7zLLxS13`XYO!xmJiX*hj-^!?a) zfOzc7A^Nh5^NWJ1Igb}Es@l5>UsE!UXAtC@QAP5@!7dF(~`O1fG)TA!D&y#8Y~Gd@fj z`s|c?G`-=#+`}PQ>onr_(UbQx_;9xkb4D2Vm+a}rF*++`)0hWakn zbAMj~=$G3h;G#d$_I0tMzjq+`%Upyz=a%xLLN^WjFk#4o@CN)At{k7S$7V0*$&J{Y z$-<&~GvkNH8U)~Wd9kZufm%5P;=;aUdCV8go}&`v$17ddQD!Ga9ux7>N|!8`0aQ=(dvuY}?T_)1A zVRK7uvJ=JP)Iu@$Mmt>ya2VV+!Si_WY=RKmQz^-s!3Y%+1xPA=?Vl4JHhq38_-hR61=qg5XMWtD4e6cb0I7HvJoVu^XrNX) zQ3uJ+5DY&YvbL!Gp85lKP8#~Vg&XILuhb$#F-LFUOEh8GPr*_s_reXlAlR-=_+#)# zyMr!py7HhszXeo-A>sT4*R5p2jM&R<{cMGcT+$0st-oN08l{hX+N!r#xQ^idI^kHw z!OojR@vbK>_Sl#y4L3==%lIJPDy)hUc7AjHB&X(K8}GxIn=aaJJ~VRU#2r^|GrAdh z9TrUPeI$KkI)Nt+(GU`7ZcM;*v1FllBr;_|U3r)(_w%`p*EyRcb1%F%6Z3_$;W376 z#^i|#sP2GXnYDn6-@>P6g`7H6#0U2T`Ed^N(FJ%3{tL&U{5n8EO+iRk@^3Jj%1UG` z>?tYcEzeRJ)-T9_LGQizl~gu^5?u+n3n(uwKMB)7(r?U=FI z{Owbftl4fYg6T{jMA>(*)Qk%!Oo&L3&Q6*|^lKV(!OTNNZ8Hp{=kkeyG0vY%a3nvA zAZ5%=WtltP{$L5;KI+|od7VXgYRtu)>_Dp__t+fc-HXddnoSyV;M>(y$cp`rD3h|h zHe^0`(=CRpu(@3dw<|liCq_)!rZlXFN(fpdg>;dEiOlo!Z?Ck`1Mu>rP3JkQeb$uS z5kK6#Ym?@^g^#U&qaJ>1Ydt#DV`lsaJM)671#inv68uzIz18?5Wh-9wS_|hE(o0%IKhLHoFMd;qR}O2%w8zAa?ib;6 zbaaR19b4tN%jX!j9OA_e4xQ?C>@`wGfN#076Y_g&lT64u1eHNTR9jN-)b|BsN7u}t zse(=qeBztm?C^c+QR=S44ilC^FPuW|2NO!9<6KvFNQ~ZTp3wYgPyH_J&GqgUxzn=X zoGRq%(t*)Me@6bA(@sZGwgV5_Sj>~Y)h^BtX)%yW%G0n_h8^2=7j$%j2^FHNQ71}g z0z#X~W}EQ6niCB7s8QAYechRE;e7mBYN~agd1sA#1lIGN z^OUrW*z?KTUx;WxMt4z#Wt^Y!R5D|m>xrA6mR+pNyugMk#tcUs zal_6n9MZ4=`$+Ph3BL=wtxUi3q4U>}zr%?w1ZVIG`wb3S zaQCD)>sUV6g?zr6cV@ZNhIpKF_%nAlTG&h)a#HgzG}N`+TEYWH6eB1=-s41xi8#FI z%@zBy^QH#z979`T&UMH{a?(Sv$DZ5QQI50$JsZyih~Ltnt}xI-)#S~32Q&GXR4R(Q zD$|gC))vT(A9|BDB=8f0On^+F;Znt~S-B95Dp(DkfJ{9WsK5 zrJL8S=SzW{tpms=d9)!|5z(yT8>`0$dlsw$B)~lg(WAU~`EoWg{q{iU_$uzd1B3rp z(%^qAb$bXtG&^u13YOnh9yC<@%J|eAUAnIIB`dmnWTZera`Z}H(zim=Qa8^ZIb`eC zxlQL6iR3>#go?UxT7wuAGZUUsH>LXAk?cEAWX@)@Bf3g?3)W~qHu@uBjTOBuaJYXr zHG|1XmN)3i{(-Ejc6f9B?o9k??~?bS^1NqT8`7mO{d5$K4$UvGTN{5a(2@q4xWrQ} zk4E@wA4KMPZJn{aRGP3Hr2DS)g+_I<#?>2_1b})6fmL*=-aFJ8Se(xaFpBw!Ve=8m z)l()N)G=M&E56Z7xLknff8osfYcY)OTs1ouO%q&_Z=+ZT`8W)+mnFa|$NI;BW_;t52zxZo+34kWZ7v@e$@-a}WOVzclRx@!{}eIZK3=J! zzTH|#Jk;PV8I+kChF{~D%sy%_@}iTr1IXx&CzjqZj&+g2&+nI08y6CjW*YQ|IIphL z5scjMhcKf22lY96byk*Q!8b{nVS$!gCSFx`wGAGdAOEb-5IZ}(_-cX;8C~66)Ti>) zr^p9~IE-`}X+W1(@^Z60AoR`Rtwk&SnK!ED+URJ!iu*KX${x>MAMrv_!YKg(eU=8V zSx@E*Ws`V%-YR=hD7+z)tKWK}oACL*3(vfFEk;gvRS`2nn>#|BG0a&u2R(r?`!Qjy_ba<$s=xr=d5ep zE|vV1A_q$*5hQE}Imd_V!3U@9h3JVXmwcAR&0!MSpH@LgRImD?&-0LWc0CxMYcb88 z9YV-5IlA19a~iv`-Dqu^3;#ww;9p-$v@3rroMDeLYmezvBqD}l(!84Xo^svi6JV7^UX}Mv;JQqs_ng5Uc44HqfyZouR z)Pk2_A9_M%+~H)AU~+^lTkFmuzQu_(APlmo{^>k&`uZd}WbR!jVud<;P+`prjo-!& zoe!==^YI>eR@l8}_MmbfXWxx<5=@3LhI~7((`jv%$2#Mk&g-P%B6X@w{~6uJKJ(=z z<4KC)?7>)j{(L@Dvx7bwZdGJoKWC)yZ$43C#;zQjMonKWtL*A&V2lm>dNX-pV<~g; z_1DacNxJyc%q?Dbd^oqfL*e4q<)l}cyzhGny6@Z2)e)ze=->157fr@{3!F8e53TR6 z<0@8W%iUs%%HN!s!OD>495qWraP1p*zlxj?Q?`cGsD$Ohk@a=^vLIQ~sE_YIJaR+7 zO8*&j8P&5Z;}2)KCzt%wH+i+m;;)pfyhrWt*>+pU)`W_V#Y=N;F)G!HtqCFX{KmVi z)^7fkS3j^asBe6o@jn|2o5<{cs6`hwHl|0WrWOf-P8n*Z_lxXt!b6FT2a^l$d-%7! zox4OGVK$@PxFVPMH>Acn?q`L_&tq$a&df|F4bhgooSJLQBKiUrVpeNczS(flr4kD*BjRFLi%Meg|m70%G=9PU6g_^UFa>Ji2HI@I<-z!-Gz^fIc>);f868@ zZJi#9W&~A@c%Hf>9*e<6mM-tIT^>$lt&cBD>i>R%^7BbhH_!`APD7ysuk@E(c~>xu zHjqfL9__h!$#eXVMxgIW%P}AGsgP7-Mc;wWV_4}7^b{bVpzrBdZ5MkglkbVPRg@L6 zf;OuO(Wz=8v1v(PB@XErtm}pQ%>`www0Xc9(}csWG(hY>Zi30mown0@=n&>Oha=r% zcM<+nhG*{gNZw9hjPD2!MOw6&_ISU4p3MFjp$$9RY2A`=&2;c$FQ?D6_R2YNXb?t* zoyaffaKO(zv(M6)>$O1P6e({A^u?h^LZGt?G-}_aTwUwgz1BRnUiCb2mO67s(rszq z8~zXEtx|cGEM)4LQ1g?ap{UW7sTC}*I5{KLuW_I(i#Gq~&!fVn525{bgzxO3!vprz zb%@GEdI$a44shuq-Mldabu6H*y81kVu@`1Fhh-CUK@k4Pi-N;2Om>r7htZ#!DYp_^ z2Mf5S(l=;h#+Y#9`!Rk0F?|alz7qx3Ha30^U9Ih!c?fROG!U_Ay1JC>-N^yt8~%sn z2*)~~^a_-BF_jl;64bA}{oAAeiPf>Mb&4@d$6K@nWNRXt<1TN#*Bf_H>z_)Eos*`& z4=c`!UpF&(B&!Ps9o&;li_U@=-+2vj8Q_O=-MaWH?=U~sf`f}ofs+h(Sx=2`2}F{R zCa74Lfj0Ju6342pw0$t;r{+ht1H9vMm9QvL%0svjW$zFLDqbY7uX(f?-jUWD3(5`t zCULZAUZBI`NoZPg)yc$NBa7A4E;+=!TZl_?z*nYbZF!r%3q9>DBl?mEfVZ|{&+GEm z2u5jbo3(`Y1zj}d+Cl#dFNNaX@*{YJKVt2w@c_#`4fZ7i<5$Cd=1&fk_~GRPqu0KB zVY81ziS?!wWns|4qqwM7OS?pV5|V>dROgT2f?TjpO&qsx`j_)^f@@-$UPMe!{kn%u z-*$?T!=iPhNop-s3=N@xrmkKJE3s_@+)JY-5D{Q)p=+ZChl2G2jH5W@y{_M3&@*ML zNjNS8dFm^33QW3>jiI*^PQF{T*jkskfiIX$U_KrnM-631HLMl}S4A+E1FM&XRs0zT zR)nsW&dDc~xhIVcy;Y4Y)q8f8eqKfgH7z@Wm3gTQSd)YSu(VmNH>7YA<-0eO_e&S7 zK!}fl<)0*U*!;4l>8Lljd5^nRT_13)6Ct55s3O|BE-kbL&+ddEv(f4%ZDlnq1*59j z_REXch<}Zb@17MP(kLM<>m$47>x7#>7$65(GLM3a0+{)KMv0G~%=>Ud59%$n-jNFr z+*>=Ip*a>)d}gcv?FGy;u+%!fx%Y`H=elFjb=FgZT57mub+(ZiZ?)Nt!ph z6X+iM1a3-0C@3(_X)j~n-rCwOFLw(1xEoT#!k-C389ovUp}nq)jiDR5ZYd|7dcBzw z)vLI9StHAdFte+cIUaXXptaLrg~@b+#hvXyUGuya{3m%kIBz-(pQs3+29!+c0cohS zF8W2TEpcb}*z!$Ygk1b{&rS)DifUfe1iOwnIqU*4H*7r8)af-t98=5$JZWK36DHq_uHS0W;Wi zX+}i)(btN~{9it3q0!t)LQ{Drmq}O@;3r3+N*PZzxSx{0+H);p6CNRmd}k@tZU&O# zg||K%gs7eQ#r`E?;#JE0^*OOpGyJT{oGbSw7O8_OYc@aX8CFV~vuh{~710bYnnMtk z39>5uc<^@UB{T!Q8l?Hi8<)+06GMH8`WLAXe#M2d`Ccq4r_y{Mcfh5v&yE>AYHppo zmO)&3Px->CE`Gmj?|GtUW@vVBluFynsNwv@x0)k0k7gtrG&iCP#)Rqq{mU*3KbK!q zaErlD(7yQuw{u3Eck=S{bsViQ`5MAcpVpa|SI;Udo$BCFjoqj_1WqPH__-NjA|h5> z;QK^RuWi-T8+^1b$ezk*cTtBysza&ouNnMoxGE8|Rr6K-Qei}8|56;k7)dv*qlu(n zthWL=b*QGhr)FVWPqk=Ri;jWbl@Qg;#A>Z{Gy`0>%;GL z!JOtzPlTdP`({r3UVb%FgM9=|@fO)&Lsj_Cj~(mmMZ2`eKC6A(roCU?$Y?<BnoOXU3+hE zrvKdmyu8`1J%Urx*v+?K!W0F&3+`D%T=Dn9v~;X9*W5mOw;uh1B1u6TOzZWXHBRI= zMWHoTE^zlKRevNZJys=>cn4*)5fnC1Mqtj)>)87X=3#;5taNVf_E)NOaO zsnBsNIHn;G#wT$X(dksO7?P)Hqd*Am8cK5F&lNwpdns9!^5DNY1^ge63BL0+b|B(n zeFv4wBc^R>sVUrXzf`{2RVY1qFjS+`#Z(WirZBa`j_+*|vD;}*27QXr6SU_al1Udo zJaoV5Uzhc*-0K?sQd_XeI_KGZ@VF5nM&x;~=NO@1D(K+)^6WT)x^0WI*B0T?KNXdX z<^`ODfT_V9Ks?q-;G!Y(vwr?K8E$b7Ot8xO8kZSE+|4P5)kzXzI{|_iA=a9xJas{@ z0tRh2jlupfsYxtHz1a@T;p+m;A#8!3T(CszUW6q0gCAYq;=nkNufbcR`kI>*%JmgGjfVd-qE_*vyvV!w6dNdOmOv2C7pNu#;>t{5rd zxyh}B`lXHfwQq;YjS+5C&B0>sqmPSsqfrWjjACb)>HYIIrcpgh1I1Z;iEf7Exx3aE z-ltew4-_|q&Y!$z9DAHEnh9)j2a2$RFStjA(%i3!#{c-!2L}ZNF)r?scS_z|ItK#g zP}xD7r-ZiJE};TMvMozVVV*77T+;g+Aix)w8y)ReNDozqyf0+>UF-Mj**s@o3G2xl zBt%k7@94k0fy87uk-c&$*;Dd3KG#>i0)^e#lpm`8hbbap#q`djA0CU(!D#Sj*s&@(?itTwfyU&Tzo{bnM^ZCHn0JoE&v;TA?=JXc!mNt`2Xk5 zZeV9t4;Q$L`JAZ9Plyh(kp)-j=GngWh}a_L{|BLQAn|Wxl1+&vhhUFl37DI;^So$~kf>T4D``or-=v*thCj z$keU3_cgJkKf7w(_y0<|&(v+OH>=NPm6G2GI;v>#>kUXFu44Q7kvcp@&;Qjb$R4q8 z=;_>bmR~4^Yc3M;e>Ke~nWG$4On~=VQbYI=M-@YUt2Uwh#=q0JUm$3=e_N(o75D$c zE?s)H>)#c&9I2bT91G5Zg7y60^%qU=9q)Ug`Z|jr$UJLe>5}&po8E9$VgB#-rx&gN7skl?(^_ads~;R6W-!0bXo_ZCl$?QfCV6rraX&cAo4WrJ zlZW!t(9S3WLY?Vn&N6np>uOdqq18!jzXaKJwZT%3=BV;o@f6+ggImMhi*s(P4I>BB zf?hq{eBR484fqeK#cIooq5kwDBA3_sw?Id=%~_L&c+Pv%|Ijp2W9nJE&K4&0=3BjV z{m+aMgVlc)!OGxTAIj3Ms=RWBrH>ubG7;$f!vixmSTD{uX4l5E`OM`*Lq=2fWf86APV|Q^wd1nnkpG)ud_$XT%6Wwy@Y?gg0n`8H z?)E*t7Pv13KHV&aNU+BM_Vp7N`Lp|5pR)+e=W>4Qy>lZAz;tFdQ zjeT=HCWxzQyI{{-3V446_LHf}UhVcj!*EZV|GWu$_esCJiH!3gZ`=F24t~dg_ke`< zA!C`{-Z;3FPa5glZ}m_`^Nx*V7t_y)Y&8>vCXZ3Q`=^T zHkfFoS8rfS$-y6;rCc7oV>`Zp9}_0h)!Wb8+LZ`1TfH3n$I7{GjUaORu|@W`dXFym zZ0~R{PC+24p$+3H-k+QQ=-vMOq<3vrC@&3CwU)V(hc41JT!z$E8`j%oj+4tYAs7SE zy!<`<93en~#D=Mb@z_gj>OcgKWJr0s zgwrC~>sgkIwW0b|E(#x=55cnn105gYsKZ~LXMIpMSNhxm(bf^??F75e5_?tCP4iIr zpOQ2IaQn@xRF<-WV@ZOn_cjf=_%^4orWc(V(zJXTm=N^QZEGQ?W_8J1;Omk4bgc)t_%d8 zw6$8XK2qm-j$y7U4ee#`mBA(b5{Je)XVS{$fH*|dGr|o76BZ%B&B4W!D@-$?cCPujSM}~qQ}(jsW>c(XE^5`3J=s(`7#L86 zHWY{SI0cqbx5l;{Tq$@)6U{YU^}Mg1Wve%yDF?@H4O6UCfTevh?Uv( zR(?EJ4%8~sNCH8(s3GKX5Bj#yZuH+ioV*H&*0y72kVVdEdU=)$ADyhLDM}V6%c4D9 zOEp$O#unnvkA-8(eeI(QsljL z?i@=Hu2orUO4jG;LqCZT*Qo@;2i82|O$i%eoBxga2#Z&KD{!!-kttbp)`W~S@g4RwX|o}8oP$Y2chKG_NZFqV%~P+H?>-C)Y6!IIU4O${N>dfCCY@K28CZmIDdRXC}Dc#%>t|Kt&&(9Mpw^O>RraTAs9m12f@ShH-;^^7Wv zbn4(#Q}IT2BVSDYLpsSrj^BPaWiA&M@bfV!Q2!(beD0)1Uom)%MDF$CG*D)*cC*IR z-O^~Y{OuKuOS0F+kY?n;EQyDiVP{|cd=083YRU>yvS(yyI+eR*l6$tPLZF=H1S2OGsLg$ z9f%!y`~;o43ae zBLVClZT58bxBjN}jeTxv6P-a-+QaUQ@xiM!(}Gfnk`!=QQ`@#xznr+j-&aC9t7%JQ z6{ume)9REXnJWC@SqIXnIMa5Z3% zmB})hfnbX6^5bN-RFUlK%9BK|!-&OVr2u zzVUJI;f)CWg(<%qTQukFM}`3n<%ICPjn3q3d+6NP|b_}95pW9QXY-tuj)ozUz4>7;gN z5oM&39Qpj?%^t$$F-?3g$Ho^9i*GD0Z}4SwZ~aIy2T%DpIMay3`x8N?*z0cfT9iZ; z>NTy5MNr42NkX4Gtv`!DL=ssVXxAMNlT|U7;l|6KB>4qcJE789m6%+hRRwjOwXR=3 z%p)&UbP6_R*OTjwcZP1|u-=#!#OB`$Na8`_Vrdp`7B2h9}22Uban9FjLBp#SPxv z{VTC4h7v6j%Ry{Sz}_6j7g;G+Xz+N*FF&i-xP~woa4Op&-C`6QHogN|cu?m9M?(<6 kp9gio`I{d9e|_*%dYY%7JUnXu&njn5TAe5}bG`k40dA;sVgLXD diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/GuidePage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/GuidePage.java index 03934cafa..ea43d9646 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/GuidePage.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/GuidePage.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.journal; import com.shatteredpixel.shatteredpixeldungeon.journal.Document; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class GuidePage extends DocumentPage { @@ -34,5 +35,9 @@ public class GuidePage extends DocumentPage { public Document document() { return Document.ADVENTURERS_GUIDE; } - + + @Override + public String desc() { + return Messages.get(this, "desc", document().pageTitle(page())); + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java index 173f24e09..0ee07e1be 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java @@ -43,6 +43,7 @@ public enum Document { public boolean addPage( String page ) { if (pages.containsKey(page) && !pages.get(page)){ pages.put(page, true); + Journal.saveNeeded = true; return true; } return false; @@ -63,19 +64,19 @@ public enum Document { public String pageBody( String page ){ return Messages.get( this, name() + "." + page + ".body"); } + + public static final String GUIDE_INTRO_PAGE = "Intro"; + public static final String GUIDE_SEARCH_PAGE = "Examining_and_Searching"; static { - ADVENTURERS_GUIDE.pages.put("0", false); - ADVENTURERS_GUIDE.pages.put("1", false); - ADVENTURERS_GUIDE.pages.put("2", false); - ADVENTURERS_GUIDE.pages.put("3", false); - ADVENTURERS_GUIDE.pages.put("4", false); - ADVENTURERS_GUIDE.pages.put("5", false); - ADVENTURERS_GUIDE.pages.put("6", false); - ADVENTURERS_GUIDE.pages.put("7", false); - ADVENTURERS_GUIDE.pages.put("8", false); - ADVENTURERS_GUIDE.pages.put("9", false); - + ADVENTURERS_GUIDE.pages.put(GUIDE_INTRO_PAGE, false); + ADVENTURERS_GUIDE.pages.put("Identifying", false); + ADVENTURERS_GUIDE.pages.put(GUIDE_SEARCH_PAGE, false); + ADVENTURERS_GUIDE.pages.put("Upgrades", false); + ADVENTURERS_GUIDE.pages.put("Food", false); + ADVENTURERS_GUIDE.pages.put("Levelling", false); + ADVENTURERS_GUIDE.pages.put("Surprise_Attacks", false); + ADVENTURERS_GUIDE.pages.put("Dieing", false); } private static final String DOCUMENTS = "documents"; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java index 207ae52fe..e63025b7a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java @@ -31,8 +31,10 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.journal.GuidePage; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll; +import com.shatteredpixel.shatteredpixeldungeon.journal.Document; import com.shatteredpixel.shatteredpixeldungeon.levels.builders.Builder; import com.shatteredpixel.shatteredpixeldungeon.levels.builders.LoopBuilder; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -51,8 +53,10 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Iterator; +import java.util.List; public abstract class RegularLevel extends Level { @@ -81,12 +85,7 @@ public abstract class RegularLevel extends Level { rooms = builder.build((ArrayList)initRooms.clone()); } while (rooms == null); - if (painter().paint(this, rooms)){ - placeSign(); - return true; - } else { - return false; - } + return painter().paint(this, rooms); } @@ -132,25 +131,6 @@ public abstract class RegularLevel extends Level { } protected abstract Painter painter(); - - protected void placeSign(){ - while (true) { - int pos = pointToCell(roomEntrance.random()); - if (pos != entrance && traps.get(pos) == null && findMob(pos) == null) { - map[pos] = Terrain.SIGN; - break; - } - } - - //teaches new players about secret doors - if (Dungeon.depth == 2 && !Badges.isUnlocked(Badges.Badge.BOSS_SLAIN_1)) { - for (Room r : roomEntrance.connected.keySet()) { - Room.Door d = roomEntrance.connected.get(r); - if (d.type == Room.Door.Type.REGULAR) - map[d.x + d.y * width()] = Terrain.SECRET_DOOR; - } - } - } protected float waterFill(){ return 0; @@ -375,6 +355,33 @@ public abstract class RegularLevel extends Level { } drop( item, cell ).type = Heap.Type.REMAINS; } + + //guide pages + Collection allPages = Document.ADVENTURERS_GUIDE.pages(); + ArrayList missingPages = new ArrayList<>(); + for ( String page : allPages){ + if (!Document.ADVENTURERS_GUIDE.hasPage(page)){ + missingPages.add(page); + } + } + + //these are dropped specially + missingPages.remove(Document.GUIDE_INTRO_PAGE); + missingPages.remove(Document.GUIDE_SEARCH_PAGE); + + //chance to find a page scales with pages missing and depth + if (missingPages.size() > 0 && + Random.Int(allPages.size()) < missingPages.size() + Dungeon.depth/2){ + GuidePage p = new GuidePage(); + p.page(missingPages.get(0)); + int cell = randomDropCell(); + if (map[cell] == Terrain.HIGH_GRASS) { + map[cell] = Terrain.GRASS; + losBlocking[cell] = false; + } + drop( p, cell ).type = Heap.Type.REMAINS; + } + } protected Room randomRoom( Class type ) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java index 04c717aee..5e55170f8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java @@ -74,19 +74,6 @@ public class SewerBossLevel extends SewerLevel { .setTunnelLength(new float[]{0, 3, 1}, new float[]{1}); } - @Override - protected void placeSign() { - while (true) { - int pos = pointToCell(roomEntrance.random(2)); - if (map[pos] != Terrain.LOCKED_EXIT - && map[pos] != Terrain.WALL_DECO - && map[pos] != Terrain.ENTRANCE) { - map[pos] = Terrain.SIGN; - break; - } - } - } - @Override protected float waterFill(){ return 0.50f; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/EntranceRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/EntranceRoom.java index 3065b7d07..b3a2a03e1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/EntranceRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/EntranceRoom.java @@ -21,10 +21,16 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard; +import com.shatteredpixel.shatteredpixeldungeon.Badges; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.items.journal.GuidePage; +import com.shatteredpixel.shatteredpixeldungeon.journal.Document; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; +import com.watabou.utils.Point; +import com.watabou.utils.Random; public class EntranceRoom extends StandardRoom { @@ -51,6 +57,40 @@ public class EntranceRoom extends StandardRoom { level.entrance = level.pointToCell(random(2)); } while (level.findMob(level.entrance) != null); Painter.set( level, level.entrance, Terrain.ENTRANCE ); + + if (Dungeon.depth == 1 && !Document.ADVENTURERS_GUIDE.hasPage(Document.GUIDE_INTRO_PAGE)){ + int pos; + do { + //can't be on bottom row of tiles + pos = level.pointToCell(new Point( Random.IntRange( left + 1, right - 1 ), + Random.IntRange( top + 1, bottom - 2 ))); + } while (pos == level.entrance || level.findMob(level.entrance) != null); + GuidePage p = new GuidePage(); + p.page(Document.GUIDE_INTRO_PAGE); + level.drop( p, pos ); + } + + if (Dungeon.depth == 2){ + if (!Badges.isUnlocked(Badges.Badge.BOSS_SLAIN_4)){ + for (Room.Door door : connected.values()) { + door.set( Door.Type.HIDDEN ); + } + } + + if (!Document.ADVENTURERS_GUIDE.hasPage(Document.GUIDE_SEARCH_PAGE)){ + int pos; + do { + //can't be on bottom row of tiles + pos = level.pointToCell(new Point( Random.IntRange( left + 1, right - 1 ), + Random.IntRange( top + 1, bottom - 2 ))); + } while (pos == level.entrance || level.findMob(level.entrance) != null); + GuidePage p = new GuidePage(); + p.page(Document.GUIDE_SEARCH_PAGE); + level.drop( p, pos ); + } + + } + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java index 7f25fe53a..fec80504d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java @@ -251,14 +251,15 @@ public class WndJournal extends WndTabbed { private String page; public GuideItem( String page ){ - super( Icons.get(Icons.MASTERY), Messages.titleCase(Document.ADVENTURERS_GUIDE.pageTitle(page)), -1); + super( new ItemSprite( ItemSpriteSheet.GUIDE_PAGE, null), + Messages.titleCase(Document.ADVENTURERS_GUIDE.pageTitle(page)), -1); this.page = page; found = Document.ADVENTURERS_GUIDE.hasPage(page); if (!found) { icon.hardlight( 0.5f, 0.5f, 0.5f); - label.text("???"); + label.text( Messages.titleCase(Messages.get( this, "missing" ))); label.hardlight( 0x999999 ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStory.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStory.java index c39cc712b..68b7b6ab8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStory.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStory.java @@ -35,9 +35,9 @@ import com.watabou.utils.SparseArray; public class WndStory extends Window { - private static final int WIDTH_P = 120; - private static final int WIDTH_L = 144; - private static final int MARGIN = 6; + private static final int WIDTH_P = 125; + private static final int WIDTH_L = 160; + private static final int MARGIN = 2; private static final float bgR = 0.77f; private static final float bgG = 0.73f; 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 e55011c00..36fd99c5f 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 @@ -394,6 +394,8 @@ items.food.pasty.cane_desc=A huge sugary sweet candy cane! It's big enough to fi items.journal.documentpage.name=torn page items.journal.documentpage.desc=A lone page, probably torn from a book of some sort. You'll need to pick it up to read it. +items.journal.guidepage.name=torn guidebook page +items.journal.guidepage.desc=A torn page from an adventuring guidebook.\n\nMost of the text is too small to read at a distance, but you can make out the title of the page:\n\n_"%s"_ ###keys diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal.properties index 853944035..b26fc80ac 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal.properties @@ -1,6 +1,20 @@ journal.document.adventurers_guide.title=Adventurer's Guide -journal.document.adventurers_guide.0.title=Coming soon... -journal.document.adventurers_guide.0.body=Welcome to the Adventurer's Guide to Dungeoneering!\n\nThe most important thing to remember: DON'T PANIC! +journal.document.adventurers_guide.intro.title=Introduction +journal.document.adventurers_guide.intro.body=Greetings Adventurer!\n\nYou have just purchased (or looted) the amazing Adventurer's Guide to Dungeoneering! This guidebook is full of tips, tricks, and advice to help budding adventurers survive and excel!\n\nWhile you can read this guide all at once, it is best used as a reference. Make sure to check it whenever you're struggling.\n\nKeep your wits about you, and remember:\nDON'T PANIC! +journal.document.adventurers_guide.identifying.title=Identifying Items +journal.document.adventurers_guide.identifying.body=Identifying items can be just as important as finding them!\n\nThe colors on potions and glyphs on scrolls are different in each dungeon, so you won't know what effect you'll get if they're unidentified.\n\nUnidentified equipment can be upgraded if you're lucky, or it might be cursed! Accidentally equipping a cursed item is bad, but usually isn't instant doom.\n\nScrolls of identify, upgrade, or remove curse are very useful if you want to reduce the risk of unidentified items.\n\n(You can find a list of all the items you've identified in the items tab of your journal) +journal.document.adventurers_guide.examining_and_searching.title=Examining and Searching +journal.document.adventurers_guide.examining_and_searching.body=Charging forward recklessly is a great way to get killed.\n\nThere's always time to slow down and examine things around you, which can help you figure out the best way to approach a situation. Rushing into enemies is almost never the best way to deal with them.\n\nDungeons are full of secret passages and traps which appear invisible at first glance. It's good to be willing to thoroughly search an area if you suspect something is hidden.\n\n(The magnifying glass button is used for examining and searching. Tap it once and then tap on something to examine, tap it twice to search the area around you.) +journal.document.adventurers_guide.upgrades.title=Upgrades and Strength +journal.document.adventurers_guide.upgrades.body=TODO +journal.document.adventurers_guide.food.title=Effective Rationing +journal.document.adventurers_guide.food.body=TODO +journal.document.adventurers_guide.levelling.title=Gaining Experience +journal.document.adventurers_guide.levelling.body=TODO +journal.document.adventurers_guide.surprise_attacks.title=Surprise Attacks +journal.document.adventurers_guide.surprise_attacks.body=TODO +journal.document.adventurers_guide.dieing.title=Handling Defeat +journal.document.adventurers_guide.dieing.body=TODO journal.notes$landmark.well_of_health=well of health journal.notes$landmark.well_of_awareness=well of awareness diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/ui/ui.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/ui/ui.properties index 2d9778d99..c863c0538 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/ui/ui.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/ui/ui.properties @@ -1,3 +1,3 @@ ui.quickslotbutton.select_item=Quickslot an item -ui.toolbar.examine_prompt=Press again to search\nPress a tile for info +ui.toolbar.examine_prompt=Press again to search\nPress a tile to examine diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties index ed175051c..337ef313e 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties @@ -36,6 +36,7 @@ windows.wndinfotrap.inactive=This trap is inactive, and can no longer be trigger windows.wndjournal.guide=Guide windows.wndjournal.notes=Notes windows.wndjournal.items=Items +windows.wndjournal$guidetab$guideitem.missing=page missing windows.wndjournal$notestab.keys=Keys windows.wndjournal$notestab.landmarks=Landmarks