From b12e7106ed7c2b627ee5e98c767bc4ff188afcd9 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Mon, 5 Feb 2024 23:05:56 -0500 Subject: [PATCH] Add new player and rival sprites and trainer titles --- public/images/trainer/player_f.json | 41 +++ public/images/trainer/player_f.png | Bin 0 -> 725 bytes public/images/trainer/player_m.json | 41 +++ public/images/trainer/player_m.png | Bin 0 -> 740 bytes public/images/trainer/rival_f.json | 41 +++ public/images/trainer/rival_f.png | Bin 0 -> 721 bytes public/images/trainer/rival_m.json | 41 +++ public/images/trainer/rival_m.png | Bin 0 -> 743 bytes public/images/trainer/trainer_f_back.json | 41 +++ public/images/trainer/trainer_f_back.png | Bin 0 -> 1096 bytes public/images/trainer/trainer_f_back_pb.json | 83 ++++++ public/images/trainer/trainer_f_back_pb.png | Bin 0 -> 2706 bytes public/images/trainer/trainer_m.png | Bin 4256 -> 0 bytes public/images/trainer/trainer_m_back.json | 41 +++ public/images/trainer/trainer_m_back.png | Bin 0 -> 1077 bytes public/images/trainer/trainer_m_back_pb.json | 83 ++++++ public/images/trainer/trainer_m_back_pb.png | Bin 0 -> 2944 bytes public/images/trainer/trainer_m_pb.json | 272 ------------------- public/images/trainer/trainer_m_pb.png | Bin 1784 -> 0 bytes src/battle-phases.ts | 20 +- src/battle-scene.ts | 19 +- src/data/trainer-config.ts | 21 +- src/trainer.ts | 5 +- 23 files changed, 450 insertions(+), 299 deletions(-) create mode 100644 public/images/trainer/player_f.json create mode 100644 public/images/trainer/player_f.png create mode 100644 public/images/trainer/player_m.json create mode 100644 public/images/trainer/player_m.png create mode 100644 public/images/trainer/rival_f.json create mode 100644 public/images/trainer/rival_f.png create mode 100644 public/images/trainer/rival_m.json create mode 100644 public/images/trainer/rival_m.png create mode 100644 public/images/trainer/trainer_f_back.json create mode 100644 public/images/trainer/trainer_f_back.png create mode 100644 public/images/trainer/trainer_f_back_pb.json create mode 100644 public/images/trainer/trainer_f_back_pb.png delete mode 100644 public/images/trainer/trainer_m.png create mode 100644 public/images/trainer/trainer_m_back.json create mode 100644 public/images/trainer/trainer_m_back.png create mode 100644 public/images/trainer/trainer_m_back_pb.json create mode 100644 public/images/trainer/trainer_m_back_pb.png delete mode 100644 public/images/trainer/trainer_m_pb.json delete mode 100644 public/images/trainer/trainer_m_pb.png diff --git a/public/images/trainer/player_f.json b/public/images/trainer/player_f.json new file mode 100644 index 000000000..d0dc9eaaa --- /dev/null +++ b/public/images/trainer/player_f.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "player_f.png", + "format": "RGBA8888", + "size": { + "w": 70, + "h": 70 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 27, + "h": 70 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 27, + "h": 70 + }, + "frame": { + "x": 0, + "y": 0, + "w": 27, + "h": 70 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:61e0fa9a991ad072a72407f92271121d:748b57cb41fc465527ac9fce58c10ad0:001f13d438089d8d7bc52849cc088fa0$" + } +} diff --git a/public/images/trainer/player_f.png b/public/images/trainer/player_f.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f9169d6aa14e5ad72d564f8955b45ed5cb9842 GIT binary patch literal 725 zcmV;`0xJE9P)%24gkWawe+EO7nZYq3LYPia24m|D@&w9R+p>5V-E{0YvtBo3W%Q$5 zZ!509Ms|j4l=b`ey+WyMbeQo$LOGe?kRghG*SA}hH9nZhs6^ZnB4CUTZW$g-RYpb} zgF|}fO&muUk(|+ETsx*XPbTksX8cCBI1*6`cKv?udln0Gbf?Z(wIYo&rdyOG)66k4 zAaXEyr>IPfgzpndv%KW_{$j>6fsvqn?BotcTQe)8LxF|KxIS@K5JezSD(aN-v7=?+ zAV)ZeQ%XriCmqA1ccytd&BUm}^GNez3}H|c7nq0000&P)t-s00000 z0018yCNVmEHYXrFHb+r&%~5=YSXgLe9V=)^ICwxng=A2Zum7lkaHy!Tv+?!7NJ!YA zcRH3c;Y7@|{o?bz?YG!A)H-7U&A+RpX@3MB8Qq~g9 zu&hlk@kec0R)~a3podZ-k#v+LhBy;xCFCL!Nf)XqO;btLX=RLRcpxPXK-k$L%|xxc zX!{=aT`W*QJ7f+N3UeVSB1xdHkHS!9>Ci1rD5V_7$5+`8owR~LT;etWO-oU@5BmSVg&y>tBOX?yRMjM;dokne3# z;HfP^XgdXy_rMThO1%`shxAVq|!kKce5*K*iPsMUX;76=< zf|K%N((x)nIp8uJlKAw1*M3RlvcT}0X zR4*4bQ#CqUlo5*?=IYwu5{l%8`Z(0a>s+OrK(gY;&XmxkT573Lc-8o=fF%KPYj|04 zmc!XqvRZ2WH}jR}EY(>q49|DnK`N;((rJ=x!D$kJnIl2_(n=EPjArzMnq^rNlpYtRIb(55#rb&0`k4q|Qn)HOGO2bFqe^Nb1$6omG zX?~YLj`bnQ645hK9;8Id@ElzCkEv72&-)3~i()@z`JPHMr1lv6er2=FkTma%RKhnj WzbES#M}`Lg0000-2ea6USTKcOjnk&D2q%soVgMY6T)-M zI)ZBes5QoFcjiIVdIu9L85PpWHP-uGEf*6t%v~XJw59GrFd_w8cjl4fKq67Cvn2?+ z0w*2{95MtMU5T-4lQB%4(d8wIz3Z zmSxE>FwXCpJEs7#MjVv$ad=wM}MSe4e-TTa?P)nq0000*P)t-s00000 z0018yCNVmEHYXrFHb+r&%~5=YSXgLe9V=)^ICwxng=A2Zum7ZfXQ+U1sHm{B@%6w+ zNZ6ow=;-+P(76Bq|3O=0vj6}90d!JMQvg8b*k%9#010qNS#tmY3ljhU3ljkVnw%H_ z00KKnL_t(o!`;}+cIzMv1<)LfC;>a61^53ywG!BQ+};U@Q8h^>-s?!g;P`U+Ro2?e zoWi%F*Gg#xX8Ri z9k~>AgQ}R-O955NRwoIRz*En_s*1#u!uLmJD6zEb)+Tb!`~LBr*Ig%B2*j0lAdGJc za`PhJgGh0Y-7~*luV-r^5J4ivxEsR@wGS#^{-lUfN+!mbv+>^a&iKoh>*17=C>f6m z`DN*pd?~dHlv=cT4~B@gt(QW4lRky=szVZr+B$qnk`cARKIy0mImZwck>p0|fu7V6 z$sL)h(YZw#v3SF@t~IxjNN#8!N8NaxtCSN+R{YqR5}H&?Ej5bH8a<@=Pzn$rwGA(o z@#7B1u9DPJ+kaCrXQ|F|VR+v44pK>VkxrB37MvylW{!mRp_L@k5zXkEnD=Gs>pV$8y-3PX)1+7Ek4q|Qn)D7$m4=VJf24YjE<+NZ z=C2auSRay>Qp$UzG)Re*@ZMbapQ%Gi@6RWw4~qTN!q2H?hSV;@uU8uV4^jV<6z^1Y Z&<{pAC$`inlDYr@002ovPDHLkV1lz}QM&*D literal 0 HcmV?d00001 diff --git a/public/images/trainer/trainer_f_back.json b/public/images/trainer/trainer_f_back.json new file mode 100644 index 000000000..13f7c7489 --- /dev/null +++ b/public/images/trainer/trainer_f_back.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "trainer_f_back.png", + "format": "RGBA8888", + "size": { + "w": 100, + "h": 100 + }, + "scale": 1, + "frames": [ + { + "filename": "1", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 49, + "h": 100 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 49, + "h": 100 + }, + "frame": { + "x": 0, + "y": 0, + "w": 49, + "h": 100 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:37094505617acfd230145dc66672da10:6e3e539898ea6ace66caac40253fe1d9:10a006cb9dc3d266b3827d6d92b8ea03$" + } +} diff --git a/public/images/trainer/trainer_f_back.png b/public/images/trainer/trainer_f_back.png new file mode 100644 index 0000000000000000000000000000000000000000..8c528ad5610be95554b96f543f230ccef0c397bc GIT binary patch literal 1096 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 M07*qoM6N<$f_u*&Z~y=R literal 0 HcmV?d00001 diff --git a/public/images/trainer/trainer_m.png b/public/images/trainer/trainer_m.png deleted file mode 100644 index 5d8254e1174f1f434033073f450ebdbd7cd8a2f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4256 zcmV;R5MS?!P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000HcNkl3{BR8%78x^bI2+#(}$UFxV>R$bgirmCqbZjo7aagDoi zMMg%(-NF zH|M^9KOg_e)8hA+Z{&XuMgj4?=|w^!eb+H{K*~0@ocy&A0>6I#AXf`UzuR?pybTcD zxL9NEhX9KJ0IS8OS3sSC`TFoI!=+nXlxA&#l;Hrte6>^1_iwMg!09Y2QAYEHFgk?q zO>-D+pm4FSJe0ZC0svr`6kqP{5?{jjhgF4nD~yk}+gU0od`xF{@?(P1|S z-o}|U5^zG+i)uPA@aBG40HPo@sba5MwD@w>b&T#hT&%(9Fn>N2uu_U{x@u0Dr8-kg zIVF9!8=@=-E>$l28?v6of6Y&!CCiwRqdi6tpX3! zu#qmaZkmT~4u_4$08ik1(+aGs0i&y?PAz(x7HJ4-*hrED)UfxbVx9m1JkLF;YR;w@ z9g6N&w!yGm?QaKo9OLEn3VNj`)x5nv5h-P50Xmer0&mC|k|1b2ej9jaZ3zysFL(D+ zsiO`?IN23$s#cj=W+A5VIL4ZD{QmSexw;tBWO{$2yHB0j2E)`ct9{mZeAxxwhfYd} zEXNv^o+~O!ITDN@gvcIgh&tE&Pk^Zdq=TX~OXC(55X>r8!{MrzG0IuNe7U=q3W9nD zvWY|Pa$FP&!M=XeY3E6p5{*t=;o4uC>w8sFN-%h6lK$G52lWF zDnPw}QIkV!;%yZX<%>T!9&rK6D6EMG%67BtuH(<34=9vUP)hS4JEtaME($JFcBQgf znnos;ZNajw&d0XB2VWfy0JwbD44P5)dg@PLHNc>ZW}8~ut@hACSZyU&}0PI>dXRl*~5J(~)^VC7)4PlsT7-p7%0Kjr?D>0^zVsLN{ zwdj^ae(e;}2^pM_VYS%g3bLHr+G6k&su`REidviwC5`HppaW9hY06d?t(dk-X|gmD zwLw>h^Il8Qm1<6+n5Mg`zgKplBp6~e$yx)$q>XTz&e63?bsBshAMRx~ATwc1vyCTx zK$b*4q?CjZBC}#IZB&hdqdzZfo^5Oiksn7tz7QgxNNmy=j}Q0q*bVbRmr(Sr$aJ|t z>^TL6=uoJc?sX|0(!%B#jYe=nR_K>>@8^Hdt%d8hiwbZ7{4k z$C~q6DDT}J5gC=N5-dFgOAkpfgyr0}hN8o%8^r0?I1j>pgReUIAs0}F)5^61uayeR z*V9W@QffKIg`|{3AM%UHC;*yFy}X_|#+p=far-fcnEIaq1*_t2EfvKtP3LP=%xam6E5WjcVASc9eGEz#zS4KL|Gn@h$BE?dSuO*JX!yW~xEP|ih@iIj7(QuiiA zxp{)4Qh&CH6w>j!$3@JLoTt-cTLCjs zgG;lKm+Og+U>)6dP0*l1MiS z2Sit>lM;_Us69-Qh{_t?ldJTGRDx9}Zx59OVu?zr;K*e9+$6gx_0mdQDy$A_P+r}L zM@XFHENNYemu9lY3aEr$9hT?hiPTZ(9a2`PF5D_@ys+Fts!}czLvKkIF!)O&2b8Lm z3$%;mLzT-UjR(0(sgshfUO-RD`Y31#VNzC!Lz)7lgxE4dyL((IU<#2^!m^%9ACW6X zl*Ck%G$}x$^pk31O{v@@ZOwz5q&If^+|hEcK{{;uz){lft|niY#MD@t)+$ZdLqSrd z`fjYJB-GYRh0;E`uQWjW9it1%e%vUz=k{y}+Xrgw)>EuxRYD=2#9+!UlOFx0I|c1e zh?nYLQ9c|5}H~ggmU^8b~7Tq}~eHH}>=)QqD*LAT~C3*1007;$8tWc>s*L57rTXLrWjwW5p zu~^R_ASjq_5-by>IO$EnnZ78cD)~~9<8Ukuij^i13Hp!%rVp$T9gHvqlH(X686=kq zlDt&MfBK5V)iue>RGm0U>)rH@$bI^r5TE%^k{<<6sH0q^pCN@yY5FO-UZ@X~_XrB( vLW-Hbk0C`!pYkDCx=mihh59^soBUO_WabImp?L^sW}{jD%N_BHQ}nAE|9+BD=g(`Ff7 z^Gxn+k|+~yiKusMkB)FD^=u*C&?c=QLL>$bsT&ibD|!$2Js0J9w)s(2cL zZ0_S!a5n}FFiqCA3dYTBr_#0o^Nj64xaM8cA=j!yW4l%R7d{i%1h!4!7M*0H!e4kQ z6!f&#X#t2cV4@BV1e?RQN+MX@@2PEnFh#iRf-4gbHw-IPf&p0xkB^5^!e-JOO6iX* z!xKATR3EW)=h+RGfyKkycQ%!JJaoIriWcEdcwf|+3)qL3Txav~(Dn&ko<+dIiI-OK z6rz1GJo6wu_PquA_aiyjEzUh)>BO7LE_G-#vXRT|JAwONmnKdHc0FL~yUk#Qtk%fl z@s4BG2G#a?eJ@P6mfdo|_8c-U{7|%GueD>}Z|UmSOFuOJP8uhBJKU&c5p2UX=h4sn zV;;4S)rb4W2k-va7wApRDtBeTwt9ca1sg0yYaSllv<%!+yvW+$Y|#xz+Oa~(<$(h* zTCEAUDhD08wkk@l>sanlXM-*j3L3&FdArGC#^d4H$73Yc&NSD?K0IRo?nfmRxvwx4 z8OPLR-83oZE)Vs-?MFVAL#d!&at0L1$RcdaHTI@mu|!9}Dc}_suTH3GnU8WOm9{V0 zz`m27M%&ZH9!n!+8IS#JN- z)%4iiNZ7e)yf#?#4BV2EMi%=SPT+u`483_j+wc zCCUcHHwrtZZ1S?!VhkeNmCg8ShWx&r( zu94A&NX=I`q8bkMF^qU^z&*&bU2=6{z=y;wuOtaL)WJH34 zt((DIExkR#6h{r>12(uL&6M3J4#I7*?-*6l#ka7FZ|wKFy__g{cR<&Ko3Aj^WCP!1 z%9)4%e!nY^;2PNUT4QNt(_O~+%XRIqsKBuYTw(|8I@Vl!0jFscP6}*uvnsjRv__l_ zEV_OOtm)#7tFi1R{YK(`F6IP|SURU@_EQYk!@5u1&v!H~aJPgT!;rEc+Bh=1G_bDG2+~?E398MK;?$X1Uv$U*|%Lm>3 zD7$uXqK$7WpnQ;ZODtVWe^lF!#p-ph!Q~*2!!fq#n*Un0%yx{^P21a-U6xf1R=5ca zUGBD4uIUy6E`*Ceo@Sj(v8HY*++T3bKi6_w{=0Q<1j}MZ^qiZ9yX1;++g3LIN-ncm zK|}bZ#OrIgzBQ{=H~KvfyIHubW(5r`-FwR2LvY%voVw@=xT33qn-nx)6K+)r;QEuetKfzL8&_R|TXD7@ar1CDxm`GmPrBTgBR8&KXe0RCz)&dW zB;ZTjQn(unx}xje{=v;*RiRZayUPKqD#g51!B@HA-Ma#A4^KEYAOD&w`{>_rBlsI` zDd0c%I{451e>;vYVI0*$R_63YlvDc$+8yyFmNyjO8vOJ%7lLZn{-m$xm*xl}zi`jf@kl*`qsax0@y_wG3CbDlK-(M5okrhpXB% z0BEsO1`~044;H|5zXIl5Y8~HA4=!!Bgz6|~H0yYGK-h%!!Y;e6D^qSYguB|fDMI7M zh?kwa!*wiYaYM8_sCS!QYO{Ts#SO_u1${+}%Cb*&A>iugPASjV!E!TJ-4nL!iuuJ1 z`^_g%sY&?_=&qwEBa`+msb5Yf8}N_i$Eo>cZeR&!}3gQcWmj4mh5| zVw!$eP4?TOlAaK=sYSXxxk~xPDplbeQVqLqZlR-OP~1-ed?Dy%bv9nRlb}gcZQaQ0 z20;jyzBOPfW{BNh?BPw4)+@noA2c+Ou~D`yyGjwPPQmn5DBLZ}9LSvY@$!zLGcc<5 z>t>*XTggpR);XX0B#i9rzg-97#NtBgxJw^D2gA#Mw@&8vk1VBG?u9r7gWJA8J2>7) zulw9}nZ6QMyV*H%<3!t4)~;wBg~_#z>NX=g46u;U9Ckv4yk`5%LD#Y9+RuUQES2<8 zcjk%(US5VZH)ju4uyr9?)(&vS>Nt5E&NS%2-dtWS6kH%RV~?M~etyOYw$TNcNY6*L z8Y@2M84jX@t1~s)7+%fg`FS!R#xIXI@1DLf^z`Y>e!Dc+duf|=g>d=S9^o#jSEO$j zw@Ir?a}J+T%;*!A*v!zDR}W0!ZTU*X0uWUuyLCvj>jTW|@61(v_G;{sN| z$t5Q!0atc0Sq>DPP05StD_ICWdBM;|u1(RS{6JO67>C!-{6blsy)u(7=LNcadR3aF z*y*6EaUt5e6x+`!#lT;+_^Pnd;FC_aq!iQSH+&V)d3dus;}?Y8>bZGpuUeY?)>+TV z3wot~@!KqKRo!k&yMk(K&gGQih5D_z{F}iiw?G_lY1csaefM8VNc?BqzeLF2Obq-+ qUf}P#0{&JWB>cJG$v1`Xxc>nZnH(a00M3E{00003+~j*MtU)J5${-aJ=7NHmNS$T~Zn_{^~m~Lb6Twy7-OGHQ?*UBj3q6 zzfGJ~=cjF{bJvImjIU1(VaXn&pXeB-q%zE=a{>6w*qs|+o|-Afuq?Suz7vFPn9wTY zKG(Gh(AmiJd9&`Zi7i$pbc~{7#b z-TX@2jFH{UedGRA#r2*-1aJm$xd_YIX8rd&xZQHv zQO;EeF)wAY-%FsK3u{cA8o$}m<5Yjjv*n#mTQ^m*aPsI#(24Yc1M-=6#=Hu=3IFyT z_Ki4ya<2mCj*{r0664T8q3nMWxO)w8Ta2mJfp?#0SuJbe;`q&<+>3Z9or8~oDy0}D zAO_-hKJsNcAr3f%#X5Zg#w;mpSv~Y29Q>5gb7s3b9f<1)nit%S;sY=y>rMx=?*glC zs0-6#@qRbdzZt!z5a(kk^Ai_UK#u7yFo^9q%9cgiWRW3rcW1O;4@L}RCi=iD1!B>G zno>@HWvArR4+Rb>Q|Hd1F4hqA>Nf3J<}CgT9S9O!2(M1Y`TU6&z-Z-XTugBV*%wQe z#zVhbffI_?Ik6n~lT?GU;T2^;?(@p6LWreB50`l5k~fR%RN*bv~_Vy(b4Vi{%~ zVDLg|S>nTC4v2~83%mdpUfaHxESK$X#CCxp$v<&1)o|Sr`}L4fVy^ow7l0#4=B#U< z=O}B!0`cbxFpjC%5@f?G-52)X_O;%@4OmKM>jF2-TVShBuEwVvI!6+&@dZi~2ko5h@#D$<7y!!ZKypc-lTc>g$&RYHLS;XQ<#(`K?q34CTcoaBm-P&#&>Dgw3 zA4xMVh>I(5DdhkxFLu@CFshGEmG=N_4$;bhPuC0RW#C($Swr&-7(1J6Z$qF+dMK1q zk;~cDMS5dhpYX<0V4|l(8u17)j{OKKKIL_;0!ty5Z9sL-WgQ3L&?d{4@F_5IfWkUf z7Y_jAKCSuD{%5>YfrGRB36EH3RAhg0ISj5X50NjI?jvy4E4=wb8XrqLO4oUB>c`eo zWqH8}2CP!Hy8w1U+^cP8&UUpu@-|>6)t#+dJMtDGX5kfLIiuYmu)GThjOtO;)zb1kXFyV8!8~H3bnL58YZ`4@7p{5?h{3+yJmNIjmWf?Gb~tVX1GnVg0GV zvjEexChU3Zzz)f40}J#Ph3kRH`qcBxlp$VZ9c$X#wN>_uZ>PXg0a?4OaMm4%C$2nk zsS~D`3r9O(7=nSxh-n!3M!vRNlkFJacEI+7J&5I=+i9~Ku$?npjyL=Yj9|bdw)P## zISkC!ZdpFG*koIJQ1J#VeGP(v&KoeTzjiJH*xp38U3PA#ca7aTc$Bwww1(Sq35T)} z2m5tYjZ2N)&dq~@{+_nZ=IVm&C7At&c;)>=U|(v7n77q~p1>N}`ho6)iu~$oLBp7KvYhhk3XC))P1=rtt#(lPU%IRoezwozR$n8+awo+Y7kGu!u?se+~Sr<9p!0 aF#ZA4wrkYNmtC0v0000 { + this.scene.trainer.setFrame('2'); + this.scene.time.delayedCall(64, () => { + this.scene.trainer.setFrame('3'); + }); + }); this.scene.tweens.add({ targets: this.scene.trainer, x: -36, @@ -851,7 +857,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { this.scene.time.delayedCall(750, () => this.summon()); } else { this.scene.pbTrayEnemy.hide(); - this.scene.ui.showText(`${this.scene.currentBattle.trainer.getName()} sent out\n${this.getPokemon().name}!`, null, () => this.summon()); + this.scene.ui.showText(`${this.scene.currentBattle.trainer.getName(true)} sent out\n${this.getPokemon().name}!`, null, () => this.summon()); } } @@ -985,7 +991,7 @@ export class SwitchSummonPhase extends SummonPhase { applyPreSwitchOutAbAttrs(PreSwitchOutAbAttr, pokemon); - this.scene.ui.showText(this.player ? `Come back, ${pokemon.name}!` : `${this.scene.currentBattle.trainer.getName()}\nwithdrew ${pokemon.name}!`); + this.scene.ui.showText(this.player ? `Come back, ${pokemon.name}!` : `${this.scene.currentBattle.trainer.getName(true)}\nwithdrew ${pokemon.name}!`); this.scene.playSound('pb_rel'); pokemon.hideInfo(); pokemon.tint(getPokeballTintColor(pokemon.pokeball), 1, 250, 'Sine.easeIn'); @@ -1019,7 +1025,7 @@ export class SwitchSummonPhase extends SummonPhase { if (switchedPokemon) { party[this.slotIndex] = this.lastPokemon; party[this.fieldIndex] = switchedPokemon; - this.scene.ui.showText(this.player ? `Go! ${switchedPokemon.name}!` : `${this.scene.currentBattle.trainer.getName()} sent out\n${this.getPokemon().name}!`); + this.scene.ui.showText(this.player ? `Go! ${switchedPokemon.name}!` : `${this.scene.currentBattle.trainer.getName(true)} sent out\n${this.getPokemon().name}!`); this.summon(); } else this.end(); @@ -1074,7 +1080,7 @@ export class ShowTrainerPhase extends BattlePhase { this.scene.trainer.setVisible(true) - this.scene.trainer.setTexture('trainer_m'); + this.scene.trainer.setTexture('trainer_m_back'); this.scene.tweens.add({ targets: this.scene.trainer, @@ -2703,7 +2709,7 @@ export class TrainerVictoryPhase extends BattlePhase { this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.VOUCHER)); } - this.scene.ui.showText(`You defeated\n${this.scene.currentBattle.trainer.getName()}!`, null, () => { + this.scene.ui.showText(`You defeated\n${this.scene.currentBattle.trainer.getName(true)}!`, null, () => { const defeatMessages = this.scene.currentBattle.trainer.config.victoryMessages; let showMessageAndEnd = () => this.end(); if (defeatMessages.length) { diff --git a/src/battle-scene.ts b/src/battle-scene.ts index d83a3234a..57cdcbe30 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -300,8 +300,10 @@ export default class BattleScene extends Phaser.Scene { }); // Load trainer images - this.loadImage('trainer_m', 'trainer'); - this.loadAtlas('trainer_m_pb', 'trainer'); + this.loadAtlas('trainer_m_back', 'trainer'); + this.loadAtlas('trainer_m_back_pb', 'trainer'); + this.loadAtlas('trainer_f_back', 'trainer'); + this.loadAtlas('trainer_f_back_pb', 'trainer'); Utils.getEnumValues(TrainerType).map(tt => { const config = trainerConfigs[tt]; @@ -519,14 +521,7 @@ export default class BattleScene extends Phaser.Scene { field.add(a); }); - const trainerPbFrameNames = this.anims.generateFrameNames('trainer_m_pb', { zeroPad: 2, start: 1, end: 12 }); - this.anims.create({ - key: 'trainer_m_pb', - frames: trainerPbFrameNames, - frameRate: 16 - }); - - const trainer = this.addFieldSprite(0, 0, 'trainer_m'); + const trainer = this.addFieldSprite(0, 0, 'trainer_m_back'); trainer.setOrigin(0.5, 1); field.add(trainer); @@ -733,8 +728,8 @@ export default class BattleScene extends Phaser.Scene { [ this.arenaEnemy, this.arenaNextEnemy ].forEach(a => a.setPosition(-280, 0)); this.arenaNextEnemy.setVisible(false); - this.trainer.setTexture('trainer_m'); - this.trainer.setPosition(406, 132); + this.trainer.setTexture('trainer_m_back'); + this.trainer.setPosition(406, 186); if (clearScene) { this.fadeOutBgm(250, false); diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 3a0cbb5c5..8faeb4f90 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -172,6 +172,7 @@ export class TrainerConfig { public trainerType: TrainerType; public name: string; public nameFemale: string; + public title: string; public hasGenders: boolean = false; public isDouble: boolean = false; public moneyMultiplier: number = 1; @@ -219,6 +220,11 @@ export class TrainerConfig { return this; } + setTitle(title: string): TrainerConfig { + this.title = title; + return this; + } + getDerivedType(): TrainerType { let trainerType = this.trainerType; switch (trainerType) { @@ -340,6 +346,7 @@ export class TrainerConfig { this.setSpeciesFilter(p => specialtyTypes.find(t => p.isOfType(t)) !== undefined); this.setSpecialtyTypes(...specialtyTypes); } + this.setTitle('Gym Leader'); this.setMoneyMultiplier(2.5); this.setBoss(); this.setStaticParty(); @@ -360,6 +367,7 @@ export class TrainerConfig { this.setSpecialtyTypes(...specialtyTypes); } else this.setSpeciesFilter(p => p.baseTotal >= 450); + this.setTitle('Elite Four'); this.setMoneyMultiplier(3.25); this.setBoss(); this.setStaticParty(); @@ -376,6 +384,7 @@ export class TrainerConfig { this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); }); this.setSpeciesFilter(p => p.baseTotal >= 470); + this.setTitle('Champion'); this.setMoneyMultiplier(10); this.setBoss(); this.setStaticParty(); @@ -728,24 +737,24 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.NEMONA]: new TrainerConfig(++t).initForChampion([ Species.LYCANROC, Species.KORAIDON, Species.KOMMO_O, Species.PAWMOT, Species.DUSKNOIR ]), [TrainerType.KIERAN]: new TrainerConfig(++t).initForChampion([ Species.POLITOED, Species.MIRAIDON, Species.HYDRAPPLE, Species.PORYGON_Z, Species.GRIMMSNARL ]),*/ - [TrainerType.RIVAL]: new TrainerConfig((t = TrainerType.RIVAL)).setStaticParty().setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL) + [TrainerType.RIVAL]: new TrainerConfig((t = TrainerType.RIVAL)).setName('Kyle').setHasGenders('Amber').setTitle('Rival').setStaticParty().setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL) .setModifierRewardFuncs(() => modifierTypes.SUPER_EXP_CHARM, () => modifierTypes.EXP_SHARE).setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, Species.CHIKORITA, Species.CYNDAQUIL, Species.TOTODILE, Species.TREECKO, Species.TORCHIC, Species.MUDKIP, Species.TURTWIG, Species.CHIMCHAR, Species.PIPLUP, Species.SNIVY, Species.TEPIG, Species.OSHAWOTT, Species.CHESPIN, Species.FENNEKIN, Species.FROAKIE, Species.ROWLET, Species.LITTEN, Species.POPPLIO, Species.GROOKEY, Species.SCORBUNNY, Species.SOBBLE ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEY, Species.HOOTHOOT, Species.TAILLOW, Species.STARLY, Species.PIDOVE, Species.FLETCHLING, Species.PIKIPEK, Species.ROOKIDEE ])), - [TrainerType.RIVAL_2]: new TrainerConfig(++t).setStaticParty().setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL_2) + [TrainerType.RIVAL_2]: new TrainerConfig(++t).setName('Kyle').setHasGenders('Amber').setTitle('Rival').setStaticParty().setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL_2) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.IVYSAUR, Species.CHARMELEON, Species.WARTORTLE, Species.BAYLEEF, Species.QUILAVA, Species.CROCONAW, Species.GROVYLE, Species.COMBUSKEN, Species.MARSHTOMP, Species.GROTLE, Species.MONFERNO, Species.PRINPLUP, Species.SERVINE, Species.PIGNITE, Species.DEWOTT, Species.QUILLADIN, Species.BRAIXEN, Species.FROGADIER, Species.DARTRIX, Species.TORRACAT, Species.BRIONNE, Species.THWACKEY, Species.RABOOT, Species.DRIZZILE ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOTTO, Species.HOOTHOOT, Species.TAILLOW, Species.STARAVIA, Species.TRANQUILL, Species.FLETCHINDER, Species.TRUMBEAK, Species.CORVISQUIRE ])) .setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450)), - [TrainerType.RIVAL_3]: new TrainerConfig(++t).setStaticParty().setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL_3) + [TrainerType.RIVAL_3]: new TrainerConfig(++t).setName('Kyle').setHasGenders('Amber').setTitle('Rival').setStaticParty().setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL_3) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT ])) .setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450)) .setSpeciesFilter(species => species.baseTotal >= 540), - [TrainerType.RIVAL_4]: new TrainerConfig(++t).setBoss().setStaticParty().setMoneyMultiplier(1.75).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival_2').setPartyTemplates(trainerPartyTemplates.RIVAL_4) + [TrainerType.RIVAL_4]: new TrainerConfig(++t).setName('Kyle').setHasGenders('Amber').setTitle('Rival').setBoss().setStaticParty().setMoneyMultiplier(1.75).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival_2').setPartyTemplates(trainerPartyTemplates.RIVAL_4) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT ])) .setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450)) .setSpeciesFilter(species => species.baseTotal >= 540), - [TrainerType.RIVAL_5]: new TrainerConfig(++t).setBoss().setStaticParty().setMoneyMultiplier(2.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_5) + [TrainerType.RIVAL_5]: new TrainerConfig(++t).setName('Kyle').setHasGenders('Amber').setTitle('Rival').setBoss().setStaticParty().setMoneyMultiplier(2.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_5) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT ])) .setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450)) @@ -754,7 +763,7 @@ export const trainerConfigs: TrainerConfigs = { p.setBoss(); p.pokeball = PokeballType.MASTER_BALL; })), - [TrainerType.RIVAL_6]: new TrainerConfig(++t).setBoss().setStaticParty().setMoneyMultiplier(3).setEncounterBgm('final').setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_6) + [TrainerType.RIVAL_6]: new TrainerConfig(++t).setName('Kyle').setHasGenders('Amber').setTitle('Rival').setBoss().setStaticParty().setMoneyMultiplier(3).setEncounterBgm('final').setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_6) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT ])) .setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450)) diff --git a/src/trainer.ts b/src/trainer.ts index 2d9257827..6b2a3f322 100644 --- a/src/trainer.ts +++ b/src/trainer.ts @@ -46,8 +46,9 @@ export default class Trainer extends Phaser.GameObjects.Container { return this.config.getKey(this.female); } - getName(): string { - return this.config.getName(this.female); + getName(includeTitle: boolean = false): string { + let name = this.config.getName(this.female); + return includeTitle ? `${this.config.title} ${name}` : name; } getBattleBgm(): string {