From cef34ecf50c407ce86d68603b9436f8131bc81dc Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Sat, 20 Dec 2025 02:35:07 +0100 Subject: [PATCH 1/2] fix frostbite --- data/battle_anim_scripts.s | 11 + .../ball_caught_indicator.png | Bin 0 -> 415 bytes graphics/battle_interface/ball_display.png | Bin 0 -> 444 bytes graphics/battle_interface/expbar.png | Bin 0 -> 422 bytes .../healthbox_doubles_frameend.png | Bin 0 -> 398 bytes .../healthbox_doubles_frameend_bar.png | Bin 0 -> 406 bytes .../battle_interface/healthbox_elements.png | Bin 5416 -> 0 bytes graphics/battle_interface/hpbar.png | Bin 0 -> 460 bytes graphics/battle_interface/hpbar_anim.png | Bin 0 -> 454 bytes graphics/battle_interface/misc.png | Bin 0 -> 412 bytes graphics/battle_interface/misc_frameend.png | Bin 0 -> 395 bytes graphics/battle_interface/status.png | Bin 0 -> 629 bytes graphics/battle_interface/status2.png | Bin 0 -> 629 bytes graphics/battle_interface/status3.png | Bin 0 -> 629 bytes graphics/battle_interface/status4.png | Bin 0 -> 631 bytes graphics/interface/status_icons.png | Bin 452 -> 451 bytes .../summary_screen/status_ailment_icons.png | Bin 450 -> 448 bytes include/battle_anim_scripts.h | 1 + include/config/battle.h | 2 +- include/constants/party_menu.h | 15 +- include/graphics.h | 2 +- src/battle_anim.c | 1 + src/battle_interface.c | 204 ++++++++++++++---- src/data/party_menu.h | 37 ++-- src/graphics.c | 14 +- src/party_menu.c | 2 + src/pokemon_summary_screen.c | 83 +++---- 27 files changed, 256 insertions(+), 116 deletions(-) create mode 100644 graphics/battle_interface/ball_caught_indicator.png create mode 100644 graphics/battle_interface/ball_display.png create mode 100644 graphics/battle_interface/expbar.png create mode 100644 graphics/battle_interface/healthbox_doubles_frameend.png create mode 100644 graphics/battle_interface/healthbox_doubles_frameend_bar.png delete mode 100644 graphics/battle_interface/healthbox_elements.png create mode 100644 graphics/battle_interface/hpbar.png create mode 100644 graphics/battle_interface/hpbar_anim.png create mode 100644 graphics/battle_interface/misc.png create mode 100644 graphics/battle_interface/misc_frameend.png create mode 100644 graphics/battle_interface/status.png create mode 100644 graphics/battle_interface/status2.png create mode 100644 graphics/battle_interface/status3.png create mode 100644 graphics/battle_interface/status4.png diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 8432d8d64..e45c00ac2 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -28326,6 +28326,17 @@ gBattleAnimStatus_Nightmare:: clearmonbg ANIM_DEF_PARTNER end +gBattleAnimStatus_Frostbite:: + playsewithpan SE_M_ICY_WIND, 0 + loadspritegfx ANIM_TAG_ICE_CRYSTALS + monbg ANIM_DEF_PARTNER + splitbgprio ANIM_TARGET + call IceCrystalEffectShort + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 5, 7, 0, RGB(0, 20, 31) + waitforvisualfinish + clearmonbg ANIM_DEF_PARTNER + end + gBattleAnimGeneral_StatsChange:: createvisualtask AnimTask_StatsChange, 5 waitforvisualfinish diff --git a/graphics/battle_interface/ball_caught_indicator.png b/graphics/battle_interface/ball_caught_indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..bdca9c92c83b127df6113637898f595e4feba946 GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^93afW3?x5a^xFxf7>k44ofy`glX(ebD+Kt2xB>+& zEiM25|9|!D-sa|RFUP2$tf>E2gZ^)Eyq6VK{C`c<)#m@tEYGgt_#b7t#?cF?-qF$V z|NndUu5LNHx43#rb5K^2f+d4xkmLVn4FBg$aXkC~X!21wB1Zk*y^?T5jQXWZd*Fx| z^*vjk!4Wa)pA`qeQLe@=P#EcYx;Tb#%uG&jUT2`C|h91){_?_NnbB1Zkvr9E&& zjQXCf&)|p{_0Nif;3!vP7buLpJY5_^B&N3ZJ904?axgnDPWu1<;abOUDJvBwrZ})Z zc(-ELt5dO;?+YrL8fT`xb2eGKr{k0>#}~#7TWPVAj0#VkFIPDKey=b0m9eUTsm^q- RxC_u!22WQ%mvv4FO#r8j%8LL1 literal 0 HcmV?d00001 diff --git a/graphics/battle_interface/expbar.png b/graphics/battle_interface/expbar.png new file mode 100644 index 0000000000000000000000000000000000000000..773f2c1ad6fba7b963d5d9f42beed8b6b90e152c GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^9ze{&!3-pGvppq&6k~CayA#8@b22Z1Y=r=y5Lcj} zrKRQn|NpO^-P_#U?d2F1loj>=YS8~Jj`y;nivO>Py4w8zndR9v9RH&%*Eo6s)jK*m z{{MgP-qkHf_ZC-AX%5OtQm|yO408PcjN$*BDUN6VA5A_AN5rV#yH^s9h*7_EX%8F` zqrPYBGdLnf{j=gAILg)71qve*PZ!4!jfrc|Z{%e#;5lsYf5IZ!FaPJuGSw@jK1frL uTxqj1X62cii-T5%Xie=hU$S=@Z)7c}uXg2uOWuJ%{S2P2elF{r5}E+(DZsG+ literal 0 HcmV?d00001 diff --git a/graphics/battle_interface/healthbox_doubles_frameend.png b/graphics/battle_interface/healthbox_doubles_frameend.png new file mode 100644 index 0000000000000000000000000000000000000000..80754d8cb91e5049d6fef1435d9e8bb6a7bee6d5 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^93afW3?x5a^xFxf7>k44ofy`glX(ebD+Kt2xB>+& zEiM25|9|!D-sa|RFUP2$tf>E2gZ^)Eyq6VK{C`c<)#m@tEYGgt_#b7t#?cF?-qF$V z|NndUu5LNHx43#rb5K^2f+d4xkmLVn4FBg$aXkC~X!21wB1Zk*y^?T5jQXWZd*Fx| z^*vjk!4Wa)pA`qeQLe@=P#DR0x;Tb#%uEKA1fW?*_Gp=8k3(xNegQIvt9RhKy} T=Vpl?P#uG(tDnm{r-UW|MIo_f literal 0 HcmV?d00001 diff --git a/graphics/battle_interface/healthbox_doubles_frameend_bar.png b/graphics/battle_interface/healthbox_doubles_frameend_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a19f138f16a6ac5007a182ab2a2fc756618351 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^93afW3?x5a^xFxf7>k44ofy`glX(ebD+Kt2xB>+& zEiM25|9|!D-sa|RFUP2$tf>E2gZ^)Eyq6VK{C`c<)#m@tEYGgt_#b7t#?cF?-qF$V z|NndUu5LNHx43#rb5K^2f+d4xkmLVn4FBg$aXkC~X!21wB1Zk*y^?T5jQXWZd*Fx| z^*vjk!4Wa)pA`qeQLe@=P#CFrx;Tb#%uE)ugK9v&S{ crH-r&mFJl)jM|<`0o5~jy85}Sb4q9e01b?_tpET3 literal 0 HcmV?d00001 diff --git a/graphics/battle_interface/healthbox_elements.png b/graphics/battle_interface/healthbox_elements.png deleted file mode 100644 index 5e22fb75e2315b65a5e1d7af19c5765cfebd2dff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5416 zcma)9byU<_*Zz@?bW6(6(j7xdH$#YY3P>q2Lk~TSgmfw(jdZtkBV7Ul(h^FSq>KQ?7g4Ap1s#uYe#59mGN!h+pQM+$lsu%J%t-NxbX+vuzXgpYA5WR@}_t6_m7olwv}K>83; z|LfPybb#MbhehB?Y&uRV$Km-aYh z-cbE%^J)7P^tZUD*0pHY@OhV=oWofMfC^$OYsA^)}c_#NR~pav!JHGVxk{qUj1 z&NcD!(}A%&sMk$~bE9m2|EbhWEKz$Fr8mgd--V_%^!~&6NjpX5XJYbRo?$xk>&;}` zhdzrr_5yh~NK9M*ihq#iJ5cIc}% zwd^j)r2evIgf7rmD$wIN(C02=Q0hfG98+*kRR5MIe)<(t+}o9?$QP$B8aFg6zs_$% z&*!uN6WOW`t4vzg!qfNbXSbY=9t6JojO29yhxpZm{MbHjeG%#91Q)T>fGqz5ZVBZ{p z@IA~^&+lkc^82HRP)5LXR9ZBmxg&|19$&GBnL}zw? zI5IU-o-D(|r_Kq&JF!cZ>THG(VRXH0b{~IQeS=yG?A_np@8~YSmDtP-I=ByBBAxJ$ zzY%l}3|{zFnd?`=U&8kytwjEne(dabhe!f?JHdwLaI_P(3GLnVB+jXbt0~hGn{)Af z&&5+px&Deb9-R)o0dYx2q~IaIu&2dIT^dy8e^Wd4`Xn8XRY*^e*zvrFN&Cy*>R z#4svvuV};fryg{}r_@coSi{1|TZNw zRbPXnl4Zq&9*{qyetxyfXw!74P*Sd>M)K7y!2%W zjk?GZ9Ckc4F1$6C4Wlkbq;gKSu6|PG2C-KvPkx3WAkrn*V^N>^N_oK&8~T6-t08GN zw|s4N?6V@>;uMgP!|PO&vtrL`zNAIl#=Z!>mM1ri6Yxczs}#9OGWlRCFT<4z{3&aL z93p+H=(vUHEy>1;rLS0q_WK{LlWGqT;SKd91|T#uBTZ!q<|MM_QECJaO@%zmm^{n! zll~;%TU{ih{x4u*y*v7>iu1!BdWaj6M7LZ=<~43D3y0O0ZM6e?d_AQ;_s9sp)5NQj zJ;!kBfu=-_MT6{8KTy?ATX}Nt)L*YX&#LmMZ2i-9pVe0#LO8RxRU=j#!2E-o+ATL@ zf+>yiSTrIFBNg&L=W1aMc8{D`j4<;#^1)^LshV4R@C)D7COFX0D=YN{zvq>P>N&cA z6J*Tp%aymZS3!vvfq*IukC#9*uKjhNg#(=-DbmKckq{1Nh|n}0Zl=5yO#QyChhs;^ z6nJ0*N419ahGokTi4~oS&V~$Q8=#i(RIF^FrxumAtKJqFb{9X zlvW!dp)`Sz?vbD3Nn~4n#DSg={Muv2lJHPGXCQ)r+ubSG^AQU%o~DTq*f~`2(&4Sk zJLN_`r1Ykr;uIK-aq+d)Gv(e*rJ@M+J7%suwE$}Kh-k}uoySV@XaUfPZy~ov?yah3 z*~e%WF5W^>XP$L?eXkL3IfkQbwYAybLP6A@N>v!BucIW{`4r5O)|6yqQ7o9dOygQ~ zCg<5^>2-U!T_dh7P@Dr)_Evj#&N1J0+$VK#3~rv7NRa7QE?D2DzB8L8Rl*D8h8$q7 z#^xL+UBMfFnQb?2NtMCi{*8~mmXAQRS#=*#hs#)y&iA7;x`;72fCHZ`JI_*Jr@TU8 z@xnAA6hr|d|0eGJdcs_0_klhRIv~`q>5a(Bs)%T zF+IDW$PMAzrBh+4pYzTN;JxC*=3+1Goh9O`A)h_I7Q;&7#9>=7I0M7fTYhhiQCX8< z3p`AfHU3ag%50y?s66IGxzUdkMIEa-sK3L`u;~=X+ZEzCLm8FT`Mf-;D1OE-!rJX< zyYprKK_$M+999GS-VI1*BW?G97dKHC#H!*JC}!r3bQ~R zykg46leR&g8($|EcskL1G;Au zuY<0PnM1WHjRwxX-s&)XhpsmieM5DyFl2Al$4RghaWrwFsBi~zUv4;bO1%OJR35J) zJyWll7}%HPXV;X$aUTx*`O4`?RB64>1*_wW)pdsUYB9Ksyd=$@V3FW`d#Vz^hs=I- zIYn#YP==X^mlES!;~Ml`UWn=dvoAZWZ85&y$_LL=ldyrdk%3b(Q^~1a#zby~&?bGC zfZb!>d(~T!Z{08rZ{0=eVfgxr>cSPD*uGq1kZ}U%9?eqE-4q8Uil!fhhaWP}!YG;~ z$DED-Ean~AgWVdEm}v1WX%^5C#sxLp*8##-i87{ktEqT2ac5>H119eX z&+V|Utpme~274B0lA_9eu;@N2*Nf-NYUvSEsnyih`jfw@kJQF#Um_kxMu(7uKdP%9 z*xN(~cxucvjFHBo)Bz%oaole(IV9PA2P%z26@dUeALHf-o0yg{x z+**O5qcn#7fi6W@q|Pp zz@m;YPWRyn@)0SE4$^FgYRCF(ellj0Ay4_v^K`BJz^~kCoN8xggvSpX-Hb2ilh(X0 zlo)16XHl)J92lU*O(z>PH7ED4mtD~kp#*d+qi1v|bLeVW+MMF8cyBW+POu88;>i~R z2IW_iO0=H6)p}}}NHc9|F=||(dXg%aI-k9!jx`5E)^~8kd6j7pgPyc>MP!3t)}FaA zA5vi}H?7Uc6+82cz)kuU23D)9)T;R^?S`o=dF0b9?)HE1uBrE3hyRMp|$k6%sH8bPWfHPIByvH*}bGR8~?}yx9rVqc_F-E05?(O zpNK_}wP-XNL+X%QU5j41btf0w~8I4kO5PEi;fr&JD z?2GS95k+MxclrP()^?`<`J-G_6y#DolK69&pGnvI38pI9De||>YdPn^d=tG?7X*z> z;`rn+rYxF~d4 zGkg`!B-q+W(kNVue!zJ~;6cepQ86uPpIA`>^@iYZ{oXS=*^VEg#Blgw{MwEf^@B5CO zrI@*8=c*i~A$cvY?J}9&cf5j`QW6L|Tkg-cqVWO)Lx%@U-@bF*d(iEc+U?V~EBemY z62xl7KPD`*4m21b3xF*n9{D?{_Qtw?bIs>g2a!DO_82E-V;H<`Eo@6cK9F4>Xce1R zefTGj0{=XI4n(YcFW}LwoO4jkGMS3Dng)+4(B*BAhq#W+b&t`=V0{LPH!oI%I#C;m ze~Q1)ID*=MIA|MmPAG_Q72^_+{+qxpQ-RMe$)r(QYyTnKAbpf3aDD!XAUhM^Qpe8) z^D@}B8cDI&b8{r!N_hA;t+2`j7oM3?WqY_dbK?btRLyi_$^0}wD%D>_1FfJ>P!tOX z?Kiki4pbNi|ElM1g+9+dQLj6q0WuBHGM6Oy1cQnhNYKg%h+_rtbC{|7&`pcBOZkY{50m~cqNP8Cu99A2N(XEGP1P+5$~fie z07$eGOQy7&6}WpjO}lzU+(#}RO1LI}NhJLjiAgWh^b8#F`{B|5O{PGSvKEk3IHzXQ z*=TQ7ussBnBj8R}09j}OMF5rM2Pk=VoLW1^`8H5SZg^Jx$IRRY)IHT|aXW@nVO8)5 zo~2{B0#GX7n}_H0Mr9gDvYCD9C~bN{_~reP6bVmC2jgzvlx?kwN^4YT@1jc6#P9IX z)($3yLrId83Py%Q9+H#aQK7Bl@m!THHz)6dTQqJfhu8vceF!{tLwaMSW5DXamDiPH zr8ZPdQc`}yRAbvV!xK}a8BQ}V^a&ngM$i|oS+cRH+&;k#;To05dX@rFUZ@c|bW}9b zr*)fZ4IM!&NI<-am;*B2AU`C5kMp=dHIIjZTI;_@QTWd&^7ed`&9Hj>@{J}^jMO74 z#sJjKzk(y-0+2J`Gw8u?=&4t`j~oAL3m+l;FKvXl(f}vs+PlNh528Uh38%WB_X8b+ za0l%E6mOgHj>Mg?wa2lmp0tzwrxBhe5B^{5Z1BG^ri|Ae`ad&@@n7cmztt?zs)}U3 zr`oS^bQgsv=aOLe4Vee*l}TJly~Q diff --git a/graphics/battle_interface/hpbar.png b/graphics/battle_interface/hpbar.png new file mode 100644 index 0000000000000000000000000000000000000000..29f458a8ca2de1084b474fdbaf5c6052c6cca9f7 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^2|&!j!3-n~A9C3ODaPU;cPEB*=VV?2*$M$ZA+A6{ zOH0fD|Nmb-ySKTy+siR3C@bp!)u8`d9PedC75`rob+!5bGt0AUIQ~aju5t7Ns&{mB z{Qv*ny{lV}?k%pK(j1hPq+rQl8RYo?8N>fMQykC!Kbm|Lj)+mecdsNI5u<+T(jGV> zMt#rLXK+M}`e(&KaFnaD3lv6Co-U3d8WZl i$w+)neRJ&o7fg11yg#LdSR8=1FnGH9xvXSA+g|7h}2I3h;<-o27=M2z~SOMBpm z81+3{pTQ9^>Yo({!BMWpE>IYSc)B=-SoEH~Y{_-NfQL0uc*E-bcm8k7G}0_;%$OC< z$usTRtZS0jcC~H&Hu++PiBzxKvGR=(I%3^N_rSA+g|7h}2I3h;<-o27=M2z~SOMBpm z81+3{pTQ9^>Yo({!BMWpE>IY0dAc};XiQ8_IKViAgTd)n!Abr(2XibKjk44ofy`glX(ebD+Kt2xB>+& zEiM25|9|!D-sa|RFUP2$tf>E2gZ^)Eyq6VK{C`c<)#m@tEYGgt_#b7t#?cF?-qF$V z|NndUu5LNHx43#rb5K^2f+d4xkmLVn4FBg$aXkC~X!21wB1Zk*y^?T5jQXWZd*Fx| z^*vjk!4Wa)pA`qeQLe@=P#8&ix;Tb#%uG&jU_N6oi}zGQ@}ZLrs}mF07+4oD7$&%H RCfMQykC!Kbm|Lj)+mecdsNI5u<+T(jGV> zMt#rLXK+M}`e(&KaFnaD3m8U>%$_ceAr`%@6Lw2AEAX^_=GkQR@>PrWtn20w`azIHSU7vJ_~1DW!|9q?uk~`ezvBj>mME# zPcJRrs3+23x2*R{nNNdGl<$oHjJHxRhJEjP8@q8|BaghD`MZ-x2j_X@uF8w%XOrmV4lc!&VBW5pnJSO*c)&- z%s28B6LhLqlJ)57xKpy=#65?%m(~|3?1^rjfBr9%vke#1Z+6C+z#wGsboFyt=akR{ E0Pb`n*#H0l literal 0 HcmV?d00001 diff --git a/graphics/battle_interface/status2.png b/graphics/battle_interface/status2.png new file mode 100644 index 0000000000000000000000000000000000000000..8b6d9a5a28f28ff61281ec1797415ad94c98caf9 GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^5fMQykC!Kbm|Lj)+mecdsNI5u<+T(jGV> zMt#rLXK+M}`e(&KaFnaD3m8U>%$_ceAr`%@6Lw2AEAX^_<}up+;!Trr_uR;WZ-3(# z?`(3*`23J_&U}?E2CX+;XJ|0g`WS20?U`|4jl1Bv&%zm3nKx*@d!m)KpRK9s`iFWMViE$h8f=F^}PpnuPL4->MS2lO?1_HE;nH>m?yHGb6k1fA-YWIeh%?vyMzanIrHrS%00d!k$Cpa09`UdPja_(VMuFbEkuUHx3vIVCg! E0LD8c-v9sr literal 0 HcmV?d00001 diff --git a/graphics/battle_interface/status3.png b/graphics/battle_interface/status3.png new file mode 100644 index 0000000000000000000000000000000000000000..c07e75d1b5dd70987c6ae2eaa5e73e005a332414 GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^5fMQykC!Kbm|Lj)+mecdsNI5u<+T(jGV> zMt#rLXK+M}`e(&KaFnaD3m8U>%$_ceAr`%@6Lw2AEAX^_=GkQZ;$4Gv^Ige;?|WMViE$h8f=F^}PpnuPL4->MS2lO?1_HE;nH>m?yHGb6k1fA-YWIeh%?vyMzanIrHrS%00d!k$Cpa09`eSlwPQ>%I@FbEkuUHx3vIVCg! E0D~1IJpcdz literal 0 HcmV?d00001 diff --git a/graphics/battle_interface/status4.png b/graphics/battle_interface/status4.png new file mode 100644 index 0000000000000000000000000000000000000000..d17686fc87cceb0d3a78bc048f4df633c1c37af4 GIT binary patch literal 631 zcmeAS@N?(olHy`uVBq!ia0vp^5fMQykC!Kbm|Lj)+mecdsNI5u<+T(jGV> zMt#rLXK+M}`e(&KaFnaD3m8U>te!58Ar`%@6MA`D6nI*#n|TrzG0%9wpmL8v#iHSN ze&Ju%wFTE7Xz%IYcITi-nt0+OhA)O^m;Csc#I#w?)#AMWf>8bg%XUm&z2dJF2UpzT z_VcmV&K}(r!0>B^Sa+Qqp72ejSAHqNPb_{O%S z`{!J)kHxb04&?s$u=DAjm^rOX7mlYK>gJ585_wn?8lYdTFi(-+Man{cZ644)x(ELs zP++J%r4s4F@wc-?K~t&da-&i;^H%TuhZ;ZRiPqVD=MG>JT-o#W)OKJXGI+ZBxvXcV}Vryxa=6+F~hzo+ie~oej5c~h>dcP0DlHGK!;smlPwG&S{R@_5^qCm zjNX{xJd~X#kJZtoND=W09PILb^Z<$tkgDf=t3qy~fU|DlJ#si^xG!b5$;Z0c(UQcK zj@i+E8K7Jy!~ytnY0&_#25`$3_L0LejeaNvDKc5hWla=y6Eda%l252)Py?)>m0Ws2 zRbRG9Ls(QTv{23kXbI)}D0@vFe`pWHogz@gg9&uRaO?w!v;d&`!wL=HwSXO?JLYG7 tFogK~!$=>vLPsC^6&irn2X_pA%pcY>B0crmXa)cP002ovPDHLkV1mnnpThtE delta 400 zcmV;B0dM}p1H=O%iBL{Q4GJ0x0000DNk~Le00031000081Oos70OWW)jFB!se@{t7 zK~y-6wUe<*#V{0xGk6gZ@g06bDW&uoB*fjJPtYN*PCme$;^ydl$GA8 uLrC|b7EFea0747ahVUPrA;<`w60Ps1d2UkyceoYB?Zv(7i0$8Lf z3>0b~4J-@{FZnvATZ4#I)zc+I&gIk-xs=yGh439J43LKrKo8qi}*$8=j1vFSQM zdLkY`5fN*^0D%gBfEcF$B25de(6&%Oy(APFYmC{L?$|{fs-D$z;*%iKC$Lj0`#uBk ztN>Oo^@#%2d*J8*7S?E$tj9VPXarlF=xZ6pq`RSpn1!HRKq^5a>wYS!wyeK+|7Vm6Un`!p#CeYtYH!LX%_$HG#-9iM=*F&kS}AOq0=iVqkw7 zlVuGpa~Z$@v=$d8y4a0iG)-b}EYB;0Hw&BFJ?skuySI5BmYqOuV?bn(*p*}g!4x1c znkKQgj^~5H=K%!@TJH?p!MP$l7X#W8fI~qC@dYh6nGRq!O=9mn&o_f(3lG(L^~J!` zU$w1Legg0-;1vS#v1A6vvt%|+V(VnFFx;SxhScGKD|AJT8(OF3mI0(3nyW`3smUa% z8g60000= nValidMons) + if (i >= nValidMons) { gSprites[ballIconSpritesIds[i]].oam.tileNum += 1; gSprites[ballIconSpritesIds[i]].sIsEmptyBall = TRUE; @@ -1650,6 +1745,11 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) statusGfxPtr = GetBattleInterfaceGfxPtr(GetStatusIconForBattlerId(B_INTERFACE_GFX_STATUS_FRZ_BATTLER0, battlerId)); statusPalId = PAL_STATUS_FRZ; } + else if (status & STATUS1_FROSTBITE) + { + statusGfxPtr = GetBattleInterfaceGfxPtr(GetStatusIconForBattlerId(B_INTERFACE_GFX_STATUS_FRB_BATTLER0, battlerId)); + statusPalId = PAL_STATUS_FRZ; + } else if (status & STATUS1_PARALYSIS) { statusGfxPtr = GetBattleInterfaceGfxPtr(GetStatusIconForBattlerId(B_INTERFACE_GFX_STATUS_PAR_BATTLER0, battlerId)); @@ -1679,7 +1779,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) FillPalette(sStatusIconColors[statusPalId], pltAdder + OBJ_PLTT_OFFSET, PLTT_SIZEOF(1)); CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_OFFSET + pltAdder], (u16 *)OBJ_PLTT + pltAdder, PLTT_SIZEOF(1)); CpuCopy32(statusGfxPtr, (void *)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * TILE_SIZE_4BPP), 3 * TILE_SIZE_4BPP); - if (GetBattlerCoordsIndex(battlerId) == TRUE || GetBattlerSide(battlerId) == B_SIDE_OPPONENT) + if (GetBattlerCoordsIndex(battlerId) == BATTLE_COORDS_DOUBLES || !IsOnPlayerSide(battlerId)) { if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars) { @@ -1701,11 +1801,11 @@ static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId) switch (statusElementId) { case B_INTERFACE_GFX_STATUS_PSN_BATTLER0: - if (battlerId == 0) + if (battlerId == B_BATTLER_0) ret = B_INTERFACE_GFX_STATUS_PSN_BATTLER0; - else if (battlerId == 1) + else if (battlerId == B_BATTLER_1) ret = B_INTERFACE_GFX_STATUS_PSN_BATTLER1; - else if (battlerId == 2) + else if (battlerId == B_BATTLER_2) ret = B_INTERFACE_GFX_STATUS_PSN_BATTLER2; else ret = B_INTERFACE_GFX_STATUS_PSN_BATTLER3; @@ -1740,6 +1840,16 @@ static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId) else ret = B_INTERFACE_GFX_STATUS_FRZ_BATTLER3; break; + case B_INTERFACE_GFX_STATUS_FRB_BATTLER0: + if (battlerId == 0) + ret = B_INTERFACE_GFX_STATUS_FRB_BATTLER0; + else if (battlerId == 1) + ret = B_INTERFACE_GFX_STATUS_FRB_BATTLER1; + else if (battlerId == 2) + ret = B_INTERFACE_GFX_STATUS_FRB_BATTLER2; + else + ret = B_INTERFACE_GFX_STATUS_FRB_BATTLER3; + break; case B_INTERFACE_GFX_STATUS_BRN_BATTLER0: if (battlerId == 0) ret = B_INTERFACE_GFX_STATUS_BRN_BATTLER0; diff --git a/src/data/party_menu.h b/src/data/party_menu.h index fd5c4424f..50aeb6283 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -37,9 +37,9 @@ enum static const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] = { - [PARTY_BOX_LEFT_COLUMN] = + [PARTY_BOX_LEFT_COLUMN] = { - BlitBitmapToPartyWindow_LeftColumn, + BlitBitmapToPartyWindow_LeftColumn, { // The below are the x, y, width, and height for each of the following info 24, 11, 40, 13, // Nickname @@ -51,9 +51,9 @@ static const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] = }, 12, 34, 64, 16 // Description text (e.g. NO USE) }, - [PARTY_BOX_RIGHT_COLUMN] = + [PARTY_BOX_RIGHT_COLUMN] = { - BlitBitmapToPartyWindow_RightColumn, + BlitBitmapToPartyWindow_RightColumn, { // The below are the x, y, width, and height for each of the following info 22, 3, 40, 13, // Nickname @@ -62,14 +62,14 @@ static const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] = 102, 12, 24, 8, // HP 117, 12, 24, 8, // Max HP 88, 10, 48, 3 // HP bar - }, + }, 77, 4, 64, 16 // Description text }, }; static const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = { - [PARTY_LAYOUT_SINGLE] = + [PARTY_LAYOUT_SINGLE] = { // pokemon coords, held item coords, status coords, pokeball coords { 16, 40, 20, 50, 56, 52, 16, 34}, @@ -79,7 +79,7 @@ static const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = {104, 90, 108, 100, 144, 99, 102, 97}, {104, 114, 108, 124, 144, 123, 102, 121}, }, - [PARTY_LAYOUT_DOUBLE] = + [PARTY_LAYOUT_DOUBLE] = { { 16, 24, 20, 34, 56, 36, 16, 18}, { 16, 80, 20, 90, 56, 92, 16, 74}, @@ -88,7 +88,7 @@ static const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = {104, 82, 108, 92, 144, 91, 102, 89}, {104, 114, 108, 124, 144, 123, 102, 121}, }, - [PARTY_LAYOUT_MULTI] = + [PARTY_LAYOUT_MULTI] = { { 16, 24, 20, 34, 56, 36, 16, 18}, { 16, 80, 20, 90, 56, 92, 16, 74}, @@ -97,7 +97,7 @@ static const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = {104, 82, 106, 92, 144, 91, 102, 89}, {104, 106, 106, 116, 144, 115, 102, 113}, }, - [PARTY_LAYOUT_MULTI_SHOWCASE] = + [PARTY_LAYOUT_MULTI_SHOWCASE] = { { 16, 32, 20, 42, 56, 44, 16, 26}, {104, 34, 106, 44, 144, 43, 102, 41}, @@ -938,8 +938,7 @@ static const union AnimCmd sSpriteAnim_StatusFaint[] = ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_Blank[] = -{ +static const union AnimCmd sSpriteAnim_StatusFrostbite[] = { ANIMCMD_FRAME(28, 0), ANIMCMD_END }; @@ -953,7 +952,7 @@ static const union AnimCmd *const sSpriteTemplate_StatusCondition[] = sSpriteAnim_StatusBurn, sSpriteAnim_StatusPokerus, sSpriteAnim_StatusFaint, - sSpriteAnim_Blank, + sSpriteAnim_StatusFrostbite, }; static const struct CompressedSpriteSheet sSpriteSheet_StatusIcons = @@ -977,14 +976,14 @@ const struct SpriteTemplate gSpriteTemplate_StatusIcons = .callback = SpriteCallbackDummy, }; -static const bool8 sMultiBattlePartnersPartyMask[PARTY_SIZE + 2] = +static const bool8 sMultiBattlePartnersPartyMask[PARTY_SIZE + 2] = { - FALSE, - TRUE, - FALSE, - FALSE, - TRUE, - TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, FALSE, }; diff --git a/src/graphics.c b/src/graphics.c index 965371394..b8f67ecbb 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -419,7 +419,19 @@ const u32 gUnusedTilemap_BasicFrame[] = INCBIN_U32("graphics/unused/basic_frame. const u16 gBattleInterface_Healthbox_Pal[] = INCBIN_U16("graphics/battle_interface/healthbox.gbapal"); const u16 gBattleInterface_Healthbar_Pal[] = INCBIN_U16("graphics/battle_interface/healthbar.gbapal"); -const u8 gBattleInterface_Gfx[] = INCBIN_U8("graphics/battle_interface/healthbox_elements.4bpp"); +const u8 gHealthboxElementsGfxTable[][32] = INCBIN_U8("graphics/battle_interface/hpbar.4bpp", + "graphics/battle_interface/expbar.4bpp", + "graphics/battle_interface/status.4bpp", + "graphics/battle_interface/misc.4bpp", + "graphics/battle_interface/hpbar_anim.4bpp", + "graphics/battle_interface/misc_frameend.4bpp", + "graphics/battle_interface/ball_display.4bpp", + "graphics/battle_interface/ball_caught_indicator.4bpp", + "graphics/battle_interface/status2.4bpp", // these three duplicate sets of graphics are for the opponent/partner Pokémon + "graphics/battle_interface/status3.4bpp", + "graphics/battle_interface/status4.4bpp", + "graphics/battle_interface/healthbox_doubles_frameend.4bpp", + "graphics/battle_interface/healthbox_doubles_frameend_bar.4bpp"); const u32 gBattleInterfaceGfx_UnusedWindow3[] = INCBIN_U32("graphics/battle_interface/unused_window3.4bpp.lz"); const u32 gBattleInterfaceGfx_UnusedWindow4[] = INCBIN_U32("graphics/battle_interface/unused_window4.4bpp.lz"); diff --git a/src/party_menu.c b/src/party_menu.c index ac11a0d6d..4d7d8ebac 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1989,6 +1989,8 @@ u8 GetAilmentFromStatus(u32 status) return AILMENT_FRZ; if (status & STATUS1_BURN) return AILMENT_BRN; + if (status & STATUS1_FROSTBITE) + return AILMENT_FRB; return AILMENT_NONE; } diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index a2e23dd4b..64d588d80 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -370,13 +370,13 @@ static const struct OamData sMoveSelectionCursorOamData = .paletteNum = 0 }; -static const union AnimCmd sMoveSelectionCursorOamAnim_Red[] = +static const union AnimCmd sMoveSelectionCursorOamAnim_Red[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sMoveSelectionCursorOamAnim_Blue[] = +static const union AnimCmd sMoveSelectionCursorOamAnim_Blue[] = { ANIMCMD_FRAME(0x20, 20), ANIMCMD_JUMP(0), @@ -403,49 +403,49 @@ static const struct OamData sStatusAilmentIconOamData = { .paletteNum = 0 }; -static const union AnimCmd sStatusAilmentIconAnim_PSN[] = +static const union AnimCmd sStatusAilmentIconAnim_PSN[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sStatusAilmentIconAnim_PRZ[] = +static const union AnimCmd sStatusAilmentIconAnim_PRZ[] = { ANIMCMD_FRAME(4, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sStatusAilmentIconAnim_SLP[] = +static const union AnimCmd sStatusAilmentIconAnim_SLP[] = { ANIMCMD_FRAME(8, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sStatusAilmentIconAnim_FRZ[] = +static const union AnimCmd sStatusAilmentIconAnim_FRZ[] = { ANIMCMD_FRAME(12, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sStatusAilmentIconAnim_BRN[] = +static const union AnimCmd sStatusAilmentIconAnim_BRN[] = { ANIMCMD_FRAME(16, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sStatusAilmentIconAnim_PKRS[] = +static const union AnimCmd sStatusAilmentIconAnim_PKRS[] = { ANIMCMD_FRAME(20, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sStatusAilmentIconAnim_FNT[] = +static const union AnimCmd sStatusAilmentIconAnim_FNT[] = { ANIMCMD_FRAME(24, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sStatusAilmentIconAnim_Blank[] = +static const union AnimCmd sStatusAilmentIconAnim_Blank[] = { ANIMCMD_FRAME(28, 20), ANIMCMD_JUMP(0), @@ -478,73 +478,73 @@ static const struct OamData sHpOrExpBarOamData = { .paletteNum = 0 }; -static const union AnimCmd sHpOrExpAnim_0[] = +static const union AnimCmd sHpOrExpAnim_0[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_1[] = +static const union AnimCmd sHpOrExpAnim_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_2[] = +static const union AnimCmd sHpOrExpAnim_2[] = { ANIMCMD_FRAME(2, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_3[] = +static const union AnimCmd sHpOrExpAnim_3[] = { ANIMCMD_FRAME(3, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_4[] = +static const union AnimCmd sHpOrExpAnim_4[] = { ANIMCMD_FRAME(4, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_5[] = +static const union AnimCmd sHpOrExpAnim_5[] = { ANIMCMD_FRAME(5, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_6[] = +static const union AnimCmd sHpOrExpAnim_6[] = { ANIMCMD_FRAME(6, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_7[] = +static const union AnimCmd sHpOrExpAnim_7[] = { ANIMCMD_FRAME(7, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_8[] = +static const union AnimCmd sHpOrExpAnim_8[] = { ANIMCMD_FRAME(8, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_9[] = +static const union AnimCmd sHpOrExpAnim_9[] = { ANIMCMD_FRAME(9, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_10[] = +static const union AnimCmd sHpOrExpAnim_10[] = { ANIMCMD_FRAME(10, 20), ANIMCMD_JUMP(0), }; -static const union AnimCmd sHpOrExpAnim_11[] = +static const union AnimCmd sHpOrExpAnim_11[] = { ANIMCMD_FRAME(11, 20), ANIMCMD_JUMP(0), @@ -584,7 +584,7 @@ static const struct OamData sPokerusIconObjOamData = { .paletteNum = 0 }; -static const union AnimCmd sPokerusIconObjAnim0[] = +static const union AnimCmd sPokerusIconObjAnim0[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_JUMP(0), @@ -614,7 +614,7 @@ static const struct OamData sStarObjOamData = .paletteNum = 0 }; -static const union AnimCmd sStarObjAnim0[] = +static const union AnimCmd sStarObjAnim0[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_JUMP(0), @@ -633,14 +633,14 @@ static const u32 sBgTilemap_MovesPage[] = INCBIN_U32( "graphics/summary_screen/m static const u8 *const sEggHatchTimeTexts[] = { gText_PokeSum_EggHatch_LongTime, gText_PokeSum_EggHatch_SomeTime, - gText_PokeSum_EggHatch_Soon, + gText_PokeSum_EggHatch_Soon, gText_PokeSum_EggHatch_AlmostReady }; static const u8 *const sEggOriginTexts[] = { - gText_PokeSum_EggOrigin_DayCare, + gText_PokeSum_EggOrigin_DayCare, gText_PokeSum_EggOrigin_Trade, - gText_PokeSum_EggOrigin_TravelingMan, + gText_PokeSum_EggOrigin_TravelingMan, gText_PokeSum_EggOrigin_Trade, gText_PokeSum_EggOrigin_NicePlace, gText_PokeSum_EggOrigin_Spa, @@ -654,7 +654,7 @@ static const u8 sPrintMoveTextColors[][3] = { {0, 5, 6} }; -static const struct BgTemplate sBgTempaltes[] = +static const struct BgTemplate sBgTempaltes[] = { { .bg = 0, @@ -746,7 +746,7 @@ static const struct WindowTemplate sWindowTemplates_Permanent_Bg1[] = } }; -static const struct WindowTemplate sWindowTemplates_Permanent_Bg2[] = +static const struct WindowTemplate sWindowTemplates_Permanent_Bg2[] = { { .bg = 2, @@ -777,7 +777,7 @@ static const struct WindowTemplate sWindowTemplates_Permanent_Bg2[] = }, }; -static const struct WindowTemplate sWindowTemplates_Info[] = +static const struct WindowTemplate sWindowTemplates_Info[] = { [POKESUM_WIN_INFO_3 - 3] = { .bg = 0, @@ -817,7 +817,7 @@ static const struct WindowTemplate sWindowTemplates_Info[] = }, }; -static const struct WindowTemplate sWindowTemplates_Skills[] = +static const struct WindowTemplate sWindowTemplates_Skills[] = { [POKESUM_WIN_SKILLS_3 - 3] = { .bg = 0, @@ -857,7 +857,7 @@ static const struct WindowTemplate sWindowTemplates_Skills[] = }, }; -static const struct WindowTemplate sWindowTemplates_Moves[] = +static const struct WindowTemplate sWindowTemplates_Moves[] = { [POKESUM_WIN_MOVES_3 - 3] = { .bg = 0, @@ -897,7 +897,7 @@ static const struct WindowTemplate sWindowTemplates_Moves[] = }, }; -static const struct WindowTemplate sWindowTemplates_Dummy[] = +static const struct WindowTemplate sWindowTemplates_Dummy[] = { { .bg = 255, @@ -2405,7 +2405,7 @@ static const struct StatData sStatData[] = { .monDataHyperTrained = MON_DATA_HYPER_TRAINED_HP, .pssStat = PSS_STAT_HP, }, - [STAT_ATK] = + [STAT_ATK] = { .monDataStat = MON_DATA_ATK, .monDataStat2 = MON_DATA_ATK2, @@ -2414,7 +2414,7 @@ static const struct StatData sStatData[] = { .monDataHyperTrained = MON_DATA_HYPER_TRAINED_ATK, .pssStat = PSS_STAT_ATK, }, - [STAT_DEF] = + [STAT_DEF] = { .monDataStat = MON_DATA_DEF, .monDataStat2 = MON_DATA_DEF2, @@ -2423,7 +2423,7 @@ static const struct StatData sStatData[] = { .monDataHyperTrained = MON_DATA_HYPER_TRAINED_DEF, .pssStat = PSS_STAT_DEF, }, - [STAT_SPATK] = + [STAT_SPATK] = { .monDataStat = MON_DATA_SPATK, .monDataStat2 = MON_DATA_SPATK2, @@ -2432,7 +2432,7 @@ static const struct StatData sStatData[] = { .monDataHyperTrained = MON_DATA_HYPER_TRAINED_SPATK, .pssStat = PSS_STAT_SPA, }, - [STAT_SPDEF] = + [STAT_SPDEF] = { .monDataStat = MON_DATA_SPDEF, .monDataStat2 = MON_DATA_SPDEF2, @@ -2441,7 +2441,7 @@ static const struct StatData sStatData[] = { .monDataHyperTrained = MON_DATA_HYPER_TRAINED_SPDEF, .pssStat = PSS_STAT_SPD, }, - [STAT_SPEED] = + [STAT_SPEED] = { .monDataStat = MON_DATA_SPEED, .monDataStat2 = MON_DATA_SPEED2, @@ -2453,7 +2453,7 @@ static const struct StatData sStatData[] = { }; static void SetStatXPos(u8 stat, u16 xpos) -{ +{ switch (stat) { case STAT_HP: @@ -2529,7 +2529,7 @@ static void BufferEVString(u8 stat) u16 statValue = GetMonData(&sMonSummaryScreen->currentMon, sStatData[stat].monDataEv); u8 *dst = sMonSummaryScreen->summary.statValueStrBufs[sStatData[stat].pssStat]; u8 tmp[20]; - + ConvertIntToDecimalStringN(dst, statValue, STR_CONV_MODE_LEFT_ALIGN, 3); StringAppend(dst, gText_Slash); ConvertIntToDecimalStringN(tmp, MAX_PER_STAT_EVS, STR_CONV_MODE_LEFT_ALIGN, 3); @@ -3952,6 +3952,9 @@ static u8 StatusToAilment(u32 status) if ((status & STATUS1_BURN) != 0) return AILMENT_BRN; + if ((status & STATUS1_FROSTBITE) != 0) + return AILMENT_FRB; + if (CheckPartyPokerus(&sMonSummaryScreen->currentMon, 0)) return AILMENT_PKRS; From 989a56c65a39b7ece04db271a5653f98fb6f96b9 Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Sat, 20 Dec 2025 03:36:42 +0100 Subject: [PATCH 2/2] disable frostbite --- include/config/battle.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/config/battle.h b/include/config/battle.h index 81f611f1e..3a702ef22 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -312,7 +312,7 @@ #define B_TRAINER_CLASS_POKE_BALLS GEN_LATEST // In Gen7+, trainers will use certain types of Poké Balls depending on their trainer class. #define B_TRAINER_MON_RANDOM_ABILITY FALSE // If this is set to TRUE a random legal ability will be generated for a trainer mon #define B_OBEDIENCE_MECHANICS GEN_LATEST // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level -#define B_USE_FROSTBITE TRUE // In PLA, Frostbite replaces Freeze. Enabling this flag does the same here. Moves can still be cherry-picked to either Freeze or Frostbite. Freeze-Dry, Secret Power & Tri Attack depend on this config. +#define B_USE_FROSTBITE FALSE // In PLA, Frostbite replaces Freeze. Enabling this flag does the same here. Moves can still be cherry-picked to either Freeze or Frostbite. Freeze-Dry, Secret Power & Tri Attack depend on this config. #define B_TOXIC_REVERSAL GEN_LATEST // In Gen5+, bad poison will change to regular poison at the end of battles. #define B_TRY_CATCH_TRAINER_BALL GEN_LATEST // In Gen4+, trying to catch a Trainer's Pokémon does not consume the Poké Ball. #define B_SLEEP_CLAUSE FALSE // Enables Sleep Clause all the time in every case, overriding B_FLAG_SLEEP_CLAUSE. Use that for modularity.