From 089975984e8962c2327e04f2d108f6902a625f9f Mon Sep 17 00:00:00 2001 From: infinitefusion Date: Sun, 1 May 2022 13:51:59 -0400 Subject: [PATCH] randomizer - gym trainers --- Data/CommonEvents.rxdata | Bin 115695 -> 116192 bytes Data/Map001.rxdata | Bin 39328 -> 39329 bytes Data/Map019.rxdata | Bin 54415 -> 54227 bytes Data/Map295.rxdata | Bin 31737 -> 31763 bytes .../010_Data/002_PBS data/008_Species.rb | 11 +++ .../010_Data/002_PBS data/013_Trainer.rb | 77 +++++++++++++--- .../025-Randomizer/RandomizerSettings.rb | 86 ++++++++++++++++-- .../randomizer gym leader edit.rb | 59 ++++++------ Data/Scripts/025-Randomizer/randomizer.rb | 5 +- Data/Scripts/049_Compatibility/Constants.rb | 11 ++- Data/System.rxdata | Bin 27403 -> 27388 bytes 11 files changed, 192 insertions(+), 57 deletions(-) diff --git a/Data/CommonEvents.rxdata b/Data/CommonEvents.rxdata index b987bd6d5516916c1fa07c23b807da5fa7b76984..a84a55db205596e191883ccec23a3a61c73873e4 100644 GIT binary patch delta 1926 zcmZ8ieNa?Y6z_L{x66VG%Mz?Cx-0>T7#S*qzzC5dmGLP`DxkD{C4vYf9G?7nj?uCF?6{thMW_>@_xj>9yCodc0DW zttzsYm+6^rv&nnVGu}|9kM}C0-C)NzSh#5=o+mQ!rdcqt;07;Vv=RyIa;w4)U+`vY z8zNX!e+ao5*p5y!8`tE^kL1H_)s-np^uQ%nWxQS=@3~kR7Qhu5g=`~Xbu6Xd7#&@; zJlkG7DK|N*AT@7(K~7%Aoa}<+tgPg`sQ=lMrAh<4(CVkE2vKZdIi+@M>iP;TOKa(} zwRY=ryM2{)wVG}%tM3n|(9s%ox-wl7J@jOmoBOy=v&^oiaTAuX?2Wgulx1wrb?j-{ z1!^=G|L79kWiP>u}w%{ktLsRqXcJR%~Qfy2IJw zbMIk~w8yi8?nZoc@JjbM{OIVtR88bHtl;_y`Q?c>>e0mZ z-H25-smHu{P$JSCw%#*d@smXfkyk34DAM^LNmGWg z^>M!A%0GvQYFx-#4Lhulz1*n7g*dKZ(M1S!BM<+l@swdK1Y)(Y`{Q%MYRy+8r0;FufEY6# zhk$e9SP(uN7w~g{EZ{ThO#h1~bC^WG@VY5DMgsv)T4)XpsW^sTj6xro14ZXlyr|#< zem4dY*eA@>5l!e3X)_TGToCJHahb?wc9#2mzrjORE7YtuMG`&d{5A1KGY}!`s86CW z%_Ge5SPLxWyAlwKeExj`=2L-Ly-bssk_f92oWGWiSY_{csajzzLy@d&mXA1{j=vPL z1gQgN;@!EJOToiNEM9vIXD#?;B+51d%6 zsgps-GC?aC)yo?S)(r7-JsuOiF+m&Y_FD#bna5(0v<*2Vx|*<1p`p>_W0f>|(w7tY z`3jjuSqtLntBI=Q7F+cAu?6G23eY`{1gf)TRY7C HPvhc$sPl+; delta 1569 zcmYk6eN2^g6vz7>J*7xCm~%qQXchN2 zJNbe)o?~0whWiiCImGL|i08E}Ux@{;!61yyc!Eb8LivY=T1p8K6W3w_FKfJjRG!^Z zq_i~c09EVQ$Jd&dphlV9GGL?WVZz@F_nxH)rmTQ%G?p1>QFfScdtp^}>~(^2bk7WB za9_eWbSjpQOJm6v&JA0ld3TSC?3y`;^OG`^$-N7VIIe6uy~==Rx&Pb;c!hnw1aALv z4_2!>hVy;(s6F8Gh2x-dzQ2m-;&}GYd5XJ}%u4O0HjvTsC?%LU<8l#MEn;Q?qD2oQ zWSn6Z*;u)p1v}rkTxy87sEspn!(KbDzfy&%eCbLBrg8os-RjK|SL?8l-@Te?DAbOH zim*I9uUM}I6B0OjU=$y6)Ziw3#BGCFXyw~j@&SThAf=c$@%VcU$o((ft4$4zQv~bPzo^K@U22f*$l%49q}{9ChGxpj~#ja40;oBT}nb8{!dE z=9o-5=4I;Z9Tsbn)kIH5K74jjoPu2PX*ykepMpy?7%7jW;u!-~L}~p@z&aT+4XK1r zWcGBV0taMy7A_Lqic(+8E%sNa<9jO&aqs)q*lHqX3yy9wXdsuyX!C4(`d0kjDye+dxAq^};5)mtY?G z$An`kexXoDz_XwjMlrnx5#r_&*eUEk%;X*ucZ)HFJOLrImtlSol{g;dk5^^K3Z$FK z;nYL&25+c*uo?~^T`VtyQ?!>O9vM=#E{3cX(5})L#H- zmy^G(cZmE7EF#wIWbt?@;&^vsqS#-8XnlM)IMwmBikH`66sJUYC7jxCNK{m!0DYQf zat6{8rR&j3*T;mZN-b$%OuSHq_X#f1Q>nJyCai^GErxt!zs`fj;P$0x#n=u7`-Ii0m zctDsU%&ka7vP^45A;~YAu-E`!0G`*N#Y`=+T9S5A%*dgwv09Sp!Rk+Mo6c?GcSbJW zl5uS?B%(nkegiM4(W8%sJkg1LK(AQbrB-rM?(Bk%=(K&W88oOV*pl{}LI b(@}K_B{XSFT-C&rV`6z9N)Ru*`ryI8U2`Sb diff --git a/Data/Map001.rxdata b/Data/Map001.rxdata index 8de12b105f7cd765cdf51adff70f5caebaae82b6..2b6219c6f769f01ead4ed74a836d421a40040559 100644 GIT binary patch literal 39329 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 Da0AaL literal 39328 zcmeHQ33wbwm7ba8Yt2Yww=G+aVjH_PvSp1eD?04No=LvQax6<=$HtOljFS~3sU=lB zGd;{f6x$$mf%Vsb2ygpVWeaW6Q)2Evg8b_oGC3CD61Ag~;PF9CL8v&-)Oue+=7 z9?gv9E5vQ7yI)tou6p(A)w`;6Zdgey*td6QBC$J_Ta<|OjZI~g#1a*)9^nOKCZkmA13uth7(EWBzHYf=)T`r#b}si${RQ*z;u zpd^}1cp|YE&_>iF%?iassQ)ta;dUjHNo6O(_)0F7M?H&j9tdJ9b7R|6>2!Z-ti7j0 z`yxIcm+*O(oxs;v00_sG37Lh)gGzF7IN6BTwhfl1FO`PYWu&W1g`zZ}uOX}~(9tWun&hlNrh$HtjbDs(27ut0JtyIRK<(C-5Yu`i<>kw=TOIhhHG zC4CbtFOL_Qk{z97M+fkDT**!_0w@W|Y@62bL}ELCx)ARcW{9jkqeoI{HZhP`+EOgoR8tf`Ue3v>;z(ja zUop?7rsO<|;DbduH=4?_49YCkzBiedUs;l~E>vnYxwxzsoqn+5+5c*m!~Oyl6CQI+?b`VaJs=9Tfoazic__7a(d?}gGzM_7@`!8n-?a}A4o0-!zWkZLn{Z8FT%4` z1Ig96lLnG4IK`A?tHyW9H3pw0*A67xMw09BynP@UXW``ff#e1y*%3`{MDHg%V}axa zK-GnxZdRA6926et?>qP7U& z_uyj&h^R^+PC@~9jzV<|ou#$~-E6c)uv`a{Ye$l81N_CuIrhFG9TfTtmvcrHp3n<% zK)`ZOV={CXe?^F$4+%aZXL7@;0NRsnk8O*^fm$tRh|oEEYDIG8NYymq`be(z?8i*`b(Ev8g)! z33r+!CfU@qcEyV83RIFtvy^6&vhQR84j1N)!vlVFtM5P1)wQKOo9o2uxd_CIf_UeH zcoMtNA#F_Jb-V=PP)>K|#)gV=rXRC!``&)KEF==cdv|Rc9>lMa9d4ef!x#n|X{;1{ zm4gQZ+L#}4jrq__uohnOrOCqn1AE4FSxz>MR4$u* zYdME((mQR_R-NNTblQas(oLNrG>#`3y66z54YmGt5MPUpuG?NJ>K$Q7tXNZSY&erD zOpi>nf-2Ndg2a`nIL$3TOe$3*+h3k{{g9eOB_8YxOxy`-jLy-Qxt6- z$;&b*wHoZ*21;#UD?BI#iL0xJOAH-&P$|l3ol-7^&&8@f(-S7L@-vio8#xPv!fmz* z%F#a37^!B0?>d^_S(Ftv=+tvxB6jvxnmewNfB7ReVclE6UWbvL-aRMsiE}F*BgvDqA z$&+pd)yF1J1jv(!F-rVwFMYU}Vnc{+9+C>F8L2pUznOpgzBh&Ke9vEUQTNvFqx{tv~9Nm!}S4vqjlXjO1YxF&s8og%0XAPEEYBk5V#*H2^^hO~TxpMF2E&7{WqSmp6y4D-jHQh*T>r^T~JF27( zkHUt`&nWry#OT<}=(v)}rD6T!W_A=d8XK3l_FlMgVspMUQyPbOS)gjFofeH59BXLO zqUG8O_q#T=ZPI^(rnVhw3F?h7^=+Xqw8j(K<_T^0gs%65cDSM5rb3gYfv7x8ATkx4 zmG5(-6QKBM1r75gRzY`ObWmxLs7tw?T!4|BmI@f1Q&Z$Zky2>|zsFMJhb0Vj`BKgl zyz_-hK9eM0jpnAA%EMjIf`LDtf|gw*w@oQKK244re3iZhN0C&>z**(~)I!eZExh*( zVNp>%HVmQ(9TGTD%E(edhQyjq6{T6Fq*tdyC5DdNY+`&3J}kqFwll4arP7^Q`Dn2p zo`tmB55im$BVSvLSIHbL#^?|JULRxiOkh#4IS#!z7YwA}P36W$G%H0z4$WM@hjPAe z=!$K-x;tY1@CC&>Mu*yCgYs;PG?F?jLwrhds(?FKJJJlCeW^6aJTco6i+4<>(gnHW zLhVdyJ&6_mRjNguL(I_g(4AZehgkv#i7_hoTD=|oy`zqMtGH6}7^W$`QC^^N+6bqb zHW!^ew5dDQwApgz(?*CbHpb14>;(AC?(7J&;792{pNcsTS0pjE9grapQ`uR#E1|AH zj46|o(0imS8uN@eurIEwwY$TBxfP7(a&fP;Kpo zPG#kEA4xYkwgjl#i=l2WV;we|<}5PH$YNNBCUmeCy$L5037AjQ{<`1`aey-?4iM@N z>6(&hnQ+}H_*W7M=-HyXVwPjTv@pzPCmcGP#{m@CVn%Nc87Lz%tWS=>0$*)Gu=C*V(UF6DcMOki+qZAqL66d5gy%iLE5}RuJhDV~ zLf1Cy(c@K*wUpK|gq)J2D9OKl$b8>uq@|8+^bU%{3dcpE6Z-w-AWpl1%Iia`Gy?M6 zjl!YLR{;gR;?aO*Mx=r~2ol<%7vf625KB_ycEOlOwvMzLsWr1#W`}d~ID_--8gkIU z^?KzM_{v7Lw%kGDz*A41uJ`+M`ZM0|rpD~#=hGGt*+ik>CE#fC#rLpvHjX}vls<~- z)T0UO*kW4~v_W~kK1#yK#CXog(BQ6_Fnpn5WHRWE;YW=jwZX1C&uHK1`s}@$rjcPty96(gNI{ihnc7%>#l>Ppr!Fz8|i6V(zdT10tDdN{Qc=~o5h zMZhgPo9kuu;F6hyzig42m+|=X}W-8tM^Q6 zZrL%)DpCF23?5r#p|t3wIk~DryAjUc4!G1+-}Ou?TO^;zfRD6TjSCpTp_ zQI+^d>JHV#!UyF-tnPBf7}SUL=EC*U7wS2Ox8g0_2VAyhG(N4WLI2P?iXgxjR?4YC zK_uRcAMTU}SRT2W$X}zH@;DF*Ahr*OR<3{=XA49VyIeTH4yc+oLAj5oo~_2gz3B9W z&t+kD1r9DYczH^83tbyzjR>yeTK|Tjw{rlOGIb20pxzTC!zKNtOa@*$L^@_t1u3m4 zhiSH+RPr+^xCgb~B1l2W$U0Tjj&o2zh}Bb9a>AHCLuak&US+=9c(-u~Zx`L$Wqa9< zb#iiYNK3cX85wTQ0#a_l%aeH}qxQ6VSD03E5(WJTlvkadRtBukw^54V)v%x8XK%O{56akOTs=$Z)A5>RaugZA<5jk_NX@>Xbr5A!N>Lpi;4lUYprEl80(RgmY5VNB8lc>#q$Uu?Q;@Ky%2mnr z-G%D7(j~6?B_nFchXi?x!(LO=!SXK8Gn5yce&Dj~pw5pGo-wOUfG_Za(-!h!1dDBd zhVsG&YtD38M&NS6!3)T6(KW#;WWznzd;l)IsiP_T@IY zD)FTN&)4Ckn;t!sW4IEgM--;VN(LEYacpZ&0d99`c^7wEyWOEtehX&mw@b1w$b5XaI=jMflqfv?Fw)X zIY~A$kj>^KG1R0g7IEfGc$U^E-6Qr6w(tAcqZQ+{Re1ZTMXzlxeM8ciy8031 zpd3+EbHLI_icd(BX{;#K+yj&sm4|yOjr{N7X=R4;FHsXhXHspQ`t~?NAy7lqR4LW# zi0nqV8bHXrv3l1eCAsM8-964ky`4NA7WuZOGyPvHQE8o2?jJ#}C@My|>iQ+wq1Nhl zVwJV7^G=ceTaa?_jj)0|!Fj-J>;=YZo_+GT4BrMV!ZO!l9T*%M*)gzdKbB%e^rl$7 zY-Ln&XT2{SAy19k7pOgQ$drj$DTB1pg2~|-FtTbur&R?#mBXUme5aeQv>}keWqgsGT8=04SDqMPL(kj8wSBr* z$Dc7&ImE3FV$SqhYFnemMJpsWSyxDubtY9jv70*UDO__$!E#zj)_}>Rm$f@)^or|# zx|NazXu=9Kp`A6_=EE1%S-w+&v4VWgh><;1X6V{}>TDy(-pF96S#&{74S{8$xk}1O z9vZ?mNFMbyyW}Admps-8KLu;)8TU1iS0RF|rByi3f7X)I*c+@-^cW_Q&12^oI zT144JMjmBZwxE0J*o$nVLhBxL74!yU@^!C*K7i%V`-VsMTwcQ>XeTX931{2!pvGmh zbF6)~5~V8h+^nTd4%awYRNP}dn{-i3SspK93p{%41#bujGT#ZqkYm*k5KnK&QjmQC zW%^s>n3p%_3^vQjv(U*}ZJe{{5SAlW@3Fpk2tir|oe-L)NEUgkNpHq}MX+k%vzF7T zqkNrf0TC}P!0xfub%DNCj0eCf)PqT2TQ&TPM_^oJu|QJ73R%?=J5BZk!k;jmko1*; zf{gfQ2ER13qeHVyb=hwk8uio;ugbI-LeOe~Bt~|3cdIssy+#%7|KQ$NVTsMrTj8EB z2B$k6P^5@rwY*nU)0nm`q7OM8)ic7S2i4_(S&3FS50|ppS?Mw)I_gWDCz*^j&J(3P zG08+~R`ZT4szD{WXn!7Ah`j&6HQ8CdrHIKD{z|+_yZMmIWoT!eIdrE>Zx@8KsO!nC ztl1_dwCVJ8d%s>6M6MR;HYZ=FF=t5oJU-Wg^Apr*y2gRI|XZ~)|OlU6%TCuZ) z#T|4%YmCH&dK0jHmTijE#_w8PI)+*3p>xz9-fi52f`l-AWk04=wG+5cg?1fi+(DZP z5DOSvmMx`yGqi$g9@kP!e<6wX^de8_R!?Zs4doO!miCzY0$_BjZKw9Fw_ID{&;*S#{uJ5o{w^qTz!Q4V z4RzJgT%m1jk7jZT)OepR^Y3PV*5Df=2rhQ=Z|-4t6VTj@Csgr-zS0v~@Pw8;p)+o% zi;SjQ@C0K)+D>%pICxAS(=;vaXW~iP-_L30E|^!7zk#;1DfB{8hh5wISv3_s7K-(h zs**=LD4fU+e#`)bsG4!1ZK56zc->inl&B+o?&hC23T|sf97b(dp19zC`=L!03seVjs$1## zDPBhG7fu!00D2Bf;S?+qQH|hD79+rnWI2t19$JJ($y&6f<|=l9gJI4ZBY^D3g=oSB zY>ll6TBfgILs~)>4PBdhx94ZQHX$w>%5}1HbU24~59-~QcLWFB*b2C*^z=TqFc&oVMeVhg-C-+LP z+$Dy`tAgFX)_5lAj;R}4!OK{EM((S5(^3^1Bin>;5QT+5 zx+1|7d`{iwS+v-Qf0b$x#=Ujwq~~T94=-WeCd=~;TST95SaGUUFiLPLXhs-4>h3>fEX21)u z=yyG#-}i+6&;zROeMQyc(SCF9D}wSq<3oW94|RFKYY3k@GaE9Q_c<@m->-mOgxDoJ zm12>CPuLFcQ%B< zAiB!gL(w)$UZFtG`3!FJGpZ9#;_lyPP$zVg!ADUa37w$&+%27;g-rN9I;3iq+m7G# zGWom1{hi+a-l($i5Pi2`=k)bAd=C-Z^z{l)=$I#T!V@~_37z(YUhRf*`ENu%gujwM zVL*T0WIco3t#TI(TGgsN&2qN>`M(FCHiEHAcV40eg1V8LRVSNgXZHOS3>iL#Tso9t zEmrTmb;fp1*QRDX1W!vPBW$%}M&#Yd8Ibb5fej_$i%!W_C&72Z3i9u-CBZs_i^I`RDTH+m?^pIo=Jf#hn| zeizV#w8SDI+iJA7=O$w9V3L+CPjo{G#DP-kf>Z z$BecktGphDoSs{fn`6%@p?wD3$xPqob|Y!a6i-{rM4LXN&9$dlr>R47;K}*>hV#_} zhSj*ix=Dw($!HB!s5;|WrqBGXv5e7}>p0UJCIAOK5A~UDvhZmUGYuD!Ew{<@+Ws79 zrE3;xdJ6il98&ijIf=Qn#HWx&6^@zm(J^DdIMoC1G2?Qx@W>vyS(dARR=Hr&3eTO8BF+>D25f{_64w{s8ers+cMz>PP5r-iGd5eGWEq-iV)7_@V13#6aK~*YU?d zG+4{=X9p%Xj%C3Op~{X=onw|e7HoFZrz>PX%(B{5PlaDO7Hkbkp_WiA#Lw&TW_u_e za-KJYZfLs^$4zZLp3j}-kD;Y@JUyXa)Ve$5KHu7Q8;;xC{GQw4$Ab3zo=_r`3~dQ* z4N>i4IP?2Nh-22Cn{em-(`)GcV?igJ)8!7-E@q<>$IR(g{_IcZTif2O(v@hd9XG4g za6l?bFF8>Z0BR%A5Olk z_MR}?`Iz&yn~$A*S^nPH^CrGp>C4}{we25lJp5Cd1&LlIf((`7QY;|%XaoyZ>c1qGa zR0(Y#V@|#!uA7_API_ryx?7dMZhqDH_RcoH=TSY;->Jx_?9PjgG^s)R)frJPr+W zYa?BIA69I)IA-o+L9chd0Oh(JbzYBSLt{tdwe7dHd)2^-&3dhA2Y~>+$B#hZb{$7o zV~=|DHg0OX_gpW$fq)g8^_pYW-a3BnapV2Lb%B71?fkaoZ3J=uvtqMeYnb`mXMJz4 z4Nps3tj!MLWv$q(*BWLng?MT2v)LZ&^S1`yrXQ~lx-nZz)_#4mTrbR0YfCHr zfX~`HaKv%Y?~eBMo}A|0u3Lg8WjKY}TjQ zU!h~ZD}HzU9aUl0YDB+3Bz{=@i1<TF`ZSNw$dN%2$S zKZ#y-*2+~wjX>Z&@zdgG#QSl4R{Wg!dGQOjI&ZPma%+3Sa%a}b@9F{ZLGdB+VH{r+ zza;*%_%F6P`@JiE1l=Y;8#NH6DzKEm6!Q<{NB^xUkv*{?`h{a%(L}7 z^rk7*%qtD!SIc6y;?b_nZ_qdl1Wc)BUTK)WSr)Suk9KYSmWILa_YZtAA3wLJ-HOM% z&VG0Ufv3u1K9M^6e=`v9s&iLscPsxX_ip)TJ?$KadEU~xwbl4(-)cKJHapaQM`dWd z8aNDmT$*~F2it~lytvKl8HWw}KIioc1a4|Se(nQnADrWOXf3@#Gdsa5 zy5jWG&gCgfPs>x?ip~7amgv@KBASd|9K8gG38yRbnHAm_-4^YSZjW9T-Qg&2EfomZ z%SncAy9QV0vv&&b65cJmN4Q6LuP_)LioQ7dlIX7JZV${~k8}Lx%9+pJFML4wpztB# z!@@^|z0sFO_eF=JBhmdHn7?gcE?3Tc_A%k(!g1kV;S<6qg_lJSMqeI16umNfl?Ub@ z8JNqJGoRfjd|LR7aKG?b;d8<(qN(UubUZo{b;@#12Y%+|WLFJL91jQ&3J(bn3ttqz zB=GmFQr(1^S0=?x*j!h8+g{qXPuG8(WtX?EXr-S(z@)gdOl|kE*49?~2?R`vYnX_q zzbrl?enos#{Hpjh@#~`2s$Arik$j{ODMm_>Baykks@2cYa*{zF_)*KR&OWf?}*iD^T8~MA)>m%1j zu8UkB`Fj;Jees>*yTo^k?-B38@m}$Lh{HO7s#h*f1`u9umSK_b5--u6(zZHKcYI5_I z$g#*N8S^;C-OcV^e)kv^O$)yvDSV?bS8bHb_}NccHBgp;49s5+KN9{*_|dQ_qjyK!o8!&vn>RFf zG`rvTgAA^FOVh1Qw>90~#3kcn;m5;Iguf9sW%T}NS95oBPjhecrYbP+UHA5;JDcum zy1R*Mx!(zYH~hWu_rs=)zACzn7n=ty^mvildasJ zf`1BnNsSe)8(P=vKm5(P&NtXFYo$$TVb-*_wWn44nF}L-enb0>F5IT3e=y&^N;-uy4iWyCE0$fHoq7Ki0w0eN!U2X4c?1Ava(RcCq7uvP4!P8&b&{nnE|x zEp!`AGe`JSpkFoM81+LSvO^^3j;h3h+E6>H7*eMh^0O*rH6J9#X7z0bL0OO?VN&3A z&I>~^89b_$rG^!e?6RyjZld32eRhFbBE=l!HSw)o`GagCIgsZC4aQ!P6F{ z5+Y3&&)m{fLoF2*6*V;E5D^s-L3Q_kme2PdIDS0Oc}-Z~6E>D$^k7*Dfk<2OQ5qZ? zrwVgSdG*dAfK!JU*U)K^@qk z$+(Lpr#AJZuAQ}O-La?XoB+-AE_XuQM%?S<>EiM5_;>;s=w)RYbfD0(9MB%8F0Zj_ zHX^_yF1_%-UwPhm-g!QGzA*5uE?om7`350r6F$>gsO!iXeyiKJ>~Ky3@@Gkxlf==mlZ#?6tC1&Iz)whv1-#@_nc$5=Wp0=H9Kv;e7M>Yo!T1J9jSU7Ub7Q?byQe>d0dWi z3ngP{@25pF-vsgS^@XKf7>Kp$0y4$RemXA~KHci{{+QH(e zDE|60@-sp+ie{ZA5F<23&98gnXZ_0Y(aLj+W1{ev_#VMmXoSC}5$MA; z+>2^{k!t9ZQDajLeKKlZp&I&R)cg|F&?lqj+eJ~NPqL;YK4t>k@i)8&ez)U|R>ot* zp)^8FiPmY+2q(qo{mN-P;rEg9cr|z=S}k|E;mr|>+Fr|ZJ97~d3g3^gU{%jWMaBOu zD9pSs-cP|aDn^{~hUcz!y*a%!XFC!EBs8{_+NNl z=fxXqzIbfcyY@Pf%%<=6ylw=``>NGz8}=9N2MhP7R=v)=yWxQq?-CPCIJfENRQqw= z?YPcGUPF!7U^y2rtWt}mU=w^vOn3d-%tIP0a96xrkBQNOHzqbzzh5p!GnT}2&Y@1b z>qR4W6eQEVv4P_$!Pov>FAQt5#NZKGn){&Yn+l!PRRIzZlUM0~9rmIeEUdJnwZT zrmxOSUYZ7P$QFt>ET%Kc^*ZEJU-H^buQAnHz9|B5 z_}%XMve%wyE#D^2xqkiPfNXLY3|GExj<78ryC(>OjzO#IUG})rMM)Hixbou9KmIl zUnz}NM#Yyahn(^GTT7(T2^&``V?t0%aB<<|Xy6Q`A1x|W`m!-A{V{?egaV5~RZPx9 zQ3;b1aH56IgMcySK|o%jR{bHLc?uyvx|@&}pDpN?HV5fI)=rUbNqz*%nNT3Z;pAeR z!?UZN-EBoPvW@^7LY~hECO5NODCxA1k>elIS;P61lDQkS|7b@N2c}0mU4suLowBo1 z?%+3+===s`6~Dz=(NsoH6NpN2XA5p7`&)_xOvu3`4umr#&N&KF*Zs|A4zWo^L^UR{ zOP>s4pNSYlsj7YE$Gsvp*a3vr1ww8UG=T_>3Qiv;Q?O2e05Q?Cd2>2a%@8MLRG=n8 zhZV;CkjH@Xc)RZPQ78;T~eI>Fp1(GehZhC)CRn!in0^c-k-;CyK0=5s)3 zVt$Yk4G49K#&gJ@(3Ju7 zyS~8*^*I^l#G0WdKtcelxX(G!T3!gxOYq20wW+Zz=S6elw%|SPOkmrVY|X}oVg~CI>!#up6heSaL?+@dBrG*OwxPO5Jx={6Qh=VtTKRP`eGyXM<;6 zS4mja;(w?6^;Y;8VQ_^nTW2eLRGDN#2_qC}#4`hnXDr%uFrh?m0VJn|$3T5g;lX%= zFHW}3UL2~-#i2xB9G-iF4(Zu7&`pz&134pkCy-+dK&`J$>a>LPppA}?%sy%diBU0% zKB|;S)nW)!r21gg%)^J#BGX6to%p=|j(A7f0gMK3n8Kbj5xRvp+_r$THduW93kVJv zCMW6?9|%I<2L>v9#7;-TXgD@wEZ^#(qc&KNW29`U3|y!w<+T4EOF~urS6l^#HfK$O%&m*VH6?KRXG*Lw!-LDMl7pxX0GylM(C=zS&YVugIAXGYAzBk zPs*>{wTt4P#Zfvo30OTCja{jhI7KC3PIkEy)@vb#><-=)r0%cD5&$!c9-XF?QT zS`m-usG9b`b&7QOO}}i%f%GuWUM}C@+GEr=43Ew%ZBSUGK36_f4ZOxm6f|9`t&yIg zxO>=WdP&rUrTR?AeOQg6qzjmyH-?GEey*z8$$?JA&ru7WX(pWMc(~3sqTi8{pdC;g z;+AS*p?tL3X^YiWuPty#An16lCATToDe8SH9AKsGz2EhkwJmCJvg$TA-K}7Wu+{Nf zbJTma?Y1b6>6g!@adkVaJ3`I;mRl2@Em8O(jayrzs|Yo^iLivji8Dg=Ew@9@O1r zE3X}?OcFLLmzEw(vC2`p9RakAFBUg=3otG$^UgxJ9mtKkrQIav?o0|V?<@Bw1j$5-%@Gs@ z3>2$wKJkS51~qJuaN@z<6^fY4dY>tvkb7*q3x7XA*a`4q9JTwR{bE?c5Mxcc>c_J* z7RvGg@*PCX;=m(MwG&_%Jlzfe&1p}{K6=K#DGDFze2!hb=J;S2Cy0Y8g^%p$GMdDy z0tm=F6{wR$(lh>dgF(Xs=R>nC&p3wdeMSL)F<17Mj2#9n4#*Pkmim*0Raq!UP!UWV z5DZag-Jz4M%9vnM0O+t0T@2JCOsL|4lbo9*SmJ=L%Mq&bIaeOH(8QD@l<0~?O4`73 zlmiVg+Z!4wM*~8mv@naO4zKhes1__o2V}`ow);w!-F5kXq#J%ITD&caZEec7NEM65 zy5YxjZ-z=m9x^?J96XZ1u$*UX=!`AP6NY?u0|a{odD@AdtErWug5am<)IUOWu8*r7 z^kFZ9#!$$sK1M<|7 zWp}m4UKzto!*;L%2^|2MNpV`uPMBcPVtAfN_^1+qZ@$rcWUAdWGWjBs58r zoC6I^a&Ks)Phdc3)DDR)eTo@X3y=jS`G72WCVAh;0+ZaIEPR2@kd}TY>%_)THxH;% zelp1#DA9cac<#+mIBWKYoP7ck7?$&Wh8)Mf{*XUyI1f!S;MVDcXPr*+kgF6GZ=He4q*3H$I9X%zjQtuzx)XsMf;kMUu)8M$W3@nS&T3I*t`;SI*;+w9 z#O_q}0d28b-Gh+5HDSSrC=DEWm5tL5SjMlpS~S*Ii)WoH0i(&4P`3RcXJz{|K@NH9 z5BYB59P$JV>;&f_hXHP#PI%VoBqQW0WoxW9t!x3>Fv=F~bCj)Kl~T5-G?eZCKxxX^ z4P^__)0Hird681tew^Qr+cC;bWsAA=7C?;2*1O9bhWf$eIqC;hJ7JF9S0#G|`4DWa z6enm4M%O7R?^+lwP@=bxxAN4zz3_G;%2=F+xKf+^L&2Gg1d$wHyHvT;d$(B^YT-zc z_l-W{3tiHJB#H*PV~ab8#SaQ%Ts$X^(wNChh}*p}n}(Xl9+8*R=r-6(x%bBA^m}6i zUK*ntVXyYTH>NI){pjA3tNb{T`I>mX^13LAQR8}Ccx$lun6Jpi7fzXYeBm@dLDJ4H zZGVk9JHE6%O8JJKj*LUJXi9a%>24rwj1J4$>s&)!#1q?$F1wXTSzasJ(OJ3=5`qUVeB=)nl2WL)3CH^tJ#$230b*bwHb zdE0m>=Ymg`Yz+A2~`-qCFScZm2`aw<_ z(x^y~WgIPf{CyeP#X4X}1tL4EKTd;4phVw&gP!q8tGAoOVE=Gij-uft4lHBv?LkhO zFe@3(Do-!5*&#MKv2(Wx$_>KN!F{}WpR}QHX=uIxJvxXgrTMa>gJ=@VDiEN%NLc*h zKRrlV^!?3A!|>&+2Utv2`MoVBU*rZuD~o9cZBfO8BoT2ymRKhbMi!P&#%OO%ZjdD% zV@qrYWb5qh0IHNwNZvq+t|ai>o1=EsW4*Vae=@z2L-_Vmy80mB45e(&(d)*^0;~bv zA50*n-RTkZHcl3@aata6zDJcQk0{aQ5zo3j0>)U`@R?}$AU7P=Igm3(cLI5?np7;D zjs@}tWZ&}5T!Tw^8&U1o)BSoYe8k0-9qy~}W$QG9!N#D2E((?U~+keYiN%{ z>j{&P6I;jPP-QL-CHms}gN|{)=7Y(-1g3}F8`2{ir^y1&N7YUsX9?5^CpAMtdWO>` zxiYCV7vYJtv ze)T)OC}GVG#5(1#Z-+T+E^_+*qDo6oPW->XH=Ov_qS0ANAjWX|W&|e#=bXCH4Lbh1 zN+LsY7Rs6tarhfx77`f$eHKL${(&M1^nrB3E5wlms-bi{oN^~o^P5ydpJX3?)-M~N zCriAHXM8^m1<^O1ZbqS7rJI?GK#Vc{f@)+(S>*$u6LWH-)U63r8ff`f0EE&!v_PRU zS}65YJm>1xx{VAma#FO)ofMVEr2mCUrKVQVAHukXS7>aW6nMq6fyW>88iDtec_Uy% zIlE!tQDV&TZ@o~1InYC&Lmz>;A-*zVIiHS^X9&sgR6ETM4TEYL%j%%fdkf-;=P6Z` zsL`7XYJRtg7v0zsZ+okhGKLbBdBLRZb!t;mDlx*~6g>xk(8U1gPe@Ye!xYqUm7=KA zYlPt`IxfbY(`}{7F43>6lsJgKgt(@stpL!zzq6x?;p zEIJQl_n>Aa6Lip#Xj|lh}Vu>_VS@#FmQmOT9+u$8e~Z2fohvl4((fL-#ThCP22I5lc`n^n$J|x7^ryocXagTb9z=+{R zS@L11?&nO3Xet<&pNNXq1BQ}&ylz3I~1Rp=cyOf8MQUzV*TB$T|1WGra4 zsVFT8yrN!YIT@2>;m$UQ^7EM}{VoxOJ_8Zu7kZ7rOJJh#bN-U_e1Tvgb*$^3FHqML zxf7`~%XabwN}?o9+ z1=kc(dhP$Qn3&{Sx3!Pmv3)LNX&!C#Ae6qgqIGM<)@T43_g!h&8$Gh)!NpQ&4oE ztCAPzl_bpxPv-e?!wV+ z<}Qq~67Ef+MqKagdGFR(^OL!EtCBTF*HB-eYp6)giL9997C>Umv+^yYfp#-$1TTUq zpQyTBO3O(*nI(D&=>oma6YqEImd6&5rn&fX>6wv{kyG>;rw@Mr8h#x7JHWsbz`(B- z4!#aBu=^Nz0<3y4OV literal 31737 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 diff --git a/Data/Scripts/010_Data/002_PBS data/008_Species.rb b/Data/Scripts/010_Data/002_PBS data/008_Species.rb index 63332c6ee..dec9a7ebe 100644 --- a/Data/Scripts/010_Data/002_PBS data/008_Species.rb +++ b/Data/Scripts/010_Data/002_PBS data/008_Species.rb @@ -204,6 +204,17 @@ module GameData return @id_number > Settings::NB_POKEMON end + def hasType?(type) + type = GameData::Type.get(type).id + return self.types.include?(type) + end + + def types + types = [@type1] + types << @type2 if @type2 && @type2 != @type1 + return types + end + def apply_metrics_to_sprite(sprite, index, shadow = false) if shadow if (index & 1) == 1 # Foe Pokémon diff --git a/Data/Scripts/010_Data/002_PBS data/013_Trainer.rb b/Data/Scripts/010_Data/002_PBS data/013_Trainer.rb index 672ae95b9..32f836876 100644 --- a/Data/Scripts/010_Data/002_PBS data/013_Trainer.rb +++ b/Data/Scripts/010_Data/002_PBS data/013_Trainer.rb @@ -114,8 +114,52 @@ module GameData end end - def replace_species_to_randomized(species,trainerId,pokemonIndex) - return species if $game_switches[SWITCH_FIRST_RIVAL_BATTLE] + #todo customsListinCache so it's faster + def generateRandomGymSpecies(old_species) + customsList = getCustomSpeciesList() + bst_range = pbGet(VAR_RANDOMIZER_TRAINER_BST) + gym_index = pbGet(VAR_CURRENT_GYM_TYPE) + type_id = pbGet(VAR_GYM_TYPES_ARRAY)[gym_index] + gym_type = GameData::Type.get(type_id) + return old_species if type_id == -1 + while true + new_species = $game_switches[SWITCH_RANDOM_GYM_CUSTOMS] ? getSpecies(getNewCustomSpecies(old_species, customsList, bst_range)) : getSpecies(getNewSpecies(old_species, bst_range)) + if new_species.hasType?(gym_type) + return new_species + end + end + end + + def replace_species_to_randomized_gym(species, trainerId, pokemonIndex) + if $PokemonGlobal.randomGymTrainersHash == nil + $PokemonGlobal.randomGymTrainersHash = {} + end + if $game_switches[SWITCH_RANDOM_GYM_PERSIST_TEAMS] && $PokemonGlobal.randomGymTrainersHash != nil + if $PokemonGlobal.randomGymTrainersHash[trainerId] != nil && $PokemonGlobal.randomGymTrainersHash[trainerId].length >= $PokemonGlobal.randomTrainersHash[trainerId].length + return getSpecies($PokemonGlobal.randomGymTrainersHash[trainerId][pokemonIndex]) + end + end + new_species = generateRandomGymSpecies(species) + if $game_switches[SWITCH_RANDOM_GYM_PERSIST_TEAMS] + add_generated_species_to_gym_array(new_species, trainerId) + end + return new_species + end + + def add_generated_species_to_gym_array(new_species, trainerId) + expected_team_length =1 + expected_team_length = $PokemonGlobal.randomTrainersHash[trainerId].length if $PokemonGlobal.randomTrainersHash[trainerId] + new_team = [] + if $PokemonGlobal.randomGymTrainersHash[trainerId] + new_team = $PokemonGlobal.randomGymTrainersHash[trainerId] + end + if new_team.length < expected_team_length + new_team << new_species.id_number + end + $PokemonGlobal.randomGymTrainersHash[trainerId] = new_team + end + + def replace_species_to_randomized_regular(species, trainerId, pokemonIndex) if $PokemonGlobal.randomTrainersHash[trainerId] == nil Kernel.pbMessage(_INTL("The trainers need to be re-shuffled.")) Kernel.pbShuffleTrainers() @@ -124,6 +168,19 @@ module GameData return getSpecies(new_species_dex) end + def isGymBattle + return ($game_switches[SWITCH_RANDOM_TRAINERS] && ($game_variables[VAR_CURRENT_GYM_TYPE] != -1) || ($game_switches[SWITCH_FIRST_RIVAL_BATTLE] && $game_switches[SWITCH_RANDOM_STARTERS])) + end + + def replace_species_to_randomized(species, trainerId, pokemonIndex) + return species if $game_switches[SWITCH_FIRST_RIVAL_BATTLE] + if isGymBattle() && $game_switches[SWITCH_RANDOMIZE_GYMS_SEPARATELY] + return replace_species_to_randomized_gym(species, trainerId, pokemonIndex) + end + return replace_species_to_randomized_regular(species, trainerId, pokemonIndex) + + end + def replaceSingleSpeciesModeIfApplicable(species) if $game_switches[SWITCH_SINGLE_POKEMON_MODE] if $game_switches[SWITCH_SINGLE_POKEMON_MODE_HEAD] @@ -131,7 +188,7 @@ module GameData elsif $game_switches[SWITCH_SINGLE_POKEMON_MODE_BODY] return replaceFusionsBodyWithSpecies(species) elsif $game_switches[SWITCH_SINGLE_POKEMON_MODE_RANDOM] - if(rand(2) == 0) + if (rand(2) == 0) return replaceFusionsHeadWithSpecies(species) else return replaceFusionsBodyWithSpecies(species) @@ -146,7 +203,7 @@ module GameData if speciesId > NB_POKEMON bodyPoke = getBodyID(speciesId) headPoke = pbGet(VAR_SINGLE_POKEMON_MODE) - newSpecies = bodyPoke*NB_POKEMON+headPoke + newSpecies = bodyPoke * NB_POKEMON + headPoke return getPokemon(newSpecies) end return species @@ -157,14 +214,12 @@ module GameData if speciesId > NB_POKEMON bodyPoke = pbGet(VAR_SINGLE_POKEMON_MODE) headPoke = getHeadID(species) - newSpecies = bodyPoke*NB_POKEMON+headPoke + newSpecies = bodyPoke * NB_POKEMON + headPoke return getPokemon(newSpecies) end return species end - - def to_trainer placeholder_species = [Settings::RIVAL_STARTER_PLACEHOLDER_SPECIES, Settings::VAR_1_PLACEHOLDER_SPECIES, @@ -184,7 +239,7 @@ module GameData trainer.lose_text = self.lose_text isRematch = $game_switches[SWITCH_IS_REMATCH] - isPlayingRandomized = $game_switches[SWITCH_RANDOM_TRAINERS] && !$game_switches[SWITCH_FIRST_RIVAL_BATTLE] + isPlayingRandomized = $game_switches[SWITCH_RANDOM_TRAINERS] && !$game_switches[SWITCH_FIRST_RIVAL_BATTLE] rematchId = getRematchId(trainer.name, trainer.trainer_type) # Create each Pokémon owned by the trainer @@ -192,7 +247,7 @@ module GameData @pokemon.each do |pkmn_data| #replace placeholder species infinite fusion edit species = GameData::Species.get(pkmn_data[:species]).species - species = replace_species_to_randomized(species,self.id,index) if isPlayingRandomized + species = replace_species_to_randomized(species, self.id, index) if isPlayingRandomized if placeholder_species.include?(species) species = replace_species_with_placeholder(species) end @@ -216,14 +271,12 @@ module GameData end #### - #trainer rematch infinite fusion edit if isRematch nbRematch = getNumberRematch(rematchId) level = getRematchLevel(level, nbRematch) species = evolveRematchPokemon(nbRematch, species) end - # pkmn = Pokemon.new(species, level, trainer, false) trainer.party.push(pkmn) @@ -270,7 +323,7 @@ module GameData pkmn.poke_ball = pkmn_data[:poke_ball] if pkmn_data[:poke_ball] pkmn.calc_stats - index +=1 + index += 1 end return trainer end diff --git a/Data/Scripts/025-Randomizer/RandomizerSettings.rb b/Data/Scripts/025-Randomizer/RandomizerSettings.rb index 54a5c4da3..10b737270 100644 --- a/Data/Scripts/025-Randomizer/RandomizerSettings.rb +++ b/Data/Scripts/025-Randomizer/RandomizerSettings.rb @@ -8,6 +8,7 @@ class RandomizerOptionsScene < PokemonOption_Scene super @openTrainerOptions = false @openWildOptions = false + @openGymOptions = false end def pbStartScene(inloadscreen = false) @@ -39,6 +40,17 @@ class RandomizerOptionsScene < PokemonOption_Scene } ), + EnumOption.new(_INTL("Gyms"), [_INTL("On"), _INTL("Off")], + proc { $game_switches[SWITCH_RANDOMIZE_GYMS_SEPARATELY] ? 0 : 1 }, + proc { |value| + if !$game_switches[SWITCH_RANDOMIZE_GYMS_SEPARATELY] && value == 0 + @openGymOptions = true + openGymOptionsMenu() + end + $game_switches[SWITCH_RANDOMIZE_GYMS_SEPARATELY] = value == 0 + } + ), + EnumOption.new(_INTL("Wild Pokémon"), [_INTL("On"), _INTL("Off")], proc { $game_switches[SWITCH_RANDOM_WILD] ? 0 : 1 @@ -67,6 +79,16 @@ class RandomizerOptionsScene < PokemonOption_Scene return options end + def openGymOptionsMenu() + return if !@openGymOptions + pbFadeOutIn { + scene = RandomizerGymOptionsScene.new + screen = PokemonOptionScreen.new(scene) + screen.pbStartScreen + } + @openGymOptions = false + end + def openTrainerOptionsMenu() return if !@openTrainerOptions pbFadeOutIn { @@ -134,14 +156,7 @@ class RandomizerTrainerOptionsScene < PokemonOption_Scene proc { |value| $game_switches[RANDOM_HELD_ITEMS] = value == 0 } - ), - - EnumOption.new(_INTL("Gym types"), [_INTL("On"), _INTL("Off")], - proc { $game_switches[RANDOM_GYM_TYPES] ? 0 : 1 }, - proc { |value| - $game_switches[RANDOM_GYM_TYPES] = value == 0 - } - ), + ) ] return options end @@ -228,4 +243,59 @@ class RandomizerWildPokemonOptionsScene < PokemonOption_Scene ] return options end +end + + +class RandomizerGymOptionsScene < PokemonOption_Scene + RANDOM_GYM_TYPES = 921 + + def initialize + @changedColor = false + end + + def pbStartScene(inloadscreen = false) + super + @sprites["option"].nameBaseColor = Color.new(35, 130, 200) + @sprites["option"].nameShadowColor = Color.new(20, 75, 115) + @changedColor = true + for i in 0...@PokemonOptions.length + @sprites["option"][i] = (@PokemonOptions[i].get || 0) + end + @sprites["title"]=Window_UnformattedTextPokemon.newWithSize( + _INTL("Randomizer settings: Gyms"),0,0,Graphics.width,64,@viewport) + @sprites["textbox"].text=_INTL("Set the randomizer settings for gyms") + + + pbFadeInAndShow(@sprites) { pbUpdate } + end + + def pbFadeInAndShow(sprites, visiblesprites = nil) + return if !@changedColor + super + end + + def pbGetOptions(inloadscreen = false) + options = [ + EnumOption.new(_INTL("Gym types"), [_INTL("On"), _INTL("Off")], + proc { $game_switches[RANDOM_GYM_TYPES] ? 0 : 1 }, + proc { |value| + $game_switches[RANDOM_GYM_TYPES] = value == 0 + } + ), + EnumOption.new(_INTL("Rerandomize each battle"), [_INTL("On"), _INTL("Off")], + proc { $game_switches[SWITCH_GYM_RANDOM_EACH_BATTLE] ? 0 : 1 }, + proc { |value| + $game_switches[SWITCH_GYM_RANDOM_EACH_BATTLE] = value == 0 + $game_switches[SWITCH_RANDOM_GYM_PERSIST_TEAMS] = !$game_switches[SWITCH_GYM_RANDOM_EACH_BATTLE] + } + ), + EnumOption.new(_INTL("Custom sprites only (Slower)"), [_INTL("On"), _INTL("Off")], + proc { $game_switches[SWITCH_RANDOM_GYM_CUSTOMS] ? 0 : 1 }, + proc { |value| + $game_switches[SWITCH_RANDOM_GYM_CUSTOMS] = value == 0 + } + ) + ] + return options + end end \ No newline at end of file diff --git a/Data/Scripts/025-Randomizer/randomizer gym leader edit.rb b/Data/Scripts/025-Randomizer/randomizer gym leader edit.rb index a139cbcf2..ee7321b8a 100644 --- a/Data/Scripts/025-Randomizer/randomizer gym leader edit.rb +++ b/Data/Scripts/025-Randomizer/randomizer gym leader edit.rb @@ -29,14 +29,16 @@ -GYM_TYPES_ARRAY = [0,5,11,13,12,3,14,10,4,1,0,6,2,16,7,15,1,8,15,1,7,16,18,17,7,16] +#GYM_TYPES_ARRAY = [0,5,11,13,12,3,14,10,4,1,0,6,2,16,7,15,1,8,15,1,7,16,18,17,7,16] +GYM_TYPES_ARRAY = [:NORMAL,:ROCK,:WATER,:ELECTRIC,:GRASS,:POISON,:PSYCHIC,:FIRE,:GROUND,:FIGHTING,:NORMAL,:BUG,:FLYING,:DRAGON,:GHOST,:ICE,:FIGHTING,:STEEL,:ICE,:FIGHTING,:GHOST,:DRAGON,:FAIRY,:DARK,:GHOST,:DRAGON] + #$randomTrainersArray = [] #[fighting dojo est 9eme (1), 0 au debut pour pasavoir a faire -1] def Kernel.initRandomTypeArray() - typesArray = [0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,14,15,11,17].shuffle #ne pas remettre 10 (QMARKS) - $game_variables[151] = $game_switches[921] ? typesArray : GYM_TYPES_ARRAY + typesArray = GYM_TYPES_ARRAY.shuffle #ne pas remettre 10 (QMARKS) + $game_variables[VAR_GYM_TYPES_ARRAY] = $game_switches[SWITCH_RANDOMIZED_GYM_TYPES] ? typesArray : GYM_TYPES_ARRAY end @@ -61,27 +63,16 @@ end class PokeBattle_Battle CONST_BST_RANGE = 25 #unused. $game_variables[197] a la place def randomize_opponent_party(party) - #return randomizedRivalFirstBattle(party) if $game_switches[46] && $game_switches[954] - newparty = [] - - for m in party - next if !m + for pokemon in party + next if !pokemon newspecies = rand(PBSpecies.maxValue - 1) + 1 - newBST = getBaseStats(newspecies) - originalBST = getBaseStats(m.species) - while !gymLeaderOk(newspecies) || bstOk(newspecies,m.species,$game_variables[197]) + while !gymLeaderOk(newspecies) || bstOk(newspecies,pokemon.species,$game_variables[VAR_RANDOMIZER_WILD_POKE_BST]) newspecies = rand(PBSpecies.maxValue - 1) + 1 - newBST = getBaseStats(newspecies) - #originalBST = getBaseStats(m.species) end - # Kernel.pbMessage(_INTL("OLD = {1}",newspecies)) - - m.species = newspecies - m.name = PBSpecies.getName(newspecies) - m.resetMoves - m.calcStats - #pbInitPokemon(m,m.species) - + pokemon.species = newspecies + pokemon.name = PBSpecies.getName(newspecies) + pokemon.resetMoves + pokemon.calcStats end return party @@ -283,26 +274,28 @@ def Kernel.pbRandomizeTM() end def getNewSpecies(oldSpecies,bst_range=50, ignoreRivalPlaceholder = false, maxDexNumber = PBSpecies.maxValue ) - return oldSpecies if (oldSpecies == Settings::RIVAL_STARTER_PLACEHOLDER_SPECIES && !ignoreRivalPlaceholder) - return oldSpecies if oldSpecies >= Settings::ZAPMOLCUNO_NB - newspecies = rand(maxDexNumber - 1) + 1 - while bstOk(newspecies,oldSpecies,bst_range) - newspecies = rand(maxDexNumber - 1) + 1 + oldSpecies_dex = dexNum(oldSpecies) + return oldSpecies_dex if (oldSpecies_dex == Settings::RIVAL_STARTER_PLACEHOLDER_SPECIES && !ignoreRivalPlaceholder) + return oldSpecies_dex if oldSpecies_dex >= Settings::ZAPMOLCUNO_NB + newspecies_dex = rand(maxDexNumber - 1) + 1 + while bstOk(newspecies_dex,oldSpecies_dex,bst_range) + newspecies_dex = rand(maxDexNumber - 1) + 1 end - return newspecies + return newspecies_dex end def getNewCustomSpecies(oldSpecies,customSpeciesList,bst_range=50, ignoreRivalPlaceholder = false) - return oldSpecies if (oldSpecies == Settings::RIVAL_STARTER_PLACEHOLDER_SPECIES && !ignoreRivalPlaceholder) - return oldSpecies if oldSpecies >= Settings::ZAPMOLCUNO_NB + oldSpecies_dex = dexNum(oldSpecies) + return oldSpecies_dex if (oldSpecies_dex == Settings::RIVAL_STARTER_PLACEHOLDER_SPECIES && !ignoreRivalPlaceholder) + return oldSpecies_dex if oldSpecies_dex >= Settings::ZAPMOLCUNO_NB i = rand(customSpeciesList.length - 1) + 1 - newspecies = customSpeciesList[i] - while bstOk(newspecies,oldSpecies,bst_range) + newspecies_dex = customSpeciesList[i] + while bstOk(newspecies_dex,oldSpecies_dex,bst_range) i = rand(customSpeciesList.length - 1)#+1 - newspecies = customSpeciesList[i] + newspecies_dex = customSpeciesList[i] end - return newspecies + return newspecies_dex end diff --git a/Data/Scripts/025-Randomizer/randomizer.rb b/Data/Scripts/025-Randomizer/randomizer.rb index 89ea36e00..3ac7610e2 100644 --- a/Data/Scripts/025-Randomizer/randomizer.rb +++ b/Data/Scripts/025-Randomizer/randomizer.rb @@ -1,13 +1,14 @@ class PokemonGlobalMetadata attr_accessor :psuedoHash attr_accessor :psuedoBSTHash - attr_accessor :pseudoBSTHashTrainers attr_accessor :randomTrainersHash + attr_accessor :randomGymTrainersHash alias random_init initialize def initialize random_init + @randomGymTrainersHash=nil @psuedoHash=nil @psuedoBSTHash=nil end @@ -186,4 +187,4 @@ def getRandomizedTo(species) return species if !$PokemonGlobal.psuedoBSTHash return $PokemonGlobal.psuedoBSTHash[dexNum(species)] # code here -end \ No newline at end of file +end diff --git a/Data/Scripts/049_Compatibility/Constants.rb b/Data/Scripts/049_Compatibility/Constants.rb index 402dd978f..1897fd5e5 100644 --- a/Data/Scripts/049_Compatibility/Constants.rb +++ b/Data/Scripts/049_Compatibility/Constants.rb @@ -50,9 +50,13 @@ SWITCH_RANDOM_TMS = 959 SWITCH_WILD_RANDOM_GLOBAL=956 SWITCH_RANDOM_STATIC_ENCOUNTERS=955 SWITCH_RANDOM_WILD_ONLY_CUSTOMS=664 +SWITCH_RANDOM_GYM_PERSIST_TEAMS=663 +SWITCH_GYM_RANDOM_EACH_BATTLE = 668 +SWITCH_RANDOM_GYM_CUSTOMS=662 +SWITCH_RANDOMIZE_GYMS_SEPARATELY = 667 +SWITCH_RANDOMIZED_GYM_TYPES=921 - -#Random switches +#Other switches SWITCH_RACE_BIKE = 984 SWITCH_IS_REMATCH=200 SWITCH_SINGLE_POKEMON_MODE=790 @@ -83,6 +87,9 @@ VAR_PREMIUM_WONDERTRADE_LEFT=111 VAR_PREMIUM_WONDERTRADE_LEFT=111 #Randomizer VAR_RANDOMIZER_WILD_POKE_BST=197 +VAR_RANDOMIZER_TRAINER_BST=195 +VAR_GYM_TYPES_ARRAY=151 +VAR_CURRENT_GYM_TYPE=152 ############# # OTHERS # diff --git a/Data/System.rxdata b/Data/System.rxdata index 013ba908a557b6cedb663a6f2e51c0e7710c37d7..6622ee1aaabd704de24795b5bd6747d9788b62b2 100644 GIT binary patch delta 359 zcmYjMy-LGC05-{{wbmuIZJ^<>#6dy_r{Z8ukG5$3Pic!7Vtb^eG*_Aw#8KQthu$N& zItcd!K7{%Lf(oj$%l_`d6BZvMnQJc_HrrVA=-dpPR)V>}z=*t>XJ*#e?d zHEO2r)!VwK9l6NV!Nxzya-a*HV@R*;W(j2e92XQ8m0tl?wT8D}Md%Px+sV>T`-T#v z(XuPeP>Gf;DWOHGyY~qyRI#=b+~vU%wNa5VWC&DkrKr%7nA*zoBFHuTNlzY;9+vU> zSe4I6IE`4hURDAB2Gy_x;!- U{?O|Y98o{G6nKSWuYn?b0YGAO-v9sr delta 329 zcmex!m9hI8{+Qc)7uAA%dKf)dF;Yk~UDa?3+)9_%lzQ z7A`n>MmRqZ^KN#CkYbYdRFd>aEJ{(x%}+^HNUbQ)Q%K6sD=h|DzPTVOkxAH7Nw6xv zC_k|%TOmC^FBK%Q_JI4-bpL5_Yd{=S}3t}gNJk-qUE zkpZs3VB@$Fzc7Nd1(v23m&B*0r-MZ~lckv^-;Wn(H2`z1Q~xl^c`C^i=jW!DWMt;0 f$CqRzmc-{LX2+-Gr-I!zIUv1>QDXDebaiF`n`my2