From 8a4e07c430931c719cf9e5378f19c42b1b34f6fa Mon Sep 17 00:00:00 2001 From: cawtds Date: Fri, 3 May 2024 18:14:38 +0200 Subject: [PATCH] large refactoring to remove special deoxys handling merged all stringids and string table entries --- asm/macros/battle_script.inc | 4 + charmap.txt | 10 + data/battle_scripts_1.s | 292 +- graphics/battle_interface/dynamax_trigger.png | Bin 0 -> 6864 bytes include/battle.h | 10 +- include/battle_dynamax.h | 2 +- include/battle_interface.h | 16 + include/battle_main.h | 6 +- include/battle_message.h | 22 +- include/battle_scripts.h | 4 - include/constants/battle_string_ids.h | 1897 +++++++++---- include/data.h | 17 + include/decompress.h | 5 - include/trainer_pokemon_sprites.h | 3 +- src/battle_anim_mons.c | 22 +- src/battle_controller_player.c | 1 + src/battle_dynamax.c | 1265 +++++++++ src/battle_gfx_sfx_util.c | 15 +- src/battle_main.c | 304 +++ src/battle_message.c | 2430 ++++++++++------- src/battle_script_commands.c | 10 +- src/battle_util.c | 1348 ++++++--- src/data/wild_encounters.json | 14 +- src/decompress.c | 15 - src/field_effect.c | 4 +- src/hall_of_fame.c | 5 +- src/party_menu.c | 1 + src/pokedex_screen.c | 2 +- src/pokemon_summary_screen.c | 16 +- src/trade_scene.c | 5 +- src/trainer_pokemon_sprites.c | 46 +- 31 files changed, 5727 insertions(+), 2064 deletions(-) create mode 100644 graphics/battle_interface/dynamax_trigger.png create mode 100644 src/battle_dynamax.c diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 164131896..142375e04 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -2217,4 +2217,8 @@ .4byte \ptr .endm + .macro damagenontypes + callnative BS_DamageNonTypes + .endm + diff --git a/charmap.txt b/charmap.txt index 4b1b3008c..08aa4d723 100644 --- a/charmap.txt +++ b/charmap.txt @@ -406,7 +406,17 @@ B_DEF_PREFIX3 = FD 2D B_TRAINER2_LOSE_TEXT = FD 2E B_TRAINER2_WIN_TEXT = FD 2F B_BUFF3 = FD 30 +@ new from pokeemerald +B_TRAINER2_CLASS = FD 31 +B_TRAINER2_NAME = FD 32 +B_PARTNER_CLASS = FD 33 +B_PARTNER_NAME = FD 34 +B_ATK_TRAINER_NAME = FD 35 +B_ATK_TRAINER_CLASS = FD 36 +B_ATK_TEAM1 = FD 37 B_ATK_TEAM2 = FD 38 +B_DEF_NAME = FD 39 +B_DEF_TEAM1 = FD 3A B_DEF_TEAM2 = FD 3B @ indicates the end of a town/city name (before " TOWN" or " CITY") diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 49e668d90..a1427a804 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2789,34 +2789,37 @@ BattleScript_RainContinuesOrEndsEnd:: end2 BattleScript_DamagingWeatherContinues:: - printfromtable gSandstormHailContinuesStringIds + printfromtable gSandStormHailSnowContinuesStringIds waitmessage B_WAIT_TIME_LONG playanimation_var BS_ATTACKER, sB_ANIM_ARG1 setbyte gBattleCommunication, 0 BattleScript_DamagingWeatherLoop:: copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 weatherdamage - jumpifword CMP_EQUAL, gBattleMoveDamage, NULL, BattleScript_DamagingWeatherContinuesEnd - printfromtable gSandstormHailDmgStringIds + jumpifword CMP_EQUAL, gBattleMoveDamage, 0, BattleScript_DamagingWeatherLoopIncrement + jumpifword CMP_COMMON_BITS gBattleMoveDamage, 1 << 31, BattleScript_DamagingWeatherHeal + printfromtable gSandStormHailDmgStringIds waitmessage B_WAIT_TIME_LONG - orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE effectivenesssound hitanimation BS_ATTACKER + goto BattleScript_DamagingWeatherHpChange +BattleScript_DamagingWeatherHeal: + call BattleScript_AbilityPopUp + printstring STRINGID_ICEBODYHPGAIN + waitmessage B_WAIT_TIME_LONG +BattleScript_DamagingWeatherHpChange: + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER tryfaintmon BS_ATTACKER - checkteamslost BattleScript_DamagingWeatherContinuesEnd -BattleScript_DamagingWeatherContinuesEnd:: - jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_WeatherDamageEndedBattle + checkteamslost BattleScript_DamagingWeatherLoopIncrement +BattleScript_DamagingWeatherLoopIncrement:: + jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd addbyte gBattleCommunication, 1 jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamagingWeatherLoop -BattleScript_WeatherDamageEndedBattle:: - bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE - end2 - -BattleScript_SandStormHailEnds:: - printfromtable gSandstormHailEndStringIds - waitmessage B_WAIT_TIME_LONG +BattleScript_DamagingWeatherContinuesEnd:: + bicword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + call BattleScript_ActivateWeatherAbilities end2 BattleScript_SunlightContinues:: @@ -3208,6 +3211,7 @@ BattleScript_WishButFullHp:: BattleScript_IngrainTurnHeal:: playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL printstring STRINGID_PKMNABSORBEDNUTRIENTS +BattleScript_TurnHeal: waitmessage B_WAIT_TIME_LONG orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate BS_ATTACKER @@ -3456,6 +3460,7 @@ BattleScript_PrintPayDayMoneyString:: return BattleScript_WrapTurnDmg:: + jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_DoTurnDmgEnd playanimation BS_ATTACKER, B_ANIM_TURN_TRAP, sB_ANIM_ARG1 printstring STRINGID_PKMNHURTBY waitmessage B_WAIT_TIME_LONG @@ -6167,12 +6172,6 @@ BattleScript_SteelsurgeDefog:: waitmessage B_WAIT_TIME_LONG return -BattleScript_TerrainEnds_Ret:: - printfromtable gTerrainStringIds - waitmessage B_WAIT_TIME_LONG - playanimation BS_ATTACKER, B_ANIM_RESTORE_BG - return - BattleScript_RaiseStatOnFaintingTarget:: statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_RaiseStatOnFaintingTarget_End copybyte gBattlerAbility, gBattlerAttacker @@ -6423,3 +6422,256 @@ BattleScript_ExtremelyHarshSunlightWasNotLessened: waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd +BattleScript_GrassyTerrainHeals:: + setbyte gBattleCommunication, 0 +BattleScript_GrassyTerrainLoop: + copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 + checkgrassyterrainheal BS_ATTACKER, BattleScript_GrassyTerrainLoopIncrement + printstring STRINGID_GRASSYTERRAINHEALS + waitmessage B_WAIT_TIME_LONG +BattleScript_GrassyTerrainHpChange: + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER +BattleScript_GrassyTerrainLoopIncrement:: + addbyte gBattleCommunication, 1 + jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_GrassyTerrainLoop +BattleScript_GrassyTerrainLoopEnd:: + bicword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + jumpifword CMP_COMMON_BITS, gFieldStatuses, STATUS_FIELD_TERRAIN_PERMANENT, BattleScript_GrassyTerrainHealEnd +BattleScript_GrassyTerrainHealEnd: + end2 + +BattleScript_TerrainEnds_Ret:: + printfromtable gTerrainStringIds + waitmessage B_WAIT_TIME_LONG + playanimation BS_ATTACKER, B_ANIM_RESTORE_BG + return + +BattleScript_TerrainEnds:: + call BattleScript_TerrainEnds_Ret + end2 + +BattleScript_LuckyChantEnds:: + printstring STRINGID_LUCKYCHANTENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_TailwindEnds:: + printstring STRINGID_TAILWINDENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_TrickRoomEnds:: + printstring STRINGID_TRICKROOMENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_WonderRoomEnds:: + printstring STRINGID_WONDERROOMENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_MagicRoomEnds:: + printstring STRINGID_MAGICROOMENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_SandStormHailSnowEnds:: + printfromtable gSandStormHailSnowEndStringIds + waitmessage B_WAIT_TIME_LONG + call BattleScript_ActivateWeatherAbilities + end2 + +BattleScript_DamageNonTypesContinues:: + setbyte gBattleCommunication, 0 +BattleScript_DamageNonTypesLoop:: + copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 + damagenontypes + jumpifword CMP_EQUAL, gBattleMoveDamage, 0, BattleScript_DamageNonTypesLoopIncrement + printfromtable gDamageNonTypesDmgStringIds + waitmessage B_WAIT_TIME_LONG + effectivenesssound + hitanimation BS_ATTACKER + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + tryfaintmon BS_ATTACKER + checkteamslost BattleScript_DamageNonTypesLoopIncrement +BattleScript_DamageNonTypesLoopIncrement:: + jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamageNonTypesContinuesEnd + addbyte gBattleCommunication, 1 + jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamageNonTypesLoop +BattleScript_DamageNonTypesContinuesEnd:: + bicword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + end2 + +BattleScript_MudSportEnds:: + printstring STRINGID_MUDSPORTENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_WaterSportEnds:: + printstring STRINGID_WATERSPORTENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_GravityEnds:: + printstring STRINGID_GRAVITYENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_AffectionBasedStatusHeal:: + jumpifstatus BS_ATTACKER, STATUS1_POISON | STATUS1_TOXIC_POISON, BattleScript_AffectionBasedStatus_HealPoisonString + jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_AffectionBasedStatus_HealSleepString + jumpifstatus BS_ATTACKER, STATUS1_PARALYSIS, BattleScript_AffectionBasedStatus_HealParalysisString + jumpifstatus BS_ATTACKER, STATUS1_BURN, BattleScript_AffectionBasedStatus_HealBurnString + jumpifstatus BS_ATTACKER, STATUS1_FREEZE, BattleScript_AffectionBasedStatus_HealFreezeString + jumpifstatus BS_ATTACKER, STATUS1_FROSTBITE, BattleScript_AffectionBasedStatus_HealFrostbiteString + end2 +BattleScript_AffectionBasedStatus_HealPoisonString: + printstring STRINGID_ATTACKEREXPELLEDTHEPOISON + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatus_HealSleepString: + printstring STRINGID_ATTACKERSHOOKITSELFAWAKE + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatus_HealParalysisString: + printstring STRINGID_ATTACKERBROKETHROUGHPARALYSIS + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatus_HealBurnString: + printstring STRINGID_ATTACKERHEALEDITSBURN + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatus_HealFreezeString: + printstring STRINGID_ATTACKERMELTEDTHEICE + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatus_HealFrostbiteString: + printstring STRINGID_ATTACKERMELTEDTHEICE +BattleScript_AffectionBasedStatusHeal_Continue: + waitmessage B_WAIT_TIME_LONG + clearstatus BS_ATTACKER + waitstate + updatestatusicon BS_ATTACKER + waitstate + end2 + +BattleScript_TheRainbowDisappeared:: + printstring STRINGID_THERAINBOWDISAPPEARED + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_TheSeaOfFireDisappeared:: + printstring STRINGID_THESEAOFFIREDISAPPEARED + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_TheSwampDisappeared:: + printstring STRINGID_THESWAMPDISAPPEARED + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_AquaRingHeal:: + playanimation BS_ATTACKER, B_ANIM_WISH_HEAL @ B_ANIM_AQUA_RING_HEAL @ TODO: Animation + printstring STRINGID_AQUARINGHEAL + goto BattleScript_TurnHeal + +BattleScript_PoisonHealActivates:: + copybyte gBattlerAbility, gBattlerAttacker + call BattleScript_AbilityPopUp + printstring STRINGID_POISONHEALHPUP + waitmessage B_WAIT_TIME_LONG + statusanimation BS_ATTACKER + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + end2 + +BattleScript_OctolockEndTurn:: + playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, STAT_CHANGE_NEGATIVE + setstatchanger STAT_DEF, 1, TRUE + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerSpDef +BattleScript_OctolockTryLowerDef: + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_OctolockTryLowerSpDef: + setstatchanger STAT_SPDEF, 1, TRUE + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctlockTurnDmgEnd +BattleScript_OctolockTurnDmgPrintMsg: + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_OctlockTurnDmgEnd: + end2 + +BattleScript_EmbargoEndTurn:: + printstring STRINGID_EMBARGOENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_TelekinesisEndTurn:: + printstring STRINGID_TELEKINESISENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_BufferEndTurn:: + printstring STRINGID_BUFFERENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_FrostbiteTurnDmg:: + printstring STRINGID_PKMNHURTBYFROSTBITE + waitmessage B_WAIT_TIME_LONG + goto BattleScript_DoStatusTurnDmg + +BattleScript_TerrainPreventsEnd2:: + pause B_WAIT_TIME_SHORT + printfromtable gTerrainPreventsStringIds + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_ThroatChopEndTurn:: + printstring STRINGID_THROATCHOPENDS + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_SlowStartEnds:: + pause 5 + copybyte gBattlerAbility, gBattlerAttacker + call BattleScript_AbilityPopUp + printstring STRINGID_SLOWSTARTEND + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_SaltCureExtraDamage:: + playanimation BS_TARGET, B_ANIM_MON_HIT, NULL @ B_ANIM_SALT_CURE_DAMAGE, NULL @ TODO: animation + waitanimation + call BattleScript_HurtTarget_NoString + printstring STRINGID_TARGETISHURTBYSALTCURE + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_SyrupBombEndTurn:: + flushtextbox + playanimation BS_ATTACKER, B_ANIM_MON_HIT @ B_ANIM_SYRUP_BOMB_SPEED_DROP @ TODO: animation + setstatchanger STAT_SPEED, 1, TRUE + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_SyrupBombTurnDmgEnd: + end2 + +BattleScript_TormentEnds:: + printstring STRINGID_TORMENTEDNOMORE + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_HurtByTheSeaOfFire:: + printstring STRINGID_HURTBYTHESEAOFFIRE + waitmessage B_WAIT_TIME_LONG + goto BattleScript_DoTurnDmg + +BattleScript_HurtTarget_NoString: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + tryfaintmon BS_TARGET + return + diff --git a/graphics/battle_interface/dynamax_trigger.png b/graphics/battle_interface/dynamax_trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..18f3a84cff77a8022df1117fb25f71bc37d9a713 GIT binary patch literal 6864 zcmeHKc{r47*dKd#iIh0TAWLR743jN8$1n^f3A4PTVTQ?!>_?V5rH}~OvQ|`DXtQLG zLMo!NmAw+76jI+yopb8?&Ohh6zVE;0y54u5_kQmCci;E#x$ozCo})wuYjF{I5eNh# zZfj%V4E{sG$CRHBd>_r*mji)_*oC>cah=J*Pze6l{wnA}*DyZpjV z4{du-*Qae;k6YwO-qU5@iLPfM#+_{@>7Q0!RUf@9noEkFVMnEX?*EFP85F$bl~DMe zoQKI3U70_$)c&F^JvvuSU~lqooj!R>Vltm=UgYvT7jGMPAEmB~9GF>*FX}fbRJt1B zxqz%aG}X~$SidamaV26&YKAxFOXvo9q0^3XO+#I9i$VCiFhLdN+P0LHD_Zlir{=`9 z0<67Eg%@*i*`Ko8KQFBG%_AZWzKZR0h&O3hxZBr$=D{*+xtHx372Zi%@WfSa)Y0s4 zBwi*ySdYWlh)rB=-}C8rg|^ULgUxk=JfmF_^eKg16VX7`YW)(T zcndun>DO^DLJ(@%p5u006zW|rdJphv4&R?>xbYoB%tb?fD7vnARQUTTapo>#eicb3a8jNO;9_+pr@09{|I!Rlv z>0Eq@NU>Fu(`-(4cmJRZO)MGLy58-+hx+(#Yr?rLxQd=gNuz~sPP%8DM!tAX^r!Qti|r%4B<(?5Dy zchnH)g*0oN28kn1$-PnzW2%~T=y)ODekXot#jbYdesoyjLrwaPuu_=QC_+=eOOpcK zls?a>!c7e(FUMsaovm%?s6C-0GGG#&?KF93$MmlLKVqME`|B`KLdtM+LaBJ_kkzM1 z#+@X>ADzmw%Uw4YXYY;$yOSzgFKR<*_p`Hvg``if*|7ew8rysxpLUTe{8Rcde8CosHM0 z$69#VirG8GO0_%sF4hv-IDjiUAEsn-(tOqN6*@Z=X`zO6)77J-cvn zo-23_FU-E8P^(A_iP=vMR#(sH=@sja6V$If}~Y!j(Ecn`XeynXbX*xbDwrg=+Wf;@0Kl^#pw97?$$y}N5Sa-e*@eCPG$Oxr!4oD=K5@+v)^(W4Pax^K6SMih7}p4#%eUDf;b z6(54Fj>`P8$>&yDaj?~IPTnP*#e?jQd?i;C9Xn+nS4!*B$J>CEwpu#e&sG9$piteY z^Ew*u@ivodE)7Ul5;#SZzKQ*rel3j#^Xf%?%39`k)NLH|??DsFT~f&Bpz)P9cCK-8 z($>n7e1l?1+LKzOOKMIIrP?D8p?&EUE;jU34{q`{D-9XZ**ll+GyC#Ui>V*Ac!s;hMYaULht=X%QbPOEZP0b(iat7BK!*pnuR8ywg4MMj{cJ}yBR1^_ayRpk;`*skmRB|7+l z)a=y!CAOyfp^1>kP|a$xbs&fM(z+_mpOtv+^iU8~@e*k+^U1lEroGqqAS~Z@ue*mV z?YzEd$F6@rF2#*AHkUdQB)#E{grer16~C$K)FSDJ#|i?^E}6LZE+~#H1X+e~oBRxi z1va}@ryh?NoaL*8w_mw_exwo>cz9;lu*Aomy6ZycSb66&o^070{3-1+<_p-4Rg#~T z#Nv`;_-vE6>(ifVxW7maYl-FMSR3c7H{}3O6-UN!-oAXrqo#KQFL9->Mmr(=C(5mR)BbVo;v! zK(!~`EA@GC={xFkN4=(m3+CuV2f5IX8V%zmJ_C(qvJ}gR)@0YqODxTD=eGvq!31^R zJ)93&_^)n*N0|9Xr`#r3IYR@!Z{0^ zv^b>cgE;HovdR}U{lpRZE4O`O^XT2M^R*g&X@VFL#Jh#h6|c-rGUgMkqC?5jHzHUb zk9^8|9&1zVqQuxFwbL8tFHj}b(6CDfPdtxTcvOa+n2a=TG#|@KD_g%gbX46w=r?ng zbkVTa#%h5mF@|gJ0}&CReCuJ#*3R*L(z3>a4dN*hUMxn1$*J%l3nOWh2P@7Nd&p|r zpK=CvN)5}5Ik^?2@7U@+mq4xM=C$NI?_^k(5c&U*7Vs@;F#P=9RY~Tp0sp?@+gidw zJuK5Klzg}Xuezde-`JH`OR|CN7-cWQh+xCiomYs_;7z|Xui$h0Kh!{oBWWM*5Tg@XxcBwUb!Z$VY{!Yo&GKAtlOkCDQsZ+E{&Kwf(>z|L<&(0juimM~wY;Cr+rrM8c;uqx zk)q}9H{f889}G>lXdiFC^gOO6KQ7&tX3x2iSW+ON!NIu(Ns3L5KBKKnCLhl%!X-5w zsFrZ%wVU#7(dAY7BD;50cdiJpgob^Jt5BC3IG$ z7f2t{ms8vrLVwy?G=8+PiE=e|OoFavu9mwsQKQsq(X0nJG{4d3x-<1s_?+C~x#xD7 zZ?M)m@1L(TOWm0uvqAHDQs}2Y6{AjiU~b>{9(6O7)lzMd{329ar7KEG z@psk`&vVb@|cF0 zJ66(c5=YNz%81l0Z;m8MY^oLr>+K(OU)GO=V7i~oiL=@3j>~F>4~z^L<vbmnuM^)R6l?Vr2sw*e{4+5|NE*ToaV)}FNAx5w@ zTs$~l6(eELH5IO(5zLK1gqjBg0#Gahi$K9GLl_4zFk=y@VIYl;ceb$l4gr1{!S->v zY&;Sf92|@Y)})}Y$O_iLb6!MA1yds%L5?D_kjM@g5v_- z&XCRkCm<-03RoTh{JAPWLeQvx+p~iLnQQ6Ls7Qbbus~G~=oS5wOKV#K@o$S&3VawW z_L>z)_D`Bz2K^theu`~%W-Xl`0|Cwd#{EhAuiV#^K`jCSZxKKZS`E+E!U(qNA5ROQ zGHCd{JjsXUsQh$K5_2+QO{#0NU3IsA#sr4sCcV@Ko%KXP6mtY10dP{K5G-J zgyVM*ZH-_U1nM6NkxAy#K?AS{82+??V9q~NE({hx;*wYSMCSA>Caac4)7p?Py z{Z1f|1J>dyDjJ2rVAsr77X}Ze15!&~tyBcuY&9t8s^waN zLk+(ziw%PVYJ{%V{P(IS0sFsweQN?HV{HlwT`OEXnflEMhkO8_tvLeizD-g0k^OxD zu*1KX)L(MOzbqG>ib4V4+QKP1dIoSTmWG2HVCYylO@{{P=%Dn_6bj~NbWQ-B8%z!a zcKCpqg4uv2w3ZE2<2#v}KkEnY16G+rf&GorgQIaS7!)3h#p_^U$nVJ_S9|)eYz>kB zix0y!g&#Hn(C(WI++4uD3iZuB`6p8n?% z61B1O-q){R*X~LG{?b;7O#x?w**3d55Qyl8)rSX?nY{@V3UO@-mO|r#(tO&m^u&u9 zpy-yZ#SRz!wzntI5)CLZOVSwcrm88InuDhnAi{?f<11D6O-J$fi@c7D7P$MR!!hjx z+=%)`whj7BBV&T!tuB{Tw|#mxjaQ*1TGovX7;YC3JD$9sXXC-WOxe~IOy#Zq69Sv2 zU);rI*x8CQz3LvQJp!8T(O0LchN+(ORZ889?UEwt&(GnrGrzpE*&$`}x=FG$an?Qb zL#*$tO2~)Uh2fT-3rg7Km$l1}#{M9lzeYKG;`Ie3Qf|;4<;VRqFuPS2Y%Luu%FMiD F{s&w^Bc=cV literal 0 HcmV?d00001 diff --git a/include/battle.h b/include/battle.h index 4f5694ddc..d7621a2a5 100644 --- a/include/battle.h +++ b/include/battle.h @@ -13,6 +13,7 @@ #include "battle_gfx_sfx_util.h" #include "battle_util2.h" #include "battle_bg.h" +#include "battle_dynamax.h" /* Banks are a name given to what could be called a 'battlerId' or 'monControllerId'. @@ -567,7 +568,7 @@ struct BattleStruct u8 turnEffectsBattlerId; u8 filler2; // unused u8 turnCountersTracker; - u8 wrappedMove[MAX_BATTLERS_COUNT * 2]; // Leftover from Ruby's ewram access. + u16 wrappedMove[MAX_BATTLERS_COUNT]; u8 moveTarget[MAX_BATTLERS_COUNT]; u8 expGetterMonId; u8 field_11; // unused @@ -753,6 +754,13 @@ extern struct BattleStruct *gBattleStruct; gBattleMons[battlerId].type3 = TYPE_MYSTERY; \ } +#define RESTORE_BATTLER_TYPE(battlerId) \ +{ \ + gBattleMons[battlerId].type1 = gSpeciesInfo[gBattleMons[battlerId].species].types[0]; \ + gBattleMons[battlerId].type2 = gSpeciesInfo[gBattleMons[battlerId].species].types[1]; \ + gBattleMons[battlerId].type3 = TYPE_MYSTERY; \ +} + #define IS_BATTLER_PROTECTED(battlerId)(gProtectStructs[battlerId].protected \ || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_WIDE_GUARD \ || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_QUICK_GUARD \ diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index bd874d672..79ebde2be 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -87,6 +87,6 @@ enum MaxMoveEffect // void CreateDynamaxTriggerSprite(u8, bool8); // void HideDynamaxTriggerSprite(void); // bool32 IsDynamaxTriggerSpriteActive(void); -// void DestroyDynamaxTriggerSprite(void); +void DestroyDynamaxTriggerSprite(void); #endif diff --git a/include/battle_interface.h b/include/battle_interface.h index 067436c05..3e518780f 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -51,6 +51,22 @@ enum #define TAG_HEALTHBOX_PAL TAG_HEALTHBOX_PLAYER1_TILE #define TAG_HEALTHBAR_PAL TAG_HEALTHBAR_PLAYER1_TILE +#define TAG_MEGA_TRIGGER_TILE 0xD777 +#define TAG_MEGA_INDICATOR_TILE 0xD778 +#define TAG_ALPHA_INDICATOR_TILE 0xD779 +#define TAG_OMEGA_INDICATOR_TILE 0xD77A +#define TAG_ZMOVE_TRIGGER_TILE 0xD77B +#define TAG_BURST_TRIGGER_TILE 0xD77C +#define TAG_DYNAMAX_TRIGGER_TILE 0xD77D +#define TAG_DYNAMAX_INDICATOR_TILE 0xD77E + +#define TAG_MEGA_TRIGGER_PAL 0xD777 +#define TAG_MEGA_INDICATOR_PAL 0xD778 +#define TAG_MISC_INDICATOR_PAL 0xD779 // Alpha, Omega, and Dynamax indicators use the same palette as each of them only uses 4 different colors. +#define TAG_ZMOVE_TRIGGER_PAL 0xD77B +#define TAG_BURST_TRIGGER_PAL 0xD77C +#define TAG_DYNAMAX_TRIGGER_PAL 0xD77D + enum { HEALTHBOX_ALL, diff --git a/include/battle_main.h b/include/battle_main.h index e73968ebc..b665df306 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -1,7 +1,8 @@ #ifndef GUARD_BATTLE_MAIN_H #define GUARD_BATTLE_MAIN_H -#include "constants/abilities.h" +#include "pokemon.h" +#include "data.h" struct TrainerMoney { @@ -97,4 +98,7 @@ s32 GetWhichBattlerFasterArgs(u32 battler1, u32 battler2, bool32 ignoreChosenMov u32 holdEffectBattler1, u32 holdEffectBattler2, u32 speedBattler1, u32 speedBattler2, s32 priority1, s32 priority2); s32 GetWhichBattlerFaster(u32 battler1, u32 battler2, bool32 ignoreChosenMoves); + +extern const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES]; + #endif // GUARD_BATTLE_MAIN_H diff --git a/include/battle_message.h b/include/battle_message.h index dea248ed5..e0acef05e 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -55,7 +55,16 @@ #define B_TXT_TRAINER2_LOSE_TEXT 0x2E #define B_TXT_TRAINER2_WIN_TEXT 0x2F #define B_TXT_BUFF3 0x30 +#define B_TXT_TRAINER2_CLASS 0x31 +#define B_TXT_TRAINER2_NAME 0x32 +#define B_TXT_PARTNER_CLASS 0x33 +#define B_TXT_PARTNER_NAME 0x34 +#define B_TXT_ATK_TRAINER_NAME 0x35 +#define B_TXT_ATK_TRAINER_CLASS 0x36 +#define B_TXT_ATK_TEAM1 0x37 // Your/The opposing #define B_TXT_ATK_TEAM2 0x38 // your/the opposing +#define B_TXT_DEF_NAME 0x39 +#define B_TXT_DEF_TEAM1 0x3A // Your/The opposing #define B_TXT_DEF_TEAM2 0x3B // your/the opposing // for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3 @@ -96,7 +105,8 @@ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ textVar[1] = B_BUFF_ABILITY; \ textVar[2] = abilityId; \ - textVar[3] = B_BUFF_EOS; \ + textVar[3] = (abilityId & 0xFF00) >> 8; \ + textVar[4] = B_BUFF_EOS; \ } #define PREPARE_TYPE_BUFFER(textVar, typeId) \ @@ -145,7 +155,7 @@ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ textVar[1] = B_BUFF_STRING; \ - textVar[2] = stringId; \ + textVar[2] = stringId & 0xFF; \ textVar[3] = (stringId & 0xFF00) >> 8; \ textVar[4] = B_BUFF_EOS; \ } @@ -177,20 +187,20 @@ textVar[4] = B_BUFF_EOS; \ } -#define PREPARE_MON_NICK_WITH_PREFIX_BUFFER(textVar, bank, partyId) \ +#define PREPARE_MON_NICK_WITH_PREFIX_BUFFER(textVar, battler, partyId) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ textVar[1] = B_BUFF_MON_NICK_WITH_PREFIX; \ - textVar[2] = bank; \ + textVar[2] = battler; \ textVar[3] = partyId; \ textVar[4] = B_BUFF_EOS; \ } -#define PREPARE_MON_NICK_BUFFER(textVar, bank, partyId) \ +#define PREPARE_MON_NICK_BUFFER(textVar, battler, partyId) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ textVar[1] = B_BUFF_MON_NICK; \ - textVar[2] = bank; \ + textVar[2] = battler; \ textVar[3] = partyId; \ textVar[4] = B_BUFF_EOS; \ } diff --git a/include/battle_scripts.h b/include/battle_scripts.h index f068eb045..9348f1e2a 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -43,7 +43,6 @@ extern const u8 BattleScript_Pausex20[]; extern const u8 BattleScript_LevelUp[]; extern const u8 BattleScript_RainContinuesOrEnds[]; extern const u8 BattleScript_DamagingWeatherContinues[]; -extern const u8 BattleScript_SandStormHailEnds[]; extern const u8 BattleScript_SunlightContinues[]; extern const u8 BattleScript_SunlightFaded[]; extern const u8 BattleScript_OverworldWeatherStarts[]; @@ -660,8 +659,6 @@ extern const u8 BattleScript_ThrashConfuses[]; extern const u8 BattleScript_MoveUsedIsConfused[]; extern const u8 BattleScript_MoveUsedIsConfusedNoMore[]; extern const u8 BattleScript_PrintPayDayMoneyString[]; -extern const u8 BattleScript_WrapTurnDmg[]; -extern const u8 BattleScript_WrapEnds[]; extern const u8 BattleScript_MoveUsedIsInLove[]; extern const u8 BattleScript_MoveUsedIsInLoveCantAttack[]; extern const u8 BattleScript_NightmareTurnDmg[]; @@ -679,7 +676,6 @@ extern const u8 BattleScript_MoveEffectParalysis[]; extern const u8 BattleScript_MoveEffectUproar[]; extern const u8 BattleScript_MoveEffectToxic[]; extern const u8 BattleScript_MoveEffectPayDay[]; -extern const u8 BattleScript_MoveEffectWrap[]; extern const u8 BattleScript_MoveEffectConfusion[]; extern const u8 BattleScript_MoveEffectRecoil[]; extern const u8 BattleScript_DoRecoil33[]; diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 0774af257..c393bac5c 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -11,569 +11,1327 @@ // todo: make some of those names less vague: attacker/target vs pkmn, etc. -#define STRINGID_TRAINER1LOSETEXT 12 -#define STRINGID_PKMNGAINEDEXP 13 -#define STRINGID_PKMNGREWTOLV 14 -#define STRINGID_PKMNLEARNEDMOVE 15 -#define STRINGID_TRYTOLEARNMOVE1 16 -#define STRINGID_TRYTOLEARNMOVE2 17 -#define STRINGID_TRYTOLEARNMOVE3 18 -#define STRINGID_PKMNFORGOTMOVE 19 -#define STRINGID_STOPLEARNINGMOVE 20 -#define STRINGID_DIDNOTLEARNMOVE 21 -#define STRINGID_PKMNLEARNEDMOVE2 22 -#define STRINGID_ATTACKMISSED 23 -#define STRINGID_PKMNPROTECTEDITSELF 24 -#define STRINGID_STATSWONTINCREASE2 25 -#define STRINGID_AVOIDEDDAMAGE 26 -#define STRINGID_ITDOESNTAFFECT 27 -#define STRINGID_ATTACKERFAINTED 28 -#define STRINGID_TARGETFAINTED 29 -#define STRINGID_PLAYERGOTMONEY 30 -#define STRINGID_PLAYERWHITEOUT 31 -#define STRINGID_PLAYERWHITEOUT2 32 -#define STRINGID_PREVENTSESCAPE 33 -#define STRINGID_HITXTIMES 34 -#define STRINGID_PKMNFELLASLEEP 35 -#define STRINGID_PKMNMADESLEEP 36 -#define STRINGID_PKMNALREADYASLEEP 37 -#define STRINGID_PKMNALREADYASLEEP2 38 -#define STRINGID_PKMNWASNTAFFECTED 39 -#define STRINGID_PKMNWASPOISONED 40 -#define STRINGID_PKMNPOISONEDBY 41 -#define STRINGID_PKMNHURTBYPOISON 42 -#define STRINGID_PKMNALREADYPOISONED 43 -#define STRINGID_PKMNBADLYPOISONED 44 -#define STRINGID_PKMNENERGYDRAINED 45 -#define STRINGID_PKMNWASBURNED 46 -#define STRINGID_PKMNBURNEDBY 47 -#define STRINGID_PKMNHURTBYBURN 48 -#define STRINGID_PKMNWASFROZEN 49 -#define STRINGID_PKMNFROZENBY 50 -#define STRINGID_PKMNISFROZEN 51 -#define STRINGID_PKMNWASDEFROSTED 52 -#define STRINGID_PKMNWASDEFROSTED2 53 -#define STRINGID_PKMNWASDEFROSTEDBY 54 -#define STRINGID_PKMNWASPARALYZED 55 -#define STRINGID_PKMNWASPARALYZEDBY 56 -#define STRINGID_PKMNISPARALYZED 57 -#define STRINGID_PKMNISALREADYPARALYZED 58 -#define STRINGID_PKMNHEALEDPARALYSIS 59 -#define STRINGID_PKMNDREAMEATEN 60 -#define STRINGID_STATSWONTINCREASE 61 -#define STRINGID_STATSWONTDECREASE 62 -#define STRINGID_TEAMSTOPPEDWORKING 63 -#define STRINGID_FOESTOPPEDWORKING 64 -#define STRINGID_PKMNISCONFUSED 65 -#define STRINGID_PKMNHEALEDCONFUSION 66 -#define STRINGID_PKMNWASCONFUSED 67 -#define STRINGID_PKMNALREADYCONFUSED 68 -#define STRINGID_PKMNFELLINLOVE 69 -#define STRINGID_PKMNINLOVE 70 -#define STRINGID_PKMNIMMOBILIZEDBYLOVE 71 -#define STRINGID_PKMNBLOWNAWAY 72 -#define STRINGID_PKMNCHANGEDTYPE 73 -#define STRINGID_PKMNFLINCHED 74 -#define STRINGID_PKMNREGAINEDHEALTH 75 -#define STRINGID_PKMNHPFULL 76 -#define STRINGID_PKMNRAISEDSPDEF 77 -#define STRINGID_PKMNRAISEDDEF 78 -#define STRINGID_PKMNCOVEREDBYVEIL 79 -#define STRINGID_PKMNUSEDSAFEGUARD 80 -#define STRINGID_PKMNSAFEGUARDEXPIRED 81 -#define STRINGID_PKMNWENTTOSLEEP 82 -#define STRINGID_PKMNSLEPTHEALTHY 83 -#define STRINGID_PKMNWHIPPEDWHIRLWIND 84 -#define STRINGID_PKMNTOOKSUNLIGHT 85 -#define STRINGID_PKMNLOWEREDHEAD 86 -#define STRINGID_PKMNISGLOWING 87 -#define STRINGID_PKMNFLEWHIGH 88 -#define STRINGID_PKMNDUGHOLE 89 -#define STRINGID_PKMNSQUEEZEDBYBIND 90 -#define STRINGID_PKMNTRAPPEDINVORTEX 91 -#define STRINGID_PKMNWRAPPEDBY 92 -#define STRINGID_PKMNCLAMPED 93 -#define STRINGID_PKMNHURTBY 94 -#define STRINGID_PKMNFREEDFROM 95 -#define STRINGID_PKMNCRASHED 96 -#define STRINGID_PKMNSHROUDEDINMIST 97 -#define STRINGID_PKMNPROTECTEDBYMIST 98 -#define STRINGID_PKMNGETTINGPUMPED 99 -#define STRINGID_PKMNHITWITHRECOIL 100 -#define STRINGID_PKMNPROTECTEDITSELF2 101 -#define STRINGID_PKMNBUFFETEDBYSANDSTORM 102 -#define STRINGID_PKMNPELTEDBYHAIL 103 -#define STRINGID_PKMNSEEDED 104 -#define STRINGID_PKMNEVADEDATTACK 105 -#define STRINGID_PKMNSAPPEDBYLEECHSEED 106 -#define STRINGID_PKMNFASTASLEEP 107 -#define STRINGID_PKMNWOKEUP 108 -#define STRINGID_PKMNUPROARKEPTAWAKE 109 -#define STRINGID_PKMNWOKEUPINUPROAR 110 -#define STRINGID_PKMNCAUSEDUPROAR 111 -#define STRINGID_PKMNMAKINGUPROAR 112 -#define STRINGID_PKMNCALMEDDOWN 113 -#define STRINGID_PKMNCANTSLEEPINUPROAR 114 -#define STRINGID_PKMNSTOCKPILED 115 -#define STRINGID_PKMNCANTSTOCKPILE 116 -#define STRINGID_PKMNCANTSLEEPINUPROAR2 117 -#define STRINGID_UPROARKEPTPKMNAWAKE 118 -#define STRINGID_PKMNSTAYEDAWAKEUSING 119 -#define STRINGID_PKMNSTORINGENERGY 120 -#define STRINGID_PKMNUNLEASHEDENERGY 121 -#define STRINGID_PKMNFATIGUECONFUSION 122 -#define STRINGID_PLAYERPICKEDUPMONEY 123 -#define STRINGID_PKMNUNAFFECTED 124 -#define STRINGID_PKMNTRANSFORMEDINTO 125 -#define STRINGID_PKMNMADESUBSTITUTE 126 -#define STRINGID_PKMNHASSUBSTITUTE 127 -#define STRINGID_SUBSTITUTEDAMAGED 128 -#define STRINGID_PKMNSUBSTITUTEFADED 129 -#define STRINGID_PKMNMUSTRECHARGE 130 -#define STRINGID_PKMNRAGEBUILDING 131 -#define STRINGID_PKMNMOVEWASDISABLED 132 -#define STRINGID_PKMNMOVEISDISABLED 133 -#define STRINGID_PKMNMOVEDISABLEDNOMORE 134 -#define STRINGID_PKMNGOTENCORE 135 -#define STRINGID_PKMNENCOREENDED 136 -#define STRINGID_PKMNTOOKAIM 137 -#define STRINGID_PKMNSKETCHEDMOVE 138 -#define STRINGID_PKMNTRYINGTOTAKEFOE 139 -#define STRINGID_PKMNTOOKFOE 140 -#define STRINGID_PKMNREDUCEDPP 141 -#define STRINGID_PKMNSTOLEITEM 142 -#define STRINGID_TARGETCANTESCAPENOW 143 -#define STRINGID_PKMNFELLINTONIGHTMARE 144 -#define STRINGID_PKMNLOCKEDINNIGHTMARE 145 -#define STRINGID_PKMNLAIDCURSE 146 -#define STRINGID_PKMNAFFLICTEDBYCURSE 147 -#define STRINGID_SPIKESSCATTERED 148 -#define STRINGID_PKMNHURTBYSPIKES 149 -#define STRINGID_PKMNIDENTIFIED 150 -#define STRINGID_PKMNPERISHCOUNTFELL 151 -#define STRINGID_PKMNBRACEDITSELF 152 -#define STRINGID_PKMNENDUREDHIT 153 -#define STRINGID_MAGNITUDESTRENGTH 154 -#define STRINGID_PKMNCUTHPMAXEDATTACK 155 -#define STRINGID_PKMNCOPIEDSTATCHANGES 156 -#define STRINGID_PKMNGOTFREE 157 -#define STRINGID_PKMNSHEDLEECHSEED 158 -#define STRINGID_PKMNBLEWAWAYSPIKES 159 -#define STRINGID_PKMNFLEDFROMBATTLE 160 -#define STRINGID_PKMNFORESAWATTACK 161 -#define STRINGID_PKMNTOOKATTACK 162 -#define STRINGID_PKMNATTACK 163 -#define STRINGID_PKMNCENTERATTENTION 164 -#define STRINGID_PKMNCHARGINGPOWER 165 -#define STRINGID_NATUREPOWERTURNEDINTO 166 -#define STRINGID_PKMNSTATUSNORMAL 167 -#define STRINGID_PKMNHASNOMOVESLEFT 168 -#define STRINGID_PKMNSUBJECTEDTOTORMENT 169 -#define STRINGID_PKMNCANTUSEMOVETORMENT 170 -#define STRINGID_PKMNTIGHTENINGFOCUS 171 -#define STRINGID_PKMNFELLFORTAUNT 172 -#define STRINGID_PKMNCANTUSEMOVETAUNT 173 -#define STRINGID_PKMNREADYTOHELP 174 -#define STRINGID_PKMNSWITCHEDITEMS 175 -#define STRINGID_PKMNCOPIEDFOE 176 -#define STRINGID_PKMNMADEWISH 177 -#define STRINGID_PKMNWISHCAMETRUE 178 -#define STRINGID_PKMNPLANTEDROOTS 179 -#define STRINGID_PKMNABSORBEDNUTRIENTS 180 -#define STRINGID_PKMNANCHOREDITSELF 181 -#define STRINGID_PKMNWASMADEDROWSY 182 -#define STRINGID_PKMNKNOCKEDOFF 183 -#define STRINGID_PKMNSWAPPEDABILITIES 184 -#define STRINGID_PKMNSEALEDOPPONENTMOVE 185 -#define STRINGID_PKMNCANTUSEMOVESEALED 186 -#define STRINGID_PKMNWANTSGRUDGE 187 -#define STRINGID_PKMNLOSTPPGRUDGE 188 -#define STRINGID_PKMNSHROUDEDITSELF 189 -#define STRINGID_PKMNMOVEBOUNCED 190 -#define STRINGID_PKMNWAITSFORTARGET 191 -#define STRINGID_PKMNSNATCHEDMOVE 192 -#define STRINGID_PKMNMADEITRAIN 193 -#define STRINGID_PKMNRAISEDSPEED 194 -#define STRINGID_PKMNPROTECTEDBY 195 -#define STRINGID_PKMNPREVENTSUSAGE 196 -#define STRINGID_PKMNRESTOREDHPUSING 197 -#define STRINGID_PKMNCHANGEDTYPEWITH 198 -#define STRINGID_PKMNPREVENTSPARALYSISWITH 199 -#define STRINGID_PKMNPREVENTSROMANCEWITH 200 -#define STRINGID_PKMNPREVENTSPOISONINGWITH 201 -#define STRINGID_PKMNPREVENTSCONFUSIONWITH 202 -#define STRINGID_PKMNRAISEDFIREPOWERWITH 203 -#define STRINGID_PKMNANCHORSITSELFWITH 204 -#define STRINGID_PKMNCUTSATTACKWITH 205 -#define STRINGID_PKMNPREVENTSSTATLOSSWITH 206 -#define STRINGID_PKMNHURTSWITH 207 -#define STRINGID_PKMNTRACED 208 -#define STRINGID_STATSHARPLY 209 -#define STRINGID_STATROSE 210 -#define STRINGID_STATHARSHLY 211 -#define STRINGID_STATFELL 212 -#define STRINGID_ATTACKERSSTATROSE 213 -#define STRINGID_DEFENDERSSTATROSE 214 -#define STRINGID_ATTACKERSSTATFELL 215 -#define STRINGID_DEFENDERSSTATFELL 216 -#define STRINGID_CRITICALHIT 217 -#define STRINGID_ONEHITKO 218 -#define STRINGID_123POOF 219 -#define STRINGID_ANDELLIPSIS 220 -#define STRINGID_NOTVERYEFFECTIVE 221 -#define STRINGID_SUPEREFFECTIVE 222 -#define STRINGID_GOTAWAYSAFELY 223 -#define STRINGID_WILDPKMNFLED 224 -#define STRINGID_NORUNNINGFROMTRAINERS 225 -#define STRINGID_CANTESCAPE 226 -#define STRINGID_DONTLEAVEBIRCH 227 -#define STRINGID_BUTNOTHINGHAPPENED 228 -#define STRINGID_BUTITFAILED 229 -#define STRINGID_ITHURTCONFUSION 230 -#define STRINGID_MIRRORMOVEFAILED 231 -#define STRINGID_STARTEDTORAIN 232 -#define STRINGID_DOWNPOURSTARTED 233 -#define STRINGID_RAINCONTINUES 234 -#define STRINGID_DOWNPOURCONTINUES 235 -#define STRINGID_RAINSTOPPED 236 -#define STRINGID_SANDSTORMBREWED 237 -#define STRINGID_SANDSTORMRAGES 238 -#define STRINGID_SANDSTORMSUBSIDED 239 -#define STRINGID_SUNLIGHTGOTBRIGHT 240 -#define STRINGID_SUNLIGHTSTRONG 241 -#define STRINGID_SUNLIGHTFADED 242 -#define STRINGID_STARTEDHAIL 243 -#define STRINGID_HAILCONTINUES 244 -#define STRINGID_HAILSTOPPED 245 -#define STRINGID_FAILEDTOSPITUP 246 -#define STRINGID_FAILEDTOSWALLOW 247 -#define STRINGID_WINDBECAMEHEATWAVE 248 -#define STRINGID_STATCHANGESGONE 249 -#define STRINGID_COINSSCATTERED 250 -#define STRINGID_TOOWEAKFORSUBSTITUTE 251 -#define STRINGID_SHAREDPAIN 252 -#define STRINGID_BELLCHIMED 253 -#define STRINGID_FAINTINTHREE 254 -#define STRINGID_NOPPLEFT 255 -#define STRINGID_BUTNOPPLEFT 256 -#define STRINGID_PLAYERUSEDITEM 257 -#define STRINGID_OLDMANUSEDITEM 258 -#define STRINGID_TRAINERBLOCKEDBALL 259 -#define STRINGID_DONTBEATHIEF 260 -#define STRINGID_ITDODGEDBALL 261 -#define STRINGID_YOUMISSEDPKMN 262 -#define STRINGID_PKMNBROKEFREE 263 -#define STRINGID_ITAPPEAREDCAUGHT 264 -#define STRINGID_AARGHALMOSTHADIT 265 -#define STRINGID_SHOOTSOCLOSE 266 -#define STRINGID_GOTCHAPKMNCAUGHT 267 -#define STRINGID_GOTCHAPKMNCAUGHT2 268 -#define STRINGID_GIVENICKNAMECAPTURED 269 -#define STRINGID_PKMNSENTTOPC 270 -#define STRINGID_PKMNDATAADDEDTODEX 271 -#define STRINGID_ITISRAINING 272 -#define STRINGID_SANDSTORMISRAGING 273 -#define STRINGID_CANTESCAPE2 274 -#define STRINGID_PKMNIGNORESASLEEP 275 -#define STRINGID_PKMNIGNOREDORDERS 276 -#define STRINGID_PKMNBEGANTONAP 277 -#define STRINGID_PKMNLOAFING 278 -#define STRINGID_PKMNWONTOBEY 279 -#define STRINGID_PKMNTURNEDAWAY 280 -#define STRINGID_PKMNPRETENDNOTNOTICE 281 -#define STRINGID_ENEMYABOUTTOSWITCHPKMN 282 -#define STRINGID_THREWROCK 283 -#define STRINGID_THREWBAIT 284 -#define STRINGID_PKMNWATCHINGCAREFULLY 285 -#define STRINGID_PKMNANGRY 286 -#define STRINGID_PKMNEATING 287 -#define STRINGID_DUMMY288 288 -#define STRINGID_DUMMY289 289 -#define STRINGID_OUTOFSAFARIBALLS 290 -#define STRINGID_PKMNSITEMCUREDPARALYSIS 291 -#define STRINGID_PKMNSITEMCUREDPOISON 292 -#define STRINGID_PKMNSITEMHEALEDBURN 293 -#define STRINGID_PKMNSITEMDEFROSTEDIT 294 -#define STRINGID_PKMNSITEMWOKEIT 295 -#define STRINGID_PKMNSITEMSNAPPEDOUT 296 -#define STRINGID_PKMNSITEMCUREDPROBLEM 297 -#define STRINGID_PKMNSITEMRESTOREDHEALTH 298 -#define STRINGID_PKMNSITEMRESTOREDPP 299 -#define STRINGID_PKMNSITEMRESTOREDSTATUS 300 -#define STRINGID_PKMNSITEMRESTOREDHPALITTLE 301 -#define STRINGID_ITEMALLOWSONLYYMOVE 302 -#define STRINGID_PKMNHUNGONWITHX 303 -#define STRINGID_EMPTYSTRING3 304 -#define STRINGID_PKMNSXPREVENTSBURNS 305 -#define STRINGID_PKMNSXBLOCKSY 306 -#define STRINGID_PKMNSXRESTOREDHPALITTLE2 307 -#define STRINGID_PKMNSXWHIPPEDUPSANDSTORM 308 -#define STRINGID_PKMNSXPREVENTSYLOSS 309 -#define STRINGID_PKMNSXINFATUATEDY 310 -#define STRINGID_PKMNSXMADEYINEFFECTIVE 311 -#define STRINGID_PKMNSXCUREDYPROBLEM 312 -#define STRINGID_ITSUCKEDLIQUIDOOZE 313 -#define STRINGID_PKMNTRANSFORMED 314 -#define STRINGID_ELECTRICITYWEAKENED 315 -#define STRINGID_FIREWEAKENED 316 -#define STRINGID_PKMNHIDUNDERWATER 317 -#define STRINGID_PKMNSPRANGUP 318 -#define STRINGID_HMMOVESCANTBEFORGOTTEN 319 -#define STRINGID_XFOUNDONEY 320 -#define STRINGID_PLAYERDEFEATEDTRAINER1 321 -#define STRINGID_SOOTHINGAROMA 322 -#define STRINGID_ITEMSCANTBEUSEDNOW 323 -#define STRINGID_FORXCOMMAYZ 324 -#define STRINGID_USINGITEMSTATOFPKMNROSE 325 -#define STRINGID_PKMNUSEDXTOGETPUMPED 326 -#define STRINGID_PKMNSXMADEYUSELESS 327 -#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328 -#define STRINGID_EMPTYSTRING4 329 -#define STRINGID_ABOOSTED 330 -#define STRINGID_PKMNSXINTENSIFIEDSUN 331 -#define STRINGID_PKMNMAKESGROUNDMISS 332 -#define STRINGID_YOUTHROWABALLNOWRIGHT 333 -#define STRINGID_PKMNSXTOOKATTACK 334 -#define STRINGID_PKMNCHOSEXASDESTINY 335 -#define STRINGID_PKMNLOSTFOCUS 336 -#define STRINGID_USENEXTPKMN 337 -#define STRINGID_PKMNFLEDUSINGITS 338 -#define STRINGID_PKMNFLEDUSING 339 -#define STRINGID_PKMNWASDRAGGEDOUT 340 -#define STRINGID_PREVENTEDFROMWORKING 341 -#define STRINGID_PKMNSITEMNORMALIZEDSTATUS 342 -#define STRINGID_TRAINER1USEDITEM 343 -#define STRINGID_BOXISFULL 344 -#define STRINGID_PKMNAVOIDEDATTACK 345 -#define STRINGID_PKMNSXMADEITINEFFECTIVE 346 -#define STRINGID_PKMNSXPREVENTSFLINCHING 347 -#define STRINGID_PKMNALREADYHASBURN 348 -#define STRINGID_STATSWONTDECREASE2 349 -#define STRINGID_PKMNSXBLOCKSY2 350 -#define STRINGID_PKMNSXWOREOFF 351 -#define STRINGID_PKMNRAISEDDEFALITTLE 352 -#define STRINGID_PKMNRAISEDSPDEFALITTLE 353 -#define STRINGID_THEWALLSHATTERED 354 -#define STRINGID_PKMNSXPREVENTSYSZ 355 -#define STRINGID_PKMNSXCUREDITSYPROBLEM 356 -#define STRINGID_ATTACKERCANTESCAPE 357 -#define STRINGID_PKMNOBTAINEDX 358 -#define STRINGID_PKMNOBTAINEDX2 359 -#define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360 -#define STRINGID_BUTNOEFFECT 361 -#define STRINGID_PKMNSXHADNOEFFECTONY 362 -#define STRINGID_OAKPLAYERWON 363 -#define STRINGID_OAKPLAYERLOST 364 -#define STRINGID_PLAYERLOSTAGAINSTENEMYTRAINER 365 -#define STRINGID_PLAYERPAIDPRIZEMONEY 366 -#define STRINGID_PKMNTRANSFERREDSOMEONESPC 367 -#define STRINGID_PKMNTRANSFERREDBILLSPC 368 -#define STRINGID_PKMNBOXSOMEONESPCFULL 369 -#define STRINGID_PKMNBOXBILLSPCFULL 370 -#define STRINGID_POKEDUDEUSED 371 -#define STRINGID_POKEFLUTECATCHY 372 -#define STRINGID_POKEFLUTE 373 -#define STRINGID_MONHEARINGFLUTEAWOKE 374 -#define STRINGID_TRAINER2LOSETEXT 375 -#define STRINGID_TRAINER2WINTEXT 376 -#define STRINGID_PLAYERWHITEDOUT 377 -#define STRINGID_MONTOOSCAREDTOMOVE 378 -#define STRINGID_GHOSTGETOUTGETOUT 379 -#define STRINGID_SILPHSCOPEUNVEILED 380 -#define STRINGID_GHOSTWASMAROWAK 381 -#define STRINGID_TRAINER1MON1COMEBACK 382 -#define STRINGID_TRAINER1WINTEXT 383 -#define STRINGID_TRAINER1MON2COMEBACK 384 -#define STRINGID_TRAINER1MON1AND2COMEBACK 385 -// pokeemerald -#define STRINGID_ITEMRESTOREDSPECIESHEALTH 386 -#define STRINGID_ITEMRESTOREDSPECIESPP 387 -#define STRINGID_ITEMCUREDSPECIESSTATUS 388 -#define STRINGID_ELECTROSHOTCHARGING 389 -#define STRINGID_METEORBEAMCHARGING 390 -#define STRINGID_CLOAKEDINAHARSHLIGHT 391 -#define STRINGID_VANISHEDINSTANTLY 392 -#define STRINGID_PKMNTOOKTARGETHIGH 393 -#define STRINGID_CLOAKEDINAFREEZINGLIGHT 394 -#define STRINGID_PKNMABSORBINGPOWER 395 -#define STRINGID_POKEMONCANNOTUSEMOVE 396 -#define STRINGID_PKMNMOVEBOUNCEDABILITY 397 -#define STRINGID_HEALBLOCKPREVENTSUSAGE 398 -#define STRINGID_GRAVITYPREVENTSUSAGE 399 -#define STRINGID_PKMNFROSTBITEHEALED2 400 -#define STRINGID_PKMNFROSTBITEHEALEDBY 401 -#define STRINGID_SAFETYGOGGLESPROTECTED 402 -#define STRINGID_POWDEREXPLODES 403 -#define STRINGID_PKMNCANTUSEMOVETHROATCHOP 404 -#define STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN 405 -#define STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT 406 -#define STRINGID_TARGETATEITEM 407 -#define STRINGID_GEMACTIVATES 408 -#define STRINGID_ATTACKWEAKENEDBSTRONGWINDS 409 -#define STRINGID_ENDUREDSTURDY 410 -#define STRINGID_BERRYDMGREDUCES 411 -#define STRINGID_TARGETTOUGHEDITOUT 412 -#define STRINGID_TRAPPEDBYSWIRLINGMAGMA 413 -#define STRINGID_INFESTATION 414 -#define STRINGID_PKMNINSNAPTRAP 415 -#define STRINGID_THUNDERCAGETRAPPED 416 -#define STRINGID_RESETSTARGETSSTATLEVELS 417 -#define STRINGID_EXTREMESUNLIGHTFADED 418 -#define STRINGID_HEAVYRAINLIFTED 419 -#define STRINGID_STRONGWINDSDISSIPATED 420 -#define STRINGID_SYMBIOSISITEMPASS 421 -#define STRINGID_BURSTINGFLAMESHIT 422 -#define STRINGID_BROKETHROUGHPROTECTION 423 -#define STRINGID_FELLFORFEINT 424 -#define STRINGID_SPECTRALTHIEFSTEAL 425 -#define STRINGID_PKMNSABILITYSUPPRESSED 426 -#define STRINGID_INCINERATEBURN 427 -#define STRINGID_BUGBITE 428 -#define STRINGID_BOTHCANNOLONGERESCAPE 429 -#define STRINGID_ATTACKERLOSTFIRETYPE 430 -#define STRINGID_ATTACKERLOSTELECTRICTYPE 431 -#define STRINGID_ATTACKERLOSTITSTYPE 432 -#define STRINGID_STEALTHROCKDMG 433 -#define STRINGID_SHARPSTEELDMG 434 -#define STRINGID_POINTEDSTONESFLOAT 435 -#define STRINGID_SHARPSTEELFLOATS 436 -#define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 437 -#define STRINGID_AROMAVEILPROTECTED 438 -#define STRINGID_PKMNPREVENTEDFROMHEALING 439 -#define STRINGID_TERRAINBECOMESMISTY 440 -#define STRINGID_TERRAINBECOMESGRASSY 441 -#define STRINGID_TERRAINBECOMESELECTRIC 442 -#define STRINGID_TERRAINBECOMESPSYCHIC 443 -#define STRINGID_DIMENSIONSWERETWISTED 444 -#define STRINGID_BIZARREARENACREATED 445 -#define STRINGID_BIZARREAREACREATED 446 -#define STRINGID_TAILWINDBLEW 447 -#define STRINGID_ELECTRICTERRAINENDS 448 -#define STRINGID_MISTYTERRAINENDS 449 -#define STRINGID_PSYCHICTERRAINENDS 450 -#define STRINGID_GRASSYTERRAINENDS 451 -#define STRINGID_MOLDBREAKERENTERS 452 -#define STRINGID_TERAVOLTENTERS 453 -#define STRINGID_TURBOBLAZEENTERS 454 -#define STRINGID_SLOWSTARTENTERS 455 -#define STRINGID_UNNERVEENTERS 456 -#define STRINGID_ANTICIPATIONACTIVATES 457 -#define STRINGID_FOREWARNACTIVATES 458 -#define STRINGID_PRESSUREENTERS 459 -#define STRINGID_DARKAURAENTERS 460 -#define STRINGID_FAIRYAURAENTERS 461 -#define STRINGID_AURABREAKENTERS 462 -#define STRINGID_COMATOSEENTERS 463 -#define STRINGID_SCREENCLEANERENTERS 464 -#define STRINGID_ASONEENTERS 465 -#define STRINGID_CURIOUSMEDICINEENTERS 466 -#define STRINGID_PASTELVEILENTERS 467 -#define STRINGID_NEUTRALIZINGGASENTERS 468 -#define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 469 -#define STRINGID_IMPOSTERTRANSFORM 470 -#define STRINGID_SNOWWARNINGHAIL 471 -#define STRINGID_SNOWWARNINGSNOW 472 -#define STRINGID_SUPERSWEETAROMAWAFTS 473 -#define STRINGID_AIRLOCKACTIVATES 474 -#define STRINGID_BATTLERABILITYRAISEDSTAT 475 -#define STRINGID_EXTREMELYHARSHSUNLIGHT 476 -#define STRINGID_HEAVYRAIN 477 -#define STRINGID_MYSTERIOUSAIRCURRENT 478 -#define STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT 479 -#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 480 -#define STRINGID_ZEROTOHEROTRANSFORMATION 481 -#define STRINGID_HOSPITALITYRESTORATION 482 -#define STRINGID_HARVESTBERRY 483 -#define STRINGID_BADDREAMSDMG 484 -#define STRINGID_SOLARPOWERHPDROP 485 -#define STRINGID_HEALERCURE 486 -#define STRINGID_FETCHEDPOKEBALL 487 -#define STRINGID_TARGETABILITYSTATLOWER 488 -#define STRINGID_TARGETSTATWONTGOHIGHER 489 -#define STRINGID_TARGETABILITYSTATRAISE 490 -#define STRINGID_CUSEDBODYDISABLED 491 -#define STRINGID_ATTACKERACQUIREDABILITY 492 -#define STRINGID_SWAPPEDABILITIES 493 -#define STRINGID_TARGETSSTATWASMAXEDOUT 494 -#define STRINGID_PKMNSABILITYPREVENTSABILITY 495 -#define STRINGID_AFTERMATHDMG 496 -#define STRINGID_ILLUSIONWOREOFF 497 -#define STRINGID_ASANDSTORMKICKEDUP 498 -#define STRINGID_PKMNSWILLPERISHIN3TURNS 499 -#define STRINGID_POISONSPIKESSCATTERED 500 -#define STRINGID_OPPORTUNISTCOPIED 501 -#define STRINGID_PKMNGOTOVERITSINFATUATION 502 -#define STRINGID_PKMNSHOOKOFFTHETAUNT 503 -#define STRINGID_SUNLIGHTACTIVATEDABILITY 504 -#define STRINGID_STATWASHEIGHTENED 505 -#define STRINGID_BATTLERTYPECHANGEDTO 506 -#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 507 -#define STRINGID_FRISKACTIVATES 508 -#define STRINGID_ATTACKERABILITYSTATRAISE 509 -#define STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED 510 -#define STRINGID_NORELIEFROMHEAVYRAIN 511 -#define STRINGID_MYSTERIOUSAIRCURRENTBLOWSON 512 -#define STRINGID_AURAFLAREDTOLIFE 513 -#define STRINGID_ATKGOTOVERINFATUATION 514 -#define STRINGID_TORMENTEDNOMORE 515 -#define STRINGID_BUFFERENDS 516 -#define STRINGID_HEALBLOCKEDNOMORE 517 -#define STRINGID_MICLEBERRYACTIVATES 518 -#define STRINGID_MIRRORHERBCOPIED 519 -#define STRINGID_PKMNSITEMHEALEDFROSTBITE 520 -#define STRINGID_AIRBALLOONFLOAT 521 -#define STRINGID_EJECTBUTTONACTIVATE 522 -#define STRINGID_HURTBYITEM 523 -#define STRINGID_AIRBALLOONPOP 524 -#define STRINGID_STICKYBARBTRANSFER 525 -#define STRINGID_TEAMGAINEDEXP 526 -#define STRINGID_PKMNFROSTBITEHEALED 527 -#define STRINGID_STOCKPILEDEFFECTWOREOFF 528 -#define STRINGID_FELLSTRAIGHTDOWN 529 -#define STRINGID_TARGETWOKEUP 530 -#define STRINGID_PKMNBURNHEALED 531 -#define STRINGID_REDCARDACTIVATE 532 -#define STRINGID_MOVEBLOCKEDBYDYNAMAX 533 -#define STRINGID_ITEMCANNOTBEREMOVED 534 -#define STRINGID_ZMOVERESETSSTATS 535 -#define STRINGID_ZMOVEZBOOSTCRIT 536 -#define STRINGID_ZMOVERESTOREHP 537 -#define STRINGID_ZMOVESTATUP 538 -#define STRINGID_ZMOVEHPTRAP 539 -#define STRINGID_ZMOVEALLSTATSUP 540 -#define STRINGID_PKMNREVERTEDTOPRIMAL 541 -#define STRINGID_HEALINGWISHHEALED 542 -#define STRINGID_TOXICSPIKESABSORBED 543 -#define STRINGID_TOXICSPIKESPOISONED 544 -#define STRINGID_STICKYWEBSWITCHIN 545 -#define STRINGID_HEALINGWISHCAMETRUE 546 -#define STRINGID_LUNARDANCECAMETRUE 547 -#define STRINGID_SPIKESDISAPPEAREDFROMTEAM 548 -#define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 549 -#define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 550 -#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 551 -#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 552 -#define STRINGID_LASTABILITYRAISEDSTAT 553 -#define STRINGID_RECEIVERABILITYTAKEOVER 554 -#define STRINGID_NEUTRALIZINGGASOVER 555 -#define STRINGID_ATTACKERBECAMEFULLYCHARGED 556 -#define STRINGID_ATTACKERBECAMEASHSPECIES 557 -#define STRINGID_PROTECTEDTEAM 558 -#define STRINGID_ELECTRICTERRAINPREVENTS 559 -#define STRINGID_MISTYTERRAINPREVENTS 560 -#define STRINGID_PSYCHICTERRAINPREVENTS 561 -#define STRINGID_FLOWERVEILPROTECTED 562 -#define STRINGID_DRASTICALLY 563 -#define STRINGID_SEVERELY 564 -#define STRINGID_CLEARAMULETWONTLOWERSTATS 565 -#define STRINGID_CELEBRATEMESSAGE 566 -#define STRINGID_PKMNBLEWAWAYTOXICSPIKES 567 -#define STRINGID_PKMNBLEWAWAYSTICKYWEB 568 -#define STRINGID_PKMNBLEWAWAYSTEALTHROCK 569 -#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 570 -#define STRINGID_PKMNGOTFROSTBITE 571 +// #define STRINGID_TRAINER1LOSETEXT 12 +// #define STRINGID_PKMNGAINEDEXP 13 +// #define STRINGID_PKMNGREWTOLV 14 +// #define STRINGID_PKMNLEARNEDMOVE 15 +// #define STRINGID_TRYTOLEARNMOVE1 16 +// #define STRINGID_TRYTOLEARNMOVE2 17 +// #define STRINGID_TRYTOLEARNMOVE3 18 +// #define STRINGID_PKMNFORGOTMOVE 19 +// #define STRINGID_STOPLEARNINGMOVE 20 +// #define STRINGID_DIDNOTLEARNMOVE 21 +// #define STRINGID_PKMNLEARNEDMOVE2 22 +// #define STRINGID_ATTACKMISSED 23 +// #define STRINGID_PKMNPROTECTEDITSELF 24 +// #define STRINGID_STATSWONTINCREASE2 25 +// #define STRINGID_AVOIDEDDAMAGE 26 +// #define STRINGID_ITDOESNTAFFECT 27 +// #define STRINGID_ATTACKERFAINTED 28 +// #define STRINGID_TARGETFAINTED 29 +// #define STRINGID_PLAYERGOTMONEY 30 +// #define STRINGID_PLAYERWHITEOUT 31 +// #define STRINGID_PLAYERWHITEOUT2 32 +// #define STRINGID_PREVENTSESCAPE 33 +// #define STRINGID_HITXTIMES 34 +// #define STRINGID_PKMNFELLASLEEP 35 +// #define STRINGID_PKMNMADESLEEP 36 +// #define STRINGID_PKMNALREADYASLEEP 37 +// #define STRINGID_PKMNALREADYASLEEP2 38 +// #define STRINGID_PKMNWASNTAFFECTED 39 +// #define STRINGID_PKMNWASPOISONED 40 +// #define STRINGID_PKMNPOISONEDBY 41 +// #define STRINGID_PKMNHURTBYPOISON 42 +// #define STRINGID_PKMNALREADYPOISONED 43 +// #define STRINGID_PKMNBADLYPOISONED 44 +// #define STRINGID_PKMNENERGYDRAINED 45 +// #define STRINGID_PKMNWASBURNED 46 +// #define STRINGID_PKMNBURNEDBY 47 +// #define STRINGID_PKMNHURTBYBURN 48 +// #define STRINGID_PKMNWASFROZEN 49 +// #define STRINGID_PKMNFROZENBY 50 +// #define STRINGID_PKMNISFROZEN 51 +// #define STRINGID_PKMNWASDEFROSTED 52 +// #define STRINGID_PKMNWASDEFROSTED2 53 +// #define STRINGID_PKMNWASDEFROSTEDBY 54 +// #define STRINGID_PKMNWASPARALYZED 55 +// #define STRINGID_PKMNWASPARALYZEDBY 56 +// #define STRINGID_PKMNISPARALYZED 57 +// #define STRINGID_PKMNISALREADYPARALYZED 58 +// #define STRINGID_PKMNHEALEDPARALYSIS 59 +// #define STRINGID_PKMNDREAMEATEN 60 +// #define STRINGID_STATSWONTINCREASE 61 +// #define STRINGID_STATSWONTDECREASE 62 +// #define STRINGID_TEAMSTOPPEDWORKING 63 +// #define STRINGID_FOESTOPPEDWORKING 64 +// #define STRINGID_PKMNISCONFUSED 65 +// #define STRINGID_PKMNHEALEDCONFUSION 66 +// #define STRINGID_PKMNWASCONFUSED 67 +// #define STRINGID_PKMNALREADYCONFUSED 68 +// #define STRINGID_PKMNFELLINLOVE 69 +// #define STRINGID_PKMNINLOVE 70 +// #define STRINGID_PKMNIMMOBILIZEDBYLOVE 71 +// #define STRINGID_PKMNBLOWNAWAY 72 +// #define STRINGID_PKMNCHANGEDTYPE 73 +// #define STRINGID_PKMNFLINCHED 74 +// #define STRINGID_PKMNREGAINEDHEALTH 75 +// #define STRINGID_PKMNHPFULL 76 +// #define STRINGID_PKMNRAISEDSPDEF 77 +// #define STRINGID_PKMNRAISEDDEF 78 +// #define STRINGID_PKMNCOVEREDBYVEIL 79 +// #define STRINGID_PKMNUSEDSAFEGUARD 80 +// #define STRINGID_PKMNSAFEGUARDEXPIRED 81 +// #define STRINGID_PKMNWENTTOSLEEP 82 +// #define STRINGID_PKMNSLEPTHEALTHY 83 +// #define STRINGID_PKMNWHIPPEDWHIRLWIND 84 +// #define STRINGID_PKMNTOOKSUNLIGHT 85 +// #define STRINGID_PKMNLOWEREDHEAD 86 +// #define STRINGID_PKMNISGLOWING 87 +// #define STRINGID_PKMNFLEWHIGH 88 +// #define STRINGID_PKMNDUGHOLE 89 +// #define STRINGID_PKMNSQUEEZEDBYBIND 90 +// #define STRINGID_PKMNTRAPPEDINVORTEX 91 +// #define STRINGID_PKMNWRAPPEDBY 92 +// #define STRINGID_PKMNCLAMPED 93 +// #define STRINGID_PKMNHURTBY 94 +// #define STRINGID_PKMNFREEDFROM 95 +// #define STRINGID_PKMNCRASHED 96 +// #define STRINGID_PKMNSHROUDEDINMIST 97 +// #define STRINGID_PKMNPROTECTEDBYMIST 98 +// #define STRINGID_PKMNGETTINGPUMPED 99 +// #define STRINGID_PKMNHITWITHRECOIL 100 +// #define STRINGID_PKMNPROTECTEDITSELF2 101 +// #define STRINGID_PKMNBUFFETEDBYSANDSTORM 102 +// #define STRINGID_PKMNPELTEDBYHAIL 103 +// #define STRINGID_PKMNSEEDED 104 +// #define STRINGID_PKMNEVADEDATTACK 105 +// #define STRINGID_PKMNSAPPEDBYLEECHSEED 106 +// #define STRINGID_PKMNFASTASLEEP 107 +// #define STRINGID_PKMNWOKEUP 108 +// #define STRINGID_PKMNUPROARKEPTAWAKE 109 +// #define STRINGID_PKMNWOKEUPINUPROAR 110 +// #define STRINGID_PKMNCAUSEDUPROAR 111 +// #define STRINGID_PKMNMAKINGUPROAR 112 +// #define STRINGID_PKMNCALMEDDOWN 113 +// #define STRINGID_PKMNCANTSLEEPINUPROAR 114 +// #define STRINGID_PKMNSTOCKPILED 115 +// #define STRINGID_PKMNCANTSTOCKPILE 116 +// #define STRINGID_PKMNCANTSLEEPINUPROAR2 117 +// #define STRINGID_UPROARKEPTPKMNAWAKE 118 +// #define STRINGID_PKMNSTAYEDAWAKEUSING 119 +// #define STRINGID_PKMNSTORINGENERGY 120 +// #define STRINGID_PKMNUNLEASHEDENERGY 121 +// #define STRINGID_PKMNFATIGUECONFUSION 122 +// #define STRINGID_PLAYERPICKEDUPMONEY 123 +// #define STRINGID_PKMNUNAFFECTED 124 +// #define STRINGID_PKMNTRANSFORMEDINTO 125 +// #define STRINGID_PKMNMADESUBSTITUTE 126 +// #define STRINGID_PKMNHASSUBSTITUTE 127 +// #define STRINGID_SUBSTITUTEDAMAGED 128 +// #define STRINGID_PKMNSUBSTITUTEFADED 129 +// #define STRINGID_PKMNMUSTRECHARGE 130 +// #define STRINGID_PKMNRAGEBUILDING 131 +// #define STRINGID_PKMNMOVEWASDISABLED 132 +// #define STRINGID_PKMNMOVEISDISABLED 133 +// #define STRINGID_PKMNMOVEDISABLEDNOMORE 134 +// #define STRINGID_PKMNGOTENCORE 135 +// #define STRINGID_PKMNENCOREENDED 136 +// #define STRINGID_PKMNTOOKAIM 137 +// #define STRINGID_PKMNSKETCHEDMOVE 138 +// #define STRINGID_PKMNTRYINGTOTAKEFOE 139 +// #define STRINGID_PKMNTOOKFOE 140 +// #define STRINGID_PKMNREDUCEDPP 141 +// #define STRINGID_PKMNSTOLEITEM 142 +// #define STRINGID_TARGETCANTESCAPENOW 143 +// #define STRINGID_PKMNFELLINTONIGHTMARE 144 +// #define STRINGID_PKMNLOCKEDINNIGHTMARE 145 +// #define STRINGID_PKMNLAIDCURSE 146 +// #define STRINGID_PKMNAFFLICTEDBYCURSE 147 +// #define STRINGID_SPIKESSCATTERED 148 +// #define STRINGID_PKMNHURTBYSPIKES 149 +// #define STRINGID_PKMNIDENTIFIED 150 +// #define STRINGID_PKMNPERISHCOUNTFELL 151 +// #define STRINGID_PKMNBRACEDITSELF 152 +// #define STRINGID_PKMNENDUREDHIT 153 +// #define STRINGID_MAGNITUDESTRENGTH 154 +// #define STRINGID_PKMNCUTHPMAXEDATTACK 155 +// #define STRINGID_PKMNCOPIEDSTATCHANGES 156 +// #define STRINGID_PKMNGOTFREE 157 +// #define STRINGID_PKMNSHEDLEECHSEED 158 +// #define STRINGID_PKMNBLEWAWAYSPIKES 159 +// #define STRINGID_PKMNFLEDFROMBATTLE 160 +// #define STRINGID_PKMNFORESAWATTACK 161 +// #define STRINGID_PKMNTOOKATTACK 162 +// #define STRINGID_PKMNATTACK 163 +// #define STRINGID_PKMNCENTERATTENTION 164 +// #define STRINGID_PKMNCHARGINGPOWER 165 +// #define STRINGID_NATUREPOWERTURNEDINTO 166 +// #define STRINGID_PKMNSTATUSNORMAL 167 +// #define STRINGID_PKMNHASNOMOVESLEFT 168 +// #define STRINGID_PKMNSUBJECTEDTOTORMENT 169 +// #define STRINGID_PKMNCANTUSEMOVETORMENT 170 +// #define STRINGID_PKMNTIGHTENINGFOCUS 171 +// #define STRINGID_PKMNFELLFORTAUNT 172 +// #define STRINGID_PKMNCANTUSEMOVETAUNT 173 +// #define STRINGID_PKMNREADYTOHELP 174 +// #define STRINGID_PKMNSWITCHEDITEMS 175 +// #define STRINGID_PKMNCOPIEDFOE 176 +// #define STRINGID_PKMNMADEWISH 177 +// #define STRINGID_PKMNWISHCAMETRUE 178 +// #define STRINGID_PKMNPLANTEDROOTS 179 +// #define STRINGID_PKMNABSORBEDNUTRIENTS 180 +// #define STRINGID_PKMNANCHOREDITSELF 181 +// #define STRINGID_PKMNWASMADEDROWSY 182 +// #define STRINGID_PKMNKNOCKEDOFF 183 +// #define STRINGID_PKMNSWAPPEDABILITIES 184 +// #define STRINGID_PKMNSEALEDOPPONENTMOVE 185 +// #define STRINGID_PKMNCANTUSEMOVESEALED 186 +// #define STRINGID_PKMNWANTSGRUDGE 187 +// #define STRINGID_PKMNLOSTPPGRUDGE 188 +// #define STRINGID_PKMNSHROUDEDITSELF 189 +// #define STRINGID_PKMNMOVEBOUNCED 190 +// #define STRINGID_PKMNWAITSFORTARGET 191 +// #define STRINGID_PKMNSNATCHEDMOVE 192 +// #define STRINGID_PKMNMADEITRAIN 193 +// #define STRINGID_PKMNRAISEDSPEED 194 +// #define STRINGID_PKMNPROTECTEDBY 195 +// #define STRINGID_PKMNPREVENTSUSAGE 196 +// #define STRINGID_PKMNRESTOREDHPUSING 197 +// #define STRINGID_PKMNCHANGEDTYPEWITH 198 +// #define STRINGID_PKMNPREVENTSPARALYSISWITH 199 +// #define STRINGID_PKMNPREVENTSROMANCEWITH 200 +// #define STRINGID_PKMNPREVENTSPOISONINGWITH 201 +// #define STRINGID_PKMNPREVENTSCONFUSIONWITH 202 +// #define STRINGID_PKMNRAISEDFIREPOWERWITH 203 +// #define STRINGID_PKMNANCHORSITSELFWITH 204 +// #define STRINGID_PKMNCUTSATTACKWITH 205 +// #define STRINGID_PKMNPREVENTSSTATLOSSWITH 206 +// #define STRINGID_PKMNHURTSWITH 207 +// #define STRINGID_PKMNTRACED 208 +// #define STRINGID_STATSHARPLY 209 +// #define STRINGID_STATROSE 210 +// #define STRINGID_STATHARSHLY 211 +// #define STRINGID_STATFELL 212 +// #define STRINGID_ATTACKERSSTATROSE 213 +// #define STRINGID_DEFENDERSSTATROSE 214 +// #define STRINGID_ATTACKERSSTATFELL 215 +// #define STRINGID_DEFENDERSSTATFELL 216 +// #define STRINGID_CRITICALHIT 217 +// #define STRINGID_ONEHITKO 218 +// #define STRINGID_123POOF 219 +// #define STRINGID_ANDELLIPSIS 220 +// #define STRINGID_NOTVERYEFFECTIVE 221 +// #define STRINGID_SUPEREFFECTIVE 222 +// #define STRINGID_GOTAWAYSAFELY 223 +// #define STRINGID_WILDPKMNFLED 224 +// #define STRINGID_NORUNNINGFROMTRAINERS 225 +// #define STRINGID_CANTESCAPE 226 +// #define STRINGID_DONTLEAVEBIRCH 227 +// #define STRINGID_BUTNOTHINGHAPPENED 228 +// #define STRINGID_BUTITFAILED 229 +// #define STRINGID_ITHURTCONFUSION 230 +// #define STRINGID_MIRRORMOVEFAILED 231 +// #define STRINGID_STARTEDTORAIN 232 +// #define STRINGID_DOWNPOURSTARTED 233 +// #define STRINGID_RAINCONTINUES 234 +// #define STRINGID_DOWNPOURCONTINUES 235 +// #define STRINGID_RAINSTOPPED 236 +// #define STRINGID_SANDSTORMBREWED 237 +// #define STRINGID_SANDSTORMRAGES 238 +// #define STRINGID_SANDSTORMSUBSIDED 239 +// #define STRINGID_SUNLIGHTGOTBRIGHT 240 +// #define STRINGID_SUNLIGHTSTRONG 241 +// #define STRINGID_SUNLIGHTFADED 242 +// #define STRINGID_STARTEDHAIL 243 +// #define STRINGID_HAILCONTINUES 244 +// #define STRINGID_HAILSTOPPED 245 +// #define STRINGID_FAILEDTOSPITUP 246 +// #define STRINGID_FAILEDTOSWALLOW 247 +// #define STRINGID_WINDBECAMEHEATWAVE 248 +// #define STRINGID_STATCHANGESGONE 249 +// #define STRINGID_COINSSCATTERED 250 +// #define STRINGID_TOOWEAKFORSUBSTITUTE 251 +// #define STRINGID_SHAREDPAIN 252 +// #define STRINGID_BELLCHIMED 253 +// #define STRINGID_FAINTINTHREE 254 +// #define STRINGID_NOPPLEFT 255 +// #define STRINGID_BUTNOPPLEFT 256 +// #define STRINGID_PLAYERUSEDITEM 257 +// #define STRINGID_OLDMANUSEDITEM 258 +// #define STRINGID_TRAINERBLOCKEDBALL 259 +// #define STRINGID_DONTBEATHIEF 260 +// #define STRINGID_ITDODGEDBALL 261 +// #define STRINGID_YOUMISSEDPKMN 262 +// #define STRINGID_PKMNBROKEFREE 263 +// #define STRINGID_ITAPPEAREDCAUGHT 264 +// #define STRINGID_AARGHALMOSTHADIT 265 +// #define STRINGID_SHOOTSOCLOSE 266 +// #define STRINGID_GOTCHAPKMNCAUGHT 267 +// #define STRINGID_GOTCHAPKMNCAUGHT2 268 +// #define STRINGID_GIVENICKNAMECAPTURED 269 +// #define STRINGID_PKMNSENTTOPC 270 +// #define STRINGID_PKMNDATAADDEDTODEX 271 +// #define STRINGID_ITISRAINING 272 +// #define STRINGID_SANDSTORMISRAGING 273 +// #define STRINGID_CANTESCAPE2 274 +// #define STRINGID_PKMNIGNORESASLEEP 275 +// #define STRINGID_PKMNIGNOREDORDERS 276 +// #define STRINGID_PKMNBEGANTONAP 277 +// #define STRINGID_PKMNLOAFING 278 +// #define STRINGID_PKMNWONTOBEY 279 +// #define STRINGID_PKMNTURNEDAWAY 280 +// #define STRINGID_PKMNPRETENDNOTNOTICE 281 +// #define STRINGID_ENEMYABOUTTOSWITCHPKMN 282 +// #define STRINGID_THREWROCK 283 +// #define STRINGID_THREWBAIT 284 +// #define STRINGID_PKMNWATCHINGCAREFULLY 285 +// #define STRINGID_PKMNANGRY 286 +// #define STRINGID_PKMNEATING 287 +// #define STRINGID_DUMMY288 288 +// #define STRINGID_DUMMY289 289 +// #define STRINGID_OUTOFSAFARIBALLS 290 +// #define STRINGID_PKMNSITEMCUREDPARALYSIS 291 +// #define STRINGID_PKMNSITEMCUREDPOISON 292 +// #define STRINGID_PKMNSITEMHEALEDBURN 293 +// #define STRINGID_PKMNSITEMDEFROSTEDIT 294 +// #define STRINGID_PKMNSITEMWOKEIT 295 +// #define STRINGID_PKMNSITEMSNAPPEDOUT 296 +// #define STRINGID_PKMNSITEMCUREDPROBLEM 297 +// #define STRINGID_PKMNSITEMRESTOREDHEALTH 298 +// #define STRINGID_PKMNSITEMRESTOREDPP 299 +// #define STRINGID_PKMNSITEMRESTOREDSTATUS 300 +// #define STRINGID_PKMNSITEMRESTOREDHPALITTLE 301 +// #define STRINGID_ITEMALLOWSONLYYMOVE 302 +// #define STRINGID_PKMNHUNGONWITHX 303 +// #define STRINGID_EMPTYSTRING3 304 +// #define STRINGID_PKMNSXPREVENTSBURNS 305 +// #define STRINGID_PKMNSXBLOCKSY 306 +// #define STRINGID_PKMNSXRESTOREDHPALITTLE2 307 +// #define STRINGID_PKMNSXWHIPPEDUPSANDSTORM 308 +// #define STRINGID_PKMNSXPREVENTSYLOSS 309 +// #define STRINGID_PKMNSXINFATUATEDY 310 +// #define STRINGID_PKMNSXMADEYINEFFECTIVE 311 +// #define STRINGID_PKMNSXCUREDYPROBLEM 312 +// #define STRINGID_ITSUCKEDLIQUIDOOZE 313 +// #define STRINGID_PKMNTRANSFORMED 314 +// #define STRINGID_ELECTRICITYWEAKENED 315 +// #define STRINGID_FIREWEAKENED 316 +// #define STRINGID_PKMNHIDUNDERWATER 317 +// #define STRINGID_PKMNSPRANGUP 318 +// #define STRINGID_HMMOVESCANTBEFORGOTTEN 319 +// #define STRINGID_XFOUNDONEY 320 +// #define STRINGID_PLAYERDEFEATEDTRAINER1 321 +// #define STRINGID_SOOTHINGAROMA 322 +// #define STRINGID_ITEMSCANTBEUSEDNOW 323 +// #define STRINGID_FORXCOMMAYZ 324 +// #define STRINGID_USINGITEMSTATOFPKMNROSE 325 +// #define STRINGID_PKMNUSEDXTOGETPUMPED 326 +// #define STRINGID_PKMNSXMADEYUSELESS 327 +// #define STRINGID_PKMNTRAPPEDBYSANDTOMB 328 +// #define STRINGID_EMPTYSTRING4 329 +// #define STRINGID_ABOOSTED 330 +// #define STRINGID_PKMNSXINTENSIFIEDSUN 331 +// #define STRINGID_PKMNMAKESGROUNDMISS 332 +// #define STRINGID_YOUTHROWABALLNOWRIGHT 333 +// #define STRINGID_PKMNSXTOOKATTACK 334 +// #define STRINGID_PKMNCHOSEXASDESTINY 335 +// #define STRINGID_PKMNLOSTFOCUS 336 +// #define STRINGID_USENEXTPKMN 337 +// #define STRINGID_PKMNFLEDUSINGITS 338 +// #define STRINGID_PKMNFLEDUSING 339 +// #define STRINGID_PKMNWASDRAGGEDOUT 340 +// #define STRINGID_PREVENTEDFROMWORKING 341 +// #define STRINGID_PKMNSITEMNORMALIZEDSTATUS 342 +// #define STRINGID_TRAINER1USEDITEM 343 +// #define STRINGID_BOXISFULL 344 +// #define STRINGID_PKMNAVOIDEDATTACK 345 +// #define STRINGID_PKMNSXMADEITINEFFECTIVE 346 +// #define STRINGID_PKMNSXPREVENTSFLINCHING 347 +// #define STRINGID_PKMNALREADYHASBURN 348 +// #define STRINGID_STATSWONTDECREASE2 349 +// #define STRINGID_PKMNSXBLOCKSY2 350 +// #define STRINGID_PKMNSXWOREOFF 351 +// #define STRINGID_PKMNRAISEDDEFALITTLE 352 +// #define STRINGID_PKMNRAISEDSPDEFALITTLE 353 +// #define STRINGID_THEWALLSHATTERED 354 +// #define STRINGID_PKMNSXPREVENTSYSZ 355 +// #define STRINGID_PKMNSXCUREDITSYPROBLEM 356 +// #define STRINGID_ATTACKERCANTESCAPE 357 +// #define STRINGID_PKMNOBTAINEDX 358 +// #define STRINGID_PKMNOBTAINEDX2 359 +// #define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360 +// #define STRINGID_BUTNOEFFECT 361 +// #define STRINGID_PKMNSXHADNOEFFECTONY 362 +// #define STRINGID_OAKPLAYERWON 363 +// #define STRINGID_OAKPLAYERLOST 364 +// #define STRINGID_PLAYERLOSTAGAINSTENEMYTRAINER 365 +// #define STRINGID_PLAYERPAIDPRIZEMONEY 366 +// #define STRINGID_PKMNTRANSFERREDSOMEONESPC 367 +// #define STRINGID_PKMNTRANSFERREDBILLSPC 368 +// #define STRINGID_PKMNBOXSOMEONESPCFULL 369 +// #define STRINGID_PKMNBOXBILLSPCFULL 370 +// #define STRINGID_POKEDUDEUSED 371 +// #define STRINGID_POKEFLUTECATCHY 372 +// #define STRINGID_POKEFLUTE 373 +// #define STRINGID_MONHEARINGFLUTEAWOKE 374 +// #define STRINGID_TRAINER2LOSETEXT 375 +// #define STRINGID_TRAINER2WINTEXT 376 +// #define STRINGID_PLAYERWHITEDOUT 377 +// #define STRINGID_MONTOOSCAREDTOMOVE 378 +// #define STRINGID_GHOSTGETOUTGETOUT 379 +// #define STRINGID_SILPHSCOPEUNVEILED 380 +// #define STRINGID_GHOSTWASMAROWAK 381 +// #define STRINGID_TRAINER1MON1COMEBACK 382 +// #define STRINGID_TRAINER1WINTEXT 383 +// #define STRINGID_TRAINER1MON2COMEBACK 384 +// #define STRINGID_TRAINER1MON1AND2COMEBACK 385 +// // pokeemerald +// #define STRINGID_ITEMRESTOREDSPECIESHEALTH 386 +// #define STRINGID_ITEMRESTOREDSPECIESPP 387 +// #define STRINGID_ITEMCUREDSPECIESSTATUS 388 +// #define STRINGID_ELECTROSHOTCHARGING 389 +// #define STRINGID_METEORBEAMCHARGING 390 +// #define STRINGID_CLOAKEDINAHARSHLIGHT 391 +// #define STRINGID_VANISHEDINSTANTLY 392 +// #define STRINGID_PKMNTOOKTARGETHIGH 393 +// #define STRINGID_CLOAKEDINAFREEZINGLIGHT 394 +// #define STRINGID_PKNMABSORBINGPOWER 395 +// #define STRINGID_POKEMONCANNOTUSEMOVE 396 +// #define STRINGID_PKMNMOVEBOUNCEDABILITY 397 +// #define STRINGID_HEALBLOCKPREVENTSUSAGE 398 +// #define STRINGID_GRAVITYPREVENTSUSAGE 399 +// #define STRINGID_PKMNFROSTBITEHEALED2 400 +// #define STRINGID_PKMNFROSTBITEHEALEDBY 401 +// #define STRINGID_SAFETYGOGGLESPROTECTED 402 +// #define STRINGID_POWDEREXPLODES 403 +// #define STRINGID_PKMNCANTUSEMOVETHROATCHOP 404 +// #define STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN 405 +// #define STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT 406 +// #define STRINGID_TARGETATEITEM 407 +// #define STRINGID_GEMACTIVATES 408 +// #define STRINGID_ATTACKWEAKENEDBSTRONGWINDS 409 +// #define STRINGID_ENDUREDSTURDY 410 +// #define STRINGID_BERRYDMGREDUCES 411 +// #define STRINGID_TARGETTOUGHEDITOUT 412 +// #define STRINGID_TRAPPEDBYSWIRLINGMAGMA 413 +// #define STRINGID_INFESTATION 414 +// #define STRINGID_PKMNINSNAPTRAP 415 +// #define STRINGID_THUNDERCAGETRAPPED 416 +// #define STRINGID_RESETSTARGETSSTATLEVELS 417 +// #define STRINGID_EXTREMESUNLIGHTFADED 418 +// #define STRINGID_HEAVYRAINLIFTED 419 +// #define STRINGID_STRONGWINDSDISSIPATED 420 +// #define STRINGID_SYMBIOSISITEMPASS 421 +// #define STRINGID_BURSTINGFLAMESHIT 422 +// #define STRINGID_BROKETHROUGHPROTECTION 423 +// #define STRINGID_FELLFORFEINT 424 +// #define STRINGID_SPECTRALTHIEFSTEAL 425 +// #define STRINGID_PKMNSABILITYSUPPRESSED 426 +// #define STRINGID_INCINERATEBURN 427 +// #define STRINGID_BUGBITE 428 +// #define STRINGID_BOTHCANNOLONGERESCAPE 429 +// #define STRINGID_ATTACKERLOSTFIRETYPE 430 +// #define STRINGID_ATTACKERLOSTELECTRICTYPE 431 +// #define STRINGID_ATTACKERLOSTITSTYPE 432 +// #define STRINGID_STEALTHROCKDMG 433 +// #define STRINGID_SHARPSTEELDMG 434 +// #define STRINGID_POINTEDSTONESFLOAT 435 +// #define STRINGID_SHARPSTEELFLOATS 436 +// #define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 437 +// #define STRINGID_AROMAVEILPROTECTED 438 +// #define STRINGID_PKMNPREVENTEDFROMHEALING 439 +// #define STRINGID_TERRAINBECOMESMISTY 440 +// #define STRINGID_TERRAINBECOMESGRASSY 441 +// #define STRINGID_TERRAINBECOMESELECTRIC 442 +// #define STRINGID_TERRAINBECOMESPSYCHIC 443 +// #define STRINGID_DIMENSIONSWERETWISTED 444 +// #define STRINGID_BIZARREARENACREATED 445 +// #define STRINGID_BIZARREAREACREATED 446 +// #define STRINGID_TAILWINDBLEW 447 +// #define STRINGID_ELECTRICTERRAINENDS 448 +// #define STRINGID_MISTYTERRAINENDS 449 +// #define STRINGID_PSYCHICTERRAINENDS 450 +// #define STRINGID_GRASSYTERRAINENDS 451 +// #define STRINGID_MOLDBREAKERENTERS 452 +// #define STRINGID_TERAVOLTENTERS 453 +// #define STRINGID_TURBOBLAZEENTERS 454 +// #define STRINGID_SLOWSTARTENTERS 455 +// #define STRINGID_UNNERVEENTERS 456 +// #define STRINGID_ANTICIPATIONACTIVATES 457 +// #define STRINGID_FOREWARNACTIVATES 458 +// #define STRINGID_PRESSUREENTERS 459 +// #define STRINGID_DARKAURAENTERS 460 +// #define STRINGID_FAIRYAURAENTERS 461 +// #define STRINGID_AURABREAKENTERS 462 +// #define STRINGID_COMATOSEENTERS 463 +// #define STRINGID_SCREENCLEANERENTERS 464 +// #define STRINGID_ASONEENTERS 465 +// #define STRINGID_CURIOUSMEDICINEENTERS 466 +// #define STRINGID_PASTELVEILENTERS 467 +// #define STRINGID_NEUTRALIZINGGASENTERS 468 +// #define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 469 +// #define STRINGID_IMPOSTERTRANSFORM 470 +// #define STRINGID_SNOWWARNINGHAIL 471 +// #define STRINGID_SNOWWARNINGSNOW 472 +// #define STRINGID_SUPERSWEETAROMAWAFTS 473 +// #define STRINGID_AIRLOCKACTIVATES 474 +// #define STRINGID_BATTLERABILITYRAISEDSTAT 475 +// #define STRINGID_EXTREMELYHARSHSUNLIGHT 476 +// #define STRINGID_HEAVYRAIN 477 +// #define STRINGID_MYSTERIOUSAIRCURRENT 478 +// #define STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT 479 +// #define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 480 +// #define STRINGID_ZEROTOHEROTRANSFORMATION 481 +// #define STRINGID_HOSPITALITYRESTORATION 482 +// #define STRINGID_HARVESTBERRY 483 +// #define STRINGID_BADDREAMSDMG 484 +// #define STRINGID_SOLARPOWERHPDROP 485 +// #define STRINGID_HEALERCURE 486 +// #define STRINGID_FETCHEDPOKEBALL 487 +// #define STRINGID_TARGETABILITYSTATLOWER 488 +// #define STRINGID_TARGETSTATWONTGOHIGHER 489 +// #define STRINGID_TARGETABILITYSTATRAISE 490 +// #define STRINGID_CUSEDBODYDISABLED 491 +// #define STRINGID_ATTACKERACQUIREDABILITY 492 +// #define STRINGID_SWAPPEDABILITIES 493 +// #define STRINGID_TARGETSSTATWASMAXEDOUT 494 +// #define STRINGID_PKMNSABILITYPREVENTSABILITY 495 +// #define STRINGID_AFTERMATHDMG 496 +// #define STRINGID_ILLUSIONWOREOFF 497 +// #define STRINGID_ASANDSTORMKICKEDUP 498 +// #define STRINGID_PKMNSWILLPERISHIN3TURNS 499 +// #define STRINGID_POISONSPIKESSCATTERED 500 +// #define STRINGID_OPPORTUNISTCOPIED 501 +// #define STRINGID_PKMNGOTOVERITSINFATUATION 502 +// #define STRINGID_PKMNSHOOKOFFTHETAUNT 503 +// #define STRINGID_SUNLIGHTACTIVATEDABILITY 504 +// #define STRINGID_STATWASHEIGHTENED 505 +// #define STRINGID_BATTLERTYPECHANGEDTO 506 +// #define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 507 +// #define STRINGID_FRISKACTIVATES 508 +// #define STRINGID_ATTACKERABILITYSTATRAISE 509 +// #define STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED 510 +// #define STRINGID_NORELIEFROMHEAVYRAIN 511 +// #define STRINGID_MYSTERIOUSAIRCURRENTBLOWSON 512 +// #define STRINGID_AURAFLAREDTOLIFE 513 +// #define STRINGID_ATKGOTOVERINFATUATION 514 +// #define STRINGID_TORMENTEDNOMORE 515 +// #define STRINGID_BUFFERENDS 516 +// #define STRINGID_HEALBLOCKEDNOMORE 517 +// #define STRINGID_MICLEBERRYACTIVATES 518 +// #define STRINGID_MIRRORHERBCOPIED 519 +// #define STRINGID_PKMNSITEMHEALEDFROSTBITE 520 +// #define STRINGID_AIRBALLOONFLOAT 521 +// #define STRINGID_EJECTBUTTONACTIVATE 522 +// #define STRINGID_HURTBYITEM 523 +// #define STRINGID_AIRBALLOONPOP 524 +// #define STRINGID_STICKYBARBTRANSFER 525 +// #define STRINGID_TEAMGAINEDEXP 526 +// #define STRINGID_PKMNFROSTBITEHEALED 527 +// #define STRINGID_STOCKPILEDEFFECTWOREOFF 528 +// #define STRINGID_FELLSTRAIGHTDOWN 529 +// #define STRINGID_TARGETWOKEUP 530 +// #define STRINGID_PKMNBURNHEALED 531 +// #define STRINGID_REDCARDACTIVATE 532 +// #define STRINGID_MOVEBLOCKEDBYDYNAMAX 533 +// #define STRINGID_ITEMCANNOTBEREMOVED 534 +// #define STRINGID_ZMOVERESETSSTATS 535 +// #define STRINGID_ZMOVEZBOOSTCRIT 536 +// #define STRINGID_ZMOVERESTOREHP 537 +// #define STRINGID_ZMOVESTATUP 538 +// #define STRINGID_ZMOVEHPTRAP 539 +// #define STRINGID_ZMOVEALLSTATSUP 540 +// #define STRINGID_PKMNREVERTEDTOPRIMAL 541 +// #define STRINGID_HEALINGWISHHEALED 542 +// #define STRINGID_TOXICSPIKESABSORBED 543 +// #define STRINGID_TOXICSPIKESPOISONED 544 +// #define STRINGID_STICKYWEBSWITCHIN 545 +// #define STRINGID_HEALINGWISHCAMETRUE 546 +// #define STRINGID_LUNARDANCECAMETRUE 547 +// #define STRINGID_SPIKESDISAPPEAREDFROMTEAM 548 +// #define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 549 +// #define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 550 +// #define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 551 +// #define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 552 +// #define STRINGID_LASTABILITYRAISEDSTAT 553 +// #define STRINGID_RECEIVERABILITYTAKEOVER 554 +// #define STRINGID_NEUTRALIZINGGASOVER 555 +// #define STRINGID_ATTACKERBECAMEFULLYCHARGED 556 +// #define STRINGID_ATTACKERBECAMEASHSPECIES 557 +// #define STRINGID_PROTECTEDTEAM 558 +// #define STRINGID_ELECTRICTERRAINPREVENTS 559 +// #define STRINGID_MISTYTERRAINPREVENTS 560 +// #define STRINGID_PSYCHICTERRAINPREVENTS 561 +// #define STRINGID_FLOWERVEILPROTECTED 562 +// #define STRINGID_DRASTICALLY 563 +// #define STRINGID_SEVERELY 564 +// #define STRINGID_CLEARAMULETWONTLOWERSTATS 565 +// #define STRINGID_CELEBRATEMESSAGE 566 +// #define STRINGID_PKMNBLEWAWAYTOXICSPIKES 567 +// #define STRINGID_PKMNBLEWAWAYSTICKYWEB 568 +// #define STRINGID_PKMNBLEWAWAYSTEALTHROCK 569 +// #define STRINGID_PKMNBLEWAWAYSHARPSTEEL 570 +// #define STRINGID_PKMNGOTFROSTBITE 571 +// #define STRINGID_SNOWCONTINUES 572 +// #define STRINGID_SNOWSTOPPED 573 +// #define STRINGID_ELECTROMAGNETISM 574 +// #define STRINGID_TEAMTRAPPEDWITHVINES 575 +// #define STRINGID_TEAMCAUGHTINVORTEX 576 +// #define STRINGID_TEAMSURROUNDEDBYFIRE 577 +// #define STRINGID_TEAMSURROUNDEDBYROCKS 578 +// #define STRINGID_ICEBODYHPGAIN 579 +// #define STRINGID_GRASSYTERRAINHEALS 580 +// #define STRINGID_LUCKYCHANTENDS 581 +// #define STRINGID_TAILWINDENDS 582 +// #define STRINGID_TRICKROOMENDS 583 +// #define STRINGID_WONDERROOMENDS 584 +// #define STRINGID_MAGICROOMENDS 585 +// #define STRINGID_PKMNHURTBYVINES 586 +// #define STRINGID_PKMNHURTBYVORTEX 587 +// #define STRINGID_PKMNBURNINGUP 588 +// #define STRINGID_PKMNHURTBYROCKSTHROWN 589 +// #define STRINGID_MUDSPORTENDS 590 +// #define STRINGID_WATERSPORTENDS 591 +// #define STRINGID_GRAVITYENDS 592 +// #define STRINGID_ATTACKEREXPELLEDTHEPOISON 593 +// #define STRINGID_ATTACKERSHOOKITSELFAWAKE 594 +// #define STRINGID_ATTACKERBROKETHROUGHPARALYSIS 595 +// #define STRINGID_ATTACKERHEALEDITSBURN 596 +// #define STRINGID_ATTACKERMELTEDTHEICE 597 +// #define STRINGID_THERAINBOWDISAPPEARED 598 +// #define STRINGID_THESEAOFFIREDISAPPEARED 599 +// #define STRINGID_THESWAMPDISAPPEARED 600 +// #define STRINGID_AQUARINGHEAL 601 +// #define STRINGID_POISONHEALHPUP 602 +// #define STRINGID_EMBARGOENDS 603 +// #define STRINGID_TELEKINESISENDS 604 +// #define STRINGID_PKMNHURTBYFROSTBITE 605 -#define BATTLESTRINGS_COUNT 572 + +#define STRINGID_TRAINER1LOSETEXT 12 +#define STRINGID_PKMNGAINEDEXP 13 +#define STRINGID_PKMNGREWTOLV 14 +#define STRINGID_PKMNLEARNEDMOVE 15 +#define STRINGID_TRYTOLEARNMOVE1 16 +#define STRINGID_TRYTOLEARNMOVE2 17 +#define STRINGID_TRYTOLEARNMOVE3 18 +#define STRINGID_PKMNFORGOTMOVE 19 +#define STRINGID_STOPLEARNINGMOVE 20 +#define STRINGID_DIDNOTLEARNMOVE 21 +#define STRINGID_PKMNLEARNEDMOVE2 22 +#define STRINGID_ATTACKMISSED 23 +#define STRINGID_PKMNPROTECTEDITSELF 24 +#define STRINGID_STATSWONTINCREASE2 25 +#define STRINGID_AVOIDEDDAMAGE 26 +#define STRINGID_ITDOESNTAFFECT 27 +#define STRINGID_ATTACKERFAINTED 28 +#define STRINGID_TARGETFAINTED 29 +#define STRINGID_PLAYERGOTMONEY 30 +#define STRINGID_PLAYERWHITEOUT 31 +#define STRINGID_PLAYERWHITEOUT2 32 +#define STRINGID_PREVENTSESCAPE 33 +#define STRINGID_HITXTIMES 34 +#define STRINGID_PKMNFELLASLEEP 35 +#define STRINGID_PKMNMADESLEEP 36 +#define STRINGID_PKMNALREADYASLEEP 37 +#define STRINGID_PKMNALREADYASLEEP2 38 +#define STRINGID_PKMNWASNTAFFECTED 39 +#define STRINGID_PKMNWASPOISONED 40 +#define STRINGID_PKMNPOISONEDBY 41 +#define STRINGID_PKMNHURTBYPOISON 42 +#define STRINGID_PKMNALREADYPOISONED 43 +#define STRINGID_PKMNBADLYPOISONED 44 +#define STRINGID_PKMNENERGYDRAINED 45 +#define STRINGID_PKMNWASBURNED 46 +#define STRINGID_PKMNBURNEDBY 47 +#define STRINGID_PKMNHURTBYBURN 48 +#define STRINGID_PKMNWASFROZEN 49 +#define STRINGID_PKMNFROZENBY 50 +#define STRINGID_PKMNISFROZEN 51 +#define STRINGID_PKMNWASDEFROSTED 52 +#define STRINGID_PKMNWASDEFROSTED2 53 +#define STRINGID_PKMNWASDEFROSTEDBY 54 +#define STRINGID_PKMNWASPARALYZED 55 +#define STRINGID_PKMNWASPARALYZEDBY 56 +#define STRINGID_PKMNISPARALYZED 57 +#define STRINGID_PKMNISALREADYPARALYZED 58 +#define STRINGID_PKMNHEALEDPARALYSIS 59 +#define STRINGID_PKMNDREAMEATEN 60 +#define STRINGID_STATSWONTINCREASE 61 +#define STRINGID_STATSWONTDECREASE 62 +#define STRINGID_TEAMSTOPPEDWORKING 63 +#define STRINGID_FOESTOPPEDWORKING 64 +#define STRINGID_PKMNISCONFUSED 65 +#define STRINGID_PKMNHEALEDCONFUSION 66 +#define STRINGID_PKMNWASCONFUSED 67 +#define STRINGID_PKMNALREADYCONFUSED 68 +#define STRINGID_PKMNFELLINLOVE 69 +#define STRINGID_PKMNINLOVE 70 +#define STRINGID_PKMNIMMOBILIZEDBYLOVE 71 +#define STRINGID_PKMNBLOWNAWAY 72 +#define STRINGID_PKMNCHANGEDTYPE 73 +#define STRINGID_PKMNFLINCHED 74 +#define STRINGID_PKMNREGAINEDHEALTH 75 +#define STRINGID_PKMNHPFULL 76 +#define STRINGID_PKMNRAISEDSPDEF 77 +#define STRINGID_PKMNRAISEDDEF 78 +#define STRINGID_PKMNCOVEREDBYVEIL 79 +#define STRINGID_PKMNUSEDSAFEGUARD 80 +#define STRINGID_PKMNSAFEGUARDEXPIRED 81 +#define STRINGID_PKMNWENTTOSLEEP 82 +#define STRINGID_PKMNSLEPTHEALTHY 83 +#define STRINGID_PKMNWHIPPEDWHIRLWIND 84 +#define STRINGID_PKMNTOOKSUNLIGHT 85 +#define STRINGID_PKMNLOWEREDHEAD 86 +#define STRINGID_PKMNISGLOWING 87 +#define STRINGID_PKMNFLEWHIGH 88 +#define STRINGID_PKMNDUGHOLE 89 +#define STRINGID_PKMNSQUEEZEDBYBIND 90 +#define STRINGID_PKMNTRAPPEDINVORTEX 91 +#define STRINGID_PKMNWRAPPEDBY 92 +#define STRINGID_PKMNCLAMPED 93 +#define STRINGID_PKMNHURTBY 94 +#define STRINGID_PKMNFREEDFROM 95 +#define STRINGID_PKMNCRASHED 96 +#define STRINGID_PKMNSHROUDEDINMIST 97 +#define STRINGID_PKMNPROTECTEDBYMIST 98 +#define STRINGID_PKMNGETTINGPUMPED 99 +#define STRINGID_PKMNHITWITHRECOIL 100 +#define STRINGID_PKMNPROTECTEDITSELF2 101 +#define STRINGID_PKMNBUFFETEDBYSANDSTORM 102 +#define STRINGID_PKMNPELTEDBYHAIL 103 +#define STRINGID_PKMNSEEDED 104 +#define STRINGID_PKMNEVADEDATTACK 105 +#define STRINGID_PKMNSAPPEDBYLEECHSEED 106 +#define STRINGID_PKMNFASTASLEEP 107 +#define STRINGID_PKMNWOKEUP 108 +#define STRINGID_PKMNUPROARKEPTAWAKE 109 +#define STRINGID_PKMNWOKEUPINUPROAR 110 +#define STRINGID_PKMNCAUSEDUPROAR 111 +#define STRINGID_PKMNMAKINGUPROAR 112 +#define STRINGID_PKMNCALMEDDOWN 113 +#define STRINGID_PKMNCANTSLEEPINUPROAR 114 +#define STRINGID_PKMNSTOCKPILED 115 +#define STRINGID_PKMNCANTSTOCKPILE 116 +#define STRINGID_PKMNCANTSLEEPINUPROAR2 117 +#define STRINGID_UPROARKEPTPKMNAWAKE 118 +#define STRINGID_PKMNSTAYEDAWAKEUSING 119 +#define STRINGID_PKMNSTORINGENERGY 120 +#define STRINGID_PKMNUNLEASHEDENERGY 121 +#define STRINGID_PKMNFATIGUECONFUSION 122 +#define STRINGID_PLAYERPICKEDUPMONEY 123 +#define STRINGID_PKMNUNAFFECTED 124 +#define STRINGID_PKMNTRANSFORMEDINTO 125 +#define STRINGID_PKMNMADESUBSTITUTE 126 +#define STRINGID_PKMNHASSUBSTITUTE 127 +#define STRINGID_SUBSTITUTEDAMAGED 128 +#define STRINGID_PKMNSUBSTITUTEFADED 129 +#define STRINGID_PKMNMUSTRECHARGE 130 +#define STRINGID_PKMNRAGEBUILDING 131 +#define STRINGID_PKMNMOVEWASDISABLED 132 +#define STRINGID_PKMNMOVEISDISABLED 133 +#define STRINGID_PKMNMOVEDISABLEDNOMORE 134 +#define STRINGID_PKMNGOTENCORE 135 +#define STRINGID_PKMNENCOREENDED 136 +#define STRINGID_PKMNTOOKAIM 137 +#define STRINGID_PKMNSKETCHEDMOVE 138 +#define STRINGID_PKMNTRYINGTOTAKEFOE 139 +#define STRINGID_PKMNTOOKFOE 140 +#define STRINGID_PKMNREDUCEDPP 141 +#define STRINGID_PKMNSTOLEITEM 142 +#define STRINGID_TARGETCANTESCAPENOW 143 +#define STRINGID_PKMNFELLINTONIGHTMARE 144 +#define STRINGID_PKMNLOCKEDINNIGHTMARE 145 +#define STRINGID_PKMNLAIDCURSE 146 +#define STRINGID_PKMNAFFLICTEDBYCURSE 147 +#define STRINGID_SPIKESSCATTERED 148 +#define STRINGID_PKMNHURTBYSPIKES 149 +#define STRINGID_PKMNIDENTIFIED 150 +#define STRINGID_PKMNPERISHCOUNTFELL 151 +#define STRINGID_PKMNBRACEDITSELF 152 +#define STRINGID_PKMNENDUREDHIT 153 +#define STRINGID_MAGNITUDESTRENGTH 154 +#define STRINGID_PKMNCUTHPMAXEDATTACK 155 +#define STRINGID_PKMNCOPIEDSTATCHANGES 156 +#define STRINGID_PKMNGOTFREE 157 +#define STRINGID_PKMNSHEDLEECHSEED 158 +#define STRINGID_PKMNBLEWAWAYSPIKES 159 +#define STRINGID_PKMNFLEDFROMBATTLE 160 +#define STRINGID_PKMNFORESAWATTACK 161 +#define STRINGID_PKMNTOOKATTACK 162 +#define STRINGID_PKMNATTACK 163 +#define STRINGID_PKMNCENTERATTENTION 164 +#define STRINGID_PKMNCHARGINGPOWER 165 +#define STRINGID_NATUREPOWERTURNEDINTO 166 +#define STRINGID_PKMNSTATUSNORMAL 167 +#define STRINGID_PKMNHASNOMOVESLEFT 168 +#define STRINGID_PKMNSUBJECTEDTOTORMENT 169 +#define STRINGID_PKMNCANTUSEMOVETORMENT 170 +#define STRINGID_PKMNTIGHTENINGFOCUS 171 +#define STRINGID_PKMNFELLFORTAUNT 172 +#define STRINGID_PKMNCANTUSEMOVETAUNT 173 +#define STRINGID_PKMNREADYTOHELP 174 +#define STRINGID_PKMNSWITCHEDITEMS 175 +#define STRINGID_PKMNCOPIEDFOE 176 +#define STRINGID_PKMNMADEWISH 177 +#define STRINGID_PKMNWISHCAMETRUE 178 +#define STRINGID_PKMNPLANTEDROOTS 179 +#define STRINGID_PKMNABSORBEDNUTRIENTS 180 +#define STRINGID_PKMNANCHOREDITSELF 181 +#define STRINGID_PKMNWASMADEDROWSY 182 +#define STRINGID_PKMNKNOCKEDOFF 183 +#define STRINGID_PKMNSWAPPEDABILITIES 184 +#define STRINGID_PKMNSEALEDOPPONENTMOVE 185 +#define STRINGID_PKMNCANTUSEMOVESEALED 186 +#define STRINGID_PKMNWANTSGRUDGE 187 +#define STRINGID_PKMNLOSTPPGRUDGE 188 +#define STRINGID_PKMNSHROUDEDITSELF 189 +#define STRINGID_PKMNMOVEBOUNCED 190 +#define STRINGID_PKMNWAITSFORTARGET 191 +#define STRINGID_PKMNSNATCHEDMOVE 192 +#define STRINGID_PKMNMADEITRAIN 193 +#define STRINGID_PKMNRAISEDSPEED 194 +#define STRINGID_PKMNPROTECTEDBY 195 +#define STRINGID_PKMNPREVENTSUSAGE 196 +#define STRINGID_PKMNRESTOREDHPUSING 197 +#define STRINGID_PKMNCHANGEDTYPEWITH 198 +#define STRINGID_PKMNPREVENTSPARALYSISWITH 199 +#define STRINGID_PKMNPREVENTSROMANCEWITH 200 +#define STRINGID_PKMNPREVENTSPOISONINGWITH 201 +#define STRINGID_PKMNPREVENTSCONFUSIONWITH 202 +#define STRINGID_PKMNRAISEDFIREPOWERWITH 203 +#define STRINGID_PKMNANCHORSITSELFWITH 204 +#define STRINGID_PKMNCUTSATTACKWITH 205 +#define STRINGID_PKMNPREVENTSSTATLOSSWITH 206 +#define STRINGID_PKMNHURTSWITH 207 +#define STRINGID_PKMNTRACED 208 +#define STRINGID_STATSHARPLY 209 +#define STRINGID_STATROSE 210 +#define STRINGID_STATHARSHLY 211 +#define STRINGID_STATFELL 212 +#define STRINGID_ATTACKERSSTATROSE 213 +#define STRINGID_DEFENDERSSTATROSE 214 +#define STRINGID_ATTACKERSSTATFELL 215 +#define STRINGID_DEFENDERSSTATFELL 216 +#define STRINGID_CRITICALHIT 217 +#define STRINGID_ONEHITKO 218 +#define STRINGID_123POOF 219 +#define STRINGID_ANDELLIPSIS 220 +#define STRINGID_NOTVERYEFFECTIVE 221 +#define STRINGID_SUPEREFFECTIVE 222 +#define STRINGID_GOTAWAYSAFELY 223 +#define STRINGID_WILDPKMNFLED 224 +#define STRINGID_NORUNNINGFROMTRAINERS 225 +#define STRINGID_CANTESCAPE 226 +#define STRINGID_DONTLEAVEBIRCH 227 +#define STRINGID_BUTNOTHINGHAPPENED 228 +#define STRINGID_BUTITFAILED 229 +#define STRINGID_ITHURTCONFUSION 230 +#define STRINGID_MIRRORMOVEFAILED 231 +#define STRINGID_STARTEDTORAIN 232 +#define STRINGID_DOWNPOURSTARTED 233 +#define STRINGID_RAINCONTINUES 234 +#define STRINGID_DOWNPOURCONTINUES 235 +#define STRINGID_RAINSTOPPED 236 +#define STRINGID_SANDSTORMBREWED 237 +#define STRINGID_SANDSTORMRAGES 238 +#define STRINGID_SANDSTORMSUBSIDED 239 +#define STRINGID_SUNLIGHTGOTBRIGHT 240 +#define STRINGID_SUNLIGHTSTRONG 241 +#define STRINGID_SUNLIGHTFADED 242 +#define STRINGID_STARTEDHAIL 243 +#define STRINGID_HAILCONTINUES 244 +#define STRINGID_HAILSTOPPED 245 +#define STRINGID_FAILEDTOSPITUP 246 +#define STRINGID_FAILEDTOSWALLOW 247 +#define STRINGID_WINDBECAMEHEATWAVE 248 +#define STRINGID_STATCHANGESGONE 249 +#define STRINGID_COINSSCATTERED 250 +#define STRINGID_TOOWEAKFORSUBSTITUTE 251 +#define STRINGID_SHAREDPAIN 252 +#define STRINGID_BELLCHIMED 253 +#define STRINGID_FAINTINTHREE 254 +#define STRINGID_NOPPLEFT 255 +#define STRINGID_BUTNOPPLEFT 256 +#define STRINGID_PLAYERUSEDITEM 257 +#define STRINGID_WALLYUSEDITEM 258 +#define STRINGID_TRAINERBLOCKEDBALL 259 +#define STRINGID_DONTBEATHIEF 260 +#define STRINGID_ITDODGEDBALL 261 +#define STRINGID_YOUMISSEDPKMN 262 +#define STRINGID_PKMNBROKEFREE 263 +#define STRINGID_ITAPPEAREDCAUGHT 264 +#define STRINGID_AARGHALMOSTHADIT 265 +#define STRINGID_SHOOTSOCLOSE 266 +#define STRINGID_GOTCHAPKMNCAUGHTPLAYER 267 +#define STRINGID_GOTCHAPKMNCAUGHTWALLY 268 +#define STRINGID_GIVENICKNAMECAPTURED 269 +#define STRINGID_PKMNSENTTOPC 270 +#define STRINGID_PKMNDATAADDEDTODEX 271 +#define STRINGID_ITISRAINING 272 +#define STRINGID_SANDSTORMISRAGING 273 +#define STRINGID_CANTESCAPE2 274 +#define STRINGID_PKMNIGNORESASLEEP 275 +#define STRINGID_PKMNIGNOREDORDERS 276 +#define STRINGID_PKMNBEGANTONAP 277 +#define STRINGID_PKMNLOAFING 278 +#define STRINGID_PKMNWONTOBEY 279 +#define STRINGID_PKMNTURNEDAWAY 280 +#define STRINGID_PKMNPRETENDNOTNOTICE 281 +#define STRINGID_ENEMYABOUTTOSWITCHPKMN 282 +#define STRINGID_CREPTCLOSER 283 +#define STRINGID_CANTGETCLOSER 284 +#define STRINGID_PKMNWATCHINGCAREFULLY 285 +#define STRINGID_PKMNCURIOUSABOUTX 286 +#define STRINGID_PKMNENTHRALLEDBYX 287 +#define STRINGID_PKMNIGNOREDX 288 +#define STRINGID_THREWPOKEBLOCKATPKMN 289 +#define STRINGID_OUTOFSAFARIBALLS 290 +#define STRINGID_PKMNSITEMCUREDPARALYSIS 291 +#define STRINGID_PKMNSITEMCUREDPOISON 292 +#define STRINGID_PKMNSITEMHEALEDBURN 293 +#define STRINGID_PKMNSITEMDEFROSTEDIT 294 +#define STRINGID_PKMNSITEMWOKEIT 295 +#define STRINGID_PKMNSITEMSNAPPEDOUT 296 +#define STRINGID_PKMNSITEMCUREDPROBLEM 297 +#define STRINGID_PKMNSITEMRESTOREDHEALTH 298 +#define STRINGID_PKMNSITEMRESTOREDPP 299 +#define STRINGID_PKMNSITEMRESTOREDSTATUS 300 +#define STRINGID_PKMNSITEMRESTOREDHPALITTLE 301 +#define STRINGID_ITEMALLOWSONLYYMOVE 302 +#define STRINGID_PKMNHUNGONWITHX 303 +#define STRINGID_EMPTYSTRING3 304 +#define STRINGID_PKMNSXPREVENTSBURNS 305 +#define STRINGID_PKMNSXBLOCKSY 306 +#define STRINGID_PKMNSXRESTOREDHPALITTLE2 307 +#define STRINGID_PKMNSXWHIPPEDUPSANDSTORM 308 +#define STRINGID_PKMNSXPREVENTSYLOSS 309 +#define STRINGID_PKMNSXINFATUATEDY 310 +#define STRINGID_PKMNSXMADEYINEFFECTIVE 311 +#define STRINGID_PKMNSXCUREDYPROBLEM 312 +#define STRINGID_ITSUCKEDLIQUIDOOZE 313 +#define STRINGID_PKMNTRANSFORMED 314 +#define STRINGID_ELECTRICITYWEAKENED 315 +#define STRINGID_FIREWEAKENED 316 +#define STRINGID_PKMNHIDUNDERWATER 317 +#define STRINGID_PKMNSPRANGUP 318 +#define STRINGID_HMMOVESCANTBEFORGOTTEN 319 +#define STRINGID_XFOUNDONEY 320 +#define STRINGID_PLAYERDEFEATEDTRAINER1 321 +#define STRINGID_SOOTHINGAROMA 322 +#define STRINGID_ITEMSCANTBEUSEDNOW 323 +#define STRINGID_FORXCOMMAYZ 324 +#define STRINGID_USINGITEMSTATOFPKMNROSE 325 +#define STRINGID_PKMNUSEDXTOGETPUMPED 326 +#define STRINGID_PKMNSXMADEYUSELESS 327 +#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328 +#define STRINGID_EMPTYSTRING4 329 +#define STRINGID_ABOOSTED 330 +#define STRINGID_PKMNSXINTENSIFIEDSUN 331 +#define STRINGID_PKMNMAKESGROUNDMISS 332 +#define STRINGID_YOUTHROWABALLNOWRIGHT 333 +#define STRINGID_PKMNSXTOOKATTACK 334 +#define STRINGID_PKMNCHOSEXASDESTINY 335 +#define STRINGID_PKMNLOSTFOCUS 336 +#define STRINGID_USENEXTPKMN 337 +#define STRINGID_PKMNFLEDUSINGITS 338 +#define STRINGID_PKMNFLEDUSING 339 +#define STRINGID_PKMNWASDRAGGEDOUT 340 +#define STRINGID_PREVENTEDFROMWORKING 341 +#define STRINGID_PKMNSITEMNORMALIZEDSTATUS 342 +#define STRINGID_TRAINER1USEDITEM 343 +#define STRINGID_BOXISFULL 344 +#define STRINGID_PKMNAVOIDEDATTACK 345 +#define STRINGID_PKMNSXMADEITINEFFECTIVE 346 +#define STRINGID_PKMNSXPREVENTSFLINCHING 347 +#define STRINGID_PKMNALREADYHASBURN 348 +#define STRINGID_STATSWONTDECREASE2 349 +#define STRINGID_PKMNSXBLOCKSY2 350 +#define STRINGID_PKMNSXWOREOFF 351 +#define STRINGID_PKMNRAISEDDEFALITTLE 352 +#define STRINGID_PKMNRAISEDSPDEFALITTLE 353 +#define STRINGID_THEWALLSHATTERED 354 +#define STRINGID_PKMNSXPREVENTSYSZ 355 +#define STRINGID_PKMNSXCUREDITSYPROBLEM 356 +#define STRINGID_ATTACKERCANTESCAPE 357 +#define STRINGID_PKMNOBTAINEDX 358 +#define STRINGID_PKMNOBTAINEDX2 359 +#define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360 +#define STRINGID_BUTNOEFFECT 361 +#define STRINGID_PKMNSXHADNOEFFECTONY 362 +#define STRINGID_TWOENEMIESDEFEATED 363 +#define STRINGID_TRAINER2LOSETEXT 364 +#define STRINGID_PKMNINCAPABLEOFPOWER 365 +#define STRINGID_GLINTAPPEARSINEYE 366 +#define STRINGID_PKMNGETTINGINTOPOSITION 367 +#define STRINGID_PKMNBEGANGROWLINGDEEPLY 368 +#define STRINGID_PKMNEAGERFORMORE 369 +#define STRINGID_DEFEATEDOPPONENTBYREFEREE 370 +#define STRINGID_LOSTTOOPPONENTBYREFEREE 371 +#define STRINGID_TIEDOPPONENTBYREFEREE 372 +#define STRINGID_QUESTIONFORFEITMATCH 373 +#define STRINGID_FORFEITEDMATCH 374 +#define STRINGID_PKMNTRANSFERREDSOMEONESPC 375 +#define STRINGID_PKMNTRANSFERREDLANETTESPC 376 +#define STRINGID_PKMNBOXSOMEONESPCFULL 377 +#define STRINGID_PKMNBOXLANETTESPCFULL 378 +#define STRINGID_TRAINER1WINTEXT 379 +#define STRINGID_TRAINER2WINTEXT 380 +#define STRINGID_ENDUREDSTURDY 381 +#define STRINGID_POWERHERB 382 +#define STRINGID_HURTBYITEM 383 +#define STRINGID_PSNBYITEM 384 +#define STRINGID_BRNBYITEM 385 +#define STRINGID_DEFABILITYIN 386 +#define STRINGID_GRAVITYINTENSIFIED 387 +#define STRINGID_TARGETIDENTIFIED 388 +#define STRINGID_TARGETWOKEUP 389 +#define STRINGID_PKMNSTOLEANDATEITEM 390 +#define STRINGID_TAILWINDBLEW 391 +#define STRINGID_PKMNWENTBACK 392 +#define STRINGID_PKMNCANTUSEITEMSANYMORE 393 +#define STRINGID_PKMNFLUNG 394 +#define STRINGID_PKMNPREVENTEDFROMHEALING 395 +#define STRINGID_PKMNSWITCHEDATKANDDEF 396 +#define STRINGID_PKMNSABILITYSUPPRESSED 397 +#define STRINGID_SHIELDEDFROMCRITICALHITS 398 +#define STRINGID_SWITCHEDATKANDSPATK 399 +#define STRINGID_SWITCHEDDEFANDSPDEF 400 +#define STRINGID_PKMNACQUIREDABILITY 401 +#define STRINGID_POISONSPIKESSCATTERED 402 +#define STRINGID_PKMNSWITCHEDSTATCHANGES 403 +#define STRINGID_PKMNSURROUNDEDWITHVEILOFWATER 404 +#define STRINGID_PKMNLEVITATEDONELECTROMAGNETISM 405 +#define STRINGID_PKMNTWISTEDDIMENSIONS 406 +#define STRINGID_POINTEDSTONESFLOAT 407 +#define STRINGID_CLOAKEDINMYSTICALMOONLIGHT 408 +#define STRINGID_TRAPPEDBYSWIRLINGMAGMA 409 +#define STRINGID_VANISHEDINSTANTLY 410 +#define STRINGID_PROTECTEDTEAM 411 +#define STRINGID_SHAREDITSGUARD 412 +#define STRINGID_SHAREDITSPOWER 413 +#define STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON 414 +#define STRINGID_BECAMENIMBLE 415 +#define STRINGID_HURLEDINTOTHEAIR 416 +#define STRINGID_HELDITEMSLOSEEFFECTS 417 +#define STRINGID_FELLSTRAIGHTDOWN 418 +#define STRINGID_TARGETCHANGEDTYPE 419 +#define STRINGID_PKMNACQUIREDSIMPLE 420 +#define STRINGID_EMPTYSTRING5 421 +#define STRINGID_KINDOFFER 422 +#define STRINGID_RESETSTARGETSSTATLEVELS 423 +#define STRINGID_EMPTYSTRING6 424 +#define STRINGID_ALLYSWITCHPOSITION 425 +#define STRINGID_RESTORETARGETSHEALTH 426 +#define STRINGID_TOOKPJMNINTOTHESKY 427 +#define STRINGID_FREEDFROMSKYDROP 428 +#define STRINGID_POSTPONETARGETMOVE 429 +#define STRINGID_REFLECTTARGETSTYPE 430 +#define STRINGID_TRANSFERHELDITEM 431 +#define STRINGID_EMBARGOENDS 432 +#define STRINGID_ELECTROMAGNETISM 433 +#define STRINGID_BUFFERENDS 434 +#define STRINGID_TELEKINESISENDS 435 +#define STRINGID_TAILWINDENDS 436 +#define STRINGID_LUCKYCHANTENDS 437 +#define STRINGID_TRICKROOMENDS 438 +#define STRINGID_WONDERROOMENDS 439 +#define STRINGID_MAGICROOMENDS 440 +#define STRINGID_MUDSPORTENDS 441 +#define STRINGID_WATERSPORTENDS 442 +#define STRINGID_GRAVITYENDS 443 +#define STRINGID_AQUARINGHEAL 444 +#define STRINGID_AURORAVEILENDS 445 +#define STRINGID_ELECTRICTERRAINENDS 446 +#define STRINGID_MISTYTERRAINENDS 447 +#define STRINGID_PSYCHICTERRAINENDS 448 +#define STRINGID_GRASSYTERRAINENDS 449 +#define STRINGID_TARGETABILITYSTATRAISE 450 +#define STRINGID_TARGETSSTATWASMAXEDOUT 451 +#define STRINGID_ATTACKERABILITYSTATRAISE 452 +#define STRINGID_POISONHEALHPUP 453 +#define STRINGID_BADDREAMSDMG 454 +#define STRINGID_MOLDBREAKERENTERS 455 +#define STRINGID_TERAVOLTENTERS 456 +#define STRINGID_TURBOBLAZEENTERS 457 +#define STRINGID_SLOWSTARTENTERS 458 +#define STRINGID_SLOWSTARTEND 459 +#define STRINGID_SOLARPOWERHPDROP 460 +#define STRINGID_AFTERMATHDMG 461 +#define STRINGID_ANTICIPATIONACTIVATES 462 +#define STRINGID_FOREWARNACTIVATES 463 +#define STRINGID_ICEBODYHPGAIN 464 +#define STRINGID_SNOWWARNINGHAIL 465 +#define STRINGID_FRISKACTIVATES 466 +#define STRINGID_UNNERVEENTERS 467 +#define STRINGID_HARVESTBERRY 468 +#define STRINGID_LASTABILITYRAISEDSTAT 469 +#define STRINGID_MAGICBOUNCEACTIVATES 470 +#define STRINGID_PROTEANTYPECHANGE 471 +#define STRINGID_SYMBIOSISITEMPASS 472 +#define STRINGID_STEALTHROCKDMG 473 +#define STRINGID_TOXICSPIKESABSORBED 474 +#define STRINGID_TOXICSPIKESPOISONED 475 +#define STRINGID_STICKYWEBSWITCHIN 476 +#define STRINGID_HEALINGWISHCAMETRUE 477 +#define STRINGID_HEALINGWISHHEALED 478 +#define STRINGID_LUNARDANCECAMETRUE 479 +#define STRINGID_CUSEDBODYDISABLED 480 +#define STRINGID_ATTACKERACQUIREDABILITY 481 +#define STRINGID_TARGETABILITYSTATLOWER 482 +#define STRINGID_TARGETSTATWONTGOHIGHER 483 +#define STRINGID_PKMNMOVEBOUNCEDABILITY 484 +#define STRINGID_IMPOSTERTRANSFORM 485 +#define STRINGID_ASSAULTVESTDOESNTALLOW 486 +#define STRINGID_GRAVITYPREVENTSUSAGE 487 +#define STRINGID_HEALBLOCKPREVENTSUSAGE 488 +#define STRINGID_NOTDONEYET 489 +#define STRINGID_STICKYWEBUSED 490 +#define STRINGID_QUASHSUCCESS 491 +#define STRINGID_PKMNBLEWAWAYTOXICSPIKES 492 +#define STRINGID_PKMNBLEWAWAYSTICKYWEB 493 +#define STRINGID_PKMNBLEWAWAYSTEALTHROCK 494 +#define STRINGID_IONDELUGEON 495 +#define STRINGID_TOPSYTURVYSWITCHEDSTATS 496 +#define STRINGID_TERRAINBECOMESMISTY 497 +#define STRINGID_TERRAINBECOMESGRASSY 498 +#define STRINGID_TERRAINBECOMESELECTRIC 499 +#define STRINGID_TERRAINBECOMESPSYCHIC 500 +#define STRINGID_TARGETELECTRIFIED 501 +#define STRINGID_MEGAEVOREACTING 502 +#define STRINGID_MEGAEVOEVOLVED 503 +#define STRINGID_DRASTICALLY 504 +#define STRINGID_SEVERELY 505 +#define STRINGID_INFESTATION 506 +#define STRINGID_NOEFFECTONTARGET 507 +#define STRINGID_BURSTINGFLAMESHIT 508 +#define STRINGID_BESTOWITEMGIVING 509 +#define STRINGID_THIRDTYPEADDED 510 +#define STRINGID_FELLFORFEINT 511 +#define STRINGID_POKEMONCANNOTUSEMOVE 512 +#define STRINGID_COVEREDINPOWDER 513 +#define STRINGID_POWDEREXPLODES 514 +#define STRINGID_BELCHCANTSELECT 515 +#define STRINGID_SPECTRALTHIEFSTEAL 516 +#define STRINGID_GRAVITYGROUNDING 517 +#define STRINGID_MISTYTERRAINPREVENTS 518 +#define STRINGID_GRASSYTERRAINHEALS 519 +#define STRINGID_ELECTRICTERRAINPREVENTS 520 +#define STRINGID_PSYCHICTERRAINPREVENTS 521 +#define STRINGID_SAFETYGOGGLESPROTECTED 522 +#define STRINGID_FLOWERVEILPROTECTED 523 +#define STRINGID_SWEETVEILPROTECTED 524 +#define STRINGID_AROMAVEILPROTECTED 525 +#define STRINGID_CELEBRATEMESSAGE 526 +#define STRINGID_USEDINSTRUCTEDMOVE 527 +#define STRINGID_THROATCHOPENDS 528 +#define STRINGID_PKMNCANTUSEMOVETHROATCHOP 529 +#define STRINGID_LASERFOCUS 530 +#define STRINGID_GEMACTIVATES 531 +#define STRINGID_BERRYDMGREDUCES 532 +#define STRINGID_TARGETATEITEM 533 +#define STRINGID_AIRBALLOONFLOAT 534 +#define STRINGID_AIRBALLOONPOP 535 +#define STRINGID_INCINERATEBURN 536 +#define STRINGID_BUGBITE 537 +#define STRINGID_ILLUSIONWOREOFF 538 +#define STRINGID_ATTACKERCUREDTARGETSTATUS 539 +#define STRINGID_ATTACKERLOSTFIRETYPE 540 +#define STRINGID_HEALERCURE 541 +#define STRINGID_SCRIPTINGABILITYSTATRAISE 542 +#define STRINGID_RECEIVERABILITYTAKEOVER 543 +#define STRINGID_PKNMABSORBINGPOWER 544 +#define STRINGID_NOONEWILLBEABLETORUNAWAY 545 +#define STRINGID_DESTINYKNOTACTIVATES 546 +#define STRINGID_CLOAKEDINAFREEZINGLIGHT 547 +#define STRINGID_CLEARAMULETWONTLOWERSTATS 548 +#define STRINGID_FERVENTWISHREACHED 549 +#define STRINGID_AIRLOCKACTIVATES 550 +#define STRINGID_PRESSUREENTERS 551 +#define STRINGID_DARKAURAENTERS 552 +#define STRINGID_FAIRYAURAENTERS 553 +#define STRINGID_AURABREAKENTERS 554 +#define STRINGID_COMATOSEENTERS 555 +#define STRINGID_SCREENCLEANERENTERS 556 +#define STRINGID_FETCHEDPOKEBALL 557 +#define STRINGID_BATTLERABILITYRAISEDSTAT 558 +#define STRINGID_ASANDSTORMKICKEDUP 559 +#define STRINGID_PKMNSWILLPERISHIN3TURNS 560 +#define STRINGID_ABILITYRAISEDSTATDRASTICALLY 561 +#define STRINGID_AURAFLAREDTOLIFE 562 +#define STRINGID_ASONEENTERS 563 +#define STRINGID_CURIOUSMEDICINEENTERS 564 +#define STRINGID_CANACTFASTERTHANKSTO 565 +#define STRINGID_MICLEBERRYACTIVATES 566 +#define STRINGID_PKMNSHOOKOFFTHETAUNT 567 +#define STRINGID_PKMNGOTOVERITSINFATUATION 568 +#define STRINGID_ITEMCANNOTBEREMOVED 569 +#define STRINGID_STICKYBARBTRANSFER 570 +#define STRINGID_PKMNBURNHEALED 571 +#define STRINGID_REDCARDACTIVATE 572 +#define STRINGID_EJECTBUTTONACTIVATE 573 +#define STRINGID_ATKGOTOVERINFATUATION 574 +#define STRINGID_TORMENTEDNOMORE 575 +#define STRINGID_HEALBLOCKEDNOMORE 576 +#define STRINGID_ATTACKERBECAMEFULLYCHARGED 577 +#define STRINGID_ATTACKERBECAMEASHSPECIES 578 +#define STRINGID_EXTREMELYHARSHSUNLIGHT 579 +#define STRINGID_EXTREMESUNLIGHTFADED 580 +#define STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT 581 +#define STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED 582 +#define STRINGID_HEAVYRAIN 583 +#define STRINGID_HEAVYRAINLIFTED 584 +#define STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN 585 +#define STRINGID_NORELIEFROMHEAVYRAIN 586 +#define STRINGID_MYSTERIOUSAIRCURRENT 587 +#define STRINGID_STRONGWINDSDISSIPATED 588 +#define STRINGID_MYSTERIOUSAIRCURRENTBLOWSON 589 +#define STRINGID_ATTACKWEAKENEDBSTRONGWINDS 590 +#define STRINGID_STUFFCHEEKSCANTSELECT 591 +#define STRINGID_PKMNREVERTEDTOPRIMAL 592 +#define STRINGID_BUTPOKEMONCANTUSETHEMOVE 593 +#define STRINGID_BUTHOOPACANTUSEIT 594 +#define STRINGID_BROKETHROUGHPROTECTION 595 +#define STRINGID_ABILITYALLOWSONLYMOVE 596 +#define STRINGID_SWAPPEDABILITIES 597 +#define STRINGID_PASTELVEILPROTECTED 598 +#define STRINGID_PASTELVEILENTERS 599 +#define STRINGID_BATTLERTYPECHANGEDTO 600 +#define STRINGID_BOTHCANNOLONGERESCAPE 601 +#define STRINGID_CANTESCAPEDUETOUSEDMOVE 602 +#define STRINGID_PKMNBECAMEWEAKERTOFIRE 603 +#define STRINGID_ABOUTTOUSEPOLTERGEIST 604 +#define STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE 605 +#define STRINGID_NEUTRALIZINGGASENTERS 606 +#define STRINGID_NEUTRALIZINGGASOVER 607 +#define STRINGID_TARGETTOOHEAVY 608 +#define STRINGID_PKMNTOOKTARGETHIGH 609 +#define STRINGID_PKMNINSNAPTRAP 610 +#define STRINGID_METEORBEAMCHARGING 611 +#define STRINGID_HEATUPBEAK 612 +#define STRINGID_COURTCHANGE 613 +#define STRINGID_PLAYERLOSTTOENEMYTRAINER 614 +#define STRINGID_PLAYERPAIDPRIZEMONEY 615 +#define STRINGID_ZPOWERSURROUNDS 616 +#define STRINGID_ZMOVEUNLEASHED 617 +#define STRINGID_ZMOVERESETSSTATS 618 +#define STRINGID_ZMOVEALLSTATSUP 619 +#define STRINGID_ZMOVEZBOOSTCRIT 620 +#define STRINGID_ZMOVERESTOREHP 621 +#define STRINGID_ZMOVESTATUP 622 +#define STRINGID_ZMOVEHPTRAP 623 +#define STRINGID_ATTACKEREXPELLEDTHEPOISON 624 +#define STRINGID_ATTACKERSHOOKITSELFAWAKE 625 +#define STRINGID_ATTACKERBROKETHROUGHPARALYSIS 626 +#define STRINGID_ATTACKERHEALEDITSBURN 627 +#define STRINGID_ATTACKERMELTEDTHEICE 628 +#define STRINGID_TARGETTOUGHEDITOUT 629 +#define STRINGID_ATTACKERLOSTELECTRICTYPE 630 +#define STRINGID_ATTACKERSWITCHEDSTATWITHTARGET 631 +#define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 632 +#define STRINGID_SUNLIGHTACTIVATEDABILITY 633 +#define STRINGID_STATWASHEIGHTENED 634 +#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 635 +#define STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT 636 +#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 637 +#define STRINGID_PKMNSABILITYPREVENTSABILITY 638 +#define STRINGID_PREPARESHELLTRAP 639 +#define STRINGID_SHELLTRAPDIDNTWORK 640 +#define STRINGID_SPIKESDISAPPEAREDFROMTEAM 641 +#define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 642 +#define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 643 +#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 644 +#define STRINGID_COULDNTFULLYPROTECT 645 +#define STRINGID_STOCKPILEDEFFECTWOREOFF 646 +#define STRINGID_PKMNREVIVEDREADYTOFIGHT 647 +#define STRINGID_ITEMRESTOREDSPECIESHEALTH 648 +#define STRINGID_ITEMCUREDSPECIESSTATUS 649 +#define STRINGID_ITEMRESTOREDSPECIESPP 650 +#define STRINGID_THUNDERCAGETRAPPED 651 +#define STRINGID_PKMNHURTBYFROSTBITE 652 +#define STRINGID_PKMNGOTFROSTBITE 653 +#define STRINGID_PKMNSITEMHEALEDFROSTBITE 654 +#define STRINGID_ATTACKERHEALEDITSFROSTBITE 655 +#define STRINGID_PKMNFROSTBITEHEALED 656 +#define STRINGID_PKMNFROSTBITEHEALED2 657 +#define STRINGID_PKMNFROSTBITEHEALEDBY 658 +#define STRINGID_MIRRORHERBCOPIED 659 +#define STRINGID_STARTEDSNOW 660 +#define STRINGID_SNOWCONTINUES 661 +#define STRINGID_SNOWSTOPPED 662 +#define STRINGID_SNOWWARNINGSNOW 663 +#define STRINGID_PKMNITEMMELTED 664 +#define STRINGID_ULTRABURSTREACTING 665 +#define STRINGID_ULTRABURSTCOMPLETED 666 +#define STRINGID_TEAMGAINEDEXP 667 +#define STRINGID_CURRENTMOVECANTSELECT 668 +#define STRINGID_TARGETISBEINGSALTCURED 669 +#define STRINGID_TARGETISHURTBYSALTCURE 670 +#define STRINGID_OPPORTUNISTCOPIED 671 +#define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 672 +#define STRINGID_SHARPSTEELFLOATS 673 +#define STRINGID_SHARPSTEELDMG 674 +#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 675 +#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 676 +#define STRINGID_TEAMTRAPPEDWITHVINES 677 +#define STRINGID_PKMNHURTBYVINES 678 +#define STRINGID_TEAMCAUGHTINVORTEX 679 +#define STRINGID_PKMNHURTBYVORTEX 680 +#define STRINGID_TEAMSURROUNDEDBYFIRE 681 +#define STRINGID_PKMNBURNINGUP 682 +#define STRINGID_TEAMSURROUNDEDBYROCKS 683 +#define STRINGID_PKMNHURTBYROCKSTHROWN 684 +#define STRINGID_MOVEBLOCKEDBYDYNAMAX 685 +#define STRINGID_ZEROTOHEROTRANSFORMATION 686 +#define STRINGID_THETWOMOVESBECOMEONE 687 +#define STRINGID_ARAINBOWAPPEAREDONSIDE 688 +#define STRINGID_THERAINBOWDISAPPEARED 689 +#define STRINGID_THESEAOFFIREDISAPPEARED 693 +#define STRINGID_THESWAMPDISAPPEARED 695 +#define STRINGID_WAITINGFORPARTNERSMOVE 690 +#define STRINGID_SEAOFFIREENVELOPEDSIDE 691 +#define STRINGID_HURTBYTHESEAOFFIRE 692 +#define STRINGID_SWAMPENVELOPEDSIDE 694 +#define STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE 696 +#define STRINGID_HOSPITALITYRESTORATION 697 +#define STRINGID_ELECTROSHOTCHARGING 698 +#define STRINGID_ITEMWASUSEDUP 699 +#define STRINGID_ATTACKERLOSTITSTYPE 700 +#define STRINGID_SHEDITSTAIL 701 +#define STRINGID_CLOAKEDINAHARSHLIGHT 702 +#define STRINGID_SUPERSWEETAROMAWAFTS 703 +#define STRINGID_DIMENSIONSWERETWISTED 704 +#define STRINGID_BIZARREARENACREATED 705 +#define STRINGID_BIZARREAREACREATED 706 +#define STRINGID_TIDYINGUPCOMPLETE 707 +#define STRINGID_OLDMANUSEDITEM 708 +#define STRINGID_GOTCHAPKMNCAUGHT 709 +#define STRINGID_GOTCHAPKMNCAUGHT2 710 +#define STRINGID_THREWROCK 711 +#define STRINGID_THREWBAIT 712 +#define STRINGID_PKMNANGRY 713 +#define STRINGID_PKMNEATING 714 +#define STRINGID_DUMMY288 715 +#define STRINGID_DUMMY289 716 +#define STRINGID_OAKPLAYERWON 717 +#define STRINGID_OAKPLAYERLOST 718 +#define STRINGID_PLAYERLOSTAGAINSTENEMYTRAINER 719 +#define STRINGID_PKMNTRANSFERREDBILLSPC 720 +#define STRINGID_PKMNBOXBILLSPCFULL 721 +#define STRINGID_POKEDUDEUSED 722 +#define STRINGID_POKEFLUTECATCHY 723 +#define STRINGID_POKEFLUTE 724 +#define STRINGID_MONHEARINGFLUTEAWOKE 725 +#define STRINGID_PLAYERWHITEDOUT 726 +#define STRINGID_MONTOOSCAREDTOMOVE 727 +#define STRINGID_GHOSTGETOUTGETOUT 728 +#define STRINGID_SILPHSCOPEUNVEILED 729 +#define STRINGID_GHOSTWASMAROWAK 730 +#define STRINGID_TRAINER1MON1COMEBACK 731 +#define STRINGID_TRAINER1MON2COMEBACK 732 +#define STRINGID_TRAINER1MON1AND2COMEBACK 733 + +#define BATTLESTRINGS_COUNT 734 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, @@ -640,9 +1398,10 @@ #define B_MSG_DOWNPOUR_CONTINUES 1 #define B_MSG_RAIN_STOPPED 2 -// gSandStormHailContinuesStringIds / gSandStormHailDmgStringIds/ gSandStormHailEndStringIds +// gSandStormHailSnowContinuesStringIds / gSandStormHailDmgStringIds/ gSandStormHailSnowEndStringIds #define B_MSG_SANDSTORM 0 #define B_MSG_HAIL 1 +#define B_MSG_SNOW 2 // gReflectLightScreenSafeguardStringIds #define B_MSG_SIDE_STATUS_FAILED 0 @@ -868,4 +1627,16 @@ #define B_MSG_SPIKESSCATTERED 4 #define B_MSG_SHARPSTEELFLOATS 5 +// gDamageNonTypesStartStringIds +#define B_MSG_TRAPPED_WITH_VINES 0 +#define B_MSG_CAUGHT_IN_VORTEX 1 +#define B_MSG_SURROUNDED_BY_FIRE 2 +#define B_MSG_SURROUNDED_BY_ROCKS 3 + +// gDamageNonTypesDmgStringIds +#define B_MSG_HURT_BY_VINES 0 +#define B_MSG_HURT_BY_VORTEX 1 +#define B_MSG_BURNING_UP 2 +#define B_MSG_HURT_BY_ROCKS_THROWN 3 + #endif // GUARD_BATTLE_STRING_IDS_H diff --git a/include/data.h b/include/data.h index 991dc36d1..34587910a 100644 --- a/include/data.h +++ b/include/data.h @@ -31,6 +31,23 @@ static inline u16 SanitizeTrainerId(u16 trainerId) return trainerId; } +struct TypeInfo +{ + u8 name[TYPE_NAME_LENGTH + 1]; + u8 generic[17]; + u8 palette; + u16 zMove; + u16 maxMove; + //u16 enhanceItem; + //u16 berry; + //u16 gem; + //u16 plate; + //u16 memory; + //u16 zCrystal; + //u16 teraShard; + //u16 arceusForm; +}; + // extern const struct MonCoords gMonFrontPicCoords[]; // extern const struct CompressedSpriteSheet gMonFrontPicTable[]; // extern const struct MonCoords gMonBackPicCoords[]; diff --git a/include/decompress.h b/include/decompress.h index 9857f4f77..0665ab0cd 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -21,15 +21,10 @@ bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette bool8 LoadCompressedSpritePaletteUsingHeapWithTag(const u32 *pal, u16 tag); void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer); -void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void *buffer, s32 species); -void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *buffer); void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, s32 species, u32 personality); -void HandleLoadSpecialPokePic_DontHandleDeoxys(bool32 isFrontPic, void *dest, s32 species, u32 personality); void LoadSpecialPokePic(void *dest, s32 species, u32 personality, bool8 isFrontPic); -void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); -void LoadSpecialPokePic_DontHandleDeoxys(void *dest, s32 species, u32 personality, bool8 isFrontPic); u32 GetDecompressedDataSize(const u8 *ptr); diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index 53d50d0b0..91caf47cc 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -10,7 +10,6 @@ u16 FreeAndDestroyMonPicSprite(u16); u16 FreeAndDestroyTrainerPicSprite(u16); u16 PlayerGenderToFrontTrainerPicId(u8 gender, bool8 getClass); u16 LoadMonPicInWindow(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); -u16 CreateMonPicSprite(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys); -u16 CreateMonPicSprite_HandleDeoxys(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); +u16 CreateMonPicSprite(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); #endif // GUARD_TRAINER_POKEMON_SPRITES_H diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 429105e22..8dd3aca48 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -1917,30 +1917,12 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templat if (!isBackpic) { LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); - if (ignoreDeoxys == TRUE || ShouldIgnoreDeoxysForm(DEOXYS_CHECK_BATTLE_ANIM, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0) - LoadSpecialPokePic_DontHandleDeoxys(gMonSpritesGfxPtr->multiUseBuffer, - species, - personality, - TRUE); - else - LoadSpecialPokePic(gMonSpritesGfxPtr->multiUseBuffer, - species, - personality, - TRUE); + LoadSpecialPokePic(gMonSpritesGfxPtr->multiUseBuffer, species, personality, TRUE); } else { LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); - if (ignoreDeoxys == TRUE || ShouldIgnoreDeoxysForm(DEOXYS_CHECK_BATTLE_ANIM, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0) - LoadSpecialPokePic_DontHandleDeoxys(gMonSpritesGfxPtr->multiUseBuffer, - species, - personality, - FALSE); - else - LoadSpecialPokePic(gMonSpritesGfxPtr->multiUseBuffer, - species, - personality, - FALSE); + LoadSpecialPokePic(gMonSpritesGfxPtr->multiUseBuffer, species, personality, FALSE); } RequestDma3Copy(gMonSpritesGfxPtr->multiUseBuffer, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1); FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 38f866868..ccfb85416 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -2413,6 +2413,7 @@ static void PlayerHandleChooseAction(void) for (i = 0; i < 4; ++i) ActionSelectionDestroyCursorAt(i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler]); BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT); } diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c new file mode 100644 index 000000000..926ba91cf --- /dev/null +++ b/src/battle_dynamax.c @@ -0,0 +1,1265 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_scripts.h" +#include "battle_script_commands.h" +#include "data.h" +#include "event_data.h" +#include "graphics.h" +#include "item.h" +#include "pokemon.h" +#include "random.h" +#include "sprite.h" +#include "string_util.h" +#include "util.h" +#include "constants/abilities.h" +#include "constants/battle_move_effects.h" +#include "constants/battle_string_ids.h" +#include "constants/flags.h" +#include "constants/hold_effects.h" +#include "constants/items.h" +#include "constants/moves.h" + +static u8 GetMaxPowerTier(u16 move); + +struct GMaxMove +{ + u16 species; + u8 moveType; + u16 gmaxMove; +}; + +static const struct GMaxMove sGMaxMoveTable[] = +{ + {SPECIES_VENUSAUR_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, + {SPECIES_BLASTOISE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, + {SPECIES_CHARIZARD_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, + {SPECIES_BUTTERFREE_GIGANTAMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, + {SPECIES_PIKACHU_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, + {SPECIES_MEOWTH_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, + {SPECIES_MACHAMP_GIGANTAMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, + {SPECIES_GENGAR_GIGANTAMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, + {SPECIES_KINGLER_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, + {SPECIES_LAPRAS_GIGANTAMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, + {SPECIES_EEVEE_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, + {SPECIES_SNORLAX_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, + {SPECIES_GARBODOR_GIGANTAMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, + {SPECIES_MELMETAL_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, + {SPECIES_RILLABOOM_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, + {SPECIES_CINDERACE_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, + {SPECIES_INTELEON_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, + {SPECIES_CORVIKNIGHT_GIGANTAMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, + {SPECIES_ORBEETLE_GIGANTAMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, + {SPECIES_DREDNAW_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, + {SPECIES_COALOSSAL_GIGANTAMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, + {SPECIES_FLAPPLE_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, + {SPECIES_APPLETUN_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, + {SPECIES_SANDACONDA_GIGANTAMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, + {SPECIES_TOXTRICITY_AMPED_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_CENTISKORCH_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, + {SPECIES_HATTERENE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, + {SPECIES_GRIMMSNARL_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, + {SPECIES_ALCREMIE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, + {SPECIES_COPPERAJAH_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, + {SPECIES_DURALUDON_GIGANTAMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, + {SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX,TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, + {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, +}; + +// forward declarations +static void SpriteCb_DynamaxTrigger(struct Sprite *); + +// Returns whether a battler is Dynamaxed. +bool32 IsDynamaxed(u16 battlerId) +{ + if (gBattleStruct->dynamax.dynamaxed[battlerId] + /*|| IsRaidBoss(battlerId)*/) + return TRUE; + return FALSE; +} + +// Returns whether a battler can Dynamax. +bool32 CanDynamax(u16 battlerId) +{ + u16 species = gBattleMons[battlerId].species; + u16 holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item); + + // Check if Dynamax battle flag is set. This needs to be defined in include/config/battle.h + #if B_FLAG_DYNAMAX_BATTLE != 0 + if (!FlagGet(B_FLAG_DYNAMAX_BATTLE)) + #endif + return FALSE; + + + // Check if Player has a Dynamax Band. + if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) + && !CheckBagHasItem(ITEM_DYNAMAX_BAND, 1)) + return FALSE; + + // Check if species isn't allowed to Dynamax. + if (GET_BASE_SPECIES_ID(species) == SPECIES_ZACIAN + || GET_BASE_SPECIES_ID(species) == SPECIES_ZAMAZENTA + || GET_BASE_SPECIES_ID(species) == SPECIES_ETERNATUS) + return FALSE; + + // Cannot Dynamax if you can Mega Evolve or use a Z-Move + if (holdEffect == HOLD_EFFECT_MEGA_STONE || holdEffect == HOLD_EFFECT_Z_CRYSTAL) + return FALSE; + + // Cannot Dynamax if your side has already or will Dynamax. + if (gBattleStruct->dynamax.alreadyDynamaxed[GetBattlerSide(battlerId)] + || gBattleStruct->dynamax.dynamaxed[BATTLE_PARTNER(battlerId)] + || gBattleStruct->dynamax.toDynamax & gBitTable[BATTLE_PARTNER(battlerId)]) + return FALSE; + + // TODO: Cannot Dynamax in a Max Raid if you don't have Dynamax Energy. + // if (gBattleTypeFlags & BATTLE_TYPE_RAID && gBattleStruct->raid.dynamaxEnergy != battlerId) + // return FALSE; + + // No checks failed, all set! + return TRUE; +} + +// Returns whether a battler is transformed into a Gigantamax form. +bool32 IsGigantamaxed(u16 battlerId) +{ + struct Pokemon *mon = &GetSideParty(GetBattlerSide(battlerId))[gBattlerPartyIndexes[battlerId]]; + if ((gSpeciesInfo[gBattleMons[battlerId].species].isGigantamax) && GetMonData(mon, MON_DATA_GIGANTAMAX_FACTOR)) + return TRUE; + return FALSE; +} + +// Applies the HP Multiplier for Dynamaxed Pokemon and Raid Bosses. +void ApplyDynamaxHPMultiplier(u32 battler, struct Pokemon* mon) +{ + if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA) + return; + else + { + u32 scale = 150 + 5 * GetMonData(mon, MON_DATA_DYNAMAX_LEVEL); + u32 hp = (GetMonData(mon, MON_DATA_HP) * scale + 99) / 100; + u32 maxHP = (GetMonData(mon, MON_DATA_MAX_HP) * scale + 99) / 100; + SetMonData(mon, MON_DATA_HP, &hp); + SetMonData(mon, MON_DATA_MAX_HP, &maxHP); + } +} + +// Returns the non-Dynamax HP of a Pokemon. +u16 GetNonDynamaxHP(u16 battlerId) +{ + if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) + return gBattleMons[battlerId].hp; + else + { + u16 mult = UQ_4_12(1.0/1.5); // placeholder + u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); + return hp; + } +} + +// Returns the non-Dynamax Max HP of a Pokemon. +u16 GetNonDynamaxMaxHP(u32 battlerId) +{ + if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) + return gBattleMons[battlerId].maxHP; + else + { + u16 mult = UQ_4_12(1.0/1.5); // placeholder + u16 maxHP = UQ_4_12_TO_INT((gBattleMons[battlerId].maxHP * mult) + UQ_4_12_ROUND); + return maxHP; + } +} + +// Sets flags used for Dynamaxing and checks Gigantamax forms. +void PrepareBattlerForDynamax(u16 battlerId) +{ + u8 side = GetBattlerSide(battlerId); + + gBattleStruct->dynamax.alreadyDynamaxed[side] = TRUE; + gBattleStruct->dynamax.dynamaxed[battlerId] = TRUE; + gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS_COUNT; + + // Substitute is removed upon Dynamaxing. + gBattleMons[battlerId].status2 &= ~STATUS2_SUBSTITUTE; + ClearBehindSubstituteBit(battlerId); + + // Choiced Moves are reset upon Dynamaxing. + gBattleStruct->choicedMove[battlerId] = MOVE_NONE; + + // Try Gigantamax form change. + if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)) // Ditto cannot Gigantamax. + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); +} + +// Unsets the flags used for Dynamaxing and reverts max HP if needed. +void UndoDynamax(u16 battlerId) +{ + u8 side = GetBattlerSide(battlerId); + u8 monId = gBattlerPartyIndexes[battlerId]; + + // Revert HP if battler is still Dynamaxed. + if (IsDynamaxed(battlerId)) + { + struct Pokemon *mon = (side == B_SIDE_PLAYER) ? &gPlayerParty[monId] : &gEnemyParty[monId]; + u16 mult = UQ_4_12(1.0/1.5); // placeholder + gBattleMons[battlerId].hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP) * mult + 1) + UQ_4_12_ROUND); // round up + SetMonData(mon, MON_DATA_HP, &gBattleMons[battlerId].hp); + } + + // Makes sure there are no Dynamax flags set, including on switch / faint. + gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; + gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; + + // Undo form change if needed. + if (IsGigantamaxed(battlerId)) + TryBattleFormChange(battlerId, FORM_CHANGE_END_BATTLE); +} + +// Certain moves are blocked by Max Guard that normally ignore protection. +bool32 IsMoveBlockedByMaxGuard(u16 move) +{ + switch (move) + { + case MOVE_BLOCK: + case MOVE_FLOWER_SHIELD: + case MOVE_GEAR_UP: + case MOVE_MAGNETIC_FLUX: + case MOVE_PHANTOM_FORCE: + case MOVE_PSYCH_UP: + case MOVE_SHADOW_FORCE: + case MOVE_TEATIME: + case MOVE_TRANSFORM: + return TRUE; + } + return FALSE; +} + +// Weight-based moves (and some other moves in Raids) are blocked by Dynamax. +bool32 IsMoveBlockedByDynamax(u16 move) +{ + // TODO: Certain moves are banned in raids. + switch (gMovesInfo[move].effect) + { + case EFFECT_HEAT_CRASH: + case EFFECT_LOW_KICK: + return TRUE; + } + return FALSE; +} + +// Returns whether a move should be converted into a Max Move. +bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove) +{ + // TODO: Raid bosses do not always use Max Moves. + // if (IsRaidBoss(battlerId)) + // return !IsRaidBossUsingRegularMove(battlerId, baseMove); + return IsDynamaxed(battlerId) || gBattleStruct->dynamax.toDynamax & gBitTable[battlerId]; +} + +static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) +{ + // Gigantamax check + u32 i; + u16 species = gBattleMons[battlerId].species; + u16 targetSpecies = SPECIES_NONE; + + if (!gSpeciesInfo[species].isGigantamax) + targetSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); + + if (targetSpecies != SPECIES_NONE) + species = targetSpecies; + + if (gSpeciesInfo[species].isGigantamax) + { + for (i = 0; i < ARRAY_COUNT(sGMaxMoveTable); i++) + { + if (sGMaxMoveTable[i].species == species && sGMaxMoveTable[i].moveType == type) + return sGMaxMoveTable[i].gmaxMove; + } + } + + // Regular Max Move + if (gTypesInfo[type].maxMove == MOVE_NONE) // failsafe + return gTypesInfo[0].maxMove; + return gTypesInfo[type].maxMove; +} + +// Returns the appropriate Max Move or G-Max Move for a battler to use. +u16 GetMaxMove(u16 battlerId, u16 baseMove) +{ + u16 move = baseMove; + if (baseMove == MOVE_NONE) // for move display + { + return MOVE_NONE; + } + else if (baseMove == MOVE_STRUGGLE) + { + return MOVE_STRUGGLE; + } + else if (gMovesInfo[baseMove].category == DAMAGE_CATEGORY_STATUS) + { + move = MOVE_MAX_GUARD; + } + else if (gBattleStruct->dynamicMoveType) + { + move = GetTypeBasedMaxMove(battlerId, gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK); + gBattleStruct->dynamax.categories[battlerId] = gMovesInfo[baseMove].category; + } + else + { + move = GetTypeBasedMaxMove(battlerId, gMovesInfo[baseMove].type); + gBattleStruct->dynamax.categories[battlerId] = gMovesInfo[baseMove].category; + } + + return move; +} + +// First value is for Fighting, Poison and Multi-Attack. The second is for everything else. +enum +{ + MAX_POWER_TIER_1, // 70 or 90 damage + MAX_POWER_TIER_2, // 75 or 100 damage + MAX_POWER_TIER_3, // 80 or 110 damage + MAX_POWER_TIER_4, // 85 or 120 damage + MAX_POWER_TIER_5, // 90 or 130 damage + MAX_POWER_TIER_6, // 95 or 140 damage + MAX_POWER_TIER_7, // 100 or 130 damage + MAX_POWER_TIER_8, // 100 or 150 damage +}; + +// Gets the base power of a Max Move. +u8 GetMaxMovePower(u16 move) +{ + u8 tier; + // G-Max Drum Solo, G-Max Hydrosnipe, and G-Max Fireball always have 160 base power. + if (gMovesInfo[GetMaxMove(gBattlerAttacker, move)].argument == MAX_EFFECT_FIXED_POWER) + return 160; + + // Exceptions to all other rules below: + switch (move) + { + case MOVE_TRIPLE_KICK: return 80; + case MOVE_GEAR_GRIND: return 100; + case MOVE_DUAL_WINGBEAT: return 100; + case MOVE_TRIPLE_AXEL: return 140; + } + + tier = GetMaxPowerTier(move); + if (gMovesInfo[move].type == TYPE_FIGHTING + || gMovesInfo[move].type == TYPE_POISON + || move == MOVE_MULTI_ATTACK) + { + switch (tier) + { + default: + case MAX_POWER_TIER_1: return 70; + case MAX_POWER_TIER_2: return 75; + case MAX_POWER_TIER_3: return 80; + case MAX_POWER_TIER_4: return 85; + case MAX_POWER_TIER_5: return 90; + case MAX_POWER_TIER_6: return 95; + case MAX_POWER_TIER_7: return 100; + case MAX_POWER_TIER_8: return 100; + } + } + else + { + switch (tier) + { + default: + case MAX_POWER_TIER_1: return 90; + case MAX_POWER_TIER_2: return 100; + case MAX_POWER_TIER_3: return 110; + case MAX_POWER_TIER_4: return 120; + case MAX_POWER_TIER_5: return 130; + case MAX_POWER_TIER_6: return 140; + case MAX_POWER_TIER_7: return 130; + case MAX_POWER_TIER_8: return 150; + } + } +} + +static u8 GetMaxPowerTier(u16 move) +{ + if (gMovesInfo[move].strikeCount >= 2 && gMovesInfo[move].strikeCount <= 5) + { + switch(gMovesInfo[move].power) + { + case 0 ... 25: return MAX_POWER_TIER_2; + case 26 ... 30: return MAX_POWER_TIER_3; + case 31 ... 35: return MAX_POWER_TIER_4; + case 36 ... 50: return MAX_POWER_TIER_5; + default: + case 51 ... 60: return MAX_POWER_TIER_6; + } + } + + switch (gMovesInfo[move].effect) + { + case EFFECT_BIDE: + case EFFECT_SUPER_FANG: + case EFFECT_LEVEL_DAMAGE: + case EFFECT_PSYWAVE: + case EFFECT_COUNTER: + case EFFECT_PRESENT: + case EFFECT_BEAT_UP: + case EFFECT_WEATHER_BALL: + case EFFECT_FLING: + case EFFECT_ELECTRO_BALL: + case EFFECT_METAL_BURST: + case EFFECT_TERRAIN_PULSE: + case EFFECT_PUNISHMENT: + case EFFECT_TRUMP_CARD: + case EFFECT_FIXED_DAMAGE_ARG: + case EFFECT_SPIT_UP: + case EFFECT_NATURAL_GIFT: + case EFFECT_MIRROR_COAT: + case EFFECT_FINAL_GAMBIT: + //case EFFECT_DRAGON_DARTS: + return MAX_POWER_TIER_2; + case EFFECT_OHKO: + case EFFECT_RETURN: + case EFFECT_FRUSTRATION: + case EFFECT_HEAT_CRASH: + case EFFECT_STORED_POWER: + case EFFECT_GYRO_BALL: + return MAX_POWER_TIER_5; + case EFFECT_MAGNITUDE: + case EFFECT_VARY_POWER_BASED_ON_HP: + return MAX_POWER_TIER_6; + case EFFECT_FLAIL: + case EFFECT_LOW_KICK: + return MAX_POWER_TIER_7; + case EFFECT_MULTI_HIT: + switch(gMovesInfo[move].power) + { + case 0 ... 15: return MAX_POWER_TIER_1; + case 16 ... 18: return MAX_POWER_TIER_2; + case 19 ... 20: return MAX_POWER_TIER_4; + default: + case 21 ... 25: return MAX_POWER_TIER_5; + } + } + + switch (gMovesInfo[move].power) + { + case 0 ... 40: return MAX_POWER_TIER_1; + case 45 ... 50: return MAX_POWER_TIER_2; + case 55 ... 60: return MAX_POWER_TIER_3; + case 65 ... 70: return MAX_POWER_TIER_4; + case 75 ... 100: return MAX_POWER_TIER_5; + case 110 ... 140: return MAX_POWER_TIER_6; + default: + case 150 ... 250: return MAX_POWER_TIER_8; + } +} + +// Returns whether a move is a Max Move or not. +bool32 IsMaxMove(u16 move) +{ + return move >= FIRST_MAX_MOVE && move <= LAST_MAX_MOVE; +} + +// Assigns the multistring to use for the "Damage Non- Types" G-Max effect. +void ChooseDamageNonTypesString(u8 type) +{ + switch (type) + { + case TYPE_GRASS: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TRAPPED_WITH_VINES; + break; + case TYPE_WATER: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CAUGHT_IN_VORTEX; + break; + case TYPE_FIRE: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SURROUNDED_BY_FIRE; + break; + case TYPE_ROCK: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SURROUNDED_BY_ROCKS; + break; + } +} + +// Returns the status effect that should be applied by a G-Max Move. +static u32 GetMaxMoveStatusEffect(u16 move) +{ + u8 maxEffect = gMovesInfo[move].argument; + switch (maxEffect) + { + // Status 1 + case MAX_EFFECT_PARALYZE_FOES: + return STATUS1_PARALYSIS; + case MAX_EFFECT_POISON_FOES: + return STATUS1_POISON; + case MAX_EFFECT_POISON_PARALYZE_FOES: + { + static const u8 sStunShockEffects[] = {STATUS1_PARALYSIS, STATUS1_POISON}; + return RandomElement(RNG_G_MAX_STUN_SHOCK, sStunShockEffects); + } + case MAX_EFFECT_EFFECT_SPORE_FOES: + { + static const u8 sBefuddleEffects[] = {STATUS1_PARALYSIS, STATUS1_POISON, STATUS1_SLEEP}; + return RandomElement(RNG_G_MAX_BEFUDDLE, sBefuddleEffects); + } + // Status 2 + case MAX_EFFECT_CONFUSE_FOES: + case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: + return STATUS2_CONFUSION; + case MAX_EFFECT_INFATUATE_FOES: + return STATUS2_INFATUATION; + case MAX_EFFECT_MEAN_LOOK: + return STATUS2_ESCAPE_PREVENTION; + case MAX_EFFECT_TORMENT_FOES: + return STATUS2_TORMENT; + default: + return STATUS1_NONE; + } +} + +// CALLNATIVE FUNCTIONS +#define CMD_ARGS(...) const struct __attribute__((packed)) { u8 opcode; MEMBERS(__VA_ARGS__) const u8 nextInstr[0]; } *const cmd = (const void *)gBattlescriptCurrInstr +#define NATIVE_ARGS(...) CMD_ARGS(void (*func)(void), ##__VA_ARGS__) + +#define MEMBERS(...) VARARG_8(MEMBERS_, __VA_ARGS__) +#define MEMBERS_0() +#define MEMBERS_1(a) a; +#define MEMBERS_2(a, b) a; b; +#define MEMBERS_3(a, b, c) a; b; c; +#define MEMBERS_4(a, b, c, d) a; b; c; d; +#define MEMBERS_5(a, b, c, d, e) a; b; c; d; e; +#define MEMBERS_6(a, b, c, d, e, f) a; b; c; d; e; f; +#define MEMBERS_7(a, b, c, d, e, f, g) a; b; c; d; e; f; g; +#define MEMBERS_8(a, b, c, d, e, f, g, h) a; b; c; d; e; f; g; h; + +// Updates Dynamax HP multipliers and healthboxes. +void BS_UpdateDynamax(void) +{ + NATIVE_ARGS(); + u16 battler = gBattleScripting.battler; + struct Pokemon *mon = &GetSideParty(GetBattlerSide(battler))[gBattlerPartyIndexes[battler]]; + + if (!IsGigantamaxed(battler)) // RecalcBattlerStats will get called on form change. + RecalcBattlerStats(battler, mon); + + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_ALL); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +// Activates the secondary effect of a Max Move. +// void BS_SetMaxMoveEffect(void) +// { +// NATIVE_ARGS(); +// u16 effect = 0; +// u8 maxEffect = gMovesInfo[gCurrentMove].argument; + +// // Don't continue if the move didn't land. +// if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) +// { +// gBattlescriptCurrInstr = cmd->nextInstr; +// return; +// } + +// switch (maxEffect) +// { +// case MAX_EFFECT_RAISE_TEAM_ATTACK: +// case MAX_EFFECT_RAISE_TEAM_DEFENSE: +// case MAX_EFFECT_RAISE_TEAM_SPEED: +// case MAX_EFFECT_RAISE_TEAM_SP_ATK: +// case MAX_EFFECT_RAISE_TEAM_SP_DEF: +// if (!NoAliveMonsForEitherParty()) +// { +// // Max Effects are ordered by stat ID. +// SET_STATCHANGER(gMovesInfo[gCurrentMove].argument, 1, FALSE); +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectRaiseStatAllies; +// effect++; +// } +// break; +// case MAX_EFFECT_LOWER_ATTACK: +// case MAX_EFFECT_LOWER_DEFENSE: +// case MAX_EFFECT_LOWER_SPEED: +// case MAX_EFFECT_LOWER_SP_ATK: +// case MAX_EFFECT_LOWER_SP_DEF: +// case MAX_EFFECT_LOWER_SPEED_2_FOES: +// case MAX_EFFECT_LOWER_EVASIVENESS_FOES: +// if (!NoAliveMonsForEitherParty()) +// { +// u8 statId = 0; +// u8 stage = 1; +// switch (maxEffect) +// { +// case MAX_EFFECT_LOWER_SPEED_2_FOES: +// statId = STAT_SPEED; +// stage = 2; +// break; +// case MAX_EFFECT_LOWER_EVASIVENESS_FOES: +// statId = STAT_EVASION; +// break; +// default: +// // Max Effects are ordered by stat ID. +// statId = gMovesInfo[gCurrentMove].argument - MAX_EFFECT_LOWER_ATTACK + 1; +// break; +// } +// SET_STATCHANGER(statId, stage, TRUE); +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectLowerStatFoes; +// effect++; +// } +// break; +// case MAX_EFFECT_SUN: +// case MAX_EFFECT_RAIN: +// case MAX_EFFECT_SANDSTORM: +// case MAX_EFFECT_HAIL: +// { +// u8 weather = 0, msg = 0; +// switch (maxEffect) +// { +// case MAX_EFFECT_SUN: +// weather = ENUM_WEATHER_SUN; +// msg = B_MSG_STARTED_SUNLIGHT; +// break; +// case MAX_EFFECT_RAIN: +// weather = ENUM_WEATHER_RAIN; +// msg = B_MSG_STARTED_RAIN; +// break; +// case MAX_EFFECT_SANDSTORM: +// weather = ENUM_WEATHER_SANDSTORM; +// msg = B_MSG_STARTED_SANDSTORM; +// break; +// case MAX_EFFECT_HAIL: +// weather = ENUM_WEATHER_HAIL; +// msg = B_MSG_STARTED_HAIL; +// break; +// } +// if (TryChangeBattleWeather(gBattlerAttacker, weather, FALSE)) +// { +// gBattleCommunication[MULTISTRING_CHOOSER] = msg; +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectSetWeather; +// effect++; +// } +// break; +// } +// case MAX_EFFECT_MISTY_TERRAIN: +// case MAX_EFFECT_GRASSY_TERRAIN: +// case MAX_EFFECT_ELECTRIC_TERRAIN: +// case MAX_EFFECT_PSYCHIC_TERRAIN: +// { +// u32 statusFlag = 0; +// switch (gMovesInfo[gCurrentMove].argument) +// { +// case MAX_EFFECT_MISTY_TERRAIN: +// statusFlag = STATUS_FIELD_MISTY_TERRAIN; +// gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_MISTY; +// break; +// case MAX_EFFECT_GRASSY_TERRAIN: +// statusFlag = STATUS_FIELD_GRASSY_TERRAIN; +// gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_GRASSY; +// break; +// case MAX_EFFECT_ELECTRIC_TERRAIN: +// statusFlag = STATUS_FIELD_ELECTRIC_TERRAIN; +// gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_ELECTRIC; +// break; +// case MAX_EFFECT_PSYCHIC_TERRAIN: +// statusFlag = STATUS_FIELD_PSYCHIC_TERRAIN; +// gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_PSYCHIC; +// break; +// } +// if (!(gFieldStatuses & statusFlag) && statusFlag != 0) +// { +// gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; +// gFieldStatuses |= statusFlag; +// if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER) +// gFieldTimers.terrainTimer = 8; +// else +// gFieldTimers.terrainTimer = 5; +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectSetTerrain; +// effect++; +// } +// break; +// } +// case MAX_EFFECT_VINE_LASH: +// case MAX_EFFECT_CANNONADE: +// case MAX_EFFECT_WILDFIRE: +// case MAX_EFFECT_VOLCALITH: +// { +// u8 side = GetBattlerSide(gBattlerTarget); +// if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES)) +// { +// gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES; +// gSideTimers[side].damageNonTypesTimer = 5; // damage is dealt for 4 turns, ends on 5th +// gSideTimers[side].damageNonTypesType = gMovesInfo[gCurrentMove].type; +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// ChooseDamageNonTypesString(gMovesInfo[gCurrentMove].type); +// gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts; +// effect++; +// } +// break; +// } +// case MAX_EFFECT_STEALTH_ROCK: +// if (!(gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_STEALTH_ROCK)) +// { +// gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_POINTEDSTONESFLOAT; +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectStonesurge; +// effect++; +// } +// break; +// case MAX_EFFECT_STEELSURGE: +// if (!(gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_STEELSURGE)) +// { +// gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SHARPSTEELFLOATS; +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectSteelsurge; +// effect++; +// } +// break; +// case MAX_EFFECT_DEFOG: +// if (gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_SCREEN_ANY +// || gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_HAZARDS_ANY +// || gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_HAZARDS_ANY +// || gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) +// { +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_DefogTryHazards; +// effect++; +// } +// break; +// case MAX_EFFECT_AURORA_VEIL: +// if (!(gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_AURORA_VEIL)) +// { +// gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_AURORA_VEIL; +// if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_LIGHT_CLAY) +// gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 8; +// else +// gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 5; +// gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilBattlerId = gBattlerAttacker; +// gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD; +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectAuroraVeilSuccess; +// effect++; +// } +// break; +// case MAX_EFFECT_GRAVITY: +// if (!(gFieldStatuses & STATUS_FIELD_GRAVITY)) +// { +// gFieldStatuses |= STATUS_FIELD_GRAVITY; +// gFieldTimers.gravityTimer = 5; +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectGravitySuccess; +// effect++; +// } +// break; +// case MAX_EFFECT_SANDBLAST_FOES: +// case MAX_EFFECT_FIRE_SPIN_FOES: +// { +// // Affects both opponents, but doesn't print strings so we can handle it here. +// u8 battler; +// for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) +// { +// if (GetBattlerSide(battler) != GetBattlerSide(gBattlerTarget)) +// continue; +// if (!(gBattleMons[battler].status2 & STATUS2_WRAPPED)) +// { +// gBattleMons[battler].status2 |= STATUS2_WRAPPED; +// if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_GRIP_CLAW) +// #if B_BINDING_TURNS >= GEN_5 +// gDisableStructs[battler].wrapTurns = 7; +// else +// gDisableStructs[battler].wrapTurns = (Random() % 2) + 4; +// #else +// gDisableStructs[battler].wrapTurns = 5; +// else +// gDisableStructs[battler].wrapTurns = (Random() % 4) + 2; +// #endif +// // The Wrap effect does not expire when the user switches, so here's some cheese. +// gBattleStruct->wrappedBy[battler] = gBattlerTarget; +// if (maxEffect == MAX_EFFECT_SANDBLAST_FOES) +// gBattleStruct->wrappedMove[battler] = MOVE_SAND_TOMB; +// else +// gBattleStruct->wrappedMove[battler] = MOVE_FIRE_SPIN; +// } +// } +// break; +// } +// case MAX_EFFECT_YAWN_FOE: +// { +// static const u8 sSnoozeEffects[] = {TRUE, FALSE}; +// if (!(gStatuses3[gBattlerTarget] & STATUS3_YAWN) +// && CanSleep(gBattlerTarget) +// && RandomElement(RNG_G_MAX_SNOOZE, sSnoozeEffects)) // 50% chance of success +// { +// gStatuses3[gBattlerTarget] |= STATUS3_YAWN_TURN(2); +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectYawnSuccess; +// effect++; +// } +// break; +// } +// case MAX_EFFECT_SPITE: +// if (gLastMoves[gBattlerTarget] != MOVE_NONE +// && gLastMoves[gBattlerTarget] != MOVE_UNAVAILABLE) +// { +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectTryReducePP; +// effect++; +// } +// break; +// case MAX_EFFECT_PARALYZE_FOES: +// case MAX_EFFECT_POISON_FOES: +// case MAX_EFFECT_POISON_PARALYZE_FOES: +// case MAX_EFFECT_EFFECT_SPORE_FOES: +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectStatus1Foes; +// effect++; +// break; +// case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: +// if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) +// { +// u16 payday = gPaydayMoney; +// gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 100); +// if (payday > gPaydayMoney) +// gPaydayMoney = 0xFFFF; +// gBattleCommunication[CURSOR_POSITION] = 1; // add "Coins scattered." message +// } +// // fall through +// case MAX_EFFECT_CONFUSE_FOES: +// case MAX_EFFECT_INFATUATE_FOES: +// case MAX_EFFECT_TORMENT_FOES: +// case MAX_EFFECT_MEAN_LOOK: +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectStatus2Foes; +// effect++; +// break; +// case MAX_EFFECT_CRIT_PLUS: +// gBattleStruct->bonusCritStages[gBattlerAttacker]++; +// gBattleStruct->bonusCritStages[BATTLE_PARTNER(gBattlerAttacker)]++; +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectRaiseCritAlliesAnim; +// effect++; +// break; +// case MAX_EFFECT_HEAL_TEAM: +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectHealOneSixthAllies; +// effect++; +// break; +// case MAX_EFFECT_AROMATHERAPY: +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectCureStatusAllies; +// effect++; +// break; +// case MAX_EFFECT_RECYCLE_BERRIES: +// { +// static const u8 sReplenishEffects[] = {TRUE, FALSE}; +// if (RandomElement(RNG_G_MAX_REPLENISH, sReplenishEffects)) // 50% chance of success +// { +// BattleScriptPush(gBattlescriptCurrInstr + 1); +// gBattlescriptCurrInstr = BattleScript_EffectRecycleBerriesAllies; +// effect++; +// } +// break; +// } +// } + +// if (!effect) +// gBattlescriptCurrInstr = cmd->nextInstr; +// } + +// Sets up sharp steel on the target's side. +// void BS_SetSteelsurge(void) +// { +// NATIVE_ARGS(const u8 *failInstr); +// u8 targetSide = GetBattlerSide(gBattlerTarget); +// if (gSideStatuses[targetSide] & SIDE_STATUS_STEELSURGE) +// { +// gBattlescriptCurrInstr = cmd->failInstr; +// } +// else +// { +// gSideStatuses[targetSide] |= SIDE_STATUS_STEELSURGE; +// gSideTimers[targetSide].steelsurgeAmount = 1; +// gBattlescriptCurrInstr = cmd->nextInstr; +// } +// } + +// Applies the status1 effect associated with a given G-Max Move. +// Could be expanded to function for any move. +void BS_TrySetStatus1(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u8 effect = 0; + u32 status1 = GetMaxMoveStatusEffect(gCurrentMove); + switch (status1) + { + case STATUS1_POISON: + if (CanBePoisoned(gBattlerAttacker, gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status1 |= STATUS1_POISON; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + effect++; + } + break; + case STATUS1_PARALYSIS: + if (CanBeParalyzed(gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status1 |= STATUS1_PARALYSIS; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + effect++; + } + break; + case STATUS1_SLEEP: + if (CanSleep(gBattlerTarget)) + { + if (B_SLEEP_TURNS >= GEN_5) + gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 3) + 2); + else + gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 4) + 3); + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + effect++; + } + break; + } + if (effect) + { + gEffectBattler = gActiveBattler = gBattlerTarget; + + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); + MarkBattlerForControllerExec(gBattlerTarget); + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } +} + +// Applies the status2 effect associated with a given G-Max Move. +void BS_TrySetStatus2(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u8 effect = 0; + u32 status2 = GetMaxMoveStatusEffect(gCurrentMove); + switch (status2) + { + case STATUS2_CONFUSION: + if (CanBeConfused(gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTIUSE_STATE] = 1; + effect++; + } + break; + case STATUS2_INFATUATION: + { + u8 atkGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerAttacker].species, gBattleMons[gBattlerAttacker].personality); + u8 defGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerTarget].species, gBattleMons[gBattlerTarget].personality); + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_INFATUATION) + && gBattleMons[gBattlerTarget].ability != ABILITY_OBLIVIOUS + && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL) + && atkGender != defGender + && atkGender != MON_GENDERLESS + && defGender != MON_GENDERLESS) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_INFATUATED_WITH(gBattlerAttacker); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTIUSE_STATE] = 2; + effect++; + } + break; + } + case STATUS2_ESCAPE_PREVENTION: + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_ESCAPE_PREVENTION)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION; + gDisableStructs[gBattlerTarget].battlerPreventingEscape = gBattlerAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + effect++; + } + break; + case STATUS2_TORMENT: + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT) + && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; + gDisableStructs[gBattlerTarget].tormentTimer = 3; // 3 turns excluding current turn + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + effect++; + } + break; + } + if (effect) + { + gEffectBattler = gBattlerTarget; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } +} + +// Applies the endturn damage effect associated with the "Damage Non-" G-Max moves. +void BS_DamageNonTypes(void) +{ + NATIVE_ARGS(); + u8 side = GetBattlerSide(gBattlerAttacker); + gBattleMoveDamage = 0; + if (gSideTimers[side].damageNonTypesTimer + && !IS_BATTLER_OF_TYPE(gBattlerAttacker, gSideTimers[side].damageNonTypesType) + && IsBattlerAlive(gBattlerAttacker) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) + { + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 6; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + gBattlescriptCurrInstr = cmd->nextInstr; +} + +// Heals one-sixth of the target's HP, including for Dynamaxed targets. +void BS_HealOneSixth(void) +{ + NATIVE_ARGS(const u8* failInstr); + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 6; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) + gBattlescriptCurrInstr = cmd->failInstr; // fail + else + gBattlescriptCurrInstr = cmd->nextInstr; // can heal +} + +// Recycles the target's item if it is specifically holding a berry. +void BS_TryRecycleBerry(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u16* usedHeldItem = &gBattleStruct->usedHeldItems[gBattlerPartyIndexes[gBattlerTarget]][GetBattlerSide(gBattlerTarget)]; + if (gBattleMons[gBattlerTarget].item == ITEM_NONE + && gBattleStruct->changedItems[gBattlerTarget] == ITEM_NONE // Will not inherit an item + && ItemId_GetPocket(*usedHeldItem) == POCKET_BERRY_POUCH) + { + gLastUsedItem = *usedHeldItem; + *usedHeldItem = ITEM_NONE; + gBattleMons[gBattlerTarget].item = gLastUsedItem; + + gActiveBattler = gBattlerTarget; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item); + MarkBattlerForControllerExec(gBattlerTarget); + + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } +} + +// Goes to the jump instruction if the target is Dynamaxed. +void BS_JumpIfDynamaxed(void) +{ + NATIVE_ARGS(const u8 *jumpInstr); + if (IsDynamaxed(gBattlerTarget)) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +// DYNAMAX TRIGGER: +static const u8 ALIGNED(4) sDynamaxTriggerGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_trigger.4bpp"); +static const u16 sDynamaxTriggerPal[] = INCBIN_U16("graphics/battle_interface/dynamax_trigger.gbapal"); + +static const struct SpriteSheet sSpriteSheet_DynamaxTrigger = +{ + sDynamaxTriggerGfx, sizeof(sDynamaxTriggerGfx), TAG_DYNAMAX_TRIGGER_TILE +}; +static const struct SpritePalette sSpritePalette_DynamaxTrigger = +{ + sDynamaxTriggerPal, TAG_DYNAMAX_TRIGGER_PAL +}; + +static const struct OamData sOamData_DynamaxTrigger = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_DynamaxTriggerOff[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_DynamaxTriggerOn[] = +{ + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_DynamaxTrigger[] = +{ + sSpriteAnim_DynamaxTriggerOff, + sSpriteAnim_DynamaxTriggerOn, +}; + +static const struct SpriteTemplate sSpriteTemplate_DynamaxTrigger = +{ + .tileTag = TAG_DYNAMAX_TRIGGER_TILE, + .paletteTag = TAG_DYNAMAX_TRIGGER_PAL, + .oam = &sOamData_DynamaxTrigger, + .anims = sSpriteAnimTable_DynamaxTrigger, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCb_DynamaxTrigger +}; + +// Dynamax Evolution Trigger icon functions. +void ChangeDynamaxTriggerSprite(u8 spriteId, u8 animId) +{ + StartSpriteAnim(&gSprites[spriteId], animId); +} + +#define SINGLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL (30) +#define SINGLES_DYNAMAX_TRIGGER_POS_X_PRIORITY (31) +#define SINGLES_DYNAMAX_TRIGGER_POS_X_SLIDE (15) +#define SINGLES_DYNAMAX_TRIGGER_POS_Y_DIFF (-11) + +#define DOUBLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL (30) +#define DOUBLES_DYNAMAX_TRIGGER_POS_X_PRIORITY (31) +#define DOUBLES_DYNAMAX_TRIGGER_POS_X_SLIDE (15) +#define DOUBLES_DYNAMAX_TRIGGER_POS_Y_DIFF (-4) + +#define tBattler data[0] +#define tHide data[1] + +void CreateDynamaxTriggerSprite(u8 battlerId, u8 palId) +{ + LoadSpritePalette(&sSpritePalette_DynamaxTrigger); + if (GetSpriteTileStartByTag(TAG_DYNAMAX_TRIGGER_TILE) == 0xFFFF) + LoadSpriteSheet(&sSpriteSheet_DynamaxTrigger); + if (gBattleStruct->dynamax.triggerSpriteId == 0xFF) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleStruct->dynamax.triggerSpriteId = CreateSprite(&sSpriteTemplate_DynamaxTrigger, + gSprites[gHealthboxSpriteIds[battlerId]].x - DOUBLES_DYNAMAX_TRIGGER_POS_X_SLIDE, + gSprites[gHealthboxSpriteIds[battlerId]].y - DOUBLES_DYNAMAX_TRIGGER_POS_Y_DIFF, 0); + else + gBattleStruct->dynamax.triggerSpriteId = CreateSprite(&sSpriteTemplate_DynamaxTrigger, + gSprites[gHealthboxSpriteIds[battlerId]].x - SINGLES_DYNAMAX_TRIGGER_POS_X_SLIDE, + gSprites[gHealthboxSpriteIds[battlerId]].y - SINGLES_DYNAMAX_TRIGGER_POS_Y_DIFF, 0); + } + gSprites[gBattleStruct->dynamax.triggerSpriteId].tBattler = battlerId; + gSprites[gBattleStruct->dynamax.triggerSpriteId].tHide = FALSE; + + ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, palId); +} + +static void SpriteCb_DynamaxTrigger(struct Sprite *sprite) +{ + s32 xSlide, xPriority, xOptimal; + s32 yDiff; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + xSlide = DOUBLES_DYNAMAX_TRIGGER_POS_X_SLIDE; + xPriority = DOUBLES_DYNAMAX_TRIGGER_POS_X_PRIORITY; + xOptimal = DOUBLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL; + yDiff = DOUBLES_DYNAMAX_TRIGGER_POS_Y_DIFF; + } + else + { + xSlide = SINGLES_DYNAMAX_TRIGGER_POS_X_SLIDE; + xPriority = SINGLES_DYNAMAX_TRIGGER_POS_X_PRIORITY; + xOptimal = SINGLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL; + yDiff = SINGLES_DYNAMAX_TRIGGER_POS_Y_DIFF; + } + + if (sprite->tHide) + { + if (sprite->x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xSlide) + sprite->x++; + + if (sprite->x >= gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xPriority) + sprite->oam.priority = 2; + else + sprite->oam.priority = 1; + + sprite->y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y - yDiff; + sprite->y2 = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y2 - yDiff; + if (sprite->x == gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xSlide) + DestroyDynamaxTriggerSprite(); + } + else + { + if (sprite->x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xOptimal) + sprite->x--; + + if (sprite->x >= gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xPriority) + sprite->oam.priority = 2; + else + sprite->oam.priority = 1; + + sprite->y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y - yDiff; + sprite->y2 = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y2 - yDiff; + } +} + +bool32 IsDynamaxTriggerSpriteActive(void) +{ + if (GetSpriteTileStartByTag(TAG_DYNAMAX_TRIGGER_TILE) == 0xFFFF) + return FALSE; + else if (IndexOfSpritePaletteTag(TAG_DYNAMAX_TRIGGER_PAL) != 0xFF) + return TRUE; + else + return FALSE; +} + +void HideDynamaxTriggerSprite(void) +{ + if (gBattleStruct->dynamax.triggerSpriteId >= MAX_SPRITES) + return; + ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, 0); + gSprites[gBattleStruct->dynamax.triggerSpriteId].tHide = TRUE; +} + +void DestroyDynamaxTriggerSprite(void) +{ + FreeSpritePaletteByTag(TAG_DYNAMAX_TRIGGER_PAL); + FreeSpriteTilesByTag(TAG_DYNAMAX_TRIGGER_TILE); + if (gBattleStruct->dynamax.triggerSpriteId != 0xFF) + DestroySprite(&gSprites[gBattleStruct->dynamax.triggerSpriteId]); + gBattleStruct->dynamax.triggerSpriteId = 0xFF; +} + +#undef tBattler +#undef tHide + +// data fields for healthboxMain +// oam.affineParam holds healthboxRight spriteId +#define hMain_DynamaxIndicatorId data[3] +#define hMain_HealthBarSpriteId data[5] +#define hMain_Battler data[6] +#define hMain_Data7 data[7] + +// data fields for healthboxRight +#define hOther_HealthBoxSpriteId data[5] + +// data fields for healthbar +#define hBar_HealthBoxSpriteId data[5] diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 8b9147d91..5fc05b355 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -339,9 +339,8 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId) } isShiny = GetMonData(mon, MON_DATA_IS_SHINY, NULL); position = GetBattlerPosition(battlerId); - HandleLoadSpecialPokePic_DontHandleDeoxys(TRUE, - gMonSpritesGfxPtr->sprites[position], - species, currentPersonality); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites[position], species, currentPersonality); + paletteOffset = OBJ_PLTT_ID(battlerId); if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE) lzPaletteData = GetMonFrontSpritePal(mon); @@ -383,14 +382,8 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId) } isShiny = GetMonData(mon, MON_DATA_IS_SHINY, NULL); position = GetBattlerPosition(battlerId); - if (ShouldIgnoreDeoxysForm(DEOXYS_CHECK_BATTLE_SPRITE, battlerId) == TRUE || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE) - HandleLoadSpecialPokePic_DontHandleDeoxys(FALSE, - gMonSpritesGfxPtr->sprites[position], - species, currentPersonality); - else - HandleLoadSpecialPokePic(FALSE, - gMonSpritesGfxPtr->sprites[position], - species, currentPersonality); + HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites[position], species, currentPersonality); + paletteOffset = OBJ_PLTT_ID(battlerId); if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE) lzPaletteData = GetMonFrontSpritePal(mon); diff --git a/src/battle_main.c b/src/battle_main.c index b83119945..894081ca8 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -290,6 +290,310 @@ const struct OamData gOamData_BattlerPlayer = .paletteNum = 2, .affineParam = 0, }; +// .generic is large enough that the text for TYPE_ELECTRIC will exceed TEXT_BUFF_ARRAY_COUNT. +const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = +{ + [TYPE_NORMAL] = + { + .name = _("Normal"), + .generic = _("a NORMAL move"), + .palette = 13, + .zMove = MOVE_BREAKNECK_BLITZ, + .maxMove = MOVE_MAX_STRIKE, + //.enhanceItem = ITEM_SILK_SCARF, + //.berry = ITEM_CHILAN_BERRY, + //.gem = ITEM_NORMAL_GEM, + //.zCrystal = ITEM_NORMALIUM_Z, + //.teraShard = ITEM_NORMAL_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_NORMAL, + }, + [TYPE_FIGHTING] = + { + .name = _("Fight"), + .generic = _("a FIGHTING move"), + .palette = 13, + .zMove = MOVE_ALL_OUT_PUMMELING, + .maxMove = MOVE_MAX_KNUCKLE, + //.enhanceItem = ITEM_BLACK_BELT, + //.berry = ITEM_CHOPLE_BERRY, + //.gem = ITEM_FIGHTING_GEM, + //.zCrystal = ITEM_FIGHTINIUM_Z, + //.plate = ITEM_FIST_PLATE, + //.memory = ITEM_FIGHTING_MEMORY, + //.teraShard = ITEM_FIGHTING_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FIGHTING, + }, + [TYPE_FLYING] = + { + .name = _("Flying"), + .generic = _("a FLYING move"), + .palette = 14, + .zMove = MOVE_SUPERSONIC_SKYSTRIKE, + .maxMove = MOVE_MAX_AIRSTREAM, + //.enhanceItem = ITEM_SHARP_BEAK, + //.berry = ITEM_COBA_BERRY, + //.gem = ITEM_FLYING_GEM, + //.zCrystal = ITEM_FLYINIUM_Z, + //.plate = ITEM_SKY_PLATE, + //.memory = ITEM_FLYING_MEMORY, + //.teraShard = ITEM_FLYING_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FLYING, + }, + [TYPE_POISON] = + { + .name = _("Poison"), + .generic = _("a POISON move"), + .palette = 14, + .zMove = MOVE_ACID_DOWNPOUR, + .maxMove = MOVE_MAX_OOZE, + //.enhanceItem = ITEM_POISON_BARB, + //.berry = ITEM_KEBIA_BERRY, + //.gem = ITEM_POISON_GEM, + //.zCrystal = ITEM_POISONIUM_Z, + //.plate = ITEM_TOXIC_PLATE, + //.memory = ITEM_POISON_MEMORY, + //.teraShard = ITEM_POISON_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_POISON, + }, + [TYPE_GROUND] = + { + .name = _("Ground"), + .generic = _("a GROUND move"), + .palette = 13, + .zMove = MOVE_TECTONIC_RAGE, + .maxMove = MOVE_MAX_QUAKE, + //.enhanceItem = ITEM_SOFT_SAND, + //.berry = ITEM_SHUCA_BERRY, + //.gem = ITEM_GROUND_GEM, + //.zCrystal = ITEM_GROUNDIUM_Z, + //.plate = ITEM_EARTH_PLATE, + //.memory = ITEM_GROUND_MEMORY, + //.teraShard = ITEM_GROUND_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GROUND, + }, + [TYPE_ROCK] = + { + .name = _("Rock"), + .generic = _("a ROCK move"), + .palette = 13, + .zMove = MOVE_CONTINENTAL_CRUSH, + .maxMove = MOVE_MAX_ROCKFALL, + //.enhanceItem = ITEM_HARD_STONE, + //.berry = ITEM_CHARTI_BERRY, + //.gem = ITEM_ROCK_GEM, + //.zCrystal = ITEM_ROCKIUM_Z, + //.plate = ITEM_STONE_PLATE, + //.memory = ITEM_ROCK_MEMORY, + //.teraShard = ITEM_ROCK_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ROCK, + }, + [TYPE_BUG] = + { + .name = _("Bug"), + .generic = _("a BUG move"), + .palette = 15, + .zMove = MOVE_SAVAGE_SPIN_OUT, + .maxMove = MOVE_MAX_FLUTTERBY, + //.enhanceItem = ITEM_SILVER_POWDER, + //.berry = ITEM_TANGA_BERRY, + //.gem = ITEM_BUG_GEM, + //.zCrystal = ITEM_BUGINIUM_Z, + //.plate = ITEM_INSECT_PLATE, + //.memory = ITEM_BUG_MEMORY, + //.teraShard = ITEM_BUG_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_BUG, + }, + [TYPE_GHOST] = + { + .name = _("Ghost"), + .generic = _("a GHOST move"), + .palette = 14, + .zMove = MOVE_NEVER_ENDING_NIGHTMARE, + .maxMove = MOVE_MAX_PHANTASM, + //.enhanceItem = ITEM_SPELL_TAG, + //.berry = ITEM_KASIB_BERRY, + //.gem = ITEM_GHOST_GEM, + //.zCrystal = ITEM_GHOSTIUM_Z, + //.plate = ITEM_SPOOKY_PLATE, + //.memory = ITEM_GHOST_MEMORY, + //.teraShard = ITEM_GHOST_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GHOST, + }, + [TYPE_STEEL] = + { + .name = _("Steel"), + .generic = _("a STEEL move"), + .palette = 13, + .zMove = MOVE_CORKSCREW_CRASH, + .maxMove = MOVE_MAX_STEELSPIKE, + //.enhanceItem = ITEM_METAL_COAT, + //.berry = ITEM_BABIRI_BERRY, + //.gem = ITEM_STEEL_GEM, + //.zCrystal = ITEM_STEELIUM_Z, + //.plate = ITEM_IRON_PLATE, + //.memory = ITEM_STEEL_MEMORY, + //.teraShard = ITEM_STEEL_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_STEEL, + }, + [TYPE_MYSTERY] = + { + .name = _("???"), + .generic = _("a ??? move"), + .palette = 15, + }, + [TYPE_FIRE] = + { + .name = _("Fire"), + .generic = _("a FIRE move"), + .palette = 13, + .zMove = MOVE_INFERNO_OVERDRIVE, + .maxMove = MOVE_MAX_FLARE, + //.enhanceItem = ITEM_CHARCOAL, + //.berry = ITEM_OCCA_BERRY, + //.gem = ITEM_FIRE_GEM, + //.zCrystal = ITEM_FIRIUM_Z, + //.plate = ITEM_FLAME_PLATE, + //.memory = ITEM_FIRE_MEMORY, + //.teraShard = ITEM_FIRE_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FIRE, + }, + [TYPE_WATER] = + { + .name = _("Water"), + .generic = _("a WATER move"), + .palette = 14, + .zMove = MOVE_HYDRO_VORTEX, + .maxMove = MOVE_MAX_GEYSER, + //.enhanceItem = ITEM_MYSTIC_WATER, + //.berry = ITEM_PASSHO_BERRY, + //.gem = ITEM_WATER_GEM, + //.zCrystal = ITEM_WATERIUM_Z, + //.plate = ITEM_SPLASH_PLATE, + //.memory = ITEM_WATER_MEMORY, + //.teraShard = ITEM_WATER_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_WATER, + }, + [TYPE_GRASS] = + { + .name = _("Grass"), + .generic = _("a GRASS move"), + .palette = 15, + .zMove = MOVE_BLOOM_DOOM, + .maxMove = MOVE_MAX_OVERGROWTH, + //.enhanceItem = ITEM_MIRACLE_SEED, + //.berry = ITEM_RINDO_BERRY, + //.gem = ITEM_GRASS_GEM, + //.zCrystal = ITEM_GRASSIUM_Z, + //.plate = ITEM_MEADOW_PLATE, + //.memory = ITEM_GRASS_MEMORY, + //.teraShard = ITEM_GRASS_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GRASS, + }, + [TYPE_ELECTRIC] = + { + .name = _("Electr"), + .generic = _("an ELECTRIC move"), + .palette = 13, + .zMove = MOVE_GIGAVOLT_HAVOC, + .maxMove = MOVE_MAX_LIGHTNING, + //.enhanceItem = ITEM_MAGNET, + //.berry = ITEM_WACAN_BERRY, + //.gem = ITEM_ELECTRIC_GEM, + //.zCrystal = ITEM_ELECTRIUM_Z, + //.plate = ITEM_ZAP_PLATE, + //.memory = ITEM_ELECTRIC_MEMORY, + //.teraShard = ITEM_ELECTRIC_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ELECTRIC, + }, + [TYPE_PSYCHIC] = + { + .name = _("Psychc"), + .generic = _("a PSYCHIC move"), + .palette = 14, + .zMove = MOVE_SHATTERED_PSYCHE, + .maxMove = MOVE_MAX_MINDSTORM, + //.enhanceItem = ITEM_TWISTED_SPOON, + //.berry = ITEM_PAYAPA_BERRY, + //.gem = ITEM_PSYCHIC_GEM, + //.zCrystal = ITEM_PSYCHIUM_Z, + //.plate = ITEM_MIND_PLATE, + //.memory = ITEM_PSYCHIC_MEMORY, + //.teraShard = ITEM_PSYCHIC_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_PSYCHIC, + }, + [TYPE_ICE] = + { + .name = _("Ice"), + .generic = _("an ICE move"), + .palette = 14, + .zMove = MOVE_SUBZERO_SLAMMER, + .maxMove = MOVE_MAX_HAILSTORM, + //.enhanceItem = ITEM_NEVER_MELT_ICE, + //.berry = ITEM_YACHE_BERRY, + //.gem = ITEM_ICE_GEM, + //.zCrystal = ITEM_ICIUM_Z, + //.plate = ITEM_ICICLE_PLATE, + //.memory = ITEM_ICE_MEMORY, + //.teraShard = ITEM_ICE_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ICE, + }, + [TYPE_DRAGON] = + { + .name = _("Dragon"), + .generic = _("a DRAGON move"), + .palette = 15, + .zMove = MOVE_DEVASTATING_DRAKE, + .maxMove = MOVE_MAX_WYRMWIND, + //.enhanceItem = ITEM_DRAGON_FANG, + //.berry = ITEM_HABAN_BERRY, + //.gem = ITEM_DRAGON_GEM, + //.zCrystal = ITEM_DRAGONIUM_Z, + //.plate = ITEM_DRACO_PLATE, + //.memory = ITEM_DRAGON_MEMORY, + //.teraShard = ITEM_DRAGON_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_DRAGON, + }, + [TYPE_DARK] = + { + .name = _("Dark"), + .generic = _("a DARK move"), + .palette = 13, + .zMove = MOVE_BLACK_HOLE_ECLIPSE, + .maxMove = MOVE_MAX_DARKNESS, + //.enhanceItem = ITEM_BLACK_GLASSES, + //.berry = ITEM_COLBUR_BERRY, + //.gem = ITEM_DARK_GEM, + //.zCrystal = ITEM_DARKINIUM_Z, + //.plate = ITEM_DREAD_PLATE, + //.memory = ITEM_DARK_MEMORY, + //.teraShard = ITEM_DARK_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_DARK, + }, + [TYPE_FAIRY] = + { + .name = _("Fairy"), + .generic = _("a FAIRY move"), + .palette = 14, + .zMove = MOVE_TWINKLE_TACKLE, + .maxMove = MOVE_MAX_STARFALL, + //.enhanceItem = ITEM_FAIRY_FEATHER, + //.berry = ITEM_ROSELI_BERRY, + //.gem = ITEM_FAIRY_GEM, + //.zCrystal = ITEM_FAIRIUM_Z, + //.plate = ITEM_PIXIE_PLATE, + //.memory = ITEM_FAIRY_MEMORY, + //.teraShard = ITEM_FAIRY_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FAIRY, + }, + /* + [TYPE_STELLAR] = + { + .name = _("Stellar"), + .teraShard = ITEM_STELLAR_TERA_SHARD, + }, + */ +}; + static const union AnimCmd sAnim_Unused[] = { diff --git a/src/battle_message.c b/src/battle_message.c index a1b44e00f..1665b0382 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -38,18 +38,10 @@ struct BattleWindowText static EWRAM_DATA u16 sBattlerAbilities[MAX_BATTLERS_COUNT] = {}; static EWRAM_DATA struct BattleMsgData *sBattleMsgDataPtr = NULL; -static void ChooseMoveUsedParticle(u8 *textPtr); -static void ChooseTypeOfMoveUsedString(u8 *textPtr); static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst); -static const u8 sText_Empty1[] = _(""); +// merged static const u8 sText_Trainer1LoseText[] = _("{B_TRAINER1_LOSE_TEXT}"); -static const u8 sText_Trainer2LoseText[] = _("{B_TRAINER2_LOSE_TEXT}"); -static const u8 sText_Trainer1RecallPkmn1[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME}, come back!"); -static const u8 sText_Trainer1WinText[] = _("{B_TRAINER1_WIN_TEXT}"); -static const u8 sText_Trainer1RecallPkmn2[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON2_NAME}, come back!"); -static const u8 sText_Trainer1RecallBoth[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME}, come back!"); -static const u8 sText_Trainer2WinText[] = _("{B_TRAINER2_WIN_TEXT}"); static const u8 sText_PkmnGainedEXP[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_BUFF3} EXP. Points!\p"); static const u8 sText_EmptyString4[] = _(""); static const u8 sText_ABoosted[] = _(" a boosted"); @@ -71,10 +63,9 @@ static const u8 sText_ItDoesntAffect[] = _("It doesn't affect\n{B_DEF_NAME_WITH_ static const u8 sText_AttackerFainted[] = _("{B_ATK_NAME_WITH_PREFIX}\nfainted!\p"); static const u8 sText_TargetFainted[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p"); static const u8 sText_PlayerGotMoney[] = _("{B_PLAYER_NAME} got ¥{B_BUFF1}\nfor winning!\p"); +static const u8 sText_PlayerLostToEnemyTrainer[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\pPlayer lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!{PAUSE_UNTIL_PRESS}"); +static const u8 sText_PlayerPaidPrizeMoney[] = _("{B_PLAYER_NAME} paid ¥{B_BUFF1} as the prize\nmoney…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); static const u8 sText_PlayerWhiteout[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\p"); -static const u8 sText_PlayerPanicked[] = _("{B_PLAYER_NAME} panicked and lost ¥{B_BUFF1}…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); -static const u8 sText_PlayerWhiteoutAgainstTrainer[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\pPlayer lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!{PAUSE_UNTIL_PRESS}"); -static const u8 sText_PlayerPaidAsPrizeMoney[] = _("{B_PLAYER_NAME} paid ¥{B_BUFF1} as the prize\nmoney…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); static const u8 sText_PlayerWhiteout2[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); static const u8 sText_PreventsEscape[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p"); static const u8 sText_CantEscape2[] = _("Can't escape!\p"); @@ -86,14 +77,16 @@ static const u8 sText_PkmnAlreadyAsleep[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalre static const u8 sText_PkmnAlreadyAsleep2[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!"); static const u8 sText_PkmnWasntAffected[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasn't affected!"); static const u8 sText_PkmnWasPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!"); -static const u8 sText_PkmnPoisonedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!"); +static const u8 sText_PkmnPoisonedBy[] = _("{B_EFF_NAME_WITH_PREFIX} was poisoned by\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1}!"); static const u8 sText_PkmnHurtByPoison[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!"); static const u8 sText_PkmnAlreadyPoisoned[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned."); static const u8 sText_PkmnBadlyPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!"); static const u8 sText_PkmnEnergyDrained[] = _("{B_DEF_NAME_WITH_PREFIX} had its\nenergy drained!"); static const u8 sText_PkmnWasBurned[] = _("{B_EFF_NAME_WITH_PREFIX} was burned!"); +static const u8 sText_PkmnGotFrostbite[] = _("{B_EFF_NAME_WITH_PREFIX} got frostbite!"); static const u8 sText_PkmnBurnedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnHurtByBurn[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its burn!"); +static const u8 sText_PkmnHurtByFrostbite[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its frostbite!"); static const u8 sText_PkmnAlreadyHasBurn[] = _("{B_DEF_NAME_WITH_PREFIX} already\nhas a burn."); static const u8 sText_PkmnWasFrozen[] = _("{B_EFF_NAME_WITH_PREFIX} was\nfrozen solid!"); static const u8 sText_PkmnFrozenBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!"); @@ -101,6 +94,9 @@ static const u8 sText_PkmnIsFrozen[] = _("{B_ATK_NAME_WITH_PREFIX} is\nfrozen so static const u8 sText_PkmnWasDefrosted[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndefrosted!"); static const u8 sText_PkmnWasDefrosted2[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted!"); static const u8 sText_PkmnWasDefrostedBy[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted by {B_CURRENT_MOVE}!"); +static const u8 sText_PkmnFrostbiteHealed[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nfrostbite was healed!"); +static const u8 sText_PkmnFrostbiteHealed2[] = _("{B_ATK_NAME_WITH_PREFIX}'s\nfrostbite was healed!"); +static const u8 sText_PkmnFrostbiteHealedBy[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nhealed its frostbite!"); static const u8 sText_PkmnWasParalyzed[] = _("{B_EFF_NAME_WITH_PREFIX} is paralyzed!\nIt may be unable to move!"); static const u8 sText_PkmnWasParalyzedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!"); static const u8 sText_PkmnIsParalyzed[] = _("{B_ATK_NAME_WITH_PREFIX} is paralyzed!\nIt can't move!"); @@ -128,19 +124,21 @@ static const u8 sText_PkmnRaisedSpDefALittle[] = _("{B_ATK_PREFIX2}'s {B_CURRENT static const u8 sText_PkmnRaisedDef[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised DEFENSE!"); static const u8 sText_PkmnRaisedDefALittle[] = _("{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\nraised DEFENSE a little!"); static const u8 sText_PkmnCoveredByVeil[] = _("{B_ATK_PREFIX2}'s party is covered\nby a veil!"); -static const u8 sText_PkmnUsedSafeguard[] = _("{B_DEF_NAME_WITH_PREFIX}'s party is protected\nby SAFEGUARD!"); -static const u8 sText_PkmnSafeguardExpired[] = _("{B_ATK_PREFIX3}'s party is no longer\nprotected by SAFEGUARD!"); +static const u8 sText_PkmnUsedSafeguard[] = _("{B_DEF_NAME_WITH_PREFIX}'s party is protected\nby Safeguard!"); +static const u8 sText_PkmnSafeguardExpired[] = _("{B_ATK_PREFIX3}'s party is no longer\nprotected by Safeguard!"); static const u8 sText_PkmnWentToSleep[] = _("{B_ATK_NAME_WITH_PREFIX} went\nto sleep!"); static const u8 sText_PkmnSleptHealthy[] = _("{B_ATK_NAME_WITH_PREFIX} slept and\nbecame healthy!"); static const u8 sText_PkmnWhippedWhirlwind[] = _("{B_ATK_NAME_WITH_PREFIX} whipped\nup a whirlwind!"); static const u8 sText_PkmnTookSunlight[] = _("{B_ATK_NAME_WITH_PREFIX} took\nin sunlight!"); static const u8 sText_PkmnLoweredHead[] = _("{B_ATK_NAME_WITH_PREFIX} lowered\nits head!"); static const u8 sText_PkmnIsGlowing[] = _("{B_ATK_NAME_WITH_PREFIX} is glowing!"); +static const u8 sText_PkmnIsCloakedInAHarshLight[] = _("{B_ATK_NAME_WITH_PREFIX} became\ncloaked in a harsh light!"); static const u8 sText_PkmnFlewHigh[] = _("{B_ATK_NAME_WITH_PREFIX} flew\nup high!"); static const u8 sText_PkmnDugHole[] = _("{B_ATK_NAME_WITH_PREFIX} dug a hole!"); static const u8 sText_PkmnHidUnderwater[] = _("{B_ATK_NAME_WITH_PREFIX} hid\nunderwater!"); static const u8 sText_PkmnSprangUp[] = _("{B_ATK_NAME_WITH_PREFIX} sprang up!"); static const u8 sText_PkmnSqueezedByBind[] = _("{B_DEF_NAME_WITH_PREFIX} was squeezed by\n{B_ATK_NAME_WITH_PREFIX}'s BIND!"); +static const u8 sText_PkmnInSnapTrap[] = _("{B_DEF_NAME_WITH_PREFIX} got trapped\nby a snap trap!"); static const u8 sText_PkmnTrappedInVortex[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nin the vortex!"); static const u8 sText_PkmnTrappedBySandTomb[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nby SAND TOMB!"); static const u8 sText_PkmnWrappedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was WRAPPED by\n{B_ATK_NAME_WITH_PREFIX}!"); @@ -148,9 +146,9 @@ static const u8 sText_PkmnClamped[] = _("{B_ATK_NAME_WITH_PREFIX} CLAMPED\n{B_DE static const u8 sText_PkmnHurtBy[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby {B_BUFF1}!"); static const u8 sText_PkmnFreedFrom[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom {B_BUFF1}!"); static const u8 sText_PkmnCrashed[] = _("{B_ATK_NAME_WITH_PREFIX} kept going\nand crashed!"); -const u8 gBattleText_MistShroud[] = _("{B_ATK_PREFIX2} became\nshrouded in MIST!"); +const u8 gText_PkmnShroudedInMist[] = _("{B_ATK_PREFIX2} became\nshrouded in MIST!"); static const u8 sText_PkmnProtectedByMist[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected\nby MIST!"); -const u8 gBattleText_GetPumped[] = _("{B_ATK_NAME_WITH_PREFIX} is getting\npumped!"); +const u8 gText_PkmnGettingPumped[] = _("{B_DEF_NAME_WITH_PREFIX} is getting\npumped!"); static const u8 sText_PkmnHitWithRecoil[] = _("{B_ATK_NAME_WITH_PREFIX} is hit\nwith recoil!"); static const u8 sText_PkmnProtectedItself2[] = _("{B_ATK_NAME_WITH_PREFIX} protected\nitself!"); static const u8 sText_PkmnBuffetedBySandstorm[] = _("{B_ATK_NAME_WITH_PREFIX} is buffeted\nby the sandstorm!"); @@ -167,15 +165,15 @@ static const u8 sText_PkmnCausedUproar[] = _("{B_ATK_NAME_WITH_PREFIX} caused\na static const u8 sText_PkmnMakingUproar[] = _("{B_ATK_NAME_WITH_PREFIX} is making\nan UPROAR!"); static const u8 sText_PkmnCalmedDown[] = _("{B_ATK_NAME_WITH_PREFIX} calmed down."); static const u8 sText_PkmnCantSleepInUproar[] = _("But {B_DEF_NAME_WITH_PREFIX} can't\nsleep in an UPROAR!"); -static const u8 sText_PkmnStockpiled[] = _("{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n{B_BUFF1}!"); -static const u8 sText_PkmnCantStockpile[] = _("{B_ATK_NAME_WITH_PREFIX} can't\nSTOCKPILE any more!"); +static const u8 sText_PkmnStockpiled[] = _("{B_ATK_NAME_WITH_PREFIX} stockpiled\n{B_BUFF1}!"); +static const u8 sText_PkmnCantStockpile[] = _("{B_ATK_NAME_WITH_PREFIX} can't\nstockpile any more!"); static const u8 sText_PkmnCantSleepInUproar2[] = _("But {B_DEF_NAME_WITH_PREFIX} can't\nsleep in an UPROAR!"); static const u8 sText_UproarKeptPkmnAwake[] = _("But the UPROAR kept\n{B_DEF_NAME_WITH_PREFIX} awake!"); static const u8 sText_PkmnStayedAwakeUsing[] = _("{B_DEF_NAME_WITH_PREFIX} stayed awake\nusing its {B_DEF_ABILITY}!"); static const u8 sText_PkmnStoringEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} is storing\nenergy!"); static const u8 sText_PkmnUnleashedEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} unleashed\nenergy!"); static const u8 sText_PkmnFatigueConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} became\nconfused due to fatigue!"); -static const u8 sText_PkmnPickedUpItem[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p"); +static const u8 sText_PlayerPickedUpMoney[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p"); static const u8 sText_PkmnUnaffected[] = _("{B_DEF_NAME_WITH_PREFIX} is\nunaffected!"); static const u8 sText_PkmnTransformedInto[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto {B_BUFF1}!"); static const u8 sText_PkmnMadeSubstitute[] = _("{B_ATK_NAME_WITH_PREFIX} made\na SUBSTITUTE!"); @@ -199,8 +197,8 @@ static const u8 sText_PkmnFellIntoNightmare[] = _("{B_DEF_NAME_WITH_PREFIX} fell static const u8 sText_PkmnLockedInNightmare[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!"); static const u8 sText_PkmnLaidCurse[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnAfflictedByCurse[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!"); -static const u8 sText_SpikesScattered[] = _("SPIKES were scattered all around\nthe opponent's side!"); -static const u8 sText_PkmnHurtBySpikes[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!"); +static const u8 sText_SpikesScattered[] = _("Spikes were scattered all around\n{B_DEF_TEAM2} team!"); +static const u8 sText_PkmnHurtBySpikes[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby spikes!"); static const u8 sText_PkmnIdentified[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnPerishCountFell[] = _("{B_ATK_NAME_WITH_PREFIX}'s PERISH count\nfell to {B_BUFF1}!"); static const u8 sText_PkmnBracedItself[] = _("{B_ATK_NAME_WITH_PREFIX} braced\nitself!"); @@ -210,19 +208,19 @@ static const u8 sText_PkmnCutHPMaxedAttack[] = _("{B_ATK_NAME_WITH_PREFIX} cut i static const u8 sText_PkmnCopiedStatChanges[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}'s stat changes!"); static const u8 sText_PkmnGotFree[] = _("{B_ATK_NAME_WITH_PREFIX} got free of\n{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); static const u8 sText_PkmnShedLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX} shed\nLEECH SEED!"); -static const u8 sText_PkmnBlewAwaySpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSPIKES!"); +static const u8 sText_PkmnBlewAwaySpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nspikes!"); static const u8 sText_PkmnFledFromBattle[] = _("{B_ATK_NAME_WITH_PREFIX} fled from\nbattle!"); static const u8 sText_PkmnForesawAttack[] = _("{B_ATK_NAME_WITH_PREFIX} foresaw\nan attack!"); static const u8 sText_PkmnTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX} took the\n{B_BUFF1} attack!"); static const u8 sText_PkmnChoseXAsDestiny[] = _("{B_ATK_NAME_WITH_PREFIX} chose\n{B_CURRENT_MOVE} as its destiny!"); static const u8 sText_PkmnAttack[] = _("{B_BUFF1}'s attack!"); -static const u8 sText_PkmnCenterAttention[] = _("{B_ATK_NAME_WITH_PREFIX} became the\ncenter of attention!"); +static const u8 sText_PkmnCenterAttention[] = _("{B_DEF_NAME_WITH_PREFIX} became the\ncenter of attention!"); static const u8 sText_PkmnChargingPower[] = _("{B_ATK_NAME_WITH_PREFIX} began\ncharging power!"); static const u8 sText_NaturePowerTurnedInto[] = _("NATURE POWER turned into\n{B_CURRENT_MOVE}!"); static const u8 sText_PkmnStatusNormal[] = _("{B_ATK_NAME_WITH_PREFIX}'s status\nreturned to normal!"); -static const u8 sText_PkmnSubjectedToTorment[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto TORMENT!"); +static const u8 sText_PkmnSubjectedToTorment[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto torment!"); static const u8 sText_PkmnTighteningFocus[] = _("{B_ATK_NAME_WITH_PREFIX} is tightening\nits focus!"); -static const u8 sText_PkmnFellForTaunt[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe TAUNT!"); +static const u8 sText_PkmnFellForTaunt[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe Taunt!"); static const u8 sText_PkmnReadyToHelp[] = _("{B_ATK_NAME_WITH_PREFIX} is ready to\nhelp {B_DEF_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnSwitchedItems[] = _("{B_ATK_NAME_WITH_PREFIX} switched\nitems with its opponent!"); static const u8 sText_PkmnObtainedX[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}."); @@ -237,12 +235,12 @@ static const u8 sText_PkmnAnchoredItself[] = _("{B_DEF_NAME_WITH_PREFIX} anchore static const u8 sText_PkmnWasMadeDrowsy[] = _("{B_ATK_NAME_WITH_PREFIX} made\n{B_DEF_NAME_WITH_PREFIX} drowsy!"); static const u8 sText_PkmnKnockedOff[] = _("{B_ATK_NAME_WITH_PREFIX} knocked off\n{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); static const u8 sText_PkmnSwappedAbilities[] = _("{B_ATK_NAME_WITH_PREFIX} swapped abilities\nwith its opponent!"); -static const u8 sText_PkmnSealedOpponentMove[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponent's moveシsス!"); +static const u8 sText_PkmnSealedOpponentMove[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponent's move(s)!"); static const u8 sText_PkmnWantsGrudge[] = _("{B_ATK_NAME_WITH_PREFIX} wants the\nopponent to bear a GRUDGE!"); static const u8 sText_PkmnLostPPGrudge[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} lost\nall its PP due to the GRUDGE!"); static const u8 sText_PkmnShroudedItself[] = _("{B_ATK_NAME_WITH_PREFIX} shrouded\nitself in {B_CURRENT_MOVE}!"); static const u8 sText_PkmnMoveBounced[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nwas bounced back by MAGIC COAT!"); -static const u8 sText_PkmnWaitsForTarget[] = _("{B_ATK_NAME_WITH_PREFIX} waits for its foe\nto make a move!"); +static const u8 sText_PkmnWaitsForTarget[] = _("{B_ATK_NAME_WITH_PREFIX} waits for a target\nto make a move!"); static const u8 sText_PkmnSnatchedMove[] = _("{B_DEF_NAME_WITH_PREFIX} SNATCHED\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s move!"); static const u8 sText_ElectricityWeakened[] = _("Electricity's power was\nweakened!"); static const u8 sText_FireWeakened[] = _("Fire's power was\nweakened!"); @@ -250,16 +248,17 @@ static const u8 sText_XFoundOneY[] = _("{B_ATK_NAME_WITH_PREFIX} found\none {B_L static const u8 sText_SoothingAroma[] = _("A soothing aroma wafted\nthrough the area!"); static const u8 sText_ItemsCantBeUsedNow[] = _("Items can't be used now.{PAUSE 64}"); static const u8 sText_ForXCommaYZ[] = _("For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}"); -static const u8 sText_PkmnUsedXToGetPumped[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to hustle!"); +static const u8 sText_PkmnUsedXToGetPumped[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to get pumped!"); static const u8 sText_PkmnLostFocus[] = _("{B_ATK_NAME_WITH_PREFIX} lost its\nfocus and couldn't move!"); static const u8 sText_PkmnWasDraggedOut[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndragged out!\p"); static const u8 sText_TheWallShattered[] = _("The wall shattered!"); static const u8 sText_ButNoEffect[] = _("But it had no effect!"); -static const u8 sText_PkmnHasNoMovesLeft[] = _("{B_ACTIVE_NAME_WITH_PREFIX} has no\nmoves left!\p"); -static const u8 sText_PkmnMoveIsDisabled[] = _("{B_ACTIVE_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nis disabled!\p"); -static const u8 sText_PkmnCantUseMoveTorment[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use the same\nmove in a row due to the TORMENT!\p"); -static const u8 sText_PkmnCantUseMoveTaunt[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use\n{B_CURRENT_MOVE} after the TAUNT!\p"); -static const u8 sText_PkmnCantUseMoveSealed[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can't use the\nsealed {B_CURRENT_MOVE}!\p"); +static const u8 sText_PkmnHasNoMovesLeft[] = _("{B_ATK_NAME_WITH_PREFIX} has no\nmoves left!\p"); +static const u8 sText_PkmnMoveIsDisabled[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nis disabled!\p"); +static const u8 sText_PkmnCantUseMoveTorment[] = _("{B_ATK_NAME_WITH_PREFIX} can't use the same\nmove in a row due to the Torment!\p"); +static const u8 sText_PkmnCantUseMoveTaunt[] = _("{B_ATK_NAME_WITH_PREFIX} can't use\n{B_CURRENT_MOVE} after the Taunt!\p"); +static const u8 sText_PkmnCantUseMoveSealed[] = _("{B_ATK_NAME_WITH_PREFIX} can't use the\nsealed {B_CURRENT_MOVE}!\p"); +static const u8 sText_PkmnCantUseMoveThroatChop[] = _("{B_ATK_NAME_WITH_PREFIX} can't use\n{B_CURRENT_MOVE} due to Throat Chop!\p"); static const u8 sText_PkmnMadeItRain[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade it rain!"); static const u8 sText_PkmnRaisedSpeed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its SPEED!"); static const u8 sText_PkmnProtectedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was protected\nby {B_DEF_ABILITY}!"); @@ -273,9 +272,9 @@ static const u8 sText_PkmnPreventsPoisoningWith[] = _("{B_EFF_NAME_WITH_PREFIX}' static const u8 sText_PkmnPreventsConfusionWith[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nprevents confusion!"); static const u8 sText_PkmnRaisedFirePowerWith[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nraised its FIRE power!"); static const u8 sText_PkmnAnchorsItselfWith[] = _("{B_DEF_NAME_WITH_PREFIX} anchors\nitself with {B_DEF_ABILITY}!"); -static const u8 sText_PkmnCutsAttackWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}'s ATTACK!"); +static const u8 sText_PkmnCutsAttackWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}'s attack!"); static const u8 sText_PkmnPreventsStatLossWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!"); -static const u8 sText_PkmnHurtsWith[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nhurt {B_ATK_NAME_WITH_PREFIX}!"); +static const u8 sText_PkmnHurtsWith[] = _("{B_ATK_NAME_WITH_PREFIX} was hurt by\n{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); static const u8 sText_PkmnTraced[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}'s {B_BUFF2}!"); static const u8 sText_PkmnsXPreventsBurns[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\nprevents burns!"); static const u8 sText_PkmnsXBlocksY[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nblocks {B_CURRENT_MOVE}!"); @@ -287,7 +286,7 @@ static const u8 sText_PkmnsXPreventsYLoss[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} static const u8 sText_PkmnsXInfatuatedY[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\ninfatuated {B_ATK_NAME_WITH_PREFIX}!"); static const u8 sText_PkmnsXMadeYIneffective[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} ineffective!"); static const u8 sText_PkmnsXCuredYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); -static const u8 sText_ItSuckedLiquidOoze[] = _("It sucked up the\nLIQUID OOZE!"); +static const u8 sText_ItSuckedLiquidOoze[] = _("It sucked up the\nliquid ooze!"); static const u8 sText_PkmnTransformed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!"); static const u8 sText_PkmnsXTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\ntook the attack!"); const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}'s {B_LAST_ABILITY}\nprevents switching!\p"); @@ -295,10 +294,9 @@ static const u8 sText_PreventedFromWorking[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_ static const u8 sText_PkmnsXMadeItIneffective[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!"); static const u8 sText_PkmnsXPreventsFlinching[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\nprevents flinching!"); static const u8 sText_PkmnsXPreventsYsZ[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY} from working!"); +static const u8 sText_PkmnsAbilityPreventsAbility[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY} from working!"); static const u8 sText_PkmnsXCuredItsYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!"); static const u8 sText_PkmnsXHadNoEffectOnY[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!"); -static const u8 sText_TooScaredToMove[] = _("{B_ATK_NAME_WITH_PREFIX} is too scared to move!"); -static const u8 sText_GetOutGetOut[] = _("GHOST: Get out…… Get out……"); const u8 gText_StatSharply[] = _("sharply "); const u8 gText_StatRose[] = _("rose!"); static const u8 sText_StatHarshly[] = _("harshly "); @@ -331,11 +329,11 @@ static const u8 sText_WildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} f static const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!"); static const u8 sText_NoRunningFromTrainers[] = _("No! There's no running\nfrom a TRAINER battle!\p"); static const u8 sText_CantEscape[] = _("Can't escape!\p"); -static const u8 sText_DontLeaveBirch[] = _(""); // Dummied +static const u8 sText_DontLeaveBirch[] = _("PROF. BIRCH: Don't leave me like this!\p"); static const u8 sText_ButNothingHappened[] = _("But nothing happened!"); static const u8 sText_ButItFailed[] = _("But it failed!"); static const u8 sText_ItHurtConfusion[] = _("It hurt itself in its\nconfusion!"); -static const u8 sText_MirrorMoveFailed[] = _("The MIRROR MOVE failed!"); +static const u8 sText_MirrorMoveFailed[] = _("The Mirror Move failed!"); static const u8 sText_StartedToRain[] = _("It started to rain!"); static const u8 sText_DownpourStarted[] = _("A downpour started!"); // corresponds to DownpourText in pokegold and pokecrystal and is used by Rain Dance in GSC static const u8 sText_RainContinues[] = _("Rain continues to fall."); @@ -350,8 +348,11 @@ static const u8 sText_SunlightFaded[] = _("The sunlight faded."); static const u8 sText_StartedHail[] = _("It started to hail!"); static const u8 sText_HailContinues[] = _("Hail continues to fall."); static const u8 sText_HailStopped[] = _("The hail stopped."); -static const u8 sText_FailedToSpitUp[] = _("But it failed to SPIT UP\na thing!"); -static const u8 sText_FailedToSwallow[] = _("But it failed to SWALLOW\na thing!"); +static const u8 sText_StartedSnow[] = _("It started to snow!"); +static const u8 sText_SnowContinues[] = _("Snow continues to fall."); +static const u8 sText_SnowStopped[] = _("The snow stopped."); +static const u8 sText_FailedToSpitUp[] = _("But it failed to spit up\na thing!"); +static const u8 sText_FailedToSwallow[] = _("But it failed to swallow\na thing!"); static const u8 sText_WindBecameHeatWave[] = _("The wind turned into a\nHEAT WAVE!"); static const u8 sText_StatChangesGone[] = _("All stat changes were\neliminated!"); static const u8 sText_CoinsScattered[] = _("Coins scattered everywhere!"); @@ -371,25 +372,24 @@ static const u8 sText_PkmnPretendNotNotice[] = _("{B_ATK_NAME_WITH_PREFIX} prete static const u8 sText_EnemyAboutToSwitchPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\nabout to use {B_BUFF2}.\pWill {B_PLAYER_NAME} change\nPOKéMON?"); static const u8 sText_PkmnLearnedMove2[] = _("{B_ATK_NAME_WITH_PREFIX} learned\n{B_BUFF1}!"); static const u8 sText_PlayerDefeatedLinkTrainerTrainer1[] = _("Player defeated\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p"); -static const u8 sText_ThrewARock[] = _("{B_PLAYER_NAME} threw a ROCK\nat the {B_OPPONENT_MON1_NAME}!"); -static const u8 sText_ThrewSomeBait[] = _("{B_PLAYER_NAME} threw some BAIT\nat the {B_OPPONENT_MON1_NAME}!"); +static const u8 sText_CreptCloser[] = _("{B_PLAYER_NAME} crept closer to\n{B_OPPONENT_MON1_NAME}!"); +static const u8 sText_CantGetCloser[] = _("{B_PLAYER_NAME} can't get any closer!"); static const u8 sText_PkmnWatchingCarefully[] = _("{B_OPPONENT_MON1_NAME} is watching\ncarefully!"); -static const u8 sText_PkmnIsAngry[] = _("{B_OPPONENT_MON1_NAME} is angry!"); -static const u8 sText_PkmnIsEating[] = _("{B_OPPONENT_MON1_NAME} is eating!"); +static const u8 sText_PkmnCuriousAboutX[] = _("{B_OPPONENT_MON1_NAME} is curious about\nthe {B_BUFF1}!"); +static const u8 sText_PkmnEnthralledByX[] = _("{B_OPPONENT_MON1_NAME} is enthralled by\nthe {B_BUFF1}!"); +static const u8 sText_PkmnIgnoredX[] = _("{B_OPPONENT_MON1_NAME} completely ignored\nthe {B_BUFF1}!"); +static const u8 sText_ThrewPokeblockAtPkmn[] = _("{B_PLAYER_NAME} threw a {POKEBLOCK}\nat the {B_OPPONENT_MON1_NAME}!"); static const u8 sText_OutOfSafariBalls[] = _("{PLAY_SE SE_DING_DONG}ANNOUNCER: You're out of\nSAFARI BALLS! Game over!\p"); +static const u8 sText_OpponentMon1Appeared[] = _("{B_OPPONENT_MON1_NAME} appeared!\p"); static const u8 sText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); -static const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); +static const u8 sText_LegendaryPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); static const u8 sText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}"); static const u8 sText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p"); -static const u8 sText_GhostAppearedCantId[] = _("The GHOST appeared!\pDarn!\nThe GHOST can't be ID'd!\p"); -static const u8 sText_TheGhostAppeared[] = _("The GHOST appeared!\p"); -static const u8 sText_SilphScopeUnveil[] = _("SILPH SCOPE unveiled the GHOST's\nidentity!"); -static const u8 sText_TheGhostWas[] = _("The GHOST was MAROWAK!\p\n"); static const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p"); static const u8 sText_LinkTrainerWantsToBattle[] = _("{B_LINK_OPPONENT1_NAME}\nwants to battle!"); static const u8 sText_TwoLinkTrainersWantToBattle[] = _("{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\nwant to battle!"); -static const u8 sText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!{PAUSE 60}"); -static const u8 sText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!{PAUSE 60}"); +static const u8 sText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!"); +static const u8 sText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!"); static const u8 sText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!"); static const u8 sText_LinkTrainerSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME}!"); static const u8 sText_LinkTrainerSentOutTwoPkmn[] = _("{B_LINK_OPPONENT1_NAME} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!"); @@ -406,33 +406,581 @@ static const u8 sText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_LINK_PARTNER_NAME} static const u8 sText_PkmnThatsEnough[] = _("{B_BUFF1}, that's enough!\nCome back!"); static const u8 sText_PkmnComeBack[] = _("{B_BUFF1}, come back!"); static const u8 sText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!"); -const u8 sText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!"); +static const u8 sText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!"); static const u8 sText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!"); static const u8 sText_LinkTrainer1WithdrewPkmn[] = _("{B_LINK_OPPONENT1_NAME} withdrew\n{B_BUFF1}!"); static const u8 sText_LinkTrainer2WithdrewPkmn[] = _("{B_LINK_SCR_TRAINER_NAME} withdrew\n{B_BUFF1}!"); static const u8 sText_WildPkmnPrefix[] = _("Wild "); static const u8 sText_FoePkmnPrefix[] = _("Foe "); +static const u8 sText_EmptyString8[] = _(""); static const u8 sText_FoePkmnPrefix2[] = _("Foe"); static const u8 sText_AllyPkmnPrefix[] = _("Ally"); static const u8 sText_FoePkmnPrefix3[] = _("Foe"); static const u8 sText_AllyPkmnPrefix2[] = _("Ally"); static const u8 sText_FoePkmnPrefix4[] = _("Foe"); static const u8 sText_AllyPkmnPrefix3[] = _("Ally"); -static const u8 sText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF2}"); +static const u8 sText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF3}!"); static const u8 sText_ExclamationMark[] = _("!"); static const u8 sText_ExclamationMark2[] = _("!"); static const u8 sText_ExclamationMark3[] = _("!"); static const u8 sText_ExclamationMark4[] = _("!"); static const u8 sText_ExclamationMark5[] = _("!"); - +static const u8 sText_HP[] = _("HP"); +static const u8 sText_Attack[] = _("Attack"); +static const u8 sText_Defense[] = _("Defense"); +static const u8 sText_Speed[] = _("Speed"); +static const u8 sText_SpAttack[] = _("Sp. Atk"); +static const u8 sText_SpDefense[] = _("Sp. Def"); +static const u8 sText_Accuracy[] = _("accuracy"); +static const u8 sText_Evasiveness[] = _("evasiveness"); +static const u8 sText_PokeblockWasTooSpicy[] = _("was too spicy!"); +static const u8 sText_PokeblockWasTooDry[] = _("was too dry!"); +static const u8 sText_PokeblockWasTooSweet[] = _("was too sweet!"); +static const u8 sText_PokeblockWasTooBitter[] = _("was too bitter!"); +static const u8 sText_PokeblockWasTooSour[] = _("was too sour!"); +static const u8 sText_PlayerUsedItem[] = _("You used\n{B_LAST_ITEM}!"); +static const u8 sText_WallyUsedItem[] = _("WALLY used\n{B_LAST_ITEM}!"); +static const u8 sText_Trainer1UsedItem[] = _("{B_ATK_TRAINER_CLASS} {B_ATK_TRAINER_NAME}\nused {B_LAST_ITEM}!"); +static const u8 sText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!"); +static const u8 sText_DontBeAThief[] = _("Don't be a thief!"); +static const u8 sText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can't be caught!"); +static const u8 sText_YouMissedPkmn[] = _("You missed the POKéMON!"); +static const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); +static const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); +static const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); +static const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); +static const u8 sText_GotchaPkmnCaughtPlayer[] = _("Gotcha!\n{B_DEF_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}\p"); +static const u8 sText_GotchaPkmnCaughtWally[] = _("Gotcha!\n{B_DEF_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}{PAUSE 127}"); +static const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_DEF_NAME}?"); +static const u8 sText_PkmnSentToPC[] = _("{B_DEF_NAME} was sent to\n{B_PC_CREATOR_NAME} PC."); +static const u8 sText_Someones[] = _("someone's"); +static const u8 sText_Lanettes[] = _("LANETTE's"); +static const u8 sText_PkmnDataAddedToDex[] = _("{B_DEF_NAME}'s data was\nadded to the POKéDEX.\p"); +static const u8 sText_ItIsRaining[] = _("It is raining."); +static const u8 sText_SandstormIsRaging[] = _("A sandstorm is raging."); +static const u8 sText_BoxIsFull[] = _("The BOX is full!\nYou can't catch any more!\p"); +static const u8 sText_EnigmaBerry[] = _("ENIGMA BERRY"); +static const u8 sText_BerrySuffix[] = _(" BERRY"); +static const u8 sText_PkmnsItemCuredParalysis[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured paralysis!"); +static const u8 sText_PkmnsItemCuredPoison[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured poison!"); +static const u8 sText_PkmnsItemHealedBurn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its burn!"); +static const u8 sText_PkmnsItemHealedFrostbite[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its frostbite!"); +static const u8 sText_PkmnsItemDefrostedIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ndefrosted it!"); +static const u8 sText_PkmnsItemWokeIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwoke it from its sleep!"); +static const u8 sText_PkmnsItemSnappedOut[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nsnapped it out of confusion!"); +static const u8 sText_PkmnsItemCuredProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!"); +static const u8 sText_PkmnsItemNormalizedStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nnormalized its status!"); +static const u8 sText_PkmnsItemRestoredHealth[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored health!"); +static const u8 sText_PkmnsItemRestoredPP[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored {B_BUFF1}'s PP!"); +static const u8 sText_PkmnsItemRestoredStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its status!"); +static const u8 sText_PkmnsItemRestoredHPALittle[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its HP a little!"); +static const u8 sText_ItemAllowsOnlyYMove[] = _("{B_LAST_ITEM} allows the\nuse of only {B_CURRENT_MOVE}!\p"); +static const u8 sText_PkmnHungOnWithX[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!"); +const u8 gText_EmptyString3[] = _(""); +static const u8 sText_YouThrowABallNowRight[] = _("You throw a BALL now, right?\nI… I'll do my best!"); +static const u8 sText_EnduredViaSturdy[] = _("{B_DEF_NAME_WITH_PREFIX} endured\nthe hit using {B_DEF_ABILITY}!"); +static const u8 sText_PowerHerbActivation[] = _("{B_ATK_NAME_WITH_PREFIX} became fully charged\ndue to its {B_LAST_ITEM}!"); +static const u8 sText_HurtByItem[] = _("{B_ATK_NAME_WITH_PREFIX} was hurt\nby its {B_LAST_ITEM}!"); +static const u8 sText_BadlyPoisonedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was badly\npoisoned by the {B_LAST_ITEM}!"); +static const u8 sText_BurnedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was burned\nby the {B_LAST_ITEM}!"); +static const u8 sText_TargetAbilityActivates[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} activates!"); +static const u8 sText_GravityIntensified[] = _("Gravity intensified!"); +static const u8 sText_TargetIdentified[] = _("{B_DEF_NAME_WITH_PREFIX} was\nidentified!"); +static const u8 sText_TargetWokeUp[] = _("{B_DEF_NAME_WITH_PREFIX} woke up!"); +static const u8 sText_PkmnStoleAndAteItem[] = _("{B_ATK_NAME_WITH_PREFIX} stole and\nate {B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); +static const u8 sText_TailWindBlew[] = _("The tailwind blew from\nbehind {B_ATK_TEAM2} team!"); +static const u8 sText_PkmnWentBack[] = _("{B_ATK_NAME_WITH_PREFIX} went back\nto {B_ATK_TRAINER_CLASS} {B_ATK_TRAINER_NAME}"); +static const u8 sText_PkmnCantUseItemsAnymore[] = _("{B_DEF_NAME_WITH_PREFIX} can't use\nitems anymore!"); +static const u8 sText_PkmnFlung[] = _("{B_ATK_NAME_WITH_PREFIX} flung its\n{B_LAST_ITEM}!"); +static const u8 sText_PkmnPreventedFromHealing[] = _("{B_DEF_NAME_WITH_PREFIX} was prevented\nfrom healing!"); +static const u8 sText_PkmnSwitchedAtkAndDef[] = _("{B_ATK_NAME_WITH_PREFIX} switched its\nAttack and Defense!"); +static const u8 sText_PkmnsAbilitySuppressed[] = _("{B_DEF_NAME_WITH_PREFIX}'s ability\nwas suppressed!"); +static const u8 sText_ShieldedFromCriticalHits[] = _("The {B_CURRENT_MOVE} shielded {B_ATK_TEAM2}\nteam from critical hits!"); +static const u8 sText_SwitchedAtkAndSpAtk[] = _("{B_ATK_NAME_WITH_PREFIX} switched all its\nchanges to its Attack and\pSp. Atk with the target!"); +static const u8 sText_SwitchedDefAndSpDef[] = _("{B_ATK_NAME_WITH_PREFIX} switched all its\nchanges to its Defense and\pSp. Def with the target!"); +static const u8 sText_PkmnAcquiredAbility[] = _("{B_DEF_NAME_WITH_PREFIX} acquired\n{B_DEF_ABILITY}!"); +static const u8 sText_PoisonSpikesScattered[] = _("Poison Spikes were scattered all\naround {B_DEF_TEAM2} team's feet!"); +static const u8 sText_PkmnSwitchedStatChanges[] = _("{B_ATK_NAME_WITH_PREFIX} switched stat changes\nwith the target!"); +static const u8 sText_PkmnSurroundedWithVeilOfWater[] = _("{B_ATK_NAME_WITH_PREFIX} surrounded itself\nwith a veil of water!"); +static const u8 sText_PkmnLevitatedOnElectromagnetism[] = _("{B_ATK_NAME_WITH_PREFIX} levitated on\nelectromagnetism!"); +static const u8 sText_PkmnTwistedDimensions[] = _("{B_ATK_NAME_WITH_PREFIX} twisted\nthe dimensions!"); +static const u8 sText_DimensionsWereTwisted[] = _("The dimensions were\ntwisted!"); +static const u8 sText_PointedStonesFloat[] =_("Pointed stones float in the air\naround {B_DEF_TEAM2} team!"); +static const u8 sText_CloakedInMysticalMoonlight[] =_("It became cloaked in mystical\nmoonlight!"); +static const u8 sText_TrappedBySwirlingMagma[] =_("{B_DEF_NAME_WITH_PREFIX} became\ntrapped by swirling magma!"); +static const u8 sText_VanishedInstantly[] =_("{B_ATK_NAME_WITH_PREFIX} vanished\ninstantly!"); +static const u8 sText_ProtectedTeam[] =_("{B_CURRENT_MOVE} protected\n{B_ATK_TEAM2} team!"); +static const u8 sText_SharedItsGuard[] =_("{B_ATK_NAME_WITH_PREFIX} shared its\nguard with the target!"); +static const u8 sText_SharedItsPower[] =_("{B_ATK_NAME_WITH_PREFIX} shared its\npower with the target!"); +static const u8 sText_SwapsDefAndSpDefOfAllPkmn[] =_("It created a bizarre area in which the\nDefense and Sp. Def stats are swapped!"); +static const u8 sText_BizzareAreaCreated[] =_("A bizarre area was created in which the\nDefense and Sp. Def stats are swapped!"); +static const u8 sText_BecameNimble[] =_("{B_ATK_NAME_WITH_PREFIX} became nimble!"); +static const u8 sText_HurledIntoTheAir[] =_("{B_DEF_NAME_WITH_PREFIX} was hurled\ninto the air!"); +static const u8 sText_HeldItemsLoseEffects[] =_("It created a bizarre area in which\nPokémon's held items lose their effects!"); +static const u8 sText_BizarreArenaCreated[] =_("A bizarre area was created!\nHold items lost their effects!"); +static const u8 sText_FellStraightDown[] =_("{B_DEF_NAME_WITH_PREFIX} fell\nstraight down!"); +static const u8 sText_TargetChangedType[] =_("{B_DEF_NAME_WITH_PREFIX} transformed\ninto the {B_BUFF1} type!"); +static const u8 sText_PkmnAcquiredSimple[] =_("{B_DEF_NAME_WITH_PREFIX} acquired\nSimple!"); +static const u8 sText_KindOffer[] =_("{B_DEF_NAME_WITH_PREFIX}\ntook the kind offer!"); +static const u8 sText_ResetsTargetsStatLevels[] =_("{B_DEF_NAME_WITH_PREFIX}'s stat changes\nwere removed!"); +static const u8 sText_AllySwitchPosition[] =_("{B_ATK_NAME_WITH_PREFIX} and\n{B_SCR_ACTIVE_NAME_WITH_PREFIX} switched places!"); +static const u8 sText_RestoreTargetsHealth[] =_("{B_DEF_NAME_WITH_PREFIX}'s HP was restored!"); +static const u8 sText_TookPkmnIntoTheSky[] =_("{B_ATK_NAME_WITH_PREFIX} took\n{B_DEF_NAME_WITH_PREFIX} into the sky!"); +static const u8 sText_FreedFromSkyDrop[] =_("{B_DEF_NAME_WITH_PREFIX} was freed\nfrom the Sky Drop!"); +static const u8 sText_PostponeTargetMove[] =_("{B_DEF_NAME_WITH_PREFIX}'s move\nwas postponed!"); +static const u8 sText_ReflectTargetsType[] =_("{B_ATK_NAME_WITH_PREFIX}'s type\nchanged to match the {B_DEF_NAME_WITH_PREFIX}'s!"); +static const u8 sText_TransferHeldItem[] =_("{B_DEF_NAME_WITH_PREFIX} received {B_LAST_ITEM}\nfrom {B_ATK_NAME_WITH_PREFIX}"); +static const u8 sText_EmbargoEnds[] = _("{B_ATK_NAME_WITH_PREFIX} can\nuse items again!"); +static const u8 sText_Electromagnetism[] = _("electromagnetism"); +static const u8 sText_BufferEnds[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\nwore off!"); +static const u8 sText_ThroatChopEnds[] = _("{B_ATK_NAME_WITH_PREFIX} can\nuse sound-based moves again!"); +static const u8 sText_TelekinesisEnds[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom the telekinesis!"); +static const u8 sText_TailwindEnds[] = _("{B_ATK_TEAM1} team's tailwind\npetered out!"); +static const u8 sText_LuckyChantEnds[] = _("{B_ATK_TEAM1} team's Lucky Chant\nwore off!"); +static const u8 sText_TrickRoomEnds[] = _("The twisted dimensions returned to\nnormal!"); +static const u8 sText_WonderRoomEnds[] = _("Wonder Room wore off, and Defense\nand Sp. Def stats returned to normal!"); +static const u8 sText_MagicRoomEnds[] = _("Magic Room wore off, and held items'\neffects returned to normal!"); +static const u8 sText_MudSportEnds[] = _("The effects of Mud Sport have faded."); +static const u8 sText_WaterSportEnds[] = _("The effects of Water Sport have faded."); +static const u8 sText_GravityEnds[] = _("Gravity returned to normal!"); +static const u8 sText_AquaRingHeal[] = _("Aqua Ring restored\n{B_ATK_NAME_WITH_PREFIX}'s HP!"); +static const u8 sText_TargetAbilityRaisedStat[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nraised its {B_BUFF1}!"); +static const u8 sText_TargetAbilityLoweredStat[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nlowered its {B_BUFF1}!"); +static const u8 sText_AttackerAbilityRaisedStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nraised its {B_BUFF1}!"); +static const u8 sText_ScriptingAbilityRaisedStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its {B_BUFF1}!"); +static const u8 sText_AuroraVeilEnds[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nwore off!"); +static const u8 sText_ElectricTerrainEnds[] = _("The electricity disappeared\nfrom the battlefield."); +static const u8 sText_MistyTerrainEnds[] = _("The mist disappeared\nfrom the battlefield."); +static const u8 sText_PsychicTerrainEnds[] = _("The weirdness disappeared\nfrom the battlefield."); +static const u8 sText_GrassyTerrainEnds[] = _("The grass disappeared\nfrom the battlefield."); +static const u8 sText_TargetsStatWasMaxedOut[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} maxed\nits {B_BUFF1}!"); +static const u8 sText_PoisonHealHpUp[] = _("The poisoning healed {B_ATK_NAME_WITH_PREFIX}\na little bit!"); +static const u8 sText_BadDreamsDmg[] = _("{B_DEF_NAME_WITH_PREFIX} is tormented!"); +static const u8 sText_MoldBreakerEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} breaks the mold!"); +static const u8 sText_TeravoltEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na bursting aura!"); +static const u8 sText_TurboblazeEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na blazing aura!"); +static const u8 sText_SlowStartEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can't get it going!"); +static const u8 sText_SlowStartEnd[] = _("{B_ATK_NAME_WITH_PREFIX} finally got\nits act together!"); +static const u8 sText_SolarPowerHpDrop[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\ntakes its toll!"); +static const u8 sText_AftermathDmg[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt!"); +static const u8 sText_AnticipationActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} shuddered\nin anticipation!"); +static const u8 sText_ForewarnActivates[] = _("{B_SCR_ACTIVE_ABILITY} alerted {B_SCR_ACTIVE_NAME_WITH_PREFIX}\nto {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); +static const u8 sText_IceBodyHpGain[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nhealed it a little bit!"); +static const u8 sText_SnowWarningHail[] = _("It started to hail!"); +static const u8 sText_SnowWarningSnow[] = _("It started to snow!"); +static const u8 sText_FriskActivates[] = _("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX} and\nfound its {B_LAST_ITEM}!"); +static const u8 sText_UnnerveEnters[] = _("The opposing team is too nervous\nto eat Berries!"); +static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nits {B_LAST_ITEM}!"); +static const u8 sText_LastAbilityRaisedBuff1[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\nraised its {B_BUFF1}!"); +static const u8 sText_MagicBounceActivates[] = _("The {B_DEF_NAME_WITH_PREFIX} bounced the\n{B_ATK_NAME_WITH_PREFIX} back!"); +static const u8 sText_ProteanTypeChange[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} transformed\nit into the {B_BUFF1} type!"); +static const u8 sText_SymbiosisItemPass[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} passed its {B_LAST_ITEM}\nto {B_ATK_NAME_WITH_PREFIX} through {B_LAST_ABILITY}!"); +static const u8 sText_StealthRockDmg[] = _("Pointed stones dug into\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}!"); +static const u8 sText_ToxicSpikesAbsorbed[] = _("The poison spikes disappeared\nfrom around {B_DEF_TEAM2} team's feet!"); +static const u8 sText_ToxicSpikesPoisoned[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was poisoned!"); +static const u8 sText_StickyWebSwitchIn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was\ncaught in a Sticky Web!"); +static const u8 sText_HealingWishCameTrue[] = _("The healing wish came true\nfor {B_ATK_NAME_WITH_PREFIX}!"); +static const u8 sText_HealingWishHealed[] = _("{B_ATK_NAME_WITH_PREFIX} regained health!"); +static const u8 sText_LunarDanceCameTrue[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin mystical moonlight!"); +static const u8 sText_CursedBodyDisabled[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} was disabled\nby {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}!"); +static const u8 sText_AttackerAquiredAbility[] = _("{B_ATK_NAME_WITH_PREFIX} acquired\n{B_LAST_ABILITY}!"); +static const u8 sText_TargetStatWontGoHigher[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwon't go higher!"); +static const u8 sText_PkmnMoveBouncedViaAbility[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE} was\nbounced back by {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY}!"); +static const u8 sText_ImposterTransform[] = _("{B_ATK_NAME_WITH_PREFIX} transformed into\n{B_DEF_NAME_WITH_PREFIX} using {B_LAST_ABILITY}!"); +static const u8 sText_NotDoneYet[] = _("This move effect is not done yet!\p"); +static const u8 sText_PkmnBlewAwayToxicSpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nToxic Spikes!"); +static const u8 sText_PkmnBlewAwayStickyWeb[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSticky Web!"); +static const u8 sText_PkmnBlewAwayStealthRock[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nStealth Rock!"); +static const u8 sText_SpikesDisappearedFromTeam[] = _("The spikes disappeared from\nthe ground around {B_ATK_TEAM2} team!"); +static const u8 sText_ToxicSpikesDisappearedFromTeam[] = _("The poison spikes disappeared from\nthe ground around {B_ATK_TEAM2} team!"); +static const u8 sText_StealthRockDisappearedFromTeam[] = _("The pointed stones disappeared\nfrom around {B_ATK_TEAM2} team!"); +static const u8 sText_StickyWebDisappearedFromTeam[] = _("The sticky web has disappeared from\nthe ground around {B_ATK_TEAM2} team!"); +static const u8 sText_StickyWebUsed[] = _("A sticky web spreads out on the\nground around {B_DEF_TEAM2} team!"); +static const u8 sText_QuashSuccess[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nmove was postponed!"); +static const u8 sText_IonDelugeOn[] = _("A deluge of ions showers\nthe battlefield!"); +static const u8 sText_TopsyTurvySwitchedStats[] = _("{B_DEF_NAME_WITH_PREFIX}'s stat changes were\nall reversed!"); +static const u8 sText_TerrainBecomesMisty[] = _("Mist swirled about\nthe battlefield!"); +static const u8 sText_TerrainBecomesGrassy[] = _("Grass grew to cover\nthe battlefield!"); +static const u8 sText_TerrainBecomesElectric[] = _("An electric current runs across\nthe battlefield!"); +static const u8 sText_TerrainBecomesPsychic[] = _("The battlefield got weird!"); +static const u8 sText_TargetElectrified[] = _("{B_DEF_NAME_WITH_PREFIX}'s moves\nhave been electrified!"); +static const u8 sText_AssaultVestDoesntAllow[] = _("{B_LAST_ITEM}'s effects prevent\nstatus moves from being used!\p"); +static const u8 sText_GravityPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} can't use {B_CURRENT_MOVE}\nbecause of gravity!\p"); +static const u8 sText_HealBlockPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} was\nprevented from healing!\p"); +static const u8 sText_MegaEvoReacting[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ITEM} is\nreacting to {B_ATK_TRAINER_NAME}'s Mega Ring!"); +static const u8 sText_FerventWishReached[] = _("{B_ATK_TRAINER_NAME}'s fervent wish\nhas reached {B_ATK_NAME_WITH_PREFIX}!"); +static const u8 sText_MegaEvoEvolved[] = _("{B_ATK_NAME_WITH_PREFIX} has Mega Evolved into\nMega {B_BUFF1}!"); +static const u8 sText_drastically[] = _("drastically "); +static const u8 sText_severely[] = _("severely "); +static const u8 sText_Infestation[] = _("{B_DEF_NAME_WITH_PREFIX} has been afflicted\nwith an infestation by {B_ATK_NAME_WITH_PREFIX}!"); +static const u8 sText_NoEffectOnTarget[] = _("It had no effect\non {B_DEF_NAME_WITH_PREFIX}!"); +static const u8 sText_BurstingFlames[] = _("The bursting flames\nhit {B_SCR_ACTIVE_NAME_WITH_PREFIX}!"); +static const u8 sText_BestowItemGiving[] = _("{B_DEF_NAME_WITH_PREFIX} received {B_LAST_ITEM}\nfrom {B_ATK_NAME_WITH_PREFIX}!"); +static const u8 sText_ThirdTypeAdded[] = _("{B_BUFF1} type was added to\n{B_DEF_NAME_WITH_PREFIX}!"); +static const u8 sText_FellForFeint[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe feint!"); +static const u8 sText_PokemonCannotUseMove[] = _("{B_ATK_NAME_WITH_PREFIX} cannot\nuse {B_CURRENT_MOVE}!"); +static const u8 sText_CoveredInPowder[] = _("{B_DEF_NAME_WITH_PREFIX} is covered in powder!"); +static const u8 sText_PowderExplodes[] = _("When the flame touched the powder\non the Pokémon, it exploded!"); +static const u8 sText_BelchCantUse[] = _("Belch cannot be used!\p"); +static const u8 sText_SpectralThiefSteal[] = _("{B_ATK_NAME_WITH_PREFIX} stole the target's\nboosted stats!"); +static const u8 sText_GravityGrounding[] = _("{B_DEF_NAME_WITH_PREFIX} can't stay airborne\nbecause of gravity!"); +static const u8 sText_MistyTerrainPreventsStatus[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith a protective mist!"); +static const u8 sText_GrassyTerrainHeals[] = _("{B_ATK_NAME_WITH_PREFIX} is healed\nby the grassy terrain!"); +static const u8 sText_ElectricTerrainPreventsSleep[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith electrified terrain!"); +static const u8 sText_PsychicTerrainPreventsPriority[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith psychic terrain!"); +static const u8 sText_SafetyGogglesProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is not affected\nthanks to its {B_LAST_ITEM}!"); +static const u8 sText_FlowerVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} surrounded itself\nwith a veil of petals!"); +static const u8 sText_SweetVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} surrounded itself\nwith a veil of sweetness!"); +static const u8 sText_AromaVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is protected\nby an aromatic veil!"); +static const u8 sText_CelebrateMessage[] = _("Congratulations, {B_PLAYER_NAME}!"); +static const u8 sText_UsedInstructedMove[] = _("{B_ATK_NAME_WITH_PREFIX} used the move\ninstructed by {B_BUFF1}!"); +static const u8 sText_LaserFocusMessage[] = _("{B_ATK_NAME_WITH_PREFIX}\nconcentrated intensely!"); +static const u8 sText_GemActivates[] = _("{B_LAST_ITEM} strengthened\n{B_ATK_NAME_WITH_PREFIX}'s power!"); +static const u8 sText_BerryDmgReducing[] = _("{B_LAST_ITEM} weakened the damage\nto {B_DEF_NAME_WITH_PREFIX}!"); +static const u8 sText_TargetAteItem[] = _("{B_DEF_NAME_WITH_PREFIX} ate its {B_LAST_ITEM}!"); +static const u8 sText_AirBalloonFloat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} floats in the air\nwith its {B_LAST_ITEM}!"); +static const u8 sText_AirBalloonPop[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} popped!"); +static const u8 sText_IncinerateBurn[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwas burnt up!"); +static const u8 sText_BugBite[] = _("{B_ATK_NAME_WITH_PREFIX} stole and ate\n{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); +static const u8 sText_IllusionWoreOff[] = _("{B_DEF_NAME_WITH_PREFIX}'s Illusion wore off!"); +static const u8 sText_AttackerCuredTargetStatus[] = _("{B_ATK_NAME_WITH_PREFIX} cured\n{B_DEF_NAME_WITH_PREFIX}'s problem!"); +static const u8 sText_AttackerLostFireType[] = _("{B_ATK_NAME_WITH_PREFIX} burned itself out!"); +static const u8 sText_HealerCure[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\ncured {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s problem!"); +static const u8 sText_ReceiverAbilityTakeOver[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nwas taken over!"); +static const u8 sText_PkmnAbsorbingPower[] = _("{B_ATK_NAME_WITH_PREFIX} is absorbing power!"); +static const u8 sText_NoOneWillBeAbleToRun[] = _("No one will be able to run away\nduring the next turn!"); +static const u8 sText_DestinyKnotActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} fell in love\nfrom the {B_LAST_ITEM}!"); +static const u8 sText_CloakedInAFreezingLight[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin a freezing light!"); +static const u8 sText_ClearAmuletWontLowerStats[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} prevents\nits stats from being lowered!"); +static const u8 sText_AuraFlaredToLife[] = _("{B_DEF_NAME_WITH_PREFIX}'s aura flared to life!"); +static const u8 sText_AirLockActivates[] = _("The effects of weather\ndisappeared."); +static const u8 sText_PressureActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is exerting its\npressure!"); +static const u8 sText_DarkAuraActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na dark aura!"); +static const u8 sText_FairyAuraActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na fairy aura!"); +static const u8 sText_AuraBreakActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} reversed all\nother Pokémon's auras!"); +static const u8 sText_ComatoseActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is drowsing!"); +static const u8 sText_ScreenCleanerActivates[] = _("All screens on the field were\ncleansed!"); +static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} found\na {B_LAST_ITEM}!"); +static const u8 sText_BattlerAbilityRaisedStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its {B_BUFF1}!"); +static const u8 sText_ASandstormKickedUp[] = _("A sandstorm kicked up!"); +static const u8 sText_PkmnsWillPerishIn3Turns[] = _("Both Pokémon will perish\nin three turns!"); +static const u8 sText_AbilityRaisedStatDrastically[] = _("{B_DEF_ABILITY} raised {B_DEF_NAME_WITH_PREFIX}'s\n{B_BUFF1} drastically!"); +static const u8 sText_AsOneEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} has two Abilities!"); +static const u8 sText_CuriousMedicineEnters[] = _("{B_EFF_NAME_WITH_PREFIX}'s\nstat changes were reset!"); +static const u8 sText_CanActFaster[] = _("{B_ATK_NAME_WITH_PREFIX} can act faster,\nthanks to {B_BUFF1}!"); +static const u8 sText_MicleBerryActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted the accuracy of its\nnext move using {B_LAST_ITEM}!"); +static const u8 sText_PkmnShookOffTheTaunt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} shook off\nthe taunt!"); +static const u8 sText_PkmnGotOverItsInfatuation[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} got over\nits infatuation!"); +static const u8 sText_ZPowerSurrounds[] = _("{B_ATK_NAME_WITH_PREFIX} surrounds\nitself with its Z-Power!"); +static const u8 sText_ZPowerUnleashed[] = _("{B_ATK_NAME_WITH_PREFIX} unleashes\nits full-force Z-Move!"); +static const u8 sText_ZMoveResetsStats[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} returned its\ndecreased stats to normal using\lits Z-Power!"); +static const u8 sText_ZMoveAllStatsUp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted all\nof its stats using its Z-Power!"); +static const u8 sText_ZMoveBoostCrit[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted its\ncritical-hit ratio using its Z-Power!"); +static const u8 sText_ZMoveRestoreHp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} restored its\nHP using its Z-Power!"); +static const u8 sText_ZMoveStatUp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted\nits stats using its Z-Power!"); +static const u8 sText_ZMoveHpSwitchInTrap[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s HP was restored by the Z-Power!"); +static const u8 sText_TerrainReturnedToNormal[] = _("The terrain returned to\nnormal!"); +static const u8 sText_ItemCannotBeRemoved[] = _("{B_ATK_NAME_WITH_PREFIX}'s item cannot be removed!"); +static const u8 sText_StickyBarbTransfer[] = _("The {B_LAST_ITEM} attached itself to\n{B_ATK_NAME_WITH_PREFIX}!"); +static const u8 sText_PkmnBurnHealed[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nburn was healed."); +static const u8 sText_RedCardActivate[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} held up its {B_LAST_ITEM}\nagainst {B_ATK_NAME_WITH_PREFIX}!"); +static const u8 sText_EjectButtonActivate[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is switched\nout with the {B_LAST_ITEM}!"); +static const u8 sText_AttackerGotOverInfatuation[] =_("{B_ATK_NAME_WITH_PREFIX} got over\nits infatuation!"); +static const u8 sText_TormentedNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is\ntormented no more!"); +static const u8 sText_HealBlockedNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is cured of\nits heal block!"); +static const u8 sText_AttackerBecameFullyCharged[] = _("{B_ATK_NAME_WITH_PREFIX} became fully charged\ndue to its bond with its trainer!\p"); +static const u8 sText_AttackerBecameAshSpecies[] = _("{B_ATK_NAME_WITH_PREFIX} became Ash-{B_BUFF1}!\p"); +static const u8 sText_ExtremelyHarshSunlight[] = _("The sunlight turned\nextremely harsh!"); +static const u8 sText_ExtremeSunlightFaded[] = _("The extreme sunlight faded.{PAUSE 64}"); +static const u8 sText_MoveEvaporatedInTheHarshSunlight[] = _("The Water-type attack evaporated\nin the harsh sunlight!"); +static const u8 sText_ExtremelyHarshSunlightWasNotLessened[] = _("The extremely harsh sunlight\nwas not lessened at all!"); +static const u8 sText_HeavyRain[] = _("A heavy rain began to fall!"); +static const u8 sText_HeavyRainLifted[] = _("The heavy rain has lifted!{PAUSE 64}"); +static const u8 sText_MoveFizzledOutInTheHeavyRain[] = _("The Fire-type attack fizzled out\nin the heavy rain!"); +static const u8 sText_NoReliefFromHeavyRain[] = _("There is no relief from\nthis heavy rain!"); +static const u8 sText_MysteriousAirCurrent[] = _("A mysterious air current is\nprotecting Flying-type Pokémon!"); +static const u8 sText_StrongWindsDissipated[] = _("The mysterious strong winds\nhave dissipated!{PAUSE 64}"); +static const u8 sText_MysteriousAirCurrentBlowsOn[] = _("The mysterious air current\nblows on regardless!"); +static const u8 sText_AttackWeakenedByStrongWinds[] = _("The mysterious strong winds\nweakened the attack!"); +static const u8 sText_StuffCheeksCantSelect[] = _("Stuff Cheeks cannot be\nselected without a Berry!\p"); +static const u8 sText_PkmnRevertedToPrimal[] = _("{B_ATK_NAME_WITH_PREFIX}'s Primal Reversion!\nIt reverted to its primal form!"); +static const u8 sText_ButPokemonCantUseTheMove[] = _("But {B_ATK_NAME_WITH_PREFIX} can't\nuse the move!"); +static const u8 sText_ButHoopaCantUseIt[] = _("But Hoopa can't use it\nthe way it is now!"); +static const u8 sText_BrokeThroughProtection[] = _("It broke through\n{B_DEF_NAME_WITH_PREFIX}'s protection!"); +static const u8 sText_AbilityAllowsOnlyMove[] = _("{B_ATK_ABILITY} allows the\nuse of only {B_CURRENT_MOVE}!\p"); +static const u8 sText_SwappedAbilities[] = _("{B_DEF_NAME_WITH_PREFIX} swapped Abilities\nwith its target!"); +static const u8 sText_PastelVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is protected\nby a pastel veil!"); +static const u8 sText_PastelVeilEnters[] = _("{B_DEF_NAME_WITH_PREFIX} was cured\nof its poisoning!"); +static const u8 sText_BattlerTypeChangedTo[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s type\nchanged to {B_BUFF1}!"); +static const u8 sText_BothCanNoLongerEscape[] = _("Neither Pokémon can run away!"); +static const u8 sText_CantEscapeDueToUsedMove[] = _("{B_ATK_NAME_WITH_PREFIX} can no longer escape\nbecause it used {B_CURRENT_MOVE}!"); +static const u8 sText_PkmnBecameWeakerToFire[] = _("{B_DEF_NAME_WITH_PREFIX} became\nweaker to fire!"); +static const u8 sText_PkmnAboutToBeAttackedByItsItem[] = _("{B_DEF_NAME_WITH_PREFIX} is about\nto be attacked by its {B_BUFF1}!"); +static const u8 sText_CantEscapeBecauseOfCurrentMove[] = _("{B_DEF_NAME_WITH_PREFIX} can no longer escape\nbecause of {B_CURRENT_MOVE}!"); +static const u8 sText_NeutralizingGasEnters[] = _("Neutralizing Gas filled the area!"); +static const u8 sText_NeutralizingGasOver[] = _("The effects of Neutralizing\nGas wore off!"); +static const u8 sText_PkmnTookTargetHigh[] = _("{B_ATK_NAME_WITH_PREFIX} took {B_DEF_NAME_WITH_PREFIX}\ninto the air!"); +static const u8 sText_TargetTooHeavy[] = _("But the target\nwas too heavy!"); +static const u8 sText_MeteorBeamCharging[] = _("{B_ATK_NAME_WITH_PREFIX} is overflowing\nwith space energy!"); +static const u8 sText_HeatingUpBeak[] = _("{B_ATK_NAME_WITH_PREFIX} started\nheating up its beak!"); +static const u8 sText_CourtChange[] = _("{B_ATK_NAME_WITH_PREFIX} swapped the battle\neffects affecting each side!"); +static const u8 sText_AttackerExpelledThePoison[] = _("{B_ATK_NAME_WITH_PREFIX} managed to\nexpel the poison!"); +static const u8 sText_AttackerShookItselfAwake[] = _("{B_ATK_NAME_WITH_PREFIX} shook itself awake!"); +static const u8 sText_AttackerBrokeThroughParalysis[] = _("{B_ATK_NAME_WITH_PREFIX} gathered all its energy\nto overcome its paralysis!"); +static const u8 sText_AttackerHealedItsBurn[] = _("{B_ATK_NAME_WITH_PREFIX} healed its burn with\nits sheer determination!"); +static const u8 sText_AttackerHealedItsFrostbite[] = _("{B_ATK_NAME_WITH_PREFIX} healed its frostbite with\nits sheer determination!"); //not used, "melted the ice" is used instead in PLA +static const u8 sText_AttackerMeltedTheIce[] = _("{B_ATK_NAME_WITH_PREFIX} melted the ice with\nits fiery determination!"); +static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!"); +static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} used up all\nof its electricity!"); +static const u8 sText_AttackerSwitchedStatWithTarget[] = _("{B_ATK_NAME_WITH_PREFIX} switched {B_BUFF1}\nwith its target!"); +static const u8 sText_BeingHitChargedPkmnWithPower[] = _("Being hit by {B_CURRENT_MOVE}\ncharged {B_DEF_NAME_WITH_PREFIX} with power!"); +static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); +static const u8 sText_StatWasHeightened[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!"); +static const u8 sText_ElectricTerrainActivatedAbility[] = _("The Electric Terrain activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); +static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nweakened the {B_BUFF1} of\lall surrounding Pokémon!\p"); +static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!"); +static const u8 sText_PrepareShellTrap[] = _("{B_ATK_NAME_WITH_PREFIX} set a shell trap!"); +static const u8 sText_ShellTrapDidntWork[] = _("{B_ATK_NAME_WITH_PREFIX}'s shell trap didn't work!"); +static const u8 sText_SharpSteelFloats[] = _("Sharp-pointed steel floats\naround {B_DEF_TEAM2} team!"); +static const u8 sText_SharpSteelDmg[] = _("Sharp steel bit into {B_DEF_NAME_WITH_PREFIX}!"); +static const u8 sText_PkmnBlewAwaySharpSteel[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nsharp steel!"); +static const u8 sText_SharpSteelDisappearedFromTeam[] = _("The sharp steel disappeared from\nthe ground around {B_ATK_TEAM2} team!"); +static const u8 sText_TeamTrappedWithVines[] = _("{B_DEF_TEAM1} team got trapped\nwith vines!"); +static const u8 sText_PkmnHurtByVines[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nG-Max Vine Lash's ferocious beating!"); +static const u8 sText_TeamCaughtInVortex[] = _("{B_DEF_TEAM1} team got caught\nin a vortex of water!"); +static const u8 sText_PkmnHurtByVortex[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nG-Max Cannonade's vortex!"); +static const u8 sText_TeamSurroundedByFire[] = _("{B_DEF_TEAM1} team was surrounded\nby flames!"); +static const u8 sText_PkmnBurningUp[] = _("{B_ATK_NAME_WITH_PREFIX} is burning up\nwithin G-Max Wildfire's flames!"); +static const u8 sText_TeamSurroundedByRocks[] = _("{B_DEF_TEAM1} team was surrounded\nby rocks!"); +static const u8 sText_PkmnHurtByRocksThrown[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nrocks thrown out by G-Max Volcalith!"); +static const u8 sText_CouldntFullyProtect[] = _("{B_DEF_NAME_WITH_PREFIX} couldn't fully protect\nitself and got hurt!"); +static const u8 sText_StockpiledEffectWoreOff[] = _("{B_ATK_NAME_WITH_PREFIX}'s stockpiled\neffect wore off!"); +static const u8 sText_MoveBlockedByDynamax[] = _("The move was blocked by\nthe power of Dynamax!"); +static const u8 sText_PkmnRevivedReadyToFight[] = _("{B_BUFF1} was revived and\nis ready to fight again!"); +static const u8 sText_ItemRestoredSpeciesHealth[] = _("{B_BUFF1} had its\nHP restored!"); +static const u8 sText_ItemCuredSpeciesStatus[] = _("{B_BUFF1} had\nits status healed!"); +static const u8 sText_ItemRestoredSpeciesPP[] = _("{B_BUFF1} had its\nPP restored!"); +static const u8 sText_AtkTrappedDef[] = _("{B_ATK_NAME_WITH_PREFIX} trapped\nthe {B_DEF_NAME_WITH_PREFIX}!"); +static const u8 sText_MirrorHerbCopied[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used its {B_LAST_ITEM}\nto mirror its opponent's stat changes!"); +static const u8 sText_PkmnItemMelted[] = _("{B_ATK_NAME_WITH_PREFIX} corroded\n{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); +static const u8 sText_UltraBurstReacting[] = _("Bright light is about to\nburst out of {B_ATK_NAME_WITH_PREFIX}!"); +static const u8 sText_UltraBurstCompleted[] = _("{B_ATK_NAME_WITH_PREFIX} regained its\ntrue power through Ultra Burst!"); +static const u8 sText_TeamGainedEXP[] = _("The rest of your team gained EXP.\nPoints thanks to the {B_LAST_ITEM}!\p"); +static const u8 sText_CurrentMoveCantSelect[] = _("{B_BUFF1} cannot be used!\p"); +static const u8 sText_TargetIsBeingSaltCured[] = _("{B_DEF_NAME_WITH_PREFIX} is being salt cured!"); +static const u8 sText_TargetIsHurtBySaltCure[] = _("{B_DEF_NAME_WITH_PREFIX} is hurt by {B_BUFF1}!"); +static const u8 sText_OpportunistCopied[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} copied its\nopponent's stat changes!"); +static const u8 sText_TargetCoveredInStickyCandySyrup[] = _("{B_DEF_NAME_WITH_PREFIX} got covered\nin sticky syrup!"); +static const u8 sText_PkmnTellChillingReceptionJoke[] = _("{B_ATK_NAME_WITH_PREFIX} is preparing to tell a\nchillingly bad joke!"); +static const u8 sText_ZeroToHeroTransformation[] = _("{B_ATK_NAME_WITH_PREFIX} underwent a heroic\ntransformation!"); +static const u8 sText_TheTwoMovesBecomeOne[] = _("The two moves become one!\nIt's a combined move!{PAUSE 16}"); +static const u8 sText_ARainbowAppearedOnSide[] = _("A rainbow appeared in the sky\non {B_ATK_TEAM2} team's side!"); +static const u8 sText_TheRainbowDisappeared[] = _("The rainbow on {B_ATK_TEAM2}\nside disappeared!"); +static const u8 sText_WaitingForPartnersMove[] = _("{B_ATK_NAME_WITH_PREFIX} is waiting\nfor {B_ATK_PARTNER_NAME}'s move…{PAUSE 16}"); +static const u8 sText_SeaOfFireEnvelopedSide[] = _("A sea of fire enveloped\n{B_DEF_TEAM2} team!"); +static const u8 sText_HurtByTheSeaOfFire[] = _("{B_ATK_TEAM1} {B_ATK_NAME_WITH_PREFIX} was hurt\nby the sea of fire!"); +static const u8 sText_TheSeaOfFireDisappeared[] = _("The sea of fire around {B_ATK_TEAM2}\nteam disappeared!"); +static const u8 sText_SwampEnvelopedSide[] = _("A swamp enveloped\n{B_DEF_TEAM2} team!"); +static const u8 sText_TheSwampDisappeared[] = _("The swamp around {B_ATK_TEAM2}\nteam disappeared!"); +static const u8 sText_HospitalityRestoration[] = _("{B_ATK_PARTNER_NAME} drank down all the\nmatcha that {B_ATK_NAME_WITH_PREFIX} made!"); +static const u8 sText_ElectroShotCharging[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nelectricity!"); +static const u8 sText_ItemWasUsedUp[] = _("The {B_LAST_ITEM}\nwas used up..."); +static const u8 sText_AttackerLostItsType[] = _("{B_ATK_NAME_WITH_PREFIX} lost\nits {B_BUFF1} type!"); +static const u8 sText_ShedItsTail[] = _("{B_ATK_NAME_WITH_PREFIX} shed its tail\nto create a decoy!"); +static const u8 sText_SupersweetAromaWafts[] = _("A supersweet aroma is wafting from\nthe syrup covering {B_ATK_NAME_WITH_PREFIX}!"); +static const u8 sText_TidyingUpComplete[] = _("Tidying up complete!"); +const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); +const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{WAIT_SE}\p"); +const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p"); +const u8 gText_EllipsisQuestionMark[] = _("……?\p"); +const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_BUFF1} do?"); +const u8 gText_WhatWillPkmnDo2[] = _("What will\n{B_PLAYER_NAME} do?"); +const u8 gText_WhatWillWallyDo[] = _("What will\nWALLY do?"); +const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…"); +const u8 gText_BattleMenu[] = _("FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN"); +const u8 gText_SafariZoneMenu[] = _("BALL{CLEAR_TO 56}{POKEBLOCK}\nGO NEAR{CLEAR_TO 56}RUN"); +const u8 gText_MoveInterfacePP[] = _("PP "); +const u8 gText_MoveInterfaceType[] = _("TYPE/"); +const u8 gText_MoveInterfacePpType[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}PP\nTYPE/"); +const u8 gText_MoveInterfaceDynamicColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}"); +const u8 gText_WhichMoveToForget4[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Which move should\nbe forgotten?"); +const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Yes\nNo"); +const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Switch\nwhich?"); +const u8 gText_BattleSwitchWhich2[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}"); +const u8 gText_BattleSwitchWhich3[] = _("{UP_ARROW}"); +const u8 gText_BattleSwitchWhich4[] = _("{ESCAPE 4}"); +const u8 gText_BattleSwitchWhich5[] = _("-"); +const u8 gText_SafariBalls[] = _("{HIGHLIGHT DARK_GRAY}SAFARI BALLS"); +const u8 gText_SafariBallLeft[] = _("{HIGHLIGHT DARK_GRAY}Left: $" "{HIGHLIGHT DARK_GRAY}"); +const u8 gText_Sleep[] = _("sleep"); +const u8 gText_Poison[] = _("poison"); +const u8 gText_Burn[] = _("burn"); +const u8 gText_Paralysis[] = _("paralysis"); +const u8 gText_Ice[] = _("ice"); +const u8 gText_Confusion[] = _("confusion"); +const u8 gText_Love[] = _("love"); +const u8 gText_SpaceAndSpace[] = _(" and "); +const u8 gText_CommaSpace[] = _(", "); +const u8 gText_Space2[] = _(" "); +const u8 gText_LineBreak[] = _("\l"); +const u8 gText_NewLine[] = _("\n"); +const u8 gText_Are[] = _("are"); +const u8 gText_Are2[] = _("are"); +const u8 gText_BadEgg[] = _("Bad EGG"); +const u8 gText_BattleWallyName[] = _("WALLY"); +const u8 gText_Win[] = _("{HIGHLIGHT TRANSPARENT}Win"); +const u8 gText_Loss[] = _("{HIGHLIGHT TRANSPARENT}Loss"); +const u8 gText_Draw[] = _("{HIGHLIGHT TRANSPARENT}Draw"); +static const u8 sText_SpaceIs[] = _(" is"); +static const u8 sText_ApostropheS[] = _("'s"); +const u8 gText_BattleTourney[] = _("BATTLE TOURNEY"); +static const u8 sText_Round1[] = _("Round 1"); +static const u8 sText_Round2[] = _("Round 2"); +static const u8 sText_Semifinal[] = _("Semifinal"); +static const u8 sText_Final[] = _("Final"); +const u8 gText_TheGreatNewHope[] = _("The great new hope!\p"); +const u8 gText_WillChampionshipDreamComeTrue[] = _("Will the championship dream come true?!\p"); +const u8 gText_AFormerChampion[] = _("A former CHAMPION!\p"); +const u8 gText_ThePreviousChampion[] = _("The previous CHAMPION!\p"); +const u8 gText_TheUnbeatenChampion[] = _("The unbeaten CHAMPION!\p"); +const u8 gText_PlayerMon1Name[] = _("{B_PLAYER_MON1_NAME}"); +const u8 gText_Vs[] = _("VS"); +const u8 gText_OpponentMon1Name[] = _("{B_OPPONENT_MON1_NAME}"); +const u8 gText_Mind[] = _("Mind"); +const u8 gText_Skill[] = _("Skill"); +const u8 gText_Body[] = _("Body"); +const u8 gText_Judgment[] = _("{B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2}"); +static const u8 sText_TwoTrainersSentPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!\p{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_OPPONENT_MON2_NAME}!"); +static const u8 sText_Trainer2SentOutPkmn[] = _("{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_BUFF1}!"); +static const u8 sText_TwoTrainersWantToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwant to battle!\p"); +static const u8 sText_InGamePartnerSentOutZGoN[] = _("{B_PARTNER_CLASS} {B_PARTNER_NAME} sent\nout {B_PLAYER_MON2_NAME}!\lGo, {B_PLAYER_MON1_NAME}!"); +static const u8 sText_TwoInGameTrainersDefeated[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwere defeated!\p"); +static const u8 sText_Trainer2LoseText[] = _("{B_TRAINER2_LOSE_TEXT}"); +static const u8 sText_PkmnIncapableOfPower[] = _("{B_ATK_NAME_WITH_PREFIX} appears incapable\nof using its power!"); +static const u8 sText_GlintAppearsInEye[] = _("A glint appears in\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s eyes!"); +static const u8 sText_PkmnGettingIntoPosition[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is getting into\nposition!"); +static const u8 sText_PkmnBeganGrowlingDeeply[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} began growling deeply!"); +static const u8 sText_PkmnEagerForMore[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is eager for more!"); +static const u8 sText_RefIfNothingIsDecided[] = _("REFEREE: If nothing is decided in\n3 turns, we will go to judging!"); +static const u8 sText_RefThatsIt[] = _("REFEREE: That's it! We will now go to\njudging to determine the winner!"); +static const u8 sText_RefJudgeMind[] = _("REFEREE: Judging category 1, Mind!\nThe POKéMON showing the most guts!\p"); +static const u8 sText_RefJudgeSkill[] = _("REFEREE: Judging category 2, Skill!\nThe POKéMON using moves the best!\p"); +static const u8 sText_RefJudgeBody[] = _("REFEREE: Judging category 3, Body!\nThe POKéMON with the most vitality!\p"); +static const u8 sText_RefPlayerWon[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_PLAYER_NAME}'s {B_PLAYER_MON1_NAME}!\p"); +static const u8 sText_RefOpponentWon[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_TRAINER1_NAME}'s {B_OPPONENT_MON1_NAME}!\p"); +static const u8 sText_RefDraw[] = _("REFEREE: Judgment: 3 to 3!\nWe have a draw!\p"); +static const u8 sText_DefeatedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} defeated the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE's decision!"); +static const u8 sText_LostToOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} lost to the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE's decision!"); +static const u8 sText_TiedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} tied the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE's decision!"); +static const u8 sText_RefCommenceBattle[] = _("REFEREE: {B_PLAYER_MON1_NAME} VS {B_OPPONENT_MON1_NAME}!\nCommence battling!"); +static const u8 sText_QuestionForfeitMatch[] = _("Would you like to forfeit the match\nand quit now?"); +static const u8 sText_ForfeitedMatch[] = _("{B_PLAYER_NAME} forfeited the match!"); +static const u8 sText_Trainer1WinText[] = _("{B_TRAINER1_WIN_TEXT}"); +static const u8 sText_Trainer2WinText[] = _("{B_TRAINER2_WIN_TEXT}"); +static const u8 sText_Trainer1Fled[] = _( "{PLAY_SE SE_FLEE}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); +static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); +static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); +const u8 gText_RecordBattleToPass[] = _("Would you like to record your battle\non your FRONTIER PASS?"); +const u8 gText_BattleRecordedOnPass[] = _("{B_PLAYER_NAME}'s battle result was recorded\non the FRONTIER PASS."); +static const u8 sText_LinkTrainerWantsToBattlePause[] = _("{B_LINK_OPPONENT1_NAME}\nwants to battle!{PAUSE 49}"); +static const u8 sText_TwoLinkTrainersWantToBattlePause[] = _("{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\nwant to battle!{PAUSE 49}"); +static const u8 sText_Your1[] = _("Your"); +static const u8 sText_Opposing1[] = _("The opposing"); +static const u8 sText_Your2[] = _("your"); +static const u8 sText_Opposing2[] = _("the opposing"); +static const u8 sText_EmptyStatus[] = _("$$$$$$$"); +static const u8 sText_Empty1[] = _(""); +static const u8 sText_Trainer1RecallPkmn1[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME}, come back!"); +static const u8 sText_Trainer1RecallPkmn2[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON2_NAME}, come back!"); +static const u8 sText_Trainer1RecallBoth[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME}, come back!"); +static const u8 sText_PlayerPanicked[] = _("{B_PLAYER_NAME} panicked and lost ¥{B_BUFF1}…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); +static const u8 sText_PlayerWhiteoutAgainstTrainer[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\pPlayer lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!{PAUSE_UNTIL_PRESS}"); +static const u8 sText_PlayerPaidAsPrizeMoney[] = _("{B_PLAYER_NAME} paid ¥{B_BUFF1} as the prize\nmoney…\p… … … …\p{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}"); +static const u8 sText_PkmnPickedUpItem[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p"); +static const u8 sText_TooScaredToMove[] = _("{B_ATK_NAME_WITH_PREFIX} is too scared to move!"); +static const u8 sText_GetOutGetOut[] = _("GHOST: Get out…… Get out……"); +static const u8 sText_ThrewARock[] = _("{B_PLAYER_NAME} threw a ROCK\nat the {B_OPPONENT_MON1_NAME}!"); +static const u8 sText_ThrewSomeBait[] = _("{B_PLAYER_NAME} threw some BAIT\nat the {B_OPPONENT_MON1_NAME}!"); +static const u8 sText_PkmnIsAngry[] = _("{B_OPPONENT_MON1_NAME} is angry!"); +static const u8 sText_PkmnIsEating[] = _("{B_OPPONENT_MON1_NAME} is eating!"); +static const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); +static const u8 sText_GhostAppearedCantId[] = _("The GHOST appeared!\pDarn!\nThe GHOST can't be ID'd!\p"); +static const u8 sText_TheGhostAppeared[] = _("The GHOST appeared!\p"); +static const u8 sText_SilphScopeUnveil[] = _("SILPH SCOPE unveiled the GHOST's\nidentity!"); +static const u8 sText_TheGhostWas[] = _("The GHOST was MAROWAK!\p\n"); static const u8 sText_HP2[] = _("HP"); static const u8 sText_Attack2[] = _("ATTACK"); static const u8 sText_Defense2[] = _("DEFENSE"); -static const u8 sText_Speed[] = _("SPEED"); static const u8 sText_SpAtk2[] = _("SP. ATK"); static const u8 sText_SpDef2[] = _("SP. DEF"); -static const u8 sText_Accuracy[] = _("accuracy"); -static const u8 sText_Evasiveness[] = _("evasiveness"); +static const u8 sText_OldManUsedItem[] = _("The old man used\n{B_LAST_ITEM}!"); +static const u8 sText_PokedudeUsedItem[] = _("The POKé DUDE used\n{B_LAST_ITEM}!"); +static const u8 sText_ItDodgedBall2[] = _("よけられた!\nこいつは つかまりそうにないぞ!"); // Unused version of the Marowak ghost dodging text +static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}\p"); +static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}{PAUSE 127}"); +static const u8 sText_Bills[] = _("BILL's"); +static const u8 sText_Enigma[] = _("ナゾ"); +static const u8 sText_PlayedFluteCatchyTune[] = _("{B_PLAYER_NAME} played the {B_LAST_ITEM}.\pNow, that's a catchy tune!"); +static const u8 sText_PlayedThe[] = _("{B_PLAYER_NAME} played the\n{B_LAST_ITEM}."); +static const u8 sText_PkmnHearingFluteAwoke[] = _("The POKéMON hearing the FLUTE\nawoke!"); +const u8 gText_ForPetesSake[] = _("OAK: Oh, for Pete's sake…\nSo pushy, as always.\p{B_PLAYER_NAME}.\pYou've never had a POKéMON battle\nbefore, have you?\pA POKéMON battle is when TRAINERS\npit their POKéMON against each\lother.\p"); +const u8 gText_TheTrainerThat[] = _("The TRAINER that makes the other\nTRAINER's POKéMON faint by lowering\ltheir HP to “0,” wins.\p"); +const u8 gText_TryBattling[] = _("But rather than talking about it,\nyou'll learn more from experience.\pTry battling and see for yourself.\p"); +const u8 gText_InflictingDamageIsKey[] = _("OAK: Inflicting damage on the foe\nis the key to any battle.\p"); +const u8 gText_LoweringStats[] = _("OAK: Lowering the foe's stats\nwill put you at an advantage.\p"); +const u8 gText_KeepAnEyeOnHP[] = _("OAK: Keep your eyes on your\nPOKéMON's HP.\pIt will faint if the HP drops to\n“0.”\p"); +const u8 gText_OakNoRunningFromATrainer[] = _("OAK: No! There's no running away\nfrom a TRAINER POKéMON battle!\p"); +const u8 gText_WinEarnsPrizeMoney[] = _("OAK: Hm! Excellent!\pIf you win, you earn prize money,\nand your POKéMON will grow!\pBattle other TRAINERS and make\nyour POKéMON strong!\p"); +const u8 gText_HowDissapointing[] = _("OAK: Hm…\nHow disappointing…\pIf you win, you earn prize money,\nand your POKéMON grow.\pBut if you lose, {B_PLAYER_NAME}, you end\nup paying prize money…\pHowever, since you had no warning\nthis time, I'll pay for you.\pBut things won't be this way once\nyou step outside these doors.\pThat's why you must strengthen your\nPOKéMON by battling wild POKéMON.\p"); +const u8 gText_WhatWillPlayerThrow[] = _("What will {B_PLAYER_NAME}\nthrow?"); +const u8 gText_WhatWillOldManDo[] = _("What will the\nold man do?"); +const u8 gText_WhichMoveToForget_Unused[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}どの わざを\nわすれさせたい?"); +static const u8 sText_UnusedColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); +static const u8 sText_RightArrow2[] = _("{RIGHT_ARROW_2}"); +static const u8 sText_Plus[] = _("{PLUS}"); +static const u8 sText_Dash[] = _("-"); +static const u8 sText_MaxHP[] = _("{FONT_SMALL}Max{FONT_NORMAL} HP"); +static const u8 sText_SpAtk[] = _("SP. ATK"); +static const u8 sText_SpDef[] = _("SP. DEF"); +const u8 gText_HighlightRed_Left[] = _("{HIGHLIGHT 2}Left: "); +const u8 gText_HighlightRed[] = _("{HIGHLIGHT 2}"); +const u8 gText_BattleTowerBan_Space[] = _(" "); +const u8 gText_BattleTowerBan_Newline1[] = _("\n"); +const u8 gText_BattleTowerBan_Newline2[] = _("\n"); +const u8 gText_BattleTowerBan_Is1[] = _(" is"); +const u8 gText_BattleTowerBan_Is2[] = _(" is"); +const u8 gText_ANormalMove[] = _("a NORMAL move"); +const u8 gText_AFightingMove[] = _("a FIGHTING move"); +const u8 gText_AFlyingMove[] = _("a FLYING move"); +const u8 gText_APoisonMove[] = _("a POISON move"); +const u8 gText_AGroundMove[] = _("a GROUND move"); +const u8 gText_ARockMove[] = _("a ROCK move"); +const u8 gText_ABugMove[] = _("a BUG move"); +const u8 gText_AGhostMove[] = _("a GHOST move"); +const u8 gText_ASteelMove[] = _("a STEEL move"); +const u8 gText_AMysteryMove[] = _("a ??? move"); +const u8 gText_AFireMove[] = _("a FIRE move"); +const u8 gText_AWaterMove[] = _("a WATER move"); +const u8 gText_AGrassMove[] = _("a GRASS move"); +const u8 gText_AnElectricMove[] = _("an ELECTRIC move"); +const u8 gText_APsychicMove[] = _("a PSYCHIC move"); +const u8 gText_AnIceMove[] = _("an ICE move"); +const u8 gText_ADragonMove[] = _("a DRAGON move"); +const u8 gText_ADarkMove[] = _("a DARK move"); +const u8 gText_AFairyMove[] = _("a FAIRY move"); +const u8 gText_TimeBoard[] = _("TIME BOARD"); +const u8 gText_ClearTime[] = _("CLEAR TIME"); // Unused +const u8 gText_XMinYZSec[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC."); +const u8 gText_Unused_1F[] = _("1F"); +const u8 gText_Unused_2F[] = _("2F"); +const u8 gText_Unused_3F[] = _("3F"); +const u8 gText_Unused_4F[] = _("4F"); +const u8 gText_Unused_5F[] = _("5F"); +const u8 gText_Unused_6F[] = _("6F"); +const u8 gText_Unused_7F[] = _("7F"); +const u8 gText_Unused_8F[] = _("8F"); + +// merged end const u8 *const gStatNamesTable[] = { sText_HP2, @@ -445,12 +993,6 @@ const u8 *const gStatNamesTable[] = { sText_Evasiveness }; -static const u8 sText_PokeblockWasTooSpicy[] = _("was too spicy!"); // -static const u8 sText_PokeblockWasTooDry[] = _("was too dry!"); -static const u8 sText_PokeblockWasTooSweet[] = _("was too sweet!"); -static const u8 sText_PokeblockWasTooBitter[] = _("was too bitter!"); -static const u8 sText_PokeblockWasTooSour[] = _("was too sour!"); - const u8 *const gPokeblockWasTooXStringTable[] = { sText_PokeblockWasTooSpicy, sText_PokeblockWasTooDry, @@ -459,811 +1001,727 @@ const u8 *const gPokeblockWasTooXStringTable[] = { sText_PokeblockWasTooSour }; -static const u8 sText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!"); -static const u8 sText_OldManUsedItem[] = _("The old man used\n{B_LAST_ITEM}!"); -static const u8 sText_PokedudeUsedItem[] = _("The POKé DUDE used\n{B_LAST_ITEM}!"); -static const u8 sText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!"); -static const u8 sText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!"); -static const u8 sText_DontBeAThief[] = _("Don't be a thief!"); -static const u8 sText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can't be caught!"); -static const u8 sText_YouMissedPkmn[] = _("You missed the POKéMON!"); -static const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); -static const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); -static const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); -static const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); -static const u8 sText_ItDodgedBall2[] = _("よけられた!\nこいつは つかまりそうにないぞ!"); // Unused version of the Marowak ghost dodging text -static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}\p"); -static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}{PAUSE 127}"); -static const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?"); -static const u8 sText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC."); -static const u8 sText_Someones[] = _("someone's"); -static const u8 sText_Bills[] = _("BILL's"); -static const u8 sText_PkmnDataAddedToDex[] = _("{B_OPPONENT_MON1_NAME}'s data was\nadded to the POKéDEX.\p"); -static const u8 sText_ItIsRaining[] = _("It is raining."); // used only in RSE when a battle starts in a rainy area -static const u8 sText_SandstormIsRaging[] = _("A sandstorm is raging."); -static const u8 sText_BoxIsFull[] = _("The BOX is full!\nYou can't catch any more!\p"); -static const u8 sText_EnigmaBerry[] = _("ENIGMA BERRY"); -static const u8 sText_BerrySuffix[] = _(" BERRY"); -static const u8 sText_Enigma[] = _("ナゾ"); -static const u8 sText_PkmnsItemCuredParalysis[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured paralysis!"); -static const u8 sText_PkmnsItemCuredPoison[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured poison!"); -static const u8 sText_PkmnsItemHealedBurn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its burn!"); -static const u8 sText_PkmnsItemDefrostedIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ndefrosted it!"); -static const u8 sText_PkmnsItemWokeIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwoke it from its sleep!"); -static const u8 sText_PkmnsItemSnappedOut[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nsnapped it out of confusion!"); -static const u8 sText_PkmnsItemCuredProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!"); -static const u8 sText_PkmnsItemNormalizedStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nnormalized its status!"); -static const u8 sText_PkmnsItemRestoredHealth[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored health!"); -static const u8 sText_PkmnsItemRestoredPP[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored {B_BUFF1}'s PP!"); -static const u8 sText_PkmnsItemRestoredStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its status!"); -static const u8 sText_PkmnsItemRestoredHPALittle[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nrestored its HP a little!"); -static const u8 sText_ItemAllowsOnlyYMove[] = _("{B_LAST_ITEM}'s effect allows only\n{B_CURRENT_MOVE} to be used!\p"); -static const u8 sText_PkmnHungOnWithX[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!"); -const u8 gText_EmptyString3[] = _(""); -static const u8 sText_PlayedFluteCatchyTune[] = _("{B_PLAYER_NAME} played the {B_LAST_ITEM}.\pNow, that's a catchy tune!"); -static const u8 sText_PlayedThe[] = _("{B_PLAYER_NAME} played the\n{B_LAST_ITEM}."); -static const u8 sText_PkmnHearingFluteAwoke[] = _("The POKéMON hearing the FLUTE\nawoke!"); -static const u8 sText_YouThrowABallNowRight[] = _("You throw a BALL now, right?\nI… I'll do my best!"); -const u8 gText_ForPetesSake[] = _("OAK: Oh, for Pete's sake…\nSo pushy, as always.\p{B_PLAYER_NAME}.\pYou've never had a POKéMON battle\nbefore, have you?\pA POKéMON battle is when TRAINERS\npit their POKéMON against each\lother.\p"); -const u8 gText_TheTrainerThat[] = _("The TRAINER that makes the other\nTRAINER's POKéMON faint by lowering\ltheir HP to “0,” wins.\p"); -const u8 gText_TryBattling[] = _("But rather than talking about it,\nyou'll learn more from experience.\pTry battling and see for yourself.\p"); -const u8 gText_InflictingDamageIsKey[] = _("OAK: Inflicting damage on the foe\nis the key to any battle.\p"); -const u8 gText_LoweringStats[] = _("OAK: Lowering the foe's stats\nwill put you at an advantage.\p"); -const u8 gText_KeepAnEyeOnHP[] = _("OAK: Keep your eyes on your\nPOKéMON's HP.\pIt will faint if the HP drops to\n“0.”\p"); -const u8 gText_OakNoRunningFromATrainer[] = _("OAK: No! There's no running away\nfrom a TRAINER POKéMON battle!\p"); -const u8 gText_WinEarnsPrizeMoney[] = _("OAK: Hm! Excellent!\pIf you win, you earn prize money,\nand your POKéMON will grow!\pBattle other TRAINERS and make\nyour POKéMON strong!\p"); -const u8 gText_HowDissapointing[] = _("OAK: Hm…\nHow disappointing…\pIf you win, you earn prize money,\nand your POKéMON grow.\pBut if you lose, {B_PLAYER_NAME}, you end\nup paying prize money…\pHowever, since you had no warning\nthis time, I'll pay for you.\pBut things won't be this way once\nyou step outside these doors.\pThat's why you must strengthen your\nPOKéMON by battling wild POKéMON.\p"); - -// pokeemerald -static const u8 sText_ItemRestoredSpeciesHealth[] = _("{B_BUFF1} had its\nHP restored!"); -static const u8 sText_ItemCuredSpeciesStatus[] = _("{B_BUFF1} had\nits status healed!"); -static const u8 sText_ItemRestoredSpeciesPP[] = _("{B_BUFF1} had its\nPP restored!"); -static const u8 sText_ElectroShotCharging[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nelectricity!"); -static const u8 sText_MeteorBeamCharging[] = _("{B_ATK_NAME_WITH_PREFIX} is overflowing\nwith space energy!"); -static const u8 sText_PkmnIsCloakedInAHarshLight[] = _("{B_ATK_NAME_WITH_PREFIX} became\ncloaked in a harsh light!"); -static const u8 sText_VanishedInstantly[] =_("{B_ATK_NAME_WITH_PREFIX} vanished\ninstantly!"); -static const u8 sText_PkmnTookTargetHigh[] = _("{B_ATK_NAME_WITH_PREFIX} took {B_DEF_NAME_WITH_PREFIX}\ninto the air!"); -static const u8 sText_CloakedInAFreezingLight[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin a freezing light!"); -static const u8 sText_PkmnAbsorbingPower[] = _("{B_ATK_NAME_WITH_PREFIX} is absorbing power!"); -static const u8 sText_PokemonCannotUseMove[] = _("{B_ATK_NAME_WITH_PREFIX} cannot\nuse {B_CURRENT_MOVE}!"); -static const u8 sText_PkmnMoveBouncedViaAbility[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE} was\nbounced back by {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY}!"); -static const u8 sText_HealBlockPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} was\nprevented from healing!\p"); -static const u8 sText_GravityPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} can't use {B_CURRENT_MOVE}\nbecause of gravity!\p"); -static const u8 sText_PkmnFrostbiteHealed2[] = _("{B_ATK_NAME_WITH_PREFIX}'s\nfrostbite was healed!"); -static const u8 sText_PkmnFrostbiteHealedBy[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nhealed its frostbite!"); -static const u8 sText_SafetyGogglesProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is not affected\nthanks to its {B_LAST_ITEM}!"); -static const u8 sText_PowderExplodes[] = _("When the flame touched the powder\non the Pokémon, it exploded!"); -static const u8 sText_PkmnCantUseMoveThroatChop[] = _("{B_ATK_NAME_WITH_PREFIX} can't use\n{B_CURRENT_MOVE} due to Throat Chop!\p"); -static const u8 sText_MoveFizzledOutInTheHeavyRain[] = _("The Fire-type attack fizzled out\nin the heavy rain!"); -static const u8 sText_MoveEvaporatedInTheHarshSunlight[] = _("The Water-type attack evaporated\nin the harsh sunlight!"); -static const u8 sText_TargetAteItem[] = _("{B_DEF_NAME_WITH_PREFIX} ate its {B_LAST_ITEM}!"); -static const u8 sText_GemActivates[] = _("{B_LAST_ITEM} strengthened\n{B_ATK_NAME_WITH_PREFIX}'s power!"); -static const u8 sText_AttackWeakenedByStrongWinds[] = _("The mysterious strong winds\nweakened the attack!"); -static const u8 sText_EnduredViaSturdy[] = _("{B_DEF_NAME_WITH_PREFIX} endured\nthe hit using {B_DEF_ABILITY}!"); -static const u8 sText_BerryDmgReducing[] = _("{B_LAST_ITEM} weakened the damage\nto {B_DEF_NAME_WITH_PREFIX}!"); -static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!"); -static const u8 sText_TrappedBySwirlingMagma[] =_("{B_DEF_NAME_WITH_PREFIX} became\ntrapped by swirling magma!"); -static const u8 sText_Infestation[] = _("{B_DEF_NAME_WITH_PREFIX} has been afflicted\nwith an infestation by {B_ATK_NAME_WITH_PREFIX}!"); -static const u8 sText_PkmnInSnapTrap[] = _("{B_DEF_NAME_WITH_PREFIX} got trapped\nby a snap trap!"); -static const u8 sText_AtkTrappedDef[] = _("{B_ATK_NAME_WITH_PREFIX} trapped\nthe {B_DEF_NAME_WITH_PREFIX}!"); -static const u8 sText_ResetsTargetsStatLevels[] =_("{B_DEF_NAME_WITH_PREFIX}'s stat changes\nwere removed!"); -static const u8 sText_StrongWindsDissipated[] = _("The mysterious strong winds\nhave dissipated!{PAUSE 64}"); -static const u8 sText_ExtremeSunlightFaded[] = _("The extreme sunlight faded.{PAUSE 64}"); -static const u8 sText_HeavyRainLifted[] = _("The heavy rain has lifted!{PAUSE 64}"); -static const u8 sText_SymbiosisItemPass[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} passed its {B_LAST_ITEM}\nto {B_ATK_NAME_WITH_PREFIX} through {B_LAST_ABILITY}!"); -static const u8 sText_BurstingFlames[] = _("The bursting flames\nhit {B_SCR_ACTIVE_NAME_WITH_PREFIX}!"); -static const u8 sText_BrokeThroughProtection[] = _("It broke through\n{B_DEF_NAME_WITH_PREFIX}'s protection!"); -static const u8 sText_FellForFeint[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe feint!"); -static const u8 sText_SpectralThiefSteal[] = _("{B_ATK_NAME_WITH_PREFIX} stole the target's\nboosted stats!"); -static const u8 sText_PkmnsAbilitySuppressed[] = _("{B_DEF_NAME_WITH_PREFIX}'s ability\nwas suppressed!"); -static const u8 sText_IncinerateBurn[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwas burnt up!"); -static const u8 sText_BugBite[] = _("{B_ATK_NAME_WITH_PREFIX} stole and ate\n{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!"); -static const u8 sText_BothCanNoLongerEscape[] = _("Neither Pokémon can run away!"); -static const u8 sText_AttackerLostFireType[] = _("{B_ATK_NAME_WITH_PREFIX} burned itself out!"); -static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} used up all\nof its electricity!"); -static const u8 sText_AttackerLostItsType[] = _("{B_ATK_NAME_WITH_PREFIX} lost\nits {B_BUFF1} type!"); -static const u8 sText_StealthRockDmg[] = _("Pointed stones dug into\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}!"); -static const u8 sText_SharpSteelDmg[] = _("Sharp steel bit into {B_DEF_NAME_WITH_PREFIX}!"); -static const u8 sText_PointedStonesFloat[] =_("Pointed stones float in the air\naround {B_DEF_TEAM2} team!"); -static const u8 sText_SharpSteelFloats[] = _("Sharp-pointed steel floats\naround {B_DEF_TEAM2} team!"); -static const u8 sText_TargetCoveredInStickyCandySyrup[] = _("{B_DEF_NAME_WITH_PREFIX} got covered\nin sticky syrup!"); -static const u8 sText_AromaVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is protected\nby an aromatic veil!"); -static const u8 sText_PkmnPreventedFromHealing[] = _("{B_DEF_NAME_WITH_PREFIX} was prevented\nfrom healing!"); -static const u8 sText_TerrainBecomesMisty[] = _("Mist swirled about\nthe battlefield!"); -static const u8 sText_TerrainBecomesGrassy[] = _("Grass grew to cover\nthe battlefield!"); -static const u8 sText_TerrainBecomesElectric[] = _("An electric current runs across\nthe battlefield!"); -static const u8 sText_TerrainBecomesPsychic[] = _("The battlefield got weird!"); -static const u8 sText_DimensionsWereTwisted[] = _("The dimensions were\ntwisted!"); -static const u8 sText_BizzareAreaCreated[] =_("A bizarre area was created in which the\nDefense and Sp. Def stats are swapped!"); -static const u8 sText_BizarreArenaCreated[] =_("A bizarre area was created!\nHold items lost their effects!"); -static const u8 sText_TailWindBlew[] = _("The tailwind blew from\nbehind {B_ATK_TEAM2} team!"); -static const u8 sText_ElectricTerrainEnds[] = _("The electricity disappeared\nfrom the battlefield."); -static const u8 sText_MistyTerrainEnds[] = _("The mist disappeared\nfrom the battlefield."); -static const u8 sText_PsychicTerrainEnds[] = _("The weirdness disappeared\nfrom the battlefield."); -static const u8 sText_GrassyTerrainEnds[] = _("The grass disappeared\nfrom the battlefield."); -static const u8 sText_MoldBreakerEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} breaks the mold!"); -static const u8 sText_TeravoltEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na bursting aura!"); -static const u8 sText_TurboblazeEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na blazing aura!"); -static const u8 sText_SlowStartEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can't get it going!"); -static const u8 sText_UnnerveEnters[] = _("The opposing team is too nervous\nto eat Berries!"); -static const u8 sText_AnticipationActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} shuddered\nin anticipation!"); -static const u8 sText_ForewarnActivates[] = _("{B_SCR_ACTIVE_ABILITY} alerted {B_SCR_ACTIVE_NAME_WITH_PREFIX}\nto {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!"); -static const u8 sText_PressureActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is exerting its\npressure!"); -static const u8 sText_DarkAuraActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na dark aura!"); -static const u8 sText_FairyAuraActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na fairy aura!"); -static const u8 sText_AuraBreakActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} reversed all\nother Pokémon's auras!"); -static const u8 sText_ComatoseActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is drowsing!"); -static const u8 sText_ScreenCleanerActivates[] = _("All screens on the field were\ncleansed!"); -static const u8 sText_AsOneEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} has two Abilities!"); -static const u8 sText_CuriousMedicineEnters[] = _("{B_EFF_NAME_WITH_PREFIX}'s\nstat changes were reset!"); -static const u8 sText_PastelVeilEnters[] = _("{B_DEF_NAME_WITH_PREFIX} was cured\nof its poisoning!"); -static const u8 sText_NeutralizingGasEnters[] = _("Neutralizing Gas filled the area!"); -static const u8 sText_BeingHitChargedPkmnWithPower[] = _("Being hit by {B_CURRENT_MOVE}\ncharged {B_DEF_NAME_WITH_PREFIX} with power!"); -static const u8 sText_ImposterTransform[] = _("{B_ATK_NAME_WITH_PREFIX} transformed into\n{B_DEF_NAME_WITH_PREFIX} using {B_LAST_ABILITY}!"); -static const u8 sText_SnowWarningHail[] = _("It started to hail!"); -static const u8 sText_SnowWarningSnow[] = _("It started to snow!"); -static const u8 sText_SupersweetAromaWafts[] = _("A supersweet aroma is wafting from\nthe syrup covering {B_ATK_NAME_WITH_PREFIX}!"); -static const u8 sText_AirLockActivates[] = _("The effects of weather\ndisappeared."); -static const u8 sText_BattlerAbilityRaisedStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its {B_BUFF1}!"); -static const u8 sText_ExtremelyHarshSunlight[] = _("The sunlight turned\nextremely harsh!"); -static const u8 sText_HeavyRain[] = _("A heavy rain began to fall!"); -static const u8 sText_MysteriousAirCurrent[] = _("A mysterious air current is\nprotecting Flying-type Pokémon!"); -static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nweakened the {B_BUFF1} of\lall surrounding Pokémon!\p"); -static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!"); -static const u8 sText_ZeroToHeroTransformation[] = _("{B_ATK_NAME_WITH_PREFIX} underwent a heroic\ntransformation!"); -static const u8 sText_HospitalityRestoration[] = _("{B_ATK_PARTNER_NAME} drank down all the\nmatcha that {B_ATK_NAME_WITH_PREFIX} made!"); -static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nits {B_LAST_ITEM}!"); -static const u8 sText_BadDreamsDmg[] = _("{B_DEF_NAME_WITH_PREFIX} is tormented!"); -static const u8 sText_SolarPowerHpDrop[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\ntakes its toll!"); -static const u8 sText_HealerCure[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\ncured {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s problem!"); -static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} found\na {B_LAST_ITEM}!"); -static const u8 sText_TargetAbilityLoweredStat[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nlowered its {B_BUFF1}!"); -static const u8 sText_TargetStatWontGoHigher[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwon't go higher!"); -static const u8 sText_TargetAbilityRaisedStat[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nraised its {B_BUFF1}!"); -static const u8 sText_CursedBodyDisabled[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} was disabled\nby {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}!"); -static const u8 sText_AttackerAquiredAbility[] = _("{B_ATK_NAME_WITH_PREFIX} acquired\n{B_LAST_ABILITY}!"); -static const u8 sText_SwappedAbilities[] = _("{B_DEF_NAME_WITH_PREFIX} swapped Abilities\nwith its target!"); -static const u8 sText_TargetsStatWasMaxedOut[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} maxed\nits {B_BUFF1}!"); -static const u8 sText_PkmnsAbilityPreventsAbility[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY} from working!"); -static const u8 sText_AftermathDmg[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt!"); -static const u8 sText_IllusionWoreOff[] = _("{B_DEF_NAME_WITH_PREFIX}'s Illusion wore off!"); -static const u8 sText_ASandstormKickedUp[] = _("A sandstorm kicked up!"); -static const u8 sText_PkmnsWillPerishIn3Turns[] = _("Both Pokémon will perish\nin three turns!"); -static const u8 sText_PoisonSpikesScattered[] = _("Poison Spikes were scattered all\naround {B_DEF_TEAM2} team's feet!"); -static const u8 sText_OpportunistCopied[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} copied its\nopponent's stat changes!"); -static const u8 sText_PkmnGotOverItsInfatuation[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} got over\nits infatuation!"); -static const u8 sText_PkmnShookOffTheTaunt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} shook off\nthe taunt!"); -static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); -static const u8 sText_StatWasHeightened[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!"); -static const u8 sText_BattlerTypeChangedTo[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s type\nchanged to {B_BUFF1}!"); -static const u8 sText_ElectricTerrainActivatedAbility[] = _("The Electric Terrain activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); -static const u8 sText_FriskActivates[] = _("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX} and\nfound its {B_LAST_ITEM}!"); -static const u8 sText_AttackerAbilityRaisedStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nraised its {B_BUFF1}!"); -static const u8 sText_ExtremelyHarshSunlightWasNotLessened[] = _("The extremely harsh sunlight\nwas not lessened at all!"); -static const u8 sText_NoReliefFromHeavyRain[] = _("There is no relief from\nthis heavy rain!"); -static const u8 sText_MysteriousAirCurrentBlowsOn[] = _("The mysterious air current\nblows on regardless!"); -static const u8 sText_AuraFlaredToLife[] = _("{B_DEF_NAME_WITH_PREFIX}'s aura flared to life!"); -static const u8 sText_AttackerGotOverInfatuation[] =_("{B_ATK_NAME_WITH_PREFIX} got over\nits infatuation!"); -static const u8 sText_TormentedNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is\ntormented no more!"); -static const u8 sText_BufferEnds[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\nwore off!"); -static const u8 sText_HealBlockedNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is cured of\nits heal block!"); -static const u8 sText_MicleBerryActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted the accuracy of its\nnext move using {B_LAST_ITEM}!"); -static const u8 sText_MirrorHerbCopied[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used its {B_LAST_ITEM}\nto mirror its opponent's stat changes!"); -static const u8 sText_PkmnsItemHealedFrostbite[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its frostbite!"); -static const u8 sText_AirBalloonFloat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} floats in the air\nwith its {B_LAST_ITEM}!"); -static const u8 sText_EjectButtonActivate[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is switched\nout with the {B_LAST_ITEM}!"); -static const u8 sText_HurtByItem[] = _("{B_ATK_NAME_WITH_PREFIX} was hurt\nby its {B_LAST_ITEM}!"); -static const u8 sText_AirBalloonPop[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} popped!"); -static const u8 sText_StickyBarbTransfer[] = _("The {B_LAST_ITEM} attached itself to\n{B_ATK_NAME_WITH_PREFIX}!"); -static const u8 sText_TeamGainedEXP[] = _("The rest of your team gained EXP.\nPoints thanks to the {B_LAST_ITEM}!\p"); -static const u8 sText_PkmnFrostbiteHealed[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nfrostbite was healed!"); -static const u8 sText_StockpiledEffectWoreOff[] = _("{B_ATK_NAME_WITH_PREFIX}'s stockpiled\neffect wore off!"); -static const u8 sText_FellStraightDown[] =_("{B_DEF_NAME_WITH_PREFIX} fell\nstraight down!"); -static const u8 sText_TargetWokeUp[] = _("{B_DEF_NAME_WITH_PREFIX} woke up!"); -static const u8 sText_PkmnBurnHealed[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nburn was healed."); -static const u8 sText_RedCardActivate[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} held up its {B_LAST_ITEM}\nagainst {B_ATK_NAME_WITH_PREFIX}!"); -static const u8 sText_MoveBlockedByDynamax[] = _("The move was blocked by\nthe power of Dynamax!"); -static const u8 sText_ItemCannotBeRemoved[] = _("{B_ATK_NAME_WITH_PREFIX}'s item cannot be removed!"); -static const u8 sText_ZMoveResetsStats[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} returned its\ndecreased stats to normal using\lits Z-Power!"); -static const u8 sText_ZMoveBoostCrit[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted its\ncritical-hit ratio using its Z-Power!"); -static const u8 sText_ZMoveRestoreHp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} restored its\nHP using its Z-Power!"); -static const u8 sText_ZMoveStatUp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted\nits stats using its Z-Power!"); -static const u8 sText_ZMoveHpSwitchInTrap[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s HP was restored by the Z-Power!"); -static const u8 sText_ZMoveAllStatsUp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted all\nof its stats using its Z-Power!"); -static const u8 sText_PkmnRevertedToPrimal[] = _("{B_ATK_NAME_WITH_PREFIX}'s Primal Reversion!\nIt reverted to its primal form!"); -static const u8 sText_HealingWishHealed[] = _("{B_ATK_NAME_WITH_PREFIX} regained health!"); -static const u8 sText_ToxicSpikesAbsorbed[] = _("The poison spikes disappeared\nfrom around {B_DEF_TEAM2} team's feet!"); -static const u8 sText_ToxicSpikesPoisoned[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was poisoned!"); -static const u8 sText_StickyWebSwitchIn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was\ncaught in a Sticky Web!"); -static const u8 sText_HealingWishCameTrue[] = _("The healing wish came true\nfor {B_ATK_NAME_WITH_PREFIX}!"); -static const u8 sText_LunarDanceCameTrue[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin mystical moonlight!"); -static const u8 sText_SpikesDisappearedFromTeam[] = _("The spikes disappeared from\nthe ground around {B_ATK_TEAM2} team!"); -static const u8 sText_ToxicSpikesDisappearedFromTeam[] = _("The poison spikes disappeared from\nthe ground around {B_ATK_TEAM2} team!"); -static const u8 sText_StickyWebDisappearedFromTeam[] = _("The sticky web has disappeared from\nthe ground around {B_ATK_TEAM2} team!"); -static const u8 sText_StealthRockDisappearedFromTeam[] = _("The pointed stones disappeared\nfrom around {B_ATK_TEAM2} team!"); -static const u8 sText_SharpSteelDisappearedFromTeam[] = _("The sharp steel disappeared from\nthe ground around {B_ATK_TEAM2} team!"); -static const u8 sText_LastAbilityRaisedBuff1[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\nraised its {B_BUFF1}!"); -static const u8 sText_ReceiverAbilityTakeOver[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nwas taken over!"); -static const u8 sText_NeutralizingGasOver[] = _("The effects of Neutralizing\nGas wore off!"); -static const u8 sText_AttackerBecameFullyCharged[] = _("{B_ATK_NAME_WITH_PREFIX} became fully charged\ndue to its bond with its trainer!\p"); -static const u8 sText_AttackerBecameAshSpecies[] = _("{B_ATK_NAME_WITH_PREFIX} became Ash-{B_BUFF1}!\p"); -static const u8 sText_ProtectedTeam[] =_("{B_CURRENT_MOVE} protected\n{B_ATK_TEAM2} team!"); -static const u8 sText_ElectricTerrainPreventsSleep[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith electrified terrain!"); -static const u8 sText_MistyTerrainPreventsStatus[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith a protective mist!"); -static const u8 sText_PsychicTerrainPreventsPriority[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith psychic terrain!"); -static const u8 sText_FlowerVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} surrounded itself\nwith a veil of petals!"); -static const u8 sText_drastically[] = _("drastically "); -static const u8 sText_severely[] = _("severely "); -static const u8 sText_ClearAmuletWontLowerStats[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} prevents\nits stats from being lowered!"); -static const u8 sText_CelebrateMessage[] = _("Congratulations, {B_PLAYER_NAME}!"); -static const u8 sText_PkmnBlewAwayToxicSpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nToxic Spikes!"); -static const u8 sText_PkmnBlewAwayStickyWeb[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSticky Web!"); -static const u8 sText_PkmnBlewAwayStealthRock[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nStealth Rock!"); -static const u8 sText_PkmnBlewAwaySharpSteel[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nsharp steel!"); -static const u8 sText_PkmnGotFrostbite[] = _("{B_EFF_NAME_WITH_PREFIX} got frostbite!"); - - const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT - BATTLESTRINGS_TABLE_START] = { - [STRINGID_TRAINER1LOSETEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer1LoseText, - [STRINGID_PKMNGAINEDEXP - BATTLESTRINGS_TABLE_START] = sText_PkmnGainedEXP, - [STRINGID_PKMNGREWTOLV - BATTLESTRINGS_TABLE_START] = sText_PkmnGrewToLv, - [STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnLearnedMove, - [STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_TABLE_START] = sText_TryToLearnMove1, - [STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_TABLE_START] = sText_TryToLearnMove2, - [STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_TABLE_START] = sText_TryToLearnMove3, - [STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnForgotMove, - [STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_TABLE_START] = sText_StopLearningMove, - [STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_TABLE_START] = sText_DidNotLearnMove, - [STRINGID_PKMNLEARNEDMOVE2 - BATTLESTRINGS_TABLE_START] = sText_PkmnLearnedMove2, - [STRINGID_ATTACKMISSED - BATTLESTRINGS_TABLE_START] = sText_AttackMissed, - [STRINGID_PKMNPROTECTEDITSELF - BATTLESTRINGS_TABLE_START] = sText_PkmnProtectedItself, - [STRINGID_STATSWONTINCREASE2 - BATTLESTRINGS_TABLE_START] = sText_StatsWontIncrease2, - [STRINGID_AVOIDEDDAMAGE - BATTLESTRINGS_TABLE_START] = sText_AvoidedDamage, - [STRINGID_ITDOESNTAFFECT - BATTLESTRINGS_TABLE_START] = sText_ItDoesntAffect, - [STRINGID_ATTACKERFAINTED - BATTLESTRINGS_TABLE_START] = sText_AttackerFainted, - [STRINGID_TARGETFAINTED - BATTLESTRINGS_TABLE_START] = sText_TargetFainted, - [STRINGID_PLAYERGOTMONEY - BATTLESTRINGS_TABLE_START] = sText_PlayerGotMoney, - [STRINGID_PLAYERWHITEOUT - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteout, - [STRINGID_PLAYERWHITEOUT2 - BATTLESTRINGS_TABLE_START] = sText_PlayerPanicked, - [STRINGID_PREVENTSESCAPE - BATTLESTRINGS_TABLE_START] = sText_PreventsEscape, - [STRINGID_HITXTIMES - BATTLESTRINGS_TABLE_START] = sText_HitXTimes, - [STRINGID_PKMNFELLASLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnFellAsleep, - [STRINGID_PKMNMADESLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeSleep, - [STRINGID_PKMNALREADYASLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnAlreadyAsleep, - [STRINGID_PKMNALREADYASLEEP2 - BATTLESTRINGS_TABLE_START] = sText_PkmnAlreadyAsleep2, - [STRINGID_PKMNWASNTAFFECTED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasntAffected, - [STRINGID_PKMNWASPOISONED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasPoisoned, - [STRINGID_PKMNPOISONEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnPoisonedBy, - [STRINGID_PKMNHURTBYPOISON - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByPoison, - [STRINGID_PKMNALREADYPOISONED - BATTLESTRINGS_TABLE_START] = sText_PkmnAlreadyPoisoned, - [STRINGID_PKMNBADLYPOISONED - BATTLESTRINGS_TABLE_START] = sText_PkmnBadlyPoisoned, - [STRINGID_PKMNENERGYDRAINED - BATTLESTRINGS_TABLE_START] = sText_PkmnEnergyDrained, - [STRINGID_PKMNWASBURNED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasBurned, - [STRINGID_PKMNBURNEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnBurnedBy, - [STRINGID_PKMNHURTBYBURN - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByBurn, - [STRINGID_PKMNWASFROZEN - BATTLESTRINGS_TABLE_START] = sText_PkmnWasFrozen, - [STRINGID_PKMNFROZENBY - BATTLESTRINGS_TABLE_START] = sText_PkmnFrozenBy, - [STRINGID_PKMNISFROZEN - BATTLESTRINGS_TABLE_START] = sText_PkmnIsFrozen, - [STRINGID_PKMNWASDEFROSTED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasDefrosted, - [STRINGID_PKMNWASDEFROSTED2 - BATTLESTRINGS_TABLE_START] = sText_PkmnWasDefrosted2, - [STRINGID_PKMNWASDEFROSTEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnWasDefrostedBy, - [STRINGID_PKMNWASPARALYZED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasParalyzed, - [STRINGID_PKMNWASPARALYZEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnWasParalyzedBy, - [STRINGID_PKMNISPARALYZED - BATTLESTRINGS_TABLE_START] = sText_PkmnIsParalyzed, - [STRINGID_PKMNISALREADYPARALYZED - BATTLESTRINGS_TABLE_START] = sText_PkmnIsAlreadyParalyzed, - [STRINGID_PKMNHEALEDPARALYSIS - BATTLESTRINGS_TABLE_START] = sText_PkmnHealedParalysis, - [STRINGID_PKMNDREAMEATEN - BATTLESTRINGS_TABLE_START] = sText_PkmnDreamEaten, - [STRINGID_STATSWONTINCREASE - BATTLESTRINGS_TABLE_START] = sText_StatsWontIncrease, - [STRINGID_STATSWONTDECREASE - BATTLESTRINGS_TABLE_START] = sText_StatsWontDecrease, - [STRINGID_TEAMSTOPPEDWORKING - BATTLESTRINGS_TABLE_START] = sText_TeamStoppedWorking, - [STRINGID_FOESTOPPEDWORKING - BATTLESTRINGS_TABLE_START] = sText_FoeStoppedWorking, - [STRINGID_PKMNISCONFUSED - BATTLESTRINGS_TABLE_START] = sText_PkmnIsConfused, - [STRINGID_PKMNHEALEDCONFUSION - BATTLESTRINGS_TABLE_START] = sText_PkmnHealedConfusion, - [STRINGID_PKMNWASCONFUSED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasConfused, - [STRINGID_PKMNALREADYCONFUSED - BATTLESTRINGS_TABLE_START] = sText_PkmnAlreadyConfused, - [STRINGID_PKMNFELLINLOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnFellInLove, - [STRINGID_PKMNINLOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnInLove, - [STRINGID_PKMNIMMOBILIZEDBYLOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnImmobilizedByLove, - [STRINGID_PKMNBLOWNAWAY - BATTLESTRINGS_TABLE_START] = sText_PkmnBlownAway, - [STRINGID_PKMNCHANGEDTYPE - BATTLESTRINGS_TABLE_START] = sText_PkmnChangedType, - [STRINGID_PKMNFLINCHED - BATTLESTRINGS_TABLE_START] = sText_PkmnFlinched, - [STRINGID_PKMNREGAINEDHEALTH - BATTLESTRINGS_TABLE_START] = sText_PkmnRegainedHealth, - [STRINGID_PKMNHPFULL - BATTLESTRINGS_TABLE_START] = sText_PkmnHPFull, - [STRINGID_PKMNRAISEDSPDEF - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedSpDef, - [STRINGID_PKMNRAISEDDEF - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedDef, - [STRINGID_PKMNCOVEREDBYVEIL - BATTLESTRINGS_TABLE_START] = sText_PkmnCoveredByVeil, - [STRINGID_PKMNUSEDSAFEGUARD - BATTLESTRINGS_TABLE_START] = sText_PkmnUsedSafeguard, - [STRINGID_PKMNSAFEGUARDEXPIRED - BATTLESTRINGS_TABLE_START] = sText_PkmnSafeguardExpired, - [STRINGID_PKMNWENTTOSLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnWentToSleep, - [STRINGID_PKMNSLEPTHEALTHY - BATTLESTRINGS_TABLE_START] = sText_PkmnSleptHealthy, - [STRINGID_PKMNWHIPPEDWHIRLWIND - BATTLESTRINGS_TABLE_START] = sText_PkmnWhippedWhirlwind, - [STRINGID_PKMNTOOKSUNLIGHT - BATTLESTRINGS_TABLE_START] = sText_PkmnTookSunlight, - [STRINGID_PKMNLOWEREDHEAD - BATTLESTRINGS_TABLE_START] = sText_PkmnLoweredHead, - [STRINGID_PKMNISGLOWING - BATTLESTRINGS_TABLE_START] = sText_PkmnIsGlowing, - [STRINGID_PKMNFLEWHIGH - BATTLESTRINGS_TABLE_START] = sText_PkmnFlewHigh, - [STRINGID_PKMNDUGHOLE - BATTLESTRINGS_TABLE_START] = sText_PkmnDugHole, - [STRINGID_PKMNSQUEEZEDBYBIND - BATTLESTRINGS_TABLE_START] = sText_PkmnSqueezedByBind, - [STRINGID_PKMNTRAPPEDINVORTEX - BATTLESTRINGS_TABLE_START] = sText_PkmnTrappedInVortex, - [STRINGID_PKMNWRAPPEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnWrappedBy, - [STRINGID_PKMNCLAMPED - BATTLESTRINGS_TABLE_START] = sText_PkmnClamped, - [STRINGID_PKMNHURTBY - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtBy, - [STRINGID_PKMNFREEDFROM - BATTLESTRINGS_TABLE_START] = sText_PkmnFreedFrom, - [STRINGID_PKMNCRASHED - BATTLESTRINGS_TABLE_START] = sText_PkmnCrashed, - [STRINGID_PKMNSHROUDEDINMIST - BATTLESTRINGS_TABLE_START] = gBattleText_MistShroud, - [STRINGID_PKMNPROTECTEDBYMIST - BATTLESTRINGS_TABLE_START] = sText_PkmnProtectedByMist, - [STRINGID_PKMNGETTINGPUMPED - BATTLESTRINGS_TABLE_START] = gBattleText_GetPumped, - [STRINGID_PKMNHITWITHRECOIL - BATTLESTRINGS_TABLE_START] = sText_PkmnHitWithRecoil, - [STRINGID_PKMNPROTECTEDITSELF2 - BATTLESTRINGS_TABLE_START] = sText_PkmnProtectedItself2, - [STRINGID_PKMNBUFFETEDBYSANDSTORM - BATTLESTRINGS_TABLE_START] = sText_PkmnBuffetedBySandstorm, - [STRINGID_PKMNPELTEDBYHAIL - BATTLESTRINGS_TABLE_START] = sText_PkmnPeltedByHail, - [STRINGID_PKMNSEEDED - BATTLESTRINGS_TABLE_START] = sText_PkmnSeeded, - [STRINGID_PKMNEVADEDATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnEvadedAttack, - [STRINGID_PKMNSAPPEDBYLEECHSEED - BATTLESTRINGS_TABLE_START] = sText_PkmnSappedByLeechSeed, - [STRINGID_PKMNFASTASLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnFastAsleep, - [STRINGID_PKMNWOKEUP - BATTLESTRINGS_TABLE_START] = sText_PkmnWokeUp, - [STRINGID_PKMNUPROARKEPTAWAKE - BATTLESTRINGS_TABLE_START] = sText_PkmnUproarKeptAwake, - [STRINGID_PKMNWOKEUPINUPROAR - BATTLESTRINGS_TABLE_START] = sText_PkmnWokeUpInUproar, - [STRINGID_PKMNCAUSEDUPROAR - BATTLESTRINGS_TABLE_START] = sText_PkmnCausedUproar, - [STRINGID_PKMNMAKINGUPROAR - BATTLESTRINGS_TABLE_START] = sText_PkmnMakingUproar, - [STRINGID_PKMNCALMEDDOWN - BATTLESTRINGS_TABLE_START] = sText_PkmnCalmedDown, - [STRINGID_PKMNCANTSLEEPINUPROAR - BATTLESTRINGS_TABLE_START] = sText_PkmnCantSleepInUproar, - [STRINGID_PKMNSTOCKPILED - BATTLESTRINGS_TABLE_START] = sText_PkmnStockpiled, - [STRINGID_PKMNCANTSTOCKPILE - BATTLESTRINGS_TABLE_START] = sText_PkmnCantStockpile, - [STRINGID_PKMNCANTSLEEPINUPROAR2 - BATTLESTRINGS_TABLE_START] = sText_PkmnCantSleepInUproar2, - [STRINGID_UPROARKEPTPKMNAWAKE - BATTLESTRINGS_TABLE_START] = sText_UproarKeptPkmnAwake, - [STRINGID_PKMNSTAYEDAWAKEUSING - BATTLESTRINGS_TABLE_START] = sText_PkmnStayedAwakeUsing, - [STRINGID_PKMNSTORINGENERGY - BATTLESTRINGS_TABLE_START] = sText_PkmnStoringEnergy, - [STRINGID_PKMNUNLEASHEDENERGY - BATTLESTRINGS_TABLE_START] = sText_PkmnUnleashedEnergy, - [STRINGID_PKMNFATIGUECONFUSION - BATTLESTRINGS_TABLE_START] = sText_PkmnFatigueConfusion, - [STRINGID_PLAYERPICKEDUPMONEY - BATTLESTRINGS_TABLE_START] = sText_PkmnPickedUpItem, - [STRINGID_PKMNUNAFFECTED - BATTLESTRINGS_TABLE_START] = sText_PkmnUnaffected, - [STRINGID_PKMNTRANSFORMEDINTO - BATTLESTRINGS_TABLE_START] = sText_PkmnTransformedInto, - [STRINGID_PKMNMADESUBSTITUTE - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeSubstitute, - [STRINGID_PKMNHASSUBSTITUTE - BATTLESTRINGS_TABLE_START] = sText_PkmnHasSubstitute, - [STRINGID_SUBSTITUTEDAMAGED - BATTLESTRINGS_TABLE_START] = sText_SubstituteDamaged, - [STRINGID_PKMNSUBSTITUTEFADED - BATTLESTRINGS_TABLE_START] = sText_PkmnSubstituteFaded, - [STRINGID_PKMNMUSTRECHARGE - BATTLESTRINGS_TABLE_START] = sText_PkmnMustRecharge, - [STRINGID_PKMNRAGEBUILDING - BATTLESTRINGS_TABLE_START] = sText_PkmnRageBuilding, - [STRINGID_PKMNMOVEWASDISABLED - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveWasDisabled, - [STRINGID_PKMNMOVEISDISABLED - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveIsDisabled, - [STRINGID_PKMNMOVEDISABLEDNOMORE - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveDisabledNoMore, - [STRINGID_PKMNGOTENCORE - BATTLESTRINGS_TABLE_START] = sText_PkmnGotEncore, - [STRINGID_PKMNENCOREENDED - BATTLESTRINGS_TABLE_START] = sText_PkmnEncoreEnded, - [STRINGID_PKMNTOOKAIM - BATTLESTRINGS_TABLE_START] = sText_PkmnTookAim, - [STRINGID_PKMNSKETCHEDMOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnSketchedMove, - [STRINGID_PKMNTRYINGTOTAKEFOE - BATTLESTRINGS_TABLE_START] = sText_PkmnTryingToTakeFoe, - [STRINGID_PKMNTOOKFOE - BATTLESTRINGS_TABLE_START] = sText_PkmnTookFoe, - [STRINGID_PKMNREDUCEDPP - BATTLESTRINGS_TABLE_START] = sText_PkmnReducedPP, - [STRINGID_PKMNSTOLEITEM - BATTLESTRINGS_TABLE_START] = sText_PkmnStoleItem, - [STRINGID_TARGETCANTESCAPENOW - BATTLESTRINGS_TABLE_START] = sText_TargetCantEscapeNow, - [STRINGID_PKMNFELLINTONIGHTMARE - BATTLESTRINGS_TABLE_START] = sText_PkmnFellIntoNightmare, - [STRINGID_PKMNLOCKEDINNIGHTMARE - BATTLESTRINGS_TABLE_START] = sText_PkmnLockedInNightmare, - [STRINGID_PKMNLAIDCURSE - BATTLESTRINGS_TABLE_START] = sText_PkmnLaidCurse, - [STRINGID_PKMNAFFLICTEDBYCURSE - BATTLESTRINGS_TABLE_START] = sText_PkmnAfflictedByCurse, - [STRINGID_SPIKESSCATTERED - BATTLESTRINGS_TABLE_START] = sText_SpikesScattered, - [STRINGID_PKMNHURTBYSPIKES - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtBySpikes, - [STRINGID_PKMNIDENTIFIED - BATTLESTRINGS_TABLE_START] = sText_PkmnIdentified, - [STRINGID_PKMNPERISHCOUNTFELL - BATTLESTRINGS_TABLE_START] = sText_PkmnPerishCountFell, - [STRINGID_PKMNBRACEDITSELF - BATTLESTRINGS_TABLE_START] = sText_PkmnBracedItself, - [STRINGID_PKMNENDUREDHIT - BATTLESTRINGS_TABLE_START] = sText_PkmnEnduredHit, - [STRINGID_MAGNITUDESTRENGTH - BATTLESTRINGS_TABLE_START] = sText_MagnitudeStrength, - [STRINGID_PKMNCUTHPMAXEDATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnCutHPMaxedAttack, - [STRINGID_PKMNCOPIEDSTATCHANGES - BATTLESTRINGS_TABLE_START] = sText_PkmnCopiedStatChanges, - [STRINGID_PKMNGOTFREE - BATTLESTRINGS_TABLE_START] = sText_PkmnGotFree, - [STRINGID_PKMNSHEDLEECHSEED - BATTLESTRINGS_TABLE_START] = sText_PkmnShedLeechSeed, - [STRINGID_PKMNBLEWAWAYSPIKES - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwaySpikes, - [STRINGID_PKMNFLEDFROMBATTLE - BATTLESTRINGS_TABLE_START] = sText_PkmnFledFromBattle, - [STRINGID_PKMNFORESAWATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnForesawAttack, - [STRINGID_PKMNTOOKATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnTookAttack, - [STRINGID_PKMNATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnAttack, - [STRINGID_PKMNCENTERATTENTION - BATTLESTRINGS_TABLE_START] = sText_PkmnCenterAttention, - [STRINGID_PKMNCHARGINGPOWER - BATTLESTRINGS_TABLE_START] = sText_PkmnChargingPower, - [STRINGID_NATUREPOWERTURNEDINTO - BATTLESTRINGS_TABLE_START] = sText_NaturePowerTurnedInto, - [STRINGID_PKMNSTATUSNORMAL - BATTLESTRINGS_TABLE_START] = sText_PkmnStatusNormal, - [STRINGID_PKMNHASNOMOVESLEFT - BATTLESTRINGS_TABLE_START] = sText_PkmnHasNoMovesLeft, - [STRINGID_PKMNSUBJECTEDTOTORMENT - BATTLESTRINGS_TABLE_START] = sText_PkmnSubjectedToTorment, - [STRINGID_PKMNCANTUSEMOVETORMENT - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseMoveTorment, - [STRINGID_PKMNTIGHTENINGFOCUS - BATTLESTRINGS_TABLE_START] = sText_PkmnTighteningFocus, - [STRINGID_PKMNFELLFORTAUNT - BATTLESTRINGS_TABLE_START] = sText_PkmnFellForTaunt, - [STRINGID_PKMNCANTUSEMOVETAUNT - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseMoveTaunt, - [STRINGID_PKMNREADYTOHELP - BATTLESTRINGS_TABLE_START] = sText_PkmnReadyToHelp, - [STRINGID_PKMNSWITCHEDITEMS - BATTLESTRINGS_TABLE_START] = sText_PkmnSwitchedItems, - [STRINGID_PKMNCOPIEDFOE - BATTLESTRINGS_TABLE_START] = sText_PkmnCopiedFoe, - [STRINGID_PKMNMADEWISH - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeWish, - [STRINGID_PKMNWISHCAMETRUE - BATTLESTRINGS_TABLE_START] = sText_PkmnWishCameTrue, - [STRINGID_PKMNPLANTEDROOTS - BATTLESTRINGS_TABLE_START] = sText_PkmnPlantedRoots, - [STRINGID_PKMNABSORBEDNUTRIENTS - BATTLESTRINGS_TABLE_START] = sText_PkmnAbsorbedNutrients, - [STRINGID_PKMNANCHOREDITSELF - BATTLESTRINGS_TABLE_START] = sText_PkmnAnchoredItself, - [STRINGID_PKMNWASMADEDROWSY - BATTLESTRINGS_TABLE_START] = sText_PkmnWasMadeDrowsy, - [STRINGID_PKMNKNOCKEDOFF - BATTLESTRINGS_TABLE_START] = sText_PkmnKnockedOff, - [STRINGID_PKMNSWAPPEDABILITIES - BATTLESTRINGS_TABLE_START] = sText_PkmnSwappedAbilities, - [STRINGID_PKMNSEALEDOPPONENTMOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnSealedOpponentMove, - [STRINGID_PKMNCANTUSEMOVESEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseMoveSealed, - [STRINGID_PKMNWANTSGRUDGE - BATTLESTRINGS_TABLE_START] = sText_PkmnWantsGrudge, - [STRINGID_PKMNLOSTPPGRUDGE - BATTLESTRINGS_TABLE_START] = sText_PkmnLostPPGrudge, - [STRINGID_PKMNSHROUDEDITSELF - BATTLESTRINGS_TABLE_START] = sText_PkmnShroudedItself, - [STRINGID_PKMNMOVEBOUNCED - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveBounced, - [STRINGID_PKMNWAITSFORTARGET - BATTLESTRINGS_TABLE_START] = sText_PkmnWaitsForTarget, - [STRINGID_PKMNSNATCHEDMOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnSnatchedMove, - [STRINGID_PKMNMADEITRAIN - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeItRain, - [STRINGID_PKMNRAISEDSPEED - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedSpeed, - [STRINGID_PKMNPROTECTEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnProtectedBy, - [STRINGID_PKMNPREVENTSUSAGE - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsUsage, - [STRINGID_PKMNRESTOREDHPUSING - BATTLESTRINGS_TABLE_START] = sText_PkmnRestoredHPUsing, - [STRINGID_PKMNCHANGEDTYPEWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnChangedTypeWith, - [STRINGID_PKMNPREVENTSPARALYSISWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsParalysisWith, - [STRINGID_PKMNPREVENTSROMANCEWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsRomanceWith, - [STRINGID_PKMNPREVENTSPOISONINGWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsPoisoningWith, - [STRINGID_PKMNPREVENTSCONFUSIONWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsConfusionWith, - [STRINGID_PKMNRAISEDFIREPOWERWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedFirePowerWith, - [STRINGID_PKMNANCHORSITSELFWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnAnchorsItselfWith, - [STRINGID_PKMNCUTSATTACKWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnCutsAttackWith, - [STRINGID_PKMNPREVENTSSTATLOSSWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsStatLossWith, - [STRINGID_PKMNHURTSWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtsWith, - [STRINGID_PKMNTRACED - BATTLESTRINGS_TABLE_START] = sText_PkmnTraced, - [STRINGID_STATSHARPLY - BATTLESTRINGS_TABLE_START] = gText_StatSharply, - [STRINGID_STATROSE - BATTLESTRINGS_TABLE_START] = gText_StatRose, - [STRINGID_STATHARSHLY - BATTLESTRINGS_TABLE_START] = sText_StatHarshly, - [STRINGID_STATFELL - BATTLESTRINGS_TABLE_START] = sText_StatFell, - [STRINGID_ATTACKERSSTATROSE - BATTLESTRINGS_TABLE_START] = sText_AttackersStatRose, - [STRINGID_DEFENDERSSTATROSE - BATTLESTRINGS_TABLE_START] = gText_DefendersStatRose, - [STRINGID_ATTACKERSSTATFELL - BATTLESTRINGS_TABLE_START] = sText_AttackersStatFell, - [STRINGID_DEFENDERSSTATFELL - BATTLESTRINGS_TABLE_START] = sText_DefendersStatFell, - [STRINGID_CRITICALHIT - BATTLESTRINGS_TABLE_START] = sText_CriticalHit, - [STRINGID_ONEHITKO - BATTLESTRINGS_TABLE_START] = sText_OneHitKO, - [STRINGID_123POOF - BATTLESTRINGS_TABLE_START] = sText_123Poof, - [STRINGID_ANDELLIPSIS - BATTLESTRINGS_TABLE_START] = sText_AndEllipsis, - [STRINGID_NOTVERYEFFECTIVE - BATTLESTRINGS_TABLE_START] = sText_NotVeryEffective, - [STRINGID_SUPEREFFECTIVE - BATTLESTRINGS_TABLE_START] = sText_SuperEffective, - [STRINGID_GOTAWAYSAFELY - BATTLESTRINGS_TABLE_START] = sText_GotAwaySafely, - [STRINGID_WILDPKMNFLED - BATTLESTRINGS_TABLE_START] = sText_WildPkmnFled, - [STRINGID_NORUNNINGFROMTRAINERS - BATTLESTRINGS_TABLE_START] = sText_NoRunningFromTrainers, - [STRINGID_CANTESCAPE - BATTLESTRINGS_TABLE_START] = sText_CantEscape, - [STRINGID_DONTLEAVEBIRCH - BATTLESTRINGS_TABLE_START] = sText_DontLeaveBirch, - [STRINGID_BUTNOTHINGHAPPENED - BATTLESTRINGS_TABLE_START] = sText_ButNothingHappened, - [STRINGID_BUTITFAILED - BATTLESTRINGS_TABLE_START] = sText_ButItFailed, - [STRINGID_ITHURTCONFUSION - BATTLESTRINGS_TABLE_START] = sText_ItHurtConfusion, - [STRINGID_MIRRORMOVEFAILED - BATTLESTRINGS_TABLE_START] = sText_MirrorMoveFailed, - [STRINGID_STARTEDTORAIN - BATTLESTRINGS_TABLE_START] = sText_StartedToRain, - [STRINGID_DOWNPOURSTARTED - BATTLESTRINGS_TABLE_START] = sText_DownpourStarted, - [STRINGID_RAINCONTINUES - BATTLESTRINGS_TABLE_START] = sText_RainContinues, - [STRINGID_DOWNPOURCONTINUES - BATTLESTRINGS_TABLE_START] = sText_DownpourContinues, - [STRINGID_RAINSTOPPED - BATTLESTRINGS_TABLE_START] = sText_RainStopped, - [STRINGID_SANDSTORMBREWED - BATTLESTRINGS_TABLE_START] = sText_SandstormBrewed, - [STRINGID_SANDSTORMRAGES - BATTLESTRINGS_TABLE_START] = sText_SandstormRages, - [STRINGID_SANDSTORMSUBSIDED - BATTLESTRINGS_TABLE_START] = sText_SandstormSubsided, - [STRINGID_SUNLIGHTGOTBRIGHT - BATTLESTRINGS_TABLE_START] = sText_SunlightGotBright, - [STRINGID_SUNLIGHTSTRONG - BATTLESTRINGS_TABLE_START] = sText_SunlightStrong, - [STRINGID_SUNLIGHTFADED - BATTLESTRINGS_TABLE_START] = sText_SunlightFaded, - [STRINGID_STARTEDHAIL - BATTLESTRINGS_TABLE_START] = sText_StartedHail, - [STRINGID_HAILCONTINUES - BATTLESTRINGS_TABLE_START] = sText_HailContinues, - [STRINGID_HAILSTOPPED - BATTLESTRINGS_TABLE_START] = sText_HailStopped, - [STRINGID_FAILEDTOSPITUP - BATTLESTRINGS_TABLE_START] = sText_FailedToSpitUp, - [STRINGID_FAILEDTOSWALLOW - BATTLESTRINGS_TABLE_START] = sText_FailedToSwallow, - [STRINGID_WINDBECAMEHEATWAVE - BATTLESTRINGS_TABLE_START] = sText_WindBecameHeatWave, - [STRINGID_STATCHANGESGONE - BATTLESTRINGS_TABLE_START] = sText_StatChangesGone, - [STRINGID_COINSSCATTERED - BATTLESTRINGS_TABLE_START] = sText_CoinsScattered, - [STRINGID_TOOWEAKFORSUBSTITUTE - BATTLESTRINGS_TABLE_START] = sText_TooWeakForSubstitute, - [STRINGID_SHAREDPAIN - BATTLESTRINGS_TABLE_START] = sText_SharedPain, - [STRINGID_BELLCHIMED - BATTLESTRINGS_TABLE_START] = sText_BellChimed, - [STRINGID_FAINTINTHREE - BATTLESTRINGS_TABLE_START] = sText_FaintInThree, - [STRINGID_NOPPLEFT - BATTLESTRINGS_TABLE_START] = sText_NoPPLeft, - [STRINGID_BUTNOPPLEFT - BATTLESTRINGS_TABLE_START] = sText_ButNoPPLeft, - [STRINGID_PLAYERUSEDITEM - BATTLESTRINGS_TABLE_START] = sText_PlayerUsedItem, - [STRINGID_OLDMANUSEDITEM - BATTLESTRINGS_TABLE_START] = sText_OldManUsedItem, - [STRINGID_TRAINERBLOCKEDBALL - BATTLESTRINGS_TABLE_START] = sText_TrainerBlockedBall, - [STRINGID_DONTBEATHIEF - BATTLESTRINGS_TABLE_START] = sText_DontBeAThief, - [STRINGID_ITDODGEDBALL - BATTLESTRINGS_TABLE_START] = sText_ItDodgedBall, - [STRINGID_YOUMISSEDPKMN - BATTLESTRINGS_TABLE_START] = sText_YouMissedPkmn, - [STRINGID_PKMNBROKEFREE - BATTLESTRINGS_TABLE_START] = sText_PkmnBrokeFree, - [STRINGID_ITAPPEAREDCAUGHT - BATTLESTRINGS_TABLE_START] = sText_ItAppearedCaught, - [STRINGID_AARGHALMOSTHADIT - BATTLESTRINGS_TABLE_START] = sText_AarghAlmostHadIt, - [STRINGID_SHOOTSOCLOSE - BATTLESTRINGS_TABLE_START] = sText_ShootSoClose, - [STRINGID_GOTCHAPKMNCAUGHT - BATTLESTRINGS_TABLE_START] = sText_GotchaPkmnCaught, - [STRINGID_GOTCHAPKMNCAUGHT2 - BATTLESTRINGS_TABLE_START] = sText_GotchaPkmnCaught2, - [STRINGID_GIVENICKNAMECAPTURED - BATTLESTRINGS_TABLE_START] = sText_GiveNicknameCaptured, - [STRINGID_PKMNSENTTOPC - BATTLESTRINGS_TABLE_START] = sText_PkmnSentToPC, - [STRINGID_PKMNDATAADDEDTODEX - BATTLESTRINGS_TABLE_START] = sText_PkmnDataAddedToDex, - [STRINGID_ITISRAINING - BATTLESTRINGS_TABLE_START] = sText_ItIsRaining, - [STRINGID_SANDSTORMISRAGING - BATTLESTRINGS_TABLE_START] = sText_SandstormIsRaging, - [STRINGID_CANTESCAPE2 - BATTLESTRINGS_TABLE_START] = sText_CantEscape2, - [STRINGID_PKMNIGNORESASLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnIgnoresAsleep, - [STRINGID_PKMNIGNOREDORDERS - BATTLESTRINGS_TABLE_START] = sText_PkmnIgnoredOrders, - [STRINGID_PKMNBEGANTONAP - BATTLESTRINGS_TABLE_START] = sText_PkmnBeganToNap, - [STRINGID_PKMNLOAFING - BATTLESTRINGS_TABLE_START] = sText_PkmnLoafing, - [STRINGID_PKMNWONTOBEY - BATTLESTRINGS_TABLE_START] = sText_PkmnWontObey, - [STRINGID_PKMNTURNEDAWAY - BATTLESTRINGS_TABLE_START] = sText_PkmnTurnedAway, - [STRINGID_PKMNPRETENDNOTNOTICE - BATTLESTRINGS_TABLE_START] = sText_PkmnPretendNotNotice, - [STRINGID_ENEMYABOUTTOSWITCHPKMN - BATTLESTRINGS_TABLE_START] = sText_EnemyAboutToSwitchPkmn, - [STRINGID_THREWROCK - BATTLESTRINGS_TABLE_START] = sText_ThrewARock, - [STRINGID_THREWBAIT - BATTLESTRINGS_TABLE_START] = sText_ThrewSomeBait, - [STRINGID_PKMNWATCHINGCAREFULLY - BATTLESTRINGS_TABLE_START] = sText_PkmnWatchingCarefully, - [STRINGID_PKMNANGRY - BATTLESTRINGS_TABLE_START] = sText_PkmnIsAngry, - [STRINGID_PKMNEATING - BATTLESTRINGS_TABLE_START] = sText_PkmnIsEating, - [STRINGID_DUMMY288 - BATTLESTRINGS_TABLE_START] = sText_Empty1, - [STRINGID_DUMMY289 - BATTLESTRINGS_TABLE_START] = sText_Empty1, - [STRINGID_OUTOFSAFARIBALLS - BATTLESTRINGS_TABLE_START] = sText_OutOfSafariBalls, - [STRINGID_PKMNSITEMCUREDPARALYSIS - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemCuredParalysis, - [STRINGID_PKMNSITEMCUREDPOISON - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemCuredPoison, - [STRINGID_PKMNSITEMHEALEDBURN - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemHealedBurn, - [STRINGID_PKMNSITEMDEFROSTEDIT - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemDefrostedIt, - [STRINGID_PKMNSITEMWOKEIT - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemWokeIt, - [STRINGID_PKMNSITEMSNAPPEDOUT - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemSnappedOut, - [STRINGID_PKMNSITEMCUREDPROBLEM - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemCuredProblem, - [STRINGID_PKMNSITEMRESTOREDHEALTH - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemRestoredHealth, - [STRINGID_PKMNSITEMRESTOREDPP - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemRestoredPP, - [STRINGID_PKMNSITEMRESTOREDSTATUS - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemRestoredStatus, - [STRINGID_PKMNSITEMRESTOREDHPALITTLE - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemRestoredHPALittle, - [STRINGID_ITEMALLOWSONLYYMOVE - BATTLESTRINGS_TABLE_START] = sText_ItemAllowsOnlyYMove, - [STRINGID_PKMNHUNGONWITHX - BATTLESTRINGS_TABLE_START] = sText_PkmnHungOnWithX, - [STRINGID_EMPTYSTRING3 - BATTLESTRINGS_TABLE_START] = gText_EmptyString3, - [STRINGID_PKMNSXPREVENTSBURNS - BATTLESTRINGS_TABLE_START] = sText_PkmnsXPreventsBurns, - [STRINGID_PKMNSXBLOCKSY - BATTLESTRINGS_TABLE_START] = sText_PkmnsXBlocksY, - [STRINGID_PKMNSXRESTOREDHPALITTLE2 - BATTLESTRINGS_TABLE_START] = sText_PkmnsXRestoredHPALittle2, - [STRINGID_PKMNSXWHIPPEDUPSANDSTORM - BATTLESTRINGS_TABLE_START] = sText_PkmnsXWhippedUpSandstorm, - [STRINGID_PKMNSXPREVENTSYLOSS - BATTLESTRINGS_TABLE_START] = sText_PkmnsXPreventsYLoss, - [STRINGID_PKMNSXINFATUATEDY - BATTLESTRINGS_TABLE_START] = sText_PkmnsXInfatuatedY, - [STRINGID_PKMNSXMADEYINEFFECTIVE - BATTLESTRINGS_TABLE_START] = sText_PkmnsXMadeYIneffective, - [STRINGID_PKMNSXCUREDYPROBLEM - BATTLESTRINGS_TABLE_START] = sText_PkmnsXCuredYProblem, - [STRINGID_ITSUCKEDLIQUIDOOZE - BATTLESTRINGS_TABLE_START] = sText_ItSuckedLiquidOoze, - [STRINGID_PKMNTRANSFORMED - BATTLESTRINGS_TABLE_START] = sText_PkmnTransformed, - [STRINGID_ELECTRICITYWEAKENED - BATTLESTRINGS_TABLE_START] = sText_ElectricityWeakened, - [STRINGID_FIREWEAKENED - BATTLESTRINGS_TABLE_START] = sText_FireWeakened, - [STRINGID_PKMNHIDUNDERWATER - BATTLESTRINGS_TABLE_START] = sText_PkmnHidUnderwater, - [STRINGID_PKMNSPRANGUP - BATTLESTRINGS_TABLE_START] = sText_PkmnSprangUp, - [STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_TABLE_START] = sText_HMMovesCantBeForgotten, - [STRINGID_XFOUNDONEY - BATTLESTRINGS_TABLE_START] = sText_XFoundOneY, - [STRINGID_PLAYERDEFEATEDTRAINER1 - BATTLESTRINGS_TABLE_START] = sText_PlayerDefeatedLinkTrainerTrainer1, - [STRINGID_SOOTHINGAROMA - BATTLESTRINGS_TABLE_START] = sText_SoothingAroma, - [STRINGID_ITEMSCANTBEUSEDNOW - BATTLESTRINGS_TABLE_START] = sText_ItemsCantBeUsedNow, - [STRINGID_FORXCOMMAYZ - BATTLESTRINGS_TABLE_START] = sText_ForXCommaYZ, - [STRINGID_USINGITEMSTATOFPKMNROSE - BATTLESTRINGS_TABLE_START] = sText_UsingItemTheStatOfPkmnRose, - [STRINGID_PKMNUSEDXTOGETPUMPED - BATTLESTRINGS_TABLE_START] = sText_PkmnUsedXToGetPumped, - [STRINGID_PKMNSXMADEYUSELESS - BATTLESTRINGS_TABLE_START] = sText_PkmnsXMadeYUseless, - [STRINGID_PKMNTRAPPEDBYSANDTOMB - BATTLESTRINGS_TABLE_START] = sText_PkmnTrappedBySandTomb, - [STRINGID_EMPTYSTRING4 - BATTLESTRINGS_TABLE_START] = sText_EmptyString4, - [STRINGID_ABOOSTED - BATTLESTRINGS_TABLE_START] = sText_ABoosted, - [STRINGID_PKMNSXINTENSIFIEDSUN - BATTLESTRINGS_TABLE_START] = sText_PkmnsXIntensifiedSun, - [STRINGID_PKMNMAKESGROUNDMISS - BATTLESTRINGS_TABLE_START] = sText_PkmnMakesGroundMiss, - [STRINGID_YOUTHROWABALLNOWRIGHT - BATTLESTRINGS_TABLE_START] = sText_YouThrowABallNowRight, - [STRINGID_PKMNSXTOOKATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnsXTookAttack, - [STRINGID_PKMNCHOSEXASDESTINY - BATTLESTRINGS_TABLE_START] = sText_PkmnChoseXAsDestiny, - [STRINGID_PKMNLOSTFOCUS - BATTLESTRINGS_TABLE_START] = sText_PkmnLostFocus, - [STRINGID_USENEXTPKMN - BATTLESTRINGS_TABLE_START] = sText_UseNextPkmn, - [STRINGID_PKMNFLEDUSINGITS - BATTLESTRINGS_TABLE_START] = sText_PkmnFledUsingIts, - [STRINGID_PKMNFLEDUSING - BATTLESTRINGS_TABLE_START] = sText_PkmnFledUsing, - [STRINGID_PKMNWASDRAGGEDOUT - BATTLESTRINGS_TABLE_START] = sText_PkmnWasDraggedOut, - [STRINGID_PREVENTEDFROMWORKING - BATTLESTRINGS_TABLE_START] = sText_PreventedFromWorking, - [STRINGID_PKMNSITEMNORMALIZEDSTATUS - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemNormalizedStatus, - [STRINGID_TRAINER1USEDITEM - BATTLESTRINGS_TABLE_START] = sText_Trainer1UsedItem, - [STRINGID_BOXISFULL - BATTLESTRINGS_TABLE_START] = sText_BoxIsFull, - [STRINGID_PKMNAVOIDEDATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnAvoidedAttack, - [STRINGID_PKMNSXMADEITINEFFECTIVE - BATTLESTRINGS_TABLE_START] = sText_PkmnsXMadeItIneffective, - [STRINGID_PKMNSXPREVENTSFLINCHING - BATTLESTRINGS_TABLE_START] = sText_PkmnsXPreventsFlinching, - [STRINGID_PKMNALREADYHASBURN - BATTLESTRINGS_TABLE_START] = sText_PkmnAlreadyHasBurn, - [STRINGID_STATSWONTDECREASE2 - BATTLESTRINGS_TABLE_START] = sText_StatsWontDecrease2, - [STRINGID_PKMNSXBLOCKSY2 - BATTLESTRINGS_TABLE_START] = sText_PkmnsXBlocksY2, - [STRINGID_PKMNSXWOREOFF - BATTLESTRINGS_TABLE_START] = sText_PkmnsXWoreOff, - [STRINGID_PKMNRAISEDDEFALITTLE - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedDefALittle, - [STRINGID_PKMNRAISEDSPDEFALITTLE - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedSpDefALittle, - [STRINGID_THEWALLSHATTERED - BATTLESTRINGS_TABLE_START] = sText_TheWallShattered, - [STRINGID_PKMNSXPREVENTSYSZ - BATTLESTRINGS_TABLE_START] = sText_PkmnsXPreventsYsZ, - [STRINGID_PKMNSXCUREDITSYPROBLEM - BATTLESTRINGS_TABLE_START] = sText_PkmnsXCuredItsYProblem, - [STRINGID_ATTACKERCANTESCAPE - BATTLESTRINGS_TABLE_START] = sText_AttackerCantEscape, - [STRINGID_PKMNOBTAINEDX - BATTLESTRINGS_TABLE_START] = sText_PkmnObtainedX, - [STRINGID_PKMNOBTAINEDX2 - BATTLESTRINGS_TABLE_START] = sText_PkmnObtainedX2, - [STRINGID_PKMNOBTAINEDXYOBTAINEDZ - BATTLESTRINGS_TABLE_START] = sText_PkmnObtainedXYObtainedZ, - [STRINGID_BUTNOEFFECT - BATTLESTRINGS_TABLE_START] = sText_ButNoEffect, - [STRINGID_PKMNSXHADNOEFFECTONY - BATTLESTRINGS_TABLE_START] = sText_PkmnsXHadNoEffectOnY, - [STRINGID_OAKPLAYERWON - BATTLESTRINGS_TABLE_START] = gText_WinEarnsPrizeMoney, - [STRINGID_OAKPLAYERLOST - BATTLESTRINGS_TABLE_START] = gText_HowDissapointing, - [STRINGID_PLAYERLOSTAGAINSTENEMYTRAINER - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteoutAgainstTrainer, - [STRINGID_PLAYERPAIDPRIZEMONEY - BATTLESTRINGS_TABLE_START] = sText_PlayerPaidAsPrizeMoney, + [STRINGID_TIDYINGUPCOMPLETE - BATTLESTRINGS_TABLE_START] = sText_TidyingUpComplete, + [STRINGID_SUPERSWEETAROMAWAFTS - BATTLESTRINGS_TABLE_START] = sText_SupersweetAromaWafts, + [STRINGID_SHEDITSTAIL - BATTLESTRINGS_TABLE_START] = sText_ShedItsTail, + [STRINGID_ELECTROSHOTCHARGING - BATTLESTRINGS_TABLE_START] = sText_ElectroShotCharging, + [STRINGID_HOSPITALITYRESTORATION - BATTLESTRINGS_TABLE_START] = sText_HospitalityRestoration, + [STRINGID_THESWAMPDISAPPEARED - BATTLESTRINGS_TABLE_START] = sText_TheSwampDisappeared, + [STRINGID_SWAMPENVELOPEDSIDE - BATTLESTRINGS_TABLE_START] = sText_SwampEnvelopedSide, + [STRINGID_THESEAOFFIREDISAPPEARED - BATTLESTRINGS_TABLE_START] = sText_TheSeaOfFireDisappeared, + [STRINGID_HURTBYTHESEAOFFIRE - BATTLESTRINGS_TABLE_START] = sText_HurtByTheSeaOfFire, + [STRINGID_SEAOFFIREENVELOPEDSIDE - BATTLESTRINGS_TABLE_START] = sText_SeaOfFireEnvelopedSide, + [STRINGID_WAITINGFORPARTNERSMOVE - BATTLESTRINGS_TABLE_START] = sText_WaitingForPartnersMove, + [STRINGID_THERAINBOWDISAPPEARED - BATTLESTRINGS_TABLE_START] = sText_TheRainbowDisappeared, + [STRINGID_ARAINBOWAPPEAREDONSIDE - BATTLESTRINGS_TABLE_START] = sText_ARainbowAppearedOnSide, + [STRINGID_THETWOMOVESBECOMEONE - BATTLESTRINGS_TABLE_START] = sText_TheTwoMovesBecomeOne, + [STRINGID_ZEROTOHEROTRANSFORMATION - BATTLESTRINGS_TABLE_START] = sText_ZeroToHeroTransformation, + [STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE - BATTLESTRINGS_TABLE_START] = sText_PkmnTellChillingReceptionJoke, + [STRINGID_MOVEBLOCKEDBYDYNAMAX - BATTLESTRINGS_TABLE_START] = sText_MoveBlockedByDynamax, + [STRINGID_OPPORTUNISTCOPIED - BATTLESTRINGS_TABLE_START] = sText_OpportunistCopied, + [STRINGID_TARGETISHURTBYSALTCURE - BATTLESTRINGS_TABLE_START] = sText_TargetIsHurtBySaltCure, + [STRINGID_TARGETISBEINGSALTCURED - BATTLESTRINGS_TABLE_START] = sText_TargetIsBeingSaltCured, + [STRINGID_CURRENTMOVECANTSELECT - BATTLESTRINGS_TABLE_START] = sText_CurrentMoveCantSelect, + [STRINGID_PKMNITEMMELTED - BATTLESTRINGS_TABLE_START] = sText_PkmnItemMelted, + [STRINGID_MIRRORHERBCOPIED - BATTLESTRINGS_TABLE_START] = sText_MirrorHerbCopied, + [STRINGID_THUNDERCAGETRAPPED - BATTLESTRINGS_TABLE_START] = sText_AtkTrappedDef, + [STRINGID_ITEMRESTOREDSPECIESHEALTH - BATTLESTRINGS_TABLE_START] = sText_ItemRestoredSpeciesHealth, + [STRINGID_ITEMCUREDSPECIESSTATUS - BATTLESTRINGS_TABLE_START] = sText_ItemCuredSpeciesStatus, + [STRINGID_ITEMRESTOREDSPECIESPP - BATTLESTRINGS_TABLE_START] = sText_ItemRestoredSpeciesPP, + [STRINGID_PKMNREVIVEDREADYTOFIGHT - BATTLESTRINGS_TABLE_START] = sText_PkmnRevivedReadyToFight, + [STRINGID_STOCKPILEDEFFECTWOREOFF - BATTLESTRINGS_TABLE_START] = sText_StockpiledEffectWoreOff, + [STRINGID_COULDNTFULLYPROTECT - BATTLESTRINGS_TABLE_START] = sText_CouldntFullyProtect, + [STRINGID_PKMNHURTBYROCKSTHROWN - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByRocksThrown, + [STRINGID_TEAMSURROUNDEDBYROCKS - BATTLESTRINGS_TABLE_START] = sText_TeamSurroundedByRocks, + [STRINGID_PKMNBURNINGUP - BATTLESTRINGS_TABLE_START] = sText_PkmnBurningUp, + [STRINGID_TEAMSURROUNDEDBYFIRE - BATTLESTRINGS_TABLE_START] = sText_TeamSurroundedByFire, + [STRINGID_PKMNHURTBYVORTEX - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByVortex, + [STRINGID_TEAMCAUGHTINVORTEX - BATTLESTRINGS_TABLE_START] = sText_TeamCaughtInVortex, + [STRINGID_PKMNHURTBYVINES - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByVines, + [STRINGID_TEAMTRAPPEDWITHVINES - BATTLESTRINGS_TABLE_START] = sText_TeamTrappedWithVines, + [STRINGID_PKMNBLEWAWAYSHARPSTEEL - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwaySharpSteel, + [STRINGID_SHARPSTEELDMG - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDmg, + [STRINGID_SHARPSTEELFLOATS - BATTLESTRINGS_TABLE_START] = sText_SharpSteelFloats, + [STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN - BATTLESTRINGS_TABLE_START] = sText_AttackerGainedStrengthFromTheFallen, + [STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat, + [STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility, + [STRINGID_STATWASHEIGHTENED - BATTLESTRINGS_TABLE_START] = sText_StatWasHeightened, + [STRINGID_SUNLIGHTACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_SunlightActivatedAbility, + [STRINGID_BEINGHITCHARGEDPKMNWITHPOWER - BATTLESTRINGS_TABLE_START] = sText_BeingHitChargedPkmnWithPower, + [STRINGID_ATTACKERSWITCHEDSTATWITHTARGET - BATTLESTRINGS_TABLE_START] = sText_AttackerSwitchedStatWithTarget, + [STRINGID_TARGETTOUGHEDITOUT - BATTLESTRINGS_TABLE_START] = sText_TargetToughedItOut, + [STRINGID_ATTACKERMELTEDTHEICE - BATTLESTRINGS_TABLE_START] = sText_AttackerMeltedTheIce, + [STRINGID_ATTACKERHEALEDITSBURN - BATTLESTRINGS_TABLE_START] = sText_AttackerHealedItsBurn, + [STRINGID_ATTACKERBROKETHROUGHPARALYSIS - BATTLESTRINGS_TABLE_START] = sText_AttackerBrokeThroughParalysis, + [STRINGID_ATTACKERSHOOKITSELFAWAKE - BATTLESTRINGS_TABLE_START] = sText_AttackerShookItselfAwake, + [STRINGID_ATTACKEREXPELLEDTHEPOISON - BATTLESTRINGS_TABLE_START] = sText_AttackerExpelledThePoison, + [STRINGID_ZPOWERSURROUNDS - BATTLESTRINGS_TABLE_START] = sText_ZPowerSurrounds, + [STRINGID_ZMOVEUNLEASHED - BATTLESTRINGS_TABLE_START] = sText_ZPowerUnleashed, + [STRINGID_ZMOVERESETSSTATS - BATTLESTRINGS_TABLE_START] = sText_ZMoveResetsStats, + [STRINGID_ZMOVEALLSTATSUP - BATTLESTRINGS_TABLE_START] = sText_ZMoveAllStatsUp, + [STRINGID_ZMOVEZBOOSTCRIT - BATTLESTRINGS_TABLE_START] = sText_ZMoveBoostCrit, + [STRINGID_ZMOVERESTOREHP - BATTLESTRINGS_TABLE_START] = sText_ZMoveRestoreHp, + [STRINGID_ZMOVESTATUP - BATTLESTRINGS_TABLE_START] = sText_ZMoveStatUp, + [STRINGID_ZMOVEHPTRAP - BATTLESTRINGS_TABLE_START] = sText_ZMoveHpSwitchInTrap, + [STRINGID_PLAYERLOSTTOENEMYTRAINER - BATTLESTRINGS_TABLE_START] = sText_PlayerLostToEnemyTrainer, + [STRINGID_PLAYERPAIDPRIZEMONEY - BATTLESTRINGS_TABLE_START] = sText_PlayerPaidPrizeMoney, + [STRINGID_SHELLTRAPDIDNTWORK - BATTLESTRINGS_TABLE_START] = sText_ShellTrapDidntWork, + [STRINGID_PREPARESHELLTRAP - BATTLESTRINGS_TABLE_START] = sText_PrepareShellTrap, + [STRINGID_COURTCHANGE - BATTLESTRINGS_TABLE_START] = sText_CourtChange, + [STRINGID_HEATUPBEAK - BATTLESTRINGS_TABLE_START] = sText_HeatingUpBeak, + [STRINGID_METEORBEAMCHARGING - BATTLESTRINGS_TABLE_START] = sText_MeteorBeamCharging, + [STRINGID_PKMNINSNAPTRAP - BATTLESTRINGS_TABLE_START] = sText_PkmnInSnapTrap, + [STRINGID_NEUTRALIZINGGASOVER - BATTLESTRINGS_TABLE_START] = sText_NeutralizingGasOver, + [STRINGID_NEUTRALIZINGGASENTERS - BATTLESTRINGS_TABLE_START] = sText_NeutralizingGasEnters, + [STRINGID_BATTLERTYPECHANGEDTO - BATTLESTRINGS_TABLE_START] = sText_BattlerTypeChangedTo, + [STRINGID_PASTELVEILENTERS - BATTLESTRINGS_TABLE_START] = sText_PastelVeilEnters, + [STRINGID_PASTELVEILPROTECTED - BATTLESTRINGS_TABLE_START] = sText_PastelVeilProtected, + [STRINGID_SWAPPEDABILITIES - BATTLESTRINGS_TABLE_START] = sText_SwappedAbilities, + [STRINGID_ABILITYALLOWSONLYMOVE - BATTLESTRINGS_TABLE_START] = sText_AbilityAllowsOnlyMove, + [STRINGID_BROKETHROUGHPROTECTION - BATTLESTRINGS_TABLE_START] = sText_BrokeThroughProtection, + [STRINGID_BUTPOKEMONCANTUSETHEMOVE - BATTLESTRINGS_TABLE_START] = sText_ButPokemonCantUseTheMove, + [STRINGID_BUTHOOPACANTUSEIT - BATTLESTRINGS_TABLE_START] = sText_ButHoopaCantUseIt, + [STRINGID_PKMNREVERTEDTOPRIMAL - BATTLESTRINGS_TABLE_START] = sText_PkmnRevertedToPrimal, + [STRINGID_STUFFCHEEKSCANTSELECT - BATTLESTRINGS_TABLE_START] = sText_StuffCheeksCantSelect, + [STRINGID_ATTACKWEAKENEDBSTRONGWINDS - BATTLESTRINGS_TABLE_START] = sText_AttackWeakenedByStrongWinds, + [STRINGID_MYSTERIOUSAIRCURRENTBLOWSON - BATTLESTRINGS_TABLE_START] = sText_MysteriousAirCurrentBlowsOn, + [STRINGID_STRONGWINDSDISSIPATED - BATTLESTRINGS_TABLE_START] = sText_StrongWindsDissipated, + [STRINGID_MYSTERIOUSAIRCURRENT - BATTLESTRINGS_TABLE_START] = sText_MysteriousAirCurrent, + [STRINGID_NORELIEFROMHEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_NoReliefFromHeavyRain, + [STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_MoveFizzledOutInTheHeavyRain, + [STRINGID_HEAVYRAINLIFTED - BATTLESTRINGS_TABLE_START] = sText_HeavyRainLifted, + [STRINGID_HEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_HeavyRain, + [STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED - BATTLESTRINGS_TABLE_START] = sText_ExtremelyHarshSunlightWasNotLessened, + [STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT - BATTLESTRINGS_TABLE_START] = sText_MoveEvaporatedInTheHarshSunlight, + [STRINGID_EXTREMESUNLIGHTFADED - BATTLESTRINGS_TABLE_START] = sText_ExtremeSunlightFaded, + [STRINGID_EXTREMELYHARSHSUNLIGHT - BATTLESTRINGS_TABLE_START] = sText_ExtremelyHarshSunlight, + [STRINGID_ATTACKERBECAMEASHSPECIES - BATTLESTRINGS_TABLE_START] = sText_AttackerBecameAshSpecies, + [STRINGID_ATTACKERBECAMEFULLYCHARGED - BATTLESTRINGS_TABLE_START] = sText_AttackerBecameFullyCharged, + [STRINGID_HEALBLOCKEDNOMORE - BATTLESTRINGS_TABLE_START] = sText_HealBlockedNoMore, + [STRINGID_TORMENTEDNOMORE - BATTLESTRINGS_TABLE_START] = sText_TormentedNoMore, + [STRINGID_ATKGOTOVERINFATUATION - BATTLESTRINGS_TABLE_START] = sText_AttackerGotOverInfatuation, + [STRINGID_EJECTBUTTONACTIVATE - BATTLESTRINGS_TABLE_START] = sText_EjectButtonActivate, + [STRINGID_REDCARDACTIVATE - BATTLESTRINGS_TABLE_START] = sText_RedCardActivate, + [STRINGID_PKMNBURNHEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnBurnHealed, + [STRINGID_STICKYBARBTRANSFER - BATTLESTRINGS_TABLE_START] = sText_StickyBarbTransfer, + [STRINGID_ITEMCANNOTBEREMOVED - BATTLESTRINGS_TABLE_START] = sText_ItemCannotBeRemoved, + [STRINGID_PKMNGOTOVERITSINFATUATION - BATTLESTRINGS_TABLE_START] = sText_PkmnGotOverItsInfatuation, + [STRINGID_PKMNSHOOKOFFTHETAUNT - BATTLESTRINGS_TABLE_START] = sText_PkmnShookOffTheTaunt, + [STRINGID_MICLEBERRYACTIVATES - BATTLESTRINGS_TABLE_START] = sText_MicleBerryActivates, + [STRINGID_CANACTFASTERTHANKSTO - BATTLESTRINGS_TABLE_START] = sText_CanActFaster, + [STRINGID_CURIOUSMEDICINEENTERS - BATTLESTRINGS_TABLE_START] = sText_CuriousMedicineEnters, + [STRINGID_ASONEENTERS - BATTLESTRINGS_TABLE_START] = sText_AsOneEnters, + [STRINGID_ABILITYRAISEDSTATDRASTICALLY - BATTLESTRINGS_TABLE_START] = sText_AbilityRaisedStatDrastically, + [STRINGID_PKMNSWILLPERISHIN3TURNS - BATTLESTRINGS_TABLE_START] = sText_PkmnsWillPerishIn3Turns, + [STRINGID_ASANDSTORMKICKEDUP - BATTLESTRINGS_TABLE_START] = sText_ASandstormKickedUp, + [STRINGID_BATTLERABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_BattlerAbilityRaisedStat, + [STRINGID_FETCHEDPOKEBALL - BATTLESTRINGS_TABLE_START] = sText_FetchedPokeBall, + [STRINGID_CLEARAMULETWONTLOWERSTATS - BATTLESTRINGS_TABLE_START] = sText_ClearAmuletWontLowerStats, + [STRINGID_CLOAKEDINAFREEZINGLIGHT - BATTLESTRINGS_TABLE_START] = sText_CloakedInAFreezingLight, + [STRINGID_DESTINYKNOTACTIVATES - BATTLESTRINGS_TABLE_START] = sText_DestinyKnotActivates, + [STRINGID_NOONEWILLBEABLETORUNAWAY - BATTLESTRINGS_TABLE_START] = sText_NoOneWillBeAbleToRun, + [STRINGID_PKNMABSORBINGPOWER - BATTLESTRINGS_TABLE_START] = sText_PkmnAbsorbingPower, + [STRINGID_RECEIVERABILITYTAKEOVER - BATTLESTRINGS_TABLE_START] = sText_ReceiverAbilityTakeOver, + [STRINGID_SCRIPTINGABILITYSTATRAISE - BATTLESTRINGS_TABLE_START] = sText_ScriptingAbilityRaisedStat, + [STRINGID_HEALERCURE - BATTLESTRINGS_TABLE_START] = sText_HealerCure, + [STRINGID_ATTACKERLOSTFIRETYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostFireType, + [STRINGID_ATTACKERCUREDTARGETSTATUS - BATTLESTRINGS_TABLE_START] = sText_AttackerCuredTargetStatus, + [STRINGID_ILLUSIONWOREOFF - BATTLESTRINGS_TABLE_START] = sText_IllusionWoreOff, + [STRINGID_BUGBITE - BATTLESTRINGS_TABLE_START] = sText_BugBite, + [STRINGID_INCINERATEBURN - BATTLESTRINGS_TABLE_START] = sText_IncinerateBurn, + [STRINGID_AIRBALLOONPOP - BATTLESTRINGS_TABLE_START] = sText_AirBalloonPop, + [STRINGID_AIRBALLOONFLOAT - BATTLESTRINGS_TABLE_START] = sText_AirBalloonFloat, + [STRINGID_TARGETATEITEM - BATTLESTRINGS_TABLE_START] = sText_TargetAteItem, + [STRINGID_BERRYDMGREDUCES - BATTLESTRINGS_TABLE_START] = sText_BerryDmgReducing, + [STRINGID_GEMACTIVATES - BATTLESTRINGS_TABLE_START] = sText_GemActivates, + [STRINGID_LASERFOCUS - BATTLESTRINGS_TABLE_START] = sText_LaserFocusMessage, + [STRINGID_THROATCHOPENDS - BATTLESTRINGS_TABLE_START] = sText_ThroatChopEnds, + [STRINGID_PKMNCANTUSEMOVETHROATCHOP - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseMoveThroatChop, + [STRINGID_USEDINSTRUCTEDMOVE - BATTLESTRINGS_TABLE_START] = sText_UsedInstructedMove, + [STRINGID_CELEBRATEMESSAGE - BATTLESTRINGS_TABLE_START] = sText_CelebrateMessage, + [STRINGID_AROMAVEILPROTECTED - BATTLESTRINGS_TABLE_START] = sText_AromaVeilProtected, + [STRINGID_SWEETVEILPROTECTED - BATTLESTRINGS_TABLE_START] = sText_SweetVeilProtected, + [STRINGID_FLOWERVEILPROTECTED - BATTLESTRINGS_TABLE_START] = sText_FlowerVeilProtected, + [STRINGID_SAFETYGOGGLESPROTECTED - BATTLESTRINGS_TABLE_START] = sText_SafetyGogglesProtected, + [STRINGID_SPECTRALTHIEFSTEAL - BATTLESTRINGS_TABLE_START] = sText_SpectralThiefSteal, + [STRINGID_BELCHCANTSELECT - BATTLESTRINGS_TABLE_START] = sText_BelchCantUse, + [STRINGID_TRAINER1LOSETEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer1LoseText, + [STRINGID_PKMNGAINEDEXP - BATTLESTRINGS_TABLE_START] = sText_PkmnGainedEXP, + [STRINGID_PKMNGREWTOLV - BATTLESTRINGS_TABLE_START] = sText_PkmnGrewToLv, + [STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnLearnedMove, + [STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_TABLE_START] = sText_TryToLearnMove1, + [STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_TABLE_START] = sText_TryToLearnMove2, + [STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_TABLE_START] = sText_TryToLearnMove3, + [STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnForgotMove, + [STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_TABLE_START] = sText_StopLearningMove, + [STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_TABLE_START] = sText_DidNotLearnMove, + [STRINGID_PKMNLEARNEDMOVE2 - BATTLESTRINGS_TABLE_START] = sText_PkmnLearnedMove2, + [STRINGID_ATTACKMISSED - BATTLESTRINGS_TABLE_START] = sText_AttackMissed, + [STRINGID_PKMNPROTECTEDITSELF - BATTLESTRINGS_TABLE_START] = sText_PkmnProtectedItself, + [STRINGID_STATSWONTINCREASE2 - BATTLESTRINGS_TABLE_START] = sText_StatsWontIncrease2, + [STRINGID_AVOIDEDDAMAGE - BATTLESTRINGS_TABLE_START] = sText_AvoidedDamage, + [STRINGID_ITDOESNTAFFECT - BATTLESTRINGS_TABLE_START] = sText_ItDoesntAffect, + [STRINGID_ATTACKERFAINTED - BATTLESTRINGS_TABLE_START] = sText_AttackerFainted, + [STRINGID_TARGETFAINTED - BATTLESTRINGS_TABLE_START] = sText_TargetFainted, + [STRINGID_PLAYERGOTMONEY - BATTLESTRINGS_TABLE_START] = sText_PlayerGotMoney, + [STRINGID_PLAYERWHITEOUT - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteout, + [STRINGID_PLAYERWHITEOUT2 - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteout2, + [STRINGID_PREVENTSESCAPE - BATTLESTRINGS_TABLE_START] = sText_PreventsEscape, + [STRINGID_HITXTIMES - BATTLESTRINGS_TABLE_START] = sText_HitXTimes, + [STRINGID_PKMNFELLASLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnFellAsleep, + [STRINGID_PKMNMADESLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeSleep, + [STRINGID_PKMNALREADYASLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnAlreadyAsleep, + [STRINGID_PKMNALREADYASLEEP2 - BATTLESTRINGS_TABLE_START] = sText_PkmnAlreadyAsleep2, + [STRINGID_PKMNWASNTAFFECTED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasntAffected, + [STRINGID_PKMNWASPOISONED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasPoisoned, + [STRINGID_PKMNPOISONEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnPoisonedBy, + [STRINGID_PKMNHURTBYPOISON - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByPoison, + [STRINGID_PKMNALREADYPOISONED - BATTLESTRINGS_TABLE_START] = sText_PkmnAlreadyPoisoned, + [STRINGID_PKMNBADLYPOISONED - BATTLESTRINGS_TABLE_START] = sText_PkmnBadlyPoisoned, + [STRINGID_PKMNENERGYDRAINED - BATTLESTRINGS_TABLE_START] = sText_PkmnEnergyDrained, + [STRINGID_PKMNWASBURNED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasBurned, + [STRINGID_PKMNBURNEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnBurnedBy, + [STRINGID_PKMNHURTBYBURN - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByBurn, + [STRINGID_PKMNWASFROZEN - BATTLESTRINGS_TABLE_START] = sText_PkmnWasFrozen, + [STRINGID_PKMNFROZENBY - BATTLESTRINGS_TABLE_START] = sText_PkmnFrozenBy, + [STRINGID_PKMNISFROZEN - BATTLESTRINGS_TABLE_START] = sText_PkmnIsFrozen, + [STRINGID_PKMNWASDEFROSTED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasDefrosted, + [STRINGID_PKMNWASDEFROSTED2 - BATTLESTRINGS_TABLE_START] = sText_PkmnWasDefrosted2, + [STRINGID_PKMNWASDEFROSTEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnWasDefrostedBy, + [STRINGID_PKMNWASPARALYZED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasParalyzed, + [STRINGID_PKMNWASPARALYZEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnWasParalyzedBy, + [STRINGID_PKMNISPARALYZED - BATTLESTRINGS_TABLE_START] = sText_PkmnIsParalyzed, + [STRINGID_PKMNISALREADYPARALYZED - BATTLESTRINGS_TABLE_START] = sText_PkmnIsAlreadyParalyzed, + [STRINGID_PKMNHEALEDPARALYSIS - BATTLESTRINGS_TABLE_START] = sText_PkmnHealedParalysis, + [STRINGID_PKMNDREAMEATEN - BATTLESTRINGS_TABLE_START] = sText_PkmnDreamEaten, + [STRINGID_STATSWONTINCREASE - BATTLESTRINGS_TABLE_START] = sText_StatsWontIncrease, + [STRINGID_STATSWONTDECREASE - BATTLESTRINGS_TABLE_START] = sText_StatsWontDecrease, + [STRINGID_TEAMSTOPPEDWORKING - BATTLESTRINGS_TABLE_START] = sText_TeamStoppedWorking, + [STRINGID_FOESTOPPEDWORKING - BATTLESTRINGS_TABLE_START] = sText_FoeStoppedWorking, + [STRINGID_PKMNISCONFUSED - BATTLESTRINGS_TABLE_START] = sText_PkmnIsConfused, + [STRINGID_PKMNHEALEDCONFUSION - BATTLESTRINGS_TABLE_START] = sText_PkmnHealedConfusion, + [STRINGID_PKMNWASCONFUSED - BATTLESTRINGS_TABLE_START] = sText_PkmnWasConfused, + [STRINGID_PKMNALREADYCONFUSED - BATTLESTRINGS_TABLE_START] = sText_PkmnAlreadyConfused, + [STRINGID_PKMNFELLINLOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnFellInLove, + [STRINGID_PKMNINLOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnInLove, + [STRINGID_PKMNIMMOBILIZEDBYLOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnImmobilizedByLove, + [STRINGID_PKMNBLOWNAWAY - BATTLESTRINGS_TABLE_START] = sText_PkmnBlownAway, + [STRINGID_PKMNCHANGEDTYPE - BATTLESTRINGS_TABLE_START] = sText_PkmnChangedType, + [STRINGID_PKMNFLINCHED - BATTLESTRINGS_TABLE_START] = sText_PkmnFlinched, + [STRINGID_PKMNREGAINEDHEALTH - BATTLESTRINGS_TABLE_START] = sText_PkmnRegainedHealth, + [STRINGID_PKMNHPFULL - BATTLESTRINGS_TABLE_START] = sText_PkmnHPFull, + [STRINGID_PKMNRAISEDSPDEF - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedSpDef, + [STRINGID_PKMNRAISEDDEF - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedDef, + [STRINGID_PKMNCOVEREDBYVEIL - BATTLESTRINGS_TABLE_START] = sText_PkmnCoveredByVeil, + [STRINGID_PKMNUSEDSAFEGUARD - BATTLESTRINGS_TABLE_START] = sText_PkmnUsedSafeguard, + [STRINGID_PKMNSAFEGUARDEXPIRED - BATTLESTRINGS_TABLE_START] = sText_PkmnSafeguardExpired, + [STRINGID_PKMNWENTTOSLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnWentToSleep, + [STRINGID_PKMNSLEPTHEALTHY - BATTLESTRINGS_TABLE_START] = sText_PkmnSleptHealthy, + [STRINGID_PKMNWHIPPEDWHIRLWIND - BATTLESTRINGS_TABLE_START] = sText_PkmnWhippedWhirlwind, + [STRINGID_PKMNTOOKSUNLIGHT - BATTLESTRINGS_TABLE_START] = sText_PkmnTookSunlight, + [STRINGID_PKMNLOWEREDHEAD - BATTLESTRINGS_TABLE_START] = sText_PkmnLoweredHead, + [STRINGID_PKMNISGLOWING - BATTLESTRINGS_TABLE_START] = sText_PkmnIsGlowing, + [STRINGID_PKMNFLEWHIGH - BATTLESTRINGS_TABLE_START] = sText_PkmnFlewHigh, + [STRINGID_PKMNDUGHOLE - BATTLESTRINGS_TABLE_START] = sText_PkmnDugHole, + [STRINGID_PKMNSQUEEZEDBYBIND - BATTLESTRINGS_TABLE_START] = sText_PkmnSqueezedByBind, + [STRINGID_PKMNTRAPPEDINVORTEX - BATTLESTRINGS_TABLE_START] = sText_PkmnTrappedInVortex, + [STRINGID_PKMNWRAPPEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnWrappedBy, + [STRINGID_PKMNCLAMPED - BATTLESTRINGS_TABLE_START] = sText_PkmnClamped, + [STRINGID_PKMNHURTBY - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtBy, + [STRINGID_PKMNFREEDFROM - BATTLESTRINGS_TABLE_START] = sText_PkmnFreedFrom, + [STRINGID_PKMNCRASHED - BATTLESTRINGS_TABLE_START] = sText_PkmnCrashed, + [STRINGID_PKMNSHROUDEDINMIST - BATTLESTRINGS_TABLE_START] = gText_PkmnShroudedInMist, + [STRINGID_PKMNPROTECTEDBYMIST - BATTLESTRINGS_TABLE_START] = sText_PkmnProtectedByMist, + [STRINGID_PKMNGETTINGPUMPED - BATTLESTRINGS_TABLE_START] = gText_PkmnGettingPumped, + [STRINGID_PKMNHITWITHRECOIL - BATTLESTRINGS_TABLE_START] = sText_PkmnHitWithRecoil, + [STRINGID_PKMNPROTECTEDITSELF2 - BATTLESTRINGS_TABLE_START] = sText_PkmnProtectedItself2, + [STRINGID_PKMNBUFFETEDBYSANDSTORM - BATTLESTRINGS_TABLE_START] = sText_PkmnBuffetedBySandstorm, + [STRINGID_PKMNPELTEDBYHAIL - BATTLESTRINGS_TABLE_START] = sText_PkmnPeltedByHail, + [STRINGID_PKMNSEEDED - BATTLESTRINGS_TABLE_START] = sText_PkmnSeeded, + [STRINGID_PKMNEVADEDATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnEvadedAttack, + [STRINGID_PKMNSAPPEDBYLEECHSEED - BATTLESTRINGS_TABLE_START] = sText_PkmnSappedByLeechSeed, + [STRINGID_PKMNFASTASLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnFastAsleep, + [STRINGID_PKMNWOKEUP - BATTLESTRINGS_TABLE_START] = sText_PkmnWokeUp, + [STRINGID_PKMNUPROARKEPTAWAKE - BATTLESTRINGS_TABLE_START] = sText_PkmnUproarKeptAwake, + [STRINGID_PKMNWOKEUPINUPROAR - BATTLESTRINGS_TABLE_START] = sText_PkmnWokeUpInUproar, + [STRINGID_PKMNCAUSEDUPROAR - BATTLESTRINGS_TABLE_START] = sText_PkmnCausedUproar, + [STRINGID_PKMNMAKINGUPROAR - BATTLESTRINGS_TABLE_START] = sText_PkmnMakingUproar, + [STRINGID_PKMNCALMEDDOWN - BATTLESTRINGS_TABLE_START] = sText_PkmnCalmedDown, + [STRINGID_PKMNCANTSLEEPINUPROAR - BATTLESTRINGS_TABLE_START] = sText_PkmnCantSleepInUproar, + [STRINGID_PKMNSTOCKPILED - BATTLESTRINGS_TABLE_START] = sText_PkmnStockpiled, + [STRINGID_PKMNCANTSTOCKPILE - BATTLESTRINGS_TABLE_START] = sText_PkmnCantStockpile, + [STRINGID_PKMNCANTSLEEPINUPROAR2 - BATTLESTRINGS_TABLE_START] = sText_PkmnCantSleepInUproar2, + [STRINGID_UPROARKEPTPKMNAWAKE - BATTLESTRINGS_TABLE_START] = sText_UproarKeptPkmnAwake, + [STRINGID_PKMNSTAYEDAWAKEUSING - BATTLESTRINGS_TABLE_START] = sText_PkmnStayedAwakeUsing, + [STRINGID_PKMNSTORINGENERGY - BATTLESTRINGS_TABLE_START] = sText_PkmnStoringEnergy, + [STRINGID_PKMNUNLEASHEDENERGY - BATTLESTRINGS_TABLE_START] = sText_PkmnUnleashedEnergy, + [STRINGID_PKMNFATIGUECONFUSION - BATTLESTRINGS_TABLE_START] = sText_PkmnFatigueConfusion, + [STRINGID_PLAYERPICKEDUPMONEY - BATTLESTRINGS_TABLE_START] = sText_PlayerPickedUpMoney, + [STRINGID_PKMNUNAFFECTED - BATTLESTRINGS_TABLE_START] = sText_PkmnUnaffected, + [STRINGID_PKMNTRANSFORMEDINTO - BATTLESTRINGS_TABLE_START] = sText_PkmnTransformedInto, + [STRINGID_PKMNMADESUBSTITUTE - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeSubstitute, + [STRINGID_PKMNHASSUBSTITUTE - BATTLESTRINGS_TABLE_START] = sText_PkmnHasSubstitute, + [STRINGID_SUBSTITUTEDAMAGED - BATTLESTRINGS_TABLE_START] = sText_SubstituteDamaged, + [STRINGID_PKMNSUBSTITUTEFADED - BATTLESTRINGS_TABLE_START] = sText_PkmnSubstituteFaded, + [STRINGID_PKMNMUSTRECHARGE - BATTLESTRINGS_TABLE_START] = sText_PkmnMustRecharge, + [STRINGID_PKMNRAGEBUILDING - BATTLESTRINGS_TABLE_START] = sText_PkmnRageBuilding, + [STRINGID_PKMNMOVEWASDISABLED - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveWasDisabled, + [STRINGID_PKMNMOVEISDISABLED - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveIsDisabled, + [STRINGID_PKMNMOVEDISABLEDNOMORE - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveDisabledNoMore, + [STRINGID_PKMNGOTENCORE - BATTLESTRINGS_TABLE_START] = sText_PkmnGotEncore, + [STRINGID_PKMNENCOREENDED - BATTLESTRINGS_TABLE_START] = sText_PkmnEncoreEnded, + [STRINGID_PKMNTOOKAIM - BATTLESTRINGS_TABLE_START] = sText_PkmnTookAim, + [STRINGID_PKMNSKETCHEDMOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnSketchedMove, + [STRINGID_PKMNTRYINGTOTAKEFOE - BATTLESTRINGS_TABLE_START] = sText_PkmnTryingToTakeFoe, + [STRINGID_PKMNTOOKFOE - BATTLESTRINGS_TABLE_START] = sText_PkmnTookFoe, + [STRINGID_PKMNREDUCEDPP - BATTLESTRINGS_TABLE_START] = sText_PkmnReducedPP, + [STRINGID_PKMNSTOLEITEM - BATTLESTRINGS_TABLE_START] = sText_PkmnStoleItem, + [STRINGID_TARGETCANTESCAPENOW - BATTLESTRINGS_TABLE_START] = sText_TargetCantEscapeNow, + [STRINGID_PKMNFELLINTONIGHTMARE - BATTLESTRINGS_TABLE_START] = sText_PkmnFellIntoNightmare, + [STRINGID_PKMNLOCKEDINNIGHTMARE - BATTLESTRINGS_TABLE_START] = sText_PkmnLockedInNightmare, + [STRINGID_PKMNLAIDCURSE - BATTLESTRINGS_TABLE_START] = sText_PkmnLaidCurse, + [STRINGID_PKMNAFFLICTEDBYCURSE - BATTLESTRINGS_TABLE_START] = sText_PkmnAfflictedByCurse, + [STRINGID_SPIKESSCATTERED - BATTLESTRINGS_TABLE_START] = sText_SpikesScattered, + [STRINGID_PKMNHURTBYSPIKES - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtBySpikes, + [STRINGID_PKMNIDENTIFIED - BATTLESTRINGS_TABLE_START] = sText_PkmnIdentified, + [STRINGID_PKMNPERISHCOUNTFELL - BATTLESTRINGS_TABLE_START] = sText_PkmnPerishCountFell, + [STRINGID_PKMNBRACEDITSELF - BATTLESTRINGS_TABLE_START] = sText_PkmnBracedItself, + [STRINGID_PKMNENDUREDHIT - BATTLESTRINGS_TABLE_START] = sText_PkmnEnduredHit, + [STRINGID_MAGNITUDESTRENGTH - BATTLESTRINGS_TABLE_START] = sText_MagnitudeStrength, + [STRINGID_PKMNCUTHPMAXEDATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnCutHPMaxedAttack, + [STRINGID_PKMNCOPIEDSTATCHANGES - BATTLESTRINGS_TABLE_START] = sText_PkmnCopiedStatChanges, + [STRINGID_PKMNGOTFREE - BATTLESTRINGS_TABLE_START] = sText_PkmnGotFree, + [STRINGID_PKMNSHEDLEECHSEED - BATTLESTRINGS_TABLE_START] = sText_PkmnShedLeechSeed, + [STRINGID_PKMNBLEWAWAYSPIKES - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwaySpikes, + [STRINGID_PKMNFLEDFROMBATTLE - BATTLESTRINGS_TABLE_START] = sText_PkmnFledFromBattle, + [STRINGID_PKMNFORESAWATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnForesawAttack, + [STRINGID_PKMNTOOKATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnTookAttack, + [STRINGID_PKMNATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnAttack, + [STRINGID_PKMNCENTERATTENTION - BATTLESTRINGS_TABLE_START] = sText_PkmnCenterAttention, + [STRINGID_PKMNCHARGINGPOWER - BATTLESTRINGS_TABLE_START] = sText_PkmnChargingPower, + [STRINGID_NATUREPOWERTURNEDINTO - BATTLESTRINGS_TABLE_START] = sText_NaturePowerTurnedInto, + [STRINGID_PKMNSTATUSNORMAL - BATTLESTRINGS_TABLE_START] = sText_PkmnStatusNormal, + [STRINGID_PKMNHASNOMOVESLEFT - BATTLESTRINGS_TABLE_START] = sText_PkmnHasNoMovesLeft, + [STRINGID_PKMNSUBJECTEDTOTORMENT - BATTLESTRINGS_TABLE_START] = sText_PkmnSubjectedToTorment, + [STRINGID_PKMNCANTUSEMOVETORMENT - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseMoveTorment, + [STRINGID_PKMNTIGHTENINGFOCUS - BATTLESTRINGS_TABLE_START] = sText_PkmnTighteningFocus, + [STRINGID_PKMNFELLFORTAUNT - BATTLESTRINGS_TABLE_START] = sText_PkmnFellForTaunt, + [STRINGID_PKMNCANTUSEMOVETAUNT - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseMoveTaunt, + [STRINGID_PKMNREADYTOHELP - BATTLESTRINGS_TABLE_START] = sText_PkmnReadyToHelp, + [STRINGID_PKMNSWITCHEDITEMS - BATTLESTRINGS_TABLE_START] = sText_PkmnSwitchedItems, + [STRINGID_PKMNCOPIEDFOE - BATTLESTRINGS_TABLE_START] = sText_PkmnCopiedFoe, + [STRINGID_PKMNMADEWISH - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeWish, + [STRINGID_PKMNWISHCAMETRUE - BATTLESTRINGS_TABLE_START] = sText_PkmnWishCameTrue, + [STRINGID_PKMNPLANTEDROOTS - BATTLESTRINGS_TABLE_START] = sText_PkmnPlantedRoots, + [STRINGID_PKMNABSORBEDNUTRIENTS - BATTLESTRINGS_TABLE_START] = sText_PkmnAbsorbedNutrients, + [STRINGID_PKMNANCHOREDITSELF - BATTLESTRINGS_TABLE_START] = sText_PkmnAnchoredItself, + [STRINGID_PKMNWASMADEDROWSY - BATTLESTRINGS_TABLE_START] = sText_PkmnWasMadeDrowsy, + [STRINGID_PKMNKNOCKEDOFF - BATTLESTRINGS_TABLE_START] = sText_PkmnKnockedOff, + [STRINGID_PKMNSWAPPEDABILITIES - BATTLESTRINGS_TABLE_START] = sText_PkmnSwappedAbilities, + [STRINGID_PKMNSEALEDOPPONENTMOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnSealedOpponentMove, + [STRINGID_PKMNCANTUSEMOVESEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseMoveSealed, + [STRINGID_PKMNWANTSGRUDGE - BATTLESTRINGS_TABLE_START] = sText_PkmnWantsGrudge, + [STRINGID_PKMNLOSTPPGRUDGE - BATTLESTRINGS_TABLE_START] = sText_PkmnLostPPGrudge, + [STRINGID_PKMNSHROUDEDITSELF - BATTLESTRINGS_TABLE_START] = sText_PkmnShroudedItself, + [STRINGID_PKMNMOVEBOUNCED - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveBounced, + [STRINGID_PKMNWAITSFORTARGET - BATTLESTRINGS_TABLE_START] = sText_PkmnWaitsForTarget, + [STRINGID_PKMNSNATCHEDMOVE - BATTLESTRINGS_TABLE_START] = sText_PkmnSnatchedMove, + [STRINGID_PKMNMADEITRAIN - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeItRain, + [STRINGID_PKMNRAISEDSPEED - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedSpeed, + [STRINGID_PKMNPROTECTEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnProtectedBy, + [STRINGID_PKMNPREVENTSUSAGE - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsUsage, + [STRINGID_PKMNRESTOREDHPUSING - BATTLESTRINGS_TABLE_START] = sText_PkmnRestoredHPUsing, + [STRINGID_PKMNCHANGEDTYPEWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnChangedTypeWith, + [STRINGID_PKMNPREVENTSPARALYSISWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsParalysisWith, + [STRINGID_PKMNPREVENTSROMANCEWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsRomanceWith, + [STRINGID_PKMNPREVENTSPOISONINGWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsPoisoningWith, + [STRINGID_PKMNPREVENTSCONFUSIONWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsConfusionWith, + [STRINGID_PKMNRAISEDFIREPOWERWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedFirePowerWith, + [STRINGID_PKMNANCHORSITSELFWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnAnchorsItselfWith, + [STRINGID_PKMNCUTSATTACKWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnCutsAttackWith, + [STRINGID_PKMNPREVENTSSTATLOSSWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventsStatLossWith, + [STRINGID_PKMNHURTSWITH - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtsWith, + [STRINGID_PKMNTRACED - BATTLESTRINGS_TABLE_START] = sText_PkmnTraced, + [STRINGID_STATSHARPLY - BATTLESTRINGS_TABLE_START] = gText_StatSharply, + [STRINGID_STATROSE - BATTLESTRINGS_TABLE_START] = gText_StatRose, + [STRINGID_STATHARSHLY - BATTLESTRINGS_TABLE_START] = sText_StatHarshly, + [STRINGID_STATFELL - BATTLESTRINGS_TABLE_START] = sText_StatFell, + [STRINGID_ATTACKERSSTATROSE - BATTLESTRINGS_TABLE_START] = sText_AttackersStatRose, + [STRINGID_DEFENDERSSTATROSE - BATTLESTRINGS_TABLE_START] = gText_DefendersStatRose, + [STRINGID_ATTACKERSSTATFELL - BATTLESTRINGS_TABLE_START] = sText_AttackersStatFell, + [STRINGID_DEFENDERSSTATFELL - BATTLESTRINGS_TABLE_START] = sText_DefendersStatFell, + [STRINGID_CRITICALHIT - BATTLESTRINGS_TABLE_START] = sText_CriticalHit, + [STRINGID_ONEHITKO - BATTLESTRINGS_TABLE_START] = sText_OneHitKO, + [STRINGID_123POOF - BATTLESTRINGS_TABLE_START] = sText_123Poof, + [STRINGID_ANDELLIPSIS - BATTLESTRINGS_TABLE_START] = sText_AndEllipsis, + [STRINGID_NOTVERYEFFECTIVE - BATTLESTRINGS_TABLE_START] = sText_NotVeryEffective, + [STRINGID_SUPEREFFECTIVE - BATTLESTRINGS_TABLE_START] = sText_SuperEffective, + [STRINGID_GOTAWAYSAFELY - BATTLESTRINGS_TABLE_START] = sText_GotAwaySafely, + [STRINGID_WILDPKMNFLED - BATTLESTRINGS_TABLE_START] = sText_WildPkmnFled, + [STRINGID_NORUNNINGFROMTRAINERS - BATTLESTRINGS_TABLE_START] = sText_NoRunningFromTrainers, + [STRINGID_CANTESCAPE - BATTLESTRINGS_TABLE_START] = sText_CantEscape, + [STRINGID_DONTLEAVEBIRCH - BATTLESTRINGS_TABLE_START] = sText_DontLeaveBirch, + [STRINGID_BUTNOTHINGHAPPENED - BATTLESTRINGS_TABLE_START] = sText_ButNothingHappened, + [STRINGID_BUTITFAILED - BATTLESTRINGS_TABLE_START] = sText_ButItFailed, + [STRINGID_ITHURTCONFUSION - BATTLESTRINGS_TABLE_START] = sText_ItHurtConfusion, + [STRINGID_MIRRORMOVEFAILED - BATTLESTRINGS_TABLE_START] = sText_MirrorMoveFailed, + [STRINGID_STARTEDTORAIN - BATTLESTRINGS_TABLE_START] = sText_StartedToRain, + [STRINGID_DOWNPOURSTARTED - BATTLESTRINGS_TABLE_START] = sText_DownpourStarted, + [STRINGID_RAINCONTINUES - BATTLESTRINGS_TABLE_START] = sText_RainContinues, + [STRINGID_DOWNPOURCONTINUES - BATTLESTRINGS_TABLE_START] = sText_DownpourContinues, + [STRINGID_RAINSTOPPED - BATTLESTRINGS_TABLE_START] = sText_RainStopped, + [STRINGID_SANDSTORMBREWED - BATTLESTRINGS_TABLE_START] = sText_SandstormBrewed, + [STRINGID_SANDSTORMRAGES - BATTLESTRINGS_TABLE_START] = sText_SandstormRages, + [STRINGID_SANDSTORMSUBSIDED - BATTLESTRINGS_TABLE_START] = sText_SandstormSubsided, + [STRINGID_SUNLIGHTGOTBRIGHT - BATTLESTRINGS_TABLE_START] = sText_SunlightGotBright, + [STRINGID_SUNLIGHTSTRONG - BATTLESTRINGS_TABLE_START] = sText_SunlightStrong, + [STRINGID_SUNLIGHTFADED - BATTLESTRINGS_TABLE_START] = sText_SunlightFaded, + [STRINGID_STARTEDHAIL - BATTLESTRINGS_TABLE_START] = sText_StartedHail, + [STRINGID_HAILCONTINUES - BATTLESTRINGS_TABLE_START] = sText_HailContinues, + [STRINGID_HAILSTOPPED - BATTLESTRINGS_TABLE_START] = sText_HailStopped, + [STRINGID_STARTEDSNOW - BATTLESTRINGS_TABLE_START] = sText_StartedSnow, + [STRINGID_SNOWCONTINUES -BATTLESTRINGS_TABLE_START] = sText_SnowContinues, + [STRINGID_SNOWSTOPPED - BATTLESTRINGS_TABLE_START] = sText_SnowStopped, + [STRINGID_FAILEDTOSPITUP - BATTLESTRINGS_TABLE_START] = sText_FailedToSpitUp, + [STRINGID_FAILEDTOSWALLOW - BATTLESTRINGS_TABLE_START] = sText_FailedToSwallow, + [STRINGID_WINDBECAMEHEATWAVE - BATTLESTRINGS_TABLE_START] = sText_WindBecameHeatWave, + [STRINGID_STATCHANGESGONE - BATTLESTRINGS_TABLE_START] = sText_StatChangesGone, + [STRINGID_COINSSCATTERED - BATTLESTRINGS_TABLE_START] = sText_CoinsScattered, + [STRINGID_TOOWEAKFORSUBSTITUTE - BATTLESTRINGS_TABLE_START] = sText_TooWeakForSubstitute, + [STRINGID_SHAREDPAIN - BATTLESTRINGS_TABLE_START] = sText_SharedPain, + [STRINGID_BELLCHIMED - BATTLESTRINGS_TABLE_START] = sText_BellChimed, + [STRINGID_FAINTINTHREE - BATTLESTRINGS_TABLE_START] = sText_FaintInThree, + [STRINGID_NOPPLEFT - BATTLESTRINGS_TABLE_START] = sText_NoPPLeft, + [STRINGID_BUTNOPPLEFT - BATTLESTRINGS_TABLE_START] = sText_ButNoPPLeft, + [STRINGID_PLAYERUSEDITEM - BATTLESTRINGS_TABLE_START] = sText_PlayerUsedItem, + [STRINGID_WALLYUSEDITEM - BATTLESTRINGS_TABLE_START] = sText_WallyUsedItem, + [STRINGID_TRAINERBLOCKEDBALL - BATTLESTRINGS_TABLE_START] = sText_TrainerBlockedBall, + [STRINGID_DONTBEATHIEF - BATTLESTRINGS_TABLE_START] = sText_DontBeAThief, + [STRINGID_ITDODGEDBALL - BATTLESTRINGS_TABLE_START] = sText_ItDodgedBall, + [STRINGID_YOUMISSEDPKMN - BATTLESTRINGS_TABLE_START] = sText_YouMissedPkmn, + [STRINGID_PKMNBROKEFREE - BATTLESTRINGS_TABLE_START] = sText_PkmnBrokeFree, + [STRINGID_ITAPPEAREDCAUGHT - BATTLESTRINGS_TABLE_START] = sText_ItAppearedCaught, + [STRINGID_AARGHALMOSTHADIT - BATTLESTRINGS_TABLE_START] = sText_AarghAlmostHadIt, + [STRINGID_SHOOTSOCLOSE - BATTLESTRINGS_TABLE_START] = sText_ShootSoClose, + [STRINGID_GOTCHAPKMNCAUGHTPLAYER - BATTLESTRINGS_TABLE_START] = sText_GotchaPkmnCaughtPlayer, + [STRINGID_GOTCHAPKMNCAUGHTWALLY - BATTLESTRINGS_TABLE_START] = sText_GotchaPkmnCaughtWally, + [STRINGID_GIVENICKNAMECAPTURED - BATTLESTRINGS_TABLE_START] = sText_GiveNicknameCaptured, + [STRINGID_PKMNSENTTOPC - BATTLESTRINGS_TABLE_START] = sText_PkmnSentToPC, + [STRINGID_PKMNDATAADDEDTODEX - BATTLESTRINGS_TABLE_START] = sText_PkmnDataAddedToDex, + [STRINGID_ITISRAINING - BATTLESTRINGS_TABLE_START] = sText_ItIsRaining, + [STRINGID_SANDSTORMISRAGING - BATTLESTRINGS_TABLE_START] = sText_SandstormIsRaging, + [STRINGID_CANTESCAPE2 - BATTLESTRINGS_TABLE_START] = sText_CantEscape2, + [STRINGID_PKMNIGNORESASLEEP - BATTLESTRINGS_TABLE_START] = sText_PkmnIgnoresAsleep, + [STRINGID_PKMNIGNOREDORDERS - BATTLESTRINGS_TABLE_START] = sText_PkmnIgnoredOrders, + [STRINGID_PKMNBEGANTONAP - BATTLESTRINGS_TABLE_START] = sText_PkmnBeganToNap, + [STRINGID_PKMNLOAFING - BATTLESTRINGS_TABLE_START] = sText_PkmnLoafing, + [STRINGID_PKMNWONTOBEY - BATTLESTRINGS_TABLE_START] = sText_PkmnWontObey, + [STRINGID_PKMNTURNEDAWAY - BATTLESTRINGS_TABLE_START] = sText_PkmnTurnedAway, + [STRINGID_PKMNPRETENDNOTNOTICE - BATTLESTRINGS_TABLE_START] = sText_PkmnPretendNotNotice, + [STRINGID_ENEMYABOUTTOSWITCHPKMN - BATTLESTRINGS_TABLE_START] = sText_EnemyAboutToSwitchPkmn, + [STRINGID_CREPTCLOSER - BATTLESTRINGS_TABLE_START] = sText_CreptCloser, + [STRINGID_CANTGETCLOSER - BATTLESTRINGS_TABLE_START] = sText_CantGetCloser, + [STRINGID_PKMNWATCHINGCAREFULLY - BATTLESTRINGS_TABLE_START] = sText_PkmnWatchingCarefully, + [STRINGID_PKMNCURIOUSABOUTX - BATTLESTRINGS_TABLE_START] = sText_PkmnCuriousAboutX, + [STRINGID_PKMNENTHRALLEDBYX - BATTLESTRINGS_TABLE_START] = sText_PkmnEnthralledByX, + [STRINGID_PKMNIGNOREDX - BATTLESTRINGS_TABLE_START] = sText_PkmnIgnoredX, + [STRINGID_THREWPOKEBLOCKATPKMN - BATTLESTRINGS_TABLE_START] = sText_ThrewPokeblockAtPkmn, + [STRINGID_OUTOFSAFARIBALLS - BATTLESTRINGS_TABLE_START] = sText_OutOfSafariBalls, + [STRINGID_PKMNSITEMCUREDPARALYSIS - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemCuredParalysis, + [STRINGID_PKMNSITEMCUREDPOISON - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemCuredPoison, + [STRINGID_PKMNSITEMHEALEDBURN - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemHealedBurn, + [STRINGID_PKMNSITEMDEFROSTEDIT - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemDefrostedIt, + [STRINGID_PKMNSITEMWOKEIT - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemWokeIt, + [STRINGID_PKMNSITEMSNAPPEDOUT - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemSnappedOut, + [STRINGID_PKMNSITEMCUREDPROBLEM - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemCuredProblem, + [STRINGID_PKMNSITEMRESTOREDHEALTH - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemRestoredHealth, + [STRINGID_PKMNSITEMRESTOREDPP - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemRestoredPP, + [STRINGID_PKMNSITEMRESTOREDSTATUS - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemRestoredStatus, + [STRINGID_PKMNSITEMRESTOREDHPALITTLE - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemRestoredHPALittle, + [STRINGID_ITEMALLOWSONLYYMOVE - BATTLESTRINGS_TABLE_START] = sText_ItemAllowsOnlyYMove, + [STRINGID_PKMNHUNGONWITHX - BATTLESTRINGS_TABLE_START] = sText_PkmnHungOnWithX, + [STRINGID_EMPTYSTRING3 - BATTLESTRINGS_TABLE_START] = gText_EmptyString3, + [STRINGID_PKMNSXPREVENTSBURNS - BATTLESTRINGS_TABLE_START] = sText_PkmnsXPreventsBurns, + [STRINGID_PKMNSXBLOCKSY - BATTLESTRINGS_TABLE_START] = sText_PkmnsXBlocksY, + [STRINGID_PKMNSXRESTOREDHPALITTLE2 - BATTLESTRINGS_TABLE_START] = sText_PkmnsXRestoredHPALittle2, + [STRINGID_PKMNSXWHIPPEDUPSANDSTORM - BATTLESTRINGS_TABLE_START] = sText_PkmnsXWhippedUpSandstorm, + [STRINGID_PKMNSXPREVENTSYLOSS - BATTLESTRINGS_TABLE_START] = sText_PkmnsXPreventsYLoss, + [STRINGID_PKMNSXINFATUATEDY - BATTLESTRINGS_TABLE_START] = sText_PkmnsXInfatuatedY, + [STRINGID_PKMNSXMADEYINEFFECTIVE - BATTLESTRINGS_TABLE_START] = sText_PkmnsXMadeYIneffective, + [STRINGID_PKMNSXCUREDYPROBLEM - BATTLESTRINGS_TABLE_START] = sText_PkmnsXCuredYProblem, + [STRINGID_ITSUCKEDLIQUIDOOZE - BATTLESTRINGS_TABLE_START] = sText_ItSuckedLiquidOoze, + [STRINGID_PKMNTRANSFORMED - BATTLESTRINGS_TABLE_START] = sText_PkmnTransformed, + [STRINGID_ELECTRICITYWEAKENED - BATTLESTRINGS_TABLE_START] = sText_ElectricityWeakened, + [STRINGID_FIREWEAKENED - BATTLESTRINGS_TABLE_START] = sText_FireWeakened, + [STRINGID_PKMNHIDUNDERWATER - BATTLESTRINGS_TABLE_START] = sText_PkmnHidUnderwater, + [STRINGID_PKMNSPRANGUP - BATTLESTRINGS_TABLE_START] = sText_PkmnSprangUp, + [STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_TABLE_START] = sText_HMMovesCantBeForgotten, + [STRINGID_XFOUNDONEY - BATTLESTRINGS_TABLE_START] = sText_XFoundOneY, + [STRINGID_PLAYERDEFEATEDTRAINER1 - BATTLESTRINGS_TABLE_START] = sText_PlayerDefeatedLinkTrainerTrainer1, + [STRINGID_SOOTHINGAROMA - BATTLESTRINGS_TABLE_START] = sText_SoothingAroma, + [STRINGID_ITEMSCANTBEUSEDNOW - BATTLESTRINGS_TABLE_START] = sText_ItemsCantBeUsedNow, + [STRINGID_FORXCOMMAYZ - BATTLESTRINGS_TABLE_START] = sText_ForXCommaYZ, + [STRINGID_USINGITEMSTATOFPKMNROSE - BATTLESTRINGS_TABLE_START] = sText_UsingItemTheStatOfPkmnRose, + [STRINGID_PKMNUSEDXTOGETPUMPED - BATTLESTRINGS_TABLE_START] = sText_PkmnUsedXToGetPumped, + [STRINGID_PKMNSXMADEYUSELESS - BATTLESTRINGS_TABLE_START] = sText_PkmnsXMadeYUseless, + [STRINGID_PKMNTRAPPEDBYSANDTOMB - BATTLESTRINGS_TABLE_START] = sText_PkmnTrappedBySandTomb, + [STRINGID_EMPTYSTRING4 - BATTLESTRINGS_TABLE_START] = sText_EmptyString4, + [STRINGID_ABOOSTED - BATTLESTRINGS_TABLE_START] = sText_ABoosted, + [STRINGID_PKMNSXINTENSIFIEDSUN - BATTLESTRINGS_TABLE_START] = sText_PkmnsXIntensifiedSun, + [STRINGID_PKMNMAKESGROUNDMISS - BATTLESTRINGS_TABLE_START] = sText_PkmnMakesGroundMiss, + [STRINGID_YOUTHROWABALLNOWRIGHT - BATTLESTRINGS_TABLE_START] = sText_YouThrowABallNowRight, + [STRINGID_PKMNSXTOOKATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnsXTookAttack, + [STRINGID_PKMNCHOSEXASDESTINY - BATTLESTRINGS_TABLE_START] = sText_PkmnChoseXAsDestiny, + [STRINGID_PKMNLOSTFOCUS - BATTLESTRINGS_TABLE_START] = sText_PkmnLostFocus, + [STRINGID_USENEXTPKMN - BATTLESTRINGS_TABLE_START] = sText_UseNextPkmn, + [STRINGID_PKMNFLEDUSINGITS - BATTLESTRINGS_TABLE_START] = sText_PkmnFledUsingIts, + [STRINGID_PKMNFLEDUSING - BATTLESTRINGS_TABLE_START] = sText_PkmnFledUsing, + [STRINGID_PKMNWASDRAGGEDOUT - BATTLESTRINGS_TABLE_START] = sText_PkmnWasDraggedOut, + [STRINGID_PREVENTEDFROMWORKING - BATTLESTRINGS_TABLE_START] = sText_PreventedFromWorking, + [STRINGID_PKMNSITEMNORMALIZEDSTATUS - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemNormalizedStatus, + [STRINGID_TRAINER1USEDITEM - BATTLESTRINGS_TABLE_START] = sText_Trainer1UsedItem, + [STRINGID_BOXISFULL - BATTLESTRINGS_TABLE_START] = sText_BoxIsFull, + [STRINGID_PKMNAVOIDEDATTACK - BATTLESTRINGS_TABLE_START] = sText_PkmnAvoidedAttack, + [STRINGID_PKMNSXMADEITINEFFECTIVE - BATTLESTRINGS_TABLE_START] = sText_PkmnsXMadeItIneffective, + [STRINGID_PKMNSXPREVENTSFLINCHING - BATTLESTRINGS_TABLE_START] = sText_PkmnsXPreventsFlinching, + [STRINGID_PKMNALREADYHASBURN - BATTLESTRINGS_TABLE_START] = sText_PkmnAlreadyHasBurn, + [STRINGID_STATSWONTDECREASE2 - BATTLESTRINGS_TABLE_START] = sText_StatsWontDecrease2, + [STRINGID_PKMNSXBLOCKSY2 - BATTLESTRINGS_TABLE_START] = sText_PkmnsXBlocksY2, + [STRINGID_PKMNSXWOREOFF - BATTLESTRINGS_TABLE_START] = sText_PkmnsXWoreOff, + [STRINGID_PKMNRAISEDDEFALITTLE - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedDefALittle, + [STRINGID_PKMNRAISEDSPDEFALITTLE - BATTLESTRINGS_TABLE_START] = sText_PkmnRaisedSpDefALittle, + [STRINGID_THEWALLSHATTERED - BATTLESTRINGS_TABLE_START] = sText_TheWallShattered, + [STRINGID_PKMNSXPREVENTSYSZ - BATTLESTRINGS_TABLE_START] = sText_PkmnsXPreventsYsZ, + [STRINGID_PKMNSXCUREDITSYPROBLEM - BATTLESTRINGS_TABLE_START] = sText_PkmnsXCuredItsYProblem, + [STRINGID_ATTACKERCANTESCAPE - BATTLESTRINGS_TABLE_START] = sText_AttackerCantEscape, + [STRINGID_PKMNOBTAINEDX - BATTLESTRINGS_TABLE_START] = sText_PkmnObtainedX, + [STRINGID_PKMNOBTAINEDX2 - BATTLESTRINGS_TABLE_START] = sText_PkmnObtainedX2, + [STRINGID_PKMNOBTAINEDXYOBTAINEDZ - BATTLESTRINGS_TABLE_START] = sText_PkmnObtainedXYObtainedZ, + [STRINGID_BUTNOEFFECT - BATTLESTRINGS_TABLE_START] = sText_ButNoEffect, + [STRINGID_PKMNSXHADNOEFFECTONY - BATTLESTRINGS_TABLE_START] = sText_PkmnsXHadNoEffectOnY, + [STRINGID_TWOENEMIESDEFEATED - BATTLESTRINGS_TABLE_START] = sText_TwoInGameTrainersDefeated, + [STRINGID_TRAINER2LOSETEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer2LoseText, + [STRINGID_PKMNINCAPABLEOFPOWER - BATTLESTRINGS_TABLE_START] = sText_PkmnIncapableOfPower, + [STRINGID_GLINTAPPEARSINEYE - BATTLESTRINGS_TABLE_START] = sText_GlintAppearsInEye, + [STRINGID_PKMNGETTINGINTOPOSITION - BATTLESTRINGS_TABLE_START] = sText_PkmnGettingIntoPosition, + [STRINGID_PKMNBEGANGROWLINGDEEPLY - BATTLESTRINGS_TABLE_START] = sText_PkmnBeganGrowlingDeeply, + [STRINGID_PKMNEAGERFORMORE - BATTLESTRINGS_TABLE_START] = sText_PkmnEagerForMore, + [STRINGID_DEFEATEDOPPONENTBYREFEREE - BATTLESTRINGS_TABLE_START] = sText_DefeatedOpponentByReferee, + [STRINGID_LOSTTOOPPONENTBYREFEREE - BATTLESTRINGS_TABLE_START] = sText_LostToOpponentByReferee, + [STRINGID_TIEDOPPONENTBYREFEREE - BATTLESTRINGS_TABLE_START] = sText_TiedOpponentByReferee, + [STRINGID_QUESTIONFORFEITMATCH - BATTLESTRINGS_TABLE_START] = sText_QuestionForfeitMatch, + [STRINGID_FORFEITEDMATCH - BATTLESTRINGS_TABLE_START] = sText_ForfeitedMatch, [STRINGID_PKMNTRANSFERREDSOMEONESPC - BATTLESTRINGS_TABLE_START] = Text_MonSentToBoxInSomeonesPC, [STRINGID_PKMNTRANSFERREDBILLSPC - BATTLESTRINGS_TABLE_START] = Text_MonSentToBoxInBillsPC, [STRINGID_PKMNBOXSOMEONESPCFULL - BATTLESTRINGS_TABLE_START] = Text_MonSentToBoxSomeonesBoxFull, [STRINGID_PKMNBOXBILLSPCFULL - BATTLESTRINGS_TABLE_START] = Text_MonSentToBoxBillsBoxFull, - [STRINGID_POKEDUDEUSED - BATTLESTRINGS_TABLE_START] = sText_PokedudeUsedItem, - [STRINGID_POKEFLUTECATCHY - BATTLESTRINGS_TABLE_START] = sText_PlayedFluteCatchyTune, - [STRINGID_POKEFLUTE - BATTLESTRINGS_TABLE_START] = sText_PlayedThe, - [STRINGID_MONHEARINGFLUTEAWOKE - BATTLESTRINGS_TABLE_START] = sText_PkmnHearingFluteAwoke, - [STRINGID_TRAINER2LOSETEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer2LoseText, - [STRINGID_TRAINER2WINTEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer2WinText, - [STRINGID_PLAYERWHITEDOUT - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteout2, - [STRINGID_MONTOOSCAREDTOMOVE - BATTLESTRINGS_TABLE_START] = sText_TooScaredToMove, - [STRINGID_GHOSTGETOUTGETOUT - BATTLESTRINGS_TABLE_START] = sText_GetOutGetOut, - [STRINGID_SILPHSCOPEUNVEILED - BATTLESTRINGS_TABLE_START] = sText_SilphScopeUnveil, - [STRINGID_GHOSTWASMAROWAK - BATTLESTRINGS_TABLE_START] = sText_TheGhostWas, - [STRINGID_TRAINER1MON1COMEBACK - BATTLESTRINGS_TABLE_START] = sText_Trainer1RecallPkmn1, - [STRINGID_TRAINER1WINTEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer1WinText, - [STRINGID_TRAINER1MON2COMEBACK - BATTLESTRINGS_TABLE_START] = sText_Trainer1RecallPkmn2, - [STRINGID_TRAINER1MON1AND2COMEBACK - BATTLESTRINGS_TABLE_START] = sText_Trainer1RecallBoth, - [STRINGID_ITEMRESTOREDSPECIESHEALTH - BATTLESTRINGS_TABLE_START] = sText_ItemRestoredSpeciesHealth, - [STRINGID_ITEMRESTOREDSPECIESPP - BATTLESTRINGS_TABLE_START] = sText_ItemRestoredSpeciesPP, - [STRINGID_ITEMCUREDSPECIESSTATUS - BATTLESTRINGS_TABLE_START] = sText_ItemCuredSpeciesStatus, - [STRINGID_ELECTROSHOTCHARGING - BATTLESTRINGS_TABLE_START] = sText_ElectroShotCharging, - [STRINGID_METEORBEAMCHARGING - BATTLESTRINGS_TABLE_START] = sText_MeteorBeamCharging, - [STRINGID_CLOAKEDINAHARSHLIGHT - BATTLESTRINGS_TABLE_START] = sText_PkmnIsCloakedInAHarshLight, - [STRINGID_VANISHEDINSTANTLY - BATTLESTRINGS_TABLE_START] = sText_VanishedInstantly, - [STRINGID_PKMNTOOKTARGETHIGH - BATTLESTRINGS_TABLE_START] = sText_PkmnTookTargetHigh, - [STRINGID_CLOAKEDINAFREEZINGLIGHT - BATTLESTRINGS_TABLE_START] = sText_CloakedInAFreezingLight, - [STRINGID_PKNMABSORBINGPOWER - BATTLESTRINGS_TABLE_START] = sText_PkmnAbsorbingPower, - [STRINGID_POKEMONCANNOTUSEMOVE - BATTLESTRINGS_TABLE_START] = sText_PokemonCannotUseMove, - [STRINGID_PKMNMOVEBOUNCEDABILITY - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveBouncedViaAbility, - [STRINGID_HEALBLOCKPREVENTSUSAGE - BATTLESTRINGS_TABLE_START] = sText_HealBlockPreventsUsage, - [STRINGID_GRAVITYPREVENTSUSAGE - BATTLESTRINGS_TABLE_START] = sText_GravityPreventsUsage, - [STRINGID_PKMNFROSTBITEHEALED2 - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealed2, - [STRINGID_PKMNFROSTBITEHEALEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealedBy, - [STRINGID_SAFETYGOGGLESPROTECTED - BATTLESTRINGS_TABLE_START] = sText_SafetyGogglesProtected, - [STRINGID_POWDEREXPLODES - BATTLESTRINGS_TABLE_START] = sText_PowderExplodes, - [STRINGID_PKMNCANTUSEMOVETHROATCHOP - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseMoveThroatChop, - [STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_MoveFizzledOutInTheHeavyRain, - [STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT - BATTLESTRINGS_TABLE_START] = sText_MoveEvaporatedInTheHarshSunlight, - [STRINGID_TARGETATEITEM - BATTLESTRINGS_TABLE_START] = sText_TargetAteItem, - [STRINGID_GEMACTIVATES - BATTLESTRINGS_TABLE_START] = sText_GemActivates, - [STRINGID_ATTACKWEAKENEDBSTRONGWINDS - BATTLESTRINGS_TABLE_START] = sText_AttackWeakenedByStrongWinds, + [STRINGID_TRAINER1WINTEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer1WinText, + [STRINGID_TRAINER2WINTEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer2WinText, [STRINGID_ENDUREDSTURDY - BATTLESTRINGS_TABLE_START] = sText_EnduredViaSturdy, - [STRINGID_BERRYDMGREDUCES - BATTLESTRINGS_TABLE_START] = sText_BerryDmgReducing, - [STRINGID_TARGETTOUGHEDITOUT - BATTLESTRINGS_TABLE_START] = sText_TargetToughedItOut, - [STRINGID_TRAPPEDBYSWIRLINGMAGMA - BATTLESTRINGS_TABLE_START] = sText_TrappedBySwirlingMagma, - [STRINGID_INFESTATION - BATTLESTRINGS_TABLE_START] = sText_Infestation, - [STRINGID_PKMNINSNAPTRAP - BATTLESTRINGS_TABLE_START] = sText_PkmnInSnapTrap, - [STRINGID_THUNDERCAGETRAPPED - BATTLESTRINGS_TABLE_START] = sText_AtkTrappedDef, - [STRINGID_RESETSTARGETSSTATLEVELS - BATTLESTRINGS_TABLE_START] = sText_ResetsTargetsStatLevels, - [STRINGID_STRONGWINDSDISSIPATED - BATTLESTRINGS_TABLE_START] = sText_StrongWindsDissipated, - [STRINGID_EXTREMESUNLIGHTFADED - BATTLESTRINGS_TABLE_START] = sText_ExtremeSunlightFaded, - [STRINGID_HEAVYRAINLIFTED - BATTLESTRINGS_TABLE_START] = sText_HeavyRainLifted, - [STRINGID_SYMBIOSISITEMPASS - BATTLESTRINGS_TABLE_START] = sText_SymbiosisItemPass, - [STRINGID_BURSTINGFLAMESHIT - BATTLESTRINGS_TABLE_START] = sText_BurstingFlames, - [STRINGID_BROKETHROUGHPROTECTION - BATTLESTRINGS_TABLE_START] = sText_BrokeThroughProtection, - [STRINGID_FELLFORFEINT - BATTLESTRINGS_TABLE_START] = sText_FellForFeint, - [STRINGID_SPECTRALTHIEFSTEAL - BATTLESTRINGS_TABLE_START] = sText_SpectralThiefSteal, - [STRINGID_PKMNSABILITYSUPPRESSED - BATTLESTRINGS_TABLE_START] = sText_PkmnsAbilitySuppressed, - [STRINGID_INCINERATEBURN - BATTLESTRINGS_TABLE_START] = sText_IncinerateBurn, - [STRINGID_BUGBITE - BATTLESTRINGS_TABLE_START] = sText_BugBite, - [STRINGID_BOTHCANNOLONGERESCAPE - BATTLESTRINGS_TABLE_START] = sText_BothCanNoLongerEscape, - [STRINGID_ATTACKERLOSTFIRETYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostFireType, - [STRINGID_ATTACKERLOSTELECTRICTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostElectricType, - [STRINGID_ATTACKERLOSTITSTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostItsType, - [STRINGID_STEALTHROCKDMG - BATTLESTRINGS_TABLE_START] = sText_StealthRockDmg, - [STRINGID_SHARPSTEELDMG - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDmg, - [STRINGID_POINTEDSTONESFLOAT - BATTLESTRINGS_TABLE_START] = sText_PointedStonesFloat, - [STRINGID_SHARPSTEELFLOATS - BATTLESTRINGS_TABLE_START] = sText_SharpSteelFloats, - [STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP - BATTLESTRINGS_TABLE_START] = sText_TargetCoveredInStickyCandySyrup, - [STRINGID_AROMAVEILPROTECTED - BATTLESTRINGS_TABLE_START] = sText_AromaVeilProtected, - [STRINGID_PKMNPREVENTEDFROMHEALING - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventedFromHealing, - [STRINGID_TERRAINBECOMESMISTY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesMisty, - [STRINGID_TERRAINBECOMESGRASSY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesGrassy, - [STRINGID_TERRAINBECOMESELECTRIC - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesElectric, - [STRINGID_TERRAINBECOMESPSYCHIC - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesPsychic, - [STRINGID_DIMENSIONSWERETWISTED - BATTLESTRINGS_TABLE_START] = sText_DimensionsWereTwisted, - [STRINGID_BIZARREAREACREATED - BATTLESTRINGS_TABLE_START] = sText_BizzareAreaCreated, - [STRINGID_BIZARREARENACREATED - BATTLESTRINGS_TABLE_START] = sText_BizarreArenaCreated, + [STRINGID_POWERHERB - BATTLESTRINGS_TABLE_START] = sText_PowerHerbActivation, + [STRINGID_HURTBYITEM - BATTLESTRINGS_TABLE_START] = sText_HurtByItem, + [STRINGID_PSNBYITEM - BATTLESTRINGS_TABLE_START] = sText_BadlyPoisonedByItem, + [STRINGID_BRNBYITEM - BATTLESTRINGS_TABLE_START] = sText_BurnedByItem, + [STRINGID_DEFABILITYIN - BATTLESTRINGS_TABLE_START] = sText_TargetAbilityActivates, + [STRINGID_GRAVITYINTENSIFIED - BATTLESTRINGS_TABLE_START] = sText_GravityIntensified, + [STRINGID_TARGETIDENTIFIED - BATTLESTRINGS_TABLE_START] = sText_TargetIdentified, + [STRINGID_TARGETWOKEUP - BATTLESTRINGS_TABLE_START] = sText_TargetWokeUp, + [STRINGID_PKMNSTOLEANDATEITEM - BATTLESTRINGS_TABLE_START] = sText_PkmnStoleAndAteItem, [STRINGID_TAILWINDBLEW - BATTLESTRINGS_TABLE_START] = sText_TailWindBlew, + [STRINGID_PKMNWENTBACK - BATTLESTRINGS_TABLE_START] = sText_PkmnWentBack, + [STRINGID_PKMNCANTUSEITEMSANYMORE - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseItemsAnymore, + [STRINGID_PKMNFLUNG - BATTLESTRINGS_TABLE_START] = sText_PkmnFlung, + [STRINGID_PKMNPREVENTEDFROMHEALING - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventedFromHealing, + [STRINGID_PKMNSWITCHEDATKANDDEF - BATTLESTRINGS_TABLE_START] = sText_PkmnSwitchedAtkAndDef, + [STRINGID_PKMNSABILITYSUPPRESSED - BATTLESTRINGS_TABLE_START] = sText_PkmnsAbilitySuppressed, + [STRINGID_SHIELDEDFROMCRITICALHITS - BATTLESTRINGS_TABLE_START] = sText_ShieldedFromCriticalHits, + [STRINGID_SWITCHEDATKANDSPATK - BATTLESTRINGS_TABLE_START] = sText_SwitchedAtkAndSpAtk, + [STRINGID_SWITCHEDDEFANDSPDEF - BATTLESTRINGS_TABLE_START] = sText_SwitchedDefAndSpDef, + [STRINGID_PKMNACQUIREDABILITY - BATTLESTRINGS_TABLE_START] = sText_PkmnAcquiredAbility, + [STRINGID_POISONSPIKESSCATTERED - BATTLESTRINGS_TABLE_START] = sText_PoisonSpikesScattered, + [STRINGID_PKMNSWITCHEDSTATCHANGES - BATTLESTRINGS_TABLE_START] = sText_PkmnSwitchedStatChanges, + [STRINGID_PKMNSURROUNDEDWITHVEILOFWATER - BATTLESTRINGS_TABLE_START] = sText_PkmnSurroundedWithVeilOfWater, + [STRINGID_PKMNLEVITATEDONELECTROMAGNETISM - BATTLESTRINGS_TABLE_START] = sText_PkmnLevitatedOnElectromagnetism, + [STRINGID_PKMNTWISTEDDIMENSIONS - BATTLESTRINGS_TABLE_START] = sText_PkmnTwistedDimensions, + [STRINGID_DIMENSIONSWERETWISTED - BATTLESTRINGS_TABLE_START] = sText_DimensionsWereTwisted, + [STRINGID_POINTEDSTONESFLOAT - BATTLESTRINGS_TABLE_START] = sText_PointedStonesFloat, + [STRINGID_CLOAKEDINMYSTICALMOONLIGHT - BATTLESTRINGS_TABLE_START] = sText_CloakedInMysticalMoonlight, + [STRINGID_TRAPPEDBYSWIRLINGMAGMA - BATTLESTRINGS_TABLE_START] = sText_TrappedBySwirlingMagma, + [STRINGID_VANISHEDINSTANTLY - BATTLESTRINGS_TABLE_START] = sText_VanishedInstantly, + [STRINGID_PROTECTEDTEAM - BATTLESTRINGS_TABLE_START] = sText_ProtectedTeam, + [STRINGID_SHAREDITSGUARD - BATTLESTRINGS_TABLE_START] = sText_SharedItsGuard, + [STRINGID_SHAREDITSPOWER - BATTLESTRINGS_TABLE_START] = sText_SharedItsPower, + [STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON - BATTLESTRINGS_TABLE_START] = sText_SwapsDefAndSpDefOfAllPkmn, + [STRINGID_BIZARREAREACREATED - BATTLESTRINGS_TABLE_START] = sText_BizzareAreaCreated, + [STRINGID_BECAMENIMBLE - BATTLESTRINGS_TABLE_START] = sText_BecameNimble, + [STRINGID_HURLEDINTOTHEAIR - BATTLESTRINGS_TABLE_START] = sText_HurledIntoTheAir, + [STRINGID_HELDITEMSLOSEEFFECTS - BATTLESTRINGS_TABLE_START] = sText_HeldItemsLoseEffects, + [STRINGID_BIZARREARENACREATED - BATTLESTRINGS_TABLE_START] = sText_BizarreArenaCreated, + [STRINGID_FELLSTRAIGHTDOWN - BATTLESTRINGS_TABLE_START] = sText_FellStraightDown, + [STRINGID_TARGETCHANGEDTYPE - BATTLESTRINGS_TABLE_START] = sText_TargetChangedType, + [STRINGID_PKMNACQUIREDSIMPLE - BATTLESTRINGS_TABLE_START] = sText_PkmnAcquiredSimple, + [STRINGID_EMPTYSTRING5 - BATTLESTRINGS_TABLE_START] = sText_EmptyString4, + [STRINGID_KINDOFFER - BATTLESTRINGS_TABLE_START] = sText_KindOffer, + [STRINGID_RESETSTARGETSSTATLEVELS - BATTLESTRINGS_TABLE_START] = sText_ResetsTargetsStatLevels, + [STRINGID_EMPTYSTRING6 - BATTLESTRINGS_TABLE_START] = sText_EmptyString4, + [STRINGID_ALLYSWITCHPOSITION - BATTLESTRINGS_TABLE_START] = sText_AllySwitchPosition, + [STRINGID_RESTORETARGETSHEALTH - BATTLESTRINGS_TABLE_START] = sText_RestoreTargetsHealth, + [STRINGID_TOOKPJMNINTOTHESKY - BATTLESTRINGS_TABLE_START] = sText_TookPkmnIntoTheSky, + [STRINGID_FREEDFROMSKYDROP - BATTLESTRINGS_TABLE_START] = sText_FreedFromSkyDrop, + [STRINGID_POSTPONETARGETMOVE - BATTLESTRINGS_TABLE_START] = sText_PostponeTargetMove, + [STRINGID_REFLECTTARGETSTYPE - BATTLESTRINGS_TABLE_START] = sText_ReflectTargetsType, + [STRINGID_TRANSFERHELDITEM - BATTLESTRINGS_TABLE_START] = sText_TransferHeldItem, + [STRINGID_EMBARGOENDS - BATTLESTRINGS_TABLE_START] = sText_EmbargoEnds, + [STRINGID_ELECTROMAGNETISM - BATTLESTRINGS_TABLE_START] = sText_Electromagnetism, + [STRINGID_BUFFERENDS - BATTLESTRINGS_TABLE_START] = sText_BufferEnds, + [STRINGID_TELEKINESISENDS - BATTLESTRINGS_TABLE_START] = sText_TelekinesisEnds, + [STRINGID_TAILWINDENDS - BATTLESTRINGS_TABLE_START] = sText_TailwindEnds, + [STRINGID_LUCKYCHANTENDS - BATTLESTRINGS_TABLE_START] = sText_LuckyChantEnds, + [STRINGID_TRICKROOMENDS - BATTLESTRINGS_TABLE_START] = sText_TrickRoomEnds, + [STRINGID_WONDERROOMENDS - BATTLESTRINGS_TABLE_START] = sText_WonderRoomEnds, + [STRINGID_MAGICROOMENDS - BATTLESTRINGS_TABLE_START] = sText_MagicRoomEnds, + [STRINGID_MUDSPORTENDS - BATTLESTRINGS_TABLE_START] = sText_MudSportEnds, + [STRINGID_WATERSPORTENDS - BATTLESTRINGS_TABLE_START] = sText_WaterSportEnds, + [STRINGID_GRAVITYENDS - BATTLESTRINGS_TABLE_START] = sText_GravityEnds, + [STRINGID_AQUARINGHEAL - BATTLESTRINGS_TABLE_START] = sText_AquaRingHeal, + [STRINGID_AURORAVEILENDS - BATTLESTRINGS_TABLE_START] = sText_AuroraVeilEnds, [STRINGID_ELECTRICTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainEnds, [STRINGID_MISTYTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_MistyTerrainEnds, [STRINGID_PSYCHICTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_PsychicTerrainEnds, [STRINGID_GRASSYTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_GrassyTerrainEnds, + [STRINGID_TARGETABILITYSTATRAISE - BATTLESTRINGS_TABLE_START] = sText_TargetAbilityRaisedStat, + [STRINGID_TARGETSSTATWASMAXEDOUT - BATTLESTRINGS_TABLE_START] = sText_TargetsStatWasMaxedOut, + [STRINGID_ATTACKERABILITYSTATRAISE - BATTLESTRINGS_TABLE_START] = sText_AttackerAbilityRaisedStat, + [STRINGID_POISONHEALHPUP - BATTLESTRINGS_TABLE_START] = sText_PoisonHealHpUp, + [STRINGID_BADDREAMSDMG - BATTLESTRINGS_TABLE_START] = sText_BadDreamsDmg, [STRINGID_MOLDBREAKERENTERS - BATTLESTRINGS_TABLE_START] = sText_MoldBreakerEnters, [STRINGID_TERAVOLTENTERS - BATTLESTRINGS_TABLE_START] = sText_TeravoltEnters, [STRINGID_TURBOBLAZEENTERS - BATTLESTRINGS_TABLE_START] = sText_TurboblazeEnters, [STRINGID_SLOWSTARTENTERS - BATTLESTRINGS_TABLE_START] = sText_SlowStartEnters, - [STRINGID_UNNERVEENTERS - BATTLESTRINGS_TABLE_START] = sText_UnnerveEnters, + [STRINGID_SLOWSTARTEND - BATTLESTRINGS_TABLE_START] = sText_SlowStartEnd, + [STRINGID_SOLARPOWERHPDROP - BATTLESTRINGS_TABLE_START] = sText_SolarPowerHpDrop, + [STRINGID_AFTERMATHDMG - BATTLESTRINGS_TABLE_START] = sText_AftermathDmg, [STRINGID_ANTICIPATIONACTIVATES - BATTLESTRINGS_TABLE_START] = sText_AnticipationActivates, [STRINGID_FOREWARNACTIVATES - BATTLESTRINGS_TABLE_START] = sText_ForewarnActivates, + [STRINGID_ICEBODYHPGAIN - BATTLESTRINGS_TABLE_START] = sText_IceBodyHpGain, + [STRINGID_SNOWWARNINGHAIL - BATTLESTRINGS_TABLE_START] = sText_SnowWarningHail, + [STRINGID_SNOWWARNINGSNOW - BATTLESTRINGS_TABLE_START] = sText_SnowWarningSnow, + [STRINGID_FRISKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_FriskActivates, + [STRINGID_UNNERVEENTERS - BATTLESTRINGS_TABLE_START] = sText_UnnerveEnters, + [STRINGID_HARVESTBERRY - BATTLESTRINGS_TABLE_START] = sText_HarvestBerry, + [STRINGID_LASTABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_LastAbilityRaisedBuff1, + [STRINGID_MAGICBOUNCEACTIVATES - BATTLESTRINGS_TABLE_START] = sText_MagicBounceActivates, + [STRINGID_PROTEANTYPECHANGE - BATTLESTRINGS_TABLE_START] = sText_ProteanTypeChange, + [STRINGID_SYMBIOSISITEMPASS - BATTLESTRINGS_TABLE_START] = sText_SymbiosisItemPass, + [STRINGID_STEALTHROCKDMG - BATTLESTRINGS_TABLE_START] = sText_StealthRockDmg, + [STRINGID_TOXICSPIKESABSORBED - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesAbsorbed, + [STRINGID_TOXICSPIKESPOISONED - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesPoisoned, + [STRINGID_STICKYWEBSWITCHIN - BATTLESTRINGS_TABLE_START] = sText_StickyWebSwitchIn, + [STRINGID_HEALINGWISHCAMETRUE - BATTLESTRINGS_TABLE_START] = sText_HealingWishCameTrue, + [STRINGID_HEALINGWISHHEALED - BATTLESTRINGS_TABLE_START] = sText_HealingWishHealed, + [STRINGID_LUNARDANCECAMETRUE - BATTLESTRINGS_TABLE_START] = sText_LunarDanceCameTrue, + [STRINGID_CUSEDBODYDISABLED - BATTLESTRINGS_TABLE_START] = sText_CursedBodyDisabled, + [STRINGID_ATTACKERACQUIREDABILITY - BATTLESTRINGS_TABLE_START] = sText_AttackerAquiredAbility, + [STRINGID_TARGETABILITYSTATLOWER - BATTLESTRINGS_TABLE_START] = sText_TargetAbilityLoweredStat, + [STRINGID_TARGETSTATWONTGOHIGHER - BATTLESTRINGS_TABLE_START] = sText_TargetStatWontGoHigher, + [STRINGID_PKMNMOVEBOUNCEDABILITY - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveBouncedViaAbility, + [STRINGID_IMPOSTERTRANSFORM - BATTLESTRINGS_TABLE_START] = sText_ImposterTransform, + [STRINGID_ASSAULTVESTDOESNTALLOW - BATTLESTRINGS_TABLE_START] = sText_AssaultVestDoesntAllow, + [STRINGID_GRAVITYPREVENTSUSAGE - BATTLESTRINGS_TABLE_START] = sText_GravityPreventsUsage, + [STRINGID_HEALBLOCKPREVENTSUSAGE - BATTLESTRINGS_TABLE_START] = sText_HealBlockPreventsUsage, + [STRINGID_NOTDONEYET - BATTLESTRINGS_TABLE_START] = sText_NotDoneYet, + [STRINGID_STICKYWEBUSED - BATTLESTRINGS_TABLE_START] = sText_StickyWebUsed, + [STRINGID_QUASHSUCCESS - BATTLESTRINGS_TABLE_START] = sText_QuashSuccess, + [STRINGID_PKMNBLEWAWAYTOXICSPIKES - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayToxicSpikes, + [STRINGID_PKMNBLEWAWAYSTICKYWEB - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayStickyWeb, + [STRINGID_PKMNBLEWAWAYSTEALTHROCK - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayStealthRock, + [STRINGID_SPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SpikesDisappearedFromTeam, + [STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesDisappearedFromTeam, + [STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StealthRockDisappearedFromTeam, + [STRINGID_STICKYWEBDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StickyWebDisappearedFromTeam, + [STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDisappearedFromTeam, + [STRINGID_IONDELUGEON - BATTLESTRINGS_TABLE_START] = sText_IonDelugeOn, + [STRINGID_TOPSYTURVYSWITCHEDSTATS - BATTLESTRINGS_TABLE_START] = sText_TopsyTurvySwitchedStats, + [STRINGID_TERRAINBECOMESMISTY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesMisty, + [STRINGID_TERRAINBECOMESGRASSY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesGrassy, + [STRINGID_TERRAINBECOMESELECTRIC - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesElectric, + [STRINGID_TERRAINBECOMESPSYCHIC - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesPsychic, + [STRINGID_TARGETELECTRIFIED - BATTLESTRINGS_TABLE_START] = sText_TargetElectrified, + [STRINGID_MEGAEVOREACTING - BATTLESTRINGS_TABLE_START] = sText_MegaEvoReacting, + [STRINGID_FERVENTWISHREACHED - BATTLESTRINGS_TABLE_START] = sText_FerventWishReached, + [STRINGID_MEGAEVOEVOLVED - BATTLESTRINGS_TABLE_START] = sText_MegaEvoEvolved, + [STRINGID_DRASTICALLY - BATTLESTRINGS_TABLE_START] = sText_drastically, + [STRINGID_SEVERELY - BATTLESTRINGS_TABLE_START] = sText_severely, + [STRINGID_INFESTATION - BATTLESTRINGS_TABLE_START] = sText_Infestation, + [STRINGID_NOEFFECTONTARGET - BATTLESTRINGS_TABLE_START] = sText_NoEffectOnTarget, + [STRINGID_BURSTINGFLAMESHIT - BATTLESTRINGS_TABLE_START] = sText_BurstingFlames, + [STRINGID_BESTOWITEMGIVING - BATTLESTRINGS_TABLE_START] = sText_BestowItemGiving, + [STRINGID_THIRDTYPEADDED - BATTLESTRINGS_TABLE_START] = sText_ThirdTypeAdded, + [STRINGID_FELLFORFEINT - BATTLESTRINGS_TABLE_START] = sText_FellForFeint, + [STRINGID_POKEMONCANNOTUSEMOVE - BATTLESTRINGS_TABLE_START] = sText_PokemonCannotUseMove, + [STRINGID_COVEREDINPOWDER - BATTLESTRINGS_TABLE_START] = sText_CoveredInPowder, + [STRINGID_POWDEREXPLODES - BATTLESTRINGS_TABLE_START] = sText_PowderExplodes, + [STRINGID_GRAVITYGROUNDING - BATTLESTRINGS_TABLE_START] = sText_GravityGrounding, + [STRINGID_MISTYTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_MistyTerrainPreventsStatus, + [STRINGID_GRASSYTERRAINHEALS - BATTLESTRINGS_TABLE_START] = sText_GrassyTerrainHeals, + [STRINGID_ELECTRICTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainPreventsSleep, + [STRINGID_PSYCHICTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_PsychicTerrainPreventsPriority, + [STRINGID_AURAFLAREDTOLIFE - BATTLESTRINGS_TABLE_START] = sText_AuraFlaredToLife, + [STRINGID_AIRLOCKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_AirLockActivates, [STRINGID_PRESSUREENTERS - BATTLESTRINGS_TABLE_START] = sText_PressureActivates, [STRINGID_DARKAURAENTERS - BATTLESTRINGS_TABLE_START] = sText_DarkAuraActivates, [STRINGID_FAIRYAURAENTERS - BATTLESTRINGS_TABLE_START] = sText_FairyAuraActivates, [STRINGID_AURABREAKENTERS - BATTLESTRINGS_TABLE_START] = sText_AuraBreakActivates, [STRINGID_COMATOSEENTERS - BATTLESTRINGS_TABLE_START] = sText_ComatoseActivates, [STRINGID_SCREENCLEANERENTERS - BATTLESTRINGS_TABLE_START] = sText_ScreenCleanerActivates, - [STRINGID_ASONEENTERS - BATTLESTRINGS_TABLE_START] = sText_AsOneEnters, - [STRINGID_CURIOUSMEDICINEENTERS - BATTLESTRINGS_TABLE_START] = sText_CuriousMedicineEnters, - [STRINGID_PASTELVEILENTERS - BATTLESTRINGS_TABLE_START] = sText_PastelVeilEnters, - [STRINGID_NEUTRALIZINGGASENTERS - BATTLESTRINGS_TABLE_START] = sText_NeutralizingGasEnters, - [STRINGID_BEINGHITCHARGEDPKMNWITHPOWER - BATTLESTRINGS_TABLE_START] = sText_BeingHitChargedPkmnWithPower, - [STRINGID_IMPOSTERTRANSFORM - BATTLESTRINGS_TABLE_START] = sText_ImposterTransform, - [STRINGID_SNOWWARNINGHAIL - BATTLESTRINGS_TABLE_START] = sText_SnowWarningHail, - [STRINGID_SNOWWARNINGSNOW - BATTLESTRINGS_TABLE_START] = sText_SnowWarningSnow, - [STRINGID_SUPERSWEETAROMAWAFTS - BATTLESTRINGS_TABLE_START] = sText_SupersweetAromaWafts, - [STRINGID_AIRLOCKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_AirLockActivates, - [STRINGID_BATTLERABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_BattlerAbilityRaisedStat, - [STRINGID_EXTREMELYHARSHSUNLIGHT - BATTLESTRINGS_TABLE_START] = sText_ExtremelyHarshSunlight, - [STRINGID_HEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_HeavyRain, - [STRINGID_MYSTERIOUSAIRCURRENT - BATTLESTRINGS_TABLE_START] = sText_MysteriousAirCurrent, - [STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat, - [STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN - BATTLESTRINGS_TABLE_START] = sText_AttackerGainedStrengthFromTheFallen, - [STRINGID_ZEROTOHEROTRANSFORMATION - BATTLESTRINGS_TABLE_START] = sText_ZeroToHeroTransformation, - [STRINGID_HOSPITALITYRESTORATION - BATTLESTRINGS_TABLE_START] = sText_HospitalityRestoration, - [STRINGID_HARVESTBERRY - BATTLESTRINGS_TABLE_START] = sText_HarvestBerry, - [STRINGID_BADDREAMSDMG - BATTLESTRINGS_TABLE_START] = sText_BadDreamsDmg, - [STRINGID_SOLARPOWERHPDROP - BATTLESTRINGS_TABLE_START] = sText_SolarPowerHpDrop, - [STRINGID_HEALERCURE - BATTLESTRINGS_TABLE_START] = sText_HealerCure, - [STRINGID_FETCHEDPOKEBALL - BATTLESTRINGS_TABLE_START] = sText_FetchedPokeBall, - [STRINGID_TARGETABILITYSTATLOWER - BATTLESTRINGS_TABLE_START] = sText_TargetAbilityLoweredStat, - [STRINGID_TARGETSTATWONTGOHIGHER - BATTLESTRINGS_TABLE_START] = sText_TargetStatWontGoHigher, - [STRINGID_TARGETABILITYSTATRAISE - BATTLESTRINGS_TABLE_START] = sText_TargetAbilityRaisedStat, - [STRINGID_CUSEDBODYDISABLED - BATTLESTRINGS_TABLE_START] = sText_CursedBodyDisabled, - [STRINGID_ATTACKERACQUIREDABILITY - BATTLESTRINGS_TABLE_START] = sText_AttackerAquiredAbility, - [STRINGID_SWAPPEDABILITIES - BATTLESTRINGS_TABLE_START] = sText_SwappedAbilities, - [STRINGID_TARGETSSTATWASMAXEDOUT - BATTLESTRINGS_TABLE_START] = sText_TargetsStatWasMaxedOut, + [STRINGID_BOTHCANNOLONGERESCAPE - BATTLESTRINGS_TABLE_START] = sText_BothCanNoLongerEscape, + [STRINGID_CANTESCAPEDUETOUSEDMOVE - BATTLESTRINGS_TABLE_START] = sText_CantEscapeDueToUsedMove, + [STRINGID_PKMNBECAMEWEAKERTOFIRE - BATTLESTRINGS_TABLE_START] = sText_PkmnBecameWeakerToFire, + [STRINGID_ABOUTTOUSEPOLTERGEIST - BATTLESTRINGS_TABLE_START] = sText_PkmnAboutToBeAttackedByItsItem, + [STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE - BATTLESTRINGS_TABLE_START] = sText_CantEscapeBecauseOfCurrentMove, + [STRINGID_PKMNTOOKTARGETHIGH - BATTLESTRINGS_TABLE_START] = sText_PkmnTookTargetHigh, + [STRINGID_TARGETTOOHEAVY - BATTLESTRINGS_TABLE_START] = sText_TargetTooHeavy, + [STRINGID_ATTACKERLOSTELECTRICTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostElectricType, [STRINGID_PKMNSABILITYPREVENTSABILITY - BATTLESTRINGS_TABLE_START] = sText_PkmnsAbilityPreventsAbility, - [STRINGID_AFTERMATHDMG - BATTLESTRINGS_TABLE_START] = sText_AftermathDmg, - [STRINGID_ILLUSIONWOREOFF - BATTLESTRINGS_TABLE_START] = sText_IllusionWoreOff, - [STRINGID_ASANDSTORMKICKEDUP - BATTLESTRINGS_TABLE_START] = sText_ASandstormKickedUp, - [STRINGID_PKMNSWILLPERISHIN3TURNS - BATTLESTRINGS_TABLE_START] = sText_PkmnsWillPerishIn3Turns, - [STRINGID_POISONSPIKESSCATTERED - BATTLESTRINGS_TABLE_START] = sText_PoisonSpikesScattered, - [STRINGID_OPPORTUNISTCOPIED - BATTLESTRINGS_TABLE_START] = sText_OpportunistCopied, - [STRINGID_PKMNGOTOVERITSINFATUATION - BATTLESTRINGS_TABLE_START] = sText_PkmnGotOverItsInfatuation, - [STRINGID_PKMNSHOOKOFFTHETAUNT - BATTLESTRINGS_TABLE_START] = sText_PkmnShookOffTheTaunt, - [STRINGID_SUNLIGHTACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_SunlightActivatedAbility, - [STRINGID_STATWASHEIGHTENED - BATTLESTRINGS_TABLE_START] = sText_StatWasHeightened, - [STRINGID_BATTLERTYPECHANGEDTO - BATTLESTRINGS_TABLE_START] = sText_BattlerTypeChangedTo, - [STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility, - [STRINGID_FRISKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_FriskActivates, - [STRINGID_ATTACKERABILITYSTATRAISE - BATTLESTRINGS_TABLE_START] = sText_AttackerAbilityRaisedStat, - [STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED - BATTLESTRINGS_TABLE_START] = sText_ExtremelyHarshSunlightWasNotLessened, - [STRINGID_NORELIEFROMHEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_NoReliefFromHeavyRain, - [STRINGID_MYSTERIOUSAIRCURRENTBLOWSON - BATTLESTRINGS_TABLE_START] = sText_MysteriousAirCurrentBlowsOn, - [STRINGID_AURAFLAREDTOLIFE - BATTLESTRINGS_TABLE_START] = sText_AuraFlaredToLife, - [STRINGID_ATKGOTOVERINFATUATION - BATTLESTRINGS_TABLE_START] = sText_AttackerGotOverInfatuation, - [STRINGID_TORMENTEDNOMORE - BATTLESTRINGS_TABLE_START] = sText_TormentedNoMore, - [STRINGID_BUFFERENDS - BATTLESTRINGS_TABLE_START] = sText_BufferEnds, - [STRINGID_HEALBLOCKEDNOMORE - BATTLESTRINGS_TABLE_START] = sText_HealBlockedNoMore, - [STRINGID_MICLEBERRYACTIVATES - BATTLESTRINGS_TABLE_START] = sText_MicleBerryActivates, - [STRINGID_MIRRORHERBCOPIED - BATTLESTRINGS_TABLE_START] = sText_MirrorHerbCopied, - [STRINGID_PKMNSITEMHEALEDFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemHealedFrostbite, - [STRINGID_AIRBALLOONFLOAT - BATTLESTRINGS_TABLE_START] = sText_AirBalloonFloat, - [STRINGID_EJECTBUTTONACTIVATE - BATTLESTRINGS_TABLE_START] = sText_EjectButtonActivate, - [STRINGID_HURTBYITEM - BATTLESTRINGS_TABLE_START] = sText_HurtByItem, - [STRINGID_AIRBALLOONPOP - BATTLESTRINGS_TABLE_START] = sText_AirBalloonPop, - [STRINGID_STICKYBARBTRANSFER - BATTLESTRINGS_TABLE_START] = sText_StickyBarbTransfer, - [STRINGID_TEAMGAINEDEXP - BATTLESTRINGS_TABLE_START] = sText_TeamGainedEXP, - [STRINGID_PKMNFROSTBITEHEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealed, - [STRINGID_STOCKPILEDEFFECTWOREOFF - BATTLESTRINGS_TABLE_START] = sText_StockpiledEffectWoreOff, - [STRINGID_FELLSTRAIGHTDOWN - BATTLESTRINGS_TABLE_START] = sText_FellStraightDown, - [STRINGID_TARGETWOKEUP - BATTLESTRINGS_TABLE_START] = sText_TargetWokeUp, - [STRINGID_PKMNBURNHEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnBurnHealed, - [STRINGID_REDCARDACTIVATE - BATTLESTRINGS_TABLE_START] = sText_RedCardActivate, - [STRINGID_MOVEBLOCKEDBYDYNAMAX - BATTLESTRINGS_TABLE_START] = sText_MoveBlockedByDynamax, - [STRINGID_ITEMCANNOTBEREMOVED - BATTLESTRINGS_TABLE_START] = sText_ItemCannotBeRemoved, - [STRINGID_ZMOVERESETSSTATS - BATTLESTRINGS_TABLE_START] = sText_ZMoveResetsStats, - [STRINGID_ZMOVEZBOOSTCRIT - BATTLESTRINGS_TABLE_START] = sText_ZMoveBoostCrit, - [STRINGID_ZMOVERESTOREHP - BATTLESTRINGS_TABLE_START] = sText_ZMoveRestoreHp, - [STRINGID_ZMOVESTATUP - BATTLESTRINGS_TABLE_START] = sText_ZMoveStatUp, - [STRINGID_ZMOVEHPTRAP - BATTLESTRINGS_TABLE_START] = sText_ZMoveHpSwitchInTrap, - [STRINGID_ZMOVEALLSTATSUP - BATTLESTRINGS_TABLE_START] = sText_ZMoveAllStatsUp, - [STRINGID_PKMNREVERTEDTOPRIMAL - BATTLESTRINGS_TABLE_START] = sText_PkmnRevertedToPrimal, - [STRINGID_HEALINGWISHHEALED - BATTLESTRINGS_TABLE_START] = sText_HealingWishHealed, - [STRINGID_TOXICSPIKESABSORBED - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesAbsorbed, - [STRINGID_TOXICSPIKESPOISONED - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesPoisoned, - [STRINGID_STICKYWEBSWITCHIN - BATTLESTRINGS_TABLE_START] = sText_StickyWebSwitchIn, - [STRINGID_HEALINGWISHCAMETRUE - BATTLESTRINGS_TABLE_START] = sText_HealingWishCameTrue, - [STRINGID_LUNARDANCECAMETRUE - BATTLESTRINGS_TABLE_START] = sText_LunarDanceCameTrue, - [STRINGID_SPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SpikesDisappearedFromTeam, - [STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesDisappearedFromTeam, - [STRINGID_STICKYWEBDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StickyWebDisappearedFromTeam, - [STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StealthRockDisappearedFromTeam, - [STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDisappearedFromTeam, - [STRINGID_LASTABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_LastAbilityRaisedBuff1, - [STRINGID_RECEIVERABILITYTAKEOVER - BATTLESTRINGS_TABLE_START] = sText_ReceiverAbilityTakeOver, - [STRINGID_NEUTRALIZINGGASOVER - BATTLESTRINGS_TABLE_START] = sText_NeutralizingGasOver, - [STRINGID_ATTACKERBECAMEFULLYCHARGED - BATTLESTRINGS_TABLE_START] = sText_AttackerBecameFullyCharged, - [STRINGID_ATTACKERBECAMEASHSPECIES - BATTLESTRINGS_TABLE_START] = sText_AttackerBecameAshSpecies, - [STRINGID_PROTECTEDTEAM - BATTLESTRINGS_TABLE_START] = sText_ProtectedTeam, - [STRINGID_ELECTRICTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainPreventsSleep, - [STRINGID_MISTYTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_MistyTerrainPreventsStatus, - [STRINGID_PSYCHICTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_PsychicTerrainPreventsPriority, - [STRINGID_FLOWERVEILPROTECTED - BATTLESTRINGS_TABLE_START] = sText_FlowerVeilProtected, - [STRINGID_DRASTICALLY - BATTLESTRINGS_TABLE_START] = sText_drastically, - [STRINGID_SEVERELY - BATTLESTRINGS_TABLE_START] = sText_severely, - [STRINGID_CLEARAMULETWONTLOWERSTATS - BATTLESTRINGS_TABLE_START] = sText_ClearAmuletWontLowerStats, - [STRINGID_CELEBRATEMESSAGE - BATTLESTRINGS_TABLE_START] = sText_CelebrateMessage, - [STRINGID_PKMNBLEWAWAYTOXICSPIKES - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayToxicSpikes, - [STRINGID_PKMNBLEWAWAYSTICKYWEB - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayStickyWeb, - [STRINGID_PKMNBLEWAWAYSTEALTHROCK - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayStealthRock, - [STRINGID_PKMNBLEWAWAYSHARPSTEEL - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwaySharpSteel, + [STRINGID_PKMNHURTBYFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByFrostbite, [STRINGID_PKMNGOTFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnGotFrostbite, + [STRINGID_PKMNSITEMHEALEDFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemHealedFrostbite, + [STRINGID_ATTACKERHEALEDITSFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_AttackerHealedItsFrostbite, + [STRINGID_PKMNFROSTBITEHEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealed, + [STRINGID_PKMNFROSTBITEHEALED2 - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealed2, + [STRINGID_PKMNFROSTBITEHEALEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealedBy, + [STRINGID_ULTRABURSTREACTING - BATTLESTRINGS_TABLE_START] = sText_UltraBurstReacting, + [STRINGID_ULTRABURSTCOMPLETED - BATTLESTRINGS_TABLE_START] = sText_UltraBurstCompleted, + [STRINGID_TEAMGAINEDEXP - BATTLESTRINGS_TABLE_START] = sText_TeamGainedEXP, + [STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP - BATTLESTRINGS_TABLE_START] = sText_TargetCoveredInStickyCandySyrup, + [STRINGID_ITEMWASUSEDUP - BATTLESTRINGS_TABLE_START] = sText_ItemWasUsedUp, + [STRINGID_ATTACKERLOSTITSTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostItsType, + [STRINGID_CLOAKEDINAHARSHLIGHT - BATTLESTRINGS_TABLE_START] = sText_PkmnIsCloakedInAHarshLight, + [STRINGID_OLDMANUSEDITEM - BATTLESTRINGS_TABLE_START] = sText_OldManUsedItem, + [STRINGID_GOTCHAPKMNCAUGHT - BATTLESTRINGS_TABLE_START] = sText_GotchaPkmnCaught, + [STRINGID_GOTCHAPKMNCAUGHT2 - BATTLESTRINGS_TABLE_START] = sText_GotchaPkmnCaught2, + [STRINGID_THREWROCK - BATTLESTRINGS_TABLE_START] = sText_ThrewARock, + [STRINGID_THREWBAIT - BATTLESTRINGS_TABLE_START] = sText_ThrewSomeBait, + [STRINGID_PKMNANGRY - BATTLESTRINGS_TABLE_START] = sText_PkmnIsAngry, + [STRINGID_PKMNEATING - BATTLESTRINGS_TABLE_START] = sText_PkmnIsEating, + [STRINGID_DUMMY288 - BATTLESTRINGS_TABLE_START] = sText_Empty1, + [STRINGID_DUMMY289 - BATTLESTRINGS_TABLE_START] = sText_Empty1, + [STRINGID_OAKPLAYERWON - BATTLESTRINGS_TABLE_START] = gText_WinEarnsPrizeMoney, + [STRINGID_OAKPLAYERLOST - BATTLESTRINGS_TABLE_START] = gText_HowDissapointing, + [STRINGID_PLAYERLOSTAGAINSTENEMYTRAINER - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteoutAgainstTrainer, + [STRINGID_POKEDUDEUSED - BATTLESTRINGS_TABLE_START] = sText_PokedudeUsedItem, + [STRINGID_POKEFLUTECATCHY - BATTLESTRINGS_TABLE_START] = sText_PlayedFluteCatchyTune, + [STRINGID_POKEFLUTE - BATTLESTRINGS_TABLE_START] = sText_PlayedThe, + [STRINGID_MONHEARINGFLUTEAWOKE - BATTLESTRINGS_TABLE_START] = sText_PkmnHearingFluteAwoke, + [STRINGID_PLAYERWHITEDOUT - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteout2, + [STRINGID_MONTOOSCAREDTOMOVE - BATTLESTRINGS_TABLE_START] = sText_TooScaredToMove, + [STRINGID_GHOSTGETOUTGETOUT - BATTLESTRINGS_TABLE_START] = sText_GetOutGetOut, + [STRINGID_SILPHSCOPEUNVEILED - BATTLESTRINGS_TABLE_START] = sText_SilphScopeUnveil, + [STRINGID_GHOSTWASMAROWAK - BATTLESTRINGS_TABLE_START] = sText_TheGhostWas, + [STRINGID_TRAINER1MON1COMEBACK - BATTLESTRINGS_TABLE_START] = sText_Trainer1RecallPkmn1, + [STRINGID_TRAINER1MON2COMEBACK - BATTLESTRINGS_TABLE_START] = sText_Trainer1RecallPkmn2, + [STRINGID_TRAINER1MON1AND2COMEBACK - BATTLESTRINGS_TABLE_START] = sText_Trainer1RecallBoth, }; const u16 gTrainerUsedItemStringIds[] = @@ -1393,22 +1851,24 @@ const u16 gMoveWeatherChangeStringIds[] = [B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL }; -const u16 gSandstormHailContinuesStringIds[] = +const u16 gSandStormHailSnowContinuesStringIds[] = { [B_MSG_SANDSTORM] = STRINGID_SANDSTORMRAGES, - [B_MSG_HAIL] = STRINGID_HAILCONTINUES + [B_MSG_HAIL] = STRINGID_HAILCONTINUES, + [B_MSG_SNOW] = STRINGID_SNOWCONTINUES, }; -const u16 gSandstormHailDmgStringIds[] = +const u16 gSandStormHailDmgStringIds[] = { [B_MSG_SANDSTORM] = STRINGID_PKMNBUFFETEDBYSANDSTORM, [B_MSG_HAIL] = STRINGID_PKMNPELTEDBYHAIL }; -const u16 gSandstormHailEndStringIds[] = +const u16 gSandStormHailSnowEndStringIds[] = { [B_MSG_SANDSTORM] = STRINGID_SANDSTORMSUBSIDED, - [B_MSG_HAIL] = STRINGID_HAILSTOPPED + [B_MSG_HAIL] = STRINGID_HAILSTOPPED, + [B_MSG_SNOW] = STRINGID_SNOWSTOPPED, }; const u16 gRainContinuesStringIds[] = @@ -1746,6 +2206,22 @@ const u16 gCaughtMonStringIds[] = [B_MSG_BILLS_BOX_FULL] = STRINGID_PKMNBOXBILLSPCFULL }; +const u16 gDamageNonTypesStartStringIds[] = +{ + [B_MSG_TRAPPED_WITH_VINES] = STRINGID_TEAMTRAPPEDWITHVINES, + [B_MSG_CAUGHT_IN_VORTEX] = STRINGID_TEAMCAUGHTINVORTEX, + [B_MSG_SURROUNDED_BY_FIRE] = STRINGID_TEAMSURROUNDEDBYFIRE, + [B_MSG_SURROUNDED_BY_ROCKS] = STRINGID_TEAMSURROUNDEDBYROCKS, +}; + +const u16 gDamageNonTypesDmgStringIds[] = +{ + [B_MSG_HURT_BY_VINES] = STRINGID_PKMNHURTBYVINES, + [B_MSG_HURT_BY_VORTEX] = STRINGID_PKMNHURTBYVORTEX, + [B_MSG_BURNING_UP] = STRINGID_PKMNBURNINGUP, + [B_MSG_HURT_BY_ROCKS_THROWN] = STRINGID_PKMNHURTBYROCKSTHROWN, +}; + // Index is determined in VARIOUS_GET_BATTLERS_FOR_RECALL by ORing flags for each present battler on the losing side. // No battlers (0) is skipped. const u16 gDoubleBattleRecallStrings[1 << (MAX_BATTLERS_COUNT / 2)] = @@ -1756,33 +2232,6 @@ const u16 gDoubleBattleRecallStrings[1 << (MAX_BATTLERS_COUNT / 2)] = STRINGID_TRAINER1MON1AND2COMEBACK }; -const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); -const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{WAIT_SE}\p"); -const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p"); -const u8 gText_EllipsisQuestionMark[] = _("……?\p"); -const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_ACTIVE_NAME_WITH_PREFIX} do?"); -const u8 gText_WhatWillPlayerThrow[] = _("What will {B_PLAYER_NAME}\nthrow?"); -const u8 gText_WhatWillOldManDo[] = _("What will the\nold man do?"); -const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…"); -const u8 gText_BattleMenu[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN"); -const u8 gText_SafariZoneMenu[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}BALL{CLEAR_TO 56}BAIT\nROCK{CLEAR_TO 56}RUN"); -const u8 gText_MoveInterfacePP[] = _("PP "); -const u8 gText_MoveInterfaceType[] = _("TYPE/"); -const u8 gText_MoveInterfaceDynamicColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); -const u8 gText_WhichMoveToForget_Unused[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}どの わざを\nわすれさせたい?"); -const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Yes\nNo"); -const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Switch\nwhich?"); -static const u8 sText_UnusedColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); -static const u8 sText_RightArrow2[] = _("{RIGHT_ARROW_2}"); -static const u8 sText_Plus[] = _("{PLUS}"); -static const u8 sText_Dash[] = _("-"); - -static const u8 sText_MaxHP[] = _("{FONT_SMALL}Max{FONT_NORMAL} HP"); -static const u8 sText_Attack[] = _("ATTACK "); -static const u8 sText_Defense[] = _("DEFENSE"); -static const u8 sText_SpAtk[] = _("SP. ATK"); -static const u8 sText_SpDef[] = _("SP. DEF"); - // Unused static const u8 *const sStatNamesTable2[] = { @@ -1794,59 +2243,6 @@ static const u8 *const sStatNamesTable2[] = sText_Speed }; -const u8 gText_SafariBalls[] = _("{HIGHLIGHT 2}SAFARI BALLS"); // -const u8 gText_HighlightRed_Left[] = _("{HIGHLIGHT 2}Left: "); -const u8 gText_HighlightRed[] = _("{HIGHLIGHT 2}"); -const u8 gText_Sleep[] = _("sleep"); -const u8 gText_Poison[] = _("poison"); -const u8 gText_Burn[] = _("burn"); -const u8 gText_Paralysis[] = _("paralysis"); -const u8 gText_Ice[] = _("ice"); -const u8 gText_Confusion[] = _("confusion"); -const u8 gText_Love[] = _("love"); -const u8 gText_BattleTowerBan_Space[] = _(" "); -const u8 gText_BattleTowerBan_Newline1[] = _("\n"); -const u8 gText_BattleTowerBan_Newline2[] = _("\n"); -const u8 gText_BattleTowerBan_Is1[] = _(" is"); -const u8 gText_BattleTowerBan_Is2[] = _(" is"); -const u8 gText_BadEgg[] = _("Bad EGG"); -const u8 gText_BattleWallyName[] = _("ミツル"); -const u8 gText_Win[] = _("{HIGHLIGHT 0}Win"); -const u8 gText_Loss[] = _("{HIGHLIGHT 0}Loss"); -const u8 gText_Draw[] = _("{HIGHLIGHT 0}Draw"); -static const u8 sText_SpaceIs[] = _(" is"); -static const u8 sText_ApostropheS[] = _("'s"); -const u8 gText_ANormalMove[] = _("a NORMAL move"); -const u8 gText_AFightingMove[] = _("a FIGHTING move"); -const u8 gText_AFlyingMove[] = _("a FLYING move"); -const u8 gText_APoisonMove[] = _("a POISON move"); -const u8 gText_AGroundMove[] = _("a GROUND move"); -const u8 gText_ARockMove[] = _("a ROCK move"); -const u8 gText_ABugMove[] = _("a BUG move"); -const u8 gText_AGhostMove[] = _("a GHOST move"); -const u8 gText_ASteelMove[] = _("a STEEL move"); -const u8 gText_AMysteryMove[] = _("a ??? move"); -const u8 gText_AFireMove[] = _("a FIRE move"); -const u8 gText_AWaterMove[] = _("a WATER move"); -const u8 gText_AGrassMove[] = _("a GRASS move"); -const u8 gText_AnElectricMove[] = _("an ELECTRIC move"); -const u8 gText_APsychicMove[] = _("a PSYCHIC move"); -const u8 gText_AnIceMove[] = _("an ICE move"); -const u8 gText_ADragonMove[] = _("a DRAGON move"); -const u8 gText_ADarkMove[] = _("a DARK move"); -const u8 gText_AFairyMove[] = _("a FAIRY move"); -const u8 gText_TimeBoard[] = _("TIME BOARD"); -const u8 gText_ClearTime[] = _("CLEAR TIME"); // Unused -const u8 gText_XMinYZSec[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC."); -const u8 gText_Unused_1F[] = _("1F"); -const u8 gText_Unused_2F[] = _("2F"); -const u8 gText_Unused_3F[] = _("3F"); -const u8 gText_Unused_4F[] = _("4F"); -const u8 gText_Unused_5F[] = _("5F"); -const u8 gText_Unused_6F[] = _("6F"); -const u8 gText_Unused_7F[] = _("7F"); -const u8 gText_Unused_8F[] = _("8F"); - const u8 *const gTrainerTowerChallengeTypeTexts[NUM_TOWER_CHALLENGE_TYPES] = { gOtherText_Single, @@ -1855,13 +2251,6 @@ const u8 *const gTrainerTowerChallengeTypeTexts[NUM_TOWER_CHALLENGE_TYPES] = gOtherText_Mixed }; -static const u8 sText_Trainer1Fled[] = _("{PLAY_SE SE_FLEE}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); -static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); -static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); - -static const u8 sText_Your2[] = _("your"); -static const u8 sText_Opposing2[] = _("the opposing"); - static const u8 *const sATypeMove_Table[NUMBER_OF_MON_TYPES] = { [TYPE_NORMAL] = gText_ANormalMove, @@ -2172,14 +2561,11 @@ void BufferStringBattle(u16 stringId) } break; case STRINGID_USEDMOVE: // pokemon used a move msg - ChooseMoveUsedParticle(gBattleTextBuff1); // buff1 doesn't appear in the string, leftover from japanese move names - if (sBattleMsgDataPtr->currentMove >= MOVES_COUNT) - StringCopy(gBattleTextBuff2, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]); + StringCopy(gBattleTextBuff3, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]); else - StringCopy(gBattleTextBuff2, gMoveNames[sBattleMsgDataPtr->currentMove]); + StringCopy(gBattleTextBuff3, gMoveNames[sBattleMsgDataPtr->currentMove]); - ChooseTypeOfMoveUsedString(gBattleTextBuff2); stringPtr = sText_AttackerUsedX; break; case STRINGID_BATTLEEND: // battle end @@ -2303,6 +2689,22 @@ static const u8 *TryGetStatusString(u8 *src) return NULL; } +static void GetBattlerNick(u32 battler, u8 *dst) +{ + struct Pokemon *mon, *illusionMon; + + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; + else + mon = &gEnemyParty[gBattlerPartyIndexes[battler]]; + + illusionMon = GetIllusionMonPtr(battler); + if (illusionMon != NULL) + mon = illusionMon; + GetMonData(mon, MON_DATA_NICKNAME, dst); + StringGet_Nickname(dst); +} + #define HANDLE_NICKNAME_STRING_CASE(battlerId, monIndex) \ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) \ { \ @@ -2373,6 +2775,26 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) else toCpy = gBattleTextBuff3; break; + case B_TXT_TRAINER2_CLASS: + // TODO: trainer name + // toCpy = BattleStringGetOpponentClassByTrainerId(gTrainerBattleOpponent_B); + toCpy = "TODO"; + break; + case B_TXT_TRAINER2_NAME: + // TODO: trainer name + // toCpy = BattleStringGetOpponentNameByTrainerId(gTrainerBattleOpponent_B, text, multiplayerId, GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)); + toCpy = "TODO"; + break; + case B_TXT_PARTNER_CLASS: + // TODO: trainer name + // toCpy = gTrainerClassNames[GetFrontierOpponentClass(gPartnerTrainerId)].name; + toCpy = "TODO"; + break; + case B_TXT_PARTNER_NAME: + // TODO: trainer name + // toCpy = BattleStringGetPlayerName(text, GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)); + toCpy = "TODO";; + break; case B_TXT_COPY_VAR_1: toCpy = gStringVar1; break; @@ -2676,12 +3098,54 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) else toCpy = sText_FoePkmnPrefix4; break; + case B_TXT_ATK_TRAINER_NAME: + // TODO: get trainer name + // toCpy = BattleStringGetTrainerName(text, multiplayerId, gBattlerAttacker); + toCpy = "TODO"; + break; + case B_TXT_ATK_TRAINER_CLASS: + // TODO: get trainer name + toCpy = "TODO"; + // switch (GetBattlerPosition(gBattlerAttacker)) + // { + // case B_POSITION_PLAYER_RIGHT: + // if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + // toCpy = gTrainerClasses[GetFrontierOpponentClass(gPartnerTrainerId)].name; + // break; + // case B_POSITION_OPPONENT_LEFT: + // toCpy = BattleStringGetOpponentClassByTrainerId(gTrainerBattleOpponent_A); + // break; + // case B_POSITION_OPPONENT_RIGHT: + // if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && !BATTLE_TWO_VS_ONE_OPPONENT) + // toCpy = BattleStringGetOpponentClassByTrainerId(gTrainerBattleOpponent_B); + // else + // toCpy = BattleStringGetOpponentClassByTrainerId(gTrainerBattleOpponent_A); + // break; + // } + break; + case B_TXT_ATK_TEAM1: + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) + toCpy = sText_Your1; + else + toCpy = sText_Opposing1; + break; case B_TXT_ATK_TEAM2: if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) toCpy = sText_Your2; else toCpy = sText_Opposing2; break; + case B_TXT_DEF_NAME: // target name + HANDLE_NICKNAME_STRING_CASE(gBattlerTarget, gBattlerPartyIndexes[gBattlerTarget]) + // GetBattlerNick(gBattlerTarget, text); + toCpy = text; + break; + case B_TXT_DEF_TEAM1: + if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + toCpy = sText_Your1; + else + toCpy = sText_Opposing1; + break; case B_TXT_DEF_TEAM2: if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) toCpy = sText_Your2; @@ -2830,86 +3294,6 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) } } -// Loads one of two text strings into the provided buffer. This is functionally -// unused, since the value loaded into the buffer is not read; it loaded one of -// two particles (either "は" or "の") which works in tandem with ChooseTypeOfMoveUsedString -// below to effect changes in the meaning of the line. -static void ChooseMoveUsedParticle(u8 *textBuff) -{ - s32 counter = 0; - u32 i = 0; - - while (counter != MAX_MON_MOVES) - { - if (sGrammarMoveUsedTable[i] == 0) - counter++; - if (sGrammarMoveUsedTable[i++] == sBattleMsgDataPtr->currentMove) - break; - } - - if (counter >= 0) - { - if (counter <= 2) - StringCopy(textBuff, sText_SpaceIs); // is - else if (counter <= MAX_MON_MOVES) - StringCopy(textBuff, sText_ApostropheS); // 's - } -} - -// Appends "!" to the text buffer `dst`. In the original Japanese this looked -// into the table of moves at sGrammarMoveUsedTable and varied the line accordingly. -// -// sText_ExclamationMark was a plain "!", used for any attack not on the list. -// It resulted in the translation "'s !". -// -// sText_ExclamationMark2 was "を つかった!". This resulted in the translation -// " used !", which was used for all attacks in English. -// -// sText_ExclamationMark3 was "した!". This was used for those moves whose -// names were verbs, such as Recover, and resulted in translations like " -// recovered itself!". -// -// sText_ExclamationMark4 was "を した!" This resulted in a translation of -// " did an !". -// -// sText_ExclamationMark5 was " こうげき!" This resulted in a translation of -// "'s attack!". -static void ChooseTypeOfMoveUsedString(u8 *dst) -{ - s32 counter = 0; - s32 i = 0; - - while (*dst != EOS) - dst++; - - while (counter != MAX_MON_MOVES) - { - if (sGrammarMoveUsedTable[i] == MOVE_NONE) - counter++; - if (sGrammarMoveUsedTable[i++] == sBattleMsgDataPtr->currentMove) - break; - } - - switch (counter) - { - case 0: - StringCopy(dst, sText_ExclamationMark); - break; - case 1: - StringCopy(dst, sText_ExclamationMark2); - break; - case 2: - StringCopy(dst, sText_ExclamationMark3); - break; - case 3: - StringCopy(dst, sText_ExclamationMark4); - break; - case 4: - StringCopy(dst, sText_ExclamationMark5); - break; - } -} - static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = { [B_WIN_MSG] = { .fillValue = PIXEL_FILL(0xf), diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3b19d81c4..5f12f61ce 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -15632,14 +15632,8 @@ static void Cmd_displaydexinfo(void) case 4: if (!IsDma3ManagerBusyWithBgCopy()) { - CreateMonPicSprite_HandleDeoxys(species, - gBattleMons[B_POSITION_OPPONENT_LEFT].isShiny, - gBattleMons[B_POSITION_OPPONENT_LEFT].personality, - TRUE, - 120, - 64, - 0, - 0xFFFF); + struct Pokemon *mon = &gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]]; + CreateMonPicSprite(species, GetMonData(mon, MON_DATA_IS_SHINY), GetMonData(mon, MON_DATA_PERSONALITY), TRUE, 120, 64, 0, 0xFFFF); CpuFill32(0, gPlttBufferFaded, BG_PLTT_SIZE); BeginNormalPaletteFade(0x1FFFF, 0, 16, 0, RGB_BLACK); ShowBg(0); diff --git a/src/battle_util.c b/src/battle_util.c index 8918a3b4c..52f4b7544 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -491,25 +491,77 @@ u8 GetImprisonedMovesCount(u8 battlerId, u16 move) return imprisonedMoves; } +static void TryToRevertMimicryAndFlags(void) +{ + u32 i; + + for (i = 0; i < gBattlersCount; i++) + { + gDisableStructs[i].terrainAbilityDone = FALSE; + if (GetBattlerAbility(i) == ABILITY_MIMICRY) + RESTORE_BATTLER_TYPE(i); + } +} + enum { ENDTURN_ORDER, ENDTURN_REFLECT, ENDTURN_LIGHT_SCREEN, + ENDTURN_AURORA_VEIL, ENDTURN_MIST, + ENDTURN_LUCKY_CHANT, ENDTURN_SAFEGUARD, + ENDTURN_TAILWIND, ENDTURN_WISH, ENDTURN_RAIN, ENDTURN_SANDSTORM, ENDTURN_SUN, ENDTURN_HAIL, + ENDTURN_SNOW, + ENDTURN_DAMAGE_NON_TYPES, + ENDTURN_GRAVITY, + ENDTURN_WATER_SPORT, + ENDTURN_MUD_SPORT, + ENDTURN_TRICK_ROOM, + ENDTURN_WONDER_ROOM, + ENDTURN_MAGIC_ROOM, + ENDTURN_ELECTRIC_TERRAIN, + ENDTURN_MISTY_TERRAIN, + ENDTURN_GRASSY_TERRAIN, + ENDTURN_PSYCHIC_TERRAIN, + ENDTURN_ION_DELUGE, + ENDTURN_FAIRY_LOCK, + ENDTURN_RETALIATE, + ENDTURN_WEATHER_FORM, + ENDTURN_STATUS_HEAL, + ENDTURN_RAINBOW, + ENDTURN_SEA_OF_FIRE, + ENDTURN_SWAMP, ENDTURN_FIELD_COUNT, }; +static bool32 EndTurnTerrain(u32 terrainFlag, u32 stringTableId) +{ + if (gFieldStatuses & terrainFlag) + { + if (terrainFlag & STATUS_FIELD_GRASSY_TERRAIN) + BattleScriptExecute(BattleScript_GrassyTerrainHeals); + if (!(gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT) && --gFieldTimers.terrainTimer == 0) + { + gFieldStatuses &= ~terrainFlag; + TryToRevertMimicryAndFlags(); + gBattleCommunication[MULTISTRING_CHOOSER] = stringTableId; + BattleScriptExecute(BattleScript_TerrainEnds); + return TRUE; + } + } + return FALSE; +} + u8 DoFieldEndTurnEffects(void) { u8 effect = 0; - s32 i; for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBattlerAttacker]; gBattlerAttacker++) { @@ -520,6 +572,7 @@ u8 DoFieldEndTurnEffects(void) do { + s32 i; u8 side; switch (gBattleStruct->turnCountersTracker) @@ -534,22 +587,21 @@ u8 DoFieldEndTurnEffects(void) s32 j; for (j = i + 1; j < gBattlersCount; j++) { - if (GetWhichBattlerFaster(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], FALSE) == 1) + if (!gProtectStructs[i].quash + && !gProtectStructs[j].quash + && GetWhichBattlerFaster(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], FALSE) == -1) SwapTurnOrder(i, j); } } - { - u8 *var = &gBattleStruct->turnCountersTracker; - - ++*var; - gBattleStruct->turnSideTracker = 0; - } + + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; // fall through case ENDTURN_REFLECT: while (gBattleStruct->turnSideTracker < 2) { side = gBattleStruct->turnSideTracker; - gActiveBattler = gBattlerAttacker = gSideTimers[side].reflectBattlerId; + gBattlerAttacker = gSideTimers[side].reflectBattlerId; if (gSideStatuses[side] & SIDE_STATUS_REFLECT) { if (--gSideTimers[side].reflectTimer == 0) @@ -574,7 +626,7 @@ u8 DoFieldEndTurnEffects(void) while (gBattleStruct->turnSideTracker < 2) { side = gBattleStruct->turnSideTracker; - gActiveBattler = gBattlerAttacker = gSideTimers[side].lightscreenBattlerId; + gBattlerAttacker = gSideTimers[side].lightscreenBattlerId; if (gSideStatuses[side] & SIDE_STATUS_LIGHTSCREEN) { if (--gSideTimers[side].lightscreenTimer == 0) @@ -596,11 +648,37 @@ u8 DoFieldEndTurnEffects(void) gBattleStruct->turnSideTracker = 0; } break; + case ENDTURN_AURORA_VEIL: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + gBattlerAttacker = gSideTimers[side].auroraVeilBattlerId; + if (gSideStatuses[side] & SIDE_STATUS_AURORA_VEIL) + { + if (--gSideTimers[side].auroraVeilTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_AURORA_VEIL; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + gBattleCommunication[MULTISTRING_CHOOSER] = side; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_AURORA_VEIL); + effect++; + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; case ENDTURN_MIST: while (gBattleStruct->turnSideTracker < 2) { side = gBattleStruct->turnSideTracker; - gActiveBattler = gBattlerAttacker = gSideTimers[side].mistBattlerId; + gBattlerAttacker = gSideTimers[side].mistBattlerId; if (gSideTimers[side].mistTimer != 0 && --gSideTimers[side].mistTimer == 0) { gSideStatuses[side] &= ~SIDE_STATUS_MIST; @@ -623,7 +701,7 @@ u8 DoFieldEndTurnEffects(void) while (gBattleStruct->turnSideTracker < 2) { side = gBattleStruct->turnSideTracker; - gActiveBattler = gBattlerAttacker = gSideTimers[side].safeguardBattlerId; + gBattlerAttacker = gSideTimers[side].safeguardBattlerId; if (gSideStatuses[side] & SIDE_STATUS_SAFEGUARD) { if (--gSideTimers[side].safeguardTimer == 0) @@ -643,15 +721,63 @@ u8 DoFieldEndTurnEffects(void) gBattleStruct->turnSideTracker = 0; } break; + case ENDTURN_LUCKY_CHANT: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + gBattlerAttacker = gSideTimers[side].luckyChantBattlerId; + if (gSideStatuses[side] & SIDE_STATUS_LUCKY_CHANT) + { + if (--gSideTimers[side].luckyChantTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_LUCKY_CHANT; + BattleScriptExecute(BattleScript_LuckyChantEnds); + effect++; + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; + case ENDTURN_TAILWIND: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + gBattlerAttacker = gSideTimers[side].tailwindBattlerId; + if (gSideStatuses[side] & SIDE_STATUS_TAILWIND) + { + if (gSideTimers[side].tailwindTimer > 0 && --gSideTimers[side].tailwindTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_TAILWIND; + BattleScriptExecute(BattleScript_TailwindEnds); + effect++; + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; case ENDTURN_WISH: while (gBattleStruct->turnSideTracker < gBattlersCount) { - gActiveBattler = gBattlerByTurnOrder[gBattleStruct->turnSideTracker]; - if (gWishFutureKnock.wishCounter[gActiveBattler] != 0 - && --gWishFutureKnock.wishCounter[gActiveBattler] == 0 - && gBattleMons[gActiveBattler].hp != 0) + u32 battler = gBattlerByTurnOrder[gBattleStruct->turnSideTracker]; + if (gWishFutureKnock.wishCounter[battler] != 0 + && --gWishFutureKnock.wishCounter[battler] == 0 + && gBattleMons[battler].hp != 0) { - gBattlerTarget = gActiveBattler; + gBattlerTarget = battler; BattleScriptExecute(BattleScript_WishComesTrue); effect++; } @@ -662,12 +788,14 @@ u8 DoFieldEndTurnEffects(void) if (effect == 0) { gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; } break; case ENDTURN_RAIN: if (gBattleWeather & B_WEATHER_RAIN) { - if (!(gBattleWeather & B_WEATHER_RAIN_PERMANENT)) + if (!(gBattleWeather & B_WEATHER_RAIN_PERMANENT) + && !(gBattleWeather & B_WEATHER_RAIN_PRIMAL)) { if (--gWishFutureKnock.weatherDuration == 0) { @@ -700,7 +828,7 @@ u8 DoFieldEndTurnEffects(void) if (!(gBattleWeather & B_WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~B_WEATHER_SANDSTORM_TEMPORARY; - gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; + gBattlescriptCurrInstr = BattleScript_SandStormHailSnowEnds; } else { @@ -717,9 +845,13 @@ u8 DoFieldEndTurnEffects(void) case ENDTURN_SUN: if (gBattleWeather & B_WEATHER_SUN) { - if (!(gBattleWeather & B_WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + if (!(gBattleWeather & B_WEATHER_SUN_PERMANENT) + && !(gBattleWeather & B_WEATHER_SUN_PRIMAL) + && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~B_WEATHER_SUN_TEMPORARY; + for (i = 0; i < gBattlersCount; i++) + gDisableStructs[i].weatherAbilityDone = FALSE; gBattlescriptCurrInstr = BattleScript_SunlightFaded; } else @@ -735,10 +867,10 @@ u8 DoFieldEndTurnEffects(void) case ENDTURN_HAIL: if (gBattleWeather & B_WEATHER_HAIL) { - if (--gWishFutureKnock.weatherDuration == 0) + if (!(gBattleWeather & B_WEATHER_HAIL_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~B_WEATHER_HAIL_TEMPORARY; - gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; + gBattlescriptCurrInstr = BattleScript_SandStormHailSnowEnds; } else { @@ -752,355 +884,952 @@ u8 DoFieldEndTurnEffects(void) } gBattleStruct->turnCountersTracker++; break; + case ENDTURN_SNOW: + if (gBattleWeather & B_WEATHER_SNOW) + { + if (!(gBattleWeather & B_WEATHER_SNOW_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~B_WEATHER_SNOW_TEMPORARY; + gBattlescriptCurrInstr = BattleScript_SandStormHailSnowEnds; + } + else + { + gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } + + gBattleScripting.animArg1 = B_ANIM_HAIL_CONTINUES; // B_ANIM_SNOW_CONTINUES; // TODO: Animation + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SNOW; + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_DAMAGE_NON_TYPES: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + if (gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES) + { + if (--gSideTimers[side].damageNonTypesTimer == 0) + { + // There is no in-game message when this side status ends. + gSideStatuses[side] &= ~SIDE_STATUS_DAMAGE_NON_TYPES; + effect++; + } + else + { + // TODO: Dynamax + // ChooseDamageNonTypesString(gSideTimers[side].damageNonTypesType); + BattleScriptExecute(BattleScript_DamageNonTypesContinues); + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; + case ENDTURN_TRICK_ROOM: + if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer > 0 && --gFieldTimers.trickRoomTimer == 0) + { + gFieldStatuses &= ~STATUS_FIELD_TRICK_ROOM; + BattleScriptExecute(BattleScript_TrickRoomEnds); + effect++; + } + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_WONDER_ROOM: + if (gFieldStatuses & STATUS_FIELD_WONDER_ROOM && gFieldTimers.wonderRoomTimer > 0 && --gFieldTimers.wonderRoomTimer == 0) + { + gFieldStatuses &= ~STATUS_FIELD_WONDER_ROOM; + BattleScriptExecute(BattleScript_WonderRoomEnds); + effect++; + } + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_MAGIC_ROOM: + if (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM && gFieldTimers.magicRoomTimer > 0 && --gFieldTimers.magicRoomTimer == 0) + { + gFieldStatuses &= ~STATUS_FIELD_MAGIC_ROOM; + BattleScriptExecute(BattleScript_MagicRoomEnds); + effect++; + } + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_ELECTRIC_TERRAIN: + effect = EndTurnTerrain(STATUS_FIELD_ELECTRIC_TERRAIN, B_MSG_TERRAIN_END_ELECTRIC); + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_MISTY_TERRAIN: + effect = EndTurnTerrain(STATUS_FIELD_MISTY_TERRAIN, B_MSG_TERRAIN_END_MISTY); + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_GRASSY_TERRAIN: + effect = EndTurnTerrain(STATUS_FIELD_GRASSY_TERRAIN, B_MSG_TERRAIN_END_GRASSY); + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_PSYCHIC_TERRAIN: + effect = EndTurnTerrain(STATUS_FIELD_PSYCHIC_TERRAIN, B_MSG_TERRAIN_END_PSYCHIC); + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_WATER_SPORT: + if (gFieldStatuses & STATUS_FIELD_WATERSPORT && --gFieldTimers.waterSportTimer == 0) + { + gFieldStatuses &= ~STATUS_FIELD_WATERSPORT; + BattleScriptExecute(BattleScript_WaterSportEnds); + effect++; + } + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_MUD_SPORT: + if (gFieldStatuses & STATUS_FIELD_MUDSPORT && --gFieldTimers.mudSportTimer == 0) + { + gFieldStatuses &= ~STATUS_FIELD_MUDSPORT; + BattleScriptExecute(BattleScript_MudSportEnds); + effect++; + } + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_GRAVITY: + if (gFieldStatuses & STATUS_FIELD_GRAVITY && --gFieldTimers.gravityTimer == 0) + { + gFieldStatuses &= ~STATUS_FIELD_GRAVITY; + BattleScriptExecute(BattleScript_GravityEnds); + effect++; + } + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_ION_DELUGE: + gFieldStatuses &= ~STATUS_FIELD_ION_DELUGE; + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_FAIRY_LOCK: + if (gFieldStatuses & STATUS_FIELD_FAIRY_LOCK && --gFieldTimers.fairyLockTimer == 0) + { + gFieldStatuses &= ~STATUS_FIELD_FAIRY_LOCK; + } + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_RETALIATE: + if (gSideTimers[B_SIDE_PLAYER].retaliateTimer > 0) + gSideTimers[B_SIDE_PLAYER].retaliateTimer--; + if (gSideTimers[B_SIDE_OPPONENT].retaliateTimer > 0) + gSideTimers[B_SIDE_OPPONENT].retaliateTimer--; + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_WEATHER_FORM: + for (i = 0; i < gBattlersCount; i++) + { + if (AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, i, 0, 0, 0)) + { + effect++; + break; + } + } + if (effect == 0) + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_STATUS_HEAL: + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) + { + if (B_AFFECTION_MECHANICS == TRUE + && GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER + && GetBattlerAffectionHearts(gBattlerAttacker) >= AFFECTION_FOUR_HEARTS + && (Random() % 100 < 20)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + BattleScriptExecute(BattleScript_AffectionBasedStatusHeal); + break; + } + } + gBattleStruct->turnCountersTracker++; + break; + case ENDTURN_RAINBOW: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + if (gSideStatuses[side] & SIDE_STATUS_RAINBOW) + { + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) + { + if (GetBattlerSide(gBattlerAttacker) == side) + break; + } + + if (gSideTimers[side].rainbowTimer > 0 && --gSideTimers[side].rainbowTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_RAINBOW; + BattleScriptExecute(BattleScript_TheRainbowDisappeared); + effect++; + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; + case ENDTURN_SEA_OF_FIRE: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + + if (gSideStatuses[side] & SIDE_STATUS_SEA_OF_FIRE) + { + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) + { + if (GetBattlerSide(gBattlerAttacker) == side) + break; + } + + if (gSideTimers[side].seaOfFireTimer > 0 && --gSideTimers[side].seaOfFireTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_SEA_OF_FIRE; + BattleScriptExecute(BattleScript_TheSeaOfFireDisappeared); + effect++; + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; + case ENDTURN_SWAMP: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + + if (gSideStatuses[side] & SIDE_STATUS_SWAMP) + { + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) + { + if (GetBattlerSide(gBattlerAttacker) == side) + break; + } + + if (gSideTimers[side].swampTimer > 0 && --gSideTimers[side].swampTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_SWAMP; + BattleScriptExecute(BattleScript_TheSwampDisappeared); + effect++; + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; case ENDTURN_FIELD_COUNT: effect++; break; } } while (effect == 0); + return (gBattleMainFunc != BattleTurnPassed); } enum { ENDTURN_INGRAIN, + ENDTURN_AQUA_RING, ENDTURN_ABILITIES, ENDTURN_ITEMS1, ENDTURN_LEECH_SEED, ENDTURN_POISON, ENDTURN_BAD_POISON, ENDTURN_BURN, + ENDTURN_FROSTBITE, ENDTURN_NIGHTMARES, ENDTURN_CURSE, ENDTURN_WRAP, + ENDTURN_OCTOLOCK, ENDTURN_UPROAR, ENDTURN_THRASH, + ENDTURN_FLINCH, ENDTURN_DISABLE, ENDTURN_ENCORE, + ENDTURN_MAGNET_RISE, + ENDTURN_TELEKINESIS, + ENDTURN_HEALBLOCK, + ENDTURN_EMBARGO, ENDTURN_LOCK_ON, ENDTURN_CHARGE, + ENDTURN_LASER_FOCUS, ENDTURN_TAUNT, ENDTURN_YAWN, ENDTURN_ITEMS2, + ENDTURN_ORBS, + ENDTURN_ROOST, + ENDTURN_ELECTRIFY, + ENDTURN_POWDER, + ENDTURN_THROAT_CHOP, + ENDTURN_SLOW_START, + ENDTURN_CUD_CHEW, + ENDTURN_TORMENT, // supposedly this goes after Taunt, before Encore, but Encore is first right now? + ENDTURN_SALT_CURE, + ENDTURN_SYRUP_BOMB, + ENDTURN_DYNAMAX, + ENDTURN_SEA_OF_FIRE_DAMAGE, ENDTURN_BATTLER_COUNT }; +// Ingrain, Leech Seed, Strength Sap and Aqua Ring +s32 GetDrainedBigRootHp(u32 battler, s32 hp) +{ + if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_BIG_ROOT) + hp = (hp * 1300) / 1000; + if (hp == 0) + hp = 1; + + return hp * -1; +} + +#define MAGIC_GUARD_CHECK \ +if (ability == ABILITY_MAGIC_GUARD) \ +{\ + RecordAbilityBattle(battler, ability);\ + gBattleStruct->turnEffectsTracker++;\ + break;\ +} + + u8 DoBattlerEndTurnEffects(void) { - u8 effect = 0; + u32 battler, ability, i, effect = 0; - gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_SKIP_DMG_TRACK); + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); while (gBattleStruct->turnEffectsBattlerId < gBattlersCount && gBattleStruct->turnEffectsTracker <= ENDTURN_BATTLER_COUNT) { - gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBattlerId]; - if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) + battler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBattlerId]; + if (gAbsentBattlerFlags & gBitTable[battler]) { gBattleStruct->turnEffectsBattlerId++; + continue; } - else + + ability = GetBattlerAbility(battler); + switch (gBattleStruct->turnEffectsTracker) { - switch (gBattleStruct->turnEffectsTracker) + case ENDTURN_INGRAIN: // ingrain + if ((gStatuses3[battler] & STATUS3_ROOTED) + && !BATTLER_MAX_HP(battler) + && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) + && gBattleMons[battler].hp != 0) { - case ENDTURN_INGRAIN: // ingrain - if ((gStatuses3[gActiveBattler] & STATUS3_ROOTED) - && gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP - && gBattleMons[gActiveBattler].hp != 0) + // TODO: Dynamax + // gBattleMoveDamage = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); + gBattleMoveDamage = GetDrainedBigRootHp(battler, gBattleMons[battler].maxHP / 16); + BattleScriptExecute(BattleScript_IngrainTurnHeal); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_AQUA_RING: // aqua ring + if ((gStatuses3[battler] & STATUS3_AQUA_RING) + && !BATTLER_MAX_HP(battler) + && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) + && gBattleMons[battler].hp != 0) + { + // TODO: Dynamax + // gBattleMoveDamage = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); + gBattleMoveDamage = GetDrainedBigRootHp(battler, gBattleMons[battler].maxHP / 16); + BattleScriptExecute(BattleScript_AquaRingHeal); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_ABILITIES: // end turn abilities + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, 0, 0, 0)) + effect++; + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_ITEMS1: // item effects + if (ItemBattleEffects(ITEMEFFECT_NORMAL, battler, FALSE)) + effect++; + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_ITEMS2: // item effects again + if (ItemBattleEffects(ITEMEFFECT_NORMAL, battler, TRUE)) + effect++; + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_ORBS: + if (IsBattlerAlive(battler) && ItemBattleEffects(ITEMEFFECT_ORBS, battler, FALSE)) + effect++; + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_LEECH_SEED: // leech seed + if ((gStatuses3[battler] & STATUS3_LEECHSEED) + && gBattleMons[gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER].hp != 0 + && gBattleMons[battler].hp != 0) + { + MAGIC_GUARD_CHECK; + + gBattlerTarget = gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; + gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleScripting.animArg1 = gBattlerTarget; + gBattleScripting.animArg2 = gBattlerAttacker; + BattleScriptExecute(BattleScript_LeechSeedTurnDrain); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_POISON: // poison + if ((gBattleMons[battler].status1 & STATUS1_POISON) + && gBattleMons[battler].hp != 0) + { + MAGIC_GUARD_CHECK; + + if (ability == ABILITY_POISON_HEAL) { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - gBattleMoveDamage *= -1; - BattleScriptExecute(BattleScript_IngrainTurnHeal); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ABILITIES: // end turn abilities - if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBattler, 0, 0, 0)) - effect++; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ITEMS1: // item effects - if (ItemBattleEffects(ITEMEFFECT_NORMAL, gActiveBattler, FALSE)) - effect++; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ITEMS2: // item effects again - if (ItemBattleEffects(ITEMEFFECT_NORMAL, gActiveBattler, TRUE)) - effect++; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_LEECH_SEED: // leech seed - if ((gStatuses3[gActiveBattler] & STATUS3_LEECHSEED) - && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER].hp != 0 - && gBattleMons[gActiveBattler].hp != 0) - { - gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - gBattleScripting.animArg1 = gBattlerTarget; - gBattleScripting.animArg2 = gBattlerAttacker; - BattleScriptExecute(BattleScript_LeechSeedTurnDrain); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_POISON: // poison - if ((gBattleMons[gActiveBattler].status1 & STATUS1_POISON) && gBattleMons[gActiveBattler].hp != 0) - { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - BattleScriptExecute(BattleScript_PoisonTurnDmg); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_BAD_POISON: // toxic poison - if ((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON) && gBattleMons[gActiveBattler].hp != 0) - { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if ((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns - gBattleMons[gActiveBattler].status1 += STATUS1_TOXIC_TURN(1); - gBattleMoveDamage *= (gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_COUNTER) >> 8; - BattleScriptExecute(BattleScript_PoisonTurnDmg); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_BURN: // burn - if ((gBattleMons[gActiveBattler].status1 & STATUS1_BURN) && gBattleMons[gActiveBattler].hp != 0) - { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - BattleScriptExecute(BattleScript_BurnTurnDmg); - effect++; - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_NIGHTMARES: // spooky nightmares - if ((gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBattler].hp != 0) - { - // R/S does not perform this sleep check, which causes the nightmare effect to - // persist even after the affected Pokemon has been awakened by Shed Skin. - if (gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP) + if (!BATTLER_MAX_HP(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4; + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; + gBattleMoveDamage = gBattleMons[battler].maxHP / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - BattleScriptExecute(BattleScript_NightmareTurnDmg); + gBattleMoveDamage *= -1; + BattleScriptExecute(BattleScript_PoisonHealActivates); effect++; } + } + else + { + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; + gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_PoisonTurnDmg); + effect++; + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_BAD_POISON: // toxic poison + if ((gBattleMons[battler].status1 & STATUS1_TOXIC_POISON) + && gBattleMons[battler].hp != 0) + { + MAGIC_GUARD_CHECK; + + if (ability == ABILITY_POISON_HEAL) + { + if (!BATTLER_MAX_HP(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) + { + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; + gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + BattleScriptExecute(BattleScript_PoisonHealActivates); + effect++; + } + } + else + { + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 16; + gBattleMoveDamage = gBattleMons[battler].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if ((gBattleMons[battler].status1 & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns + gBattleMons[battler].status1 += STATUS1_TOXIC_TURN(1); + gBattleMoveDamage *= (gBattleMons[battler].status1 & STATUS1_TOXIC_COUNTER) >> 8; + BattleScriptExecute(BattleScript_PoisonTurnDmg); + effect++; + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_BURN: // burn + if ((gBattleMons[battler].status1 & STATUS1_BURN) + && gBattleMons[battler].hp != 0) + { + MAGIC_GUARD_CHECK; + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); + gBattleMoveDamage = gBattleMons[battler].maxHP / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); + if (ability == ABILITY_HEATPROOF) + { + if (gBattleMoveDamage > (gBattleMoveDamage / 2) + 1) // Record ability if the burn takes less damage than it normally would. + RecordAbilityBattle(battler, ABILITY_HEATPROOF); + gBattleMoveDamage /= 2; + } + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_BurnTurnDmg); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_FROSTBITE: // burn + if ((gBattleMons[battler].status1 & STATUS1_FROSTBITE) + && gBattleMons[battler].hp != 0) + { + MAGIC_GUARD_CHECK; + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); + gBattleMoveDamage = gBattleMons[battler].maxHP / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_FrostbiteTurnDmg); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_NIGHTMARES: // spooky nightmares + if ((gBattleMons[battler].status2 & STATUS2_NIGHTMARE) + && gBattleMons[battler].hp != 0) + { + MAGIC_GUARD_CHECK; + // R/S does not perform this sleep check, which causes the nightmare effect to + // persist even after the affected Pokémon has been awakened by Shed Skin. + if (gBattleMons[battler].status1 & STATUS1_SLEEP) + { + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; + gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_NightmareTurnDmg); + effect++; + } + else + { + gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE; + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_CURSE: // curse + if ((gBattleMons[battler].status2 & STATUS2_CURSED) + && gBattleMons[battler].hp != 0) + { + MAGIC_GUARD_CHECK; + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; + gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_CurseTurnDmg); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_WRAP: // wrap + if ((gBattleMons[battler].status2 & STATUS2_WRAPPED) && gBattleMons[battler].hp != 0) + { + if (--gDisableStructs[battler].wrapTurns != 0) // damaged by wrap + { + MAGIC_GUARD_CHECK; + + gBattleScripting.animArg1 = gBattleStruct->wrappedMove[battler]; + gBattleScripting.animArg2 = gBattleStruct->wrappedMove[battler] >> 8; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleStruct->wrappedMove[battler]); + gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; + if (GetBattlerHoldEffect(gBattleStruct->wrappedBy[battler], TRUE) == HOLD_EFFECT_BINDING_BAND) + { + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); + gBattleMoveDamage = gBattleMons[battler].maxHP / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); + } else { - gBattleMons[gActiveBattler].status2 &= ~STATUS2_NIGHTMARE; + // TODO: Dynamax + // gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); + gBattleMoveDamage = gBattleMons[battler].maxHP / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_CURSE: // curse - if ((gBattleMons[gActiveBattler].status2 & STATUS2_CURSED) && gBattleMons[gActiveBattler].hp != 0) - { - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4; + if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - BattleScriptExecute(BattleScript_CurseTurnDmg); - effect++; } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_WRAP: // wrap - if ((gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBattler].hp != 0) + else // broke free { - if (--gDisableStructs[gActiveBattler].wrapTurns != 0) // damaged by wrap - { - gBattleScripting.animArg1 = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 0); - gBattleScripting.animArg2 = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 1); - gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; - gBattleTextBuff1[1] = B_BUFF_MOVE; - gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 0); - gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 1); - gBattleTextBuff1[4] = EOS; - gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - } - else // broke free - { - gBattleMons[gActiveBattler].status2 &= ~STATUS2_WRAPPED; - gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; - gBattleTextBuff1[1] = B_BUFF_MOVE; - gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 0); - gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 1); - gBattleTextBuff1[4] = EOS; - gBattlescriptCurrInstr = BattleScript_WrapEnds; - } - BattleScriptExecute(gBattlescriptCurrInstr); - effect++; + gBattleMons[battler].status2 &= ~STATUS2_WRAPPED; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleStruct->wrappedMove[battler]); + gBattlescriptCurrInstr = BattleScript_WrapEnds; } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_UPROAR: // uproar - if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR) + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_OCTOLOCK: + { + if (gDisableStructs[battler].octolock) + { + gBattlerTarget = battler; + BattleScriptExecute(BattleScript_OctolockEndTurn); + effect++; + } + gBattleStruct->turnEffectsTracker++; + } + break; + case ENDTURN_UPROAR: // uproar + if (gBattleMons[battler].status2 & STATUS2_UPROAR) + { + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) { - for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) + if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_SOUNDPROOF) { - if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) - && gBattleMons[gBattlerAttacker].ability != ABILITY_SOUNDPROOF) - { - gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP; - gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - BattleScriptExecute(BattleScript_MonWokeUpInUproar); - gActiveBattler = gBattlerAttacker; - BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); - MarkBattlerForControllerExec(gActiveBattler); - break; - } - } - if (gBattlerAttacker != gBattlersCount) - { - effect = 2; // a pokemon was awaken + gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP; + gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + BattleScriptExecute(BattleScript_MonWokeUpInUproar); + gActiveBattler = gBattlerAttacker; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerAttacker].status1); + MarkBattlerForControllerExec(gBattlerAttacker); break; } + } + if (gBattlerAttacker != gBattlersCount) + { + effect = 2; // a Pokémon was awaken + break; + } + else + { + gBattlerAttacker = battler; + gBattleMons[battler].status2 -= STATUS2_UPROAR_TURN(1); // uproar timer goes down + if (WasUnableToUseMove(battler)) + { + CancelMultiTurnMoves(battler); + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS; + } + else if (gBattleMons[battler].status2 & STATUS2_UPROAR) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_CONTINUES; + gBattleMons[battler].status2 |= STATUS2_MULTIPLETURNS; + } else { - gBattlerAttacker = gActiveBattler; - gBattleMons[gActiveBattler].status2 -= STATUS2_UPROAR_TURN(1); - if (WasUnableToUseMove(gActiveBattler)) - { - CancelMultiTurnMoves(gActiveBattler); - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS; - } - else if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_CONTINUES; - gBattleMons[gActiveBattler].status2 |= STATUS2_MULTIPLETURNS; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS; - CancelMultiTurnMoves(gActiveBattler); - } - BattleScriptExecute(BattleScript_PrintUproarOverTurns); - effect = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS; + CancelMultiTurnMoves(battler); } + BattleScriptExecute(BattleScript_PrintUproarOverTurns); + effect = 1; } - if (effect != 2) - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_THRASH: // thrash - if (gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE) - { - gBattleMons[gActiveBattler].status2 -= STATUS2_LOCK_CONFUSE_TURN(1); - if (WasUnableToUseMove(gActiveBattler)) - CancelMultiTurnMoves(gActiveBattler); - else if (!(gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE) - && (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS)) - { - gBattleMons[gActiveBattler].status2 &= ~STATUS2_MULTIPLETURNS; - if (!(gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)) - { - gBattleScripting.moveEffect = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER; - SetMoveEffect(TRUE, 0); - if (gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION) - BattleScriptExecute(BattleScript_ThrashConfuses); - effect++; - } - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_DISABLE: // disable - if (gDisableStructs[gActiveBattler].disableTimer != 0) - { - s32 i; - for (i = 0; i < MAX_MON_MOVES; i++) - { - if (gDisableStructs[gActiveBattler].disabledMove == gBattleMons[gActiveBattler].moves[i]) - break; - } - if (i == MAX_MON_MOVES) // pokemon does not have the disabled move anymore - { - gDisableStructs[gActiveBattler].disabledMove = MOVE_NONE; - gDisableStructs[gActiveBattler].disableTimer = 0; - } - else if (--gDisableStructs[gActiveBattler].disableTimer == 0) // disable ends - { - gDisableStructs[gActiveBattler].disabledMove = MOVE_NONE; - BattleScriptExecute(BattleScript_DisabledNoMore); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_ENCORE: // encore - if (gDisableStructs[gActiveBattler].encoreTimer != 0) - { - if (gBattleMons[gActiveBattler].moves[gDisableStructs[gActiveBattler].encoredMovePos] != gDisableStructs[gActiveBattler].encoredMove) // pokemon does not have the encored move anymore - { - gDisableStructs[gActiveBattler].encoredMove = MOVE_NONE; - gDisableStructs[gActiveBattler].encoreTimer = 0; - } - else if (--gDisableStructs[gActiveBattler].encoreTimer == 0 - || gBattleMons[gActiveBattler].pp[gDisableStructs[gActiveBattler].encoredMovePos] == 0) - { - gDisableStructs[gActiveBattler].encoredMove = MOVE_NONE; - gDisableStructs[gActiveBattler].encoreTimer = 0; - BattleScriptExecute(BattleScript_EncoredNoMore); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_LOCK_ON: // lock-on decrement - if (gStatuses3[gActiveBattler] & STATUS3_ALWAYS_HITS) - gStatuses3[gActiveBattler] -= STATUS3_ALWAYS_HITS_TURN(1); - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_CHARGE: // charge - if (gDisableStructs[gActiveBattler].chargeTimer && --gDisableStructs[gActiveBattler].chargeTimer == 0) - gStatuses3[gActiveBattler] &= ~STATUS3_CHARGED_UP; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_TAUNT: // taunt - if (gDisableStructs[gActiveBattler].tauntTimer) - gDisableStructs[gActiveBattler].tauntTimer--; - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_YAWN: // yawn - if (gStatuses3[gActiveBattler] & STATUS3_YAWN) - { - gStatuses3[gActiveBattler] -= STATUS3_YAWN_TURN(1); - if (!(gStatuses3[gActiveBattler] & STATUS3_YAWN) && !(gBattleMons[gActiveBattler].status1 & STATUS1_ANY) - && gBattleMons[gActiveBattler].ability != ABILITY_VITAL_SPIRIT - && gBattleMons[gActiveBattler].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBattler)) - { - CancelMultiTurnMoves(gActiveBattler); - gBattleMons[gActiveBattler].status1 |= STATUS1_SLEEP_TURN((Random() & 3) + 2); // 2-5 turns of sleep - BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); - MarkBattlerForControllerExec(gActiveBattler); - gEffectBattler = gActiveBattler; - BattleScriptExecute(BattleScript_YawnMakesAsleep); - effect++; - } - } - gBattleStruct->turnEffectsTracker++; - break; - case ENDTURN_BATTLER_COUNT: // done - gBattleStruct->turnEffectsTracker = 0; - gBattleStruct->turnEffectsBattlerId++; - break; } - if (effect != 0) - return effect; + if (effect != 2) + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_THRASH: // thrash + // Don't decrement STATUS2_LOCK_CONFUSE if the target is held by Sky Drop + if (gBattleMons[battler].status2 & STATUS2_LOCK_CONFUSE && !(gStatuses3[battler] & STATUS3_SKY_DROPPED)) + { + gBattleMons[battler].status2 -= STATUS2_LOCK_CONFUSE_TURN(1); + if (WasUnableToUseMove(battler)) + CancelMultiTurnMoves(battler); + else if (!(gBattleMons[battler].status2 & STATUS2_LOCK_CONFUSE) + && (gBattleMons[battler].status2 & STATUS2_MULTIPLETURNS)) + { + gBattleMons[battler].status2 &= ~STATUS2_MULTIPLETURNS; + if (!(gBattleMons[battler].status2 & STATUS2_CONFUSION)) + { + gBattleScripting.moveEffect = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER; + SetMoveEffect(TRUE, FALSE); + if (gBattleMons[battler].status2 & STATUS2_CONFUSION) + BattleScriptExecute(BattleScript_ThrashConfuses); + effect++; + } + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_FLINCH: // reset flinch + gBattleMons[battler].status2 &= ~STATUS2_FLINCHED; + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_DISABLE: // disable + if (gDisableStructs[battler].disableTimer != 0) + { + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gDisableStructs[battler].disabledMove == gBattleMons[battler].moves[i]) + break; + } + if (i == MAX_MON_MOVES) // Pokémon does not have the disabled move anymore + { + gDisableStructs[battler].disabledMove = 0; + gDisableStructs[battler].disableTimer = 0; + } + else if (--gDisableStructs[battler].disableTimer == 0) // disable ends + { + gDisableStructs[battler].disabledMove = 0; + BattleScriptExecute(BattleScript_DisabledNoMore); + effect++; + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_ENCORE: // encore + if (gDisableStructs[battler].encoreTimer != 0) + { + if (gBattleMons[battler].moves[gDisableStructs[battler].encoredMovePos] != gDisableStructs[battler].encoredMove) // Pokémon does not have the encored move anymore + { + gDisableStructs[battler].encoredMove = 0; + gDisableStructs[battler].encoreTimer = 0; + } + else if (--gDisableStructs[battler].encoreTimer == 0 + || gBattleMons[battler].pp[gDisableStructs[battler].encoredMovePos] == 0) + { + gDisableStructs[battler].encoredMove = 0; + gDisableStructs[battler].encoreTimer = 0; + BattleScriptExecute(BattleScript_EncoredNoMore); + effect++; + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_LOCK_ON: // lock-on decrement + if (gStatuses3[battler] & STATUS3_ALWAYS_HITS) + gStatuses3[battler] -= STATUS3_ALWAYS_HITS_TURN(1); + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_CHARGE: // charge + if (gDisableStructs[battler].chargeTimer && --gDisableStructs[battler].chargeTimer == 0) + gStatuses3[battler] &= ~STATUS3_CHARGED_UP; + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_TAUNT: // taunt + if (gDisableStructs[battler].tauntTimer && --gDisableStructs[battler].tauntTimer == 0) + { + BattleScriptExecute(BattleScript_BufferEndTurn); + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_TAUNT); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_YAWN: // yawn + if (gStatuses3[battler] & STATUS3_YAWN) + { + u16 battlerAbility = GetBattlerAbility(battler); + gStatuses3[battler] -= STATUS3_YAWN_TURN(1); + if (!(gStatuses3[battler] & STATUS3_YAWN) && !(gBattleMons[battler].status1 & STATUS1_ANY) + && battlerAbility != ABILITY_VITAL_SPIRIT + && battlerAbility != ABILITY_INSOMNIA && !UproarWakeUpCheck(battler) + && !IsLeafGuardProtected(battler)) + { + CancelMultiTurnMoves(battler); + gEffectBattler = battler; + if (IsBattlerTerrainAffected(battler, STATUS_FIELD_ELECTRIC_TERRAIN)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINPREVENTS_ELECTRIC; + BattleScriptExecute(BattleScript_TerrainPreventsEnd2); + } + else if (IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAINPREVENTS_MISTY; + BattleScriptExecute(BattleScript_TerrainPreventsEnd2); + } + else + { + if (B_SLEEP_TURNS >= GEN_5) + gBattleMons[battler].status1 |= ((Random() % 3) + 2); + else + gBattleMons[battler].status1 |= ((Random() % 4) + 3); + + gActiveBattler = battler; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1); + MarkBattlerForControllerExec(battler); + BattleScriptExecute(BattleScript_YawnMakesAsleep); + } + effect++; + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_LASER_FOCUS: + if (gStatuses3[battler] & STATUS3_LASER_FOCUS) + { + if (gDisableStructs[battler].laserFocusTimer == 0 || --gDisableStructs[battler].laserFocusTimer == 0) + gStatuses3[battler] &= ~STATUS3_LASER_FOCUS; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_EMBARGO: + if (gStatuses3[battler] & STATUS3_EMBARGO) + { + if (gDisableStructs[battler].embargoTimer == 0 || --gDisableStructs[battler].embargoTimer == 0) + { + gStatuses3[battler] &= ~STATUS3_EMBARGO; + BattleScriptExecute(BattleScript_EmbargoEndTurn); + effect++; + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_MAGNET_RISE: + if (gStatuses3[battler] & STATUS3_MAGNET_RISE) + { + if (gDisableStructs[battler].magnetRiseTimer == 0 || --gDisableStructs[battler].magnetRiseTimer == 0) + { + gStatuses3[battler] &= ~STATUS3_MAGNET_RISE; + BattleScriptExecute(BattleScript_BufferEndTurn); + PREPARE_STRING_BUFFER(gBattleTextBuff1, STRINGID_ELECTROMAGNETISM); + effect++; + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_TELEKINESIS: + if (gStatuses3[battler] & STATUS3_TELEKINESIS) + { + if (gDisableStructs[battler].telekinesisTimer == 0 || --gDisableStructs[battler].telekinesisTimer == 0) + { + gStatuses3[battler] &= ~STATUS3_TELEKINESIS; + BattleScriptExecute(BattleScript_TelekinesisEndTurn); + effect++; + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_HEALBLOCK: + if (gStatuses3[battler] & STATUS3_HEAL_BLOCK) + { + if (gDisableStructs[battler].healBlockTimer == 0 || --gDisableStructs[battler].healBlockTimer == 0) + { + gStatuses3[battler] &= ~STATUS3_HEAL_BLOCK; + BattleScriptExecute(BattleScript_BufferEndTurn); + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_HEAL_BLOCK); + effect++; + } + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_ROOST: // Return flying type. + if (gBattleResources->flags->flags[battler] & RESOURCE_FLAG_ROOST) + gBattleResources->flags->flags[battler] &= ~RESOURCE_FLAG_ROOST; + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_ELECTRIFY: + gStatuses4[battler] &= ~STATUS4_ELECTRIFIED; + gBattleStruct->turnEffectsTracker++; + case ENDTURN_POWDER: + gBattleMons[battler].status2 &= ~STATUS2_POWDER; + gBattleStruct->turnEffectsTracker++; + case ENDTURN_THROAT_CHOP: + if (gDisableStructs[battler].throatChopTimer && --gDisableStructs[battler].throatChopTimer == 0) + { + BattleScriptExecute(BattleScript_ThroatChopEndTurn); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_SLOW_START: + if (gDisableStructs[battler].slowStartTimer + && --gDisableStructs[battler].slowStartTimer == 0 + && ability == ABILITY_SLOW_START) + { + BattleScriptExecute(BattleScript_SlowStartEnds); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_CUD_CHEW: + if (GetBattlerAbility(battler) == ABILITY_CUD_CHEW && !gDisableStructs[battler].cudChew && ItemId_GetPocket(GetUsedHeldItem(battler)) == POCKET_BERRY_POUCH) + gDisableStructs[battler].cudChew = TRUE; + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_SALT_CURE: + if (gStatuses4[battler] & STATUS4_SALT_CURE && gBattleMons[battler].hp != 0) + { + gBattlerTarget = battler; + if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_STEEL) || IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_WATER)) + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 4; + else + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SALT_CURE); + BattleScriptExecute(BattleScript_SaltCureExtraDamage); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_SYRUP_BOMB: + if ((gStatuses4[battler] & STATUS4_SYRUP_BOMB) && (gBattleMons[battler].hp != 0)) + { + if (gDisableStructs[battler].syrupBombTimer > 0 && --gDisableStructs[battler].syrupBombTimer == 0) + gStatuses4[battler] &= ~STATUS4_SYRUP_BOMB; + gBattlerTarget = battler; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SYRUP_BOMB); + gBattlescriptCurrInstr = BattleScript_SyrupBombEndTurn; + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_TORMENT: + if (gDisableStructs[battler].tormentTimer != PERMANENT_TORMENT + && --gDisableStructs[battler].tormentTimer == 0) + { + gBattleMons[battler].status2 &= ~STATUS2_TORMENT; + BattleScriptExecute(BattleScript_TormentEnds); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_DYNAMAX: + // TODO: Dynamax + // if (IsDynamaxed(battler) + // && --gBattleStruct->dynamax.dynamaxTurns[battler] == 0) + // { + // gBattleScripting.battler = battler; + // UndoDynamax(battler); + // BattleScriptExecute(BattleScript_DynamaxEnds); + // effect++; + // } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_SEA_OF_FIRE_DAMAGE: + if (IsBattlerAlive(battler) && gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SEA_OF_FIRE) + { + gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gActiveBattler = battler; + BtlController_EmitStatusAnimation(BUFFER_A, FALSE, STATUS1_BURN); + MarkBattlerForControllerExec(battler); + BattleScriptExecute(BattleScript_HurtByTheSeaOfFire); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_BATTLER_COUNT: // done + gBattleStruct->turnEffectsTracker = 0; + gBattleStruct->turnEffectsBattlerId++; + break; } + + if (effect != 0) + return effect; + } - gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_SKIP_DMG_TRACK); + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); return 0; } @@ -9202,17 +9931,6 @@ bool32 TryRoomService(u32 battler) } } -// Ingrain, Leech Seed, Strength Sap and Aqua Ring -s32 GetDrainedBigRootHp(u32 battler, s32 hp) -{ - if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_BIG_ROOT) - hp = (hp * 1300) / 1000; - if (hp == 0) - hp = 1; - - return hp * -1; -} - u8 TryHandleSeed(u32 battler, u32 terrainFlag, u8 statId, u16 itemId, bool32 execute) { if (gFieldStatuses & terrainFlag && CompareStat(battler, statId, MAX_STAT_STAGE, CMP_LESS_THAN)) diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json index 99074872f..805fba03d 100644 --- a/src/data/wild_encounters.json +++ b/src/data/wild_encounters.json @@ -8263,37 +8263,37 @@ { "min_level": 3, "max_level": 3, - "species": "SPECIES_CASTFORM" + "species": "SPECIES_DEOXYS" }, { "min_level": 3, "max_level": 3, - "species": "SPECIES_CASTFORM" + "species": "SPECIES_DEOXYS" }, { "min_level": 3, "max_level": 3, - "species": "SPECIES_MIMIKYU" + "species": "SPECIES_DEOXYS_ATTACK" }, { "min_level": 3, "max_level": 3, - "species": "SPECIES_MIMIKYU" + "species": "SPECIES_DEOXYS_ATTACK" }, { "min_level": 2, "max_level": 2, - "species": "SPECIES_MIMIKYU" + "species": "SPECIES_DEOXYS_DEFENSE" }, { "min_level": 2, "max_level": 2, - "species": "SPECIES_MIMIKYU" + "species": "SPECIES_DEOXYS_DEFENSE" }, { "min_level": 3, "max_level": 3, - "species": "SPECIES_MIMIKYU" + "species": "SPECIES_DEOXYS_DEFENSE" }, { "min_level": 3, diff --git a/src/decompress.c b/src/decompress.c index 10a38c9a6..dcf0e9d89 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -317,18 +317,3 @@ u32 GetDecompressedDataSize(const u8 *ptr) ptr8[3] = 0; return ptr32[0]; } - -void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *buffer) -{ - DecompressPicFromTable(src, buffer); -} - -void HandleLoadSpecialPokePic_DontHandleDeoxys(bool32 isFrontPic, void *dest, s32 species, u32 personality) -{ - LoadSpecialPokePic_DontHandleDeoxys(dest, species, personality, isFrontPic); -} - -void LoadSpecialPokePic_DontHandleDeoxys(void *dest, s32 species, u32 personality, bool8 isFrontPic) -{ - LoadSpecialPokePic(dest, species, personality, isFrontPic); -} diff --git a/src/field_effect.c b/src/field_effect.c index d7652022b..063b3e8c4 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -607,7 +607,7 @@ static u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority) u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority) { - u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, FALSE, 0x8000, TRUE, x, y, 0, species); + u16 spriteId = CreateMonPicSprite(species, FALSE, 0x8000, TRUE, x, y, 0, species); PreservePaletteInWeather(IndexOfSpritePaletteTag(species) + 0x10); if (spriteId == 0xFFFF) return MAX_SPRITES; @@ -617,7 +617,7 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority) static u8 CreateMonSprite_FieldMove(u16 species, bool32 isShiny, u32 personality, s16 x, s16 y, u8 subpriority) { - u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, isShiny, personality, 1, x, y, 0, species); + u16 spriteId = CreateMonPicSprite(species, isShiny, personality, 1, x, y, 0, species); PreservePaletteInWeather(IndexOfSpritePaletteTag(species) + 0x10); if (spriteId == 0xFFFF) return MAX_SPRITES; diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index a5fe3e1f4..55cd4f932 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -512,7 +512,7 @@ static void Task_Hof_DisplayMon(u8 taskId) dstY = sHallOfFame_MonHalfTeamPositions[currMonId][3]; } - spriteId = CreateMonPicSprite_HandleDeoxys(currMon->species, currMon->isShiny, currMon->personality, 1, srcX, srcY, currMonId, 0xFFFF); + spriteId = CreateMonPicSprite(currMon->species, currMon->isShiny, currMon->personality, 1, srcX, srcY, currMonId, 0xFFFF); gSprites[spriteId].data[1] = dstX; gSprites[spriteId].data[2] = dstY; gSprites[spriteId].data[0] = 0; @@ -830,8 +830,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId) posY = sHallOfFame_MonHalfTeamPositions[i][3]; } - spriteId = CreateMonPicSprite_HandleDeoxys(currMon->species, currMon->isShiny, currMon->personality, TRUE, posX, - posY, i, 0xFFFF); + spriteId = CreateMonPicSprite(currMon->species, currMon->isShiny, currMon->personality, TRUE, posX, posY, i, 0xFFFF); gSprites[spriteId].oam.priority = 1; gTasks[taskId].data[5 + i] = spriteId; } diff --git a/src/party_menu.c b/src/party_menu.c index 5c76ab32d..77993c7bf 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -57,6 +57,7 @@ #include "tm_case.h" #include "trade.h" #include "union_room.h" +#include "constants/abilities.h" #include "constants/battle.h" #include "constants/easy_chat.h" #include "constants/field_effects.h" diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index 1e97b3605..a3c6a7556 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -3109,7 +3109,7 @@ u8 DexScreen_DrawMonAreaPage(void) if (monIsCaught) { - sPokedexScreenData->windowIds[14] = CreateMonPicSprite_HandleDeoxys(species, FALSE, DexScreen_GetDefaultPersonality(species), TRUE, 40, 104, 0, 0xFFFF); + sPokedexScreenData->windowIds[14] = CreateMonPicSprite(species, FALSE, DexScreen_GetDefaultPersonality(species), TRUE, 40, 104, 0, 0xFFFF); gSprites[sPokedexScreenData->windowIds[14]].oam.paletteNum = 2; gSprites[sPokedexScreenData->windowIds[14]].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[sPokedexScreenData->windowIds[14]].oam.matrixNum = 2; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 81eceb93c..f617cf93f 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -4017,21 +4017,7 @@ static void PokeSum_CreateMonPicSprite(void) personality = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_PERSONALITY); isShiny = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_IS_SHINY, NULL); - if (sMonSummaryScreen->savedCallback == CB2_ReturnToTradeMenuFromSummary) - { - if (sMonSummaryScreen->isEnemyParty == TRUE) - spriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, 60, 65, 12, 0xffff, TRUE); - else - spriteId = CreateMonPicSprite_HandleDeoxys(species, isShiny, personality, TRUE, 60, 65, 12, 0xffff); - } - else - { - if (ShouldIgnoreDeoxysForm(DEOXYS_CHECK_TRADE_MAIN, sLastViewedMonIndex)) - spriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, 60, 65, 12, 0xffff, TRUE); - else - spriteId = CreateMonPicSprite_HandleDeoxys(species, isShiny, personality, TRUE, 60, 65, 12, 0xffff); - } - + spriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, 60, 65, 12, 0xffff); FreeSpriteOamMatrix(&gSprites[spriteId]); if (!IsMonSpriteNotFlipped(species)) diff --git a/src/trade_scene.c b/src/trade_scene.c index 43ebeccf9..526c5db51 100644 --- a/src/trade_scene.c +++ b/src/trade_scene.c @@ -756,10 +756,7 @@ static void LoadTradeMonPic(u8 whichParty, u8 state) species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); personality = GetMonData(mon, MON_DATA_PERSONALITY); - if (whichParty == TRADE_PLAYER) - HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites[1], species, personality); - else - HandleLoadSpecialPokePic_DontHandleDeoxys(TRUE, gMonSpritesGfxPtr->sprites[whichParty * 2 + 1], species, personality); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites[whichParty * 2 + 1], species, personality); LoadCompressedSpritePaletteWithTag(GetMonFrontSpritePal(mon), species); sTradeAnim->monSpecies[whichParty] = species; diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index 8336ec1ce..6691ba6e7 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -40,24 +40,11 @@ bool16 ResetAllPicSprites(void) return FALSE; } -static bool16 DecompressPic(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer, bool8 ignoreDeoxys) +static bool16 DecompressPic(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer) { if (!isTrainer) { - if (isFrontPic) - { - if (!ignoreDeoxys) - LoadSpecialPokePic(dest, species, personality, isFrontPic); - else - LoadSpecialPokePic_DontHandleDeoxys(dest, species, personality, isFrontPic); - } - else - { - if (!ignoreDeoxys) - LoadSpecialPokePic(dest, species, personality, isFrontPic); - else - LoadSpecialPokePic_DontHandleDeoxys(dest, species, personality, isFrontPic); - } + LoadSpecialPokePic(dest, species, personality, isFrontPic); } else { @@ -69,11 +56,6 @@ static bool16 DecompressPic(u16 species, u32 personality, bool8 isFrontPic, u8 * return FALSE; } -static bool16 DecompressPic_HandleDeoxys(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer) -{ - return DecompressPic(species, personality, isFrontPic, dest, isTrainer, FALSE); -} - void LoadPicPaletteByTagOrSlot(u16 species, bool32 isShiny, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) { if (!isTrainer) @@ -120,7 +102,7 @@ void AssignSpriteAnimsTable(bool8 isTrainer) sCreatingSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[0]; } -u16 CreatePicSprite(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer, bool8 ignoreDeoxys) +u16 CreatePicSprite(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) { u8 i; u8 *framePics; @@ -146,7 +128,7 @@ u16 CreatePicSprite(u16 species, bool32 isShiny, u32 personality, bool8 isFrontP Free(framePics); return 0xFFFF; } - if (DecompressPic(species, personality, isFrontPic, framePics, isTrainer, ignoreDeoxys)) + if (DecompressPic(species, personality, isFrontPic, framePics, isTrainer)) { // debug trap? return 0xFFFF; @@ -174,11 +156,6 @@ u16 CreatePicSprite(u16 species, bool32 isShiny, u32 personality, bool8 isFrontP return spriteId; } -u16 CreatePicSprite_HandleDeoxys(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) -{ - return CreatePicSprite(species, isShiny, personality, isFrontPic, x, y, paletteSlot, paletteTag, isTrainer, FALSE); -} - u16 FreeAndDestroyPicSpriteInternal(u16 spriteId) { u8 i; @@ -206,7 +183,7 @@ u16 FreeAndDestroyPicSpriteInternal(u16 spriteId) static u16 LoadPicSpriteInWindow(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId, bool8 isTrainer) { - if (DecompressPic_HandleDeoxys(species, personality, isFrontPic, (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE)) + if (DecompressPic(species, personality, isFrontPic, (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE)) return 0xFFFF; LoadPicPaletteBySlot(species, isShiny, personality, paletteSlot, isTrainer); @@ -218,7 +195,7 @@ u16 CreateTrainerCardSprite(u16 species, bool32 isShiny, u32 personality, bool8 u8 *framePics; framePics = Alloc(4 * 0x800); - if (framePics && !DecompressPic_HandleDeoxys(species, personality, isFrontPic, framePics, isTrainer)) + if (framePics && !DecompressPic(species, personality, isFrontPic, framePics, isTrainer)) { BlitBitmapRectToWindow(windowId, framePics, 0, 0, 0x40, 0x40, destX, destY, 0x40, 0x40); LoadPicPaletteBySlot(species, isShiny, personality, paletteSlot, isTrainer); @@ -228,14 +205,9 @@ u16 CreateTrainerCardSprite(u16 species, bool32 isShiny, u32 personality, bool8 return 0xFFFF; } -u16 CreateMonPicSprite(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys) +u16 CreateMonPicSprite(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) { - return CreatePicSprite(species, isShiny, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE, ignoreDeoxys); -} - -u16 CreateMonPicSprite_HandleDeoxys(u16 species, bool32 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) -{ - return CreateMonPicSprite(species, isShiny, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE); + return CreatePicSprite(species, isShiny, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE); } u16 FreeAndDestroyMonPicSprite(u16 spriteId) @@ -250,7 +222,7 @@ u16 LoadMonPicInWindow(u16 species, bool32 isShiny, u32 personality, bool8 isFro u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) { - return CreatePicSprite_HandleDeoxys(species, FALSE, 0, isFrontPic, x, y, paletteSlot, paletteTag, TRUE); + return CreatePicSprite(species, FALSE, 0, isFrontPic, x, y, paletteSlot, paletteTag, TRUE); } u16 FreeAndDestroyTrainerPicSprite(u16 spriteId)