From e4ddd21893ef7c6e6de849a628e1be8be539959f Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 04:34:56 +0000 Subject: [PATCH] - Added a new "shop" (the Library) to the Bazaar. - Added a new item to the Treasury. - Should be able to Mulligan to 0 now. --- .gitattributes | 3 + res/pics/icons/CoinIcon.png | Bin 0 -> 21139 bytes res/pics/icons/bookIconSmall.png | Bin 0 -> 11825 bytes src/QuestData_State.java | 4 +- src/forge/GameAction.java | 1 + src/forge/GameInfo.java | 15 +++ src/forge/Gui_Library.java | 210 +++++++++++++++++++++++++++++++ src/forge/Gui_Shops.java | 26 +++- src/forge/Gui_Treasury.java | 40 ++++-- src/forge/Input_Mulligan.java | 12 +- src/forge/QuestData.java | 33 ++++- src/forge/QuestData_State.java | 5 +- 12 files changed, 332 insertions(+), 17 deletions(-) create mode 100644 res/pics/icons/CoinIcon.png create mode 100644 res/pics/icons/bookIconSmall.png create mode 100644 src/forge/Gui_Library.java diff --git a/.gitattributes b/.gitattributes index 293ec1d39bb..cd17389345e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -38,6 +38,7 @@ res/pics/icons/BookIcon.png -text svneol=unset#image/png res/pics/icons/BottlesIconSmall.png -text svneol=unset#image/png res/pics/icons/BoxIcon.png -text svneol=unset#image/png res/pics/icons/BoxIconSmall.png -text svneol=unset#image/png +res/pics/icons/CoinIcon.png -text svneol=unset#image/png res/pics/icons/CoinIconSmall.jpg -text svneol=unset#image/jpeg res/pics/icons/ElixirIcon.png -text svneol=unset#image/png res/pics/icons/FoxIconSmall.png -text svneol=unset#image/png @@ -47,6 +48,7 @@ res/pics/icons/GoldIconSmall.png -text svneol=unset#image/png res/pics/icons/HeartIcon.png -text svneol=unset#image/png res/pics/icons/LeafIconSmall.png -text svneol=unset#image/png res/pics/icons/MapIcon.png -text svneol=unset#image/png +res/pics/icons/bookIconSmall.png -text svneol=unset#image/png res/pics/icons/notesIcon.png -text svneol=unset#image/png res/pics_link/card-pictures_a.txt -text svneol=native#text/plain res/pics_link/card-pictures_b.txt -text svneol=native#text/plain @@ -308,6 +310,7 @@ src/forge/Gui_DeckEditor_Menu.java svneol=native#text/plain src/forge/Gui_DownloadPictures.java svneol=native#text/plain src/forge/Gui_DownloadPictures_LQ.java -text svneol=native#text/plain src/forge/Gui_ElixirShop.java -text svneol=native#text/plain +src/forge/Gui_Library.java -text svneol=native#text/plain src/forge/Gui_MultipleBlockers.java svneol=native#text/plain src/forge/Gui_NewGame.java svneol=native#text/plain src/forge/Gui_PetShop.java -text svneol=native#text/plain diff --git a/res/pics/icons/CoinIcon.png b/res/pics/icons/CoinIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..daea3a2c935ee021b10b4f9799a0d2cc0977d749 GIT binary patch literal 21139 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 T!uj9WB$lSCu1celUCjRg6xWnr literal 0 HcmV?d00001 diff --git a/res/pics/icons/bookIconSmall.png b/res/pics/icons/bookIconSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..2daed1d745d36081862c5c46bcec7c76d9c6321a GIT binary patch literal 11825 zcmV-1F3!=3P) zAq7ZCNUxJRX;U)2-0uzNzkSa+>+Z>(^1e5p`S5|vJd^wT{C?N(x}JFwf-zo8C-~nL z5*+Y|NUCbo>Vn>T{?CV+$ND|~D;F871KppmBxW1^JR>W2)6;+Y4B!AK_wKS?K3DMJ zklChldp+GkKG!RjNUj+SgQpK&YIFa0Z~ng&&;$9(NPqu;)@@(!fpgS?%5w!sn>Y*9 zZa~SYzu;s+IgzS0lrQ9?qO!i<;r3kOQtxF-y=TGY*A>>8=zlkie=4AL)0AuPe{j)v z(^uY$6Q6zriP8^!`avvN{}2o<*U?emNQ4p|RcJKevg*2Uu>n7xyoU4`6}?>DdwTlh zAp9xCVRh!~Sv%m?`pS&A>N5oWsf$^S~8Q{luy9)i=tnx71X%>%{`GlPBa~_IbQ@ z!$bYB7zbdpnBBWib@~3+0h$>vY&u^0MNHAJr6|7ChINl_!^H!yB0EzDk<1^|sAIo^S}(-%UZQjxG^CDn!TP+Mg~UspHeLNoO^Y}Tg6 zdi3|UVx+g-JYpGb>*{q3DCN8&9>-VebfD}^o%NrhX=4Itd4@dHPowDAeflfXdhQY) z*zgI|fildW5{tDD&c)Gv1<0O}O``K>Q&VdT25#2ilO1RA*t2)y*ug4T%t43`N&ug5 z2>2Wt#Hz|{@ggi#h@s&j^mR95sJ9>G#V1+YHp1uikoz`nqI$gnhHgE2+H3TKgXVKq zyQk9Sp(TVzZd7(UT>oPLt;+SkXX=b`dmsJdOBkrALiwJ*pnuedoLS@G7q7#&T@QP+#A zsv1~EZP{?Yl?s@iIYu|N`IAT&0P;vez zC=_DMo12b^#4PZ5O0?GAzzeVLz#~tsf^8@W+F%i8E(u~gB5=8UsJqdRuRbeA>&+9? zUoLbE43A#n^7#!CnV^jj&iNnDHkSRD0a`XOu<_G9FU1DMjfb)E8n{LWyk-wLVjjNw zZa-$u$;S9qcM*@tO!a4eMN4}pd=fvzOj?1xA8bQLk{VrRJ{I10C!tnCUwPpjaAi99 zt93A%`Y>!Xqpj6|FLu9*;qDgbg2KqRd(Y9vs&?e3F9O#mf=DU`N5zLSIu!olI*27= z(%k5#HN~Ic1$J^AE*sw5`U*Q1g;wE4O@scF*-pQ8Qo)5AO`W~}G(Zo|iwt!*JRQ4F zeoi=C6@0xd?4S-%FNKqNo_8L98=Icph~Pq$EL*EU*$W&C-n4qQ&V4{M+ zAQeVc@g!w@I2~+hLsM%%_(C~qu3kmy^%0099K5vk5q$pcXK3iOlHT4?IwK<;A+lHq zxf-~fVwjwE$Tj{D1}4JC;}TVboK{@kj`eHjAUq)(Pe1wy=FD4+rORf*)LV=9KH5i& zzA&d{sP#kBVBeb;uGU({9MEG+;vWwU^Z#he$8S@3*j_tp0k0QCBSUlfRh&6|1?!)C z0J4}UVykVT#grx{u%M4hgaU*qgCUXn!AYf%5DEM>;eaTF?Mz5qG9#_2+KG?8 z`T-{n|A2#gFCZZy5U+o>1E)_O!>%tsCrj@BggWhdY=8TKBMtrbT|8kEfA5aWY2x+R=8U2pp~uep-LTriDSJ6S8;pk&2QYT2eBA zp+O4_Lsobw7fy!_Lqj8MR~*<~9%8Y(=?hOSL+11acz{+k zXeEnQeoTi&qx7wvJIPyHo~Dm){Q}pHe}{(30<6AkGFsZKNMsX9J!1mg9gT#~_tEDpD9Q063|t)v*`rOohi#RyADL};iIav2{( zeM6+Tt(#g|#S$(b+CVjXXqZ69gC7_Usag%Lxrb242pu&HqTr_vB;J{a(D-n;91gtt z^e5=;=tX$YOcJ2Xr3IJwprxnqhYl;&jwzs(lY-Yz%1!)w&4#sP_423aop(&dwbF8= z#!9h%%@h=sjUxZfnNVaT!B$y8B#|0ge7Fz+5g};rwnD(BT*1lnSbaw>_MUFRlXG*4 zCMlXyjR?m2R`|1N0~HTWSui>ai_lnH$^4ZEv3Y4EeNqaQ%DixR1TZkTeJveu4fVio zGQ(_jLM|5)v4lejM+~1Y2(rLf_yyV|yp zjwztU=>hLN@yxn^2_=5ylXt$LEoKW$%+S60=yWzsv^aaI22Z{J9QYwR*b9CpqKs+u z(t#sLopT>9u}TY!3_w2<^JYBpIAk~tm;d0DK&;+a;l?O2E5Gxx#S-$u;6J=Ep!z&z|g$A|>; zo?u$YBg`uC0GAd$jn(8&FFs3|`^MGkzIheB-ZNtgXi28-)GH4!pR3>nql@LH(as?Z z4mM%->>QjZt45&44@+L#44-WjwCx70>QHQZ;$3Y0e8&*uVu!rKojAaJv6)^qthO3OMiY~w(g zI1b5^(-07A3i46kI95oeSr%s*&RS z*#c+-)UbKHm^gVFI~FCB_?WFQ0UR3(!bS`l25{qAE9%<^(Zh_YgHmF)d#Fq;!OWZ} z%*jteYkMEtF&DAR??dUHJ(#*_FDW?iXZqnAuMLh`9Dx@*y#Lo#f`1s${A5kk^qj=z z`&TU^<`xstO^c&;;()2-3Om7aR5vsrclHd3r)R-gS_n~m1lhNP*?x^037OewymSb2 zHg879#WGyla~b1fGI6NnG+8@!3DpLPQBqlgJ7!Hq>9um^BVFKgxlC7Nh|S7jd6q|P zMk5um3MDQl%U{)SdEE$)ihx?-2fNLTe(NYPxSVw7&J##V;9=AKc_=CAWYJ|Ds;)L6 zK*>Yyz2A^S-@ZdXdGDi(#ogZge`}xrFrYh<{nkIbdBxYsv6-L_8zIC^T{Z)_922;1 zKFY2%VAh(Y;3veud9@6pKnZ#4js0}(bnNv<++KN zi0IS_8EEdPhB`oj-kvthNYB89q9XXS))9zA2o8)O&cR+PW}>TSY2M-UF_XwaRCG8b zexarme{eo84 zmN5l%*97g4AHMeZD!D8a9FCi~EJIY_8v&O)in{7<*hU=4UB8r>Gann_U2qC0dGSv_ z(RW$;KKSXIxaW6sAV|nW$);z}6my}frHzH0hq%mB?Dr<5edMs&UY{L`$)eJppm znPM6#XH*X%PlbyGC5X~U5xH_9yd4AJh%Bh?vypw@pP}16`V?ZbEi6Gp&j?w&b`h;Dslk~W^?2po%^2=DgWB4Dsx6LSH9!34O4GoY0a}nOU9$L&8Nb}SdL;&!5$o&gC#h3nsjIdSVj6^s;%mr^ z3xyyr8yIK>H%y4CHJEZ zy?SU>9ITkMl%;Sx3N9Z-_V@`XYpeh~cEkmT5rL3Uy}l1K^QWPusS0vdNnJeyn3S0d z7dvTt4<8|`moB7Ymd~y?)!@cpH)bx6XUFqEo3;$ce>nw#GMK#g^4n+1^!B;`-d_J9 zKvQBwhjzUE!oHFvpy_{W+hC(&F1Uq?rTQ4 zHXJoAtdbmFgaiZ;oi>0rwKZe@)X8XWsfL}6Z=IipSppx1SX(=W2FScg^C?%#!6>og zz_}Ax^~iMSyG9U~zZS1N^9BqfB672`@Tt;P%b&*#(CUejK*I>ye%bSuu(GlW@9sE+ zFF$^m)HZcd&QKF3Wh6jf)rPp}7#2{2*(>@ns8HdZ_kJPIzPf>)IeZRt=0u>sa}YNh z4OsZ-;~+E?e|YdQObbdRIT4wZ@Rbk?JmB#-=xc94NyR0!^!FiB6^KwjDU4Pl2@H#( z1Loe_J}D|xjk?ZGESxfp!KT<-REpGuab$dK9_5L+=<^Qa>w=@$`ubAbD62=>;z#k( z8=v34LdkKPlS^8Rbz=r-(Kzuvfq`NBK7Q+ITq!QWBQNd2y>p^jPaBaGt-*xU82E7| z2#mOO$wAI0$|%k^b)c@L4V#|-J$Apf8`JZ`*@R+~#43hBu0RZHrN)wDIQP?O1o=Xd z6rKWqr4C%mgO9}qfqMkQ-9r#_INQv_c^}#=Gcgki-6KLGOreSax9QfRXLq*i(a^Yrw9g7b>1O|trw5p-1rK2l3+OEhsLoE-7gon*1N__wNFf8_p*qqu%SszI-Azi0RKj`AzVW zLUI1XPl(2!N3-*Dun(3s1l_+=maozKrE-^N3ikqz1zt0Un)dLRXu#vNkWo&R4NWdYoi4-?wkV>9S_gd zQe1D>qu^2%e)rTOa{OcsoxAKV1gHnu=C5P8*Nu<}31VmFgZcES5z@4I?MV3{ak$JRX~<`}6x-*4#3O z80qeZk)0jzhDc0m676Vm!cXRh(BNQDmdSh`H;!Dm^$F@AHoWo}+5N?FDv`u_1$pV-4H2*pbHC!h^28)M+50M z*lBfn1FqB!!0ZNW4ho@!hnOHWs@evStRZC6$}B1jl)~iW-M)?#5Tt<7OfbmL#xoB; zCLM@>CNpm0rck@-DbMlt@IBh6gDT zpBRnIv?z>=mLfAn1*g*sQ&&H1#!W)4X)ePdZ z`^S;s2o?RlVi01bjQKSS?p%?BDXTW&z@F21@2!u^%G-^T{??vn!=1P1H0vimqQPF=}JM-phrP`k?O{VFA{K*l-yM$WEgB3L5anXOF`$;K4iF z4&v=EzrpU0wqyUkz3-l@9eQre0Oe~*xPvch{rR0$97-$@NVR~a4}2dV0)dt^w)D|! zHEpKO_9({Uy5f(1a!;EE5VC&P5BRDY!S1uL6I?})5bd}-om;uVw zkd0F(gns$Vy76f396_&BjNu^@=448t7O6;GorMmW?3kWA2YeM}5se3%RgXibD={fq zj32JMNu+86HM&$VvQh0|hE68&v2;$*P&Eh>s{lo`KRI*sU+BS4=HT#=dUOqY5Sf_E zw5SMiQF0VtYsbXgOjs;dqVMdc)?pT(C`Fi3jIF;L2Z7bb3?`q6uN|KrZX(Za$f4$p z6;Om_qetJ1?{SLIenNF_NjL^7nW)cIUn4h7{BN>@+T5-9e3Q6O&_|v{tk{WvlZSQ4q!DWHPE`Y_s z0f#8TB{5Jd6CqZq$d#H8>3dJaK*mIM`&V^fwgOVV6;o%X<4j=-LZaf~9~ws3bfdMG zPC%uUV4$-PTQ*I?uAidh+&GN-#tyX9cYsQBSo?J# zD5xFx-!&dQz7X{d1{7RmnluXBJvR<%?B;S8o-Z7&LKK61UE{{H(jjh-#KQ07DaF;fh#Qj?8R9) zed;D&IMjj}Aso~VQT+VOQiydb^6vL%=m#&Xh14h7X82sJ5`8Sj*btyq z;n|0lp}*hAHhO|^B>~ja(}0u5p1`Sser$RBDEM+Y_{=w1MvPcBD~iMh2hchL2Q8fg zF!b~wE-f2DfqYMIOI_I4$8PkG8KBw0oXuHjaUZXpIUd!Q%5d?Byt^Z=kx6DJ**U!AArjGAYVSZp9NBa*`uhJgG&kSxoeG)pXC+ zESS9tq@^Wb=DKfKu9IPWOb`scy|{1nJks7{r8hfR>G=dmO`QcrKp<*M-n;hI&lOp} zRa$-%pqas(&+lE9|6r7exmwFGT5k5T1RVk&m&eBQ1h~W?1NLF6R45o2E3_JN+uR*E zR)(2t7GVF;^T?Z=Nv2JjMC*^ALFD2bH0zzL+AN4uyU=vA1>YX7$8+y|Ot(WQ0KsnPVf(0vQ$C@Foz7vnoDRf9$kEoMhk=dUz`RK)JaZXAxhO){s$XPfJ3ifAaHGqVKO{0YC2Nf~nh4&|6 z)9RfFRQ4`;edopFV+QD+EIHRt$RFJL=nCav=MZzhy>JofHc{q-iRg;NX zX>?$q7viuWq|M60FYkPYn6zkI>$E{BqnMZ;LTc)Lbk4L4{QSXJ$ek94*47?S0T(+@ zG~xM&v+>rO7s&jX6KGj;7w&uEb;yVj>o&ZMym4DuR8Ydi+Sk@=Wl^G)7_5|vIebJ1 zi=fH~ML?)OhK&X|Mw=iK5a@IvMCunvVKXB;Rf#EgsPX7sFZOA5oT!fuUUQBapw;Qp zapQvhYBsLOh1glBEOgWWlcZH;Wz(yCXzYlxg z`xcL^nSm{z9)m1k4HTku$o!<}scXm0_5osWkFqr5MPzX3Z84YeMNlLMz&v^lVKMBv zd4k9R|Gd&T2TE9wL@I=()l!lpb%!=DQa`&-25g2VTa^@vlJ2 z3BXA2Fxm&rq~F#@6+(ZAG$P2E_7ImBZiN?uNCP6{Cc$OzBpQvDy87&R<%2A|^zcy( z4xCzbsHo-Om;zcoUV8lPm*y`xe6SKr=S1Ps=^Lz!Em)K-hs%E=zPa3ov>-X*@VJ!6 z1T!@&30`wAzBzOi(Fx%=Qf$C$Z|uU*znRu8`0aSo{wD_H>c!NOh>mmWa!76;MSA7M5^Du$5d zJ}=M3^sfU>)lDo}Fdk{i;pAp3n<@Q4$Y<@f?Zpoe9x|A+^F-avF$0tl$QNhFDGU#- zpCbG6`%0`_w*<#_eT&sOGKe67TcpOz-&SG$!c-{ylu&9Eh|f;I_4CEddklgT7>kSN z`jC~9hNbJn@bTMUW62#U$e$X8qS7v0t?C4y>4?qcM1YhagcYSqtHJTYPQ+!Uf~$_k z+wbkiyzx&#DCtLX<_M1e(#wK!C=%1sasA2&8{r0sMG_X6xl9{7K&0(h!D2^t{tD)i z3ei!U2)o&g5!-ejA*P7WkKejJGe&?C{dx0W+L(QEQg$lZ^@BKh@(N@e5AK}k50zXA zy*LtE-#&ncmZy`5P%RCfH~~B>bF2q1A~ii6$BPHyGpaCdTo6uOJWC=1xb*p#X0nN- zMZtx3_~}A0U=icQu_B~J@sJwGAs)Mvrca%PQKG_{fB7@C!USZ*%>{>E!+j6M;f>cW z;?ZsQk&j*|qAk6@f=^6{j}k)PBSNSuis@Q1dgyt)`^^FJ+3PPdPqhqU|52RU|FO+H zGOXQOXt4cOIDZpRxSV|Q`U9DpQxXGdL|PVj8h`k_K6L&17ihvlak|!wvxm=M`IJNw z9vMm#RxN@4$U$sBcomOrS&0|79mLwj>rhsG61M(+^5oOA*w|H}v#txtQECL_%*Kvy z%CP6#9}p85j>qm_MzmT=qh_wd;eESMb+rbTu0#ZD_~tEU|;HG3}ZFB{7Ld*J-- z3Q}>dzsEc@Uo59mm6pW<6N>@A{NA;t174`bl`87M+Rp!QG2kqR^Z_~zTpV9Lpg z<>~bP%@3jC^bg?hm1r!{qJO9cUQYv7+?9gp1uO8==V!>$T72q_m`&5`mgU8Xnr~uWdV8GrDce03`=-c+p|YU^TB)Z z$%B6&Bf~a2DNPG*U@&G*NdP}-B24WD2#q4t+Z1^J^=)M1?G*i|vu)V1?J#-hxn;Eb#yPyP?PpN84_popQ*vW5Yj!+T330HFx(G*< zOzl#&g4kiGhl(u?qcIv zj(hVXAzAu6^c*ijaQZy_u>a2_d*(!{3h;wWBEa4q$8h>w11!T9te6##vo$^V`oyRB z@$)0(-i@>9_qz^Y|AA7tY#zkxbZG7E!HdsKL-t*(aIN?{IrMV}4GdJH{M`40?Rs-q zNr&S%8^pf}NGHJ}nN)go$)e??tn56!k4><{znn)(M%L|5O^140(A`{(h!}rZdV7gh zCZvhcTAVEF#9en#|A%<4^_>>kcx$v_vHQP zsp&+ZFbpLo5BdJ9?KCYu0KdOC50xbYICZWQ3E_c=j1*wY$H(#LGh5iCW5bGTqQ4yc z75jdhFc~9|BSf@mxk) z>RW1|n^e|!(;0aQ5HNvm=o-YD4KKjsld)$RA>eai8|fg!eGPP=rw#S3{fLSTMz`LG z82@x^-jaq`7B7m9T_orBU!>1JF(1&^;^^fb5TP3@9=!+UzZ4;3`a)dkBjm*=pQc~E zwE%UE!#I7Z2Vm_Q9UO%CkQ5v(DgaeRAu?n!@$k>lyI0M^*;8jB6=={@eia;%5LRy= z=G-+4+g>?G=1}`fSjB^c8Z=m z+X0!74<7O0i6^Fm!`esRW=76KuVdG)eZ<^%g+8`1505@}05|mxjM}`Ai3ALi26yBp zGf3qKjlGjdm2q^a{{m!UW;bqLMHp-Oikb#|y6YjF{7WsW%9JEjGo79&c){!R3`W+C zIJ?IbP^6NSZ+YUr386ykt=n7B**SvoaT*Xx;k4N?V)246m0@_)jpo(?=m(APvWEm z8~YAFgLB6(;Ky%E+3^MJeOJI_t4Dix6`p-48>b69V6=y^d?v%_Xb(oMeSph_h0`(- zpQFZ)KUKlse55Q0Saog_2c5@GL%=hqOErblvPw@LOQ}@QXx_BiBxE& zTvj>8Av1dz(BIh!jY5W~xCE3}RAHbGBr`6Th9vc2@|^i>C?dWlkcnjScO{?+ns+aJdi z(41sBPp%FaOpKqX2-k54huW#gZh+1|07Hg;xLDPAox$+agd!|F5ejh#Q7Q#g9qj<` z)^%W(jf|{HYHKc`{-z$+>zd%Clu)69285;|Ff;;EWf&w9Ic%c_bhcMBIBl$YyoAej zQ7#L;8kGX!K>;ufNifjs4=&X}F5$yvIft&nb`l@tPu+G7f^|VGdUz2NDM56k6z_g| z0AY#KAP{@WxCz{<$SA0dfGhW~)ZY)M&qF#I8fkkU_qMLI z)>nb>MW9@NaD*CgCCndjxrBgH9*>|$-vEcrh!N(A+>TM$*eK@`0YWsv@Ysh*Q@4TM z`Y|dI2N<@xkelp>m!6t~K~|YJuGS)QLKgY?yvta6>2ly-Dm(w~@%}df-8(nwqooVi zJoe>|Pl><3h{h)9Sgx`lMyF)KG6LR#IFz0-BQ#ou@C1Jn7%im&0S_Xf1bnU^%Ugbs zYMc5RU;86!gj>|r1-hnw12CCfxAC?$RvwfEz-7bhYzDHJ@e5%3Qu>y~_S z`uhvr^Zrpd{~@5K*JiJrHGl0-btOkha^5U@?$?uOY^(>|F8IquAU>9$ZT<*WBp^9H zlf;h;r+zXy#9}e*Hp-@)1QHd2DA)v|1bnZKY+ScJ#5Se`m;eG7ZU^p zDoH_c=eE+8(XIa!Kre5crU;A8?ud_#^1D`fndVGe$%L;T#*rcDJDPF5q6}`!D7@^C zR46B5+5j5tr$t&~7GgtFm@WlEtPw&eb%CQb0|FOea49PXK*asmw`L;G2;TbPH$WHy z!jTX*9RBq;Fi_T-ZVPKCGpxhS=xVIS%^TNI*Q7^lo1W-<>{P7{LU?pMQd3e`Mzo=) zr=L}#9_7UausXd%{z}n?;&%IQzW)4o0lKxeK0Noy*p&GnC=>#;*A^bFx?bZQGCSvJ zbm1~Tr3O*D7zmjz^t5#m(?}1sIfj{TSiu(y5T=b~?luwmv!_87#06I-A>L6TWefa3 z9|OX~gXg?`k0EZ|3Bv3Ep?n4i>@5_lX&xU9o44=@oQ9fHL?eCy6vLK*CC zeFuXoM`!N{^!hGbztO^Cj1x_IvoAhGstZ+#hWA$v{ilBA#eWFsg$+{)hj``*xG;)@ zqASmBKTj8?2XGxePKd+f&EpZy9efUFfk5czA0HM&BUIy{=0{^_*nsAN>+A>yI9L^g zhG-bDP!biEMWcg~5FD?AAlwUxz5fb_u)lA82IgUmI6MmP22{3TW!NfUDA+>qcHqLBt8K3U6z78va7V2-&H?oluNnfsnNJr(g2 zGNBHRVpEK@osZtW5#iQdA-5KFv9|QO;2vhS!eM5CwU4!p8(fhBB4sGE1P-*fRKR@e zqot?}^bG-L&R%9QCl+6P`axggkT>W*ySFg`^w;aItN=~F!JHuwkSPKQcZyOjn<&=? z%ah0Fkhr)c3b&hyw-#>O0EXL2Zr=|rlKMd#5&~UlEK!GsQ&uRTPAh9E28o$P0Smhv zu@nvqn{++R80zUHHjjWR0^%U^3xLBqiZ{0Y5s4X-nX49H&v!eUyUaBHeaFO?(497=Qqe-{t6EKxC><$4qv)C;F>EcLWSR9qeWXv^tFxYV&UbBG(Tifjx zQ?i^#xD;lmm-HKrw5O+!d94Tpg(ae_@B#wj*W$qbFEG$m{C!QAYu*1^K!3gN$`0gl zImqJiTuW3M?LwhUo2(9w;l?H1iY4&~4GRH>D}Z^Zo3&m)+UrY6Z&x!___N3&=HfbY z&L*a9k!iojuCM+Ci=pB5wqfrp|IYyW>$PoNY>3rCvWAVe442!N$`Scxse|If10#|M zmlpt`#GeEO$*Fy$0fw#yl$RAlB=ZAbmW&IReudNAH>bl$3;v%4^w(?S+%S%L)D<;k za?ka6xih&Ud0s?JVo*ZzRF>csOw7CCa*r@jWvH&IbZg}tZLPs)`u_&dU$4xF0515v zaRFMz9l_e*Wh#v>TPjv^Jd}rT_k7;gJ?e`YtM~d}3Fxoaf=RKFZkH>U%SFh@z@Xwv fyKPML=hpf^$Y!8*U?WW%00000NkvXXu0mjfHej@s literal 0 HcmV?d00001 diff --git a/src/QuestData_State.java b/src/QuestData_State.java index ed4c77f1c6c..9ab7102b51f 100644 --- a/src/QuestData_State.java +++ b/src/QuestData_State.java @@ -23,7 +23,7 @@ public class QuestData_State implements Serializable { private static final long serialVersionUID = 7007940230351051937L; int rankIndex, win, lost; - int plantLevel, wolfPetLevel, crocPetLevel, life, estatesLevel, questsPlayed; + int plantLevel, wolfPetLevel, crocPetLevel, life, estatesLevel, luckyCoinLevel, sleightOfHandLevel, questsPlayed; long credits; String difficulty, mode, selectedPet; @@ -43,6 +43,6 @@ public class QuestData_State implements Serializable { for(Entry deck:this.aiDecks.entrySet()) { aiDecks.put(deck.getKey(), deck.getValue().migrate()); } - return new forge.QuestData_State(rankIndex, win, lost, plantLevel, wolfPetLevel, crocPetLevel, selectedPet, life, estatesLevel, questsPlayed, availableQuests, completedQuests,credits, difficulty, mode, cardPool, shopList, myDecks, aiDecks); + return new forge.QuestData_State(rankIndex, win, lost, plantLevel, wolfPetLevel, crocPetLevel, selectedPet, life, estatesLevel, luckyCoinLevel, sleightOfHandLevel, questsPlayed, availableQuests, completedQuests,credits, difficulty, mode, cardPool, shopList, myDecks, aiDecks); } } diff --git a/src/forge/GameAction.java b/src/forge/GameAction.java index 7baae6b86af..336515b9c1f 100644 --- a/src/forge/GameAction.java +++ b/src/forge/GameAction.java @@ -1058,6 +1058,7 @@ public class GameAction { AllZone.GameInfo.setHumanCanPlayNumberOfLands(1); AllZone.GameInfo.setPreventCombatDamageThisTurn(false); + AllZone.GameInfo.setHumanNumberOfTimesMulliganed(0); AllZone.Human_PoisonCounter.setPoisonCounters(0); AllZone.Computer_PoisonCounter.setPoisonCounters(0); diff --git a/src/forge/GameInfo.java b/src/forge/GameInfo.java index 856be85c8a7..430212f19c1 100644 --- a/src/forge/GameInfo.java +++ b/src/forge/GameInfo.java @@ -7,6 +7,8 @@ public class GameInfo { private boolean computerPlayedFirstLandThisTurn; private boolean humanPlayedFirstLandThisTurn; + private int humanNumberOfTimesMulliganed; + private boolean preventCombatDamageThisTurn; public void setComputerCanPlayNumberOfLands(int n) { @@ -52,7 +54,20 @@ public class GameInfo { return humanPlayedFirstLandThisTurn; } + public int getHumanNumberOfTimesMulliganed() + { + return humanNumberOfTimesMulliganed; + } + public void addHumanNumberOfTimesMulliganed(int n) + { + humanNumberOfTimesMulliganed+=n; + } + + public void setHumanNumberOfTimesMulliganed(int n) + { + humanNumberOfTimesMulliganed = n; + } public void setPreventCombatDamageThisTurn(boolean b) { preventCombatDamageThisTurn = b; diff --git a/src/forge/Gui_Library.java b/src/forge/Gui_Library.java new file mode 100644 index 00000000000..bb9d230592b --- /dev/null +++ b/src/forge/Gui_Library.java @@ -0,0 +1,210 @@ +package forge; + +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.WindowEvent; +import java.io.File; + +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.SwingConstants; + +import forge.error.ErrorViewer; +import forge.properties.ForgeProps; +import forge.properties.NewConstants; + +public class Gui_Library extends JFrame implements NewConstants{ + + private static final long serialVersionUID = 2409591658245091210L; + + private JFrame shopsGUI; + private JLabel titleLabel = new JLabel(); + + private JLabel sleightOfHandDescLabel = new JLabel(); + + private JLabel sleightOfHandPriceLabel = new JLabel(); + private JLabel sleightOfHandIconLabel = new JLabel(); + + private JLabel creditsLabel = new JLabel(); + + private ImageIcon sleightOfHandIcon = new ImageIcon(); + + private JButton sleightOfHandButton= new JButton(); + private JButton quitButton = new JButton(); + + private QuestData questData = AllZone.QuestData; + + public Gui_Library(JFrame parent) { + try { + jbInit(); + } catch(Exception ex) { + ErrorViewer.showError(ex); + } + + shopsGUI = parent; + + setup(); + + //for some reason, the Bazaar window does not return when closing with X + //for now, just disable X closing: + this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + + Dimension screen = this.getToolkit().getScreenSize(); + setBounds(screen.width / 3, 100, //position + 530, 430); //size + setVisible(true); + + + } + + //only do this ONCE: + private void setup() { + sleightOfHandButton.setBounds(new Rectangle(10, 297, 120, 50)); + sleightOfHandButton.setText(getButtonText()); + //buyPlantButton.setIcon(icon); + sleightOfHandButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(ActionEvent e) { + try { + learnEstatesButton_actionPerformed(e); + } catch (Exception e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + }); + + }//setup(); + + private String getDesc() + { + StringBuilder sb = new StringBuilder(); + sb.append(""); + + if (questData.getSleightOfHandLevel() == 0) + { + sb.append("Sleight of Hand Vol. I
"); + sb.append("These volumes explain how to perform the most difficult of sleights.
"); + sb.append("Your first mulligan is free."); + } + else + { + sb.append("Currently nothing to study at the Library.
Please check back later."); + } + + sb.append(""); + return sb.toString(); + } + + private long getPrice() + { + long l = 0; + if (questData.getSleightOfHandLevel() == 0) + l = 2000; + + return l; + } + + private String getButtonText() + { + return "Learn Sleight"; + } + + private String getImageString() + { + return "BookIcon.png"; + } + + private void jbInit() throws Exception { + titleLabel.setFont(new java.awt.Font("sserif", Font.BOLD, 22)); + titleLabel.setHorizontalAlignment(SwingConstants.CENTER); + titleLabel.setText("Library"); + titleLabel.setBounds(new Rectangle(130, 5, 198, 60)); + this.getContentPane().setLayout(null); + + /* + potionStatsLabel.setFont(new Font("sserif", Font.BOLD, 12)); + potionStatsLabel.setText(getStats()); + potionStatsLabel.setBounds(new Rectangle(10, 65, 100, 15)); + */ + + sleightOfHandDescLabel.setFont(new Font("sserif", 0, 12)); + sleightOfHandDescLabel.setText(getDesc()); + sleightOfHandDescLabel.setBounds(new Rectangle(10, 80, 300, 150)); + + sleightOfHandPriceLabel.setFont(new Font("sserif", 0, 12)); + sleightOfHandPriceLabel.setText("Price: " + getPrice() + " credits"); + sleightOfHandPriceLabel.setBounds(new Rectangle(10, 230, 150, 15)); + + creditsLabel.setFont(new Font("sserif", 0, 12)); + creditsLabel.setText("Credits: " + questData.getCredits()); + creditsLabel.setBounds(new Rectangle(10, 265, 150, 15)); + + sleightOfHandIcon = getIcon(getImageString()); + sleightOfHandIconLabel.setText(""); + sleightOfHandIconLabel.setIcon(sleightOfHandIcon); + sleightOfHandIconLabel.setBounds(new Rectangle(300, 135, 128, 128)); + sleightOfHandIconLabel.setIconTextGap(0); + + //String fileName = "LeafIconSmall.png"; + //ImageIcon icon = getIcon(fileName); + + sleightOfHandButton.setEnabled(true); + if (questData.getCredits() < getPrice() || questData.getSleightOfHandLevel() >= 1) + sleightOfHandButton.setEnabled(false); + + quitButton.setBounds(new Rectangle(140, 297, 120, 50)); + quitButton.setText("Quit"); + quitButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(ActionEvent e) { + quitButton_actionPerformed(e); + } + }); + + + //jPanel2.add(quitButton, null); + this.getContentPane().add(sleightOfHandButton, null); + this.getContentPane().add(titleLabel, null); + this.getContentPane().add(sleightOfHandDescLabel, null); + this.getContentPane().add(sleightOfHandIconLabel, null); + this.getContentPane().add(sleightOfHandPriceLabel, null); + this.getContentPane().add(creditsLabel, null); + this.getContentPane().add(quitButton,null); + } + + void learnEstatesButton_actionPerformed(ActionEvent e) throws Exception { + questData.subtractCredits(getPrice()); + + if (questData.getSleightOfHandLevel() < 1) + { + questData.addSleightOfHandLevel(1); + } + QuestData.saveData(questData); + jbInit(); + } + + private ImageIcon getIcon(String fileName) + { + File base = ForgeProps.getFile(IMAGE_ICON); + File file = new File(base, fileName); + ImageIcon icon = new ImageIcon(file.toString()); + return icon; + } + + void quitButton_actionPerformed(ActionEvent e) { + QuestData.saveData(questData); + //new Gui_Shops(); + shopsGUI.setVisible(true); + + dispose(); + + } + + void this_windowClosing(WindowEvent e) { + quitButton_actionPerformed(null); + } + +} diff --git a/src/forge/Gui_Shops.java b/src/forge/Gui_Shops.java index aa6e9d98d1d..bcfdb7916f7 100644 --- a/src/forge/Gui_Shops.java +++ b/src/forge/Gui_Shops.java @@ -35,6 +35,7 @@ public class Gui_Shops extends JFrame implements NewConstants { private JButton plantShopButton = new JButton(); private JButton healthShopButton = new JButton(); private JButton bankButton = new JButton(); + private JButton libraryButton = new JButton(); private JButton quitButton = new JButton(); private JPanel jPanel2 = new JPanel(); @@ -63,7 +64,7 @@ public class Gui_Shops extends JFrame implements NewConstants { Dimension screen = this.getToolkit().getScreenSize(); setBounds(screen.width / 3, 100, //position - 286, 630); //size + 286, 700); //size setVisible(true); } @@ -124,7 +125,18 @@ public class Gui_Shops extends JFrame implements NewConstants { } }); - quitButton.setBounds(new Rectangle(45, 445, 180, 77)); + fileName = "BookIconSmall.png"; + icon = getIcon(fileName); + libraryButton.setBounds(new Rectangle(25, 360, 180, 77)); + libraryButton.setText("Library"); + libraryButton.setIcon(icon); + libraryButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(ActionEvent e) { + libraryButton_actionPerformed(e); + } + }); + + quitButton.setBounds(new Rectangle(45, 530, 180, 77)); quitButton.setText("Quit"); quitButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { @@ -133,7 +145,7 @@ public class Gui_Shops extends JFrame implements NewConstants { }); jPanel2.setBorder(BorderFactory.createLineBorder(Color.black)); - jPanel2.setBounds(new Rectangle(20, 50, 230, 375)); + jPanel2.setBounds(new Rectangle(20, 50, 234, 452)); jPanel2.setLayout(null); this.addWindowListener(new java.awt.event.WindowAdapter() { @Override @@ -146,6 +158,7 @@ public class Gui_Shops extends JFrame implements NewConstants { jPanel2.add(plantShopButton, null); jPanel2.add(bankButton, null); jPanel2.add(healthShopButton, null); + jPanel2.add(libraryButton, null); //jPanel2.add(quitButton, null); jPanel2.add(petShopButton, null); this.getContentPane().add(titleLabel, null); @@ -205,6 +218,13 @@ public class Gui_Shops extends JFrame implements NewConstants { dispose(); } + void libraryButton_actionPerformed(ActionEvent e){ + Gui_Library g = new Gui_Library(this); + g.setVisible(true); + + dispose(); + } + private ImageIcon getIcon(String fileName) { File base = ForgeProps.getFile(IMAGE_ICON); diff --git a/src/forge/Gui_Treasury.java b/src/forge/Gui_Treasury.java index 7aa64c74654..475acb7a999 100644 --- a/src/forge/Gui_Treasury.java +++ b/src/forge/Gui_Treasury.java @@ -102,12 +102,19 @@ public class Gui_Treasury extends JFrame implements NewConstants{ sb.append("Gives a bonus of 20% to match winnings.
"); sb.append("Improves sell percentage by 2.5%."); } - else + else if (questData.getEstatesLevel() >= 3 && questData.getLuckyCoinLevel() == 0) { - sb.append("Estates Level Maxed out.
"); - sb.append("Current Level: 3/3
"); + sb.append("Estates Level Maxed out.
"); + sb.append("Lucky Coin
"); + sb.append("This coin is believed to give good luck to its owner.
"); + sb.append("Improves the chance of getting a random
rare after each match by 15%."); + /*sb.append("Current Level: 3/3
"); sb.append("Gives a bonus of 20% to match winnings.
"); - sb.append("Improves sell percentage by 2.5%."); + sb.append("Improves sell percentage by 2.5%.");*/ + } + else + { + sb.append("Currently nothing for sale at the Treasury.
Please check back later."); } sb.append(""); @@ -123,18 +130,27 @@ public class Gui_Treasury extends JFrame implements NewConstants{ l = 750; else if (questData.getEstatesLevel() == 2) l = 1000; + else if (questData.getEstatesLevel() >= 3 && questData.getLuckyCoinLevel() == 0) + l = 500; + return l; } private String getButtonText() { - return "Learn Estates"; + if (questData.getEstatesLevel() < 3) + return "Learn Estates"; + else + return "Buy Coin"; } private String getImageString() { - return "GoldIconLarge.png"; + if (questData.getEstatesLevel() < 3) + return "GoldIconLarge.png"; + else + return "CoinIcon.png"; } private void jbInit() throws Exception { @@ -172,7 +188,7 @@ public class Gui_Treasury extends JFrame implements NewConstants{ //ImageIcon icon = getIcon(fileName); learnEstatesButton.setEnabled(true); - if (questData.getCredits() < getPrice() || questData.getEstatesLevel() >= 3) + if (questData.getCredits() < getPrice() || (questData.getEstatesLevel() >= 3 && questData.getLuckyCoinLevel() >= 1)) learnEstatesButton.setEnabled(false); quitButton.setBounds(new Rectangle(140, 297, 120, 50)); @@ -196,7 +212,15 @@ public class Gui_Treasury extends JFrame implements NewConstants{ void learnEstatesButton_actionPerformed(ActionEvent e) throws Exception { questData.subtractCredits(getPrice()); - questData.addEstatesLevel(1); + + if (questData.getEstatesLevel() < 3) + { + questData.addEstatesLevel(1); + } + else if (questData.getLuckyCoinLevel() < 1) + { + questData.addLuckyCoinLevel(1); + } QuestData.saveData(questData); jbInit(); } diff --git a/src/forge/Input_Mulligan.java b/src/forge/Input_Mulligan.java index 7c3c9de6ea8..7ef03eacc94 100644 --- a/src/forge/Input_Mulligan.java +++ b/src/forge/Input_Mulligan.java @@ -32,11 +32,21 @@ public class Input_Mulligan extends Input { for(int i = 0; i < 100; i++) AllZone.GameAction.shuffle(Constant.Player.Human); + int newHand = hand.length - 1; + AllZone.GameInfo.addHumanNumberOfTimesMulliganed(1); + + //System.out.println("Mulliganed this turn:" + AllZone.GameInfo.getHumanNumberOfTimesMulliganed()); + + if(AllZone.QuestData != null) + { + if (AllZone.QuestData.getSleightOfHandLevel() >= 1 && AllZone.GameInfo.getHumanNumberOfTimesMulliganed() == 1) + newHand = hand.length; + } for(int i = 0; i < newHand; i++) AllZone.GameAction.drawCard(Constant.Player.Human); - if(newHand == 1) end(); + if(newHand == 0) end(); }//selectButtonOK() void end() { diff --git a/src/forge/QuestData.java b/src/forge/QuestData.java index f967040c158..a0da5a19a19 100644 --- a/src/forge/QuestData.java +++ b/src/forge/QuestData.java @@ -58,6 +58,8 @@ public class QuestData implements NewConstants { private int life; private int estatesLevel; + private int luckyCoinLevel; + private int sleightOfHandLevel; private int questsPlayed; @@ -259,6 +261,8 @@ public class QuestData implements NewConstants { data.selectedPet = state.selectedPet; data.life = state.life; data.estatesLevel = state.estatesLevel; + data.luckyCoinLevel = state.luckyCoinLevel; + data.sleightOfHandLevel = state.sleightOfHandLevel; data.questsPlayed = state.questsPlayed; data.availableQuests = state.availableQuests; data.completedQuests = state.completedQuests; @@ -687,6 +691,26 @@ public class QuestData implements NewConstants { estatesLevel+=n; } + public int getLuckyCoinLevel() + { + return luckyCoinLevel; + } + + public void addLuckyCoinLevel(int n) + { + luckyCoinLevel+=n; + } + + public int getSleightOfHandLevel() + { + return sleightOfHandLevel; + } + + public void addSleightOfHandLevel(int n) + { + sleightOfHandLevel+=n; + } + public int getQuestsPlayed() { return questsPlayed; @@ -749,7 +773,12 @@ public class QuestData implements NewConstants { } public boolean shouldAddAdditionalCards(boolean didWin) { - if(didWin) return random.nextBoolean(); + float chance = 0.5f; + if (getLuckyCoinLevel() >= 1) + chance = 0.65f; + + if(didWin) return random.nextFloat() <= chance; + else return false; } @@ -807,6 +836,8 @@ public class QuestData implements NewConstants { state.selectedPet = q.selectedPet; state.life = q.life; state.estatesLevel = q.estatesLevel; + state.luckyCoinLevel = q.luckyCoinLevel; + state.sleightOfHandLevel = q.sleightOfHandLevel; state.questsPlayed = q.questsPlayed; state.availableQuests = q.availableQuests; diff --git a/src/forge/QuestData_State.java b/src/forge/QuestData_State.java index 1f3fabb330a..f6da9f9884e 100644 --- a/src/forge/QuestData_State.java +++ b/src/forge/QuestData_State.java @@ -24,7 +24,7 @@ public class QuestData_State implements Serializable { private static final long serialVersionUID = 7007940230351051937L; int rankIndex, win, lost; - int plantLevel, wolfPetLevel, crocPetLevel, life, estatesLevel, questsPlayed; + int plantLevel, wolfPetLevel, crocPetLevel, life, estatesLevel, luckyCoinLevel, sleightOfHandLevel, questsPlayed; long credits; String difficulty, mode, selectedPet; @@ -38,7 +38,7 @@ public class QuestData_State implements Serializable { * This constructor is used by QestData_State in the default package to create a replacement object for the * obsolete class. */ - public QuestData_State(int rankIndex, int win, int lost, int plantLevel, int wolfPetLevel, int crocPetLevel, String selectedPet, int life, int estatesLevel, int questsPlayed, + public QuestData_State(int rankIndex, int win, int lost, int plantLevel, int wolfPetLevel, int crocPetLevel, String selectedPet, int life, int estatesLevel, int luckyCoinLevel, int sleightOfHandLevel, int questsPlayed, ArrayList availableQuests, ArrayList completedQuests, long credits, String difficulty, String mode, ArrayList cardPool, ArrayList shopList, Map myDecks, Map aiDecks) { this.rankIndex = rankIndex; @@ -49,6 +49,7 @@ public class QuestData_State implements Serializable { this.crocPetLevel = crocPetLevel; this.life = life; this.estatesLevel = estatesLevel; + this.luckyCoinLevel = luckyCoinLevel; this.questsPlayed = questsPlayed; this.availableQuests = availableQuests; this.completedQuests = completedQuests;