diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b55f8a9ab1..9fd8944d38 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,6 +40,9 @@ jobs: working-directory: agbcc - name: Agbcc + env: + MODERN: 0 + COMPARE: 0 run: make -j${nproc} -O all - name: Modern @@ -50,7 +53,8 @@ jobs: - name: Test env: + MODERN: 1 TEST: 1 run: | - make -j${nproc} -O pokeemerald-test.elf + make -j${nproc} -O pokeemerald_modern-test.elf make -j${nproc} check diff --git a/Makefile b/Makefile index fb48be1841..4b59c76f66 100644 --- a/Makefile +++ b/Makefile @@ -40,12 +40,12 @@ TITLE := POKEMON EMER GAME_CODE := BPEE MAKER_CODE := 01 REVISION := 0 -MODERN ?= 0 +MODERN ?= 1 TEST ?= 0 ANALYZE ?= 0 -ifeq (modern,$(MAKECMDGOALS)) - MODERN := 1 +ifeq (agbcc,$(MAKECMDGOALS)) + MODERN := 0 endif ifeq (check,$(MAKECMDGOALS)) @@ -85,7 +85,11 @@ ELF = $(ROM:.gba=.elf) MAP = $(ROM:.gba=.map) SYM = $(ROM:.gba=.sym) +ifeq ($(MODERN),0) TEST_OBJ_DIR_NAME := build/test +else +TEST_OBJ_DIR_NAME := build/modern-test +endif TESTELF = $(ROM:.gba=-test.elf) HEADLESSELF = $(ROM:.gba=-test-headless.elf) @@ -178,7 +182,7 @@ MAKEFLAGS += --no-print-directory # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall modern tidymodern tidynonmodern check +.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall agbcc modern tidymodern tidynonmodern check infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -186,7 +190,7 @@ infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst # Disable dependency scanning for clean/tidy/tools # Use a separate minimal makefile for speed # Since we don't need to reload most of this makefile -ifeq (,$(filter-out all rom compare modern check libagbsyscall syms $(TESTELF),$(MAKECMDGOALS))) +ifeq (,$(filter-out all rom compare agbcc modern check libagbsyscall syms $(TESTELF),$(MAKECMDGOALS))) $(call infoshell, $(MAKE) -f make_tools.mk) else NODEP ?= 1 @@ -345,6 +349,7 @@ $(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm$(EXE) $(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet else $(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast +$(C_BUILDDIR)/pokedex_plus_hgss.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias endif ifeq ($(DINFO),1) @@ -480,6 +485,8 @@ $(ROM): $(ELF) $(OBJCOPY) -O binary $< $@ $(FIX) $@ -p --silent +agbcc: all + modern: all LD_SCRIPT_TEST := ld_script_test.txt diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index e5d8fc58c8..cfdc2792b4 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1462,6 +1462,54 @@ .4byte \jumpInstr .endm + .macro tryreflecttype failInstr:req + callnative BS_TryReflectType + .4byte \failInstr + .endm + + @ Used to active a different Max Move effects. + .macro setmaxmoveeffect + callnative BS_SetMaxMoveEffect + .endm + + .macro setsteelsurge, failInstr:req + callnative BS_SetSteelsurge + .4byte \failInstr + .endm + + .macro damagenontypes + callnative BS_DamageNonTypes + .endm + + .macro trysetstatus1, ptr:req + callnative BS_TrySetStatus1 + .4byte \ptr + .endm + + .macro trysetstatus2, ptr:req + callnative BS_TrySetStatus2 + .4byte \ptr + .endm + + .macro tryhealsixthhealth, ptr:req + callnative BS_HealOneSixth + .4byte \ptr + .endm + + .macro tryrecycleberry, ptr:req + callnative BS_TryRecycleBerry + .4byte \ptr + .endm + + .macro updatedynamax + callnative BS_UpdateDynamax + .endm + + .macro jumpiftargetdynamaxed, ptr:req + callnative BS_JumpIfDynamaxed + .4byte \ptr + .endm + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES @@ -1692,11 +1740,6 @@ .4byte \failInstr .endm - .macro tryreflecttype failInstr:req - various BS_ATTACKER, VARIOUS_TRY_REFLECT_TYPE - .4byte \failInstr - .endm - .macro trysoak failInstr:req various BS_ATTACKER, VARIOUS_TRY_SOAK .4byte \failInstr @@ -2341,3 +2384,8 @@ getbattlerfainted \battler jumpifbyte CMP_EQUAL, gBattleCommunication, \value, \ptr .endm + + .macro flushtextbox + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index e533173e11..07c1970153 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -780,7 +780,7 @@ gBattleAnims_Moves:: .4byte Move_GLACIAL_LANCE .4byte Move_ASTRAL_BARRAGE .4byte Move_EERIE_SPELL -@@@@LA MOVES +@@@@ LA MOVES .4byte Move_DIRE_CLAW .4byte Move_PSYSHIELD_BASH .4byte Move_POWER_SHIFT @@ -896,6 +896,60 @@ gBattleAnims_Moves:: .4byte Move_MENACING_MOONRAZE_MAELSTROM .4byte Move_LIGHT_THAT_BURNS_THE_SKY .4byte Move_SOUL_STEALING_7_STAR_STRIKE +@@@@ MAX MOVES + .4byte Move_MAX_GUARD + .4byte Move_MAX_STRIKE + .4byte Move_MAX_KNUCKLE + .4byte Move_MAX_AIRSTREAM + .4byte Move_MAX_OOZE + .4byte Move_MAX_QUAKE + .4byte Move_MAX_ROCKFALL + .4byte Move_MAX_FLUTTERBY + .4byte Move_MAX_PHANTASM + .4byte Move_MAX_STEELSPIKE + .4byte Move_MAX_FLARE + .4byte Move_MAX_GEYSER + .4byte Move_MAX_OVERGROWTH + .4byte Move_MAX_LIGHTNING + .4byte Move_MAX_MINDSTORM + .4byte Move_MAX_HAILSTORM + .4byte Move_MAX_WYRMWIND + .4byte Move_MAX_DARKNESS + .4byte Move_MAX_STARFALL +@@@@ G-MAX MOVES + .4byte Move_G_MAX_VINE_LASH + .4byte Move_G_MAX_WILDFIRE + .4byte Move_G_MAX_CANNONADE + .4byte Move_G_MAX_BEFUDDLE + .4byte Move_G_MAX_VOLT_CRASH + .4byte Move_G_MAX_GOLD_RUSH + .4byte Move_G_MAX_CHI_STRIKE + .4byte Move_G_MAX_TERROR + .4byte Move_G_MAX_FOAM_BURST + .4byte Move_G_MAX_RESONANCE + .4byte Move_G_MAX_CUDDLE + .4byte Move_G_MAX_REPLENISH + .4byte Move_G_MAX_MALODOR + .4byte Move_G_MAX_MELTDOWN + .4byte Move_G_MAX_DRUM_SOLO + .4byte Move_G_MAX_FIREBALL + .4byte Move_G_MAX_HYDROSNIPE + .4byte Move_G_MAX_WIND_RAGE + .4byte Move_G_MAX_GRAVITAS + .4byte Move_G_MAX_STONESURGE + .4byte Move_G_MAX_VOLCALITH + .4byte Move_G_MAX_TARTNESS + .4byte Move_G_MAX_SWEETNESS + .4byte Move_G_MAX_SANDBLAST + .4byte Move_G_MAX_STUN_SHOCK + .4byte Move_G_MAX_CENTIFERNO + .4byte Move_G_MAX_SMITE + .4byte Move_G_MAX_SNOOZE + .4byte Move_G_MAX_FINALE + .4byte Move_G_MAX_STEELSURGE + .4byte Move_G_MAX_DEPLETION + .4byte Move_G_MAX_ONE_BLOW + .4byte Move_G_MAX_RAPID_FLOW @@@ Last Move - cannot be reached .4byte Move_COUNT @@ -953,6 +1007,8 @@ gBattleAnims_General:: .4byte General_Snow @ B_ANIM_SNOW_CONTINUES .4byte General_UltraBurst @ B_ANIM_ULTRA_BURST .4byte General_SaltCureDamage @ B_ANIM_SALT_CURE_DAMAGE + .4byte General_DynamaxGrowth @ B_ANIM_DYNAMAX_GROWTH + .4byte General_SetWeather @ B_ANIM_MAX_SET_WEATHER .align 2 gBattleAnims_Special:: @@ -15105,16 +15161,21 @@ Move_SILK_TRAP:: clearmonbg ANIM_ATK_PARTNER end -@ Also used by Snow weather. Currently identical with Move_HAIL +@ Also used by Snow weather. Credits to Dat.H A Move_SNOWSCAPE:: - loadspritegfx ANIM_TAG_HAIL - loadspritegfx ANIM_TAG_ICE_CRYSTALS - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK + loadspritegfx ANIM_TAG_SNOWFLAKES + playsewithpan SE_M_GUST, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 0, 4, RGB(11, 18, 22) waitforvisualfinish - createvisualtask AnimTask_Hail, 5 - loopsewithpan SE_M_HAIL, 0, 8, 10 + createvisualtask AnimTask_CreateSnowflakes, 2, 0, 3, 120 + createvisualtask AnimTask_CreateSnowflakes, 2, 0, 3, 120 + createvisualtask AnimTask_CreateSnowflakes, 2, 0, 3, 120 + delay 120 + playsewithpan SE_M_GUST2, SOUND_PAN_ATTACKER + delay 30 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 4, 0, RGB(11, 18, 22) waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK end @Credits to Skeli @@ -32868,3 +32929,182 @@ SoulStealingSevenStarStrikeExplosion: createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 return + +@@@@@@@@@@ MAX MOVES @@@@@@@@@@ +General_SetWeather:: + createvisualtask AnimTask_GetWeatherToSet, 2 + jumpreteq 1, General_Sun + jumpreteq 2, General_Rain + jumpreteq 3, General_Sandstorm + jumpreteq 4, General_Hail + end + +Move_MAX_GUARD: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_PROTECT + end + +Move_MAX_STRIKE: +Move_G_MAX_REPLENISH: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_GIGA_IMPACT + end + +Move_MAX_AIRSTREAM: +Move_G_MAX_WIND_RAGE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_AEROBLAST + end + +Move_MAX_OOZE: +Move_G_MAX_MALODOR: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_GUNK_SHOT + end + +Move_G_MAX_WILDFIRE: +Move_G_MAX_FIREBALL: +Move_G_MAX_CENTIFERNO: +Move_MAX_FLARE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_BLAST_BURN + end + +Move_G_MAX_CANNONADE: +Move_G_MAX_HYDROSNIPE: +Move_G_MAX_FOAM_BURST: +Move_MAX_GEYSER: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_HYDRO_CANNON + end + +Move_G_MAX_VINE_LASH: +Move_G_MAX_DRUM_SOLO: +Move_G_MAX_TARTNESS: +Move_G_MAX_SWEETNESS: +Move_MAX_OVERGROWTH: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_FRENZY_PLANT + end + +Move_MAX_LIGHTNING: +Move_G_MAX_STUN_SHOCK: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_ZAP_CANNON + end + +Move_G_MAX_CHI_STRIKE: +Move_G_MAX_ONE_BLOW: +Move_G_MAX_RAPID_FLOW: +Move_MAX_KNUCKLE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_CLOSE_COMBAT + end + +Move_G_MAX_RESONANCE: +Move_MAX_HAILSTORM: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_SHEER_COLD + end + +Move_G_MAX_SANDBLAST: +Move_MAX_QUAKE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_FISSURE + end + +Move_G_MAX_BEFUDDLE: +Move_MAX_FLUTTERBY: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_BUG_BUZZ + end + +Move_G_MAX_STEELSURGE: +Move_G_MAX_MELTDOWN: +Move_MAX_STEELSPIKE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_HEAVY_SLAM + end + +Move_G_MAX_TERROR: +Move_MAX_PHANTASM: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_PHANTOM_FORCE + end + +Move_G_MAX_GRAVITAS: +Move_MAX_MINDSTORM: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_PSYCHO_BOOST + end + +Move_G_MAX_SMITE: +Move_G_MAX_FINALE: +Move_MAX_STARFALL: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_MOONBLAST + end + +Move_G_MAX_STONESURGE: +Move_G_MAX_VOLCALITH: +Move_MAX_ROCKFALL: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_ROCK_WRECKER + end + +Move_G_MAX_DEPLETION: +Move_MAX_WYRMWIND: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_SPACIAL_REND + end + +Move_G_MAX_SNOOZE: +Move_MAX_DARKNESS: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_DARK_PULSE + end + +Move_G_MAX_CUDDLE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_COVET + end + +Move_G_MAX_VOLT_CRASH: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_VOLT_TACKLE + end + +Move_G_MAX_GOLD_RUSH: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_PAY_DAY + end + +@@@ DYNAMAX AND MAX RAIDS +General_DynamaxGrowth:: @ PORTED FROM CFRU + createvisualtask SoundTask_PlayCryWithEcho, 2, ANIM_ATTACKER, 2 + delay 8 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x0 + waitforvisualfinish + end diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index bc0a7a7fa3..01688c0dce 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -435,11 +435,11 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectCorrosiveGas @ EFFECT_CORROSIVE_GAS .4byte BattleScript_EffectHit @ EFFECT_POPULATION_BOMB .4byte BattleScript_EffectMortalSpin @ EFFECT_MORTAL_SPIN - .4byte BattleScript_EffectHit @ EFFECT_GIGATON_HAMMER .4byte BattleScript_EffectSaltCure @ EFFECT_SALT_CURE .4byte BattleScript_EffectMatchaGotcha @ EFFECT_MATCHA_GOTCHA .4byte BattleScript_EffectSyrupBomb @ EFFECT_SYRUP_BOMB .4byte BattleScript_EffectHit @ EFFECT_IVY_CUDGEL + .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE BattleScript_EffectSyrupBomb:: setmoveeffect MOVE_EFFECT_SYRUP_BOMB @@ -524,6 +524,8 @@ BattleScript_CorrosiveGasFail: goto BattleScript_MoveEnd BattleScript_EffectMakeItRain: + jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_MakeItRainDoubles +BattleScript_MakeItRainContinuous: setmoveeffect MOVE_EFFECT_PAYDAY call BattleScript_EffectHit_Ret seteffectwithchance @@ -531,6 +533,9 @@ BattleScript_EffectMakeItRain: setmoveeffect MOVE_EFFECT_SP_ATK_MINUS_1 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN seteffectprimary goto BattleScript_MoveEnd +BattleScript_MakeItRainDoubles: + jumpifword CMP_NO_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING | HITMARKER_NO_PPDEDUCT, BattleScript_NoMoveEffect + goto BattleScript_MakeItRainContinuous BattleScript_EffectSpinOut:: setmoveeffect MOVE_EFFECT_SPD_MINUS_2 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN @@ -744,8 +749,7 @@ BattleScript_AffectionBasedStatusHeal_Continue: end2 BattleScript_ShellTrapSetUp:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 0x1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_SHELL_TRAP_SETUP, NULL printstring STRINGID_PREPARESHELLTRAP waitmessage B_WAIT_TIME_LONG @@ -818,8 +822,7 @@ BattleScript_EffectCourtChange:: BattleScript_BeakBlastSetUp:: setbeakblast BS_ATTACKER - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_BEAK_BLAST_SETUP, NULL printstring STRINGID_HEATUPBEAK waitmessage B_WAIT_TIME_LONG @@ -843,7 +846,7 @@ BattleScript_EffectMeteorBeam:: BattleScript_FirstChargingTurnMeteorBeam:: attackcanceler - printstring STRINGID_EMPTYSTRING3 + flushtextbox ppreduce attackanimation waitanimation @@ -1034,7 +1037,7 @@ BattleScript_EffectPhotonGeyser: goto BattleScript_MoveEnd BattleScript_EffectAuraWheel: @ Aura Wheel can only be used by Morpeko - jumpifspecies BS_ATTACKER, SPECIES_MORPEKO, BattleScript_EffectSpeedUpHit + jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_FULL_BELLY, BattleScript_EffectSpeedUpHit jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_HANGRY, BattleScript_EffectSpeedUpHit goto BattleScript_PokemonCantUseTheMove @@ -1137,7 +1140,7 @@ BattleScript_BothCanNoLongerEscape:: BattleScript_EffectHyperspaceFury: jumpifspecies BS_ATTACKER, SPECIES_HOOPA_UNBOUND, BattleScript_EffectHyperspaceFuryUnbound - jumpifspecies BS_ATTACKER, SPECIES_HOOPA, BattleScript_ButHoopaCantUseIt + jumpifspecies BS_ATTACKER, SPECIES_HOOPA_CONFINED, BattleScript_ButHoopaCantUseIt goto BattleScript_PokemonCantUseTheMove BattleScript_EffectHyperspaceFuryUnbound:: @@ -1513,8 +1516,7 @@ BattleScript_MoveEffectCoreEnforcer:: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox BattleScript_CoreEnforcerRet: return @@ -1608,8 +1610,7 @@ BattleScript_EffectPartingShotSwitch: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate @@ -1964,8 +1965,7 @@ BattleScript_SynchronoiseLoop: waitmessage B_WAIT_TIME_LONG resultmessage waitmessage B_WAIT_TIME_LONG - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox tryfaintmon BS_TARGET BattleScript_SynchronoiseMoveTargetEnd: moveendto MOVEEND_NEXT_TARGET @@ -2114,10 +2114,14 @@ BattleScript_EffectHitSwitchTarget: moveendall jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted + jumpiftargetdynamaxed BattleScript_HitSwitchTargetDynamaxed tryhitswitchtarget BattleScript_MoveEnd forcerandomswitch BattleScript_HitSwitchTargetForceRandomSwitchFailed goto BattleScript_MoveEnd +BattleScript_HitSwitchTargetDynamaxed: + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG BattleScript_HitSwitchTargetForceRandomSwitchFailed: hitswitchtargetfailed setbyte sSWITCH_CASE, B_SWITCH_NORMAL @@ -2645,8 +2649,7 @@ BattleScript_EffectSimpleBeam: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox tryendneutralizinggas BS_TARGET goto BattleScript_MoveEnd @@ -2699,8 +2702,7 @@ BattleScript_EffectHealingWish: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate @@ -2745,8 +2747,7 @@ BattleScript_EffectWorrySeed: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox goto BattleScript_MoveEnd BattleScript_EffectPowerSplit: @@ -2877,8 +2878,7 @@ BattleScript_EffectGastroAcid: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox tryendneutralizinggas BS_TARGET goto BattleScript_MoveEnd @@ -3013,6 +3013,7 @@ BattleScript_EffectGravity: setgravity BattleScript_ButItFailed attackanimation waitanimation +BattleScript_EffectGravitySuccess:: printstring STRINGID_GRAVITYINTENSIFIED waitmessage B_WAIT_TIME_LONG selectfirstvalidtarget @@ -3087,8 +3088,7 @@ BattleScript_EffectHitEscape: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate @@ -3703,11 +3703,17 @@ BattleScript_EffectRoar:: jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_ButItFailed jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted + jumpiftargetdynamaxed BattleScript_RoarBlockedByDynamax accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed forcerandomswitch BattleScript_ButItFailed +BattleScript_RoarBlockedByDynamax: + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + BattleScript_EffectMultiHit:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE @@ -3738,8 +3744,7 @@ BattleScript_DoMultiHit:: critmessage waitmessage B_WAIT_TIME_LONG multihitresultmessage - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox addbyte sMULTIHIT_STRING + 4, 1 moveendto MOVEEND_NEXT_TARGET jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_MultiHitPrintStrings @@ -3930,7 +3935,7 @@ BattleScript_TwoTurnMovesSecondTurn:: BattleScriptFirstChargingTurn:: attackcanceler - printstring STRINGID_EMPTYSTRING3 + flushtextbox ppreduce attackstring BattleScriptFirstChargingTurnAfterAttackString: @@ -4105,8 +4110,7 @@ BattleScript_EffectTransform:: attackstring ppreduce trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox transformdataexecution attackanimation waitanimation @@ -4150,6 +4154,7 @@ BattleScript_EffectReflect:: BattleScript_PrintReflectLightScreenSafeguardString:: attackanimation waitanimation +BattleScript_EffectAuroraVeilSuccess:: printfromtable gReflectLightScreenSafeguardStringIds waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd @@ -5006,8 +5011,7 @@ BattleScript_EffectBatonPass:: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate @@ -5902,6 +5906,7 @@ BattleScript_EffectYawn:: setyawn BattleScript_ButItFailed attackanimation waitanimation + BattleScript_EffectYawnSuccess:: printstring STRINGID_PKMNWASMADEDROWSY waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd @@ -6333,8 +6338,7 @@ BattleScript_FaintedMonTryChoose: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_ATTACKER switchinanim BS_ATTACKER, 0 @@ -6346,8 +6350,7 @@ BattleScript_FaintedMonSendOutNew: switchindataupdate BS_FAINTED hpthresholds BS_FAINTED trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_FAINTED switchinanim BS_FAINTED, FALSE @@ -6381,8 +6384,7 @@ BattleScript_LinkHandleFaintedMonLoop:: switchindataupdate BS_FAINTED hpthresholds BS_FAINTED trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_FAINTED switchinanim BS_FAINTED, FALSE @@ -6596,6 +6598,7 @@ BattleScript_PursuitSwitchDmgLoop:: BattleScript_DoSwitchOut:: decrementmultihit BattleScript_PursuitSwitchDmgLoop switchoutabilities BS_ATTACKER + updatedynamax waitstate returnatktoball waitstate @@ -6605,8 +6608,7 @@ BattleScript_DoSwitchOut:: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_ATTACKER switchinanim BS_ATTACKER, FALSE @@ -6901,8 +6903,7 @@ BattleScript_RoarSuccessSwitch:: getswitchedmondata BS_TARGET switchindataupdate BS_TARGET trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox switchinanim BS_TARGET, FALSE waitstate printstring STRINGID_PKMNWASDRAGGEDOUT @@ -7343,6 +7344,11 @@ BattleScript_StealthRockFree:: printstring STRINGID_PKMNBLEWAWAYSTEALTHROCK waitmessage B_WAIT_TIME_LONG return + +BattleScript_SteelsurgeFree:: + printstring STRINGID_PKMNBLEWAWAYSHARPSTEEL + waitmessage B_WAIT_TIME_LONG + return BattleScript_SpikesDefog:: printstring STRINGID_SPIKESDISAPPEAREDFROMTEAM @@ -7364,6 +7370,11 @@ BattleScript_StealthRockDefog:: waitmessage B_WAIT_TIME_LONG return +BattleScript_SteelsurgeDefog:: + printstring STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM + waitmessage B_WAIT_TIME_LONG + return + BattleScript_MonTookFutureAttack:: printstring STRINGID_PKMNTOOKATTACK waitmessage B_WAIT_TIME_LONG @@ -7718,15 +7729,14 @@ BattleScript_MoveEffectClearSmog:: return BattleScript_FocusPunchSetUp:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP printstring STRINGID_PKMNTIGHTENINGFOCUS waitmessage B_WAIT_TIME_LONG end3 BattleScript_MegaEvolution:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox trytrainerslidemegaevolutionmsg BS_ATTACKER printstring STRINGID_MEGAEVOREACTING BattleScript_MegaEvolutionAfterString: @@ -7742,7 +7752,7 @@ BattleScript_MegaEvolutionAfterString: end3 BattleScript_WishMegaEvolution:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox trytrainerslidemegaevolutionmsg BS_ATTACKER printstring STRINGID_FERVENTWISHREACHED goto BattleScript_MegaEvolutionAfterString @@ -7757,8 +7767,7 @@ BattleScript_PrimalReversionRestoreAttacker:: end2 BattleScript_PrimalReversionRet:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox setbyte gIsCriticalHit, 0 handleprimalreversion BS_ATTACKER, 0 handleprimalreversion BS_ATTACKER, 1 @@ -7771,7 +7780,7 @@ BattleScript_PrimalReversionRet:: return BattleScript_UltraBurst:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox trytrainerslidezmovemsg BS_ATTACKER printstring STRINGID_ULTRABURSTREACTING waitmessage B_WAIT_TIME_LONG @@ -7789,8 +7798,7 @@ BattleScript_AttackerFormChange:: pause 5 copybyte gBattlerAbility, gBattlerAttacker call BattleScript_AbilityPopUp - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox BattleScript_AttackerFormChangeNoPopup:: handleformchange BS_ATTACKER, 0 handleformchange BS_ATTACKER, 1 @@ -7837,8 +7845,7 @@ BattleScript_CudChewActivates:: end3 BattleScript_TargetFormChangeNoPopup: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox handleformchange BS_TARGET, 0 handleformchange BS_TARGET, 1 playanimation BS_TARGET, B_ANIM_FORM_CHANGE @@ -7869,8 +7876,7 @@ BattleScript_TargetFormChangeWithStringNoPopup:: BattleScript_BattlerFormChangeWithStringEnd3:: pause 5 call BattleScript_AbilityPopUp - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox handleformchange BS_SCRIPTING, 0 handleformchange BS_SCRIPTING, 1 playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE, NULL @@ -9730,7 +9736,7 @@ BattleScript_ActionSelectionItemsCantBeUsed:: endselectionscript BattleScript_FlushMessageBox:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox return BattleScript_PalacePrintFlavorText:: @@ -9917,8 +9923,7 @@ BattleScript_AnnounceAirLockCloudNine:: end3 BattleScript_QuickClawActivation:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT waitanimation printstring STRINGID_CANACTFASTERTHANKSTO @@ -9926,16 +9931,14 @@ BattleScript_QuickClawActivation:: end2 BattleScript_QuickDrawActivation:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox call BattleScript_AbilityPopUp printstring STRINGID_CANACTFASTERTHANKSTO waitmessage B_WAIT_TIME_LONG end2 BattleScript_CustapBerryActivation:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT waitanimation printstring STRINGID_CANACTFASTERTHANKSTO @@ -9983,7 +9986,7 @@ BattleScript_JabocaRowapBerryActivate_Dmg: @ z moves / effects BattleScript_ZMoveActivateDamaging:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox trytrainerslidezmovemsg BS_ATTACKER printstring STRINGID_ZPOWERSURROUNDS playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL @@ -9992,7 +9995,7 @@ BattleScript_ZMoveActivateDamaging:: return BattleScript_ZMoveActivateStatus:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox trytrainerslidezmovemsg BS_ATTACKER savetarget printstring STRINGID_ZPOWERSURROUNDS @@ -10161,6 +10164,7 @@ BattleScript_RedCardActivates:: swapattackerwithtarget jumpifstatus3 BS_EFFECT_BATTLER, STATUS3_ROOTED, BattleScript_RedCardIngrain jumpifability BS_EFFECT_BATTLER, ABILITY_SUCTION_CUPS, BattleScript_RedCardSuctionCups + jumpiftargetdynamaxed BattleScript_RedCardDynamaxed removeitem BS_SCRIPTING setbyte sSWITCH_CASE, B_SWITCH_RED_CARD forcerandomswitch BattleScript_RedCardEnd @@ -10179,6 +10183,12 @@ BattleScript_RedCardSuctionCups: removeitem BS_SCRIPTING swapattackerwithtarget return +BattleScript_RedCardDynamaxed: + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG + removeitem BS_SCRIPTING + swapattackerwithtarget + return BattleScript_EjectButtonActivates:: makevisible BS_ATTACKER @@ -10196,8 +10206,7 @@ BattleScript_EjectButtonActivates:: switchindataupdate BS_SCRIPTING hpthresholds BS_SCRIPTING trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring 0x3 switchinanim BS_SCRIPTING 0x1 waitstate @@ -10317,6 +10326,294 @@ BattleScript_TargetAbilityStatRaiseRet_End: copybyte gBattlerAttacker, sSAVED_BATTLER return +@@@ MAX MOVES @@@ +BattleScript_EffectMaxMove:: + attackcanceler + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + attackstring + ppreduce + critcalc + damagecalc + adjustdamage + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage B_WAIT_TIME_LONG + resultmessage + waitmessage B_WAIT_TIME_LONG + tryfaintmon BS_TARGET + setmaxmoveeffect + moveendall + end + +BattleScript_EffectRaiseStatAllies:: + savetarget + copybyte gBattlerTarget, gBattlerAttacker +BattleScript_RaiseSideStatsLoop: + jumpifabsent BS_TARGET, BattleScript_RaiseSideStatsIncrement + statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_RaiseSideStatsIncrement + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_RaiseSideStatsIncrement + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_RaiseSideStatsIncrement: + setbyte sSTAT_ANIM_PLAYED, FALSE + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseSideStatsEnd + setallytonexttarget BattleScript_RaiseSideStatsLoop +BattleScript_RaiseSideStatsEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectLowerStatFoes:: + savetarget + copybyte sBATTLER, gBattlerTarget +BattleScript_LowerSideStatsLoop: + jumpifabsent BS_TARGET, BattleScript_LowerSideStatsIncrement + statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_LowerSideStatsIncrement + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_LowerSideStatsIncrement + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_LowerSideStatsIncrement: + setbyte sSTAT_ANIM_PLAYED, FALSE + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_LowerSideStatsEnd + setallytonexttarget BattleScript_LowerSideStatsLoop +BattleScript_LowerSideStatsEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectSetWeather:: + playanimation 0, B_ANIM_MAX_SET_WEATHER + printfromtable gMoveWeatherChangeStringIds + waitmessage B_WAIT_TIME_LONG + call BattleScript_ActivateWeatherAbilities + goto BattleScript_MoveEnd + +BattleScript_EffectSetTerrain:: + printfromtable gTerrainStringIds + waitmessage B_WAIT_TIME_LONG + playanimation BS_ATTACKER, B_ANIM_RESTORE_BG + call BattleScript_ActivateTerrainEffects + goto BattleScript_MoveEnd + +BattleScript_DamageNonTypesStarts:: + printfromtable gDamageNonTypesStartStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +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_SKIP_DMG_TRACK | 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_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + end2 + +BattleScript_EffectTryReducePP:: + tryspiteppreduce BattleScript_MoveEnd + printstring STRINGID_PKMNREDUCEDPP + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +BattleScript_EffectStatus1Foes:: + savetarget + copybyte sBATTLER, gBattlerTarget +BattleScript_Status1FoesLoop: + jumpifabsent BS_TARGET, BattleScript_Status1FoesIncrement + trysetstatus1 BattleScript_Status1FoesIncrement + statusanimation BS_TARGET + updatestatusicon BS_TARGET + printfromtable gStatusConditionsStringIds + waitmessage B_WAIT_TIME_LONG + updatestatusicon BS_EFFECT_BATTLER + waitstate +BattleScript_Status1FoesIncrement: + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_Status1FoesEnd + setallytonexttarget BattleScript_Status1FoesLoop +BattleScript_Status1FoesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectStatus2Foes:: + savetarget + copybyte sBATTLER, gBattlerTarget +BattleScript_Status2FoesLoop: + jumpifabsent BS_TARGET, BattleScript_Status2FoesIncrement + trysetstatus2 BattleScript_Status2FoesIncrement + jumpifbyte CMP_EQUAL, gBattleCommunication, 1, BattleScript_DoConfuseAnim + jumpifbyte CMP_EQUAL, gBattleCommunication, 2, BattleScript_DoInfatuationAnim +BattleScript_Status2FoesPrintMessage: + printfromtable gStatus2StringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_Status2FoesIncrement: + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_Status2FoesEnd + setallytonexttarget BattleScript_Status2FoesLoop +BattleScript_Status2FoesEnd: + restoretarget + jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_PrintCoinsScattered @ Gold Rush + goto BattleScript_MoveEnd + +BattleScript_DoConfuseAnim: + status2animation BS_EFFECT_BATTLER, STATUS2_CONFUSION + goto BattleScript_Status2FoesPrintMessage + +BattleScript_DoInfatuationAnim: + status2animation BS_EFFECT_BATTLER, STATUS2_INFATUATION + goto BattleScript_Status2FoesPrintMessage + +BattleScript_PrintCoinsScattered: + printstring STRINGID_COINSSCATTERED + goto BattleScript_MoveEnd + +BattleScript_TormentEnds:: + printstring STRINGID_TORMENTEDNOMORE + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_EffectRaiseCritAlliesAnim:: + savetarget + copybyte gBattlerTarget, gBattlerAttacker +BattleScript_RaiseCritAlliesLoop: + jumpifabsent BS_TARGET, BattleScript_RaiseCritAlliesIncrement + setstatchanger STAT_ATK, 0, FALSE @ for animation + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + swapattackerwithtarget + printstring STRINGID_PKMNGETTINGPUMPED + waitmessage B_WAIT_TIME_LONG + swapattackerwithtarget +BattleScript_RaiseCritAlliesIncrement: + setbyte sSTAT_ANIM_PLAYED, FALSE + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseCritAlliesEnd + setallytonexttarget BattleScript_RaiseCritAlliesLoop +BattleScript_RaiseCritAlliesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectHealOneSixthAllies:: + jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd + savetarget + copybyte gBattlerTarget, gBattlerAttacker +BattleScript_HealOneSixthAlliesLoop: + jumpifabsent BS_TARGET, BattleScript_HealOneSixthAlliesIncrement + tryhealsixthhealth BattleScript_HealOneSixthAlliesIncrement + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + printstring STRINGID_PKMNREGAINEDHEALTH + waitmessage B_WAIT_TIME_LONG +BattleScript_HealOneSixthAlliesIncrement: + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_HealOneSixthAlliesEnd + setallytonexttarget BattleScript_HealOneSixthAlliesLoop +BattleScript_HealOneSixthAlliesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectCureStatusAllies:: + jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd + savetarget + copybyte gBattlerTarget, gBattlerAttacker +BattleScript_CureStatusAlliesLoop: + jumpifabsent BS_TARGET, BattleScript_CureStatusAlliesIncrement + jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_CureStatusActivate +BattleScript_CureStatusAlliesIncrement: + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_CureStatusAlliesEnd + setallytonexttarget BattleScript_CureStatusAlliesLoop +BattleScript_CureStatusAlliesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_CureStatusActivate: + curestatus BS_TARGET + updatestatusicon BS_TARGET + swapattackerwithtarget + printstring STRINGID_PKMNSTATUSNORMAL + waitmessage B_WAIT_TIME_LONG + swapattackerwithtarget + goto BattleScript_CureStatusAlliesIncrement + +BattleScript_EffectRecycleBerriesAllies:: + savetarget + copybyte gBattlerTarget, gBattlerAttacker +BattleScript_RecycleBerriesAlliesLoop: + jumpifabsent BS_TARGET, BattleScript_RecycleBerriesAlliesIncrement + tryrecycleberry BattleScript_RecycleBerriesAlliesIncrement + swapattackerwithtarget + printstring STRINGID_XFOUNDONEY + waitmessage B_WAIT_TIME_LONG + swapattackerwithtarget +BattleScript_RecycleBerriesAlliesIncrement: + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RecycleBerriesAlliesEnd + setallytonexttarget BattleScript_RecycleBerriesAlliesLoop +BattleScript_RecycleBerriesAlliesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectStonesurge:: + setstealthrock BattleScript_MoveEnd + printfromtable gDmgHazardsStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +BattleScript_EffectSteelsurge:: + setsteelsurge BattleScript_MoveEnd + printfromtable gDmgHazardsStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +@@@ END MAX MOVES @@@ + +BattleScript_DynamaxBegins:: + flushtextbox + returnatktoball + pause B_WAIT_TIME_SHORT + returntoball BS_SCRIPTING + switchinanim BS_SCRIPTING, TRUE + updatedynamax + playanimation BS_SCRIPTING, B_ANIM_DYNAMAX_GROWTH + waitanimation + end3 + +BattleScript_DynamaxEnds:: + flushtextbox + updatedynamax + playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE + waitanimation + end2 + +BattleScript_MoveBlockedByDynamax:: + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + pause B_WAIT_TIME_SHORT + ppreduce + jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_STRING_PRINTED, BattleScript_MoveEnd + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG + orword gHitMarker, HITMARKER_STRING_PRINTED + goto BattleScript_MoveEnd + BattleScript_PokemonCantUseTheMove:: attackstring ppreduce diff --git a/data/maps/BirthIsland_Exterior/scripts.inc b/data/maps/BirthIsland_Exterior/scripts.inc index d2174eee99..644001c6e7 100644 --- a/data/maps/BirthIsland_Exterior/scripts.inc +++ b/data/maps/BirthIsland_Exterior/scripts.inc @@ -81,11 +81,11 @@ BirthIsland_Exterior_EventScript_Deoxys:: applymovement LOCALID_DEOXYS, BirthIsland_Exterior_Movement_DeoxysApproach waitmovement 0 waitse - playmoncry SPECIES_DEOXYS, CRY_MODE_ENCOUNTER + playmoncry SPECIES_DEOXYS_NORMAL, CRY_MODE_ENCOUNTER delay 40 waitmoncry setvar VAR_LAST_TALKED, LOCALID_DEOXYS - seteventmon SPECIES_DEOXYS, 30 + seteventmon SPECIES_DEOXYS_NORMAL, 30 setflag FLAG_SYS_CTRL_OBJ_DELETE special BattleSetup_StartLegendaryBattle waitstate @@ -100,12 +100,12 @@ BirthIsland_Exterior_EventScript_Deoxys:: BirthIsland_Exterior_EventScript_DefeatedDeoxys:: setflag FLAG_DEFEATED_DEOXYS - setvar VAR_0x8004, SPECIES_DEOXYS + setvar VAR_0x8004, SPECIES_DEOXYS_NORMAL goto Common_EventScript_LegendaryFlewAway end BirthIsland_Exterior_EventScript_RanFromDeoxys:: - setvar VAR_0x8004, SPECIES_DEOXYS + setvar VAR_0x8004, SPECIES_DEOXYS_NORMAL goto Common_EventScript_LegendaryFlewAway end diff --git a/data/maps/Route119_WeatherInstitute_2F/scripts.inc b/data/maps/Route119_WeatherInstitute_2F/scripts.inc index e5df03d4a1..2dfec9bffe 100644 --- a/data/maps/Route119_WeatherInstitute_2F/scripts.inc +++ b/data/maps/Route119_WeatherInstitute_2F/scripts.inc @@ -88,8 +88,8 @@ Route119_WeatherInstitute_2F_EventScript_ShellyDefeated:: Route119_WeatherInstitute_2F_EventScript_ReceiveCastform:: msgbox Route119_WeatherInstitute_2F_Text_ThanksPleaseTakePokemon, MSGBOX_DEFAULT - setvar VAR_TEMP_TRANSFERRED_SPECIES, SPECIES_CASTFORM - givemon SPECIES_CASTFORM, 25, ITEM_MYSTIC_WATER + setvar VAR_TEMP_TRANSFERRED_SPECIES, SPECIES_CASTFORM_NORMAL + givemon SPECIES_CASTFORM_NORMAL, 25, ITEM_MYSTIC_WATER goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, Route119_WeatherInstitute_2F_EventScript_ReceiveCastformParty goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, Route119_WeatherInstitute_2F_EventScript_ReceiveCastformPC goto Common_EventScript_NoMoreRoomForPokemon @@ -122,7 +122,7 @@ Route119_WeatherInstitute_2F_EventScript_ReceivedCastformFanfare:: message Route119_WeatherInstitute_2F_Text_PlayerReceivedCastform waitmessage waitfanfare - bufferspeciesname STR_VAR_1, SPECIES_CASTFORM + bufferspeciesname STR_VAR_1, SPECIES_CASTFORM_NORMAL return Route119_WeatherInstitute_2F_EventScript_ExplainCastform:: diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index b29291a7f9..7385101c1e 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -104,13 +104,26 @@ Debug_CheckSaveBlock:: end Debug_SaveBlock1Size:: - .string "SaveBlock1 size: {STR_VAR_1}/{STR_VAR_2}.$" + .string "SaveBlock1 size: {STR_VAR_1}b/{STR_VAR_2}b.\n" + .string "Free space: {STR_VAR_3}b.$" Debug_SaveBlock2Size:: - .string "SaveBlock2 size: {STR_VAR_1}/{STR_VAR_2}.$" + .string "SaveBlock2 size: {STR_VAR_1}b/{STR_VAR_2}b.\n" + .string "Free space: {STR_VAR_3}b.$" Debug_PokemonStorageSize:: - .string "{PKMN}Storage size: {STR_VAR_1}/{STR_VAR_2}.$" + .string "{PKMN}Storage size: {STR_VAR_1}b/{STR_VAR_2}b.\n" + .string "Free space: {STR_VAR_3}b.$" + +Debug_CheckROMSpace:: + callnative CheckROMSize + msgbox Debug_ROMSize, MSGBOX_DEFAULT + release + end + +Debug_ROMSize:: + .string "ROM size: {STR_VAR_1}MB/32MB.\n" + .string "Free space: {STR_VAR_2}MB.$" Debug_HatchAnEgg:: lockall diff --git a/graphics/battle_anims/sprites/snowflakes.png b/graphics/battle_anims/sprites/snowflakes.png new file mode 100644 index 0000000000..4f4334b3b9 Binary files /dev/null and b/graphics/battle_anims/sprites/snowflakes.png differ diff --git a/graphics/battle_interface/dynamax_indicator.png b/graphics/battle_interface/dynamax_indicator.png new file mode 100644 index 0000000000..ebfbe86da6 Binary files /dev/null and b/graphics/battle_interface/dynamax_indicator.png differ diff --git a/graphics/battle_interface/dynamax_trigger.png b/graphics/battle_interface/dynamax_trigger.png new file mode 100644 index 0000000000..18f3a84cff Binary files /dev/null and b/graphics/battle_interface/dynamax_trigger.png differ diff --git a/graphics/battle_interface/misc_indicator.pal b/graphics/battle_interface/misc_indicator.pal new file mode 100644 index 0000000000..1128418200 --- /dev/null +++ b/graphics/battle_interface/misc_indicator.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 0 +224 74 106 +236 234 108 +154 45 48 +244 162 132 +32 127 216 +16 75 156 +184 224 240 +136 184 224 +213 207 207 +246 246 246 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokedex/bg_hoenn.pal b/graphics/pokedex/bg_hoenn.pal index 5889ede7ac..569c7821a9 100644 --- a/graphics/pokedex/bg_hoenn.pal +++ b/graphics/pokedex/bg_hoenn.pal @@ -1,21 +1,21 @@ JASC-PAL 0100 48 -193 33 177 -249 249 249 -225 225 225 -201 201 201 -169 169 169 -129 129 129 -249 153 161 -233 49 49 -193 33 41 -145 17 33 -249 153 161 -193 33 41 -141 251 184 -52 66 162 -194 181 66 +123 131 0 +255 255 255 +222 222 222 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 0 0 0 123 131 0 255 255 255 diff --git a/graphics/pokedex/caught_screen.pal b/graphics/pokedex/caught_screen.pal index 7b855bfc66..26da98a84c 100644 --- a/graphics/pokedex/caught_screen.pal +++ b/graphics/pokedex/caught_screen.pal @@ -1,21 +1,21 @@ JASC-PAL 0100 48 -193 33 177 -249 249 249 -225 225 225 -201 201 201 -169 169 169 -129 129 129 -249 153 161 -233 49 49 -193 33 41 -145 17 33 -249 153 161 -193 33 41 -141 251 184 -52 66 162 -194 181 66 +123 131 0 +255 255 255 +255 238 0 +255 189 0 +255 115 0 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 0 0 0 123 131 0 255 255 255 diff --git a/graphics/pokemon/alcremie/gigantamax/back.png b/graphics/pokemon/alcremie/gigantamax/back.png new file mode 100644 index 0000000000..8c3a12e19e Binary files /dev/null and b/graphics/pokemon/alcremie/gigantamax/back.png differ diff --git a/graphics/pokemon/alcremie/gigantamax/front.png b/graphics/pokemon/alcremie/gigantamax/front.png new file mode 100644 index 0000000000..30d6ee4e8f Binary files /dev/null and b/graphics/pokemon/alcremie/gigantamax/front.png differ diff --git a/graphics/pokemon/alcremie/gigantamax/icon.png b/graphics/pokemon/alcremie/gigantamax/icon.png new file mode 100644 index 0000000000..10ba520d1c Binary files /dev/null and b/graphics/pokemon/alcremie/gigantamax/icon.png differ diff --git a/graphics/pokemon/alcremie/gigantamax/normal.pal b/graphics/pokemon/alcremie/gigantamax/normal.pal new file mode 100644 index 0000000000..dcc78ed923 --- /dev/null +++ b/graphics/pokemon/alcremie/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +147 116 87 +16 16 16 +214 191 164 +253 241 208 +217 194 40 +254 255 112 +185 119 190 +164 153 183 +240 189 195 +254 109 38 +232 254 23 +86 225 210 +247 86 144 +28 151 140 +226 122 129 diff --git a/graphics/pokemon/alcremie/gigantamax/shiny.pal b/graphics/pokemon/alcremie/gigantamax/shiny.pal new file mode 100644 index 0000000000..092c301bad --- /dev/null +++ b/graphics/pokemon/alcremie/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +108 127 125 +16 16 16 +184 203 202 +240 253 255 +35 36 35 +66 69 66 +185 119 190 +91 69 73 +139 113 119 +254 109 38 +232 254 23 +187 157 165 +247 86 144 +28 151 140 +75 79 75 diff --git a/graphics/pokemon/appletun/gigantamax/back.png b/graphics/pokemon/appletun/gigantamax/back.png new file mode 100644 index 0000000000..610d98112b Binary files /dev/null and b/graphics/pokemon/appletun/gigantamax/back.png differ diff --git a/graphics/pokemon/appletun/gigantamax/front.png b/graphics/pokemon/appletun/gigantamax/front.png new file mode 100644 index 0000000000..65c716e9e8 Binary files /dev/null and b/graphics/pokemon/appletun/gigantamax/front.png differ diff --git a/graphics/pokemon/appletun/gigantamax/icon.png b/graphics/pokemon/appletun/gigantamax/icon.png new file mode 100644 index 0000000000..b7ecabd469 Binary files /dev/null and b/graphics/pokemon/appletun/gigantamax/icon.png differ diff --git a/graphics/pokemon/appletun/gigantamax/normal.pal b/graphics/pokemon/appletun/gigantamax/normal.pal new file mode 100644 index 0000000000..2d5dabef1e --- /dev/null +++ b/graphics/pokemon/appletun/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +166 49 57 +119 38 40 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +210 57 77 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/appletun/gigantamax/shiny.pal b/graphics/pokemon/appletun/gigantamax/shiny.pal new file mode 100644 index 0000000000..4514eb418d --- /dev/null +++ b/graphics/pokemon/appletun/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +55 143 41 +35 91 27 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +75 183 48 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/blastoise/gigantamax/back.png b/graphics/pokemon/blastoise/gigantamax/back.png new file mode 100644 index 0000000000..cd9d607f55 Binary files /dev/null and b/graphics/pokemon/blastoise/gigantamax/back.png differ diff --git a/graphics/pokemon/blastoise/gigantamax/front.png b/graphics/pokemon/blastoise/gigantamax/front.png new file mode 100644 index 0000000000..c4608e67dd Binary files /dev/null and b/graphics/pokemon/blastoise/gigantamax/front.png differ diff --git a/graphics/pokemon/blastoise/gigantamax/icon.png b/graphics/pokemon/blastoise/gigantamax/icon.png new file mode 100644 index 0000000000..9761dfbe53 Binary files /dev/null and b/graphics/pokemon/blastoise/gigantamax/icon.png differ diff --git a/graphics/pokemon/blastoise/gigantamax/normal.pal b/graphics/pokemon/blastoise/gigantamax/normal.pal new file mode 100644 index 0000000000..2b7f1254f5 --- /dev/null +++ b/graphics/pokemon/blastoise/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +8 58 99 +16 16 16 +90 140 206 +33 99 173 +205 205 213 +74 74 74 +53 46 39 +199 84 53 +148 148 148 +253 253 253 +108 232 214 +73 65 54 +95 86 71 +148 173 230 +206 206 214 diff --git a/graphics/pokemon/blastoise/gigantamax/shiny.pal b/graphics/pokemon/blastoise/gigantamax/shiny.pal new file mode 100644 index 0000000000..f7906a9da8 --- /dev/null +++ b/graphics/pokemon/blastoise/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +115 82 148 +16 16 16 +213 180 246 +164 123 189 +205 205 213 +74 74 74 +66 53 42 +199 84 53 +148 148 148 +253 253 253 +108 232 214 +92 75 62 +140 126 83 +238 222 255 +206 206 214 diff --git a/graphics/pokemon/butterfree/gigantamax/back.png b/graphics/pokemon/butterfree/gigantamax/back.png new file mode 100644 index 0000000000..a9bce5aaf1 Binary files /dev/null and b/graphics/pokemon/butterfree/gigantamax/back.png differ diff --git a/graphics/pokemon/butterfree/gigantamax/front.png b/graphics/pokemon/butterfree/gigantamax/front.png new file mode 100644 index 0000000000..0fc4c4c70f Binary files /dev/null and b/graphics/pokemon/butterfree/gigantamax/front.png differ diff --git a/graphics/pokemon/butterfree/gigantamax/icon.png b/graphics/pokemon/butterfree/gigantamax/icon.png new file mode 100644 index 0000000000..9b18cd6e8d Binary files /dev/null and b/graphics/pokemon/butterfree/gigantamax/icon.png differ diff --git a/graphics/pokemon/butterfree/gigantamax/normal.pal b/graphics/pokemon/butterfree/gigantamax/normal.pal new file mode 100644 index 0000000000..17ad51006f --- /dev/null +++ b/graphics/pokemon/butterfree/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 194 14 +134 122 150 +100 87 122 +70 52 92 +106 189 205 +82 123 197 +179 242 219 +238 238 255 +189 189 230 +140 206 188 +146 233 150 +39 167 119 +255 156 180 +230 98 131 +222 49 49 +16 16 16 diff --git a/graphics/pokemon/butterfree/gigantamax/shiny.pal b/graphics/pokemon/butterfree/gigantamax/shiny.pal new file mode 100644 index 0000000000..3d3e6ed267 --- /dev/null +++ b/graphics/pokemon/butterfree/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 194 14 +131 131 189 +115 98 172 +90 74 115 +246 139 131 +222 82 98 +179 242 219 +238 238 255 +189 189 230 +140 206 188 +146 233 150 +39 167 119 +156 255 156 +115 238 115 +32 213 24 +16 16 16 diff --git a/graphics/pokemon/centiskorch/gigantamax/back.png b/graphics/pokemon/centiskorch/gigantamax/back.png new file mode 100644 index 0000000000..2279b3a065 Binary files /dev/null and b/graphics/pokemon/centiskorch/gigantamax/back.png differ diff --git a/graphics/pokemon/centiskorch/gigantamax/front.png b/graphics/pokemon/centiskorch/gigantamax/front.png new file mode 100644 index 0000000000..a35501c2bb Binary files /dev/null and b/graphics/pokemon/centiskorch/gigantamax/front.png differ diff --git a/graphics/pokemon/centiskorch/gigantamax/icon.png b/graphics/pokemon/centiskorch/gigantamax/icon.png new file mode 100644 index 0000000000..811a3c4991 Binary files /dev/null and b/graphics/pokemon/centiskorch/gigantamax/icon.png differ diff --git a/graphics/pokemon/centiskorch/gigantamax/normal.pal b/graphics/pokemon/centiskorch/gigantamax/normal.pal new file mode 100644 index 0000000000..5ce935aa18 --- /dev/null +++ b/graphics/pokemon/centiskorch/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +215 44 0 +255 155 27 +64 30 33 +255 247 0 +16 16 16 +85 19 7 +115 66 57 +82 40 41 +205 45 26 +255 90 66 +255 213 0 +156 27 15 +251 251 251 +148 21 40 +15 15 15 diff --git a/graphics/pokemon/centiskorch/gigantamax/shiny.pal b/graphics/pokemon/centiskorch/gigantamax/shiny.pal new file mode 100644 index 0000000000..26404703ab --- /dev/null +++ b/graphics/pokemon/centiskorch/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +215 44 0 +255 155 27 +6 31 51 +255 247 0 +16 16 16 +85 19 7 +43 94 109 +20 54 73 +205 45 26 +255 90 66 +255 213 0 +156 27 15 +251 251 251 +148 21 40 +15 15 15 diff --git a/graphics/pokemon/charizard/gigantamax/back.png b/graphics/pokemon/charizard/gigantamax/back.png new file mode 100644 index 0000000000..508e18c549 Binary files /dev/null and b/graphics/pokemon/charizard/gigantamax/back.png differ diff --git a/graphics/pokemon/charizard/gigantamax/front.png b/graphics/pokemon/charizard/gigantamax/front.png new file mode 100644 index 0000000000..c1f43003ac Binary files /dev/null and b/graphics/pokemon/charizard/gigantamax/front.png differ diff --git a/graphics/pokemon/charizard/gigantamax/icon.png b/graphics/pokemon/charizard/gigantamax/icon.png new file mode 100644 index 0000000000..68461c5032 Binary files /dev/null and b/graphics/pokemon/charizard/gigantamax/icon.png differ diff --git a/graphics/pokemon/charizard/gigantamax/normal.pal b/graphics/pokemon/charizard/gigantamax/normal.pal new file mode 100644 index 0000000000..533e9772e0 --- /dev/null +++ b/graphics/pokemon/charizard/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +255 66 0 +255 214 16 +247 165 16 +255 232 119 +16 16 16 +132 49 25 +239 132 41 +206 82 66 +252 252 252 +214 41 44 +239 181 90 +213 207 174 +162 54 43 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/charizard/gigantamax/shiny.pal b/graphics/pokemon/charizard/gigantamax/shiny.pal new file mode 100644 index 0000000000..bae527ee2e --- /dev/null +++ b/graphics/pokemon/charizard/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +255 66 0 +255 214 16 +247 165 16 +255 232 119 +16 16 16 +49 57 65 +131 123 148 +90 90 106 +252 252 252 +214 41 44 +169 163 183 +213 207 174 +66 66 82 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/cherrim/normal/anim_front.png b/graphics/pokemon/cherrim/anim_front.png similarity index 100% rename from graphics/pokemon/cherrim/normal/anim_front.png rename to graphics/pokemon/cherrim/anim_front.png diff --git a/graphics/pokemon/cherrim/normal/back.png b/graphics/pokemon/cherrim/back.png similarity index 100% rename from graphics/pokemon/cherrim/normal/back.png rename to graphics/pokemon/cherrim/back.png diff --git a/graphics/pokemon/cherrim/normal/normal.pal b/graphics/pokemon/cherrim/normal.pal similarity index 100% rename from graphics/pokemon/cherrim/normal/normal.pal rename to graphics/pokemon/cherrim/normal.pal diff --git a/graphics/pokemon/cherrim/normal/shiny.pal b/graphics/pokemon/cherrim/shiny.pal similarity index 100% rename from graphics/pokemon/cherrim/normal/shiny.pal rename to graphics/pokemon/cherrim/shiny.pal diff --git a/graphics/pokemon/cinderace/gigantamax/back.png b/graphics/pokemon/cinderace/gigantamax/back.png new file mode 100644 index 0000000000..b9e6b813de Binary files /dev/null and b/graphics/pokemon/cinderace/gigantamax/back.png differ diff --git a/graphics/pokemon/cinderace/gigantamax/front.png b/graphics/pokemon/cinderace/gigantamax/front.png new file mode 100644 index 0000000000..e3739d9062 Binary files /dev/null and b/graphics/pokemon/cinderace/gigantamax/front.png differ diff --git a/graphics/pokemon/cinderace/gigantamax/icon.png b/graphics/pokemon/cinderace/gigantamax/icon.png new file mode 100644 index 0000000000..3d1f1e4237 Binary files /dev/null and b/graphics/pokemon/cinderace/gigantamax/icon.png differ diff --git a/graphics/pokemon/cinderace/gigantamax/normal.pal b/graphics/pokemon/cinderace/gigantamax/normal.pal new file mode 100644 index 0000000000..a1782790ab --- /dev/null +++ b/graphics/pokemon/cinderace/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +125 118 121 +16 16 16 +190 182 183 +115 26 13 +175 39 20 +254 226 90 +235 93 36 +254 238 160 +237 151 35 +244 201 28 +104 85 25 +7 33 69 +0 65 148 +248 248 248 +252 252 252 diff --git a/graphics/pokemon/cinderace/gigantamax/shiny.pal b/graphics/pokemon/cinderace/gigantamax/shiny.pal new file mode 100644 index 0000000000..e4454df011 --- /dev/null +++ b/graphics/pokemon/cinderace/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +80 77 73 +16 16 16 +136 133 128 +118 50 8 +180 75 12 +254 226 90 +228 119 19 +254 238 160 +237 151 35 +244 201 28 +104 85 25 +132 120 120 +252 252 252 +179 186 175 +254 254 254 diff --git a/graphics/pokemon/coalossal/gigantamax/back.png b/graphics/pokemon/coalossal/gigantamax/back.png new file mode 100644 index 0000000000..907768dc81 Binary files /dev/null and b/graphics/pokemon/coalossal/gigantamax/back.png differ diff --git a/graphics/pokemon/coalossal/gigantamax/front.png b/graphics/pokemon/coalossal/gigantamax/front.png new file mode 100644 index 0000000000..efd49d97e4 Binary files /dev/null and b/graphics/pokemon/coalossal/gigantamax/front.png differ diff --git a/graphics/pokemon/coalossal/gigantamax/icon.png b/graphics/pokemon/coalossal/gigantamax/icon.png new file mode 100644 index 0000000000..82a769dd95 Binary files /dev/null and b/graphics/pokemon/coalossal/gigantamax/icon.png differ diff --git a/graphics/pokemon/coalossal/gigantamax/normal.pal b/graphics/pokemon/coalossal/gigantamax/normal.pal new file mode 100644 index 0000000000..7c8a54041a --- /dev/null +++ b/graphics/pokemon/coalossal/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +31 20 24 +47 36 39 +16 16 16 +55 51 55 +37 35 37 +88 71 74 +69 50 51 +66 64 60 +84 81 76 +103 99 92 +120 55 59 +89 40 43 +243 120 67 +236 225 13 +234 70 73 diff --git a/graphics/pokemon/coalossal/gigantamax/shiny.pal b/graphics/pokemon/coalossal/gigantamax/shiny.pal new file mode 100644 index 0000000000..ef46ff2c3f --- /dev/null +++ b/graphics/pokemon/coalossal/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +31 20 24 +47 36 39 +16 16 16 +50 58 63 +34 36 38 +88 71 74 +69 50 51 +71 82 88 +88 112 124 +103 132 140 +120 55 59 +89 40 43 +243 120 67 +236 225 13 +234 70 73 diff --git a/graphics/pokemon/copperajah/gigantamax/back.png b/graphics/pokemon/copperajah/gigantamax/back.png new file mode 100644 index 0000000000..b42d0d32d1 Binary files /dev/null and b/graphics/pokemon/copperajah/gigantamax/back.png differ diff --git a/graphics/pokemon/copperajah/gigantamax/front.png b/graphics/pokemon/copperajah/gigantamax/front.png new file mode 100644 index 0000000000..9ba3497ae0 Binary files /dev/null and b/graphics/pokemon/copperajah/gigantamax/front.png differ diff --git a/graphics/pokemon/copperajah/gigantamax/icon.png b/graphics/pokemon/copperajah/gigantamax/icon.png new file mode 100644 index 0000000000..1da37e2463 Binary files /dev/null and b/graphics/pokemon/copperajah/gigantamax/icon.png differ diff --git a/graphics/pokemon/copperajah/gigantamax/normal.pal b/graphics/pokemon/copperajah/gigantamax/normal.pal new file mode 100644 index 0000000000..0a7db22185 --- /dev/null +++ b/graphics/pokemon/copperajah/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +135 67 44 +16 16 16 +192 106 49 +34 66 54 +23 47 38 +95 101 89 +238 230 233 +159 147 149 +57 110 99 +34 83 72 +242 143 58 +24 88 79 +53 193 167 +242 91 0 +26 140 120 diff --git a/graphics/pokemon/copperajah/gigantamax/shiny.pal b/graphics/pokemon/copperajah/gigantamax/shiny.pal new file mode 100644 index 0000000000..f80600011c --- /dev/null +++ b/graphics/pokemon/copperajah/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +141 100 46 +16 16 16 +198 155 50 +37 63 44 +25 45 30 +95 101 89 +238 230 233 +159 147 149 +62 105 80 +39 78 55 +243 202 62 +52 90 85 +100 166 154 +242 91 0 +65 127 116 diff --git a/graphics/pokemon/corviknight/gigantamax/back.png b/graphics/pokemon/corviknight/gigantamax/back.png new file mode 100644 index 0000000000..99ba005f37 Binary files /dev/null and b/graphics/pokemon/corviknight/gigantamax/back.png differ diff --git a/graphics/pokemon/corviknight/gigantamax/front.png b/graphics/pokemon/corviknight/gigantamax/front.png new file mode 100644 index 0000000000..63c05fb7ab Binary files /dev/null and b/graphics/pokemon/corviknight/gigantamax/front.png differ diff --git a/graphics/pokemon/corviknight/gigantamax/icon.png b/graphics/pokemon/corviknight/gigantamax/icon.png new file mode 100644 index 0000000000..8104a49ba6 Binary files /dev/null and b/graphics/pokemon/corviknight/gigantamax/icon.png differ diff --git a/graphics/pokemon/corviknight/gigantamax/normal.pal b/graphics/pokemon/corviknight/gigantamax/normal.pal new file mode 100644 index 0000000000..1edbbecf93 --- /dev/null +++ b/graphics/pokemon/corviknight/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +37 29 78 +16 16 16 +67 68 117 +122 24 95 +215 0 67 +48 51 96 +24 23 61 +62 61 109 +77 84 136 +44 43 88 +100 108 168 +78 65 80 +46 38 47 +255 118 160 +152 27 117 diff --git a/graphics/pokemon/corviknight/gigantamax/shiny.pal b/graphics/pokemon/corviknight/gigantamax/shiny.pal new file mode 100644 index 0000000000..94086e3215 --- /dev/null +++ b/graphics/pokemon/corviknight/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +53 53 53 +16 16 16 +131 131 131 +139 121 31 +238 214 0 +77 77 77 +21 21 23 +65 64 68 +144 144 144 +41 41 44 +188 188 188 +35 34 34 +8 8 8 +255 247 153 +179 166 107 diff --git a/graphics/pokemon/drednaw/gigantamax/back.png b/graphics/pokemon/drednaw/gigantamax/back.png new file mode 100644 index 0000000000..f5e79c0a38 Binary files /dev/null and b/graphics/pokemon/drednaw/gigantamax/back.png differ diff --git a/graphics/pokemon/drednaw/gigantamax/front.png b/graphics/pokemon/drednaw/gigantamax/front.png new file mode 100644 index 0000000000..a86a9474cb Binary files /dev/null and b/graphics/pokemon/drednaw/gigantamax/front.png differ diff --git a/graphics/pokemon/drednaw/gigantamax/icon.png b/graphics/pokemon/drednaw/gigantamax/icon.png new file mode 100644 index 0000000000..2e8fdf7658 Binary files /dev/null and b/graphics/pokemon/drednaw/gigantamax/icon.png differ diff --git a/graphics/pokemon/drednaw/gigantamax/normal.pal b/graphics/pokemon/drednaw/gigantamax/normal.pal new file mode 100644 index 0000000000..8e0dc8ff0e --- /dev/null +++ b/graphics/pokemon/drednaw/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +62 115 115 +100 38 32 +168 83 26 +252 252 252 +101 208 188 +77 164 155 +152 67 52 +246 190 19 +183 236 230 +214 132 20 +186 90 58 +250 230 184 +230 196 125 +202 152 96 diff --git a/graphics/pokemon/drednaw/gigantamax/shiny.pal b/graphics/pokemon/drednaw/gigantamax/shiny.pal new file mode 100644 index 0000000000..2fa3812077 --- /dev/null +++ b/graphics/pokemon/drednaw/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +31 60 40 +43 34 34 +162 51 32 +252 252 252 +70 113 84 +49 87 61 +77 63 60 +236 132 29 +122 160 135 +206 85 28 +99 83 77 +255 178 119 +242 200 113 +185 132 73 diff --git a/graphics/pokemon/duraludon/gigantamax/back.png b/graphics/pokemon/duraludon/gigantamax/back.png new file mode 100644 index 0000000000..ed052cc0bb Binary files /dev/null and b/graphics/pokemon/duraludon/gigantamax/back.png differ diff --git a/graphics/pokemon/duraludon/gigantamax/front.png b/graphics/pokemon/duraludon/gigantamax/front.png new file mode 100644 index 0000000000..7fd2b21986 Binary files /dev/null and b/graphics/pokemon/duraludon/gigantamax/front.png differ diff --git a/graphics/pokemon/duraludon/gigantamax/icon.png b/graphics/pokemon/duraludon/gigantamax/icon.png new file mode 100644 index 0000000000..74118eb778 Binary files /dev/null and b/graphics/pokemon/duraludon/gigantamax/icon.png differ diff --git a/graphics/pokemon/duraludon/gigantamax/normal.pal b/graphics/pokemon/duraludon/gigantamax/normal.pal new file mode 100644 index 0000000000..eb23403c98 --- /dev/null +++ b/graphics/pokemon/duraludon/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +40 39 45 +168 147 168 +131 112 128 +112 112 134 +57 58 65 +228 229 241 +78 79 95 +56 173 186 +196 186 197 +254 254 254 +46 105 118 +56 139 156 +79 203 217 +255 222 89 diff --git a/graphics/pokemon/duraludon/gigantamax/shiny.pal b/graphics/pokemon/duraludon/gigantamax/shiny.pal new file mode 100644 index 0000000000..856918e1aa --- /dev/null +++ b/graphics/pokemon/duraludon/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +37 42 57 +143 165 151 +109 128 119 +94 116 158 +54 65 77 +232 237 220 +66 85 116 +219 89 40 +181 193 184 +254 254 254 +139 55 24 +183 73 31 +226 122 84 +255 164 48 diff --git a/graphics/pokemon/eevee/gigantamax/back.png b/graphics/pokemon/eevee/gigantamax/back.png new file mode 100644 index 0000000000..1e104f833b Binary files /dev/null and b/graphics/pokemon/eevee/gigantamax/back.png differ diff --git a/graphics/pokemon/eevee/gigantamax/front.png b/graphics/pokemon/eevee/gigantamax/front.png new file mode 100644 index 0000000000..315b69a2f3 Binary files /dev/null and b/graphics/pokemon/eevee/gigantamax/front.png differ diff --git a/graphics/pokemon/eevee/gigantamax/icon.png b/graphics/pokemon/eevee/gigantamax/icon.png new file mode 100644 index 0000000000..7b4698a0c2 Binary files /dev/null and b/graphics/pokemon/eevee/gigantamax/icon.png differ diff --git a/graphics/pokemon/eevee/gigantamax/normal.pal b/graphics/pokemon/eevee/gigantamax/normal.pal new file mode 100644 index 0000000000..5a1b6a1c9f --- /dev/null +++ b/graphics/pokemon/eevee/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +82 49 32 +16 16 16 +115 74 74 +189 156 123 +164 98 74 +230 197 148 +255 230 172 +213 156 74 +253 253 253 +230 189 123 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/eevee/gigantamax/shiny.pal b/graphics/pokemon/eevee/gigantamax/shiny.pal new file mode 100644 index 0000000000..b554023321 --- /dev/null +++ b/graphics/pokemon/eevee/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +90 82 74 +16 16 16 +131 115 115 +189 197 255 +172 164 156 +213 222 255 +222 230 255 +213 213 197 +253 253 253 +246 246 238 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/flapple/gigantamax/back.png b/graphics/pokemon/flapple/gigantamax/back.png new file mode 100644 index 0000000000..610d98112b Binary files /dev/null and b/graphics/pokemon/flapple/gigantamax/back.png differ diff --git a/graphics/pokemon/flapple/gigantamax/front.png b/graphics/pokemon/flapple/gigantamax/front.png new file mode 100644 index 0000000000..65c716e9e8 Binary files /dev/null and b/graphics/pokemon/flapple/gigantamax/front.png differ diff --git a/graphics/pokemon/flapple/gigantamax/icon.png b/graphics/pokemon/flapple/gigantamax/icon.png new file mode 100644 index 0000000000..b7ecabd469 Binary files /dev/null and b/graphics/pokemon/flapple/gigantamax/icon.png differ diff --git a/graphics/pokemon/flapple/gigantamax/normal.pal b/graphics/pokemon/flapple/gigantamax/normal.pal new file mode 100644 index 0000000000..2d5dabef1e --- /dev/null +++ b/graphics/pokemon/flapple/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +166 49 57 +119 38 40 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +210 57 77 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/flapple/gigantamax/shiny.pal b/graphics/pokemon/flapple/gigantamax/shiny.pal new file mode 100644 index 0000000000..4514eb418d --- /dev/null +++ b/graphics/pokemon/flapple/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +55 143 41 +35 91 27 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +75 183 48 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/garbodor/gigantamax/back.png b/graphics/pokemon/garbodor/gigantamax/back.png new file mode 100644 index 0000000000..645dae3c01 Binary files /dev/null and b/graphics/pokemon/garbodor/gigantamax/back.png differ diff --git a/graphics/pokemon/garbodor/gigantamax/front.png b/graphics/pokemon/garbodor/gigantamax/front.png new file mode 100644 index 0000000000..9856f28763 Binary files /dev/null and b/graphics/pokemon/garbodor/gigantamax/front.png differ diff --git a/graphics/pokemon/garbodor/gigantamax/icon.png b/graphics/pokemon/garbodor/gigantamax/icon.png new file mode 100644 index 0000000000..f929b577ce Binary files /dev/null and b/graphics/pokemon/garbodor/gigantamax/icon.png differ diff --git a/graphics/pokemon/garbodor/gigantamax/normal.pal b/graphics/pokemon/garbodor/gigantamax/normal.pal new file mode 100644 index 0000000000..5d365044cf --- /dev/null +++ b/graphics/pokemon/garbodor/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +123 106 90 +189 189 189 +90 74 65 +164 139 115 +24 57 41 +0 172 213 +107 220 39 +41 106 74 +253 253 253 +254 188 164 +235 73 78 +230 218 0 +184 41 45 +239 143 255 diff --git a/graphics/pokemon/garbodor/gigantamax/shiny.pal b/graphics/pokemon/garbodor/gigantamax/shiny.pal new file mode 100644 index 0000000000..a70820775d --- /dev/null +++ b/graphics/pokemon/garbodor/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +106 106 98 +189 189 189 +82 74 74 +148 139 131 +16 65 74 +82 238 106 +255 189 90 +41 164 164 +253 253 253 +255 134 134 +255 133 35 +178 86 230 +184 41 45 +75 86 255 diff --git a/graphics/pokemon/gengar/gigantamax/back.png b/graphics/pokemon/gengar/gigantamax/back.png new file mode 100644 index 0000000000..67f5bc6070 Binary files /dev/null and b/graphics/pokemon/gengar/gigantamax/back.png differ diff --git a/graphics/pokemon/gengar/gigantamax/front.png b/graphics/pokemon/gengar/gigantamax/front.png new file mode 100644 index 0000000000..bbcd1756a4 Binary files /dev/null and b/graphics/pokemon/gengar/gigantamax/front.png differ diff --git a/graphics/pokemon/gengar/gigantamax/icon.png b/graphics/pokemon/gengar/gigantamax/icon.png new file mode 100644 index 0000000000..31b59d5370 Binary files /dev/null and b/graphics/pokemon/gengar/gigantamax/icon.png differ diff --git a/graphics/pokemon/gengar/gigantamax/normal.pal b/graphics/pokemon/gengar/gigantamax/normal.pal new file mode 100644 index 0000000000..963348184c --- /dev/null +++ b/graphics/pokemon/gengar/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +74 41 74 +16 16 16 +90 74 156 +148 115 180 +123 98 164 +150 62 128 +116 58 91 +204 30 91 +146 6 52 +180 139 189 +186 50 90 +255 246 255 +255 131 55 +255 255 0 +189 172 189 diff --git a/graphics/pokemon/gengar/gigantamax/shiny.pal b/graphics/pokemon/gengar/gigantamax/shiny.pal new file mode 100644 index 0000000000..b69ff97992 --- /dev/null +++ b/graphics/pokemon/gengar/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +99 75 99 +16 16 16 +168 157 196 +252 244 252 +209 188 214 +221 144 195 +183 142 184 +204 30 91 +146 6 52 +254 254 254 +84 84 84 +255 246 255 +95 95 95 +140 140 140 +189 172 189 diff --git a/graphics/pokemon/grimmsnarl/gigantamax/back.png b/graphics/pokemon/grimmsnarl/gigantamax/back.png new file mode 100644 index 0000000000..834e97f853 Binary files /dev/null and b/graphics/pokemon/grimmsnarl/gigantamax/back.png differ diff --git a/graphics/pokemon/grimmsnarl/gigantamax/front.png b/graphics/pokemon/grimmsnarl/gigantamax/front.png new file mode 100644 index 0000000000..a497605717 Binary files /dev/null and b/graphics/pokemon/grimmsnarl/gigantamax/front.png differ diff --git a/graphics/pokemon/grimmsnarl/gigantamax/icon.png b/graphics/pokemon/grimmsnarl/gigantamax/icon.png new file mode 100644 index 0000000000..23bc5fd0dc Binary files /dev/null and b/graphics/pokemon/grimmsnarl/gigantamax/icon.png differ diff --git a/graphics/pokemon/grimmsnarl/gigantamax/normal.pal b/graphics/pokemon/grimmsnarl/gigantamax/normal.pal new file mode 100644 index 0000000000..806034cb62 --- /dev/null +++ b/graphics/pokemon/grimmsnarl/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +38 19 63 +67 53 104 +93 70 148 +53 41 84 +53 106 60 +71 190 98 +253 11 66 +64 149 85 +248 116 160 +201 201 201 +253 253 253 +233 55 97 +247 92 144 +15 15 15 diff --git a/graphics/pokemon/grimmsnarl/gigantamax/shiny.pal b/graphics/pokemon/grimmsnarl/gigantamax/shiny.pal new file mode 100644 index 0000000000..5d5b1b75a4 --- /dev/null +++ b/graphics/pokemon/grimmsnarl/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +94 89 96 +163 157 165 +221 215 223 +138 133 140 +107 46 103 +199 52 175 +253 11 66 +152 53 133 +248 116 160 +201 201 201 +253 253 253 +66 86 172 +85 134 201 +15 15 15 diff --git a/graphics/pokemon/hatterene/gigantamax/back.png b/graphics/pokemon/hatterene/gigantamax/back.png new file mode 100644 index 0000000000..68da7572c3 Binary files /dev/null and b/graphics/pokemon/hatterene/gigantamax/back.png differ diff --git a/graphics/pokemon/hatterene/gigantamax/front.png b/graphics/pokemon/hatterene/gigantamax/front.png new file mode 100644 index 0000000000..6c9e2c546d Binary files /dev/null and b/graphics/pokemon/hatterene/gigantamax/front.png differ diff --git a/graphics/pokemon/hatterene/gigantamax/icon.png b/graphics/pokemon/hatterene/gigantamax/icon.png new file mode 100644 index 0000000000..cc0ca7f2dc Binary files /dev/null and b/graphics/pokemon/hatterene/gigantamax/icon.png differ diff --git a/graphics/pokemon/hatterene/gigantamax/normal.pal b/graphics/pokemon/hatterene/gigantamax/normal.pal new file mode 100644 index 0000000000..26aac7facb --- /dev/null +++ b/graphics/pokemon/hatterene/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +114 122 177 +200 233 255 +172 191 223 +148 143 194 +245 186 194 +228 137 160 +229 228 239 +193 89 116 +254 254 254 +180 162 183 +133 109 139 +217 206 219 +249 213 218 +15 15 15 diff --git a/graphics/pokemon/hatterene/gigantamax/shiny.pal b/graphics/pokemon/hatterene/gigantamax/shiny.pal new file mode 100644 index 0000000000..9682f1ec43 --- /dev/null +++ b/graphics/pokemon/hatterene/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +101 75 95 +234 213 208 +192 166 187 +144 116 138 +252 153 172 +217 94 115 +225 193 207 +144 53 68 +254 254 254 +177 134 149 +137 90 110 +217 206 219 +245 186 194 +15 15 15 diff --git a/graphics/pokemon/inteleon/gigantamax/back.png b/graphics/pokemon/inteleon/gigantamax/back.png new file mode 100644 index 0000000000..81be3b2c25 Binary files /dev/null and b/graphics/pokemon/inteleon/gigantamax/back.png differ diff --git a/graphics/pokemon/inteleon/gigantamax/front.png b/graphics/pokemon/inteleon/gigantamax/front.png new file mode 100644 index 0000000000..6f55e4e29e Binary files /dev/null and b/graphics/pokemon/inteleon/gigantamax/front.png differ diff --git a/graphics/pokemon/inteleon/gigantamax/icon.png b/graphics/pokemon/inteleon/gigantamax/icon.png new file mode 100644 index 0000000000..a27bf3f1c8 Binary files /dev/null and b/graphics/pokemon/inteleon/gigantamax/icon.png differ diff --git a/graphics/pokemon/inteleon/gigantamax/normal.pal b/graphics/pokemon/inteleon/gigantamax/normal.pal new file mode 100644 index 0000000000..122b980735 --- /dev/null +++ b/graphics/pokemon/inteleon/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +0 62 106 +156 210 226 +16 16 16 +84 155 195 +176 250 255 +253 253 253 +92 218 218 +1 89 154 +28 123 193 +49 48 47 +233 205 95 +100 101 101 +74 74 77 +242 248 137 +238 62 92 diff --git a/graphics/pokemon/inteleon/gigantamax/shiny.pal b/graphics/pokemon/inteleon/gigantamax/shiny.pal new file mode 100644 index 0000000000..f112483770 --- /dev/null +++ b/graphics/pokemon/inteleon/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +0 68 114 +16 122 192 +16 16 16 +0 96 164 +176 250 255 +253 253 253 +92 218 218 +14 166 168 +6 204 207 +152 157 172 +233 95 146 +247 251 252 +196 204 212 +248 137 182 +238 62 92 diff --git a/graphics/pokemon/kingler/gigantamax/back.png b/graphics/pokemon/kingler/gigantamax/back.png new file mode 100644 index 0000000000..d1a624ac47 Binary files /dev/null and b/graphics/pokemon/kingler/gigantamax/back.png differ diff --git a/graphics/pokemon/kingler/gigantamax/front.png b/graphics/pokemon/kingler/gigantamax/front.png new file mode 100644 index 0000000000..075fc470c5 Binary files /dev/null and b/graphics/pokemon/kingler/gigantamax/front.png differ diff --git a/graphics/pokemon/kingler/gigantamax/icon.png b/graphics/pokemon/kingler/gigantamax/icon.png new file mode 100644 index 0000000000..0399c37ab4 Binary files /dev/null and b/graphics/pokemon/kingler/gigantamax/icon.png differ diff --git a/graphics/pokemon/kingler/gigantamax/normal.pal b/graphics/pokemon/kingler/gigantamax/normal.pal new file mode 100644 index 0000000000..e3bbad0227 --- /dev/null +++ b/graphics/pokemon/kingler/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +115 82 16 +16 16 16 +131 41 8 +255 246 222 +164 106 65 +180 90 74 +222 172 156 +246 197 139 +255 139 82 +253 253 253 +189 189 230 +125 129 147 +163 153 170 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/kingler/gigantamax/shiny.pal b/graphics/pokemon/kingler/gigantamax/shiny.pal new file mode 100644 index 0000000000..2dcc9678fa --- /dev/null +++ b/graphics/pokemon/kingler/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +106 98 8 +16 16 16 +74 90 0 +230 246 197 +148 139 57 +106 115 49 +205 213 115 +180 197 115 +139 156 74 +253 253 253 +189 189 230 +125 129 147 +163 153 170 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/lapras/gigantamax/back.png b/graphics/pokemon/lapras/gigantamax/back.png new file mode 100644 index 0000000000..ee056d3a54 Binary files /dev/null and b/graphics/pokemon/lapras/gigantamax/back.png differ diff --git a/graphics/pokemon/lapras/gigantamax/front.png b/graphics/pokemon/lapras/gigantamax/front.png new file mode 100644 index 0000000000..aff7e7d5f2 Binary files /dev/null and b/graphics/pokemon/lapras/gigantamax/front.png differ diff --git a/graphics/pokemon/lapras/gigantamax/icon.png b/graphics/pokemon/lapras/gigantamax/icon.png new file mode 100644 index 0000000000..367418a17c Binary files /dev/null and b/graphics/pokemon/lapras/gigantamax/icon.png differ diff --git a/graphics/pokemon/lapras/gigantamax/normal.pal b/graphics/pokemon/lapras/gigantamax/normal.pal new file mode 100644 index 0000000000..044e141f67 --- /dev/null +++ b/graphics/pokemon/lapras/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +115 197 246 +81 255 251 +128 117 115 +16 16 16 +57 123 164 +24 65 82 +65 164 230 +139 164 148 +222 197 131 +246 222 172 +82 82 106 +164 148 148 +213 205 197 +246 238 230 +90 74 65 diff --git a/graphics/pokemon/lapras/gigantamax/shiny.pal b/graphics/pokemon/lapras/gigantamax/shiny.pal new file mode 100644 index 0000000000..f0290fa5c1 --- /dev/null +++ b/graphics/pokemon/lapras/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +205 172 255 +81 255 251 +128 117 115 +16 16 16 +106 49 156 +41 0 98 +172 131 246 +139 90 197 +246 189 148 +255 213 189 +82 82 106 +164 148 148 +213 205 197 +246 238 230 +15 15 15 diff --git a/graphics/pokemon/machamp/gigantamax/back.png b/graphics/pokemon/machamp/gigantamax/back.png new file mode 100644 index 0000000000..aea4de046f Binary files /dev/null and b/graphics/pokemon/machamp/gigantamax/back.png differ diff --git a/graphics/pokemon/machamp/gigantamax/front.png b/graphics/pokemon/machamp/gigantamax/front.png new file mode 100644 index 0000000000..feff2a8346 Binary files /dev/null and b/graphics/pokemon/machamp/gigantamax/front.png differ diff --git a/graphics/pokemon/machamp/gigantamax/icon.png b/graphics/pokemon/machamp/gigantamax/icon.png new file mode 100644 index 0000000000..f0150630a6 Binary files /dev/null and b/graphics/pokemon/machamp/gigantamax/icon.png differ diff --git a/graphics/pokemon/machamp/gigantamax/normal.pal b/graphics/pokemon/machamp/gigantamax/normal.pal new file mode 100644 index 0000000000..8ad34672ca --- /dev/null +++ b/graphics/pokemon/machamp/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +126 84 5 +16 16 16 +227 141 3 +241 187 0 +252 234 0 +125 136 162 +74 74 98 +147 179 198 +43 43 57 +205 197 98 +131 115 41 +246 238 156 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/machamp/gigantamax/shiny.pal b/graphics/pokemon/machamp/gigantamax/shiny.pal new file mode 100644 index 0000000000..67e67b00c9 --- /dev/null +++ b/graphics/pokemon/machamp/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +126 84 5 +16 16 16 +227 141 3 +241 187 0 +252 234 0 +106 139 41 +74 106 16 +148 189 74 +25 45 0 +205 197 98 +131 115 41 +246 238 156 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/melmetal/gigantamax/back.png b/graphics/pokemon/melmetal/gigantamax/back.png new file mode 100644 index 0000000000..d1cbe4b98e Binary files /dev/null and b/graphics/pokemon/melmetal/gigantamax/back.png differ diff --git a/graphics/pokemon/melmetal/gigantamax/front.png b/graphics/pokemon/melmetal/gigantamax/front.png new file mode 100644 index 0000000000..a48b1912c8 Binary files /dev/null and b/graphics/pokemon/melmetal/gigantamax/front.png differ diff --git a/graphics/pokemon/melmetal/gigantamax/icon.png b/graphics/pokemon/melmetal/gigantamax/icon.png new file mode 100644 index 0000000000..a84cae6c8f Binary files /dev/null and b/graphics/pokemon/melmetal/gigantamax/icon.png differ diff --git a/graphics/pokemon/melmetal/gigantamax/normal.pal b/graphics/pokemon/melmetal/gigantamax/normal.pal new file mode 100644 index 0000000000..c6309ab24e --- /dev/null +++ b/graphics/pokemon/melmetal/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +138 141 126 +220 220 218 +177 181 166 +16 16 16 +249 249 249 +103 103 95 +61 53 52 +89 84 78 +232 232 232 +194 41 46 +134 66 36 +177 97 44 +224 135 37 +255 191 79 +228 109 139 diff --git a/graphics/pokemon/melmetal/gigantamax/shiny.pal b/graphics/pokemon/melmetal/gigantamax/shiny.pal new file mode 100644 index 0000000000..40cd79108f --- /dev/null +++ b/graphics/pokemon/melmetal/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +138 141 126 +220 220 218 +177 181 166 +16 16 16 +249 249 249 +103 103 95 +61 53 52 +89 84 78 +232 232 232 +0 93 220 +134 66 36 +177 79 45 +222 108 40 +254 166 80 +228 109 139 diff --git a/graphics/pokemon/meowth/gigantamax/back.png b/graphics/pokemon/meowth/gigantamax/back.png new file mode 100644 index 0000000000..16298c644a Binary files /dev/null and b/graphics/pokemon/meowth/gigantamax/back.png differ diff --git a/graphics/pokemon/meowth/gigantamax/front.png b/graphics/pokemon/meowth/gigantamax/front.png new file mode 100644 index 0000000000..3f7cf49d21 Binary files /dev/null and b/graphics/pokemon/meowth/gigantamax/front.png differ diff --git a/graphics/pokemon/meowth/gigantamax/icon.png b/graphics/pokemon/meowth/gigantamax/icon.png new file mode 100644 index 0000000000..039f90a4ad Binary files /dev/null and b/graphics/pokemon/meowth/gigantamax/icon.png differ diff --git a/graphics/pokemon/meowth/gigantamax/normal.pal b/graphics/pokemon/meowth/gigantamax/normal.pal new file mode 100644 index 0000000000..f8c1e79f7a --- /dev/null +++ b/graphics/pokemon/meowth/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +156 106 0 +255 230 131 +16 16 16 +222 189 57 +255 255 180 +255 115 82 +148 90 0 +213 90 57 +205 164 0 +252 252 252 +255 213 0 +244 255 43 +148 65 0 +197 123 8 +238 156 49 diff --git a/graphics/pokemon/meowth/gigantamax/shiny.pal b/graphics/pokemon/meowth/gigantamax/shiny.pal new file mode 100644 index 0000000000..00cf140549 --- /dev/null +++ b/graphics/pokemon/meowth/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +156 65 0 +255 205 131 +16 16 16 +222 156 57 +255 238 180 +213 82 106 +172 41 57 +148 65 0 +205 164 0 +252 252 252 +255 213 0 +244 255 43 +172 41 57 +213 82 106 +246 123 139 diff --git a/graphics/pokemon/orbeetle/gigantamax/back.png b/graphics/pokemon/orbeetle/gigantamax/back.png new file mode 100644 index 0000000000..e984f9cef9 Binary files /dev/null and b/graphics/pokemon/orbeetle/gigantamax/back.png differ diff --git a/graphics/pokemon/orbeetle/gigantamax/front.png b/graphics/pokemon/orbeetle/gigantamax/front.png new file mode 100644 index 0000000000..f59aff21ab Binary files /dev/null and b/graphics/pokemon/orbeetle/gigantamax/front.png differ diff --git a/graphics/pokemon/orbeetle/gigantamax/icon.png b/graphics/pokemon/orbeetle/gigantamax/icon.png new file mode 100644 index 0000000000..4e486f2637 Binary files /dev/null and b/graphics/pokemon/orbeetle/gigantamax/icon.png differ diff --git a/graphics/pokemon/orbeetle/gigantamax/normal.pal b/graphics/pokemon/orbeetle/gigantamax/normal.pal new file mode 100644 index 0000000000..af34ce0fac --- /dev/null +++ b/graphics/pokemon/orbeetle/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +120 23 40 +189 20 43 +253 38 54 +164 86 0 +191 167 49 +16 189 220 +62 32 45 +78 58 61 +207 255 255 +87 251 231 +246 230 115 +172 156 173 +249 255 255 +214 213 211 diff --git a/graphics/pokemon/orbeetle/gigantamax/shiny.pal b/graphics/pokemon/orbeetle/gigantamax/shiny.pal new file mode 100644 index 0000000000..349aac2b6a --- /dev/null +++ b/graphics/pokemon/orbeetle/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +50 41 102 +101 78 199 +146 115 230 +133 49 73 +199 83 105 +16 189 220 +62 32 45 +78 58 61 +207 255 255 +87 251 231 +234 134 149 +47 62 166 +249 255 255 +85 104 240 diff --git a/graphics/pokemon/pikachu/gigantamax/back.png b/graphics/pokemon/pikachu/gigantamax/back.png new file mode 100644 index 0000000000..fefeab9c22 Binary files /dev/null and b/graphics/pokemon/pikachu/gigantamax/back.png differ diff --git a/graphics/pokemon/pikachu/gigantamax/front.png b/graphics/pokemon/pikachu/gigantamax/front.png new file mode 100644 index 0000000000..75f0c2beda Binary files /dev/null and b/graphics/pokemon/pikachu/gigantamax/front.png differ diff --git a/graphics/pokemon/pikachu/gigantamax/icon.png b/graphics/pokemon/pikachu/gigantamax/icon.png new file mode 100644 index 0000000000..440004b8e9 Binary files /dev/null and b/graphics/pokemon/pikachu/gigantamax/icon.png differ diff --git a/graphics/pokemon/pikachu/gigantamax/normal.pal b/graphics/pokemon/pikachu/gigantamax/normal.pal new file mode 100644 index 0000000000..1bfa354f78 --- /dev/null +++ b/graphics/pokemon/pikachu/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +248 252 75 +255 246 164 +254 254 254 +16 16 16 +41 41 41 +65 65 74 +246 189 32 +98 49 8 +156 82 0 +246 230 82 +230 90 65 +197 32 24 +222 148 0 +115 115 131 +15 15 15 diff --git a/graphics/pokemon/pikachu/gigantamax/shiny.pal b/graphics/pokemon/pikachu/gigantamax/shiny.pal new file mode 100644 index 0000000000..377e03cd67 --- /dev/null +++ b/graphics/pokemon/pikachu/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +248 252 75 +255 230 131 +254 254 254 +16 16 16 +41 41 41 +65 65 74 +255 164 0 +115 16 0 +180 49 0 +255 197 49 +230 98 65 +197 41 24 +230 131 0 +115 115 131 +15 15 15 diff --git a/graphics/pokemon/rillaboom/gigantamax/back.png b/graphics/pokemon/rillaboom/gigantamax/back.png new file mode 100644 index 0000000000..d15e4e4c3a Binary files /dev/null and b/graphics/pokemon/rillaboom/gigantamax/back.png differ diff --git a/graphics/pokemon/rillaboom/gigantamax/front.png b/graphics/pokemon/rillaboom/gigantamax/front.png new file mode 100644 index 0000000000..922860400d Binary files /dev/null and b/graphics/pokemon/rillaboom/gigantamax/front.png differ diff --git a/graphics/pokemon/rillaboom/gigantamax/icon.png b/graphics/pokemon/rillaboom/gigantamax/icon.png new file mode 100644 index 0000000000..d149814fff Binary files /dev/null and b/graphics/pokemon/rillaboom/gigantamax/icon.png differ diff --git a/graphics/pokemon/rillaboom/gigantamax/normal.pal b/graphics/pokemon/rillaboom/gigantamax/normal.pal new file mode 100644 index 0000000000..6f782183ae --- /dev/null +++ b/graphics/pokemon/rillaboom/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +104 68 64 +1 47 25 +16 16 16 +182 127 76 +0 132 69 +0 89 47 +147 108 66 +50 29 35 +246 226 161 +181 154 125 +66 43 47 +133 117 80 +252 252 252 +250 113 61 +180 66 56 diff --git a/graphics/pokemon/rillaboom/gigantamax/shiny.pal b/graphics/pokemon/rillaboom/gigantamax/shiny.pal new file mode 100644 index 0000000000..bec70743b2 --- /dev/null +++ b/graphics/pokemon/rillaboom/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +95 43 53 +54 68 6 +16 16 16 +182 127 76 +140 180 0 +89 117 4 +147 108 66 +46 19 34 +246 226 161 +158 144 129 +60 30 43 +101 94 77 +252 252 252 +250 113 61 +180 66 56 diff --git a/graphics/pokemon/sandaconda/gigantamax/back.png b/graphics/pokemon/sandaconda/gigantamax/back.png new file mode 100644 index 0000000000..d1cf5184bc Binary files /dev/null and b/graphics/pokemon/sandaconda/gigantamax/back.png differ diff --git a/graphics/pokemon/sandaconda/gigantamax/front.png b/graphics/pokemon/sandaconda/gigantamax/front.png new file mode 100644 index 0000000000..33e3451fa5 Binary files /dev/null and b/graphics/pokemon/sandaconda/gigantamax/front.png differ diff --git a/graphics/pokemon/sandaconda/gigantamax/icon.png b/graphics/pokemon/sandaconda/gigantamax/icon.png new file mode 100644 index 0000000000..4b19d9570a Binary files /dev/null and b/graphics/pokemon/sandaconda/gigantamax/icon.png differ diff --git a/graphics/pokemon/sandaconda/gigantamax/normal.pal b/graphics/pokemon/sandaconda/gigantamax/normal.pal new file mode 100644 index 0000000000..f06c695866 --- /dev/null +++ b/graphics/pokemon/sandaconda/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +167 114 78 +105 97 69 +16 16 16 +245 243 211 +180 163 109 +189 154 106 +217 202 179 +79 59 35 +126 85 67 +175 120 86 +187 32 15 +233 63 109 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/sandaconda/gigantamax/shiny.pal b/graphics/pokemon/sandaconda/gigantamax/shiny.pal new file mode 100644 index 0000000000..3c847bf83e --- /dev/null +++ b/graphics/pokemon/sandaconda/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +167 114 78 +94 98 76 +16 16 16 +231 238 218 +159 165 124 +189 154 106 +217 202 179 +59 59 55 +110 87 83 +150 119 111 +187 32 15 +233 63 109 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/snorlax/gigantamax/back.png b/graphics/pokemon/snorlax/gigantamax/back.png new file mode 100644 index 0000000000..c90fff95cc Binary files /dev/null and b/graphics/pokemon/snorlax/gigantamax/back.png differ diff --git a/graphics/pokemon/snorlax/gigantamax/front.png b/graphics/pokemon/snorlax/gigantamax/front.png new file mode 100644 index 0000000000..ef39f86990 Binary files /dev/null and b/graphics/pokemon/snorlax/gigantamax/front.png differ diff --git a/graphics/pokemon/snorlax/gigantamax/icon.png b/graphics/pokemon/snorlax/gigantamax/icon.png new file mode 100644 index 0000000000..e804e91963 Binary files /dev/null and b/graphics/pokemon/snorlax/gigantamax/icon.png differ diff --git a/graphics/pokemon/snorlax/gigantamax/normal.pal b/graphics/pokemon/snorlax/gigantamax/normal.pal new file mode 100644 index 0000000000..4441577deb --- /dev/null +++ b/graphics/pokemon/snorlax/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +246 230 189 +160 160 160 +230 197 172 +16 57 65 +84 121 43 +98 65 32 +164 115 82 +222 86 86 +252 139 159 +187 227 91 +137 180 50 +49 87 63 +49 90 123 +6 159 95 diff --git a/graphics/pokemon/snorlax/gigantamax/shiny.pal b/graphics/pokemon/snorlax/gigantamax/shiny.pal new file mode 100644 index 0000000000..d29a9cda8b --- /dev/null +++ b/graphics/pokemon/snorlax/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +247 230 173 +160 160 160 +230 206 156 +8 49 123 +51 92 40 +99 74 25 +165 123 74 +215 69 47 +251 82 90 +187 227 91 +81 136 50 +141 93 10 +33 74 165 +221 146 16 diff --git a/graphics/pokemon/toxtricity/gigantamax/back.png b/graphics/pokemon/toxtricity/gigantamax/back.png new file mode 100644 index 0000000000..3e83fa04f3 Binary files /dev/null and b/graphics/pokemon/toxtricity/gigantamax/back.png differ diff --git a/graphics/pokemon/toxtricity/gigantamax/front.png b/graphics/pokemon/toxtricity/gigantamax/front.png new file mode 100644 index 0000000000..7fac75a683 Binary files /dev/null and b/graphics/pokemon/toxtricity/gigantamax/front.png differ diff --git a/graphics/pokemon/toxtricity/gigantamax/icon.png b/graphics/pokemon/toxtricity/gigantamax/icon.png new file mode 100644 index 0000000000..3e7e680f7c Binary files /dev/null and b/graphics/pokemon/toxtricity/gigantamax/icon.png differ diff --git a/graphics/pokemon/toxtricity/gigantamax/normal.pal b/graphics/pokemon/toxtricity/gigantamax/normal.pal new file mode 100644 index 0000000000..eceb597ad4 --- /dev/null +++ b/graphics/pokemon/toxtricity/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +75 45 94 +16 16 16 +141 79 174 +224 97 180 +215 143 0 +115 155 217 +240 200 16 +248 230 150 +106 66 119 +150 222 243 +202 74 170 +254 180 228 +240 142 197 +231 114 199 +124 70 31 diff --git a/graphics/pokemon/toxtricity/gigantamax/shiny.pal b/graphics/pokemon/toxtricity/gigantamax/shiny.pal new file mode 100644 index 0000000000..372ab9a7b2 --- /dev/null +++ b/graphics/pokemon/toxtricity/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +94 45 64 +16 16 16 +174 79 111 +224 97 180 +215 143 0 +115 155 217 +240 200 16 +248 230 150 +119 66 77 +150 222 243 +183 73 202 +238 180 254 +240 142 197 +218 114 231 +124 70 31 diff --git a/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.png b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.png new file mode 100644 index 0000000000..3369e6c170 Binary files /dev/null and b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.png differ diff --git a/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.png b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.png new file mode 100644 index 0000000000..a00a644f08 Binary files /dev/null and b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.png differ diff --git a/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.png b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.png new file mode 100644 index 0000000000..04be58cc42 Binary files /dev/null and b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.png differ diff --git a/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.pal b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.pal new file mode 100644 index 0000000000..de95b4d5b4 --- /dev/null +++ b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +107 101 116 +16 16 16 +181 181 181 +43 51 125 +145 145 145 +245 245 245 +16 13 79 +48 63 241 +40 45 38 +158 98 37 +255 250 96 +213 169 38 +134 160 253 +96 95 77 +15 15 15 diff --git a/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.pal b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.pal new file mode 100644 index 0000000000..739e8a8aeb --- /dev/null +++ b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +107 101 116 +16 16 16 +181 181 181 +43 51 125 +145 145 145 +245 245 245 +16 13 79 +48 63 241 +40 45 38 +139 34 47 +255 151 54 +185 88 38 +134 160 253 +96 95 77 +15 15 15 diff --git a/graphics/pokemon/urshifu/single_strike_style_gigantamax/back.png b/graphics/pokemon/urshifu/single_strike_style_gigantamax/back.png new file mode 100644 index 0000000000..74b71795bb Binary files /dev/null and b/graphics/pokemon/urshifu/single_strike_style_gigantamax/back.png differ diff --git a/graphics/pokemon/urshifu/single_strike_style_gigantamax/front.png b/graphics/pokemon/urshifu/single_strike_style_gigantamax/front.png new file mode 100644 index 0000000000..9f144d32be Binary files /dev/null and b/graphics/pokemon/urshifu/single_strike_style_gigantamax/front.png differ diff --git a/graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.png b/graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.png new file mode 100644 index 0000000000..bfeab0ee3b Binary files /dev/null and b/graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.png differ diff --git a/graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.pal b/graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.pal new file mode 100644 index 0000000000..4cba02f8cd --- /dev/null +++ b/graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +40 45 38 +16 16 16 +66 71 58 +107 101 116 +181 181 181 +96 95 77 +87 15 15 +146 39 24 +231 20 10 +145 145 145 +158 98 37 +245 245 245 +255 250 96 +213 169 38 +254 125 112 diff --git a/graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.pal b/graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.pal new file mode 100644 index 0000000000..13f43d8b23 --- /dev/null +++ b/graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +40 45 38 +16 16 16 +66 71 58 +107 101 116 +181 181 181 +96 95 77 +87 15 15 +146 39 24 +231 20 10 +145 145 145 +139 34 47 +245 245 245 +255 151 54 +185 88 38 +254 125 112 diff --git a/graphics/pokemon/venusaur/gigantamax/back.png b/graphics/pokemon/venusaur/gigantamax/back.png new file mode 100644 index 0000000000..be482895b8 Binary files /dev/null and b/graphics/pokemon/venusaur/gigantamax/back.png differ diff --git a/graphics/pokemon/venusaur/gigantamax/front.png b/graphics/pokemon/venusaur/gigantamax/front.png new file mode 100644 index 0000000000..b7dde75ba8 Binary files /dev/null and b/graphics/pokemon/venusaur/gigantamax/front.png differ diff --git a/graphics/pokemon/venusaur/gigantamax/icon.png b/graphics/pokemon/venusaur/gigantamax/icon.png new file mode 100644 index 0000000000..523e647999 Binary files /dev/null and b/graphics/pokemon/venusaur/gigantamax/icon.png differ diff --git a/graphics/pokemon/venusaur/gigantamax/normal.pal b/graphics/pokemon/venusaur/gigantamax/normal.pal new file mode 100644 index 0000000000..74ffe32fbd --- /dev/null +++ b/graphics/pokemon/venusaur/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 0 128 +131 49 0 +16 16 16 +16 82 65 +223 91 95 +0 141 125 +0 107 93 +252 252 252 +32 180 156 +16 123 106 +246 148 153 +90 213 197 +255 201 201 +131 222 123 +255 238 82 +199 155 38 diff --git a/graphics/pokemon/venusaur/gigantamax/shiny.pal b/graphics/pokemon/venusaur/gigantamax/shiny.pal new file mode 100644 index 0000000000..cd6c71bec7 --- /dev/null +++ b/graphics/pokemon/venusaur/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 0 128 +131 49 0 +16 16 16 +57 90 32 +229 171 27 +0 141 125 +0 107 93 +252 252 252 +164 213 74 +123 156 41 +255 228 17 +205 238 82 +255 255 222 +131 222 123 +255 238 82 +199 155 38 diff --git a/include/battle.h b/include/battle.h index 96112a63d5..cd314eb728 100644 --- a/include/battle.h +++ b/include/battle.h @@ -14,6 +14,7 @@ #include "battle_bg.h" #include "pokeball.h" #include "battle_debug.h" +#include "battle_dynamax.h" // Used to exclude moves learned temporarily by Transform or Mimic #define MOVE_IS_PERMANENT(battler, moveSlot) \ @@ -94,6 +95,7 @@ struct DisableStruct u8 laserFocusTimer; u8 throatChopTimer; u8 wrapTurns; + u8 tormentTimer:4; // used for G-Max Meltdown u8 usedMoves:4; u8 noRetreat:1; u8 tarShot:1; @@ -104,6 +106,7 @@ struct DisableStruct u8 stickyWebDone:1; u8 stealthRockDone:1; u8 syrupBombTimer; + u8 steelSurgeDone:1; }; struct ProtectStruct @@ -148,6 +151,7 @@ struct ProtectStruct u16 beakBlastCharge:1; u16 quash:1; u16 shellTrap:1; + u16 maxGuarded:1; u16 silkTrapped:1; u16 eatMirrorHerb:1; u16 activateOpportunist:2; // 2 - to copy stats. 1 - stats copied (do not repeat). 0 - no stats to copy @@ -169,7 +173,6 @@ struct SpecialStatus u8 lightningRodRedirected:1; u8 restoredBattlerSprite: 1; u8 traced:1; - u8 ppNotAffectedByPressure:1; u8 faintedHasReplacement:1; u8 focusBanded:1; u8 focusSashed:1; @@ -223,11 +226,14 @@ struct SideTimer u8 tailwindBattlerId; u8 luckyChantTimer; u8 luckyChantBattlerId; + u8 steelsurgeAmount; // Timers below this point are not swapped by Court Change u8 followmeTimer; u8 followmeTarget:3; u8 followmePowder:1; // Rage powder, does not affect grass type pokemon. u8 retaliateTimer; + u8 damageNonTypesTimer; + u8 damageNonTypesType; }; struct FieldTimer @@ -534,6 +540,22 @@ struct ZMoveData u8 splits[MAX_BATTLERS_COUNT]; }; +struct DynamaxData +{ + bool8 playerSelect; + u8 triggerSpriteId; + u8 toDynamax; // flags using gBitTable + bool8 alreadyDynamaxed[NUM_BATTLE_SIDES]; + bool8 dynamaxed[MAX_BATTLERS_COUNT]; + u8 dynamaxTurns[MAX_BATTLERS_COUNT]; + u8 usingMaxMove[MAX_BATTLERS_COUNT]; + u8 activeSplit; + u8 splits[MAX_BATTLERS_COUNT]; + u16 baseMove[MAX_BATTLERS_COUNT]; // base move of Max Move + u16 lastUsedBaseMove; + u16 levelUpHP; +}; + struct LostItem { u16 originalItem:15; @@ -640,6 +662,7 @@ struct BattleStruct struct MegaEvolutionData mega; struct UltraBurstData burst; struct ZMoveData zmove; + struct DynamaxData dynamax; const u8 *trainerSlideMsg; bool8 trainerSlideLowHpMsgDone; u8 introState; @@ -680,6 +703,7 @@ struct BattleStruct u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party. u8 storedHealingWish:4; // Each battler as a bit. u8 storedLunarDance:4; // Each battler as a bit. + u8 bonusCritStages[MAX_BATTLERS_COUNT]; // G-Max Chi Strike boosts crit stages of allies. uq4_12_t supremeOverlordModifier[MAX_BATTLERS_COUNT]; u8 itemPartyIndex[MAX_BATTLERS_COUNT]; u8 itemMoveIndex[MAX_BATTLERS_COUNT]; @@ -729,12 +753,16 @@ STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLER #define BATTLER_DAMAGED(battlerId) ((gSpecialStatuses[battlerId].physicalDmg != 0 || gSpecialStatuses[battlerId].specialDmg != 0)) #define IS_BATTLER_OF_TYPE(battlerId, type)((GetBattlerType(battlerId, 0) == type || GetBattlerType(battlerId, 1) == type || (GetBattlerType(battlerId, 2) != TYPE_MYSTERY && GetBattlerType(battlerId, 2) == type))) + +#define IS_BATTLER_TYPELESS(battlerId)(GetBattlerType(battlerId, 0) == TYPE_MYSTERY && GetBattlerType(battlerId, 1) == TYPE_MYSTERY && GetBattlerType(battlerId, 2) == TYPE_MYSTERY) + #define SET_BATTLER_TYPE(battlerId, type) \ { \ gBattleMons[battlerId].type1 = type; \ gBattleMons[battlerId].type2 = type; \ gBattleMons[battlerId].type3 = TYPE_MYSTERY; \ } + #define RESTORE_BATTLER_TYPE(battlerId) \ { \ gBattleMons[battlerId].type1 = gSpeciesInfo[gBattleMons[battlerId].species].types[0]; \ diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index 37e9c509da..76362a2c7a 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -132,6 +132,7 @@ bool32 IsStatRaisingEffect(u32 effect); bool32 IsAttackBoostMoveEffect(u32 effect); bool32 IsUngroundingEffect(u32 effect); bool32 IsSemiInvulnerable(u32 battlerDef, u32 move); +bool32 HasSubstituteIgnoringMove(u32 battler); bool32 HasSoundMove(u32 battler); bool32 HasHighCritRatioMove(u32 battler); bool32 HasMagicCoatAffectedMove(u32 battler); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 199b6c9207..ea7e63525f 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -98,8 +98,9 @@ enum { // Special return values in gBattleBufferB from Battle Controller functions. #define RET_VALUE_LEVELED_UP 11 -#define RET_MEGA_EVOLUTION 0x80 -#define RET_ULTRA_BURST 0x70 +#define RET_MEGA_EVOLUTION (1 << 7) +#define RET_ULTRA_BURST (1 << 6) +#define RET_DYNAMAX (1 << 5) struct UnusedControllerStruct { diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h new file mode 100644 index 0000000000..18f0b1b3e3 --- /dev/null +++ b/include/battle_dynamax.h @@ -0,0 +1,93 @@ +#ifndef GUARD_BATTLE_DYNAMAX_H +#define GUARD_BATTLE_DYNAMAX_H + +#define DYNAMAX_TURNS_COUNT 3 + +enum MaxMoveEffect +{ + MAX_EFFECT_NONE, + MAX_EFFECT_RAISE_TEAM_ATTACK, + MAX_EFFECT_RAISE_TEAM_DEFENSE, + MAX_EFFECT_RAISE_TEAM_SPEED, + MAX_EFFECT_RAISE_TEAM_SP_ATK, + MAX_EFFECT_RAISE_TEAM_SP_DEF, + MAX_EFFECT_LOWER_ATTACK, + MAX_EFFECT_LOWER_DEFENSE, + MAX_EFFECT_LOWER_SPEED, + MAX_EFFECT_LOWER_SP_ATK, + MAX_EFFECT_LOWER_SP_DEF, + MAX_EFFECT_SUN, + MAX_EFFECT_RAIN, + MAX_EFFECT_SANDSTORM, + MAX_EFFECT_HAIL, + MAX_EFFECT_MISTY_TERRAIN, + MAX_EFFECT_GRASSY_TERRAIN, + MAX_EFFECT_ELECTRIC_TERRAIN, + MAX_EFFECT_PSYCHIC_TERRAIN, + MAX_EFFECT_VINE_LASH, + MAX_EFFECT_WILDFIRE, + MAX_EFFECT_CANNONADE, + MAX_EFFECT_EFFECT_SPORE_FOES, + MAX_EFFECT_PARALYZE_FOES, + MAX_EFFECT_CONFUSE_FOES_PAY_DAY, + MAX_EFFECT_CRIT_PLUS, + MAX_EFFECT_MEAN_LOOK, + MAX_EFFECT_AURORA_VEIL, + MAX_EFFECT_INFATUATE_FOES, + MAX_EFFECT_RECYCLE_BERRIES, + MAX_EFFECT_POISON_FOES, + MAX_EFFECT_STEALTH_ROCK, + MAX_EFFECT_DEFOG, + MAX_EFFECT_POISON_PARALYZE_FOES, + MAX_EFFECT_HEAL_TEAM, + MAX_EFFECT_SPITE, + MAX_EFFECT_GRAVITY, + MAX_EFFECT_VOLCALITH, + MAX_EFFECT_SANDBLAST_FOES, + MAX_EFFECT_YAWN_FOE, + MAX_EFFECT_LOWER_EVASIVENESS_FOES, + MAX_EFFECT_AROMATHERAPY, + MAX_EFFECT_CONFUSE_FOES, + MAX_EFFECT_STEELSURGE, + MAX_EFFECT_TORMENT_FOES, + MAX_EFFECT_LOWER_SPEED_2_FOES, + MAX_EFFECT_FIRE_SPIN_FOES, + MAX_EFFECT_FIXED_POWER, + MAX_EFFECT_BYPASS_PROTECT, +}; + +bool32 IsDynamaxed(u16 battlerId); +bool32 CanDynamax(u16 battlerId); +bool32 IsGigantamaxed(u16 battlerId); +void ApplyDynamaxHPMultiplier(u32 battler, struct Pokemon* mon); +void PrepareBattlerForDynamax(u16 battlerId); +u16 GetNonDynamaxHP(u16 battlerId); +u16 GetNonDynamaxMaxHP(u32 battlerId); +void UndoDynamax(u16 battlerId); +bool32 IsMoveBlockedByMaxGuard(u16 move); +bool32 IsMoveBlockedByDynamax(u16 move); + +bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove); +u16 GetMaxMove(u16 battlerId, u16 baseMove); +u8 GetMaxMovePower(u16 move); +bool32 IsMaxMove(u16 move); +const u8 *GetMaxMoveName(u16 move); +void ChooseDamageNonTypesString(u8 type); + +void BS_UpdateDynamax(void); +void BS_SetMaxMoveEffect(void); +void BS_SetSteelsurge(void); +void BS_TrySetStatus1(void); +void BS_TrySetStatus2(void); +void BS_DamageNonTypes(void); +void BS_HealOneSixth(void); +void BS_TryRecycleBerry(void); +void BS_JumpIfDynamaxed(void); + +void ChangeDynamaxTriggerSprite(u8 spriteId, u8 animId); +void CreateDynamaxTriggerSprite(u8, bool8); +void HideDynamaxTriggerSprite(void); +bool32 IsDynamaxTriggerSpriteActive(void); +void DestroyDynamaxTriggerSprite(void); + +#endif diff --git a/include/battle_interface.h b/include/battle_interface.h index 2c8747db02..af8f0dc117 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -54,12 +54,15 @@ enum #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_ALPHA_OMEGA_INDICATOR_PAL 0xD779 // Alpha and Omega indicators use the same palette as each of them only uses 4 different colors. +#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 { @@ -86,6 +89,7 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId); void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHpBoxes); void InitBattlerHealthboxCoords(u8 battler); +void GetBattlerHealthboxCoords(u8 battler, s16 *x, s16 *y); void UpdateHpTextInHealthbox(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp, s16 maxHp); void SwapHpBarsWithHpText(void); void ChangeMegaTriggerSprite(u8 spriteId, u8 animId); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 807f228f35..bdcf1081b9 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -468,6 +468,7 @@ extern const u8 BattleScript_DampPreventsAftermath[]; extern const u8 BattleScript_HealingWishActivates[]; extern const u8 BattleScript_LunarDanceActivates[]; extern const u8 BattleScript_ShellTrapSetUp[]; +extern const u8 BattleScript_StealthRockActivates[]; extern const u8 BattleScript_CouldntFullyProtect[]; extern const u8 BattleScript_MoveEffectStockpileWoreOff[]; extern const u8 BattleScript_StealthRockActivates[]; @@ -491,4 +492,33 @@ extern const u8 BattleScript_StatUpZMove[]; extern const u8 BattleScript_HealReplacementZMove[]; extern const u8 BattleScript_EffectExtremeEvoboost[]; +// max moves +extern const u8 BattleScript_EffectRaiseStatAllies[]; +extern const u8 BattleScript_EffectLowerStatFoes[]; +extern const u8 BattleScript_EffectSetWeather[]; +extern const u8 BattleScript_EffectSetTerrain[]; +extern const u8 BattleScript_EffectStonesurge[]; +extern const u8 BattleScript_EffectSteelsurge[]; +extern const u8 BattleScript_SteelsurgeFree[]; +extern const u8 BattleScript_SteelsurgeDefog[]; +extern const u8 BattleScript_DamageNonTypesStarts[]; +extern const u8 BattleScript_DamageNonTypesContinues[]; +extern const u8 BattleScript_DefogTryHazards[]; +extern const u8 BattleScript_EffectAuroraVeilSuccess[]; +extern const u8 BattleScript_EffectGravitySuccess[]; +extern const u8 BattleScript_EffectYawnSuccess[]; +extern const u8 BattleScript_EffectTryReducePP[]; +extern const u8 BattleScript_EffectStatus1Foes[]; +extern const u8 BattleScript_EffectStatus2Foes[]; +extern const u8 BattleScript_TormentEnds[]; +extern const u8 BattleScript_EffectRaiseCritAlliesAnim[]; +extern const u8 BattleScript_EffectHealOneSixthAllies[]; +extern const u8 BattleScript_EffectCureStatusAllies[]; +extern const u8 BattleScript_EffectRecycleBerriesAllies[]; + +// dynamax and max raids +extern const u8 BattleScript_DynamaxBegins[]; +extern const u8 BattleScript_DynamaxEnds[]; +extern const u8 BattleScript_MoveBlockedByDynamax[]; + #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_util.h b/include/battle_util.h index 02c5afa7a3..0c67352b11 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -15,7 +15,7 @@ #define MOVE_LIMITATION_BELCH (1 << 11) #define MOVE_LIMITATION_THROAT_CHOP (1 << 12) #define MOVE_LIMITATION_STUFF_CHEEKS (1 << 13) -#define MOVE_LIMITATION_GIGATON_HAMMER (1 << 14) +#define MOVE_LIMITATION_CANT_USE_TWICE (1 << 14) #define MOVE_LIMITATION_PLACEHOLDER (1 << 15) #define MOVE_LIMITATIONS_ALL 0xFFFF @@ -115,9 +115,6 @@ void HandleAction_TryFinish(void); void HandleAction_NothingIsFainted(void); void HandleAction_ActionFinished(void); u8 GetBattlerForBattleScript(u8 caseId); -void PressurePPLose(u8 target, u8 attacker, u16 move); -void PressurePPLoseOnUsingPerishSong(u8 attacker); -void PressurePPLoseOnUsingImprison(u8 attacker); bool32 IsBattlerMarkedForControllerExec(u32 battler); void MarkBattlerForControllerExec(u32 battler); void MarkBattlerReceivedLinkData(u32 battler); diff --git a/include/clock.h b/include/clock.h index aa179bf6fb..0cfd3db9ed 100644 --- a/include/clock.h +++ b/include/clock.h @@ -3,6 +3,7 @@ // TODO: time of day and seconds in a day defines +void InitTimeBasedEvents(void); void DoTimeBasedEvents(void); #endif // GUARD_CLOCK_H diff --git a/include/config/battle.h b/include/config/battle.h index a6756d1dd0..e0c3ae2acc 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -68,6 +68,7 @@ #define B_KLUTZ_FLING_INTERACTION GEN_LATEST // In Gen5+, Pokémon with the Klutz ability can't use Fling. #define B_UPDATED_CONVERSION GEN_LATEST // In Gen6+, Conversion changes the user's type to match their first move's. Before, it would choose a move at random. #define B_PP_REDUCED_BY_SPITE GEN_LATEST // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5. +#define B_EXTRAPOLATED_MOVE_FLAGS TRUE // Adds move flags to moves that they don't officially have but would likely have if they were in the latest core series game. // Move accuracy settings #define B_TOXIC_NEVER_MISS GEN_LATEST // In Gen6+, if Toxic is used by a Poison-type Pokémon, it will never miss. @@ -84,7 +85,6 @@ #define B_GROWTH_STAT_RAISE GEN_LATEST // In Gen5+, Growth raises Attack in addition to Special Attack by 1 stage each. Under the effects of the sun, it raises them by 2 stages each instead. // Other move settings -#define B_SOUND_SUBSTITUTE GEN_LATEST // In Gen6+, sound moves bypass Substitute. #define B_INCINERATE_GEMS GEN_LATEST // In Gen6+, Incinerate can destroy Gems. #define B_CAN_SPITE_FAIL GEN_LATEST // In Gen4+, Spite can no longer fail if the foe's last move only has 1 remaining PP. #define B_CRASH_IF_TARGET_IMMUNE GEN_LATEST // In Gen4+, The user of Jump Kick or High Jump Kick will "keep going and crash" if it attacks a target that is immune to the move. @@ -117,7 +117,7 @@ #define B_SHADOW_TAG_ESCAPE GEN_LATEST // In Gen4+, if both sides have a Pokémon with Shadow Tag, all battlers can escape. Before, neither side could escape this situation. #define B_MOODY_ACC_EVASION GEN_LATEST // In Gen8, Moody CANNOT raise Accuracy and Evasion anymore. #define B_FLASH_FIRE_FROZEN GEN_LATEST // In Gen5+, Flash Fire can trigger even when frozen, when it couldn't before. -#define B_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same ability, as opposed to 50% previously. +#define B_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same Nature, as opposed to 50% previously. In Gen9, it has no out-of-battle effect. #define B_SYNCHRONIZE_TOXIC GEN_LATEST // In Gen5+, if a Pokémon with Synchronize is badly poisoned, the opponent will also become badly poisoned. Previously, the opponent would become regular poisoned. #define B_UPDATED_INTIMIDATE GEN_LATEST // In Gen8, Intimidate doesn't work on opponents with the Inner Focus, Scrappy, Own Tempo or Oblivious abilities. It also activates Rattled. #define B_OBLIVIOUS_TAUNT GEN_LATEST // In Gen6+, Pokémon with Oblivious can't be taunted. @@ -161,6 +161,7 @@ #define B_FLAG_NO_BAG_USE 0 // If this flag is set, the ability to use the bag in battle is disabled. #define B_FLAG_NO_CATCHING 0 // If this flag is set, the ability to catch wild Pokémon is disabled. #define B_FLAG_AI_VS_AI_BATTLE 0 // If this flag is set, the player's mons will be controlled by the ai next battles. +#define B_FLAG_DYNAMAX_BATTLE 0 // If this flag is set, the ability to Dynamax in battle is enabled for all trainers. // Var Settings // To use the following features in scripting, replace the 0s with the var ID you're assigning it to. @@ -190,6 +191,7 @@ #define B_HIDE_HEALTHBOX_IN_ANIMS TRUE // If set to TRUE, hides healthboxes during move animations. #define B_EXPANDED_MOVE_NAMES FALSE // If set to TRUE, move names are increased from 12 characters to 16 characters. #define B_WAIT_TIME_MULTIPLIER 16 // This determines how long text pauses in battle last. Vanilla is 16. Lower values result in faster battles. +#define B_QUICK_MOVE_CURSOR_TO_RUN FALSE // If set to TRUE, pushing B in the battle options against a wild encounter will move the cursor to the run option // Catching settings #define B_SEMI_INVULNERABLE_CATCH GEN_LATEST // In Gen4+, you cannot throw a ball against a Pokemon that is in a semi-invulnerable state (dig/fly/etc) @@ -197,7 +199,7 @@ #define B_CRITICAL_CAPTURE TRUE // If set to TRUE, Critical Capture will be enabled. #define B_LAST_USED_BALL TRUE // If TRUE, the "last used ball" feature from Gen 7 will be implemented #define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball. -#define B_LAST_USED_BALL_CYCLE TRUE // If TRUE, then holding B_LAST_USED_BALL_BUTTON while pressing the D-Pad cycles through the balls +#define B_LAST_USED_BALL_CYCLE TRUE // If TRUE, then holding B_LAST_USED_BALL_BUTTON while pressing the D-Pad cycles through the balls // Other settings #define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. diff --git a/include/config/pokemon.h b/include/config/pokemon.h index a65eddb73c..271a77add4 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -7,6 +7,9 @@ #define P_UPDATED_ABILITIES GEN_LATEST // Since Gen 6, certain Pokémon have their abilities changed. #define P_UPDATED_EGG_GROUPS GEN_LATEST // Since Gen 8, certain Pokémon have gained new egg groups. +// Evolution settings +#define P_FRIENDSHIP_EVO_THRESHOLD GEN_LATEST // Since Gen 8, Pokémon that evolve by friendship evolve at or above 160 friendship instead of 220. + // Breeding settings #define P_NIDORAN_M_DITTO_BREED GEN_LATEST // Since Gen 5, when Nidoran♂ breeds with Ditto it can produce Nidoran♀ offspring. Before, it would only yield male offspring. This change also applies to Volbeat. #define P_INCENSE_BREEDING GEN_LATEST // Since Gen 9, cross-generation Baby Pokémon don't require Incense being held by the parents to be obtained via breeding. diff --git a/include/constants/battle.h b/include/constants/battle.h index a96f13164a..05c0d1b037 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -57,9 +57,9 @@ #define BATTLE_TYPE_WALLY_TUTORIAL (1 << 9) // Used in pokefirered as BATTLE_TYPE_OLD_MAN_TUTORIAL. #define BATTLE_TYPE_ROAMER (1 << 10) #define BATTLE_TYPE_EREADER_TRAINER (1 << 11) -#define BATTLE_TYPE_KYOGRE_GROUDON (1 << 12) +#define BATTLE_TYPE_RAID (1 << 12) #define BATTLE_TYPE_LEGENDARY (1 << 13) -#define BATTLE_TYPE_REGI (1 << 14) +#define BATTLE_TYPE_14 (1 << 14) #define BATTLE_TYPE_TWO_OPPONENTS (1 << 15) // Used in pokefirered as BATTLE_TYPE_GHOST. #define BATTLE_TYPE_DOME (1 << 16) // Used in pokefirered as BATTLE_TYPE_POKEDUDE. #define BATTLE_TYPE_PALACE (1 << 17) // Used in pokefirered as BATTLE_TYPE_WILD_SCRIPTED. @@ -73,17 +73,16 @@ #define BATTLE_TYPE_RECORDED_LINK (1 << 25) #define BATTLE_TYPE_TRAINER_HILL (1 << 26) #define BATTLE_TYPE_SECRET_BASE (1 << 27) -#define BATTLE_TYPE_GROUDON (1 << 28) -#define BATTLE_TYPE_KYOGRE (1 << 29) -#define BATTLE_TYPE_RAYQUAZA (1 << 30) +#define BATTLE_TYPE_28 (1 << 28) +#define BATTLE_TYPE_29 (1 << 29) +#define BATTLE_TYPE_30 (1 << 30) #define BATTLE_TYPE_RECORDED_IS_MASTER (1 << 31) #define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID) #define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE) #define BATTLE_TYPE_RECORDED_INVALID ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \ | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \ - | BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \ - | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE \ - | BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA)) + | BATTLE_TYPE_LEGENDARY \ + | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE)) #define WILD_DOUBLE_BATTLE ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER)))) #define RECORDED_WILD_BATTLE ((gBattleTypeFlags & BATTLE_TYPE_RECORDED) && !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FRONTIER))) @@ -237,8 +236,10 @@ #define SIDE_STATUS_WIDE_GUARD (1 << 19) #define SIDE_STATUS_CRAFTY_SHIELD (1 << 20) #define SIDE_STATUS_MAT_BLOCK (1 << 21) +#define SIDE_STATUS_STEELSURGE (1 << 22) +#define SIDE_STATUS_DAMAGE_NON_TYPES (1 << 23) -#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK) +#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STEELSURGE) #define SIDE_STATUS_SCREEN_ANY (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL) // Field affecting statuses. @@ -502,4 +503,7 @@ #define HANDLE_TYPE_PRIMAL_REVERSION 1 #define HANDLE_TYPE_ULTRA_BURST 2 +// Constants for Torment +#define PERMANENT_TORMENT 0xF + #endif // GUARD_CONSTANTS_BATTLE_H diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 9876652b65..54eeb5b055 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -398,6 +398,7 @@ #define ANIM_TAG_POLTERGEIST (ANIM_SPRITES_START + 384) #define ANIM_TAG_TEAPOT (ANIM_SPRITES_START + 385) #define ANIM_TAG_WOOD_HAMMER_HAMMER (ANIM_SPRITES_START + 386) +#define ANIM_TAG_SNOWFLAKES (ANIM_SPRITES_START + 387) // battlers @@ -550,6 +551,8 @@ #define B_ANIM_SNOW_CONTINUES 36 #define B_ANIM_ULTRA_BURST 37 #define B_ANIM_SALT_CURE_DAMAGE 38 +#define B_ANIM_DYNAMAX_GROWTH 39 +#define B_ANIM_MAX_SET_WEATHER 40 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index d5b8db6183..91b74feee7 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -412,11 +412,11 @@ #define EFFECT_CORROSIVE_GAS 406 #define EFFECT_POPULATION_BOMB 407 #define EFFECT_MORTAL_SPIN 408 -#define EFFECT_GIGATON_HAMMER 409 -#define EFFECT_SALT_CURE 410 -#define EFFECT_MATCHA_GOTCHA 411 -#define EFFECT_SYRUP_BOMB 412 -#define EFFECT_IVY_CUDGEL 413 +#define EFFECT_SALT_CURE 409 +#define EFFECT_MATCHA_GOTCHA 410 +#define EFFECT_SYRUP_BOMB 411 +#define EFFECT_IVY_CUDGEL 412 +#define EFFECT_MAX_MOVE 413 #define NUM_BATTLE_MOVE_EFFECTS 414 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 6998502d1f..a9a6b7025b 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -672,8 +672,21 @@ #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 BATTLESTRINGS_COUNT 673 +#define BATTLESTRINGS_COUNT 686 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, @@ -976,7 +989,21 @@ // gDmgHazardsStringIds #define B_MSG_PKMNHURTBYSPIKES 0 #define B_MSG_STEALTHROCKDMG 1 -#define B_MSG_POINTEDSTONESFLOAT 2 -#define B_MSG_SPIKESSCATTERED 3 +#define B_MSG_SHARPSTEELDMG 2 +#define B_MSG_POINTEDSTONESFLOAT 3 +#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_CONSTANTS_BATTLE_STRING_IDS_H diff --git a/include/constants/form_change_types.h b/include/constants/form_change_types.h index db96b06574..11ef28f3f2 100644 --- a/include/constants/form_change_types.h +++ b/include/constants/form_change_types.h @@ -101,4 +101,8 @@ // param1: item to hold. #define FORM_CHANGE_BATTLE_ULTRA_BURST 16 +// Form change that activates when the mon Dynamaxes (TODO: with Gigantamax factor). +// - No parameters +#define FORM_CHANGE_BATTLE_GIGANTAMAX 17 + #endif // GUARD_CONSTANTS_FORM_CHANGE_TYPES_H diff --git a/include/constants/moves.h b/include/constants/moves.h index b3a881b77f..e87441b505 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -888,6 +888,7 @@ #define MOVE_DEVASTATING_DRAKE (MOVES_COUNT + 15) #define MOVE_BLACK_HOLE_ECLIPSE (MOVES_COUNT + 16) #define MOVE_TWINKLE_TACKLE (MOVES_COUNT + 17) + // Signature Z Moves #define MOVE_CATASTROPIKA (MOVES_COUNT + 18) #define MOVE_10000000_VOLT_THUNDERBOLT (MOVES_COUNT + 19) @@ -912,6 +913,66 @@ #define MOVES_COUNT_Z (LAST_Z_MOVE + 1) +//Max Moves +#define MOVE_MAX_GUARD (FIRST_MAX_MOVE + 0) +#define MOVE_MAX_STRIKE (FIRST_MAX_MOVE + 1) +#define MOVE_MAX_KNUCKLE (FIRST_MAX_MOVE + 2) +#define MOVE_MAX_AIRSTREAM (FIRST_MAX_MOVE + 3) +#define MOVE_MAX_OOZE (FIRST_MAX_MOVE + 4) +#define MOVE_MAX_QUAKE (FIRST_MAX_MOVE + 5) +#define MOVE_MAX_ROCKFALL (FIRST_MAX_MOVE + 6) +#define MOVE_MAX_FLUTTERBY (FIRST_MAX_MOVE + 7) +#define MOVE_MAX_PHANTASM (FIRST_MAX_MOVE + 8) +#define MOVE_MAX_STEELSPIKE (FIRST_MAX_MOVE + 9) +#define MOVE_MAX_FLARE (FIRST_MAX_MOVE + 10) +#define MOVE_MAX_GEYSER (FIRST_MAX_MOVE + 11) +#define MOVE_MAX_OVERGROWTH (FIRST_MAX_MOVE + 12) +#define MOVE_MAX_LIGHTNING (FIRST_MAX_MOVE + 13) +#define MOVE_MAX_MINDSTORM (FIRST_MAX_MOVE + 14) +#define MOVE_MAX_HAILSTORM (FIRST_MAX_MOVE + 15) +#define MOVE_MAX_WYRMWIND (FIRST_MAX_MOVE + 16) +#define MOVE_MAX_DARKNESS (FIRST_MAX_MOVE + 17) +#define MOVE_MAX_STARFALL (FIRST_MAX_MOVE + 18) +// Gigantamax Moves +#define MOVE_G_MAX_VINE_LASH (FIRST_MAX_MOVE + 19) +#define MOVE_G_MAX_WILDFIRE (FIRST_MAX_MOVE + 20) +#define MOVE_G_MAX_CANNONADE (FIRST_MAX_MOVE + 21) +#define MOVE_G_MAX_BEFUDDLE (FIRST_MAX_MOVE + 22) +#define MOVE_G_MAX_VOLT_CRASH (FIRST_MAX_MOVE + 23) +#define MOVE_G_MAX_GOLD_RUSH (FIRST_MAX_MOVE + 24) +#define MOVE_G_MAX_CHI_STRIKE (FIRST_MAX_MOVE + 25) +#define MOVE_G_MAX_TERROR (FIRST_MAX_MOVE + 26) +#define MOVE_G_MAX_FOAM_BURST (FIRST_MAX_MOVE + 27) +#define MOVE_G_MAX_RESONANCE (FIRST_MAX_MOVE + 28) +#define MOVE_G_MAX_CUDDLE (FIRST_MAX_MOVE + 29) +#define MOVE_G_MAX_REPLENISH (FIRST_MAX_MOVE + 30) +#define MOVE_G_MAX_MALODOR (FIRST_MAX_MOVE + 31) +#define MOVE_G_MAX_MELTDOWN (FIRST_MAX_MOVE + 32) +#define MOVE_G_MAX_DRUM_SOLO (FIRST_MAX_MOVE + 33) +#define MOVE_G_MAX_FIREBALL (FIRST_MAX_MOVE + 34) +#define MOVE_G_MAX_HYDROSNIPE (FIRST_MAX_MOVE + 35) +#define MOVE_G_MAX_WIND_RAGE (FIRST_MAX_MOVE + 36) +#define MOVE_G_MAX_GRAVITAS (FIRST_MAX_MOVE + 37) +#define MOVE_G_MAX_STONESURGE (FIRST_MAX_MOVE + 38) +#define MOVE_G_MAX_VOLCALITH (FIRST_MAX_MOVE + 39) +#define MOVE_G_MAX_TARTNESS (FIRST_MAX_MOVE + 40) +#define MOVE_G_MAX_SWEETNESS (FIRST_MAX_MOVE + 41) +#define MOVE_G_MAX_SANDBLAST (FIRST_MAX_MOVE + 42) +#define MOVE_G_MAX_STUN_SHOCK (FIRST_MAX_MOVE + 43) +#define MOVE_G_MAX_CENTIFERNO (FIRST_MAX_MOVE + 44) +#define MOVE_G_MAX_SMITE (FIRST_MAX_MOVE + 45) +#define MOVE_G_MAX_SNOOZE (FIRST_MAX_MOVE + 46) +#define MOVE_G_MAX_FINALE (FIRST_MAX_MOVE + 47) +#define MOVE_G_MAX_STEELSURGE (FIRST_MAX_MOVE + 48) +#define MOVE_G_MAX_DEPLETION (FIRST_MAX_MOVE + 49) +#define MOVE_G_MAX_ONE_BLOW (FIRST_MAX_MOVE + 50) +#define MOVE_G_MAX_RAPID_FLOW (FIRST_MAX_MOVE + 51) + +#define FIRST_MAX_MOVE MOVES_COUNT_Z +#define LAST_MAX_MOVE MOVE_G_MAX_RAPID_FLOW + +#define MOVES_COUNT_DYNAMAX (LAST_MAX_MOVE + 1) + // Used for checks for moves affected by Disable, Mimic, etc. #define MOVE_UNAVAILABLE 0xFFFF diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 6ff50807af..49272691c6 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -285,7 +285,7 @@ #define EVO_ITEM_HOLD 41 // Pokémon levels up, holds specified item #define EVO_LEVEL_FOG 42 // Pokémon reaches the specified level during fog in the overworld -#define EVOS_PER_MON 10 +#define EVOS_PER_MON 11 // Evolution 'modes,' for GetEvolutionTargetSpecies #define EVO_MODE_NORMAL 0 diff --git a/include/constants/species.h b/include/constants/species.h index ae36497e71..a54121f626 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1,912 +1,965 @@ #ifndef GUARD_CONSTANTS_SPECIES_H #define GUARD_CONSTANTS_SPECIES_H -#define SPECIES_NONE 0 -#define SPECIES_BULBASAUR 1 -#define SPECIES_IVYSAUR 2 -#define SPECIES_VENUSAUR 3 -#define SPECIES_CHARMANDER 4 -#define SPECIES_CHARMELEON 5 -#define SPECIES_CHARIZARD 6 -#define SPECIES_SQUIRTLE 7 -#define SPECIES_WARTORTLE 8 -#define SPECIES_BLASTOISE 9 -#define SPECIES_CATERPIE 10 -#define SPECIES_METAPOD 11 -#define SPECIES_BUTTERFREE 12 -#define SPECIES_WEEDLE 13 -#define SPECIES_KAKUNA 14 -#define SPECIES_BEEDRILL 15 -#define SPECIES_PIDGEY 16 -#define SPECIES_PIDGEOTTO 17 -#define SPECIES_PIDGEOT 18 -#define SPECIES_RATTATA 19 -#define SPECIES_RATICATE 20 -#define SPECIES_SPEAROW 21 -#define SPECIES_FEAROW 22 -#define SPECIES_EKANS 23 -#define SPECIES_ARBOK 24 -#define SPECIES_PIKACHU 25 -#define SPECIES_RAICHU 26 -#define SPECIES_SANDSHREW 27 -#define SPECIES_SANDSLASH 28 -#define SPECIES_NIDORAN_F 29 -#define SPECIES_NIDORINA 30 -#define SPECIES_NIDOQUEEN 31 -#define SPECIES_NIDORAN_M 32 -#define SPECIES_NIDORINO 33 -#define SPECIES_NIDOKING 34 -#define SPECIES_CLEFAIRY 35 -#define SPECIES_CLEFABLE 36 -#define SPECIES_VULPIX 37 -#define SPECIES_NINETALES 38 -#define SPECIES_JIGGLYPUFF 39 -#define SPECIES_WIGGLYTUFF 40 -#define SPECIES_ZUBAT 41 -#define SPECIES_GOLBAT 42 -#define SPECIES_ODDISH 43 -#define SPECIES_GLOOM 44 -#define SPECIES_VILEPLUME 45 -#define SPECIES_PARAS 46 -#define SPECIES_PARASECT 47 -#define SPECIES_VENONAT 48 -#define SPECIES_VENOMOTH 49 -#define SPECIES_DIGLETT 50 -#define SPECIES_DUGTRIO 51 -#define SPECIES_MEOWTH 52 -#define SPECIES_PERSIAN 53 -#define SPECIES_PSYDUCK 54 -#define SPECIES_GOLDUCK 55 -#define SPECIES_MANKEY 56 -#define SPECIES_PRIMEAPE 57 -#define SPECIES_GROWLITHE 58 -#define SPECIES_ARCANINE 59 -#define SPECIES_POLIWAG 60 -#define SPECIES_POLIWHIRL 61 -#define SPECIES_POLIWRATH 62 -#define SPECIES_ABRA 63 -#define SPECIES_KADABRA 64 -#define SPECIES_ALAKAZAM 65 -#define SPECIES_MACHOP 66 -#define SPECIES_MACHOKE 67 -#define SPECIES_MACHAMP 68 -#define SPECIES_BELLSPROUT 69 -#define SPECIES_WEEPINBELL 70 -#define SPECIES_VICTREEBEL 71 -#define SPECIES_TENTACOOL 72 -#define SPECIES_TENTACRUEL 73 -#define SPECIES_GEODUDE 74 -#define SPECIES_GRAVELER 75 -#define SPECIES_GOLEM 76 -#define SPECIES_PONYTA 77 -#define SPECIES_RAPIDASH 78 -#define SPECIES_SLOWPOKE 79 -#define SPECIES_SLOWBRO 80 -#define SPECIES_MAGNEMITE 81 -#define SPECIES_MAGNETON 82 -#define SPECIES_FARFETCHD 83 -#define SPECIES_DODUO 84 -#define SPECIES_DODRIO 85 -#define SPECIES_SEEL 86 -#define SPECIES_DEWGONG 87 -#define SPECIES_GRIMER 88 -#define SPECIES_MUK 89 -#define SPECIES_SHELLDER 90 -#define SPECIES_CLOYSTER 91 -#define SPECIES_GASTLY 92 -#define SPECIES_HAUNTER 93 -#define SPECIES_GENGAR 94 -#define SPECIES_ONIX 95 -#define SPECIES_DROWZEE 96 -#define SPECIES_HYPNO 97 -#define SPECIES_KRABBY 98 -#define SPECIES_KINGLER 99 -#define SPECIES_VOLTORB 100 -#define SPECIES_ELECTRODE 101 -#define SPECIES_EXEGGCUTE 102 -#define SPECIES_EXEGGUTOR 103 -#define SPECIES_CUBONE 104 -#define SPECIES_MAROWAK 105 -#define SPECIES_HITMONLEE 106 -#define SPECIES_HITMONCHAN 107 -#define SPECIES_LICKITUNG 108 -#define SPECIES_KOFFING 109 -#define SPECIES_WEEZING 110 -#define SPECIES_RHYHORN 111 -#define SPECIES_RHYDON 112 -#define SPECIES_CHANSEY 113 -#define SPECIES_TANGELA 114 -#define SPECIES_KANGASKHAN 115 -#define SPECIES_HORSEA 116 -#define SPECIES_SEADRA 117 -#define SPECIES_GOLDEEN 118 -#define SPECIES_SEAKING 119 -#define SPECIES_STARYU 120 -#define SPECIES_STARMIE 121 -#define SPECIES_MR_MIME 122 -#define SPECIES_SCYTHER 123 -#define SPECIES_JYNX 124 -#define SPECIES_ELECTABUZZ 125 -#define SPECIES_MAGMAR 126 -#define SPECIES_PINSIR 127 -#define SPECIES_TAUROS 128 -#define SPECIES_MAGIKARP 129 -#define SPECIES_GYARADOS 130 -#define SPECIES_LAPRAS 131 -#define SPECIES_DITTO 132 -#define SPECIES_EEVEE 133 -#define SPECIES_VAPOREON 134 -#define SPECIES_JOLTEON 135 -#define SPECIES_FLAREON 136 -#define SPECIES_PORYGON 137 -#define SPECIES_OMANYTE 138 -#define SPECIES_OMASTAR 139 -#define SPECIES_KABUTO 140 -#define SPECIES_KABUTOPS 141 -#define SPECIES_AERODACTYL 142 -#define SPECIES_SNORLAX 143 -#define SPECIES_ARTICUNO 144 -#define SPECIES_ZAPDOS 145 -#define SPECIES_MOLTRES 146 -#define SPECIES_DRATINI 147 -#define SPECIES_DRAGONAIR 148 -#define SPECIES_DRAGONITE 149 -#define SPECIES_MEWTWO 150 -#define SPECIES_MEW 151 -#define SPECIES_CHIKORITA 152 -#define SPECIES_BAYLEEF 153 -#define SPECIES_MEGANIUM 154 -#define SPECIES_CYNDAQUIL 155 -#define SPECIES_QUILAVA 156 -#define SPECIES_TYPHLOSION 157 -#define SPECIES_TOTODILE 158 -#define SPECIES_CROCONAW 159 -#define SPECIES_FERALIGATR 160 -#define SPECIES_SENTRET 161 -#define SPECIES_FURRET 162 -#define SPECIES_HOOTHOOT 163 -#define SPECIES_NOCTOWL 164 -#define SPECIES_LEDYBA 165 -#define SPECIES_LEDIAN 166 -#define SPECIES_SPINARAK 167 -#define SPECIES_ARIADOS 168 -#define SPECIES_CROBAT 169 -#define SPECIES_CHINCHOU 170 -#define SPECIES_LANTURN 171 -#define SPECIES_PICHU 172 -#define SPECIES_CLEFFA 173 -#define SPECIES_IGGLYBUFF 174 -#define SPECIES_TOGEPI 175 -#define SPECIES_TOGETIC 176 -#define SPECIES_NATU 177 -#define SPECIES_XATU 178 -#define SPECIES_MAREEP 179 -#define SPECIES_FLAAFFY 180 -#define SPECIES_AMPHAROS 181 -#define SPECIES_BELLOSSOM 182 -#define SPECIES_MARILL 183 -#define SPECIES_AZUMARILL 184 -#define SPECIES_SUDOWOODO 185 -#define SPECIES_POLITOED 186 -#define SPECIES_HOPPIP 187 -#define SPECIES_SKIPLOOM 188 -#define SPECIES_JUMPLUFF 189 -#define SPECIES_AIPOM 190 -#define SPECIES_SUNKERN 191 -#define SPECIES_SUNFLORA 192 -#define SPECIES_YANMA 193 -#define SPECIES_WOOPER 194 -#define SPECIES_QUAGSIRE 195 -#define SPECIES_ESPEON 196 -#define SPECIES_UMBREON 197 -#define SPECIES_MURKROW 198 -#define SPECIES_SLOWKING 199 -#define SPECIES_MISDREAVUS 200 -#define SPECIES_UNOWN 201 -#define SPECIES_WOBBUFFET 202 -#define SPECIES_GIRAFARIG 203 -#define SPECIES_PINECO 204 -#define SPECIES_FORRETRESS 205 -#define SPECIES_DUNSPARCE 206 -#define SPECIES_GLIGAR 207 -#define SPECIES_STEELIX 208 -#define SPECIES_SNUBBULL 209 -#define SPECIES_GRANBULL 210 -#define SPECIES_QWILFISH 211 -#define SPECIES_SCIZOR 212 -#define SPECIES_SHUCKLE 213 -#define SPECIES_HERACROSS 214 -#define SPECIES_SNEASEL 215 -#define SPECIES_TEDDIURSA 216 -#define SPECIES_URSARING 217 -#define SPECIES_SLUGMA 218 -#define SPECIES_MAGCARGO 219 -#define SPECIES_SWINUB 220 -#define SPECIES_PILOSWINE 221 -#define SPECIES_CORSOLA 222 -#define SPECIES_REMORAID 223 -#define SPECIES_OCTILLERY 224 -#define SPECIES_DELIBIRD 225 -#define SPECIES_MANTINE 226 -#define SPECIES_SKARMORY 227 -#define SPECIES_HOUNDOUR 228 -#define SPECIES_HOUNDOOM 229 -#define SPECIES_KINGDRA 230 -#define SPECIES_PHANPY 231 -#define SPECIES_DONPHAN 232 -#define SPECIES_PORYGON2 233 -#define SPECIES_STANTLER 234 -#define SPECIES_SMEARGLE 235 -#define SPECIES_TYROGUE 236 -#define SPECIES_HITMONTOP 237 -#define SPECIES_SMOOCHUM 238 -#define SPECIES_ELEKID 239 -#define SPECIES_MAGBY 240 -#define SPECIES_MILTANK 241 -#define SPECIES_BLISSEY 242 -#define SPECIES_RAIKOU 243 -#define SPECIES_ENTEI 244 -#define SPECIES_SUICUNE 245 -#define SPECIES_LARVITAR 246 -#define SPECIES_PUPITAR 247 -#define SPECIES_TYRANITAR 248 -#define SPECIES_LUGIA 249 -#define SPECIES_HO_OH 250 -#define SPECIES_CELEBI 251 -#define SPECIES_TREECKO 252 -#define SPECIES_GROVYLE 253 -#define SPECIES_SCEPTILE 254 -#define SPECIES_TORCHIC 255 -#define SPECIES_COMBUSKEN 256 -#define SPECIES_BLAZIKEN 257 -#define SPECIES_MUDKIP 258 -#define SPECIES_MARSHTOMP 259 -#define SPECIES_SWAMPERT 260 -#define SPECIES_POOCHYENA 261 -#define SPECIES_MIGHTYENA 262 -#define SPECIES_ZIGZAGOON 263 -#define SPECIES_LINOONE 264 -#define SPECIES_WURMPLE 265 -#define SPECIES_SILCOON 266 -#define SPECIES_BEAUTIFLY 267 -#define SPECIES_CASCOON 268 -#define SPECIES_DUSTOX 269 -#define SPECIES_LOTAD 270 -#define SPECIES_LOMBRE 271 -#define SPECIES_LUDICOLO 272 -#define SPECIES_SEEDOT 273 -#define SPECIES_NUZLEAF 274 -#define SPECIES_SHIFTRY 275 -#define SPECIES_TAILLOW 276 -#define SPECIES_SWELLOW 277 -#define SPECIES_WINGULL 278 -#define SPECIES_PELIPPER 279 -#define SPECIES_RALTS 280 -#define SPECIES_KIRLIA 281 -#define SPECIES_GARDEVOIR 282 -#define SPECIES_SURSKIT 283 -#define SPECIES_MASQUERAIN 284 -#define SPECIES_SHROOMISH 285 -#define SPECIES_BRELOOM 286 -#define SPECIES_SLAKOTH 287 -#define SPECIES_VIGOROTH 288 -#define SPECIES_SLAKING 289 -#define SPECIES_NINCADA 290 -#define SPECIES_NINJASK 291 -#define SPECIES_SHEDINJA 292 -#define SPECIES_WHISMUR 293 -#define SPECIES_LOUDRED 294 -#define SPECIES_EXPLOUD 295 -#define SPECIES_MAKUHITA 296 -#define SPECIES_HARIYAMA 297 -#define SPECIES_AZURILL 298 -#define SPECIES_NOSEPASS 299 -#define SPECIES_SKITTY 300 -#define SPECIES_DELCATTY 301 -#define SPECIES_SABLEYE 302 -#define SPECIES_MAWILE 303 -#define SPECIES_ARON 304 -#define SPECIES_LAIRON 305 -#define SPECIES_AGGRON 306 -#define SPECIES_MEDITITE 307 -#define SPECIES_MEDICHAM 308 -#define SPECIES_ELECTRIKE 309 -#define SPECIES_MANECTRIC 310 -#define SPECIES_PLUSLE 311 -#define SPECIES_MINUN 312 -#define SPECIES_VOLBEAT 313 -#define SPECIES_ILLUMISE 314 -#define SPECIES_ROSELIA 315 -#define SPECIES_GULPIN 316 -#define SPECIES_SWALOT 317 -#define SPECIES_CARVANHA 318 -#define SPECIES_SHARPEDO 319 -#define SPECIES_WAILMER 320 -#define SPECIES_WAILORD 321 -#define SPECIES_NUMEL 322 -#define SPECIES_CAMERUPT 323 -#define SPECIES_TORKOAL 324 -#define SPECIES_SPOINK 325 -#define SPECIES_GRUMPIG 326 -#define SPECIES_SPINDA 327 -#define SPECIES_TRAPINCH 328 -#define SPECIES_VIBRAVA 329 -#define SPECIES_FLYGON 330 -#define SPECIES_CACNEA 331 -#define SPECIES_CACTURNE 332 -#define SPECIES_SWABLU 333 -#define SPECIES_ALTARIA 334 -#define SPECIES_ZANGOOSE 335 -#define SPECIES_SEVIPER 336 -#define SPECIES_LUNATONE 337 -#define SPECIES_SOLROCK 338 -#define SPECIES_BARBOACH 339 -#define SPECIES_WHISCASH 340 -#define SPECIES_CORPHISH 341 -#define SPECIES_CRAWDAUNT 342 -#define SPECIES_BALTOY 343 -#define SPECIES_CLAYDOL 344 -#define SPECIES_LILEEP 345 -#define SPECIES_CRADILY 346 -#define SPECIES_ANORITH 347 -#define SPECIES_ARMALDO 348 -#define SPECIES_FEEBAS 349 -#define SPECIES_MILOTIC 350 -#define SPECIES_CASTFORM 351 -#define SPECIES_KECLEON 352 -#define SPECIES_SHUPPET 353 -#define SPECIES_BANETTE 354 -#define SPECIES_DUSKULL 355 -#define SPECIES_DUSCLOPS 356 -#define SPECIES_TROPIUS 357 -#define SPECIES_CHIMECHO 358 -#define SPECIES_ABSOL 359 -#define SPECIES_WYNAUT 360 -#define SPECIES_SNORUNT 361 -#define SPECIES_GLALIE 362 -#define SPECIES_SPHEAL 363 -#define SPECIES_SEALEO 364 -#define SPECIES_WALREIN 365 -#define SPECIES_CLAMPERL 366 -#define SPECIES_HUNTAIL 367 -#define SPECIES_GOREBYSS 368 -#define SPECIES_RELICANTH 369 -#define SPECIES_LUVDISC 370 -#define SPECIES_BAGON 371 -#define SPECIES_SHELGON 372 -#define SPECIES_SALAMENCE 373 -#define SPECIES_BELDUM 374 -#define SPECIES_METANG 375 -#define SPECIES_METAGROSS 376 -#define SPECIES_REGIROCK 377 -#define SPECIES_REGICE 378 -#define SPECIES_REGISTEEL 379 -#define SPECIES_LATIAS 380 -#define SPECIES_LATIOS 381 -#define SPECIES_KYOGRE 382 -#define SPECIES_GROUDON 383 -#define SPECIES_RAYQUAZA 384 -#define SPECIES_JIRACHI 385 -#define SPECIES_DEOXYS 386 -#define SPECIES_TURTWIG 387 -#define SPECIES_GROTLE 388 -#define SPECIES_TORTERRA 389 -#define SPECIES_CHIMCHAR 390 -#define SPECIES_MONFERNO 391 -#define SPECIES_INFERNAPE 392 -#define SPECIES_PIPLUP 393 -#define SPECIES_PRINPLUP 394 -#define SPECIES_EMPOLEON 395 -#define SPECIES_STARLY 396 -#define SPECIES_STARAVIA 397 -#define SPECIES_STARAPTOR 398 -#define SPECIES_BIDOOF 399 -#define SPECIES_BIBAREL 400 -#define SPECIES_KRICKETOT 401 -#define SPECIES_KRICKETUNE 402 -#define SPECIES_SHINX 403 -#define SPECIES_LUXIO 404 -#define SPECIES_LUXRAY 405 -#define SPECIES_BUDEW 406 -#define SPECIES_ROSERADE 407 -#define SPECIES_CRANIDOS 408 -#define SPECIES_RAMPARDOS 409 -#define SPECIES_SHIELDON 410 -#define SPECIES_BASTIODON 411 -#define SPECIES_BURMY 412 -#define SPECIES_WORMADAM 413 -#define SPECIES_MOTHIM 414 -#define SPECIES_COMBEE 415 -#define SPECIES_VESPIQUEN 416 -#define SPECIES_PACHIRISU 417 -#define SPECIES_BUIZEL 418 -#define SPECIES_FLOATZEL 419 -#define SPECIES_CHERUBI 420 -#define SPECIES_CHERRIM 421 -#define SPECIES_SHELLOS 422 -#define SPECIES_GASTRODON 423 -#define SPECIES_AMBIPOM 424 -#define SPECIES_DRIFLOON 425 -#define SPECIES_DRIFBLIM 426 -#define SPECIES_BUNEARY 427 -#define SPECIES_LOPUNNY 428 -#define SPECIES_MISMAGIUS 429 -#define SPECIES_HONCHKROW 430 -#define SPECIES_GLAMEOW 431 -#define SPECIES_PURUGLY 432 -#define SPECIES_CHINGLING 433 -#define SPECIES_STUNKY 434 -#define SPECIES_SKUNTANK 435 -#define SPECIES_BRONZOR 436 -#define SPECIES_BRONZONG 437 -#define SPECIES_BONSLY 438 -#define SPECIES_MIME_JR 439 -#define SPECIES_HAPPINY 440 -#define SPECIES_CHATOT 441 -#define SPECIES_SPIRITOMB 442 -#define SPECIES_GIBLE 443 -#define SPECIES_GABITE 444 -#define SPECIES_GARCHOMP 445 -#define SPECIES_MUNCHLAX 446 -#define SPECIES_RIOLU 447 -#define SPECIES_LUCARIO 448 -#define SPECIES_HIPPOPOTAS 449 -#define SPECIES_HIPPOWDON 450 -#define SPECIES_SKORUPI 451 -#define SPECIES_DRAPION 452 -#define SPECIES_CROAGUNK 453 -#define SPECIES_TOXICROAK 454 -#define SPECIES_CARNIVINE 455 -#define SPECIES_FINNEON 456 -#define SPECIES_LUMINEON 457 -#define SPECIES_MANTYKE 458 -#define SPECIES_SNOVER 459 -#define SPECIES_ABOMASNOW 460 -#define SPECIES_WEAVILE 461 -#define SPECIES_MAGNEZONE 462 -#define SPECIES_LICKILICKY 463 -#define SPECIES_RHYPERIOR 464 -#define SPECIES_TANGROWTH 465 -#define SPECIES_ELECTIVIRE 466 -#define SPECIES_MAGMORTAR 467 -#define SPECIES_TOGEKISS 468 -#define SPECIES_YANMEGA 469 -#define SPECIES_LEAFEON 470 -#define SPECIES_GLACEON 471 -#define SPECIES_GLISCOR 472 -#define SPECIES_MAMOSWINE 473 -#define SPECIES_PORYGON_Z 474 -#define SPECIES_GALLADE 475 -#define SPECIES_PROBOPASS 476 -#define SPECIES_DUSKNOIR 477 -#define SPECIES_FROSLASS 478 -#define SPECIES_ROTOM 479 -#define SPECIES_UXIE 480 -#define SPECIES_MESPRIT 481 -#define SPECIES_AZELF 482 -#define SPECIES_DIALGA 483 -#define SPECIES_PALKIA 484 -#define SPECIES_HEATRAN 485 -#define SPECIES_REGIGIGAS 486 -#define SPECIES_GIRATINA 487 -#define SPECIES_CRESSELIA 488 -#define SPECIES_PHIONE 489 -#define SPECIES_MANAPHY 490 -#define SPECIES_DARKRAI 491 -#define SPECIES_SHAYMIN 492 -#define SPECIES_ARCEUS 493 -#define SPECIES_VICTINI 494 -#define SPECIES_SNIVY 495 -#define SPECIES_SERVINE 496 -#define SPECIES_SERPERIOR 497 -#define SPECIES_TEPIG 498 -#define SPECIES_PIGNITE 499 -#define SPECIES_EMBOAR 500 -#define SPECIES_OSHAWOTT 501 -#define SPECIES_DEWOTT 502 -#define SPECIES_SAMUROTT 503 -#define SPECIES_PATRAT 504 -#define SPECIES_WATCHOG 505 -#define SPECIES_LILLIPUP 506 -#define SPECIES_HERDIER 507 -#define SPECIES_STOUTLAND 508 -#define SPECIES_PURRLOIN 509 -#define SPECIES_LIEPARD 510 -#define SPECIES_PANSAGE 511 -#define SPECIES_SIMISAGE 512 -#define SPECIES_PANSEAR 513 -#define SPECIES_SIMISEAR 514 -#define SPECIES_PANPOUR 515 -#define SPECIES_SIMIPOUR 516 -#define SPECIES_MUNNA 517 -#define SPECIES_MUSHARNA 518 -#define SPECIES_PIDOVE 519 -#define SPECIES_TRANQUILL 520 -#define SPECIES_UNFEZANT 521 -#define SPECIES_BLITZLE 522 -#define SPECIES_ZEBSTRIKA 523 -#define SPECIES_ROGGENROLA 524 -#define SPECIES_BOLDORE 525 -#define SPECIES_GIGALITH 526 -#define SPECIES_WOOBAT 527 -#define SPECIES_SWOOBAT 528 -#define SPECIES_DRILBUR 529 -#define SPECIES_EXCADRILL 530 -#define SPECIES_AUDINO 531 -#define SPECIES_TIMBURR 532 -#define SPECIES_GURDURR 533 -#define SPECIES_CONKELDURR 534 -#define SPECIES_TYMPOLE 535 -#define SPECIES_PALPITOAD 536 -#define SPECIES_SEISMITOAD 537 -#define SPECIES_THROH 538 -#define SPECIES_SAWK 539 -#define SPECIES_SEWADDLE 540 -#define SPECIES_SWADLOON 541 -#define SPECIES_LEAVANNY 542 -#define SPECIES_VENIPEDE 543 -#define SPECIES_WHIRLIPEDE 544 -#define SPECIES_SCOLIPEDE 545 -#define SPECIES_COTTONEE 546 -#define SPECIES_WHIMSICOTT 547 -#define SPECIES_PETILIL 548 -#define SPECIES_LILLIGANT 549 -#define SPECIES_BASCULIN 550 -#define SPECIES_SANDILE 551 -#define SPECIES_KROKOROK 552 -#define SPECIES_KROOKODILE 553 -#define SPECIES_DARUMAKA 554 -#define SPECIES_DARMANITAN 555 -#define SPECIES_MARACTUS 556 -#define SPECIES_DWEBBLE 557 -#define SPECIES_CRUSTLE 558 -#define SPECIES_SCRAGGY 559 -#define SPECIES_SCRAFTY 560 -#define SPECIES_SIGILYPH 561 -#define SPECIES_YAMASK 562 -#define SPECIES_COFAGRIGUS 563 -#define SPECIES_TIRTOUGA 564 -#define SPECIES_CARRACOSTA 565 -#define SPECIES_ARCHEN 566 -#define SPECIES_ARCHEOPS 567 -#define SPECIES_TRUBBISH 568 -#define SPECIES_GARBODOR 569 -#define SPECIES_ZORUA 570 -#define SPECIES_ZOROARK 571 -#define SPECIES_MINCCINO 572 -#define SPECIES_CINCCINO 573 -#define SPECIES_GOTHITA 574 -#define SPECIES_GOTHORITA 575 -#define SPECIES_GOTHITELLE 576 -#define SPECIES_SOLOSIS 577 -#define SPECIES_DUOSION 578 -#define SPECIES_REUNICLUS 579 -#define SPECIES_DUCKLETT 580 -#define SPECIES_SWANNA 581 -#define SPECIES_VANILLITE 582 -#define SPECIES_VANILLISH 583 -#define SPECIES_VANILLUXE 584 -#define SPECIES_DEERLING 585 -#define SPECIES_SAWSBUCK 586 -#define SPECIES_EMOLGA 587 -#define SPECIES_KARRABLAST 588 -#define SPECIES_ESCAVALIER 589 -#define SPECIES_FOONGUS 590 -#define SPECIES_AMOONGUSS 591 -#define SPECIES_FRILLISH 592 -#define SPECIES_JELLICENT 593 -#define SPECIES_ALOMOMOLA 594 -#define SPECIES_JOLTIK 595 -#define SPECIES_GALVANTULA 596 -#define SPECIES_FERROSEED 597 -#define SPECIES_FERROTHORN 598 -#define SPECIES_KLINK 599 -#define SPECIES_KLANG 600 -#define SPECIES_KLINKLANG 601 -#define SPECIES_TYNAMO 602 -#define SPECIES_EELEKTRIK 603 -#define SPECIES_EELEKTROSS 604 -#define SPECIES_ELGYEM 605 -#define SPECIES_BEHEEYEM 606 -#define SPECIES_LITWICK 607 -#define SPECIES_LAMPENT 608 -#define SPECIES_CHANDELURE 609 -#define SPECIES_AXEW 610 -#define SPECIES_FRAXURE 611 -#define SPECIES_HAXORUS 612 -#define SPECIES_CUBCHOO 613 -#define SPECIES_BEARTIC 614 -#define SPECIES_CRYOGONAL 615 -#define SPECIES_SHELMET 616 -#define SPECIES_ACCELGOR 617 -#define SPECIES_STUNFISK 618 -#define SPECIES_MIENFOO 619 -#define SPECIES_MIENSHAO 620 -#define SPECIES_DRUDDIGON 621 -#define SPECIES_GOLETT 622 -#define SPECIES_GOLURK 623 -#define SPECIES_PAWNIARD 624 -#define SPECIES_BISHARP 625 -#define SPECIES_BOUFFALANT 626 -#define SPECIES_RUFFLET 627 -#define SPECIES_BRAVIARY 628 -#define SPECIES_VULLABY 629 -#define SPECIES_MANDIBUZZ 630 -#define SPECIES_HEATMOR 631 -#define SPECIES_DURANT 632 -#define SPECIES_DEINO 633 -#define SPECIES_ZWEILOUS 634 -#define SPECIES_HYDREIGON 635 -#define SPECIES_LARVESTA 636 -#define SPECIES_VOLCARONA 637 -#define SPECIES_COBALION 638 -#define SPECIES_TERRAKION 639 -#define SPECIES_VIRIZION 640 -#define SPECIES_TORNADUS 641 -#define SPECIES_THUNDURUS 642 -#define SPECIES_RESHIRAM 643 -#define SPECIES_ZEKROM 644 -#define SPECIES_LANDORUS 645 -#define SPECIES_KYUREM 646 -#define SPECIES_KELDEO 647 -#define SPECIES_MELOETTA 648 -#define SPECIES_GENESECT 649 -#define SPECIES_CHESPIN 650 -#define SPECIES_QUILLADIN 651 -#define SPECIES_CHESNAUGHT 652 -#define SPECIES_FENNEKIN 653 -#define SPECIES_BRAIXEN 654 -#define SPECIES_DELPHOX 655 -#define SPECIES_FROAKIE 656 -#define SPECIES_FROGADIER 657 -#define SPECIES_GRENINJA 658 -#define SPECIES_BUNNELBY 659 -#define SPECIES_DIGGERSBY 660 -#define SPECIES_FLETCHLING 661 -#define SPECIES_FLETCHINDER 662 -#define SPECIES_TALONFLAME 663 -#define SPECIES_SCATTERBUG 664 -#define SPECIES_SPEWPA 665 -#define SPECIES_VIVILLON 666 // Icy Snow Pattern -#define SPECIES_LITLEO 667 -#define SPECIES_PYROAR 668 -#define SPECIES_FLABEBE 669 // Red Flower -#define SPECIES_FLOETTE 670 -#define SPECIES_FLORGES 671 -#define SPECIES_SKIDDO 672 -#define SPECIES_GOGOAT 673 -#define SPECIES_PANCHAM 674 -#define SPECIES_PANGORO 675 -#define SPECIES_FURFROU 676 -#define SPECIES_ESPURR 677 -#define SPECIES_MEOWSTIC 678 -#define SPECIES_HONEDGE 679 -#define SPECIES_DOUBLADE 680 -#define SPECIES_AEGISLASH 681 -#define SPECIES_SPRITZEE 682 -#define SPECIES_AROMATISSE 683 -#define SPECIES_SWIRLIX 684 -#define SPECIES_SLURPUFF 685 -#define SPECIES_INKAY 686 -#define SPECIES_MALAMAR 687 -#define SPECIES_BINACLE 688 -#define SPECIES_BARBARACLE 689 -#define SPECIES_SKRELP 690 -#define SPECIES_DRAGALGE 691 -#define SPECIES_CLAUNCHER 692 -#define SPECIES_CLAWITZER 693 -#define SPECIES_HELIOPTILE 694 -#define SPECIES_HELIOLISK 695 -#define SPECIES_TYRUNT 696 -#define SPECIES_TYRANTRUM 697 -#define SPECIES_AMAURA 698 -#define SPECIES_AURORUS 699 -#define SPECIES_SYLVEON 700 -#define SPECIES_HAWLUCHA 701 -#define SPECIES_DEDENNE 702 -#define SPECIES_CARBINK 703 -#define SPECIES_GOOMY 704 -#define SPECIES_SLIGGOO 705 -#define SPECIES_GOODRA 706 -#define SPECIES_KLEFKI 707 -#define SPECIES_PHANTUMP 708 -#define SPECIES_TREVENANT 709 -#define SPECIES_PUMPKABOO 710 -#define SPECIES_GOURGEIST 711 -#define SPECIES_BERGMITE 712 -#define SPECIES_AVALUGG 713 -#define SPECIES_NOIBAT 714 -#define SPECIES_NOIVERN 715 -#define SPECIES_XERNEAS 716 -#define SPECIES_YVELTAL 717 -#define SPECIES_ZYGARDE 718 -#define SPECIES_DIANCIE 719 -#define SPECIES_HOOPA 720 -#define SPECIES_VOLCANION 721 -#define SPECIES_ROWLET 722 -#define SPECIES_DARTRIX 723 -#define SPECIES_DECIDUEYE 724 -#define SPECIES_LITTEN 725 -#define SPECIES_TORRACAT 726 -#define SPECIES_INCINEROAR 727 -#define SPECIES_POPPLIO 728 -#define SPECIES_BRIONNE 729 -#define SPECIES_PRIMARINA 730 -#define SPECIES_PIKIPEK 731 -#define SPECIES_TRUMBEAK 732 -#define SPECIES_TOUCANNON 733 -#define SPECIES_YUNGOOS 734 -#define SPECIES_GUMSHOOS 735 -#define SPECIES_GRUBBIN 736 -#define SPECIES_CHARJABUG 737 -#define SPECIES_VIKAVOLT 738 -#define SPECIES_CRABRAWLER 739 -#define SPECIES_CRABOMINABLE 740 -#define SPECIES_ORICORIO 741 -#define SPECIES_CUTIEFLY 742 -#define SPECIES_RIBOMBEE 743 -#define SPECIES_ROCKRUFF 744 -#define SPECIES_LYCANROC 745 -#define SPECIES_WISHIWASHI 746 -#define SPECIES_MAREANIE 747 -#define SPECIES_TOXAPEX 748 -#define SPECIES_MUDBRAY 749 -#define SPECIES_MUDSDALE 750 -#define SPECIES_DEWPIDER 751 -#define SPECIES_ARAQUANID 752 -#define SPECIES_FOMANTIS 753 -#define SPECIES_LURANTIS 754 -#define SPECIES_MORELULL 755 -#define SPECIES_SHIINOTIC 756 -#define SPECIES_SALANDIT 757 -#define SPECIES_SALAZZLE 758 -#define SPECIES_STUFFUL 759 -#define SPECIES_BEWEAR 760 -#define SPECIES_BOUNSWEET 761 -#define SPECIES_STEENEE 762 -#define SPECIES_TSAREENA 763 -#define SPECIES_COMFEY 764 -#define SPECIES_ORANGURU 765 -#define SPECIES_PASSIMIAN 766 -#define SPECIES_WIMPOD 767 -#define SPECIES_GOLISOPOD 768 -#define SPECIES_SANDYGAST 769 -#define SPECIES_PALOSSAND 770 -#define SPECIES_PYUKUMUKU 771 -#define SPECIES_TYPE_NULL 772 -#define SPECIES_SILVALLY 773 -#define SPECIES_MINIOR 774 -#define SPECIES_KOMALA 775 -#define SPECIES_TURTONATOR 776 -#define SPECIES_TOGEDEMARU 777 -#define SPECIES_MIMIKYU 778 -#define SPECIES_BRUXISH 779 -#define SPECIES_DRAMPA 780 -#define SPECIES_DHELMISE 781 -#define SPECIES_JANGMO_O 782 -#define SPECIES_HAKAMO_O 783 -#define SPECIES_KOMMO_O 784 -#define SPECIES_TAPU_KOKO 785 -#define SPECIES_TAPU_LELE 786 -#define SPECIES_TAPU_BULU 787 -#define SPECIES_TAPU_FINI 788 -#define SPECIES_COSMOG 789 -#define SPECIES_COSMOEM 790 -#define SPECIES_SOLGALEO 791 -#define SPECIES_LUNALA 792 -#define SPECIES_NIHILEGO 793 -#define SPECIES_BUZZWOLE 794 -#define SPECIES_PHEROMOSA 795 -#define SPECIES_XURKITREE 796 -#define SPECIES_CELESTEELA 797 -#define SPECIES_KARTANA 798 -#define SPECIES_GUZZLORD 799 -#define SPECIES_NECROZMA 800 -#define SPECIES_MAGEARNA 801 -#define SPECIES_MARSHADOW 802 -#define SPECIES_POIPOLE 803 -#define SPECIES_NAGANADEL 804 -#define SPECIES_STAKATAKA 805 -#define SPECIES_BLACEPHALON 806 -#define SPECIES_ZERAORA 807 -#define SPECIES_MELTAN 808 -#define SPECIES_MELMETAL 809 -#define SPECIES_GROOKEY 810 -#define SPECIES_THWACKEY 811 -#define SPECIES_RILLABOOM 812 -#define SPECIES_SCORBUNNY 813 -#define SPECIES_RABOOT 814 -#define SPECIES_CINDERACE 815 -#define SPECIES_SOBBLE 816 -#define SPECIES_DRIZZILE 817 -#define SPECIES_INTELEON 818 -#define SPECIES_SKWOVET 819 -#define SPECIES_GREEDENT 820 -#define SPECIES_ROOKIDEE 821 -#define SPECIES_CORVISQUIRE 822 -#define SPECIES_CORVIKNIGHT 823 -#define SPECIES_BLIPBUG 824 -#define SPECIES_DOTTLER 825 -#define SPECIES_ORBEETLE 826 -#define SPECIES_NICKIT 827 -#define SPECIES_THIEVUL 828 -#define SPECIES_GOSSIFLEUR 829 -#define SPECIES_ELDEGOSS 830 -#define SPECIES_WOOLOO 831 -#define SPECIES_DUBWOOL 832 -#define SPECIES_CHEWTLE 833 -#define SPECIES_DREDNAW 834 -#define SPECIES_YAMPER 835 -#define SPECIES_BOLTUND 836 -#define SPECIES_ROLYCOLY 837 -#define SPECIES_CARKOL 838 -#define SPECIES_COALOSSAL 839 -#define SPECIES_APPLIN 840 -#define SPECIES_FLAPPLE 841 -#define SPECIES_APPLETUN 842 -#define SPECIES_SILICOBRA 843 -#define SPECIES_SANDACONDA 844 -#define SPECIES_CRAMORANT 845 -#define SPECIES_ARROKUDA 846 -#define SPECIES_BARRASKEWDA 847 -#define SPECIES_TOXEL 848 -#define SPECIES_TOXTRICITY 849 -#define SPECIES_SIZZLIPEDE 850 -#define SPECIES_CENTISKORCH 851 -#define SPECIES_CLOBBOPUS 852 -#define SPECIES_GRAPPLOCT 853 -#define SPECIES_SINISTEA 854 -#define SPECIES_POLTEAGEIST 855 -#define SPECIES_HATENNA 856 -#define SPECIES_HATTREM 857 -#define SPECIES_HATTERENE 858 -#define SPECIES_IMPIDIMP 859 -#define SPECIES_MORGREM 860 -#define SPECIES_GRIMMSNARL 861 -#define SPECIES_OBSTAGOON 862 -#define SPECIES_PERRSERKER 863 -#define SPECIES_CURSOLA 864 -#define SPECIES_SIRFETCHD 865 -#define SPECIES_MR_RIME 866 -#define SPECIES_RUNERIGUS 867 -#define SPECIES_MILCERY 868 -#define SPECIES_ALCREMIE 869 -#define SPECIES_FALINKS 870 -#define SPECIES_PINCURCHIN 871 -#define SPECIES_SNOM 872 -#define SPECIES_FROSMOTH 873 -#define SPECIES_STONJOURNER 874 -#define SPECIES_EISCUE 875 -#define SPECIES_INDEEDEE 876 -#define SPECIES_MORPEKO 877 -#define SPECIES_CUFANT 878 -#define SPECIES_COPPERAJAH 879 -#define SPECIES_DRACOZOLT 880 -#define SPECIES_ARCTOZOLT 881 -#define SPECIES_DRACOVISH 882 -#define SPECIES_ARCTOVISH 883 -#define SPECIES_DURALUDON 884 -#define SPECIES_DREEPY 885 -#define SPECIES_DRAKLOAK 886 -#define SPECIES_DRAGAPULT 887 -#define SPECIES_ZACIAN 888 -#define SPECIES_ZAMAZENTA 889 -#define SPECIES_ETERNATUS 890 -#define SPECIES_KUBFU 891 -#define SPECIES_URSHIFU 892 -#define SPECIES_ZARUDE 893 -#define SPECIES_REGIELEKI 894 -#define SPECIES_REGIDRAGO 895 -#define SPECIES_GLASTRIER 896 -#define SPECIES_SPECTRIER 897 -#define SPECIES_CALYREX 898 -#define SPECIES_WYRDEER 899 -#define SPECIES_KLEAVOR 900 -#define SPECIES_URSALUNA 901 -#define SPECIES_BASCULEGION 902 -#define SPECIES_SNEASLER 903 -#define SPECIES_OVERQWIL 904 -#define SPECIES_ENAMORUS 905 +#define SPECIES_NONE 0 +#define SPECIES_BULBASAUR 1 +#define SPECIES_IVYSAUR 2 +#define SPECIES_VENUSAUR 3 +#define SPECIES_CHARMANDER 4 +#define SPECIES_CHARMELEON 5 +#define SPECIES_CHARIZARD 6 +#define SPECIES_SQUIRTLE 7 +#define SPECIES_WARTORTLE 8 +#define SPECIES_BLASTOISE 9 +#define SPECIES_CATERPIE 10 +#define SPECIES_METAPOD 11 +#define SPECIES_BUTTERFREE 12 +#define SPECIES_WEEDLE 13 +#define SPECIES_KAKUNA 14 +#define SPECIES_BEEDRILL 15 +#define SPECIES_PIDGEY 16 +#define SPECIES_PIDGEOTTO 17 +#define SPECIES_PIDGEOT 18 +#define SPECIES_RATTATA 19 +#define SPECIES_RATICATE 20 +#define SPECIES_SPEAROW 21 +#define SPECIES_FEAROW 22 +#define SPECIES_EKANS 23 +#define SPECIES_ARBOK 24 +#define SPECIES_PIKACHU 25 +#define SPECIES_RAICHU 26 +#define SPECIES_SANDSHREW 27 +#define SPECIES_SANDSLASH 28 +#define SPECIES_NIDORAN_F 29 +#define SPECIES_NIDORINA 30 +#define SPECIES_NIDOQUEEN 31 +#define SPECIES_NIDORAN_M 32 +#define SPECIES_NIDORINO 33 +#define SPECIES_NIDOKING 34 +#define SPECIES_CLEFAIRY 35 +#define SPECIES_CLEFABLE 36 +#define SPECIES_VULPIX 37 +#define SPECIES_NINETALES 38 +#define SPECIES_JIGGLYPUFF 39 +#define SPECIES_WIGGLYTUFF 40 +#define SPECIES_ZUBAT 41 +#define SPECIES_GOLBAT 42 +#define SPECIES_ODDISH 43 +#define SPECIES_GLOOM 44 +#define SPECIES_VILEPLUME 45 +#define SPECIES_PARAS 46 +#define SPECIES_PARASECT 47 +#define SPECIES_VENONAT 48 +#define SPECIES_VENOMOTH 49 +#define SPECIES_DIGLETT 50 +#define SPECIES_DUGTRIO 51 +#define SPECIES_MEOWTH 52 +#define SPECIES_PERSIAN 53 +#define SPECIES_PSYDUCK 54 +#define SPECIES_GOLDUCK 55 +#define SPECIES_MANKEY 56 +#define SPECIES_PRIMEAPE 57 +#define SPECIES_GROWLITHE 58 +#define SPECIES_ARCANINE 59 +#define SPECIES_POLIWAG 60 +#define SPECIES_POLIWHIRL 61 +#define SPECIES_POLIWRATH 62 +#define SPECIES_ABRA 63 +#define SPECIES_KADABRA 64 +#define SPECIES_ALAKAZAM 65 +#define SPECIES_MACHOP 66 +#define SPECIES_MACHOKE 67 +#define SPECIES_MACHAMP 68 +#define SPECIES_BELLSPROUT 69 +#define SPECIES_WEEPINBELL 70 +#define SPECIES_VICTREEBEL 71 +#define SPECIES_TENTACOOL 72 +#define SPECIES_TENTACRUEL 73 +#define SPECIES_GEODUDE 74 +#define SPECIES_GRAVELER 75 +#define SPECIES_GOLEM 76 +#define SPECIES_PONYTA 77 +#define SPECIES_RAPIDASH 78 +#define SPECIES_SLOWPOKE 79 +#define SPECIES_SLOWBRO 80 +#define SPECIES_MAGNEMITE 81 +#define SPECIES_MAGNETON 82 +#define SPECIES_FARFETCHD 83 +#define SPECIES_DODUO 84 +#define SPECIES_DODRIO 85 +#define SPECIES_SEEL 86 +#define SPECIES_DEWGONG 87 +#define SPECIES_GRIMER 88 +#define SPECIES_MUK 89 +#define SPECIES_SHELLDER 90 +#define SPECIES_CLOYSTER 91 +#define SPECIES_GASTLY 92 +#define SPECIES_HAUNTER 93 +#define SPECIES_GENGAR 94 +#define SPECIES_ONIX 95 +#define SPECIES_DROWZEE 96 +#define SPECIES_HYPNO 97 +#define SPECIES_KRABBY 98 +#define SPECIES_KINGLER 99 +#define SPECIES_VOLTORB 100 +#define SPECIES_ELECTRODE 101 +#define SPECIES_EXEGGCUTE 102 +#define SPECIES_EXEGGUTOR 103 +#define SPECIES_CUBONE 104 +#define SPECIES_MAROWAK 105 +#define SPECIES_HITMONLEE 106 +#define SPECIES_HITMONCHAN 107 +#define SPECIES_LICKITUNG 108 +#define SPECIES_KOFFING 109 +#define SPECIES_WEEZING 110 +#define SPECIES_RHYHORN 111 +#define SPECIES_RHYDON 112 +#define SPECIES_CHANSEY 113 +#define SPECIES_TANGELA 114 +#define SPECIES_KANGASKHAN 115 +#define SPECIES_HORSEA 116 +#define SPECIES_SEADRA 117 +#define SPECIES_GOLDEEN 118 +#define SPECIES_SEAKING 119 +#define SPECIES_STARYU 120 +#define SPECIES_STARMIE 121 +#define SPECIES_MR_MIME 122 +#define SPECIES_SCYTHER 123 +#define SPECIES_JYNX 124 +#define SPECIES_ELECTABUZZ 125 +#define SPECIES_MAGMAR 126 +#define SPECIES_PINSIR 127 +#define SPECIES_TAUROS 128 +#define SPECIES_MAGIKARP 129 +#define SPECIES_GYARADOS 130 +#define SPECIES_LAPRAS 131 +#define SPECIES_DITTO 132 +#define SPECIES_EEVEE 133 +#define SPECIES_VAPOREON 134 +#define SPECIES_JOLTEON 135 +#define SPECIES_FLAREON 136 +#define SPECIES_PORYGON 137 +#define SPECIES_OMANYTE 138 +#define SPECIES_OMASTAR 139 +#define SPECIES_KABUTO 140 +#define SPECIES_KABUTOPS 141 +#define SPECIES_AERODACTYL 142 +#define SPECIES_SNORLAX 143 +#define SPECIES_ARTICUNO 144 +#define SPECIES_ZAPDOS 145 +#define SPECIES_MOLTRES 146 +#define SPECIES_DRATINI 147 +#define SPECIES_DRAGONAIR 148 +#define SPECIES_DRAGONITE 149 +#define SPECIES_MEWTWO 150 +#define SPECIES_MEW 151 +#define SPECIES_CHIKORITA 152 +#define SPECIES_BAYLEEF 153 +#define SPECIES_MEGANIUM 154 +#define SPECIES_CYNDAQUIL 155 +#define SPECIES_QUILAVA 156 +#define SPECIES_TYPHLOSION 157 +#define SPECIES_TOTODILE 158 +#define SPECIES_CROCONAW 159 +#define SPECIES_FERALIGATR 160 +#define SPECIES_SENTRET 161 +#define SPECIES_FURRET 162 +#define SPECIES_HOOTHOOT 163 +#define SPECIES_NOCTOWL 164 +#define SPECIES_LEDYBA 165 +#define SPECIES_LEDIAN 166 +#define SPECIES_SPINARAK 167 +#define SPECIES_ARIADOS 168 +#define SPECIES_CROBAT 169 +#define SPECIES_CHINCHOU 170 +#define SPECIES_LANTURN 171 +#define SPECIES_PICHU 172 +#define SPECIES_CLEFFA 173 +#define SPECIES_IGGLYBUFF 174 +#define SPECIES_TOGEPI 175 +#define SPECIES_TOGETIC 176 +#define SPECIES_NATU 177 +#define SPECIES_XATU 178 +#define SPECIES_MAREEP 179 +#define SPECIES_FLAAFFY 180 +#define SPECIES_AMPHAROS 181 +#define SPECIES_BELLOSSOM 182 +#define SPECIES_MARILL 183 +#define SPECIES_AZUMARILL 184 +#define SPECIES_SUDOWOODO 185 +#define SPECIES_POLITOED 186 +#define SPECIES_HOPPIP 187 +#define SPECIES_SKIPLOOM 188 +#define SPECIES_JUMPLUFF 189 +#define SPECIES_AIPOM 190 +#define SPECIES_SUNKERN 191 +#define SPECIES_SUNFLORA 192 +#define SPECIES_YANMA 193 +#define SPECIES_WOOPER 194 +#define SPECIES_QUAGSIRE 195 +#define SPECIES_ESPEON 196 +#define SPECIES_UMBREON 197 +#define SPECIES_MURKROW 198 +#define SPECIES_SLOWKING 199 +#define SPECIES_MISDREAVUS 200 +#define SPECIES_UNOWN 201 +#define SPECIES_WOBBUFFET 202 +#define SPECIES_GIRAFARIG 203 +#define SPECIES_PINECO 204 +#define SPECIES_FORRETRESS 205 +#define SPECIES_DUNSPARCE 206 +#define SPECIES_GLIGAR 207 +#define SPECIES_STEELIX 208 +#define SPECIES_SNUBBULL 209 +#define SPECIES_GRANBULL 210 +#define SPECIES_QWILFISH 211 +#define SPECIES_SCIZOR 212 +#define SPECIES_SHUCKLE 213 +#define SPECIES_HERACROSS 214 +#define SPECIES_SNEASEL 215 +#define SPECIES_TEDDIURSA 216 +#define SPECIES_URSARING 217 +#define SPECIES_SLUGMA 218 +#define SPECIES_MAGCARGO 219 +#define SPECIES_SWINUB 220 +#define SPECIES_PILOSWINE 221 +#define SPECIES_CORSOLA 222 +#define SPECIES_REMORAID 223 +#define SPECIES_OCTILLERY 224 +#define SPECIES_DELIBIRD 225 +#define SPECIES_MANTINE 226 +#define SPECIES_SKARMORY 227 +#define SPECIES_HOUNDOUR 228 +#define SPECIES_HOUNDOOM 229 +#define SPECIES_KINGDRA 230 +#define SPECIES_PHANPY 231 +#define SPECIES_DONPHAN 232 +#define SPECIES_PORYGON2 233 +#define SPECIES_STANTLER 234 +#define SPECIES_SMEARGLE 235 +#define SPECIES_TYROGUE 236 +#define SPECIES_HITMONTOP 237 +#define SPECIES_SMOOCHUM 238 +#define SPECIES_ELEKID 239 +#define SPECIES_MAGBY 240 +#define SPECIES_MILTANK 241 +#define SPECIES_BLISSEY 242 +#define SPECIES_RAIKOU 243 +#define SPECIES_ENTEI 244 +#define SPECIES_SUICUNE 245 +#define SPECIES_LARVITAR 246 +#define SPECIES_PUPITAR 247 +#define SPECIES_TYRANITAR 248 +#define SPECIES_LUGIA 249 +#define SPECIES_HO_OH 250 +#define SPECIES_CELEBI 251 +#define SPECIES_TREECKO 252 +#define SPECIES_GROVYLE 253 +#define SPECIES_SCEPTILE 254 +#define SPECIES_TORCHIC 255 +#define SPECIES_COMBUSKEN 256 +#define SPECIES_BLAZIKEN 257 +#define SPECIES_MUDKIP 258 +#define SPECIES_MARSHTOMP 259 +#define SPECIES_SWAMPERT 260 +#define SPECIES_POOCHYENA 261 +#define SPECIES_MIGHTYENA 262 +#define SPECIES_ZIGZAGOON 263 +#define SPECIES_LINOONE 264 +#define SPECIES_WURMPLE 265 +#define SPECIES_SILCOON 266 +#define SPECIES_BEAUTIFLY 267 +#define SPECIES_CASCOON 268 +#define SPECIES_DUSTOX 269 +#define SPECIES_LOTAD 270 +#define SPECIES_LOMBRE 271 +#define SPECIES_LUDICOLO 272 +#define SPECIES_SEEDOT 273 +#define SPECIES_NUZLEAF 274 +#define SPECIES_SHIFTRY 275 +#define SPECIES_TAILLOW 276 +#define SPECIES_SWELLOW 277 +#define SPECIES_WINGULL 278 +#define SPECIES_PELIPPER 279 +#define SPECIES_RALTS 280 +#define SPECIES_KIRLIA 281 +#define SPECIES_GARDEVOIR 282 +#define SPECIES_SURSKIT 283 +#define SPECIES_MASQUERAIN 284 +#define SPECIES_SHROOMISH 285 +#define SPECIES_BRELOOM 286 +#define SPECIES_SLAKOTH 287 +#define SPECIES_VIGOROTH 288 +#define SPECIES_SLAKING 289 +#define SPECIES_NINCADA 290 +#define SPECIES_NINJASK 291 +#define SPECIES_SHEDINJA 292 +#define SPECIES_WHISMUR 293 +#define SPECIES_LOUDRED 294 +#define SPECIES_EXPLOUD 295 +#define SPECIES_MAKUHITA 296 +#define SPECIES_HARIYAMA 297 +#define SPECIES_AZURILL 298 +#define SPECIES_NOSEPASS 299 +#define SPECIES_SKITTY 300 +#define SPECIES_DELCATTY 301 +#define SPECIES_SABLEYE 302 +#define SPECIES_MAWILE 303 +#define SPECIES_ARON 304 +#define SPECIES_LAIRON 305 +#define SPECIES_AGGRON 306 +#define SPECIES_MEDITITE 307 +#define SPECIES_MEDICHAM 308 +#define SPECIES_ELECTRIKE 309 +#define SPECIES_MANECTRIC 310 +#define SPECIES_PLUSLE 311 +#define SPECIES_MINUN 312 +#define SPECIES_VOLBEAT 313 +#define SPECIES_ILLUMISE 314 +#define SPECIES_ROSELIA 315 +#define SPECIES_GULPIN 316 +#define SPECIES_SWALOT 317 +#define SPECIES_CARVANHA 318 +#define SPECIES_SHARPEDO 319 +#define SPECIES_WAILMER 320 +#define SPECIES_WAILORD 321 +#define SPECIES_NUMEL 322 +#define SPECIES_CAMERUPT 323 +#define SPECIES_TORKOAL 324 +#define SPECIES_SPOINK 325 +#define SPECIES_GRUMPIG 326 +#define SPECIES_SPINDA 327 +#define SPECIES_TRAPINCH 328 +#define SPECIES_VIBRAVA 329 +#define SPECIES_FLYGON 330 +#define SPECIES_CACNEA 331 +#define SPECIES_CACTURNE 332 +#define SPECIES_SWABLU 333 +#define SPECIES_ALTARIA 334 +#define SPECIES_ZANGOOSE 335 +#define SPECIES_SEVIPER 336 +#define SPECIES_LUNATONE 337 +#define SPECIES_SOLROCK 338 +#define SPECIES_BARBOACH 339 +#define SPECIES_WHISCASH 340 +#define SPECIES_CORPHISH 341 +#define SPECIES_CRAWDAUNT 342 +#define SPECIES_BALTOY 343 +#define SPECIES_CLAYDOL 344 +#define SPECIES_LILEEP 345 +#define SPECIES_CRADILY 346 +#define SPECIES_ANORITH 347 +#define SPECIES_ARMALDO 348 +#define SPECIES_FEEBAS 349 +#define SPECIES_MILOTIC 350 +#define SPECIES_CASTFORM SPECIES_CASTFORM_NORMAL +#define SPECIES_CASTFORM_NORMAL 351 +#define SPECIES_KECLEON 352 +#define SPECIES_SHUPPET 353 +#define SPECIES_BANETTE 354 +#define SPECIES_DUSKULL 355 +#define SPECIES_DUSCLOPS 356 +#define SPECIES_TROPIUS 357 +#define SPECIES_CHIMECHO 358 +#define SPECIES_ABSOL 359 +#define SPECIES_WYNAUT 360 +#define SPECIES_SNORUNT 361 +#define SPECIES_GLALIE 362 +#define SPECIES_SPHEAL 363 +#define SPECIES_SEALEO 364 +#define SPECIES_WALREIN 365 +#define SPECIES_CLAMPERL 366 +#define SPECIES_HUNTAIL 367 +#define SPECIES_GOREBYSS 368 +#define SPECIES_RELICANTH 369 +#define SPECIES_LUVDISC 370 +#define SPECIES_BAGON 371 +#define SPECIES_SHELGON 372 +#define SPECIES_SALAMENCE 373 +#define SPECIES_BELDUM 374 +#define SPECIES_METANG 375 +#define SPECIES_METAGROSS 376 +#define SPECIES_REGIROCK 377 +#define SPECIES_REGICE 378 +#define SPECIES_REGISTEEL 379 +#define SPECIES_LATIAS 380 +#define SPECIES_LATIOS 381 +#define SPECIES_KYOGRE 382 +#define SPECIES_GROUDON 383 +#define SPECIES_RAYQUAZA 384 +#define SPECIES_JIRACHI 385 +#define SPECIES_DEOXYS SPECIES_DEOXYS_NORMAL +#define SPECIES_DEOXYS_NORMAL 386 +#define SPECIES_TURTWIG 387 +#define SPECIES_GROTLE 388 +#define SPECIES_TORTERRA 389 +#define SPECIES_CHIMCHAR 390 +#define SPECIES_MONFERNO 391 +#define SPECIES_INFERNAPE 392 +#define SPECIES_PIPLUP 393 +#define SPECIES_PRINPLUP 394 +#define SPECIES_EMPOLEON 395 +#define SPECIES_STARLY 396 +#define SPECIES_STARAVIA 397 +#define SPECIES_STARAPTOR 398 +#define SPECIES_BIDOOF 399 +#define SPECIES_BIBAREL 400 +#define SPECIES_KRICKETOT 401 +#define SPECIES_KRICKETUNE 402 +#define SPECIES_SHINX 403 +#define SPECIES_LUXIO 404 +#define SPECIES_LUXRAY 405 +#define SPECIES_BUDEW 406 +#define SPECIES_ROSERADE 407 +#define SPECIES_CRANIDOS 408 +#define SPECIES_RAMPARDOS 409 +#define SPECIES_SHIELDON 410 +#define SPECIES_BASTIODON 411 +#define SPECIES_BURMY SPECIES_BURMY_PLANT_CLOAK +#define SPECIES_BURMY_PLANT_CLOAK 412 +#define SPECIES_WORMADAM SPECIES_WORMADAM_PLANT_CLOAK +#define SPECIES_WORMADAM_PLANT_CLOAK 413 +#define SPECIES_MOTHIM 414 +#define SPECIES_COMBEE 415 +#define SPECIES_VESPIQUEN 416 +#define SPECIES_PACHIRISU 417 +#define SPECIES_BUIZEL 418 +#define SPECIES_FLOATZEL 419 +#define SPECIES_CHERUBI 420 +#define SPECIES_CHERRIM SPECIES_CHERRIM_OVERCAST +#define SPECIES_CHERRIM_OVERCAST 421 +#define SPECIES_SHELLOS SPECIES_SHELLOS_WEST_SEA +#define SPECIES_SHELLOS_WEST_SEA 422 +#define SPECIES_GASTRODON SPECIES_GASTRODON_WEST_SEA +#define SPECIES_GASTRODON_WEST_SEA 423 +#define SPECIES_AMBIPOM 424 +#define SPECIES_DRIFLOON 425 +#define SPECIES_DRIFBLIM 426 +#define SPECIES_BUNEARY 427 +#define SPECIES_LOPUNNY 428 +#define SPECIES_MISMAGIUS 429 +#define SPECIES_HONCHKROW 430 +#define SPECIES_GLAMEOW 431 +#define SPECIES_PURUGLY 432 +#define SPECIES_CHINGLING 433 +#define SPECIES_STUNKY 434 +#define SPECIES_SKUNTANK 435 +#define SPECIES_BRONZOR 436 +#define SPECIES_BRONZONG 437 +#define SPECIES_BONSLY 438 +#define SPECIES_MIME_JR 439 +#define SPECIES_HAPPINY 440 +#define SPECIES_CHATOT 441 +#define SPECIES_SPIRITOMB 442 +#define SPECIES_GIBLE 443 +#define SPECIES_GABITE 444 +#define SPECIES_GARCHOMP 445 +#define SPECIES_MUNCHLAX 446 +#define SPECIES_RIOLU 447 +#define SPECIES_LUCARIO 448 +#define SPECIES_HIPPOPOTAS 449 +#define SPECIES_HIPPOWDON 450 +#define SPECIES_SKORUPI 451 +#define SPECIES_DRAPION 452 +#define SPECIES_CROAGUNK 453 +#define SPECIES_TOXICROAK 454 +#define SPECIES_CARNIVINE 455 +#define SPECIES_FINNEON 456 +#define SPECIES_LUMINEON 457 +#define SPECIES_MANTYKE 458 +#define SPECIES_SNOVER 459 +#define SPECIES_ABOMASNOW 460 +#define SPECIES_WEAVILE 461 +#define SPECIES_MAGNEZONE 462 +#define SPECIES_LICKILICKY 463 +#define SPECIES_RHYPERIOR 464 +#define SPECIES_TANGROWTH 465 +#define SPECIES_ELECTIVIRE 466 +#define SPECIES_MAGMORTAR 467 +#define SPECIES_TOGEKISS 468 +#define SPECIES_YANMEGA 469 +#define SPECIES_LEAFEON 470 +#define SPECIES_GLACEON 471 +#define SPECIES_GLISCOR 472 +#define SPECIES_MAMOSWINE 473 +#define SPECIES_PORYGON_Z 474 +#define SPECIES_GALLADE 475 +#define SPECIES_PROBOPASS 476 +#define SPECIES_DUSKNOIR 477 +#define SPECIES_FROSLASS 478 +#define SPECIES_ROTOM 479 +#define SPECIES_UXIE 480 +#define SPECIES_MESPRIT 481 +#define SPECIES_AZELF 482 +#define SPECIES_DIALGA 483 +#define SPECIES_PALKIA 484 +#define SPECIES_HEATRAN 485 +#define SPECIES_REGIGIGAS 486 +#define SPECIES_GIRATINA SPECIES_GIRATINA_ALTERED +#define SPECIES_GIRATINA_ALTERED 487 +#define SPECIES_CRESSELIA 488 +#define SPECIES_PHIONE 489 +#define SPECIES_MANAPHY 490 +#define SPECIES_DARKRAI 491 +#define SPECIES_SHAYMIN SPECIES_SHAYMIN_LAND +#define SPECIES_SHAYMIN_LAND 492 +#define SPECIES_ARCEUS SPECIES_ARCEUS_NORMAL +#define SPECIES_ARCEUS_NORMAL 493 +#define SPECIES_VICTINI 494 +#define SPECIES_SNIVY 495 +#define SPECIES_SERVINE 496 +#define SPECIES_SERPERIOR 497 +#define SPECIES_TEPIG 498 +#define SPECIES_PIGNITE 499 +#define SPECIES_EMBOAR 500 +#define SPECIES_OSHAWOTT 501 +#define SPECIES_DEWOTT 502 +#define SPECIES_SAMUROTT 503 +#define SPECIES_PATRAT 504 +#define SPECIES_WATCHOG 505 +#define SPECIES_LILLIPUP 506 +#define SPECIES_HERDIER 507 +#define SPECIES_STOUTLAND 508 +#define SPECIES_PURRLOIN 509 +#define SPECIES_LIEPARD 510 +#define SPECIES_PANSAGE 511 +#define SPECIES_SIMISAGE 512 +#define SPECIES_PANSEAR 513 +#define SPECIES_SIMISEAR 514 +#define SPECIES_PANPOUR 515 +#define SPECIES_SIMIPOUR 516 +#define SPECIES_MUNNA 517 +#define SPECIES_MUSHARNA 518 +#define SPECIES_PIDOVE 519 +#define SPECIES_TRANQUILL 520 +#define SPECIES_UNFEZANT 521 +#define SPECIES_BLITZLE 522 +#define SPECIES_ZEBSTRIKA 523 +#define SPECIES_ROGGENROLA 524 +#define SPECIES_BOLDORE 525 +#define SPECIES_GIGALITH 526 +#define SPECIES_WOOBAT 527 +#define SPECIES_SWOOBAT 528 +#define SPECIES_DRILBUR 529 +#define SPECIES_EXCADRILL 530 +#define SPECIES_AUDINO 531 +#define SPECIES_TIMBURR 532 +#define SPECIES_GURDURR 533 +#define SPECIES_CONKELDURR 534 +#define SPECIES_TYMPOLE 535 +#define SPECIES_PALPITOAD 536 +#define SPECIES_SEISMITOAD 537 +#define SPECIES_THROH 538 +#define SPECIES_SAWK 539 +#define SPECIES_SEWADDLE 540 +#define SPECIES_SWADLOON 541 +#define SPECIES_LEAVANNY 542 +#define SPECIES_VENIPEDE 543 +#define SPECIES_WHIRLIPEDE 544 +#define SPECIES_SCOLIPEDE 545 +#define SPECIES_COTTONEE 546 +#define SPECIES_WHIMSICOTT 547 +#define SPECIES_PETILIL 548 +#define SPECIES_LILLIGANT 549 +#define SPECIES_BASCULIN SPECIES_BASCULIN_RED_STRIPED +#define SPECIES_BASCULIN_RED_STRIPED 550 +#define SPECIES_SANDILE 551 +#define SPECIES_KROKOROK 552 +#define SPECIES_KROOKODILE 553 +#define SPECIES_DARUMAKA 554 +#define SPECIES_DARMANITAN SPECIES_DARMANITAN_STANDARD_MODE +#define SPECIES_DARMANITAN_STANDARD_MODE 555 +#define SPECIES_MARACTUS 556 +#define SPECIES_DWEBBLE 557 +#define SPECIES_CRUSTLE 558 +#define SPECIES_SCRAGGY 559 +#define SPECIES_SCRAFTY 560 +#define SPECIES_SIGILYPH 561 +#define SPECIES_YAMASK 562 +#define SPECIES_COFAGRIGUS 563 +#define SPECIES_TIRTOUGA 564 +#define SPECIES_CARRACOSTA 565 +#define SPECIES_ARCHEN 566 +#define SPECIES_ARCHEOPS 567 +#define SPECIES_TRUBBISH 568 +#define SPECIES_GARBODOR 569 +#define SPECIES_ZORUA 570 +#define SPECIES_ZOROARK 571 +#define SPECIES_MINCCINO 572 +#define SPECIES_CINCCINO 573 +#define SPECIES_GOTHITA 574 +#define SPECIES_GOTHORITA 575 +#define SPECIES_GOTHITELLE 576 +#define SPECIES_SOLOSIS 577 +#define SPECIES_DUOSION 578 +#define SPECIES_REUNICLUS 579 +#define SPECIES_DUCKLETT 580 +#define SPECIES_SWANNA 581 +#define SPECIES_VANILLITE 582 +#define SPECIES_VANILLISH 583 +#define SPECIES_VANILLUXE 584 +#define SPECIES_DEERLING SPECIES_DEERLING_SPRING +#define SPECIES_DEERLING_SPRING 585 +#define SPECIES_SAWSBUCK SPECIES_SAWSBUCK_SPRING +#define SPECIES_SAWSBUCK_SPRING 586 +#define SPECIES_EMOLGA 587 +#define SPECIES_KARRABLAST 588 +#define SPECIES_ESCAVALIER 589 +#define SPECIES_FOONGUS 590 +#define SPECIES_AMOONGUSS 591 +#define SPECIES_FRILLISH 592 +#define SPECIES_JELLICENT 593 +#define SPECIES_ALOMOMOLA 594 +#define SPECIES_JOLTIK 595 +#define SPECIES_GALVANTULA 596 +#define SPECIES_FERROSEED 597 +#define SPECIES_FERROTHORN 598 +#define SPECIES_KLINK 599 +#define SPECIES_KLANG 600 +#define SPECIES_KLINKLANG 601 +#define SPECIES_TYNAMO 602 +#define SPECIES_EELEKTRIK 603 +#define SPECIES_EELEKTROSS 604 +#define SPECIES_ELGYEM 605 +#define SPECIES_BEHEEYEM 606 +#define SPECIES_LITWICK 607 +#define SPECIES_LAMPENT 608 +#define SPECIES_CHANDELURE 609 +#define SPECIES_AXEW 610 +#define SPECIES_FRAXURE 611 +#define SPECIES_HAXORUS 612 +#define SPECIES_CUBCHOO 613 +#define SPECIES_BEARTIC 614 +#define SPECIES_CRYOGONAL 615 +#define SPECIES_SHELMET 616 +#define SPECIES_ACCELGOR 617 +#define SPECIES_STUNFISK 618 +#define SPECIES_MIENFOO 619 +#define SPECIES_MIENSHAO 620 +#define SPECIES_DRUDDIGON 621 +#define SPECIES_GOLETT 622 +#define SPECIES_GOLURK 623 +#define SPECIES_PAWNIARD 624 +#define SPECIES_BISHARP 625 +#define SPECIES_BOUFFALANT 626 +#define SPECIES_RUFFLET 627 +#define SPECIES_BRAVIARY 628 +#define SPECIES_VULLABY 629 +#define SPECIES_MANDIBUZZ 630 +#define SPECIES_HEATMOR 631 +#define SPECIES_DURANT 632 +#define SPECIES_DEINO 633 +#define SPECIES_ZWEILOUS 634 +#define SPECIES_HYDREIGON 635 +#define SPECIES_LARVESTA 636 +#define SPECIES_VOLCARONA 637 +#define SPECIES_COBALION 638 +#define SPECIES_TERRAKION 639 +#define SPECIES_VIRIZION 640 +#define SPECIES_TORNADUS SPECIES_TORNADUS_INCARNATE +#define SPECIES_TORNADUS_INCARNATE 641 +#define SPECIES_THUNDURUS SPECIES_THUNDURUS_INCARNATE +#define SPECIES_THUNDURUS_INCARNATE 642 +#define SPECIES_RESHIRAM 643 +#define SPECIES_ZEKROM 644 +#define SPECIES_LANDORUS SPECIES_LANDORUS_INCARNATE +#define SPECIES_LANDORUS_INCARNATE 645 +#define SPECIES_KYUREM 646 +#define SPECIES_KELDEO SPECIES_KELDEO_ORDINARY +#define SPECIES_KELDEO_ORDINARY 647 +#define SPECIES_MELOETTA SPECIES_MELOETTA_ARIA +#define SPECIES_MELOETTA_ARIA 648 +#define SPECIES_GENESECT 649 +#define SPECIES_CHESPIN 650 +#define SPECIES_QUILLADIN 651 +#define SPECIES_CHESNAUGHT 652 +#define SPECIES_FENNEKIN 653 +#define SPECIES_BRAIXEN 654 +#define SPECIES_DELPHOX 655 +#define SPECIES_FROAKIE 656 +#define SPECIES_FROGADIER 657 +#define SPECIES_GRENINJA 658 +#define SPECIES_BUNNELBY 659 +#define SPECIES_DIGGERSBY 660 +#define SPECIES_FLETCHLING 661 +#define SPECIES_FLETCHINDER 662 +#define SPECIES_TALONFLAME 663 +#define SPECIES_SCATTERBUG 664 +#define SPECIES_SPEWPA 665 +#define SPECIES_VIVILLON SPECIES_VIVILLON_ICY_SNOW +#define SPECIES_VIVILLON_ICY_SNOW 666 +#define SPECIES_LITLEO 667 +#define SPECIES_PYROAR 668 +#define SPECIES_FLABEBE SPECIES_FLABEBE_RED_FLOWER +#define SPECIES_FLABEBE_RED_FLOWER 669 +#define SPECIES_FLOETTE SPECIES_FLOETTE_RED_FLOWER +#define SPECIES_FLOETTE_RED_FLOWER 670 +#define SPECIES_FLORGES SPECIES_FLORGES_RED_FLOWER +#define SPECIES_FLORGES_RED_FLOWER 671 +#define SPECIES_SKIDDO 672 +#define SPECIES_GOGOAT 673 +#define SPECIES_PANCHAM 674 +#define SPECIES_PANGORO 675 +#define SPECIES_FURFROU SPECIES_FURFROU_NATURAL +#define SPECIES_FURFROU_NATURAL 676 +#define SPECIES_ESPURR 677 +#define SPECIES_MEOWSTIC SPECIES_MEOWSTIC_MALE +#define SPECIES_MEOWSTIC_MALE 678 +#define SPECIES_HONEDGE 679 +#define SPECIES_DOUBLADE 680 +#define SPECIES_AEGISLASH SPECIES_AEGISLASH_SHIELD +#define SPECIES_AEGISLASH_SHIELD 681 +#define SPECIES_SPRITZEE 682 +#define SPECIES_AROMATISSE 683 +#define SPECIES_SWIRLIX 684 +#define SPECIES_SLURPUFF 685 +#define SPECIES_INKAY 686 +#define SPECIES_MALAMAR 687 +#define SPECIES_BINACLE 688 +#define SPECIES_BARBARACLE 689 +#define SPECIES_SKRELP 690 +#define SPECIES_DRAGALGE 691 +#define SPECIES_CLAUNCHER 692 +#define SPECIES_CLAWITZER 693 +#define SPECIES_HELIOPTILE 694 +#define SPECIES_HELIOLISK 695 +#define SPECIES_TYRUNT 696 +#define SPECIES_TYRANTRUM 697 +#define SPECIES_AMAURA 698 +#define SPECIES_AURORUS 699 +#define SPECIES_SYLVEON 700 +#define SPECIES_HAWLUCHA 701 +#define SPECIES_DEDENNE 702 +#define SPECIES_CARBINK 703 +#define SPECIES_GOOMY 704 +#define SPECIES_SLIGGOO 705 +#define SPECIES_GOODRA 706 +#define SPECIES_KLEFKI 707 +#define SPECIES_PHANTUMP 708 +#define SPECIES_TREVENANT 709 +#define SPECIES_PUMPKABOO SPECIES_PUMPKABOO_AVERAGE +#define SPECIES_PUMPKABOO_AVERAGE 710 +#define SPECIES_GOURGEIST SPECIES_GOURGEIST_AVERAGE +#define SPECIES_GOURGEIST_AVERAGE 711 +#define SPECIES_BERGMITE 712 +#define SPECIES_AVALUGG 713 +#define SPECIES_NOIBAT 714 +#define SPECIES_NOIVERN 715 +#define SPECIES_XERNEAS SPECIES_XERNEAS_NEUTRAL +#define SPECIES_XERNEAS_NEUTRAL 716 +#define SPECIES_YVELTAL 717 +#define SPECIES_ZYGARDE SPECIES_ZYGARDE_50 +#define SPECIES_ZYGARDE_50 SPECIES_ZYGARDE_50_AURA_BREAK +#define SPECIES_ZYGARDE_50_AURA_BREAK 718 +#define SPECIES_DIANCIE 719 +#define SPECIES_HOOPA SPECIES_HOOPA_CONFINED +#define SPECIES_HOOPA_CONFINED 720 +#define SPECIES_VOLCANION 721 +#define SPECIES_ROWLET 722 +#define SPECIES_DARTRIX 723 +#define SPECIES_DECIDUEYE 724 +#define SPECIES_LITTEN 725 +#define SPECIES_TORRACAT 726 +#define SPECIES_INCINEROAR 727 +#define SPECIES_POPPLIO 728 +#define SPECIES_BRIONNE 729 +#define SPECIES_PRIMARINA 730 +#define SPECIES_PIKIPEK 731 +#define SPECIES_TRUMBEAK 732 +#define SPECIES_TOUCANNON 733 +#define SPECIES_YUNGOOS 734 +#define SPECIES_GUMSHOOS 735 +#define SPECIES_GRUBBIN 736 +#define SPECIES_CHARJABUG 737 +#define SPECIES_VIKAVOLT 738 +#define SPECIES_CRABRAWLER 739 +#define SPECIES_CRABOMINABLE 740 +#define SPECIES_ORICORIO SPECIES_ORICORIO_BAILE +#define SPECIES_ORICORIO_BAILE 741 +#define SPECIES_CUTIEFLY 742 +#define SPECIES_RIBOMBEE 743 +#define SPECIES_ROCKRUFF 744 +#define SPECIES_LYCANROC SPECIES_LYCANROC_MIDDAY +#define SPECIES_LYCANROC_MIDDAY 745 +#define SPECIES_WISHIWASHI SPECIES_WISHIWASHI_SOLO +#define SPECIES_WISHIWASHI_SOLO 746 +#define SPECIES_MAREANIE 747 +#define SPECIES_TOXAPEX 748 +#define SPECIES_MUDBRAY 749 +#define SPECIES_MUDSDALE 750 +#define SPECIES_DEWPIDER 751 +#define SPECIES_ARAQUANID 752 +#define SPECIES_FOMANTIS 753 +#define SPECIES_LURANTIS 754 +#define SPECIES_MORELULL 755 +#define SPECIES_SHIINOTIC 756 +#define SPECIES_SALANDIT 757 +#define SPECIES_SALAZZLE 758 +#define SPECIES_STUFFUL 759 +#define SPECIES_BEWEAR 760 +#define SPECIES_BOUNSWEET 761 +#define SPECIES_STEENEE 762 +#define SPECIES_TSAREENA 763 +#define SPECIES_COMFEY 764 +#define SPECIES_ORANGURU 765 +#define SPECIES_PASSIMIAN 766 +#define SPECIES_WIMPOD 767 +#define SPECIES_GOLISOPOD 768 +#define SPECIES_SANDYGAST 769 +#define SPECIES_PALOSSAND 770 +#define SPECIES_PYUKUMUKU 771 +#define SPECIES_TYPE_NULL 772 +#define SPECIES_SILVALLY SPECIES_SILVALLY_NORMAL +#define SPECIES_SILVALLY_NORMAL 773 +#define SPECIES_MINIOR SPECIES_MINIOR_METEOR +#define SPECIES_MINIOR_METEOR SPECIES_MINIOR_METEOR_RED +#define SPECIES_MINIOR_METEOR_RED 774 +#define SPECIES_KOMALA 775 +#define SPECIES_TURTONATOR 776 +#define SPECIES_TOGEDEMARU 777 +#define SPECIES_MIMIKYU SPECIES_MIMIKYU_DISGUISED +#define SPECIES_MIMIKYU_DISGUISED 778 +#define SPECIES_BRUXISH 779 +#define SPECIES_DRAMPA 780 +#define SPECIES_DHELMISE 781 +#define SPECIES_JANGMO_O 782 +#define SPECIES_HAKAMO_O 783 +#define SPECIES_KOMMO_O 784 +#define SPECIES_TAPU_KOKO 785 +#define SPECIES_TAPU_LELE 786 +#define SPECIES_TAPU_BULU 787 +#define SPECIES_TAPU_FINI 788 +#define SPECIES_COSMOG 789 +#define SPECIES_COSMOEM 790 +#define SPECIES_SOLGALEO 791 +#define SPECIES_LUNALA 792 +#define SPECIES_NIHILEGO 793 +#define SPECIES_BUZZWOLE 794 +#define SPECIES_PHEROMOSA 795 +#define SPECIES_XURKITREE 796 +#define SPECIES_CELESTEELA 797 +#define SPECIES_KARTANA 798 +#define SPECIES_GUZZLORD 799 +#define SPECIES_NECROZMA 800 +#define SPECIES_MAGEARNA 801 +#define SPECIES_MARSHADOW 802 +#define SPECIES_POIPOLE 803 +#define SPECIES_NAGANADEL 804 +#define SPECIES_STAKATAKA 805 +#define SPECIES_BLACEPHALON 806 +#define SPECIES_ZERAORA 807 +#define SPECIES_MELTAN 808 +#define SPECIES_MELMETAL 809 +#define SPECIES_GROOKEY 810 +#define SPECIES_THWACKEY 811 +#define SPECIES_RILLABOOM 812 +#define SPECIES_SCORBUNNY 813 +#define SPECIES_RABOOT 814 +#define SPECIES_CINDERACE 815 +#define SPECIES_SOBBLE 816 +#define SPECIES_DRIZZILE 817 +#define SPECIES_INTELEON 818 +#define SPECIES_SKWOVET 819 +#define SPECIES_GREEDENT 820 +#define SPECIES_ROOKIDEE 821 +#define SPECIES_CORVISQUIRE 822 +#define SPECIES_CORVIKNIGHT 823 +#define SPECIES_BLIPBUG 824 +#define SPECIES_DOTTLER 825 +#define SPECIES_ORBEETLE 826 +#define SPECIES_NICKIT 827 +#define SPECIES_THIEVUL 828 +#define SPECIES_GOSSIFLEUR 829 +#define SPECIES_ELDEGOSS 830 +#define SPECIES_WOOLOO 831 +#define SPECIES_DUBWOOL 832 +#define SPECIES_CHEWTLE 833 +#define SPECIES_DREDNAW 834 +#define SPECIES_YAMPER 835 +#define SPECIES_BOLTUND 836 +#define SPECIES_ROLYCOLY 837 +#define SPECIES_CARKOL 838 +#define SPECIES_COALOSSAL 839 +#define SPECIES_APPLIN 840 +#define SPECIES_FLAPPLE 841 +#define SPECIES_APPLETUN 842 +#define SPECIES_SILICOBRA 843 +#define SPECIES_SANDACONDA 844 +#define SPECIES_CRAMORANT 845 +#define SPECIES_ARROKUDA 846 +#define SPECIES_BARRASKEWDA 847 +#define SPECIES_TOXEL 848 +#define SPECIES_TOXTRICITY SPECIES_TOXTRICITY_AMPED +#define SPECIES_TOXTRICITY_AMPED 849 +#define SPECIES_SIZZLIPEDE 850 +#define SPECIES_CENTISKORCH 851 +#define SPECIES_CLOBBOPUS 852 +#define SPECIES_GRAPPLOCT 853 +#define SPECIES_SINISTEA SPECIES_SINISTEA_PHONY +#define SPECIES_SINISTEA_PHONY 854 +#define SPECIES_POLTEAGEIST SPECIES_POLTEAGEIST_PHONY +#define SPECIES_POLTEAGEIST_PHONY 855 +#define SPECIES_HATENNA 856 +#define SPECIES_HATTREM 857 +#define SPECIES_HATTERENE 858 +#define SPECIES_IMPIDIMP 859 +#define SPECIES_MORGREM 860 +#define SPECIES_GRIMMSNARL 861 +#define SPECIES_OBSTAGOON 862 +#define SPECIES_PERRSERKER 863 +#define SPECIES_CURSOLA 864 +#define SPECIES_SIRFETCHD 865 +#define SPECIES_MR_RIME 866 +#define SPECIES_RUNERIGUS 867 +#define SPECIES_MILCERY 868 +#define SPECIES_ALCREMIE SPECIES_ALCREMIE_STRAWBERRY +#define SPECIES_ALCREMIE_STRAWBERRY SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_VANILLA_CREAM SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM 869 +#define SPECIES_FALINKS 870 +#define SPECIES_PINCURCHIN 871 +#define SPECIES_SNOM 872 +#define SPECIES_FROSMOTH 873 +#define SPECIES_STONJOURNER 874 +#define SPECIES_EISCUE SPECIES_EISCUE_ICE_FACE +#define SPECIES_EISCUE_ICE_FACE 875 +#define SPECIES_INDEEDEE SPECIES_INDEEDEE_MALE +#define SPECIES_INDEEDEE_MALE 876 +#define SPECIES_MORPEKO SPECIES_MORPEKO_FULL_BELLY +#define SPECIES_MORPEKO_FULL_BELLY 877 +#define SPECIES_CUFANT 878 +#define SPECIES_COPPERAJAH 879 +#define SPECIES_DRACOZOLT 880 +#define SPECIES_ARCTOZOLT 881 +#define SPECIES_DRACOVISH 882 +#define SPECIES_ARCTOVISH 883 +#define SPECIES_DURALUDON 884 +#define SPECIES_DREEPY 885 +#define SPECIES_DRAKLOAK 886 +#define SPECIES_DRAGAPULT 887 +#define SPECIES_ZACIAN SPECIES_ZACIAN_HERO_OF_MANY_BATTLES +#define SPECIES_ZACIAN_HERO_OF_MANY_BATTLES 888 +#define SPECIES_ZAMAZENTA SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES +#define SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES 889 +#define SPECIES_ETERNATUS 890 +#define SPECIES_KUBFU 891 +#define SPECIES_URSHIFU SPECIES_URSHIFU_SINGLE_STRIKE_STYLE +#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE 892 +#define SPECIES_ZARUDE 893 +#define SPECIES_REGIELEKI 894 +#define SPECIES_REGIDRAGO 895 +#define SPECIES_GLASTRIER 896 +#define SPECIES_SPECTRIER 897 +#define SPECIES_CALYREX 898 +#define SPECIES_WYRDEER 899 +#define SPECIES_KLEAVOR 900 +#define SPECIES_URSALUNA 901 +#define SPECIES_BASCULEGION SPECIES_BASCULEGION_MALE +#define SPECIES_BASCULEGION_MALE 902 +#define SPECIES_SNEASLER 903 +#define SPECIES_OVERQWIL 904 +#define SPECIES_ENAMORUS SPECIES_ENAMORUS_INCARNATE +#define SPECIES_ENAMORUS_INCARNATE 905 // Megas #define SPECIES_VENUSAUR_MEGA FORMS_START + 1 @@ -999,7 +1052,8 @@ #define SPECIES_ZIGZAGOON_GALARIAN FORMS_START + 82 #define SPECIES_LINOONE_GALARIAN FORMS_START + 83 #define SPECIES_DARUMAKA_GALARIAN FORMS_START + 84 -#define SPECIES_DARMANITAN_GALARIAN FORMS_START + 85 +#define SPECIES_DARMANITAN_GALARIAN SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE +#define SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE FORMS_START + 85 #define SPECIES_YAMASK_GALARIAN FORMS_START + 86 #define SPECIES_STUNFISK_GALARIAN FORMS_START + 87 @@ -1140,7 +1194,7 @@ // Darmanitan #define SPECIES_DARMANITAN_ZEN_MODE FORMS_START + 187 -#define SPECIES_DARMANITAN_ZEN_MODE_GALARIAN FORMS_START + 188 +#define SPECIES_DARMANITAN_GALARIAN_ZEN_MODE FORMS_START + 188 // Deerling #define SPECIES_DEERLING_SUMMER FORMS_START + 189 @@ -1249,7 +1303,8 @@ #define SPECIES_XERNEAS_ACTIVE FORMS_START + 258 // Zygarde -#define SPECIES_ZYGARDE_10 FORMS_START + 259 +#define SPECIES_ZYGARDE_10 SPECIES_ZYGARDE_10_AURA_BREAK +#define SPECIES_ZYGARDE_10_AURA_BREAK FORMS_START + 259 #define SPECIES_ZYGARDE_10_POWER_CONSTRUCT FORMS_START + 260 #define SPECIES_ZYGARDE_50_POWER_CONSTRUCT FORMS_START + 261 #define SPECIES_ZYGARDE_COMPLETE FORMS_START + 262 @@ -1298,6 +1353,7 @@ #define SPECIES_MINIOR_METEOR_BLUE FORMS_START + 291 #define SPECIES_MINIOR_METEOR_INDIGO FORMS_START + 292 #define SPECIES_MINIOR_METEOR_VIOLET FORMS_START + 293 +#define SPECIES_MINIOR_CORE SPECIES_MINIOR_CORE_RED #define SPECIES_MINIOR_CORE_RED FORMS_START + 294 #define SPECIES_MINIOR_CORE_ORANGE FORMS_START + 295 #define SPECIES_MINIOR_CORE_YELLOW FORMS_START + 296 @@ -1331,14 +1387,22 @@ #define SPECIES_POLTEAGEIST_ANTIQUE FORMS_START + 310 // Alcremie -#define SPECIES_ALCREMIE_RUBY_CREAM FORMS_START + 311 -#define SPECIES_ALCREMIE_MATCHA_CREAM FORMS_START + 312 -#define SPECIES_ALCREMIE_MINT_CREAM FORMS_START + 313 -#define SPECIES_ALCREMIE_LEMON_CREAM FORMS_START + 314 -#define SPECIES_ALCREMIE_SALTED_CREAM FORMS_START + 315 -#define SPECIES_ALCREMIE_RUBY_SWIRL FORMS_START + 316 -#define SPECIES_ALCREMIE_CARAMEL_SWIRL FORMS_START + 317 -#define SPECIES_ALCREMIE_RAINBOW_SWIRL FORMS_START + 318 +#define SPECIES_ALCREMIE_RUBY_CREAM SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM FORMS_START + 311 +#define SPECIES_ALCREMIE_MATCHA_CREAM SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM FORMS_START + 312 +#define SPECIES_ALCREMIE_MINT_CREAM SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM FORMS_START + 313 +#define SPECIES_ALCREMIE_LEMON_CREAM SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM FORMS_START + 314 +#define SPECIES_ALCREMIE_SALTED_CREAM SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM FORMS_START + 315 +#define SPECIES_ALCREMIE_RUBY_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL FORMS_START + 316 +#define SPECIES_ALCREMIE_CARAMEL_SWIRL SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL +#define SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL FORMS_START + 317 +#define SPECIES_ALCREMIE_RAINBOW_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL +#define SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL FORMS_START + 318 // Eiscue #define SPECIES_EISCUE_NOICE_FACE FORMS_START + 319 @@ -1371,8 +1435,107 @@ // Basculegion #define SPECIES_BASCULEGION_FEMALE FORMS_START + 329 +// Gigantamax Forms +#define SPECIES_VENUSAUR_GIGANTAMAX FORMS_START + 330 +#define SPECIES_BLASTOISE_GIGANTAMAX FORMS_START + 331 +#define SPECIES_CHARIZARD_GIGANTAMAX FORMS_START + 332 +#define SPECIES_BUTTERFREE_GIGANTAMAX FORMS_START + 333 +#define SPECIES_PIKACHU_GIGANTAMAX FORMS_START + 334 +#define SPECIES_MEOWTH_GIGANTAMAX FORMS_START + 335 +#define SPECIES_MACHAMP_GIGANTAMAX FORMS_START + 336 +#define SPECIES_GENGAR_GIGANTAMAX FORMS_START + 337 +#define SPECIES_KINGLER_GIGANTAMAX FORMS_START + 338 +#define SPECIES_LAPRAS_GIGANTAMAX FORMS_START + 339 +#define SPECIES_EEVEE_GIGANTAMAX FORMS_START + 340 +#define SPECIES_SNORLAX_GIGANTAMAX FORMS_START + 341 +#define SPECIES_GARBODOR_GIGANTAMAX FORMS_START + 342 +#define SPECIES_MELMETAL_GIGANTAMAX FORMS_START + 343 +#define SPECIES_RILLABOOM_GIGANTAMAX FORMS_START + 344 +#define SPECIES_CINDERACE_GIGANTAMAX FORMS_START + 345 +#define SPECIES_INTELEON_GIGANTAMAX FORMS_START + 346 +#define SPECIES_CORVIKNIGHT_GIGANTAMAX FORMS_START + 347 +#define SPECIES_ORBEETLE_GIGANTAMAX FORMS_START + 348 +#define SPECIES_DREDNAW_GIGANTAMAX FORMS_START + 349 +#define SPECIES_COALOSSAL_GIGANTAMAX FORMS_START + 350 +#define SPECIES_FLAPPLE_GIGANTAMAX FORMS_START + 351 +#define SPECIES_APPLETUN_GIGANTAMAX FORMS_START + 352 +#define SPECIES_SANDACONDA_GIGANTAMAX FORMS_START + 353 +#define SPECIES_TOXTRICITY_AMPED_GIGANTAMAX FORMS_START + 354 +#define SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX FORMS_START + 355 +#define SPECIES_CENTISKORCH_GIGANTAMAX FORMS_START + 356 +#define SPECIES_HATTERENE_GIGANTAMAX FORMS_START + 357 +#define SPECIES_GRIMMSNARL_GIGANTAMAX FORMS_START + 358 +#define SPECIES_ALCREMIE_GIGANTAMAX FORMS_START + 359 +#define SPECIES_COPPERAJAH_GIGANTAMAX FORMS_START + 360 +#define SPECIES_DURALUDON_GIGANTAMAX FORMS_START + 361 +#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX FORMS_START + 362 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX FORMS_START + 363 + +/* +#define SPECIES_ALCREMIE_BERRY SPECIES_ALCREMIE_BERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM FORMS_START + 363 // Todo +#define SPECIES_ALCREMIE_BERRY_RUBY_CREAM FORMS_START + 364 // Todo +#define SPECIES_ALCREMIE_BERRY_MATCHA_CREAM FORMS_START + 365 // Todo +#define SPECIES_ALCREMIE_BERRY_MINT_CREAM FORMS_START + 366 // Todo +#define SPECIES_ALCREMIE_BERRY_LEMON_CREAM FORMS_START + 367 // Todo +#define SPECIES_ALCREMIE_BERRY_SALTED_CREAM FORMS_START + 368 // Todo +#define SPECIES_ALCREMIE_BERRY_RUBY_SWIRL FORMS_START + 369 // Todo +#define SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL FORMS_START + 370 // Todo +#define SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL FORMS_START + 371 // Todo +#define SPECIES_ALCREMIE_LOVE SPECIES_ALCREMIE_LOVE_VANILLA_CREAM +#define SPECIES_ALCREMIE_LOVE_VANILLA_CREAM FORMS_START + 372 // Todo +#define SPECIES_ALCREMIE_LOVE_RUBY_CREAM FORMS_START + 373 // Todo +#define SPECIES_ALCREMIE_LOVE_MATCHA_CREAM FORMS_START + 374 // Todo +#define SPECIES_ALCREMIE_LOVE_MINT_CREAM FORMS_START + 375 // Todo +#define SPECIES_ALCREMIE_LOVE_LEMON_CREAM FORMS_START + 376 // Todo +#define SPECIES_ALCREMIE_LOVE_SALTED_CREAM FORMS_START + 377 // Todo +#define SPECIES_ALCREMIE_LOVE_RUBY_SWIRL FORMS_START + 378 // Todo +#define SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL FORMS_START + 379 // Todo +#define SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL FORMS_START + 380 // Todo +#define SPECIES_ALCREMIE_STAR SPECIES_ALCREMIE_STAR_VANILLA_CREAM +#define SPECIES_ALCREMIE_STAR_VANILLA_CREAM FORMS_START + 381 // Todo +#define SPECIES_ALCREMIE_STAR_RUBY_CREAM FORMS_START + 382 // Todo +#define SPECIES_ALCREMIE_STAR_MATCHA_CREAM FORMS_START + 383 // Todo +#define SPECIES_ALCREMIE_STAR_MINT_CREAM FORMS_START + 384 // Todo +#define SPECIES_ALCREMIE_STAR_LEMON_CREAM FORMS_START + 385 // Todo +#define SPECIES_ALCREMIE_STAR_SALTED_CREAM FORMS_START + 386 // Todo +#define SPECIES_ALCREMIE_STAR_RUBY_SWIRL FORMS_START + 387 // Todo +#define SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL FORMS_START + 388 // Todo +#define SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL FORMS_START + 389 // Todo +#define SPECIES_ALCREMIE_CLOVER SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM +#define SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM FORMS_START + 390 // Todo +#define SPECIES_ALCREMIE_CLOVER_RUBY_CREAM FORMS_START + 391 // Todo +#define SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM FORMS_START + 392 // Todo +#define SPECIES_ALCREMIE_CLOVER_MINT_CREAM FORMS_START + 393 // Todo +#define SPECIES_ALCREMIE_CLOVER_LEMON_CREAM FORMS_START + 394 // Todo +#define SPECIES_ALCREMIE_CLOVER_SALTED_CREAM FORMS_START + 395 // Todo +#define SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL FORMS_START + 396 // Todo +#define SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL FORMS_START + 397 // Todo +#define SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL FORMS_START + 398 // Todo +#define SPECIES_ALCREMIE_FLOWER SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM +#define SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM FORMS_START + 399 // Todo +#define SPECIES_ALCREMIE_FLOWER_RUBY_CREAM FORMS_START + 400 // Todo +#define SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM FORMS_START + 401 // Todo +#define SPECIES_ALCREMIE_FLOWER_MINT_CREAM FORMS_START + 402 // Todo +#define SPECIES_ALCREMIE_FLOWER_LEMON_CREAM FORMS_START + 403 // Todo +#define SPECIES_ALCREMIE_FLOWER_SALTED_CREAM FORMS_START + 404 // Todo +#define SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL FORMS_START + 405 // Todo +#define SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL FORMS_START + 406 // Todo +#define SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL FORMS_START + 407 // Todo +#define SPECIES_ALCREMIE_RIBBON SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM +#define SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM FORMS_START + 408 // Todo +#define SPECIES_ALCREMIE_RIBBON_RUBY_CREAM FORMS_START + 409 // Todo +#define SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM FORMS_START + 410 // Todo +#define SPECIES_ALCREMIE_RIBBON_MINT_CREAM FORMS_START + 411 // Todo +#define SPECIES_ALCREMIE_RIBBON_LEMON_CREAM FORMS_START + 412 // Todo +#define SPECIES_ALCREMIE_RIBBON_SALTED_CREAM FORMS_START + 413 // Todo +#define SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL FORMS_START + 414 // Todo +#define SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL FORMS_START + 415 // Todo +#define SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL FORMS_START + 416 // Todo +*/ + #define FORMS_START SPECIES_ENAMORUS -#define SPECIES_EGG SPECIES_BASCULEGION_FEMALE + 1 +#define SPECIES_EGG SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX + 1 #define NUM_SPECIES SPECIES_EGG diff --git a/include/data.h b/include/data.h index d2248820ea..8423329114 100644 --- a/include/data.h +++ b/include/data.h @@ -117,7 +117,8 @@ extern const struct CompressedSpriteSheet gMonFrontPicTableFemale[]; extern const struct Trainer gTrainers[]; extern const u8 gTrainerClassNames[][13]; extern const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1]; -extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1]; +extern const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1]; extern const u8 *const gZMoveNames[]; +extern const u8 *const gMaxMoveNames[]; #endif // GUARD_DATA_H diff --git a/include/graphics.h b/include/graphics.h index 0cf0f356dd..f2ff391a95 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -478,7 +478,7 @@ extern const u32 gMonFrontPic_Armaldo[]; extern const u32 gMonFrontPic_Feebas[]; extern const u32 gMonFrontPic_Milotic[]; extern const u32 gMonFrontPic_MiloticF[]; -extern const u32 gMonFrontPic_Castform[]; +extern const u32 gMonFrontPic_CastformNormal[]; extern const u32 gMonFrontPic_Kecleon[]; extern const u32 gMonFrontPic_Shuppet[]; extern const u32 gMonFrontPic_Banette[]; @@ -514,7 +514,7 @@ extern const u32 gMonFrontPic_Kyogre[]; extern const u32 gMonFrontPic_Groudon[]; extern const u32 gMonFrontPic_Rayquaza[]; extern const u32 gMonFrontPic_Jirachi[]; -extern const u32 gMonFrontPic_Deoxys[]; +extern const u32 gMonFrontPic_DeoxysNormal[]; #if P_GEN_4_POKEMON == TRUE extern const u32 gMonFrontPic_Turtwig[]; extern const u32 gMonFrontPic_Grotle[]; @@ -552,8 +552,8 @@ extern const u32 gMonFrontPic_Cranidos[]; extern const u32 gMonFrontPic_Rampardos[]; extern const u32 gMonFrontPic_Shieldon[]; extern const u32 gMonFrontPic_Bastiodon[]; -extern const u32 gMonFrontPic_Burmy[]; -extern const u32 gMonFrontPic_Wormadam[]; +extern const u32 gMonFrontPic_BurmyPlantCloak[]; +extern const u32 gMonFrontPic_WormadamPlantCloak[]; extern const u32 gMonFrontPic_Mothim[]; extern const u32 gMonFrontPic_Combee[]; extern const u32 gMonFrontPic_Vespiquen[]; @@ -562,9 +562,9 @@ extern const u32 gMonFrontPic_PachirisuF[]; extern const u32 gMonFrontPic_Buizel[]; extern const u32 gMonFrontPic_Floatzel[]; extern const u32 gMonFrontPic_Cherubi[]; -extern const u32 gMonFrontPic_Cherrim[]; -extern const u32 gMonFrontPic_Shellos[]; -extern const u32 gMonFrontPic_Gastrodon[]; +extern const u32 gMonFrontPic_CherrimOvercast[]; +extern const u32 gMonFrontPic_ShellosWestSea[]; +extern const u32 gMonFrontPic_GastrodonWestSea[]; extern const u32 gMonFrontPic_Ambipom[]; extern const u32 gMonFrontPic_AmbipomF[]; extern const u32 gMonFrontPic_Drifloon[]; @@ -642,12 +642,12 @@ extern const u32 gMonFrontPic_Dialga[]; extern const u32 gMonFrontPic_Palkia[]; extern const u32 gMonFrontPic_Heatran[]; extern const u32 gMonFrontPic_Regigigas[]; -extern const u32 gMonFrontPic_Giratina[]; +extern const u32 gMonFrontPic_GiratinaAltered[]; extern const u32 gMonFrontPic_Cresselia[]; extern const u32 gMonFrontPic_Phione[]; extern const u32 gMonFrontPic_Manaphy[]; extern const u32 gMonFrontPic_Darkrai[]; -extern const u32 gMonFrontPic_Shaymin[]; +extern const u32 gMonFrontPic_ShayminLand[]; extern const u32 gMonFrontPic_Arceus[]; #endif #if P_GEN_5_POKEMON == TRUE @@ -708,12 +708,12 @@ extern const u32 gMonFrontPic_Cottonee[]; extern const u32 gMonFrontPic_Whimsicott[]; extern const u32 gMonFrontPic_Petilil[]; extern const u32 gMonFrontPic_Lilligant[]; -extern const u32 gMonFrontPic_Basculin[]; +extern const u32 gMonFrontPic_BasculinRedStriped[]; extern const u32 gMonFrontPic_Sandile[]; extern const u32 gMonFrontPic_Krokorok[]; extern const u32 gMonFrontPic_Krookodile[]; extern const u32 gMonFrontPic_Darumaka[]; -extern const u32 gMonFrontPic_Darmanitan[]; +extern const u32 gMonFrontPic_DarmanitanStandardMode[]; extern const u32 gMonFrontPic_Maractus[]; extern const u32 gMonFrontPic_Dwebble[]; extern const u32 gMonFrontPic_Crustle[]; @@ -744,7 +744,7 @@ extern const u32 gMonFrontPic_Vanillite[]; extern const u32 gMonFrontPic_Vanillish[]; extern const u32 gMonFrontPic_Vanilluxe[]; extern const u32 gMonFrontPic_Deerling[]; -extern const u32 gMonFrontPic_Sawsbuck[]; +extern const u32 gMonFrontPic_SawsbuckSpring[]; extern const u32 gMonFrontPic_Emolga[]; extern const u32 gMonFrontPic_Karrablast[]; extern const u32 gMonFrontPic_Escavalier[]; @@ -801,14 +801,14 @@ extern const u32 gMonFrontPic_Volcarona[]; extern const u32 gMonFrontPic_Cobalion[]; extern const u32 gMonFrontPic_Terrakion[]; extern const u32 gMonFrontPic_Virizion[]; -extern const u32 gMonFrontPic_Tornadus[]; -extern const u32 gMonFrontPic_Thundurus[]; +extern const u32 gMonFrontPic_TornadusIncarnate[]; +extern const u32 gMonFrontPic_ThundurusIncarnate[]; extern const u32 gMonFrontPic_Reshiram[]; extern const u32 gMonFrontPic_Zekrom[]; -extern const u32 gMonFrontPic_Landorus[]; +extern const u32 gMonFrontPic_LandorusIncarnate[]; extern const u32 gMonFrontPic_Kyurem[]; -extern const u32 gMonFrontPic_Keldeo[]; -extern const u32 gMonFrontPic_Meloetta[]; +extern const u32 gMonFrontPic_KeldeoOrdinary[]; +extern const u32 gMonFrontPic_MeloettaAria[]; extern const u32 gMonFrontPic_Genesect[]; #endif #if P_GEN_6_POKEMON == TRUE @@ -828,7 +828,7 @@ extern const u32 gMonFrontPic_Fletchinder[]; extern const u32 gMonFrontPic_Talonflame[]; extern const u32 gMonFrontPic_Scatterbug[]; extern const u32 gMonFrontPic_Spewpa[]; -extern const u32 gMonFrontPic_Vivillon[]; +extern const u32 gMonFrontPic_VivillonIcySnow[]; extern const u32 gMonFrontPic_Litleo[]; extern const u32 gMonFrontPic_Pyroar[]; extern const u32 gMonFrontPic_PyroarF[]; @@ -839,12 +839,12 @@ extern const u32 gMonFrontPic_Skiddo[]; extern const u32 gMonFrontPic_Gogoat[]; extern const u32 gMonFrontPic_Pancham[]; extern const u32 gMonFrontPic_Pangoro[]; -extern const u32 gMonFrontPic_Furfrou[]; +extern const u32 gMonFrontPic_FurfrouNatural[]; extern const u32 gMonFrontPic_Espurr[]; -extern const u32 gMonFrontPic_Meowstic[]; +extern const u32 gMonFrontPic_MeowsticMale[]; extern const u32 gMonFrontPic_Honedge[]; extern const u32 gMonFrontPic_Doublade[]; -extern const u32 gMonFrontPic_Aegislash[]; +extern const u32 gMonFrontPic_AegislashShield[]; extern const u32 gMonFrontPic_Spritzee[]; extern const u32 gMonFrontPic_Aromatisse[]; extern const u32 gMonFrontPic_Swirlix[]; @@ -873,17 +873,17 @@ extern const u32 gMonFrontPic_Goodra[]; extern const u32 gMonFrontPic_Klefki[]; extern const u32 gMonFrontPic_Phantump[]; extern const u32 gMonFrontPic_Trevenant[]; -extern const u32 gMonFrontPic_Pumpkaboo[]; -extern const u32 gMonFrontPic_Gourgeist[]; +extern const u32 gMonFrontPic_PumpkabooAverage[]; +extern const u32 gMonFrontPic_GourgeistAverage[]; extern const u32 gMonFrontPic_Bergmite[]; extern const u32 gMonFrontPic_Avalugg[]; extern const u32 gMonFrontPic_Noibat[]; extern const u32 gMonFrontPic_Noivern[]; -extern const u32 gMonFrontPic_Xerneas[]; +extern const u32 gMonFrontPic_XerneasNeutral[]; extern const u32 gMonFrontPic_Yveltal[]; -extern const u32 gMonFrontPic_Zygarde[]; +extern const u32 gMonFrontPic_Zygarde50[]; extern const u32 gMonFrontPic_Diancie[]; -extern const u32 gMonFrontPic_Hoopa[]; +extern const u32 gMonFrontPic_HoopaConfined[]; extern const u32 gMonFrontPic_Volcanion[]; #endif #if P_GEN_7_POKEMON == TRUE @@ -906,12 +906,12 @@ extern const u32 gMonFrontPic_Charjabug[]; extern const u32 gMonFrontPic_Vikavolt[]; extern const u32 gMonFrontPic_Crabrawler[]; extern const u32 gMonFrontPic_Crabominable[]; -extern const u32 gMonFrontPic_Oricorio[]; +extern const u32 gMonFrontPic_OricorioBaile[]; extern const u32 gMonFrontPic_Cutiefly[]; extern const u32 gMonFrontPic_Ribombee[]; extern const u32 gMonFrontPic_Rockruff[]; -extern const u32 gMonFrontPic_Lycanroc[]; -extern const u32 gMonFrontPic_Wishiwashi[]; +extern const u32 gMonFrontPic_LycanrocMidday[]; +extern const u32 gMonFrontPic_WishiwashiSolo[]; extern const u32 gMonFrontPic_Mareanie[]; extern const u32 gMonFrontPic_Toxapex[]; extern const u32 gMonFrontPic_Mudbray[]; @@ -939,11 +939,11 @@ extern const u32 gMonFrontPic_Palossand[]; extern const u32 gMonFrontPic_Pyukumuku[]; extern const u32 gMonFrontPic_TypeNull[]; extern const u32 gMonFrontPic_Silvally[]; -extern const u32 gMonFrontPic_Minior[]; +extern const u32 gMonFrontPic_MiniorMeteor[]; extern const u32 gMonFrontPic_Komala[]; extern const u32 gMonFrontPic_Turtonator[]; extern const u32 gMonFrontPic_Togedemaru[]; -extern const u32 gMonFrontPic_Mimikyu[]; +extern const u32 gMonFrontPic_MimikyuDisguised[]; extern const u32 gMonFrontPic_Bruxish[]; extern const u32 gMonFrontPic_Drampa[]; extern const u32 gMonFrontPic_Dhelmise[]; @@ -1016,7 +1016,7 @@ extern const u32 gMonFrontPic_Cramorant[]; extern const u32 gMonFrontPic_Arrokuda[]; extern const u32 gMonFrontPic_Barraskewda[]; extern const u32 gMonFrontPic_Toxel[]; -extern const u32 gMonFrontPic_Toxtricity[]; +extern const u32 gMonFrontPic_ToxtricityAmped[]; extern const u32 gMonFrontPic_Sizzlipede[]; extern const u32 gMonFrontPic_Centiskorch[]; extern const u32 gMonFrontPic_Clobbopus[]; @@ -1042,9 +1042,9 @@ extern const u32 gMonFrontPic_Pincurchin[]; extern const u32 gMonFrontPic_Snom[]; extern const u32 gMonFrontPic_Frosmoth[]; extern const u32 gMonFrontPic_Stonjourner[]; -extern const u32 gMonFrontPic_Eiscue[]; -extern const u32 gMonFrontPic_Indeedee[]; -extern const u32 gMonFrontPic_Morpeko[]; +extern const u32 gMonFrontPic_EiscueFace[]; +extern const u32 gMonFrontPic_IndeedeeMale[]; +extern const u32 gMonFrontPic_MorpekoFullBelly[]; extern const u32 gMonFrontPic_Cufant[]; extern const u32 gMonFrontPic_Copperajah[]; extern const u32 gMonFrontPic_Dracozolt[]; @@ -1055,11 +1055,11 @@ extern const u32 gMonFrontPic_Duraludon[]; extern const u32 gMonFrontPic_Dreepy[]; extern const u32 gMonFrontPic_Drakloak[]; extern const u32 gMonFrontPic_Dragapult[]; -extern const u32 gMonFrontPic_Zacian[]; -extern const u32 gMonFrontPic_Zamazenta[]; +extern const u32 gMonFrontPic_ZacianHeroOfManyBattles[]; +extern const u32 gMonFrontPic_ZamazentaHeroOfManyBattles[]; extern const u32 gMonFrontPic_Eternatus[]; extern const u32 gMonFrontPic_Kubfu[]; -extern const u32 gMonFrontPic_Urshifu[]; +extern const u32 gMonFrontPic_UrshifuSingleStrikeStyle[]; extern const u32 gMonFrontPic_Zarude[]; extern const u32 gMonFrontPic_Regieleki[]; extern const u32 gMonFrontPic_Regidrago[]; @@ -1069,10 +1069,10 @@ extern const u32 gMonFrontPic_Calyrex[]; extern const u32 gMonFrontPic_Wyrdeer[]; extern const u32 gMonFrontPic_Kleavor[]; extern const u32 gMonFrontPic_Ursaluna[]; -extern const u32 gMonFrontPic_Basculegion[]; +extern const u32 gMonFrontPic_BasculegionMale[]; extern const u32 gMonFrontPic_Sneasler[]; extern const u32 gMonFrontPic_Overqwil[]; -extern const u32 gMonFrontPic_Enamorus[]; +extern const u32 gMonFrontPic_EnamorusIncarnate[]; #endif extern const u32 gMonFrontPic_VenusaurMega[]; extern const u32 gMonFrontPic_CharizardMegaX[]; @@ -1165,7 +1165,7 @@ extern const u32 gMonFrontPic_ZigzagoonGalarian[]; extern const u32 gMonFrontPic_LinooneGalarian[]; #if P_GEN_5_POKEMON == TRUE extern const u32 gMonFrontPic_DarumakaGalarian[]; -extern const u32 gMonFrontPic_DarmanitanGalarian[]; +extern const u32 gMonFrontPic_DarmanitanGalarianStandardMode[]; extern const u32 gMonFrontPic_YamaskGalarian[]; extern const u32 gMonFrontPic_StunfiskGalarian[]; #endif @@ -1262,7 +1262,7 @@ extern const u32 gMonFrontPic_ShayminSky[]; extern const u32 gMonFrontPic_BasculinBlueStriped[]; extern const u32 gMonFrontPic_BasculinWhiteStriped[]; extern const u32 gMonFrontPic_DarmanitanZenMode[]; -extern const u32 gMonFrontPic_DarmanitanZenModeGalarian[]; +extern const u32 gMonFrontPic_DarmanitanGalarianZenMode[]; extern const u32 gMonFrontPic_SawsbuckSummer[]; extern const u32 gMonFrontPic_SawsbuckAutumn[]; extern const u32 gMonFrontPic_SawsbuckWinter[]; @@ -1770,7 +1770,7 @@ extern const u32 gMonBackPic_Armaldo[]; extern const u32 gMonBackPic_Feebas[]; extern const u32 gMonBackPic_Milotic[]; extern const u32 gMonBackPic_MiloticF[]; -extern const u32 gMonBackPic_Castform[]; +extern const u32 gMonBackPic_CastformNormal[]; extern const u32 gMonBackPic_Kecleon[]; extern const u32 gMonBackPic_Shuppet[]; extern const u32 gMonBackPic_Banette[]; @@ -1806,7 +1806,7 @@ extern const u32 gMonBackPic_Kyogre[]; extern const u32 gMonBackPic_Groudon[]; extern const u32 gMonBackPic_Rayquaza[]; extern const u32 gMonBackPic_Jirachi[]; -extern const u32 gMonBackPic_Deoxys[]; +extern const u32 gMonBackPic_DeoxysNormal[]; #if P_GEN_4_POKEMON == TRUE extern const u32 gMonBackPic_Turtwig[]; extern const u32 gMonBackPic_Grotle[]; @@ -1842,8 +1842,8 @@ extern const u32 gMonBackPic_Cranidos[]; extern const u32 gMonBackPic_Rampardos[]; extern const u32 gMonBackPic_Shieldon[]; extern const u32 gMonBackPic_Bastiodon[]; -extern const u32 gMonBackPic_Burmy[]; -extern const u32 gMonBackPic_Wormadam[]; +extern const u32 gMonBackPic_BurmyPlantCloak[]; +extern const u32 gMonBackPic_WormadamPlantCloak[]; extern const u32 gMonBackPic_Mothim[]; extern const u32 gMonBackPic_Combee[]; extern const u32 gMonBackPic_Vespiquen[]; @@ -1853,9 +1853,9 @@ extern const u32 gMonBackPic_BuizelF[]; extern const u32 gMonBackPic_Floatzel[]; extern const u32 gMonBackPic_FloatzelF[]; extern const u32 gMonBackPic_Cherubi[]; -extern const u32 gMonBackPic_Cherrim[]; -extern const u32 gMonBackPic_Shellos[]; -extern const u32 gMonBackPic_Gastrodon[]; +extern const u32 gMonBackPic_CherrimOvercast[]; +extern const u32 gMonBackPic_ShellosWestSea[]; +extern const u32 gMonBackPic_GastrodonWestSea[]; extern const u32 gMonBackPic_Ambipom[]; extern const u32 gMonBackPic_AmbipomF[]; extern const u32 gMonBackPic_Drifloon[]; @@ -1929,12 +1929,12 @@ extern const u32 gMonBackPic_Dialga[]; extern const u32 gMonBackPic_Palkia[]; extern const u32 gMonBackPic_Heatran[]; extern const u32 gMonBackPic_Regigigas[]; -extern const u32 gMonBackPic_Giratina[]; +extern const u32 gMonBackPic_GiratinaAltered[]; extern const u32 gMonBackPic_Cresselia[]; extern const u32 gMonBackPic_Phione[]; extern const u32 gMonBackPic_Manaphy[]; extern const u32 gMonBackPic_Darkrai[]; -extern const u32 gMonBackPic_Shaymin[]; +extern const u32 gMonBackPic_ShayminLand[]; extern const u32 gMonBackPic_Arceus[]; #endif #if P_GEN_5_POKEMON == TRUE @@ -1995,12 +1995,12 @@ extern const u32 gMonBackPic_Cottonee[]; extern const u32 gMonBackPic_Whimsicott[]; extern const u32 gMonBackPic_Petilil[]; extern const u32 gMonBackPic_Lilligant[]; -extern const u32 gMonBackPic_Basculin[]; +extern const u32 gMonBackPic_BasculinRedStriped[]; extern const u32 gMonBackPic_Sandile[]; extern const u32 gMonBackPic_Krokorok[]; extern const u32 gMonBackPic_Krookodile[]; extern const u32 gMonBackPic_Darumaka[]; -extern const u32 gMonBackPic_Darmanitan[]; +extern const u32 gMonBackPic_DarmanitanStandardMode[]; extern const u32 gMonBackPic_Maractus[]; extern const u32 gMonBackPic_Dwebble[]; extern const u32 gMonBackPic_Crustle[]; @@ -2031,7 +2031,7 @@ extern const u32 gMonBackPic_Vanillite[]; extern const u32 gMonBackPic_Vanillish[]; extern const u32 gMonBackPic_Vanilluxe[]; extern const u32 gMonBackPic_Deerling[]; -extern const u32 gMonBackPic_Sawsbuck[]; +extern const u32 gMonBackPic_SawsbuckSpring[]; extern const u32 gMonBackPic_Emolga[]; extern const u32 gMonBackPic_Karrablast[]; extern const u32 gMonBackPic_Escavalier[]; @@ -2088,14 +2088,14 @@ extern const u32 gMonBackPic_Volcarona[]; extern const u32 gMonBackPic_Cobalion[]; extern const u32 gMonBackPic_Terrakion[]; extern const u32 gMonBackPic_Virizion[]; -extern const u32 gMonBackPic_Tornadus[]; -extern const u32 gMonBackPic_Thundurus[]; +extern const u32 gMonBackPic_TornadusIncarnate[]; +extern const u32 gMonBackPic_ThundurusIncarnate[]; extern const u32 gMonBackPic_Reshiram[]; extern const u32 gMonBackPic_Zekrom[]; -extern const u32 gMonBackPic_Landorus[]; +extern const u32 gMonBackPic_LandorusIncarnate[]; extern const u32 gMonBackPic_Kyurem[]; -extern const u32 gMonBackPic_Keldeo[]; -extern const u32 gMonBackPic_Meloetta[]; +extern const u32 gMonBackPic_KeldeoOrdinary[]; +extern const u32 gMonBackPic_MeloettaAria[]; extern const u32 gMonBackPic_Genesect[]; #endif #if P_GEN_6_POKEMON == TRUE @@ -2115,7 +2115,7 @@ extern const u32 gMonBackPic_Fletchinder[]; extern const u32 gMonBackPic_Talonflame[]; extern const u32 gMonBackPic_Scatterbug[]; extern const u32 gMonBackPic_Spewpa[]; -extern const u32 gMonBackPic_Vivillon[]; +extern const u32 gMonBackPic_VivillonIcySnow[]; extern const u32 gMonBackPic_Litleo[]; extern const u32 gMonBackPic_Pyroar[]; extern const u32 gMonBackPic_PyroarF[]; @@ -2126,12 +2126,12 @@ extern const u32 gMonBackPic_Skiddo[]; extern const u32 gMonBackPic_Gogoat[]; extern const u32 gMonBackPic_Pancham[]; extern const u32 gMonBackPic_Pangoro[]; -extern const u32 gMonBackPic_Furfrou[]; +extern const u32 gMonBackPic_FurfrouNatural[]; extern const u32 gMonBackPic_Espurr[]; -extern const u32 gMonBackPic_Meowstic[]; +extern const u32 gMonBackPic_MeowsticMale[]; extern const u32 gMonBackPic_Honedge[]; extern const u32 gMonBackPic_Doublade[]; -extern const u32 gMonBackPic_Aegislash[]; +extern const u32 gMonBackPic_AegislashShield[]; extern const u32 gMonBackPic_Spritzee[]; extern const u32 gMonBackPic_Aromatisse[]; extern const u32 gMonBackPic_Swirlix[]; @@ -2160,17 +2160,17 @@ extern const u32 gMonBackPic_Goodra[]; extern const u32 gMonBackPic_Klefki[]; extern const u32 gMonBackPic_Phantump[]; extern const u32 gMonBackPic_Trevenant[]; -extern const u32 gMonBackPic_Pumpkaboo[]; -extern const u32 gMonBackPic_Gourgeist[]; +extern const u32 gMonBackPic_PumpkabooAverage[]; +extern const u32 gMonBackPic_GourgeistAverage[]; extern const u32 gMonBackPic_Bergmite[]; extern const u32 gMonBackPic_Avalugg[]; extern const u32 gMonBackPic_Noibat[]; extern const u32 gMonBackPic_Noivern[]; -extern const u32 gMonBackPic_Xerneas[]; +extern const u32 gMonBackPic_XerneasNeutral[]; extern const u32 gMonBackPic_Yveltal[]; -extern const u32 gMonBackPic_Zygarde[]; +extern const u32 gMonBackPic_Zygarde50[]; extern const u32 gMonBackPic_Diancie[]; -extern const u32 gMonBackPic_Hoopa[]; +extern const u32 gMonBackPic_HoopaConfined[]; extern const u32 gMonBackPic_Volcanion[]; #endif #if P_GEN_7_POKEMON == TRUE @@ -2193,12 +2193,12 @@ extern const u32 gMonBackPic_Charjabug[]; extern const u32 gMonBackPic_Vikavolt[]; extern const u32 gMonBackPic_Crabrawler[]; extern const u32 gMonBackPic_Crabominable[]; -extern const u32 gMonBackPic_Oricorio[]; +extern const u32 gMonBackPic_OricorioBaile[]; extern const u32 gMonBackPic_Cutiefly[]; extern const u32 gMonBackPic_Ribombee[]; extern const u32 gMonBackPic_Rockruff[]; -extern const u32 gMonBackPic_Lycanroc[]; -extern const u32 gMonBackPic_Wishiwashi[]; +extern const u32 gMonBackPic_LycanrocMidday[]; +extern const u32 gMonBackPic_WishiwashiSolo[]; extern const u32 gMonBackPic_Mareanie[]; extern const u32 gMonBackPic_Toxapex[]; extern const u32 gMonBackPic_Mudbray[]; @@ -2226,11 +2226,11 @@ extern const u32 gMonBackPic_Palossand[]; extern const u32 gMonBackPic_Pyukumuku[]; extern const u32 gMonBackPic_TypeNull[]; extern const u32 gMonBackPic_Silvally[]; -extern const u32 gMonBackPic_Minior[]; +extern const u32 gMonBackPic_MiniorMeteor[]; extern const u32 gMonBackPic_Komala[]; extern const u32 gMonBackPic_Turtonator[]; extern const u32 gMonBackPic_Togedemaru[]; -extern const u32 gMonBackPic_Mimikyu[]; +extern const u32 gMonBackPic_MimikyuDisguised[]; extern const u32 gMonBackPic_Bruxish[]; extern const u32 gMonBackPic_Drampa[]; extern const u32 gMonBackPic_Dhelmise[]; @@ -2303,7 +2303,7 @@ extern const u32 gMonBackPic_Cramorant[]; extern const u32 gMonBackPic_Arrokuda[]; extern const u32 gMonBackPic_Barraskewda[]; extern const u32 gMonBackPic_Toxel[]; -extern const u32 gMonBackPic_Toxtricity[]; +extern const u32 gMonBackPic_ToxtricityAmped[]; extern const u32 gMonBackPic_Sizzlipede[]; extern const u32 gMonBackPic_Centiskorch[]; extern const u32 gMonBackPic_Clobbopus[]; @@ -2329,9 +2329,9 @@ extern const u32 gMonBackPic_Pincurchin[]; extern const u32 gMonBackPic_Snom[]; extern const u32 gMonBackPic_Frosmoth[]; extern const u32 gMonBackPic_Stonjourner[]; -extern const u32 gMonBackPic_Eiscue[]; -extern const u32 gMonBackPic_Indeedee[]; -extern const u32 gMonBackPic_Morpeko[]; +extern const u32 gMonBackPic_EiscueIceFace[]; +extern const u32 gMonBackPic_IndeedeeMale[]; +extern const u32 gMonBackPic_MorpekoFullBelly[]; extern const u32 gMonBackPic_Cufant[]; extern const u32 gMonBackPic_Copperajah[]; extern const u32 gMonBackPic_Dracozolt[]; @@ -2342,11 +2342,11 @@ extern const u32 gMonBackPic_Duraludon[]; extern const u32 gMonBackPic_Dreepy[]; extern const u32 gMonBackPic_Drakloak[]; extern const u32 gMonBackPic_Dragapult[]; -extern const u32 gMonBackPic_Zacian[]; -extern const u32 gMonBackPic_Zamazenta[]; +extern const u32 gMonBackPic_ZacianHeroOfManyBattles[]; +extern const u32 gMonBackPic_ZamazentaHeroOfManyBattles[]; extern const u32 gMonBackPic_Eternatus[]; extern const u32 gMonBackPic_Kubfu[]; -extern const u32 gMonBackPic_Urshifu[]; +extern const u32 gMonBackPic_UrshifuSingleStrikeStyle[]; extern const u32 gMonBackPic_Zarude[]; extern const u32 gMonBackPic_Regieleki[]; extern const u32 gMonBackPic_Regidrago[]; @@ -2356,10 +2356,10 @@ extern const u32 gMonBackPic_Calyrex[]; extern const u32 gMonBackPic_Wyrdeer[]; extern const u32 gMonBackPic_Kleavor[]; extern const u32 gMonBackPic_Ursaluna[]; -extern const u32 gMonBackPic_Basculegion[]; +extern const u32 gMonBackPic_BasculegionMale[]; extern const u32 gMonBackPic_Sneasler[]; extern const u32 gMonBackPic_Overqwil[]; -extern const u32 gMonBackPic_Enamorus[]; +extern const u32 gMonBackPic_EnamorusIncarnate[]; #endif extern const u32 gMonBackPic_VenusaurMega[]; extern const u32 gMonBackPic_CharizardMegaX[]; @@ -2452,7 +2452,7 @@ extern const u32 gMonBackPic_ZigzagoonGalarian[]; extern const u32 gMonBackPic_LinooneGalarian[]; #if P_GEN_5_POKEMON == TRUE extern const u32 gMonBackPic_DarumakaGalarian[]; -extern const u32 gMonBackPic_DarmanitanGalarian[]; +extern const u32 gMonBackPic_DarmanitanGalarianStandardMode[]; extern const u32 gMonBackPic_YamaskGalarian[]; extern const u32 gMonBackPic_StunfiskGalarian[]; #endif @@ -2549,7 +2549,7 @@ extern const u32 gMonBackPic_ShayminSky[]; extern const u32 gMonBackPic_BasculinBlueStriped[]; extern const u32 gMonBackPic_BasculinWhiteStriped[]; extern const u32 gMonBackPic_DarmanitanZenMode[]; -extern const u32 gMonBackPic_DarmanitanZenModeGalarian[]; +extern const u32 gMonBackPic_DarmanitanGalarianZenMode[]; extern const u32 gMonBackPic_SawsbuckSummer[]; extern const u32 gMonBackPic_SawsbuckAutumn[]; extern const u32 gMonBackPic_SawsbuckWinter[]; @@ -2643,6 +2643,39 @@ extern const u32 gMonBackPic_CalyrexIceRider[]; extern const u32 gMonBackPic_CalyrexShadowRider[]; extern const u32 gMonBackPic_EnamorusTherian[]; extern const u32 gMonBackPic_BasculegionFemale[]; +extern const u32 gMonBackPic_VenusaurGigantamax[]; +extern const u32 gMonBackPic_CharizardGigantamax[]; +extern const u32 gMonBackPic_BlastoiseGigantamax[]; +extern const u32 gMonBackPic_ButterfreeGigantamax[]; +extern const u32 gMonBackPic_PikachuGigantamax[]; +extern const u32 gMonBackPic_MeowthGigantamax[]; +extern const u32 gMonBackPic_MachampGigantamax[]; +extern const u32 gMonBackPic_GengarGigantamax[]; +extern const u32 gMonBackPic_KinglerGigantamax[]; +extern const u32 gMonBackPic_LaprasGigantamax[]; +extern const u32 gMonBackPic_EeveeGigantamax[]; +extern const u32 gMonBackPic_SnorlaxGigantamax[]; +extern const u32 gMonBackPic_GarbodorGigantamax[]; +extern const u32 gMonBackPic_MelmetalGigantamax[]; +extern const u32 gMonBackPic_RillaboomGigantamax[]; +extern const u32 gMonBackPic_CinderaceGigantamax[]; +extern const u32 gMonBackPic_InteleonGigantamax[]; +extern const u32 gMonBackPic_CorviknightGigantamax[]; +extern const u32 gMonBackPic_OrbeetleGigantamax[]; +extern const u32 gMonBackPic_DrednawGigantamax[]; +extern const u32 gMonBackPic_CoalossalGigantamax[]; +extern const u32 gMonBackPic_FlappleGigantamax[]; +extern const u32 gMonBackPic_AppletunGigantamax[]; +extern const u32 gMonBackPic_SandacondaGigantamax[]; +extern const u32 gMonBackPic_ToxtricityGigantamax[]; +extern const u32 gMonBackPic_CentiskorchGigantamax[]; +extern const u32 gMonBackPic_HattereneGigantamax[]; +extern const u32 gMonBackPic_GrimmsnarlGigantamax[]; +extern const u32 gMonBackPic_AlcremieGigantamax[]; +extern const u32 gMonBackPic_CopperajahGigantamax[]; +extern const u32 gMonBackPic_DuraludonGigantamax[]; +extern const u32 gMonBackPic_UrshifuSingleStrikeGigantamax[]; +extern const u32 gMonBackPic_UrshifuRapidStrikeGigantamax[]; #endif extern const u32 gMonPalette_CircledQuestionMark[]; @@ -2997,7 +3030,7 @@ extern const u32 gMonPalette_Anorith[]; extern const u32 gMonPalette_Armaldo[]; extern const u32 gMonPalette_Feebas[]; extern const u32 gMonPalette_Milotic[]; -extern const u32 gMonPalette_Castform[]; +extern const u32 gMonPalette_CastformNormal[]; extern const u32 gMonPalette_Kecleon[]; extern const u32 gMonPalette_Shuppet[]; extern const u32 gMonPalette_Banette[]; @@ -3032,7 +3065,7 @@ extern const u32 gMonPalette_Kyogre[]; extern const u32 gMonPalette_Groudon[]; extern const u32 gMonPalette_Rayquaza[]; extern const u32 gMonPalette_Jirachi[]; -extern const u32 gMonPalette_Deoxys[]; +extern const u32 gMonPalette_DeoxysNormal[]; #if P_GEN_4_POKEMON == TRUE extern const u32 gMonPalette_Turtwig[]; extern const u32 gMonPalette_Grotle[]; @@ -3059,8 +3092,8 @@ extern const u32 gMonPalette_Cranidos[]; extern const u32 gMonPalette_Rampardos[]; extern const u32 gMonPalette_Shieldon[]; extern const u32 gMonPalette_Bastiodon[]; -extern const u32 gMonPalette_Burmy[]; -extern const u32 gMonPalette_Wormadam[]; +extern const u32 gMonPalette_BurmyPlantCloak[]; +extern const u32 gMonPalette_WormadamPlantCloak[]; extern const u32 gMonPalette_Mothim[]; extern const u32 gMonPalette_Combee[]; extern const u32 gMonPalette_CombeeF[]; @@ -3069,9 +3102,9 @@ extern const u32 gMonPalette_Pachirisu[]; extern const u32 gMonPalette_Buizel[]; extern const u32 gMonPalette_Floatzel[]; extern const u32 gMonPalette_Cherubi[]; -extern const u32 gMonPalette_Cherrim[]; -extern const u32 gMonPalette_Shellos[]; -extern const u32 gMonPalette_Gastrodon[]; +extern const u32 gMonPalette_CherrimOvercast[]; +extern const u32 gMonPalette_ShellosWestSea[]; +extern const u32 gMonPalette_GastrodonWestSea[]; extern const u32 gMonPalette_Ambipom[]; extern const u32 gMonPalette_Drifloon[]; extern const u32 gMonPalette_Drifblim[]; @@ -3137,12 +3170,12 @@ extern const u32 gMonPalette_Dialga[]; extern const u32 gMonPalette_Palkia[]; extern const u32 gMonPalette_Heatran[]; extern const u32 gMonPalette_Regigigas[]; -extern const u32 gMonPalette_Giratina[]; +extern const u32 gMonPalette_GiratinaAltered[]; extern const u32 gMonPalette_Cresselia[]; extern const u32 gMonPalette_Phione[]; extern const u32 gMonPalette_Manaphy[]; extern const u32 gMonPalette_Darkrai[]; -extern const u32 gMonPalette_Shaymin[]; +extern const u32 gMonPalette_ShayminLand[]; extern const u32 gMonPalette_Arceus[]; #endif #if P_GEN_5_POKEMON == TRUE @@ -3203,12 +3236,12 @@ extern const u32 gMonPalette_Cottonee[]; extern const u32 gMonPalette_Whimsicott[]; extern const u32 gMonPalette_Petilil[]; extern const u32 gMonPalette_Lilligant[]; -extern const u32 gMonPalette_Basculin[]; +extern const u32 gMonPalette_BasculinRedStriped[]; extern const u32 gMonPalette_Sandile[]; extern const u32 gMonPalette_Krokorok[]; extern const u32 gMonPalette_Krookodile[]; extern const u32 gMonPalette_Darumaka[]; -extern const u32 gMonPalette_Darmanitan[]; +extern const u32 gMonPalette_DarmanitanStandardMode[]; extern const u32 gMonPalette_Maractus[]; extern const u32 gMonPalette_Dwebble[]; extern const u32 gMonPalette_Crustle[]; @@ -3238,8 +3271,8 @@ extern const u32 gMonPalette_Swanna[]; extern const u32 gMonPalette_Vanillite[]; extern const u32 gMonPalette_Vanillish[]; extern const u32 gMonPalette_Vanilluxe[]; -extern const u32 gMonPalette_Deerling[]; -extern const u32 gMonPalette_Sawsbuck[]; +extern const u32 gMonPalette_DeerlingSpring[]; +extern const u32 gMonPalette_SawsbuckSpring[]; extern const u32 gMonPalette_Emolga[]; extern const u32 gMonPalette_Karrablast[]; extern const u32 gMonPalette_Escavalier[]; @@ -3296,14 +3329,14 @@ extern const u32 gMonPalette_Volcarona[]; extern const u32 gMonPalette_Cobalion[]; extern const u32 gMonPalette_Terrakion[]; extern const u32 gMonPalette_Virizion[]; -extern const u32 gMonPalette_Tornadus[]; -extern const u32 gMonPalette_Thundurus[]; +extern const u32 gMonPalette_TornadusIncarnate[]; +extern const u32 gMonPalette_ThundurusIncarnate[]; extern const u32 gMonPalette_Reshiram[]; extern const u32 gMonPalette_Zekrom[]; -extern const u32 gMonPalette_Landorus[]; +extern const u32 gMonPalette_LandorusIncarnate[]; extern const u32 gMonPalette_Kyurem[]; -extern const u32 gMonPalette_Keldeo[]; -extern const u32 gMonPalette_Meloetta[]; +extern const u32 gMonPalette_KeldeoOrdinary[]; +extern const u32 gMonPalette_MeloettaAria[]; extern const u32 gMonPalette_Genesect[]; #endif #if P_GEN_6_POKEMON == TRUE @@ -3323,22 +3356,22 @@ extern const u32 gMonPalette_Fletchinder[]; extern const u32 gMonPalette_Talonflame[]; extern const u32 gMonPalette_Scatterbug[]; extern const u32 gMonPalette_Spewpa[]; -extern const u32 gMonPalette_Vivillon[]; +extern const u32 gMonPalette_VivillonIcySnow[]; extern const u32 gMonPalette_Litleo[]; extern const u32 gMonPalette_Pyroar[]; -extern const u32 gMonPalette_Flabebe[]; -extern const u32 gMonPalette_Floette[]; -extern const u32 gMonPalette_Florges[]; +extern const u32 gMonPalette_FlabebeRedFlower[]; +extern const u32 gMonPalette_FloetteRedFlower[]; +extern const u32 gMonPalette_FlorgesRedFlower[]; extern const u32 gMonPalette_Skiddo[]; extern const u32 gMonPalette_Gogoat[]; extern const u32 gMonPalette_Pancham[]; extern const u32 gMonPalette_Pangoro[]; -extern const u32 gMonPalette_Furfrou[]; +extern const u32 gMonPalette_FurfrouNatural[]; extern const u32 gMonPalette_Espurr[]; -extern const u32 gMonPalette_Meowstic[]; +extern const u32 gMonPalette_MeowsticMale[]; extern const u32 gMonPalette_Honedge[]; extern const u32 gMonPalette_Doublade[]; -extern const u32 gMonPalette_Aegislash[]; +extern const u32 gMonPalette_AegislashShield[]; extern const u32 gMonPalette_Spritzee[]; extern const u32 gMonPalette_Aromatisse[]; extern const u32 gMonPalette_Swirlix[]; @@ -3373,11 +3406,11 @@ extern const u32 gMonPalette_Bergmite[]; extern const u32 gMonPalette_Avalugg[]; extern const u32 gMonPalette_Noibat[]; extern const u32 gMonPalette_Noivern[]; -extern const u32 gMonPalette_Xerneas[]; +extern const u32 gMonPalette_XerneasNeutral[]; extern const u32 gMonPalette_Yveltal[]; -extern const u32 gMonPalette_Zygarde[]; +extern const u32 gMonPalette_Zygarde50[]; extern const u32 gMonPalette_Diancie[]; -extern const u32 gMonPalette_Hoopa[]; +extern const u32 gMonPalette_HoopaConfined[]; extern const u32 gMonPalette_Volcanion[]; #endif #if P_GEN_7_POKEMON == TRUE @@ -3400,12 +3433,12 @@ extern const u32 gMonPalette_Charjabug[]; extern const u32 gMonPalette_Vikavolt[]; extern const u32 gMonPalette_Crabrawler[]; extern const u32 gMonPalette_Crabominable[]; -extern const u32 gMonPalette_Oricorio[]; +extern const u32 gMonPalette_OricorioBaile[]; extern const u32 gMonPalette_Cutiefly[]; extern const u32 gMonPalette_Ribombee[]; extern const u32 gMonPalette_Rockruff[]; -extern const u32 gMonPalette_Lycanroc[]; -extern const u32 gMonPalette_Wishiwashi[]; +extern const u32 gMonPalette_LycanrocMidday[]; +extern const u32 gMonPalette_WishiwashiSolo[]; extern const u32 gMonPalette_Mareanie[]; extern const u32 gMonPalette_Toxapex[]; extern const u32 gMonPalette_Mudbray[]; @@ -3432,12 +3465,12 @@ extern const u32 gMonPalette_Sandygast[]; extern const u32 gMonPalette_Palossand[]; extern const u32 gMonPalette_Pyukumuku[]; extern const u32 gMonPalette_TypeNull[]; -extern const u32 gMonPalette_Silvally[]; -extern const u32 gMonPalette_Minior[]; +extern const u32 gMonPalette_SilvallyNormal[]; +extern const u32 gMonPalette_MiniorMeteor[]; extern const u32 gMonPalette_Komala[]; extern const u32 gMonPalette_Turtonator[]; extern const u32 gMonPalette_Togedemaru[]; -extern const u32 gMonPalette_Mimikyu[]; +extern const u32 gMonPalette_MimikyuDisguised[]; extern const u32 gMonPalette_Bruxish[]; extern const u32 gMonPalette_Drampa[]; extern const u32 gMonPalette_Dhelmise[]; @@ -3510,7 +3543,7 @@ extern const u32 gMonPalette_Cramorant[]; extern const u32 gMonPalette_Arrokuda[]; extern const u32 gMonPalette_Barraskewda[]; extern const u32 gMonPalette_Toxel[]; -extern const u32 gMonPalette_Toxtricity[]; +extern const u32 gMonPalette_ToxtricityAmped[]; extern const u32 gMonPalette_Sizzlipede[]; extern const u32 gMonPalette_Centiskorch[]; extern const u32 gMonPalette_Clobbopus[]; @@ -3536,9 +3569,9 @@ extern const u32 gMonPalette_Pincurchin[]; extern const u32 gMonPalette_Snom[]; extern const u32 gMonPalette_Frosmoth[]; extern const u32 gMonPalette_Stonjourner[]; -extern const u32 gMonPalette_Eiscue[]; -extern const u32 gMonPalette_Indeedee[]; -extern const u32 gMonPalette_Morpeko[]; +extern const u32 gMonPalette_EiscueIceFace[]; +extern const u32 gMonPalette_IndeedeeMale[]; +extern const u32 gMonPalette_MorpekoFullBelly[]; extern const u32 gMonPalette_Cufant[]; extern const u32 gMonPalette_Copperajah[]; extern const u32 gMonPalette_Dracozolt[]; @@ -3549,11 +3582,11 @@ extern const u32 gMonPalette_Duraludon[]; extern const u32 gMonPalette_Dreepy[]; extern const u32 gMonPalette_Drakloak[]; extern const u32 gMonPalette_Dragapult[]; -extern const u32 gMonPalette_Zacian[]; -extern const u32 gMonPalette_Zamazenta[]; +extern const u32 gMonPalette_ZacianHeroOfManyBattles[]; +extern const u32 gMonPalette_ZamazentaHeroOfManyBattles[]; extern const u32 gMonPalette_Eternatus[]; extern const u32 gMonPalette_Kubfu[]; -extern const u32 gMonPalette_Urshifu[]; +extern const u32 gMonPalette_UrshifuSingleStrikeStyle[]; extern const u32 gMonPalette_Zarude[]; extern const u32 gMonPalette_Regieleki[]; extern const u32 gMonPalette_Regidrago[]; @@ -3563,10 +3596,10 @@ extern const u32 gMonPalette_Calyrex[]; extern const u32 gMonPalette_Wyrdeer[]; extern const u32 gMonPalette_Kleavor[]; extern const u32 gMonPalette_Ursaluna[]; -extern const u32 gMonPalette_Basculegion[]; +extern const u32 gMonPalette_BasculegionMale[]; extern const u32 gMonPalette_Sneasler[]; extern const u32 gMonPalette_Overqwil[]; -extern const u32 gMonPalette_Enamorus[]; +extern const u32 gMonPalette_EnamorusIncarnate[]; #endif extern const u32 gMonPalette_VenusaurMega[]; extern const u32 gMonPalette_CharizardMegaX[]; @@ -3659,7 +3692,7 @@ extern const u32 gMonPalette_ZigzagoonGalarian[]; extern const u32 gMonPalette_LinooneGalarian[]; #if P_GEN_5_POKEMON == TRUE extern const u32 gMonPalette_DarumakaGalarian[]; -extern const u32 gMonPalette_DarmanitanGalarian[]; +extern const u32 gMonPalette_DarmanitanGalarianStandardMode[]; extern const u32 gMonPalette_YamaskGalarian[]; extern const u32 gMonPalette_StunfiskGalarian[]; #endif @@ -3745,7 +3778,7 @@ extern const u32 gMonPalette_ArceusFairy[]; extern const u32 gMonPalette_BasculinBlueStriped[]; extern const u32 gMonPalette_BasculinWhiteStriped[]; extern const u32 gMonPalette_DarmanitanZenMode[]; -extern const u32 gMonPalette_DarmanitanZenModeGalarian[]; +extern const u32 gMonPalette_DarmanitanGalarianZenMode[]; extern const u32 gMonPalette_DeerlingSummer[]; extern const u32 gMonPalette_DeerlingAutumn[]; extern const u32 gMonPalette_DeerlingWinter[]; @@ -3875,6 +3908,39 @@ extern const u32 gMonPalette_CalyrexIceRider[]; extern const u32 gMonPalette_CalyrexShadowRider[]; extern const u32 gMonPalette_EnamorusTherian[]; extern const u32 gMonPalette_BasculegionFemale[]; +extern const u32 gMonPalette_VenusaurGigantamax[]; +extern const u32 gMonPalette_CharizardGigantamax[]; +extern const u32 gMonPalette_BlastoiseGigantamax[]; +extern const u32 gMonPalette_ButterfreeGigantamax[]; +extern const u32 gMonPalette_PikachuGigantamax[]; +extern const u32 gMonPalette_MeowthGigantamax[]; +extern const u32 gMonPalette_MachampGigantamax[]; +extern const u32 gMonPalette_GengarGigantamax[]; +extern const u32 gMonPalette_KinglerGigantamax[]; +extern const u32 gMonPalette_LaprasGigantamax[]; +extern const u32 gMonPalette_EeveeGigantamax[]; +extern const u32 gMonPalette_SnorlaxGigantamax[]; +extern const u32 gMonPalette_GarbodorGigantamax[]; +extern const u32 gMonPalette_MelmetalGigantamax[]; +extern const u32 gMonPalette_RillaboomGigantamax[]; +extern const u32 gMonPalette_CinderaceGigantamax[]; +extern const u32 gMonPalette_InteleonGigantamax[]; +extern const u32 gMonPalette_CorviknightGigantamax[]; +extern const u32 gMonPalette_OrbeetleGigantamax[]; +extern const u32 gMonPalette_DrednawGigantamax[]; +extern const u32 gMonPalette_CoalossalGigantamax[]; +extern const u32 gMonPalette_FlappleGigantamax[]; +extern const u32 gMonPalette_AppletunGigantamax[]; +extern const u32 gMonPalette_SandacondaGigantamax[]; +extern const u32 gMonPalette_ToxtricityGigantamax[]; +extern const u32 gMonPalette_CentiskorchGigantamax[]; +extern const u32 gMonPalette_HattereneGigantamax[]; +extern const u32 gMonPalette_GrimmsnarlGigantamax[]; +extern const u32 gMonPalette_AlcremieGigantamax[]; +extern const u32 gMonPalette_CopperajahGigantamax[]; +extern const u32 gMonPalette_DuraludonGigantamax[]; +extern const u32 gMonPalette_UrshifuSingleStrikeGigantamax[]; +extern const u32 gMonPalette_UrshifuRapidStrikeGigantamax[]; #endif extern const u32 gMonPalette_Egg[]; @@ -4230,7 +4296,7 @@ extern const u32 gMonShinyPalette_Anorith[]; extern const u32 gMonShinyPalette_Armaldo[]; extern const u32 gMonShinyPalette_Feebas[]; extern const u32 gMonShinyPalette_Milotic[]; -extern const u32 gMonShinyPalette_Castform[]; +extern const u32 gMonShinyPalette_CastformNormal[]; extern const u32 gMonShinyPalette_Kecleon[]; extern const u32 gMonShinyPalette_Shuppet[]; extern const u32 gMonShinyPalette_Banette[]; @@ -4265,7 +4331,7 @@ extern const u32 gMonShinyPalette_Kyogre[]; extern const u32 gMonShinyPalette_Groudon[]; extern const u32 gMonShinyPalette_Rayquaza[]; extern const u32 gMonShinyPalette_Jirachi[]; -extern const u32 gMonShinyPalette_Deoxys[]; +extern const u32 gMonShinyPalette_DeoxysNormal[]; #if P_GEN_4_POKEMON == TRUE extern const u32 gMonShinyPalette_Turtwig[]; extern const u32 gMonShinyPalette_Grotle[]; @@ -4292,8 +4358,8 @@ extern const u32 gMonShinyPalette_Cranidos[]; extern const u32 gMonShinyPalette_Rampardos[]; extern const u32 gMonShinyPalette_Shieldon[]; extern const u32 gMonShinyPalette_Bastiodon[]; -extern const u32 gMonShinyPalette_Burmy[]; -extern const u32 gMonShinyPalette_Wormadam[]; +extern const u32 gMonShinyPalette_BurmyPlantCloak[]; +extern const u32 gMonShinyPalette_WormadamPlantCloak[]; extern const u32 gMonShinyPalette_Mothim[]; extern const u32 gMonShinyPalette_Combee[]; extern const u32 gMonShinyPalette_CombeeF[]; @@ -4302,9 +4368,9 @@ extern const u32 gMonShinyPalette_Pachirisu[]; extern const u32 gMonShinyPalette_Buizel[]; extern const u32 gMonShinyPalette_Floatzel[]; extern const u32 gMonShinyPalette_Cherubi[]; -extern const u32 gMonShinyPalette_Cherrim[]; -extern const u32 gMonShinyPalette_Shellos[]; -extern const u32 gMonShinyPalette_Gastrodon[]; +extern const u32 gMonShinyPalette_CherrimOvercast[]; +extern const u32 gMonShinyPalette_ShellosWestSea[]; +extern const u32 gMonShinyPalette_GastrodonWestSea[]; extern const u32 gMonShinyPalette_Ambipom[]; extern const u32 gMonShinyPalette_Drifloon[]; extern const u32 gMonShinyPalette_Drifblim[]; @@ -4370,12 +4436,12 @@ extern const u32 gMonShinyPalette_Dialga[]; extern const u32 gMonShinyPalette_Palkia[]; extern const u32 gMonShinyPalette_Heatran[]; extern const u32 gMonShinyPalette_Regigigas[]; -extern const u32 gMonShinyPalette_Giratina[]; +extern const u32 gMonShinyPalette_GiratinaAltered[]; extern const u32 gMonShinyPalette_Cresselia[]; extern const u32 gMonShinyPalette_Phione[]; extern const u32 gMonShinyPalette_Manaphy[]; extern const u32 gMonShinyPalette_Darkrai[]; -extern const u32 gMonShinyPalette_Shaymin[]; +extern const u32 gMonShinyPalette_ShayminLand[]; extern const u32 gMonShinyPalette_Arceus[]; #endif #if P_GEN_5_POKEMON == TRUE @@ -4436,12 +4502,12 @@ extern const u32 gMonShinyPalette_Cottonee[]; extern const u32 gMonShinyPalette_Whimsicott[]; extern const u32 gMonShinyPalette_Petilil[]; extern const u32 gMonShinyPalette_Lilligant[]; -extern const u32 gMonShinyPalette_Basculin[]; +extern const u32 gMonShinyPalette_BasculinRedStriped[]; extern const u32 gMonShinyPalette_Sandile[]; extern const u32 gMonShinyPalette_Krokorok[]; extern const u32 gMonShinyPalette_Krookodile[]; extern const u32 gMonShinyPalette_Darumaka[]; -extern const u32 gMonShinyPalette_Darmanitan[]; +extern const u32 gMonShinyPalette_DarmanitanStandardMode[]; extern const u32 gMonShinyPalette_Maractus[]; extern const u32 gMonShinyPalette_Dwebble[]; extern const u32 gMonShinyPalette_Crustle[]; @@ -4471,8 +4537,8 @@ extern const u32 gMonShinyPalette_Swanna[]; extern const u32 gMonShinyPalette_Vanillite[]; extern const u32 gMonShinyPalette_Vanillish[]; extern const u32 gMonShinyPalette_Vanilluxe[]; -extern const u32 gMonShinyPalette_Deerling[]; -extern const u32 gMonShinyPalette_Sawsbuck[]; +extern const u32 gMonShinyPalette_DeerlingSpring[]; +extern const u32 gMonShinyPalette_SawsbuckSpring[]; extern const u32 gMonShinyPalette_Emolga[]; extern const u32 gMonShinyPalette_Karrablast[]; extern const u32 gMonShinyPalette_Escavalier[]; @@ -4529,14 +4595,14 @@ extern const u32 gMonShinyPalette_Volcarona[]; extern const u32 gMonShinyPalette_Cobalion[]; extern const u32 gMonShinyPalette_Terrakion[]; extern const u32 gMonShinyPalette_Virizion[]; -extern const u32 gMonShinyPalette_Tornadus[]; -extern const u32 gMonShinyPalette_Thundurus[]; +extern const u32 gMonShinyPalette_TornadusIncarnate[]; +extern const u32 gMonShinyPalette_ThundurusIncarnate[]; extern const u32 gMonShinyPalette_Reshiram[]; extern const u32 gMonShinyPalette_Zekrom[]; -extern const u32 gMonShinyPalette_Landorus[]; +extern const u32 gMonShinyPalette_LandorusIncarnate[]; extern const u32 gMonShinyPalette_Kyurem[]; -extern const u32 gMonShinyPalette_Keldeo[]; -extern const u32 gMonShinyPalette_Meloetta[]; +extern const u32 gMonShinyPalette_KeldeoOrdinary[]; +extern const u32 gMonShinyPalette_MeloettaAria[]; extern const u32 gMonShinyPalette_Genesect[]; #endif #if P_GEN_6_POKEMON == TRUE @@ -4556,22 +4622,22 @@ extern const u32 gMonShinyPalette_Fletchinder[]; extern const u32 gMonShinyPalette_Talonflame[]; extern const u32 gMonShinyPalette_Scatterbug[]; extern const u32 gMonShinyPalette_Spewpa[]; -extern const u32 gMonShinyPalette_Vivillon[]; +extern const u32 gMonShinyPalette_VivillonIcySnow[]; extern const u32 gMonShinyPalette_Litleo[]; extern const u32 gMonShinyPalette_Pyroar[]; -extern const u32 gMonShinyPalette_Flabebe[]; -extern const u32 gMonShinyPalette_Floette[]; -extern const u32 gMonShinyPalette_Florges[]; +extern const u32 gMonShinyPalette_FlabebeRedFlower[]; +extern const u32 gMonShinyPalette_FloetteRedFlower[]; +extern const u32 gMonShinyPalette_FlorgesRedFlower[]; extern const u32 gMonShinyPalette_Skiddo[]; extern const u32 gMonShinyPalette_Gogoat[]; extern const u32 gMonShinyPalette_Pancham[]; extern const u32 gMonShinyPalette_Pangoro[]; -extern const u32 gMonShinyPalette_Furfrou[]; +extern const u32 gMonShinyPalette_FurfrouNatural[]; extern const u32 gMonShinyPalette_Espurr[]; -extern const u32 gMonShinyPalette_Meowstic[]; +extern const u32 gMonShinyPalette_MeowsticMale[]; extern const u32 gMonShinyPalette_Honedge[]; extern const u32 gMonShinyPalette_Doublade[]; -extern const u32 gMonShinyPalette_Aegislash[]; +extern const u32 gMonShinyPalette_AegislashShield[]; extern const u32 gMonShinyPalette_Spritzee[]; extern const u32 gMonShinyPalette_Aromatisse[]; extern const u32 gMonShinyPalette_Swirlix[]; @@ -4606,11 +4672,11 @@ extern const u32 gMonShinyPalette_Bergmite[]; extern const u32 gMonShinyPalette_Avalugg[]; extern const u32 gMonShinyPalette_Noibat[]; extern const u32 gMonShinyPalette_Noivern[]; -extern const u32 gMonShinyPalette_Xerneas[]; +extern const u32 gMonShinyPalette_XerneasNeutral[]; extern const u32 gMonShinyPalette_Yveltal[]; -extern const u32 gMonShinyPalette_Zygarde[]; +extern const u32 gMonShinyPalette_Zygarde50[]; extern const u32 gMonShinyPalette_Diancie[]; -extern const u32 gMonShinyPalette_Hoopa[]; +extern const u32 gMonShinyPalette_HoopaConfined[]; extern const u32 gMonShinyPalette_Volcanion[]; #endif #if P_GEN_7_POKEMON == TRUE @@ -4633,12 +4699,12 @@ extern const u32 gMonShinyPalette_Charjabug[]; extern const u32 gMonShinyPalette_Vikavolt[]; extern const u32 gMonShinyPalette_Crabrawler[]; extern const u32 gMonShinyPalette_Crabominable[]; -extern const u32 gMonShinyPalette_Oricorio[]; +extern const u32 gMonShinyPalette_OricorioBaile[]; extern const u32 gMonShinyPalette_Cutiefly[]; extern const u32 gMonShinyPalette_Ribombee[]; extern const u32 gMonShinyPalette_Rockruff[]; -extern const u32 gMonShinyPalette_Lycanroc[]; -extern const u32 gMonShinyPalette_Wishiwashi[]; +extern const u32 gMonShinyPalette_LycanrocMidday[]; +extern const u32 gMonShinyPalette_WishiwashiSolo[]; extern const u32 gMonShinyPalette_Mareanie[]; extern const u32 gMonShinyPalette_Toxapex[]; extern const u32 gMonShinyPalette_Mudbray[]; @@ -4665,12 +4731,12 @@ extern const u32 gMonShinyPalette_Sandygast[]; extern const u32 gMonShinyPalette_Palossand[]; extern const u32 gMonShinyPalette_Pyukumuku[]; extern const u32 gMonShinyPalette_TypeNull[]; -extern const u32 gMonShinyPalette_Silvally[]; -extern const u32 gMonShinyPalette_Minior[]; +extern const u32 gMonShinyPalette_SilvallyNormal[]; +extern const u32 gMonShinyPalette_MiniorMeteor[]; extern const u32 gMonShinyPalette_Komala[]; extern const u32 gMonShinyPalette_Turtonator[]; extern const u32 gMonShinyPalette_Togedemaru[]; -extern const u32 gMonShinyPalette_Mimikyu[]; +extern const u32 gMonShinyPalette_MimikyuDisguised[]; extern const u32 gMonShinyPalette_Bruxish[]; extern const u32 gMonShinyPalette_Drampa[]; extern const u32 gMonShinyPalette_Dhelmise[]; @@ -4743,7 +4809,7 @@ extern const u32 gMonShinyPalette_Cramorant[]; extern const u32 gMonShinyPalette_Arrokuda[]; extern const u32 gMonShinyPalette_Barraskewda[]; extern const u32 gMonShinyPalette_Toxel[]; -extern const u32 gMonShinyPalette_Toxtricity[]; +extern const u32 gMonShinyPalette_ToxtricityAmped[]; extern const u32 gMonShinyPalette_Sizzlipede[]; extern const u32 gMonShinyPalette_Centiskorch[]; extern const u32 gMonShinyPalette_Clobbopus[]; @@ -4769,9 +4835,9 @@ extern const u32 gMonShinyPalette_Pincurchin[]; extern const u32 gMonShinyPalette_Snom[]; extern const u32 gMonShinyPalette_Frosmoth[]; extern const u32 gMonShinyPalette_Stonjourner[]; -extern const u32 gMonShinyPalette_Eiscue[]; -extern const u32 gMonShinyPalette_Indeedee[]; -extern const u32 gMonShinyPalette_Morpeko[]; +extern const u32 gMonShinyPalette_EiscueIceFace[]; +extern const u32 gMonShinyPalette_IndeedeeMale[]; +extern const u32 gMonShinyPalette_MorpekoFullBelly[]; extern const u32 gMonShinyPalette_Cufant[]; extern const u32 gMonShinyPalette_Copperajah[]; extern const u32 gMonShinyPalette_Dracozolt[]; @@ -4782,11 +4848,11 @@ extern const u32 gMonShinyPalette_Duraludon[]; extern const u32 gMonShinyPalette_Dreepy[]; extern const u32 gMonShinyPalette_Drakloak[]; extern const u32 gMonShinyPalette_Dragapult[]; -extern const u32 gMonShinyPalette_Zacian[]; -extern const u32 gMonShinyPalette_Zamazenta[]; +extern const u32 gMonShinyPalette_ZacianHeroOfManyBattles[]; +extern const u32 gMonShinyPalette_ZamazentaHeroOfManyBattles[]; extern const u32 gMonShinyPalette_Eternatus[]; extern const u32 gMonShinyPalette_Kubfu[]; -extern const u32 gMonShinyPalette_Urshifu[]; +extern const u32 gMonShinyPalette_UrshifuSingleStrikeStyle[]; extern const u32 gMonShinyPalette_Zarude[]; extern const u32 gMonShinyPalette_Regieleki[]; extern const u32 gMonShinyPalette_Regidrago[]; @@ -4796,10 +4862,10 @@ extern const u32 gMonShinyPalette_Calyrex[]; extern const u32 gMonShinyPalette_Wyrdeer[]; extern const u32 gMonShinyPalette_Kleavor[]; extern const u32 gMonShinyPalette_Ursaluna[]; -extern const u32 gMonShinyPalette_Basculegion[]; +extern const u32 gMonShinyPalette_BasculegionMale[]; extern const u32 gMonShinyPalette_Sneasler[]; extern const u32 gMonShinyPalette_Overqwil[]; -extern const u32 gMonShinyPalette_Enamorus[]; +extern const u32 gMonShinyPalette_EnamorusIncarnate[]; #endif extern const u32 gMonShinyPalette_VenusaurMega[]; extern const u32 gMonShinyPalette_CharizardMegaX[]; @@ -4892,7 +4958,7 @@ extern const u32 gMonShinyPalette_ZigzagoonGalarian[]; extern const u32 gMonShinyPalette_LinooneGalarian[]; #if P_GEN_5_POKEMON == TRUE extern const u32 gMonShinyPalette_DarumakaGalarian[]; -extern const u32 gMonShinyPalette_DarmanitanGalarian[]; +extern const u32 gMonShinyPalette_DarmanitanGalarianStandardMode[]; extern const u32 gMonShinyPalette_YamaskGalarian[]; extern const u32 gMonShinyPalette_StunfiskGalarian[]; #endif @@ -4978,7 +5044,7 @@ extern const u32 gMonShinyPalette_ArceusFairy[]; extern const u32 gMonShinyPalette_BasculinBlueStriped[]; extern const u32 gMonShinyPalette_BasculinWhiteStriped[]; extern const u32 gMonShinyPalette_DarmanitanZenMode[]; -extern const u32 gMonShinyPalette_DarmanitanZenModeGalarian[]; +extern const u32 gMonShinyPalette_DarmanitanGalarianZenMode[]; extern const u32 gMonShinyPalette_DeerlingSummer[]; extern const u32 gMonShinyPalette_DeerlingAutumn[]; extern const u32 gMonShinyPalette_DeerlingWinter[]; @@ -5102,6 +5168,39 @@ extern const u32 gMonShinyPalette_CalyrexIceRider[]; extern const u32 gMonShinyPalette_CalyrexShadowRider[]; extern const u32 gMonShinyPalette_EnamorusTherian[]; extern const u32 gMonShinyPalette_BasculegionFemale[]; +extern const u32 gMonShinyPalette_VenusaurGigantamax[]; +extern const u32 gMonShinyPalette_CharizardGigantamax[]; +extern const u32 gMonShinyPalette_BlastoiseGigantamax[]; +extern const u32 gMonShinyPalette_ButterfreeGigantamax[]; +extern const u32 gMonShinyPalette_PikachuGigantamax[]; +extern const u32 gMonShinyPalette_MeowthGigantamax[]; +extern const u32 gMonShinyPalette_MachampGigantamax[]; +extern const u32 gMonShinyPalette_GengarGigantamax[]; +extern const u32 gMonShinyPalette_KinglerGigantamax[]; +extern const u32 gMonShinyPalette_LaprasGigantamax[]; +extern const u32 gMonShinyPalette_EeveeGigantamax[]; +extern const u32 gMonShinyPalette_SnorlaxGigantamax[]; +extern const u32 gMonShinyPalette_GarbodorGigantamax[]; +extern const u32 gMonShinyPalette_MelmetalGigantamax[]; +extern const u32 gMonShinyPalette_RillaboomGigantamax[]; +extern const u32 gMonShinyPalette_CinderaceGigantamax[]; +extern const u32 gMonShinyPalette_InteleonGigantamax[]; +extern const u32 gMonShinyPalette_CorviknightGigantamax[]; +extern const u32 gMonShinyPalette_OrbeetleGigantamax[]; +extern const u32 gMonShinyPalette_DrednawGigantamax[]; +extern const u32 gMonShinyPalette_CoalossalGigantamax[]; +extern const u32 gMonShinyPalette_FlappleGigantamax[]; +extern const u32 gMonShinyPalette_AppletunGigantamax[]; +extern const u32 gMonShinyPalette_SandacondaGigantamax[]; +extern const u32 gMonShinyPalette_ToxtricityGigantamax[]; +extern const u32 gMonShinyPalette_CentiskorchGigantamax[]; +extern const u32 gMonShinyPalette_HattereneGigantamax[]; +extern const u32 gMonShinyPalette_GrimmsnarlGigantamax[]; +extern const u32 gMonShinyPalette_AlcremieGigantamax[]; +extern const u32 gMonShinyPalette_CopperajahGigantamax[]; +extern const u32 gMonShinyPalette_DuraludonGigantamax[]; +extern const u32 gMonShinyPalette_UrshifuSingleStrikeGigantamax[]; +extern const u32 gMonShinyPalette_UrshifuRapidStrikeGigantamax[]; #endif extern const u8 gMonIcon_QuestionMark[]; @@ -5455,7 +5554,7 @@ extern const u8 gMonIcon_Anorith[]; extern const u8 gMonIcon_Armaldo[]; extern const u8 gMonIcon_Feebas[]; extern const u8 gMonIcon_Milotic[]; -extern const u8 gMonIcon_Castform[]; +extern const u8 gMonIcon_CastformNormal[]; extern const u8 gMonIcon_Kecleon[]; extern const u8 gMonIcon_Shuppet[]; extern const u8 gMonIcon_Banette[]; @@ -5490,7 +5589,7 @@ extern const u8 gMonIcon_Kyogre[]; extern const u8 gMonIcon_Groudon[]; extern const u8 gMonIcon_Rayquaza[]; extern const u8 gMonIcon_Jirachi[]; -extern const u8 gMonIcon_Deoxys[]; +extern const u8 gMonIcon_DeoxysNormal[]; #if P_GEN_4_POKEMON == TRUE extern const u8 gMonIcon_Turtwig[]; extern const u8 gMonIcon_Grotle[]; @@ -5517,8 +5616,8 @@ extern const u8 gMonIcon_Cranidos[]; extern const u8 gMonIcon_Rampardos[]; extern const u8 gMonIcon_Shieldon[]; extern const u8 gMonIcon_Bastiodon[]; -extern const u8 gMonIcon_Burmy[]; -extern const u8 gMonIcon_Wormadam[]; +extern const u8 gMonIcon_BurmyPlantCloak[]; +extern const u8 gMonIcon_WormadamPlantCloak[]; extern const u8 gMonIcon_Mothim[]; extern const u8 gMonIcon_Combee[]; extern const u8 gMonIcon_Vespiquen[]; @@ -5526,9 +5625,9 @@ extern const u8 gMonIcon_Pachirisu[]; extern const u8 gMonIcon_Buizel[]; extern const u8 gMonIcon_Floatzel[]; extern const u8 gMonIcon_Cherubi[]; -extern const u8 gMonIcon_Cherrim[]; -extern const u8 gMonIcon_Shellos[]; -extern const u8 gMonIcon_Gastrodon[]; +extern const u8 gMonIcon_CherrimOvercast[]; +extern const u8 gMonIcon_ShellosWestSea[]; +extern const u8 gMonIcon_GastrodonWestSea[]; extern const u8 gMonIcon_Ambipom[]; extern const u8 gMonIcon_Drifloon[]; extern const u8 gMonIcon_Drifblim[]; @@ -5596,12 +5695,12 @@ extern const u8 gMonIcon_Dialga[]; extern const u8 gMonIcon_Palkia[]; extern const u8 gMonIcon_Heatran[]; extern const u8 gMonIcon_Regigigas[]; -extern const u8 gMonIcon_Giratina[]; +extern const u8 gMonIcon_GiratinaAltered[]; extern const u8 gMonIcon_Cresselia[]; extern const u8 gMonIcon_Phione[]; extern const u8 gMonIcon_Manaphy[]; extern const u8 gMonIcon_Darkrai[]; -extern const u8 gMonIcon_Shaymin[]; +extern const u8 gMonIcon_ShayminLand[]; extern const u8 gMonIcon_Arceus[]; #endif #if P_GEN_5_POKEMON == TRUE @@ -5662,12 +5761,12 @@ extern const u8 gMonIcon_Cottonee[]; extern const u8 gMonIcon_Whimsicott[]; extern const u8 gMonIcon_Petilil[]; extern const u8 gMonIcon_Lilligant[]; -extern const u8 gMonIcon_Basculin[]; +extern const u8 gMonIcon_BasculinRedStriped[]; extern const u8 gMonIcon_Sandile[]; extern const u8 gMonIcon_Krokorok[]; extern const u8 gMonIcon_Krookodile[]; extern const u8 gMonIcon_Darumaka[]; -extern const u8 gMonIcon_Darmanitan[]; +extern const u8 gMonIcon_DarmanitanStandardMode[]; extern const u8 gMonIcon_Maractus[]; extern const u8 gMonIcon_Dwebble[]; extern const u8 gMonIcon_Crustle[]; @@ -5697,8 +5796,8 @@ extern const u8 gMonIcon_Swanna[]; extern const u8 gMonIcon_Vanillite[]; extern const u8 gMonIcon_Vanillish[]; extern const u8 gMonIcon_Vanilluxe[]; -extern const u8 gMonIcon_Deerling[]; -extern const u8 gMonIcon_Sawsbuck[]; +extern const u8 gMonIcon_DeerlingSpring[]; +extern const u8 gMonIcon_SawsbuckSpring[]; extern const u8 gMonIcon_Emolga[]; extern const u8 gMonIcon_Karrablast[]; extern const u8 gMonIcon_Escavalier[]; @@ -5755,14 +5854,14 @@ extern const u8 gMonIcon_Volcarona[]; extern const u8 gMonIcon_Cobalion[]; extern const u8 gMonIcon_Terrakion[]; extern const u8 gMonIcon_Virizion[]; -extern const u8 gMonIcon_Tornadus[]; -extern const u8 gMonIcon_Thundurus[]; +extern const u8 gMonIcon_TornadusIncarnate[]; +extern const u8 gMonIcon_ThundurusIncarnate[]; extern const u8 gMonIcon_Reshiram[]; extern const u8 gMonIcon_Zekrom[]; -extern const u8 gMonIcon_Landorus[]; +extern const u8 gMonIcon_LandorusIncarnate[]; extern const u8 gMonIcon_Kyurem[]; -extern const u8 gMonIcon_Keldeo[]; -extern const u8 gMonIcon_Meloetta[]; +extern const u8 gMonIcon_KeldeoOrdinary[]; +extern const u8 gMonIcon_MeloettaAria[]; extern const u8 gMonIcon_Genesect[]; #endif #if P_GEN_6_POKEMON == TRUE @@ -5782,23 +5881,23 @@ extern const u8 gMonIcon_Fletchinder[]; extern const u8 gMonIcon_Talonflame[]; extern const u8 gMonIcon_Scatterbug[]; extern const u8 gMonIcon_Spewpa[]; -extern const u8 gMonIcon_Vivillon[]; +extern const u8 gMonIcon_VivillonIcySnow[]; extern const u8 gMonIcon_Litleo[]; extern const u8 gMonIcon_Pyroar[]; extern const u8 gMonIcon_PyroarF[]; -extern const u8 gMonIcon_Flabebe[]; -extern const u8 gMonIcon_Floette[]; -extern const u8 gMonIcon_Florges[]; +extern const u8 gMonIcon_FlabebeRedFlower[]; +extern const u8 gMonIcon_FloetteRedFlower[]; +extern const u8 gMonIcon_FlorgesRedFlower[]; extern const u8 gMonIcon_Skiddo[]; extern const u8 gMonIcon_Gogoat[]; extern const u8 gMonIcon_Pancham[]; extern const u8 gMonIcon_Pangoro[]; -extern const u8 gMonIcon_Furfrou[]; +extern const u8 gMonIcon_FurfrouNatural[]; extern const u8 gMonIcon_Espurr[]; -extern const u8 gMonIcon_Meowstic[]; +extern const u8 gMonIcon_MeowsticMale[]; extern const u8 gMonIcon_Honedge[]; extern const u8 gMonIcon_Doublade[]; -extern const u8 gMonIcon_Aegislash[]; +extern const u8 gMonIcon_AegislashShield[]; extern const u8 gMonIcon_Spritzee[]; extern const u8 gMonIcon_Aromatisse[]; extern const u8 gMonIcon_Swirlix[]; @@ -5833,11 +5932,11 @@ extern const u8 gMonIcon_Bergmite[]; extern const u8 gMonIcon_Avalugg[]; extern const u8 gMonIcon_Noibat[]; extern const u8 gMonIcon_Noivern[]; -extern const u8 gMonIcon_Xerneas[]; +extern const u8 gMonIcon_XerneasNeutral[]; extern const u8 gMonIcon_Yveltal[]; -extern const u8 gMonIcon_Zygarde[]; +extern const u8 gMonIcon_Zygarde50[]; extern const u8 gMonIcon_Diancie[]; -extern const u8 gMonIcon_Hoopa[]; +extern const u8 gMonIcon_HoopaConfined[]; extern const u8 gMonIcon_Volcanion[]; #endif #if P_GEN_7_POKEMON == TRUE @@ -5860,12 +5959,12 @@ extern const u8 gMonIcon_Charjabug[]; extern const u8 gMonIcon_Vikavolt[]; extern const u8 gMonIcon_Crabrawler[]; extern const u8 gMonIcon_Crabominable[]; -extern const u8 gMonIcon_Oricorio[]; +extern const u8 gMonIcon_OricorioBaile[]; extern const u8 gMonIcon_Cutiefly[]; extern const u8 gMonIcon_Ribombee[]; extern const u8 gMonIcon_Rockruff[]; -extern const u8 gMonIcon_Lycanroc[]; -extern const u8 gMonIcon_Wishiwashi[]; +extern const u8 gMonIcon_LycanrocMidday[]; +extern const u8 gMonIcon_WishiwashiSolo[]; extern const u8 gMonIcon_Mareanie[]; extern const u8 gMonIcon_Toxapex[]; extern const u8 gMonIcon_Mudbray[]; @@ -5893,11 +5992,11 @@ extern const u8 gMonIcon_Palossand[]; extern const u8 gMonIcon_Pyukumuku[]; extern const u8 gMonIcon_TypeNull[]; extern const u8 gMonIcon_Silvally[]; -extern const u8 gMonIcon_Minior[]; +extern const u8 gMonIcon_MiniorMeteor[]; extern const u8 gMonIcon_Komala[]; extern const u8 gMonIcon_Turtonator[]; extern const u8 gMonIcon_Togedemaru[]; -extern const u8 gMonIcon_Mimikyu[]; +extern const u8 gMonIcon_MimikyuDisguised[]; extern const u8 gMonIcon_Bruxish[]; extern const u8 gMonIcon_Drampa[]; extern const u8 gMonIcon_Dhelmise[]; @@ -5970,7 +6069,7 @@ extern const u8 gMonIcon_Cramorant[]; extern const u8 gMonIcon_Arrokuda[]; extern const u8 gMonIcon_Barraskewda[]; extern const u8 gMonIcon_Toxel[]; -extern const u8 gMonIcon_Toxtricity[]; +extern const u8 gMonIcon_ToxtricityAmped[]; extern const u8 gMonIcon_Sizzlipede[]; extern const u8 gMonIcon_Centiskorch[]; extern const u8 gMonIcon_Clobbopus[]; @@ -5996,9 +6095,9 @@ extern const u8 gMonIcon_Pincurchin[]; extern const u8 gMonIcon_Snom[]; extern const u8 gMonIcon_Frosmoth[]; extern const u8 gMonIcon_Stonjourner[]; -extern const u8 gMonIcon_Eiscue[]; -extern const u8 gMonIcon_Indeedee[]; -extern const u8 gMonIcon_Morpeko[]; +extern const u8 gMonIcon_EiscueIceFace[]; +extern const u8 gMonIcon_IndeedeeMale[]; +extern const u8 gMonIcon_MorpekoFullBelly[]; extern const u8 gMonIcon_Cufant[]; extern const u8 gMonIcon_Copperajah[]; extern const u8 gMonIcon_Dracozolt[]; @@ -6009,11 +6108,11 @@ extern const u8 gMonIcon_Duraludon[]; extern const u8 gMonIcon_Dreepy[]; extern const u8 gMonIcon_Drakloak[]; extern const u8 gMonIcon_Dragapult[]; -extern const u8 gMonIcon_Zacian[]; -extern const u8 gMonIcon_Zamazenta[]; +extern const u8 gMonIcon_ZacianHeroOfManyBattles[]; +extern const u8 gMonIcon_ZamazentaHeroOfManyBattles[]; extern const u8 gMonIcon_Eternatus[]; extern const u8 gMonIcon_Kubfu[]; -extern const u8 gMonIcon_Urshifu[]; +extern const u8 gMonIcon_UrshifuSingleStrikeStyle[]; extern const u8 gMonIcon_Zarude[]; extern const u8 gMonIcon_Regieleki[]; extern const u8 gMonIcon_Regidrago[]; @@ -6023,10 +6122,10 @@ extern const u8 gMonIcon_Calyrex[]; extern const u8 gMonIcon_Wyrdeer[]; extern const u8 gMonIcon_Kleavor[]; extern const u8 gMonIcon_Ursaluna[]; -extern const u8 gMonIcon_Basculegion[]; +extern const u8 gMonIcon_BasculegionMale[]; extern const u8 gMonIcon_Sneasler[]; extern const u8 gMonIcon_Overqwil[]; -extern const u8 gMonIcon_Enamorus[]; +extern const u8 gMonIcon_EnamorusIncarnate[]; #endif extern const u8 gMonIcon_VenusaurMega[]; extern const u8 gMonIcon_CharizardMegaX[]; @@ -6119,7 +6218,7 @@ extern const u8 gMonIcon_ZigzagoonGalarian[]; extern const u8 gMonIcon_LinooneGalarian[]; #if P_GEN_5_POKEMON == TRUE extern const u8 gMonIcon_DarumakaGalarian[]; -extern const u8 gMonIcon_DarmanitanGalarian[]; +extern const u8 gMonIcon_DarmanitanGalarianStandardMode[]; extern const u8 gMonIcon_YamaskGalarian[]; extern const u8 gMonIcon_StunfiskGalarian[]; #endif @@ -6215,7 +6314,7 @@ extern const u8 gMonIcon_ShayminSky[]; extern const u8 gMonIcon_BasculinBlueStriped[]; extern const u8 gMonIcon_BasculinWhiteStriped[]; extern const u8 gMonIcon_DarmanitanZenMode[]; -extern const u8 gMonIcon_DarmanitanZenModeGalarian[]; +extern const u8 gMonIcon_DarmanitanGalarianZenMode[]; extern const u8 gMonIcon_DeerlingSummer[]; extern const u8 gMonIcon_DeerlingAutumn[]; extern const u8 gMonIcon_DeerlingWinter[]; @@ -6304,14 +6403,14 @@ extern const u8 gMonIcon_MagearnaOriginalColor[]; extern const u8 gMonIcon_CramorantGulping[]; extern const u8 gMonIcon_CramorantGorging[]; extern const u8 gMonIcon_ToxtricityLowKey[]; -//extern const u8 gMonIcon_AlcremieRubyCream[]; -//extern const u8 gMonIcon_AlcremieMatchaCream[]; -//extern const u8 gMonIcon_AlcremieMintCream[]; -//extern const u8 gMonIcon_AlcremieLemonCream[]; -//extern const u8 gMonIcon_AlcremieSaltedCream[]; -//extern const u8 gMonIcon_AlcremieRubySwirl[]; -//extern const u8 gMonIcon_AlcremieCaramelSwirl[]; -//extern const u8 gMonIcon_AlcremieRainbowSwirl[]; +//extern const u8 gMonIcon_AlcremieStrawberryRubyCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryMatchaCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryMintCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryLemonCream[]; +//extern const u8 gMonIcon_AlcremieStrawberrySaltedCream[]; +//extern const u8 gMonIcon_AlcremieStrawberryRubySwirl[]; +//extern const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[]; +//extern const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[]; extern const u8 gMonIcon_EiscueNoiceFace[]; extern const u8 gMonIcon_IndeedeeFemale[]; extern const u8 gMonIcon_MorpekoHangry[]; @@ -6323,6 +6422,39 @@ extern const u8 gMonIcon_CalyrexIceRider[]; extern const u8 gMonIcon_CalyrexShadowRider[]; extern const u8 gMonIcon_EnamorusTherian[]; extern const u8 gMonIcon_BasculegionFemale[]; +extern const u8 gMonIcon_VenusaurGigantamax[]; +extern const u8 gMonIcon_CharizardGigantamax[]; +extern const u8 gMonIcon_BlastoiseGigantamax[]; +extern const u8 gMonIcon_ButterfreeGigantamax[]; +extern const u8 gMonIcon_PikachuGigantamax[]; +extern const u8 gMonIcon_MeowthGigantamax[]; +extern const u8 gMonIcon_MachampGigantamax[]; +extern const u8 gMonIcon_GengarGigantamax[]; +extern const u8 gMonIcon_KinglerGigantamax[]; +extern const u8 gMonIcon_LaprasGigantamax[]; +extern const u8 gMonIcon_EeveeGigantamax[]; +extern const u8 gMonIcon_SnorlaxGigantamax[]; +extern const u8 gMonIcon_GarbodorGigantamax[]; +extern const u8 gMonIcon_MelmetalGigantamax[]; +extern const u8 gMonIcon_RillaboomGigantamax[]; +extern const u8 gMonIcon_CinderaceGigantamax[]; +extern const u8 gMonIcon_InteleonGigantamax[]; +extern const u8 gMonIcon_CorviknightGigantamax[]; +extern const u8 gMonIcon_OrbeetleGigantamax[]; +extern const u8 gMonIcon_DrednawGigantamax[]; +extern const u8 gMonIcon_CoalossalGigantamax[]; +extern const u8 gMonIcon_FlappleGigantamax[]; +extern const u8 gMonIcon_AppletunGigantamax[]; +extern const u8 gMonIcon_SandacondaGigantamax[]; +extern const u8 gMonIcon_ToxtricityGigantamax[]; +extern const u8 gMonIcon_CentiskorchGigantamax[]; +extern const u8 gMonIcon_HattereneGigantamax[]; +extern const u8 gMonIcon_GrimmsnarlGigantamax[]; +extern const u8 gMonIcon_AlcremieGigantamax[]; +extern const u8 gMonIcon_CopperajahGigantamax[]; +extern const u8 gMonIcon_DuraludonGigantamax[]; +extern const u8 gMonIcon_UrshifuSingleStrikeGigantamax[]; +extern const u8 gMonIcon_UrshifuRapidStrikeGigantamax[]; #endif extern const u8 gMonIcon_Egg[]; @@ -7241,6 +7373,39 @@ extern const u8 gMonFootprint_Calyrex[]; //extern const u8 gMonFootprint_Sneasler[]; //extern const u8 gMonFootprint_Overqwil[]; //extern const u8 gMonFootprint_Enamorus[]; +extern const u32 gMonFrontPic_VenusaurGigantamax[]; +extern const u32 gMonFrontPic_CharizardGigantamax[]; +extern const u32 gMonFrontPic_BlastoiseGigantamax[]; +extern const u32 gMonFrontPic_ButterfreeGigantamax[]; +extern const u32 gMonFrontPic_PikachuGigantamax[]; +extern const u32 gMonFrontPic_MeowthGigantamax[]; +extern const u32 gMonFrontPic_MachampGigantamax[]; +extern const u32 gMonFrontPic_GengarGigantamax[]; +extern const u32 gMonFrontPic_KinglerGigantamax[]; +extern const u32 gMonFrontPic_LaprasGigantamax[]; +extern const u32 gMonFrontPic_EeveeGigantamax[]; +extern const u32 gMonFrontPic_SnorlaxGigantamax[]; +extern const u32 gMonFrontPic_GarbodorGigantamax[]; +extern const u32 gMonFrontPic_MelmetalGigantamax[]; +extern const u32 gMonFrontPic_RillaboomGigantamax[]; +extern const u32 gMonFrontPic_CinderaceGigantamax[]; +extern const u32 gMonFrontPic_InteleonGigantamax[]; +extern const u32 gMonFrontPic_CorviknightGigantamax[]; +extern const u32 gMonFrontPic_OrbeetleGigantamax[]; +extern const u32 gMonFrontPic_DrednawGigantamax[]; +extern const u32 gMonFrontPic_CoalossalGigantamax[]; +extern const u32 gMonFrontPic_FlappleGigantamax[]; +extern const u32 gMonFrontPic_AppletunGigantamax[]; +extern const u32 gMonFrontPic_SandacondaGigantamax[]; +extern const u32 gMonFrontPic_ToxtricityGigantamax[]; +extern const u32 gMonFrontPic_CentiskorchGigantamax[]; +extern const u32 gMonFrontPic_HattereneGigantamax[]; +extern const u32 gMonFrontPic_GrimmsnarlGigantamax[]; +extern const u32 gMonFrontPic_AlcremieGigantamax[]; +extern const u32 gMonFrontPic_CopperajahGigantamax[]; +extern const u32 gMonFrontPic_DuraludonGigantamax[]; +extern const u32 gMonFrontPic_UrshifuSingleStrikeGigantamax[]; +extern const u32 gMonFrontPic_UrshifuRapidStrikeGigantamax[]; #endif // trainer sprites @@ -7677,41 +7842,6 @@ extern const u32 gPokedexSearchMenu_Gfx[]; extern const u32 gPokedexSearchMenuHoenn_Tilemap[]; extern const u32 gPokedexSearchMenuNational_Tilemap[]; extern const u16 gPokedexSearchMenu_Pal[]; -// pokedex HGSS -#if POKEDEX_PLUS_HGSS == TRUE -extern const u16 gPokedexPlusHGSS_Default_Pal[]; -extern const u16 gPokedexPlusHGSS_National_Pal[]; -extern const u16 gPokedexPlusHGSS_MenuSearch_Pal[]; -extern const u16 gPokedexPlusHGSS_SearchResults_Pal[]; -extern const u16 gPokedexPlusHGSS_Default_dark_Pal[]; -extern const u16 gPokedexPlusHGSS_National_dark_Pal[]; -extern const u16 gPokedexPlusHGSS_MenuSearch_dark_Pal[]; -extern const u16 gPokedexPlusHGSS_SearchResults_dark_Pal[]; -extern const u32 gPokedexPlusHGSS_MenuList_Gfx[]; -extern const u32 gPokedexPlusHGSS_MenuList_DECA_Gfx[]; -extern const u32 gPokedexPlusHGSS_Interface_Gfx[]; -extern const u32 gPokedexPlusHGSS_Interface_DECA_Gfx[]; -extern const u32 gPokedexPlusHGSS_Menu_1_Gfx[]; -extern const u32 gPokedexPlusHGSS_Menu_2_Gfx[]; -extern const u32 gPokedexPlusHGSS_Menu_3_Gfx[]; -extern const u32 gPokedexPlusHGSS_MenuSearch_Gfx[]; -extern const u32 gPokedexPlusHGSS_MenuSearch_DECA_Gfx[]; -extern const u32 gPokedexPlusHGSS_StartMenuMain_Tilemap[]; -extern const u32 gPokedexPlusHGSS_StartMenuSearchResults_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear[]; -extern const u32 gPokedexPlusHGSS_ScreenList_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenListUnderlay_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenInfo_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenStats_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenEvolution_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenEvolution_Tilemap_PE[]; -extern const u32 gPokedexPlusHGSS_ScreenForms_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenCry_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenSize_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenSearchHoenn_Tilemap[]; -extern const u32 gPokedexPlusHGSS_ScreenSearchNational_Tilemap[]; -#endif // berry tag screen extern const u32 gBerryCheck_Gfx[]; @@ -10217,6 +10347,8 @@ extern const u32 gBattleAnimSpriteGfx_Teapot[]; extern const u32 gBattleAnimSpritePal_Teapot[]; extern const u32 gBattleAnimSpriteGfx_WoodHammerHammer[]; extern const u32 gBattleAnimSpritePal_WoodHammerHammer[]; +extern const u32 gBattleAnimSpriteGfx_Snowflakes[]; +extern const u32 gBattleAnimSpritePal_Snowflakes[]; extern const u32 gBattleAnimBgImage_Dark[]; extern const u32 gBattleAnimBgImage_Ghost[]; diff --git a/include/pokedex_plus_hgss.h b/include/pokedex_plus_hgss.h index 68a4ddce4f..a309924236 100644 --- a/include/pokedex_plus_hgss.h +++ b/include/pokedex_plus_hgss.h @@ -1,10 +1,7 @@ #ifndef GUARD_POKEDEX_PLUS_HGSS_H #define GUARD_POKEDEX_PLUS_HGSS_H -#if POKEDEX_PLUS_HGSS == TRUE void CB2_OpenPokedexPlusHGSS(void); -u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum); void Task_DisplayCaughtMonDexPageHGSS(u8); -#endif #endif // GUARD_POKEDEX_PLUS_HGSS_H diff --git a/include/pokemon.h b/include/pokemon.h index 526103e58a..22c32971b2 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -333,6 +333,7 @@ struct SpeciesInfo /*0x24*/ /* 0x1F */ u8 bodyColor : 7; u8 noFlip : 1; /* 0x20 */ u16 flags; + /* 0x22 */ u8 gigantamax:1; }; struct BattleMove @@ -356,6 +357,7 @@ struct BattleMove u32 mirrorMoveBanned:1; u32 ignoresKingsRock:1; u32 highCritRatio:1; + u32 twoTurnMove:1; u32 punchingMove:1; u32 sheerForceBoost:1; u32 bitingMove:1; @@ -378,13 +380,19 @@ struct BattleMove u32 thawsUser:1; u32 ignoresSubstitute:1; u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit. - u32 meFirstBanned:1; + u32 forcePressure:1; + u32 cantUseTwice:1; u32 gravityBanned:1; + u32 healBlockBanned:1; + u32 meFirstBanned:1; u32 mimicBanned:1; u32 metronomeBanned:1; u32 copycatBanned:1; + u32 assistBanned:1; // Matches same moves as copycatBanned + semi-invulnerable moves and Mirror Coat. u32 sleepTalkBanned:1; u32 instructBanned:1; + u32 encoreBanned:1; + u32 parentalBondBanned:1; }; #define SPINDA_SPOT_WIDTH 16 diff --git a/include/random.h b/include/random.h index af3d7c75e5..8d801ebe74 100644 --- a/include/random.h +++ b/include/random.h @@ -76,6 +76,10 @@ enum RandomTag RNG_FLAME_BODY, RNG_FORCE_RANDOM_SWITCH, RNG_FROZEN, + RNG_G_MAX_STUN_SHOCK, + RNG_G_MAX_BEFUDDLE, + RNG_G_MAX_REPLENISH, + RNG_G_MAX_SNOOZE, RNG_HITS, RNG_HOLD_EFFECT_FLINCH, RNG_INFATUATION, diff --git a/include/strings.h b/include/strings.h index 4fd5670a0d..2c8abc5a10 100644 --- a/include/strings.h +++ b/include/strings.h @@ -538,134 +538,6 @@ extern const u8 gText_SearchingPleaseWait[]; extern const u8 gText_SearchCompleted[]; extern const u8 gText_NoMatchingPkmnWereFound[]; extern const u8 gText_SelectorArrow[]; -//PokedexPlus HGSS_Ui -#if POKEDEX_PLUS_HGSS == TRUE -extern const u8 gText_Stats_Buttons[]; -extern const u8 gText_Stats_Buttons_Decapped[]; -extern const u8 gText_Stats_HP[]; -extern const u8 gText_Stats_Attack[]; -extern const u8 gText_Stats_Defense[]; -extern const u8 gText_Stats_Speed[]; -extern const u8 gText_Stats_SpAttack[]; -extern const u8 gText_Stats_SpDefense[]; -extern const u8 gText_Stats_EV_Plus1[]; -extern const u8 gText_Stats_EV_Plus2[]; -extern const u8 gText_Stats_EV_Plus3[]; -extern const u8 gText_Stats_EvStr1Str2[]; -extern const u8 gText_Stats_MoveSelectedMax[]; -extern const u8 gText_Stats_MoveLevel[]; -extern const u8 gText_Stats_Gender_0[]; -extern const u8 gText_Stats_Gender_12_5[]; -extern const u8 gText_Stats_Gender_25[]; -extern const u8 gText_Stats_Gender_50[]; -extern const u8 gText_Stats_Gender_75[]; -extern const u8 gText_Stats_Gender_87_5[]; -extern const u8 gText_Stats_Gender_100[]; -extern const u8 gText_Stats_CatchRate[]; -extern const u8 gText_Stats_CatchRate_Legend[]; -extern const u8 gText_Stats_CatchRate_VeryHard[]; -extern const u8 gText_Stats_CatchRate_Difficult[]; -extern const u8 gText_Stats_CatchRate_Medium[]; -extern const u8 gText_Stats_CatchRate_Relaxed[]; -extern const u8 gText_Stats_CatchRate_Easy[]; -extern const u8 gText_Stats_ExpYield[]; -extern const u8 gText_Stats_EggCycles[]; -extern const u8 gText_Stats_EggCycles_VeryFast[]; -extern const u8 gText_Stats_EggCycles_Fast[]; -extern const u8 gText_Stats_EggCycles_Normal[]; -extern const u8 gText_Stats_EggCycles_Slow[]; -extern const u8 gText_Stats_Growthrate[]; -extern const u8 gText_Stats_Friendship[]; -extern const u8 gText_Stats_Friendship_BigAnger[]; -extern const u8 gText_Stats_Friendship_Neutral[]; -extern const u8 gText_Stats_Friendship_Happy[]; -extern const u8 gText_Stats_Friendship_BigSmile[]; -extern const u8 gText_Stats_MEDIUM_FAST[]; -extern const u8 gText_Stats_ERRATIC[]; -extern const u8 gText_Stats_FLUCTUATING[]; -extern const u8 gText_Stats_MEDIUM_SLOW[]; -extern const u8 gText_Stats_FAST[]; -extern const u8 gText_Stats_SLOW[]; -extern const u8 gText_Stats_ContestHeart[]; -extern const u8 gText_PlusSymbol[]; -extern const u8 gText_Stats_Minus[]; -extern const u8 gText_Stats_eggGroup[]; -extern const u8 gText_Stats_eggGroup_Groups[]; -extern const u8 gText_Stats_eggGroup_MONSTER[]; -extern const u8 gText_Stats_eggGroup_WATER_1[]; -extern const u8 gText_Stats_eggGroup_BUG[]; -extern const u8 gText_Stats_eggGroup_FLYING[]; -extern const u8 gText_Stats_eggGroup_FIELD[]; -extern const u8 gText_Stats_eggGroup_FAIRY[]; -extern const u8 gText_Stats_eggGroup_GRASS[]; -extern const u8 gText_Stats_eggGroup_HUMAN_LIKE[]; -extern const u8 gText_Stats_eggGroup_WATER_3[]; -extern const u8 gText_Stats_eggGroup_MINERAL[]; -extern const u8 gText_Stats_eggGroup_AMORPHOUS[]; -extern const u8 gText_Stats_eggGroup_WATER_2[]; -extern const u8 gText_Stats_eggGroup_DITTO[]; -extern const u8 gText_Stats_eggGroup_DRAGON[]; -extern const u8 gText_Stats_eggGroup_UNDISCOVERED[]; -extern const u8 gText_Dex_SEEN[]; -extern const u8 gText_Dex_OWN[]; - -extern const u8 gText_EVO_Buttons[]; -extern const u8 gText_EVO_Buttons_Decapped[]; -extern const u8 gText_EVO_Buttons_PE[]; -extern const u8 gText_EVO_Buttons_Decapped_PE[]; -extern const u8 gText_EVO_Name[]; -extern const u8 gText_EVO_PreEvo[]; -extern const u8 gText_EVO_PreEvo_PE_Mega[]; -extern const u8 gText_EVO_FRIENDSHIP[]; -extern const u8 gText_EVO_FRIENDSHIP_DAY[]; -extern const u8 gText_EVO_FRIENDSHIP_NIGHT[]; -extern const u8 gText_EVO_FRIENDSHIP_MOVE_TYPE[]; -extern const u8 gText_EVO_LEVEL[]; -extern const u8 gText_EVO_TRADE[]; -extern const u8 gText_EVO_TRADE_ITEM[]; -extern const u8 gText_EVO_ITEM[]; -extern const u8 gText_EVO_LEVEL_ATK_GT_DEF[]; -extern const u8 gText_EVO_LEVEL_ATK_EQ_DEF[]; -extern const u8 gText_EVO_LEVEL_ATK_LT_DEF[]; -extern const u8 gText_EVO_LEVEL_SILCOON[]; -extern const u8 gText_EVO_LEVEL_CASCOON[]; -extern const u8 gText_EVO_LEVEL_NINJASK[]; -extern const u8 gText_EVO_LEVEL_SHEDINJA[]; -extern const u8 gText_EVO_BEAUTY[]; -extern const u8 gText_EVO_LEVEL_FEMALE[]; -extern const u8 gText_EVO_LEVEL_MALE[]; -extern const u8 gText_EVO_LEVEL_NIGHT[]; -extern const u8 gText_EVO_LEVEL_DAY[]; -extern const u8 gText_EVO_LEVEL_DUSK[]; -extern const u8 gText_EVO_ITEM_HOLD_DAY[]; -extern const u8 gText_EVO_ITEM_HOLD_NIGHT[]; -extern const u8 gText_EVO_MOVE[]; -extern const u8 gText_EVO_MAPSEC[]; -extern const u8 gText_EVO_ITEM_MALE[]; -extern const u8 gText_EVO_ITEM_FEMALE[]; -extern const u8 gText_EVO_LEVEL_RAIN[]; -extern const u8 gText_EVO_SPECIFIC_MON_IN_PARTY[]; -extern const u8 gText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY[]; -extern const u8 gText_EVO_TRADE_SPECIFIC_MON[]; -extern const u8 gText_EVO_SPECIFIC_MAP[]; -extern const u8 gText_EVO_LEVEL_NATURE_AMPED[]; -extern const u8 gText_EVO_LEVEL_NATURE_LOW_KEY[]; -extern const u8 gText_EVO_CRITICAL_HITS[]; -extern const u8 gText_EVO_SCRIPT_TRIGGER_DMG[]; -extern const u8 gText_EVO_DARK_SCROLL[]; -extern const u8 gText_EVO_WATER_SCROLL[]; -extern const u8 gText_EVO_ITEM_NIGHT[]; -extern const u8 gText_EVO_ITEM_DAY[]; -extern const u8 gText_EVO_ITEM_HOLD[]; -extern const u8 gText_EVO_UNKNOWN[]; -extern const u8 gText_EVO_NONE[]; - -extern const u8 gText_FORMS_Buttons_PE[]; -extern const u8 gText_FORMS_Buttons_Decapped_PE[]; -extern const u8 gText_FORMS_Buttons_Submenu_PE[]; -extern const u8 gText_FORMS_Buttons_Submenu_Decapped_PE[]; -extern const u8 gText_FORMS_NONE[]; -#endif // birch dex rating text extern const u8 gBirchDexRatingText_LessThan10[]; diff --git a/include/test/battle.h b/include/test/battle.h index f0808c6d09..616c81964a 100644 --- a/include/test/battle.h +++ b/include/test/battle.h @@ -931,6 +931,8 @@ struct MoveContext u16 ultraBurst:1; u16 explicitUltraBurst:1; // TODO: u8 zMove:1; + u16 dynamax:1; + u16 explicitDynamax:1; u16 allowed:1; u16 explicitAllowed:1; u16 notExpected:1; // Has effect only with EXPECT_MOVE diff --git a/include/test/test.h b/include/test/test.h index 5b3ab8af0c..e9c920bd0b 100644 --- a/include/test/test.h +++ b/include/test/test.h @@ -47,6 +47,7 @@ struct TestRunnerState u8 expectedResult; bool8 expectLeaks:1; bool8 inBenchmark:1; + bool8 tearDown:1; u32 timeoutSeconds; }; diff --git a/ld_script.txt b/ld_script.txt index a68d1a2a2c..27b340f490 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -1325,6 +1325,8 @@ SECTIONS { data/*.o(.rodata); } = 0 + __rom_end = .; + /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ diff --git a/ld_script_modern.txt b/ld_script_modern.txt index 082d694291..ab68976661 100644 --- a/ld_script_modern.txt +++ b/ld_script_modern.txt @@ -130,6 +130,8 @@ SECTIONS { src/graphics.o(.rodata); } =0 + __rom_end = .; + /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ diff --git a/ld_script_test.txt b/ld_script_test.txt index f4abad98ab..c7e19d7189 100644 --- a/ld_script_test.txt +++ b/ld_script_test.txt @@ -114,6 +114,8 @@ SECTIONS { test/*.o(.rodata*); } =0 + __rom_end = .; + /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index dc15e0f047..85cc9b9b29 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -2123,6 +2123,70 @@ gCryTable:: @ Basculegion cry Cry_Unown .endif +@ Gigantamax Forms + cry Cry_Venusaur + cry Cry_Charizard + cry Cry_Blastoise + cry Cry_Butterfree + cry Cry_Pikachu + cry Cry_Meowth + cry Cry_Machamp + cry Cry_Gengar + cry Cry_Kingler + cry Cry_Lapras + cry Cry_Eevee + cry Cry_Snorlax +.if P_GEN_5_POKEMON == TRUE + cry Cry_Garbodor +.else + cry Cry_Unown +.endif +.if P_GEN_7_POKEMON == TRUE + cry Cry_Melmetal +.else + cry Cry_Unown +.endif +.if P_GEN_8_POKEMON == TRUE + cry Cry_Rillaboom + cry Cry_Cinderace + cry Cry_Inteleon + cry Cry_Corviknight + cry Cry_Orbeetle + cry Cry_Drednaw + cry Cry_Coalossal + cry Cry_Flapple + cry Cry_Appletun + cry Cry_Sandaconda + cry Cry_Toxtricity + cry Cry_Centiskorch + cry Cry_Hatterene + cry Cry_Grimmsnarl + cry Cry_Alcremie + cry Cry_Copperajah + cry Cry_Duraludon + cry Cry_Urshifu + cry Cry_Urshifu +.else + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown + cry Cry_Unown +.endif .align 2 gCryTable_Reverse:: @@ -4194,4 +4258,68 @@ gCryTable_Reverse:: cry_reverse Cry_Unown cry_reverse Cry_Unown cry_reverse Cry_Unown +.endif + @ Gigantamax Forms + cry_reverse Cry_Venusaur + cry_reverse Cry_Charizard + cry_reverse Cry_Blastoise + cry_reverse Cry_Butterfree + cry_reverse Cry_Pikachu + cry_reverse Cry_Meowth + cry_reverse Cry_Machamp + cry_reverse Cry_Gengar + cry_reverse Cry_Kingler + cry_reverse Cry_Lapras + cry_reverse Cry_Eevee + cry_reverse Cry_Snorlax +.if P_GEN_5_POKEMON == TRUE + cry_reverse Cry_Garbodor +.else + cry_reverse Cry_Unown +.endif +.if P_GEN_7_POKEMON == TRUE + cry_reverse Cry_Melmetal +.else + cry_reverse Cry_Unown +.endif +.if P_GEN_8_POKEMON == TRUE + cry_reverse Cry_Rillaboom + cry_reverse Cry_Cinderace + cry_reverse Cry_Inteleon + cry_reverse Cry_Corviknight + cry_reverse Cry_Orbeetle + cry_reverse Cry_Drednaw + cry_reverse Cry_Coalossal + cry_reverse Cry_Flapple + cry_reverse Cry_Appletun + cry_reverse Cry_Sandaconda + cry_reverse Cry_Toxtricity + cry_reverse Cry_Centiskorch + cry_reverse Cry_Hatterene + cry_reverse Cry_Grimmsnarl + cry_reverse Cry_Alcremie + cry_reverse Cry_Copperajah + cry_reverse Cry_Duraludon + cry_reverse Cry_Urshifu + cry_reverse Cry_Urshifu +.else + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown + cry_reverse Cry_Unown .endif diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 6ed887cb69..03a41733aa 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -1442,7 +1442,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-8); else if (aiData->hpPercents[battlerAtk] <= 25) ADJUST_SCORE(-10); - else if (B_SOUND_SUBSTITUTE >= GEN_6 && HasSoundMove(battlerDef)) + else if (HasSubstituteIgnoringMove(battlerDef)) ADJUST_SCORE(-8); break; case EFFECT_LEECH_SEED: @@ -2521,6 +2521,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (instructedMove == MOVE_NONE || gBattleMoves[instructedMove].instructBanned + || gBattleMoves[instructedMove].twoTurnMove || gBattleMoves[instructedMove].effect == EFFECT_RECHARGE || IsZMove(instructedMove) || (gLockedMoves[battlerDef] != 0 && gLockedMoves[battlerDef] != 0xFFFF) @@ -3223,6 +3224,10 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score // We only check for moves that have a 20% chance or more for their secondary effect to happen because moves with a smaller chance are rather worthless. We don't want the AI to use those. bool32 sereneGraceBoost = (aiData->abilities[battlerAtk] == ABILITY_SERENE_GRACE && (gBattleMoves[move].secondaryEffectChance >= 20 && gBattleMoves[move].secondaryEffectChance < 100)); + // The AI should understand that while Dynamaxed, status moves function like Protect. + if (IsDynamaxed(battlerAtk) && gBattleMoves[move].split == SPLIT_STATUS) + moveEffect = EFFECT_PROTECT; + // Targeting partner, check benefits of doing that instead if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) return score; @@ -4688,7 +4693,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_RELIC_SONG: if (!(gBattleMons[battlerAtk].status2 & STATUS2_TRANSFORMED)) // Don't try to change form if it's transformed. { - if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA && gBattleMons[battlerDef].defense < gBattleMons[battlerDef].spDefense) + if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA_ARIA && gBattleMons[battlerDef].defense < gBattleMons[battlerDef].spDefense) ADJUST_SCORE(3); // Change to Pirouette if can do more damage else if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA_PIROUETTE && gBattleMons[battlerDef].spDefense < gBattleMons[battlerDef].defense) ADJUST_SCORE(3); // Change to Aria if can do more damage diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 64936e0b98..faffe0e6b3 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -1020,7 +1020,6 @@ u32 AI_WhichMoveBetter(u32 move1, u32 move2, u32 battlerAtk, u32 battlerDef, s32 return 0; } - // Check additional effects. effect1 = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move1, noOfHitsToKo); effect2 = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move2, noOfHitsToKo); @@ -2359,6 +2358,11 @@ bool32 HasDamagingMoveOfType(u32 battlerId, u32 type) return FALSE; } +bool32 HasSubstituteIgnoringMove(u32 battler) +{ + CHECK_MOVE_FLAG(ignoresSubstitute); +} + bool32 HasSoundMove(u32 battler) { CHECK_MOVE_FLAG(soundMove); @@ -2397,7 +2401,7 @@ static u32 GetLeechSeedDamage(u32 battlerId) if ((gStatuses3[battlerId] & STATUS3_LEECHSEED) && gBattleMons[gStatuses3[battlerId] & STATUS3_LEECHSEED_BATTLER].hp != 0) { - damage = gBattleMons[battlerId].maxHP / 8; + damage = GetNonDynamaxMaxHP(battlerId) / 8; if (damage == 0) damage = 1; } @@ -2409,7 +2413,7 @@ static u32 GetNightmareDamage(u32 battlerId) u32 damage = 0; if ((gBattleMons[battlerId].status2 & STATUS2_NIGHTMARE) && gBattleMons[battlerId].status1 & STATUS1_SLEEP) { - damage = gBattleMons[battlerId].maxHP / 4; + damage = GetNonDynamaxMaxHP(battlerId) / 4; if (damage == 0) damage = 1; } @@ -2421,7 +2425,7 @@ static u32 GetCurseDamage(u32 battlerId) u32 damage = 0; if (gBattleMons[battlerId].status2 & STATUS2_CURSED) { - damage = gBattleMons[battlerId].maxHP / 4; + damage = GetNonDynamaxMaxHP(battlerId) / 4; if (damage == 0) damage = 1; } @@ -2436,9 +2440,9 @@ static u32 GetTrapDamage(u32 battlerId) if (gBattleMons[battlerId].status2 & STATUS2_WRAPPED) { if (holdEffect == HOLD_EFFECT_BINDING_BAND) - damage = gBattleMons[battlerId].maxHP / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); + damage = GetNonDynamaxMaxHP(battlerId) / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); else - damage = gBattleMons[battlerId].maxHP / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); + damage = GetNonDynamaxMaxHP(battlerId) / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); if (damage == 0) damage = 1; @@ -2509,7 +2513,7 @@ static u32 GetWeatherDamage(u32 battlerId) && !(gStatuses3[battlerId] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && holdEffect != HOLD_EFFECT_SAFETY_GOGGLES) { - damage = gBattleMons[battlerId].maxHP / 16; + damage = GetNonDynamaxMaxHP(battlerId) / 16; if (damage == 0) damage = 1; } @@ -2520,7 +2524,7 @@ static u32 GetWeatherDamage(u32 battlerId) && !(gStatuses3[battlerId] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && holdEffect != HOLD_EFFECT_SAFETY_GOGGLES) { - damage = gBattleMons[battlerId].maxHP / 16; + damage = GetNonDynamaxMaxHP(battlerId) / 16; if (damage == 0) damage = 1; } @@ -3893,9 +3897,9 @@ bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove) { u8 effectiveness; - if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE && gBattleMons[battlerDef].species == SPECIES_MIMIKYU) + if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE && gBattleMons[battlerDef].species == SPECIES_MIMIKYU_DISGUISED) return FALSE; // Don't waste a Z-Move busting disguise - if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE && IS_MOVE_PHYSICAL(chosenMove)) + if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE_ICE_FACE && IS_MOVE_PHYSICAL(chosenMove)) return FALSE; // Don't waste a Z-Move busting Ice Face if (IS_MOVE_STATUS(chosenMove) && !IS_MOVE_STATUS(gBattleStruct->zmove.chosenZMove)) diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index 41566d0471..fde1c228cf 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -46,6 +46,8 @@ static void AnimTask_Hail2(u8); static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c); static void AvalancheAnim_Step(struct Sprite *sprite); static void AvalancheAnim_Step2(struct Sprite *sprite); +static void AnimSnowflakes(struct Sprite *sprite); +static void AnimSnowflakes_Step(struct Sprite *sprite); static const union AnimCmd sAnim_Unused[] = { @@ -1673,3 +1675,69 @@ void AnimTask_GetIceBallCounter(u8 taskId) gBattleAnimArgs[arg] = gAnimDisableStructPtr->rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer - 1; DestroyAnimVisualTask(taskId); } + +static const union AnimCmd sAnim_Snowflakes[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(8, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(24, 6), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(40, 2), + ANIMCMD_FRAME(48, 2), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnims_Snowflakes[] = +{ + sAnim_Snowflakes, +}; + +const struct SpriteTemplate gSnowFlakesSpriteTemplate = +{ + .tileTag = ANIM_TAG_SNOWFLAKES, + .paletteTag = ANIM_TAG_SNOWFLAKES, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = sAnims_Snowflakes, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSnowflakes, +}; + +void AnimTask_CreateSnowflakes(u8 taskId) +{ + u8 x, y; + + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + } + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1) + { + x = Random2() % DISPLAY_WIDTH; + y = Random2() % (DISPLAY_HEIGHT / 2); + CreateSprite(&gSnowFlakesSpriteTemplate, x, y, 4); + } + if (gTasks[taskId].data[0] == gTasks[taskId].data[3]) + DestroyAnimVisualTask(taskId); +} + +static void AnimSnowflakes(struct Sprite *sprite) +{ + sprite->callback = AnimSnowflakes_Step; +} + +static void AnimSnowflakes_Step(struct Sprite *sprite) +{ + if (++sprite->data[0] <= 13) + { + sprite->x2++; + sprite->y2 += 2; + sprite->x2--; + } + if (sprite->animEnded) + DestroySprite(sprite); +} diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 49607a1565..f150afb799 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -8281,7 +8281,7 @@ void AnimTask_ShellSmashShrinkAttacker(u8 taskId) task->func = AnimTask_DynamaxGrowthStep; } -static void AnimTask_DynamaxGrowthStep(u8 taskId) +static void AnimTask_DynamaxGrowthStep(u8 taskId) // from CFRU { struct Task* task = &gTasks[taskId]; if (!RunAffineAnimFromTaskData(task)) @@ -8634,7 +8634,6 @@ void AnimTask_AffectionHangedOn(u8 taskId) DestroyAnimVisualTask(taskId); } - //Launches the stat ball for Power Shift //arg 0: X starting offset //arg 1: Y starting offset @@ -9099,3 +9098,53 @@ static void SpriteCB_TripleArrowKick(struct Sprite* sprite) InitAnimArcTranslation(sprite); sprite->callback = SpriteCB_PowerShiftBallStep; //Arc until complete } + +// DYNAMAX +static const union AffineAnimCmd sDynamaxGrowthAffineAnimCmds[] = // from CFRU +{ + AFFINEANIMCMD_FRAME(-2, -2, 0, 64), //Double in size over 1 second + AFFINEANIMCMD_FRAME(0, 0, 0, 64), //Pause for 1 seconds + AFFINEANIMCMD_FRAME(16, 16, 0, 8), //Shrink back down in 1/8 of a second + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sDynamaxGrowthAttackAnimationAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-4, -4, 0, 32), //Double in size quicker + AFFINEANIMCMD_FRAME(0, 0, 0, 32), //Pause for less + AFFINEANIMCMD_FRAME(16, 16, 0, 8), + AFFINEANIMCMD_END, +}; + +//Arg 0: Animation for attack +void AnimTask_DynamaxGrowth(u8 taskId) // from CFRU +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + if (gBattleAnimArgs[0] == 0) + PrepareAffineAnimInTaskData(task, spriteId, sDynamaxGrowthAffineAnimCmds); + else + PrepareAffineAnimInTaskData(task, spriteId, sDynamaxGrowthAttackAnimationAffineAnimCmds); + task->func = AnimTask_DynamaxGrowthStep; +} + +void AnimTask_GetWeatherToSet(u8 taskId) +{ + switch (gBattleMoves[gCurrentMove].argument) + { + case MAX_EFFECT_SUN: + gBattleAnimArgs[ARG_RET_ID] = 1; + break; + case MAX_EFFECT_RAIN: + gBattleAnimArgs[ARG_RET_ID] = 2; + break; + case MAX_EFFECT_SANDSTORM: + gBattleAnimArgs[ARG_RET_ID] = 3; + break; + case MAX_EFFECT_HAIL: + gBattleAnimArgs[ARG_RET_ID] = 4; + break; + } + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_bg.c b/src/battle_bg.c index 61cf11a0a5..1da5d5c65e 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -758,23 +758,26 @@ void DrawMainBattleBackground(void) LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } - else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); - } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE) - { - LZDecompressVram(gBattleTerrainTiles_Water, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); - } - else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA) - { - LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_GROUDON: + LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60); + break; + case SPECIES_KYOGRE: + LZDecompressVram(gBattleTerrainTiles_Water, (void*)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60); + break; + case SPECIES_RAYQUAZA: + LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60); + break; + } } else { @@ -1155,20 +1158,23 @@ void DrawBattleEntryBackground(void) CopyBgTilemapBufferToVram(2); } } - else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void *)(BG_SCREEN_ADDR(28))); - } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE) - { - LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void *)(BG_SCREEN_ADDR(28))); - } - else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA) - { - LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void *)(BG_SCREEN_ADDR(28))); + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_GROUDON: + LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void*)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void*)(BG_SCREEN_ADDR(28))); + break; + case SPECIES_KYOGRE: + LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void*)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void*)(BG_SCREEN_ADDR(28))); + break; + case SPECIES_RAYQUAZA: + LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void*)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(28))); + break; + } } else { @@ -1223,9 +1229,17 @@ bool8 LoadChosenBattleElement(u8 caseId) { LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); } - else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(BG_CHAR_ADDR(2))); + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_GROUDON: + LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2))); + break; + case SPECIES_KYOGRE: + LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(2))); + break; + } } else { @@ -1282,10 +1296,10 @@ bool8 LoadChosenBattleElement(u8 caseId) { LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - if (gGameVersion == VERSION_RUBY) - LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(BG_SCREEN_ADDR(26))); + if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_GROUDON) + LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26))); else LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(BG_SCREEN_ADDR(26))); } @@ -1344,10 +1358,10 @@ bool8 LoadChosenBattleElement(u8 caseId) { LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - if (gGameVersion == VERSION_RUBY) - LoadCompressedPalette(gBattleTerrainPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_GROUDON) + LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60); else LoadCompressedPalette(gBattleTerrainPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 56f7a0c083..703d66105b 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -560,10 +560,15 @@ static void OpponentHandleChooseMove(u32 battler) } if (ShouldUseZMove(battler, gBattlerTarget, chosenMove)) QueueZMove(battler, chosenMove); - if (CanMegaEvolve(battler)) // If opponent can mega evolve, do it. + // If opponent can Mega Evolve, do it. + if (CanMegaEvolve(battler)) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_MEGA_EVOLUTION) | (gBattlerTarget << 8)); + // If opponent can Ultra Burst, do it. else if (CanUltraBurst(battler)) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_ULTRA_BURST) | (gBattlerTarget << 8)); + // If opponent can Dynamax and is on final Pokemon, do it. + else if (CanDynamax(battler) && CountAIAliveNonEggMonsExcept(gBattlerPartyIndexes[battler]) == 0) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_DYNAMAX) | (gBattlerTarget << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (gBattlerTarget << 8)); } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 07c8cbbf14..e59ea5ba28 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -389,6 +389,16 @@ static void HandleInputChooseAction(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_CANCEL_PARTNER, 0); PlayerBufferExecCompleted(battler); } + else if (B_QUICK_MOVE_CURSOR_TO_RUN) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) // If wild battle, pressing B moves cursor to "Run". + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[battler]); + gActionSelectionCursor[battler] = 3; + ActionSelectionCreateCursorAt(gActionSelectionCursor[battler], 0); + } + } } else if (JOY_NEW(START_BUTTON)) { @@ -439,6 +449,8 @@ static void HandleInputChooseTarget(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); else if (gBattleStruct->burst.playerSelect) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_ULTRA_BURST | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX); @@ -599,6 +611,8 @@ static void HandleInputShowEntireFieldTargets(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); else if (gBattleStruct->burst.playerSelect) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_ULTRA_BURST | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); HideTriggerSprites(); @@ -629,6 +643,8 @@ static void HandleInputShowTargets(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); else if (gBattleStruct->burst.playerSelect) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_ULTRA_BURST | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); HideTriggerSprites(); @@ -690,6 +706,13 @@ static void HandleInputChooseMove(u32 battler) moveTarget = MOVE_TARGET_SELECTED; //damaging z moves always have selected target } + // Status moves turn into Max Guard when Dynamaxed, targets user. + if ((IsDynamaxed(battler) || gBattleStruct->dynamax.playerSelect) + && gBattleMoves[moveInfo->moves[gMoveSelectionCursor[battler]]].split == SPLIT_STATUS) + { + moveTarget = MOVE_TARGET_USER; + } + if (moveTarget & MOVE_TARGET_USER) gMultiUsePlayerCursor = battler; else @@ -747,6 +770,8 @@ static void HandleInputChooseMove(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); else if (gBattleStruct->burst.playerSelect) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_ULTRA_BURST | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); HideTriggerSprites(); @@ -784,6 +809,7 @@ static void HandleInputChooseMove(u32 battler) { gBattleStruct->mega.playerSelect = FALSE; gBattleStruct->burst.playerSelect = FALSE; + gBattleStruct->dynamax.playerSelect = FALSE; gBattleStruct->zmove.viable = FALSE; BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, 0xFFFF); HideTriggerSprites(); @@ -884,6 +910,14 @@ static void HandleInputChooseMove(u32 battler) else ReloadMoveNames(battler); } + else if (CanDynamax(battler)) + { + gBattleStruct->dynamax.playerSelect ^= 1; + MoveSelectionDisplayMoveNames(battler); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); + ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, gBattleStruct->dynamax.playerSelect); + PlaySE(SE_SELECT); + } } } @@ -891,6 +925,7 @@ static void ReloadMoveNames(u32 battler) { gBattleStruct->mega.playerSelect = FALSE; gBattleStruct->burst.playerSelect = FALSE; + gBattleStruct->dynamax.playerSelect = FALSE; gBattleStruct->zmove.viewing = FALSE; MoveSelectionDestroyCursorAt(battler); MoveSelectionDisplayMoveNames(battler); @@ -1415,7 +1450,18 @@ static void Task_GiveExpToMon(u8 taskId) if (currExp + gainedExp >= nextLvlExp) { SetMonData(mon, MON_DATA_EXP, &nextLvlExp); + gBattleStruct->dynamax.levelUpHP = GetMonData(mon, MON_DATA_HP) \ + + UQ_4_12_TO_INT((gBattleScripting.levelUpHP * UQ_4_12(1.5)) + UQ_4_12_ROUND); CalculateMonStats(mon); + + // Reapply Dynamax HP multiplier after stats are recalculated. + if (IsDynamaxed(battler) && monId == gBattlerPartyIndexes[battler]) + { + ApplyDynamaxHPMultiplier(battler, mon); + gBattleMons[battler].hp = gBattleStruct->dynamax.levelUpHP; + SetMonData(mon, MON_DATA_HP, &gBattleMons[battler].hp); + } + gainedExp -= nextLvlExp - currExp; BtlController_EmitTwoReturnValues(battler, BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp); @@ -1488,7 +1534,18 @@ static void Task_GiveExpWithExpBar(u8 taskId) if (currExp + gainedExp >= expOnNextLvl) { SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl); + gBattleStruct->dynamax.levelUpHP = GetMonData(&gPlayerParty[monId], MON_DATA_HP) \ + + UQ_4_12_TO_INT((gBattleScripting.levelUpHP * UQ_4_12(1.5)) + UQ_4_12_ROUND); CalculateMonStats(&gPlayerParty[monId]); + + // Reapply Dynamax HP multiplier after stats are recalculated. + if (IsDynamaxed(battler) && monId == gBattlerPartyIndexes[battler]) + { + ApplyDynamaxHPMultiplier(battler, &gPlayerParty[monId]); + gBattleMons[battler].hp = gBattleStruct->dynamax.levelUpHP; + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleMons[battler].hp); + } + gainedExp -= expOnNextLvl - currExp; BtlController_EmitTwoReturnValues(battler, BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp); gTasks[taskId].func = Task_LaunchLvlUpAnim; @@ -1635,7 +1692,11 @@ static void MoveSelectionDisplayMoveNames(u32 battler) for (i = 0; i < MAX_MON_MOVES; i++) { MoveSelectionDestroyCursorAt(i); - StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]); + if ((gBattleStruct->dynamax.playerSelect && CanDynamax(battler)) + || IsDynamaxed(battler)) + StringCopy(gDisplayedStringBattle, gMoveNames[GetMaxMove(battler, moveInfo->moves[i])]); + else + StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]); // Prints on windows B_WIN_MOVE_NAME_1, B_WIN_MOVE_NAME_2, B_WIN_MOVE_NAME_3, B_WIN_MOVE_NAME_4 BattlePutTextOnWindow(gDisplayedStringBattle, i + B_WIN_MOVE_NAME_1); if (moveInfo->moves[i] != MOVE_NONE) @@ -1979,6 +2040,7 @@ static void PlayerHandleChooseMove(u32 battler) InitMoveSelectionsVarsAndStrings(battler); gBattleStruct->mega.playerSelect = FALSE; gBattleStruct->burst.playerSelect = FALSE; + gBattleStruct->dynamax.playerSelect = FALSE; if (!IsMegaTriggerSpriteActive()) gBattleStruct->mega.triggerSpriteId = 0xFF; if (CanMegaEvolve(battler)) @@ -1987,6 +2049,10 @@ static void PlayerHandleChooseMove(u32 battler) gBattleStruct->burst.triggerSpriteId = 0xFF; if (CanUltraBurst(battler)) CreateBurstTriggerSprite(battler, 0); + if (!IsDynamaxTriggerSpriteActive()) + gBattleStruct->dynamax.triggerSpriteId = 0xFF; + if (CanDynamax(battler)) + CreateDynamaxTriggerSprite(battler, 0); if (!IsZMoveTriggerSpriteActive()) gBattleStruct->zmove.triggerSpriteId = 0xFF; diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 2069082d8c..b5a64c286b 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -184,6 +184,13 @@ static void HandleInputChooseAction(u32 battler) ActionSelectionCreateCursorAt(gActionSelectionCursor[battler], 0); } } + else if (B_QUICK_MOVE_CURSOR_TO_RUN && JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[battler]); + gActionSelectionCursor[battler] = 3; + ActionSelectionCreateCursorAt(gActionSelectionCursor[battler], 0); + } } static void Controller_WaitForHealthbox(u32 battler) diff --git a/src/battle_debug.c b/src/battle_debug.c index 648efe5f38..cf7c9c4235 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -153,6 +153,7 @@ enum LIST_SIDE_STEALTH_ROCK, LIST_SIDE_TOXIC_SPIKES, LIST_SIDE_STICKY_WEB, + LIST_SIDE_STEELSURGE, }; enum @@ -228,6 +229,7 @@ static const u8 sText_PP[] = _("PP"); static const u8 sText_StealthRock[] = _("Stealth Rock"); static const u8 sText_ToxicSpikes[] = _("Toxic Spikes"); static const u8 sText_StickyWeb[] = _("Sticky Web"); +static const u8 sText_Steelsurge[] = _("Steelsurge"); static const u8 sText_AI[] = _("AI"); static const u8 sText_NoBadMoves[] = _("No Bad Moves"); static const u8 sText_Viability[] = _("Viability"); @@ -455,6 +457,7 @@ static const struct ListMenuItem sSideStatusListItems[] = {sText_StealthRock, LIST_SIDE_STEALTH_ROCK}, {sText_ToxicSpikes, LIST_SIDE_TOXIC_SPIKES}, {sText_StickyWeb, LIST_SIDE_STICKY_WEB}, + {sText_Steelsurge, LIST_SIDE_STEELSURGE}, }; static const struct ListMenuItem sSecondaryListItems[] = @@ -1736,6 +1739,15 @@ static u8 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus, *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_STICKY_WEB; } return &sideTimer->stickyWebAmount; + case LIST_SIDE_STEELSURGE: + if (changeStatus) + { + if (statusTrue) + *(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_STEELSURGE; + else + *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_STEELSURGE; + } + return &sideTimer->steelsurgeAmount; default: return NULL; } diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c new file mode 100644 index 0000000000..a9370a4ab5 --- /dev/null +++ b/src/battle_dynamax.c @@ -0,0 +1,1297 @@ +#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); + +// Constant Data +static const u16 sMaxMoveTable[NUMBER_OF_MON_TYPES] = +{ + [TYPE_NORMAL] = MOVE_MAX_STRIKE, + [TYPE_FIGHTING] = MOVE_MAX_KNUCKLE, + [TYPE_FLYING] = MOVE_MAX_AIRSTREAM, + [TYPE_POISON] = MOVE_MAX_OOZE, + [TYPE_GROUND] = MOVE_MAX_QUAKE, + [TYPE_ROCK] = MOVE_MAX_ROCKFALL, + [TYPE_BUG] = MOVE_MAX_FLUTTERBY, + [TYPE_GHOST] = MOVE_MAX_PHANTASM, + [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, + [TYPE_FIRE] = MOVE_MAX_FLARE, + [TYPE_WATER] = MOVE_MAX_GEYSER, + [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, + [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, + [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, + [TYPE_ICE] = MOVE_MAX_HAILSTORM, + [TYPE_DRAGON] = MOVE_MAX_WYRMWIND, + [TYPE_DARK] = MOVE_MAX_DARKNESS, + [TYPE_FAIRY] = MOVE_MAX_STARFALL, +}; + +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) +{ + // TODO: Incorporate Gigantamax factor. + if ((gSpeciesInfo[gBattleMons[battlerId].species].gigantamax)) + 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 + { + u16 mult = UQ_4_12(1.5); // placeholder + u16 hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP) * mult) + UQ_4_12_ROUND); + u16 maxHP = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_MAX_HP) * mult) + UQ_4_12_ROUND); + 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 (gBattleMoves[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].gigantamax) + targetSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); + + if (targetSpecies != SPECIES_NONE) + species = targetSpecies; + + if (gSpeciesInfo[species].gigantamax) + { + 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 (sMaxMoveTable[type] == MOVE_NONE) // failsafe + return sMaxMoveTable[0]; + return sMaxMoveTable[type]; +} + +// 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 (gBattleMoves[baseMove].split == SPLIT_STATUS) + { + move = MOVE_MAX_GUARD; + } + else if (gBattleStruct->dynamicMoveType) + { + move = GetTypeBasedMaxMove(battlerId, gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK); + gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; + } + else + { + move = GetTypeBasedMaxMove(battlerId, gBattleMoves[baseMove].type); + gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; + } + + 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 (gBattleMoves[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 (gBattleMoves[move].type == TYPE_FIGHTING + || gBattleMoves[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 (gBattleMoves[move].strikeCount >= 2 && gBattleMoves[move].strikeCount <= 5) + { + switch(gBattleMoves[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 (gBattleMoves[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_SONICBOOM: + case EFFECT_SPIT_UP: + case EFFECT_NATURAL_GIFT: + case EFFECT_MIRROR_COAT: + case EFFECT_DRAGON_RAGE: + 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_WRING_OUT: + return MAX_POWER_TIER_6; + case EFFECT_FLAIL: + case EFFECT_LOW_KICK: + return MAX_POWER_TIER_7; + case EFFECT_MULTI_HIT: + switch(gBattleMoves[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 (gBattleMoves[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; +} + +// Returns the full name of a Max Move for the move usage text. +const u8 *GetMaxMoveName(u16 move) +{ + if (IsMaxMove(move)) + return gMaxMoveNames[move - FIRST_MAX_MOVE]; + else + return gMaxMoveNames[0]; // Failsafe +} + +// 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 = gBattleMoves[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 = gBattleMoves[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(gBattleMoves[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 = gBattleMoves[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, msg; + 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 (gBattleMoves[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 = gBattleMoves[gCurrentMove].type; + BattleScriptPush(gBattlescriptCurrInstr + 1); + ChooseDamageNonTypesString(gBattleMoves[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); + #endif + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + effect++; + } + break; + } + if (effect) + { + gEffectBattler = gBattlerTarget; + BtlController_EmitSetMonData(gBattlerTarget, 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_BERRIES) + { + gLastUsedItem = *usedHeldItem; + *usedHeldItem = ITEM_NONE; + gBattleMons[gBattlerTarget].item = gLastUsedItem; + + BtlController_EmitSetMonData(gBattlerTarget, 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 d71fa5e5bf..f321ff75dd 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -634,6 +634,13 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) BlendPalette(paletteOffset, 16, 6, RGB_WHITE); CpuCopy32(&gPlttBufferFaded[paletteOffset], &gPlttBufferUnfaded[paletteOffset], PLTT_SIZEOF(16)); } + + // dynamax tint + if (IsDynamaxed(battler)) + { + BlendPalette(paletteOffset, 16, 4, RGB(31, 0, 12)); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } } void BattleGfxSfxDummy2(u16 species) diff --git a/src/battle_interface.c b/src/battle_interface.c index 6c2b8168dc..ac33177a77 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1042,8 +1042,8 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) u8 *objVram; u8 battler = gSprites[healthboxSpriteId].hMain_Battler; - // Don't print Lv char if mon is mega evolved or primal reverted. - if (IsBattlerMegaEvolved(battler) || IsBattlerPrimalReverted(battler)) + // Don't print Lv char if mon is mega evolved or primal reverted or Dynamaxed. + if (IsBattlerMegaEvolved(battler) || IsBattlerPrimalReverted(battler) || IsDynamaxed(battler)) { objVram = ConvertIntToDecimalStringN(text, lvl, STR_CONV_MODE_LEFT_ALIGN, 3); xPos = 5 * (3 - (objVram - (text + 2))) - 1; @@ -1471,6 +1471,7 @@ void HideTriggerSprites(void) HideMegaTriggerSprite(); HideBurstTriggerSprite(); HideZMoveTriggerSprite(); + HideDynamaxTriggerSprite(); } void DestroyMegaTriggerSprite(void) @@ -1613,6 +1614,7 @@ enum INDICATOR_MEGA, INDICATOR_ALPHA, INDICATOR_OMEGA, + INDICATOR_DYNAMAX, INDICATOR_COUNT, }; @@ -1620,20 +1622,24 @@ static const u8 ALIGNED(4) sMegaIndicatorGfx[] = INCBIN_U8("graphics/battle_inte static const u16 sMegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mega_indicator.gbapal"); static const u8 ALIGNED(4) sAlphaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/alpha_indicator.4bpp"); static const u8 ALIGNED(4) sOmegaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/omega_indicator.4bpp"); -static const u16 sAlphaOmegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/alpha_indicator.gbapal"); +static const u16 sAlphaOmegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/misc_indicator.gbapal"); +static const u8 ALIGNED(4) sDynamaxIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_indicator.4bpp"); +static const u16 sDynamaxIndicatorPal[] = INCBIN_U16("graphics/battle_interface/misc_indicator.gbapal"); static const struct SpriteSheet sMegaIndicator_SpriteSheets[] = { [INDICATOR_MEGA] = {sMegaIndicatorGfx, sizeof(sMegaIndicatorGfx), TAG_MEGA_INDICATOR_TILE}, [INDICATOR_ALPHA] = {sAlphaIndicatorGfx, sizeof(sAlphaIndicatorGfx), TAG_ALPHA_INDICATOR_TILE}, [INDICATOR_OMEGA] = {sOmegaIndicatorGfx, sizeof(sOmegaIndicatorGfx), TAG_OMEGA_INDICATOR_TILE}, + [INDICATOR_DYNAMAX] = {sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE}, [INDICATOR_COUNT] = {0} }; static const struct SpritePalette sMegaIndicator_SpritePalettes[] = { [INDICATOR_MEGA] = {sMegaIndicatorPal, TAG_MEGA_INDICATOR_PAL}, - [INDICATOR_ALPHA] = {sAlphaOmegaIndicatorPal, TAG_ALPHA_OMEGA_INDICATOR_PAL}, - [INDICATOR_OMEGA] = {sAlphaOmegaIndicatorPal, TAG_ALPHA_OMEGA_INDICATOR_PAL}, + [INDICATOR_ALPHA] = {sAlphaOmegaIndicatorPal, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_OMEGA] = {sAlphaOmegaIndicatorPal, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_DYNAMAX] = {sDynamaxIndicatorPal, TAG_MISC_INDICATOR_PAL}, [INDICATOR_COUNT] = {0} }; @@ -1658,8 +1664,9 @@ static const struct SpriteTemplate sSpriteTemplate_MegaIndicator = static const u16 sMegaIndicatorTags[][2] = { [INDICATOR_MEGA] = {TAG_MEGA_INDICATOR_TILE, TAG_MEGA_INDICATOR_PAL}, - [INDICATOR_ALPHA] = {TAG_ALPHA_INDICATOR_TILE, TAG_ALPHA_OMEGA_INDICATOR_PAL}, - [INDICATOR_OMEGA] = {TAG_OMEGA_INDICATOR_TILE, TAG_ALPHA_OMEGA_INDICATOR_PAL}, + [INDICATOR_ALPHA] = {TAG_ALPHA_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_OMEGA] = {TAG_OMEGA_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_DYNAMAX] = {TAG_DYNAMAX_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, }; static const s8 sIndicatorPositions[][2] = @@ -1686,8 +1693,9 @@ static bool32 MegaIndicator_ShouldBeInvisible(u32 battlerId, struct Sprite *spri { bool32 megaEvolved = IsBattlerMegaEvolved(battlerId); bool32 primalReverted = IsBattlerPrimalReverted(battlerId); + bool32 dynamaxed = IsDynamaxed(battlerId); - if (!megaEvolved && !primalReverted) + if (!megaEvolved && !primalReverted && !dynamaxed) return TRUE; if (megaEvolved) @@ -1696,6 +1704,8 @@ static bool32 MegaIndicator_ShouldBeInvisible(u32 battlerId, struct Sprite *spri sprite->tType = INDICATOR_ALPHA; else if (primalReverted && gBattleMons[battlerId].species == SPECIES_GROUDON_PRIMAL) sprite->tType = INDICATOR_OMEGA; + else if (dynamaxed) + sprite->tType = INDICATOR_DYNAMAX; sprite->oam.tileNum = GetSpriteTileStartByTag(sMegaIndicatorTags[sprite->tType][0]); sprite->oam.paletteNum = IndexOfSpritePaletteTag(sMegaIndicatorTags[sprite->tType][1]); diff --git a/src/battle_intro.c b/src/battle_intro.c index ac88f570db..90ff736f00 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -116,7 +116,7 @@ void HandleIntroSlide(u8 terrain) { taskId = CreateTask(BattleIntroSlide3, 0); } - else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) + else if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_KYOGRE) { terrain = BATTLE_TERRAIN_UNDERWATER; taskId = CreateTask(BattleIntroSlide2, 0); diff --git a/src/battle_main.c b/src/battle_main.c index 18de8e3b1f..173fc45468 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1883,7 +1883,7 @@ static u32 GeneratePartyHash(const struct Trainer *trainer, u32 i) void ModifyPersonalityForNature(u32 *personality, u32 newNature) { u32 nature = GetNatureFromPersonality(*personality); - s32 diff = abs(nature - newNature); + s32 diff = abs((s32)nature - (s32)newNature); s32 sign = (nature > newNature) ? 1 : -1; if (diff > NUM_NATURES / 2) { @@ -3201,6 +3201,12 @@ void SwitchInClearSetData(u32 battler) gSpecialStatuses[battler].physicalDmg = 0; gSpecialStatuses[battler].specialDmg = 0; + // Reset G-Max Chi Strike boosts. + gBattleStruct->bonusCritStages[battler] = 0; + + // Reset Dynamax flags. + UndoDynamax(battler); + gBattleStruct->overwrittenAbilities[battler] = ABILITY_NONE; // Clear selected party ID so Revival Blessing doesn't get confused. @@ -4247,6 +4253,8 @@ static void HandleTurnActionSelectionState(void) gBattleStruct->mega.toEvolve &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); gBattleStruct->burst.toBurst &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); + gBattleStruct->dynamax.toDynamax &= ~(gBitTable[battler]); + gBattleStruct->dynamax.usingMaxMove[battler] = FALSE; gBattleStruct->zmove.toBeUsed[BATTLE_PARTNER(GetBattlerPosition(battler))] = MOVE_NONE; BtlController_EmitEndBounceEffect(battler, BUFFER_A); MarkBattlerForControllerExec(battler); @@ -4334,13 +4342,25 @@ static void HandleTurnActionSelectionState(void) RecordedBattle_SetBattlerAction(battler, gBattleResources->bufferB[battler][3]); } - gBattleStruct->chosenMovePositions[battler] = gBattleResources->bufferB[battler][2] & ~(RET_MEGA_EVOLUTION | RET_ULTRA_BURST); + // Get the chosen move position (and thus the chosen move) and target from the returned buffer. + gBattleStruct->chosenMovePositions[battler] = gBattleResources->bufferB[battler][2] & ~(RET_MEGA_EVOLUTION | RET_ULTRA_BURST | RET_DYNAMAX); gChosenMoveByBattler[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]]; gBattleStruct->moveTarget[battler] = gBattleResources->bufferB[battler][3]; + + // Check to see if any gimmicks need to be prepared. if (gBattleResources->bufferB[battler][2] & RET_MEGA_EVOLUTION) gBattleStruct->mega.toEvolve |= gBitTable[battler]; else if (gBattleResources->bufferB[battler][2] & RET_ULTRA_BURST) gBattleStruct->burst.toBurst |= gBitTable[battler]; + else if (gBattleResources->bufferB[battler][2] & RET_DYNAMAX) + gBattleStruct->dynamax.toDynamax |= gBitTable[battler]; + + // Max Move check + if (ShouldUseMaxMove(battler, gChosenMoveByBattler[battler])) + { + gBattleStruct->dynamax.baseMove[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]]; + gBattleStruct->dynamax.usingMaxMove[battler] = TRUE; + } gBattleCommunication[battler]++; if (gTestRunnerEnabled) @@ -4615,7 +4635,7 @@ u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect) speed /= 2; else if (holdEffect == HOLD_EFFECT_IRON_BALL) speed /= 2; - else if (holdEffect == HOLD_EFFECT_CHOICE_SCARF) + else if (holdEffect == HOLD_EFFECT_CHOICE_SCARF && !IsDynamaxed(battler)) speed = (speed * 150) / 100; else if (holdEffect == HOLD_EFFECT_QUICK_POWDER && gBattleMons[battler].species == SPECIES_DITTO && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)) speed *= 2; @@ -4659,6 +4679,11 @@ s8 GetMovePriority(u32 battler, u16 move) u16 ability = GetBattlerAbility(battler); priority = gBattleMoves[move].priority; + + // Max Guard check + if (gBattleStruct->dynamax.usingMaxMove[battler] && gBattleMoves[move].split == SPLIT_STATUS) + return gBattleMoves[MOVE_MAX_GUARD].priority; + if (ability == ABILITY_GALE_WINGS && (B_GALE_WINGS < GEN_7 || BATTLER_MAX_HP(battler)) && gBattleMoves[move].type == TYPE_FLYING) @@ -4970,21 +4995,33 @@ static void PopulateArrayWithBattlers(u8 *battlers) battlers[i] = i; } -static bool32 TryDoMegaEvosBeforeMoves(void) +static bool32 TryDoGimmicksBeforeMoves(void) { - if (!(gHitMarker & HITMARKER_RUN) && (gBattleStruct->mega.toEvolve || gBattleStruct->burst.toBurst)) + if (!(gHitMarker & HITMARKER_RUN) + && (gBattleStruct->mega.toEvolve || gBattleStruct->burst.toBurst || gBattleStruct->dynamax.toDynamax)) { u32 i, battler; - u8 megaOrder[MAX_BATTLERS_COUNT]; + u8 order[MAX_BATTLERS_COUNT]; - PopulateArrayWithBattlers(megaOrder); - SortBattlersBySpeed(megaOrder, FALSE); + PopulateArrayWithBattlers(order); + SortBattlersBySpeed(order, FALSE); for (i = 0; i < gBattlersCount; i++) { - if (gBattleStruct->mega.toEvolve & gBitTable[megaOrder[i]] - && !(gProtectStructs[megaOrder[i]].noValidMoves)) + // Dynamax Check + if (gBattleStruct->dynamax.toDynamax & gBitTable[order[i]]) { - gBattlerAttacker = megaOrder[i]; + gBattlerAttacker = order[i]; + gBattleScripting.battler = gBattlerAttacker; + gBattleStruct->dynamax.toDynamax &= ~(gBitTable[gBattlerAttacker]); + PrepareBattlerForDynamax(gBattlerAttacker); + BattleScriptExecute(BattleScript_DynamaxBegins); + return TRUE; + } + // Mega Evo Check + if (gBattleStruct->mega.toEvolve & gBitTable[order[i]] + && !(gProtectStructs[order[i]].noValidMoves)) + { + gBattlerAttacker = order[i]; gBattleStruct->mega.toEvolve &= ~(gBitTable[gBattlerAttacker]); gLastUsedItem = gBattleMons[gBattlerAttacker].item; if (GetBattleFormChangeTargetSpecies(gBattlerAttacker, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE) != SPECIES_NONE) @@ -4993,11 +5030,11 @@ static bool32 TryDoMegaEvosBeforeMoves(void) BattleScriptExecute(BattleScript_MegaEvolution); return TRUE; } - - if (gBattleStruct->burst.toBurst & gBitTable[megaOrder[i]] - && !(gProtectStructs[megaOrder[i]].noValidMoves)) + // Ultra Burst Check + if (gBattleStruct->burst.toBurst & gBitTable[order[i]] + && !(gProtectStructs[order[i]].noValidMoves)) { - battler = gBattlerAttacker = megaOrder[i]; + battler = gBattlerAttacker = order[i]; gBattleStruct->burst.toBurst &= ~(gBitTable[battler]); gLastUsedItem = gBattleMons[battler].item; BattleScriptExecute(BattleScript_UltraBurst); @@ -5143,7 +5180,7 @@ static void RunTurnActionsFunctions(void) // Mega Evolve / Focus Punch-like moves after switching, items, running, but before using a move. if (gCurrentActionFuncId == B_ACTION_USE_MOVE && !gBattleStruct->effectsBeforeUsingMoveDone) { - if (TryDoMegaEvosBeforeMoves()) + if (TryDoGimmicksBeforeMoves()) return; else if (TryDoMoveEffectsBeforeMoves()) return; @@ -5359,6 +5396,14 @@ static void HandleEndTurn_FinishBattle(void) FadeOutMapMusic(5); if (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE || B_RESTORE_HELD_BATTLE_ITEMS == TRUE) TryRestoreHeldItems(); + + // Undo Dynamax HP multiplier before recalculating stats. + for (i = 0; i < gBattlersCount; ++i) + { + if (IsDynamaxed(i)) + UndoDynamax(i); + } + for (i = 0; i < PARTY_SIZE; i++) { bool8 changedForm = FALSE; @@ -5644,7 +5689,8 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) ) { gBattleStruct->dynamicMoveType = ateType | F_DYNAMIC_TYPE_2; - gBattleStruct->ateBoost[battlerAtk] = 1; + if (!IsDynamaxed(battlerAtk)) + gBattleStruct->ateBoost[battlerAtk] = 1; } else if (gBattleMoves[move].type != TYPE_NORMAL && gBattleMoves[move].effect != EFFECT_HIDDEN_POWER @@ -5652,7 +5698,8 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) && attackerAbility == ABILITY_NORMALIZE) { gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_2; - gBattleStruct->ateBoost[battlerAtk] = 1; + if (!IsDynamaxed(battlerAtk)) + gBattleStruct->ateBoost[battlerAtk] = 1; } else if (gBattleMoves[move].soundMove && attackerAbility == ABILITY_LIQUID_VOICE) { diff --git a/src/battle_message.c b/src/battle_message.c index 78e0a473f5..e6e87186b4 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -792,8 +792,21 @@ static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH 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!"); @@ -812,6 +825,7 @@ static const u8 sText_TargetCoveredInStickyCandySyrup[] = _("{B_DEF_NAME_WITH_PR const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [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, @@ -825,6 +839,17 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [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, @@ -1419,6 +1444,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [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, @@ -1534,8 +1560,10 @@ const u16 gDmgHazardsStringIds[] = { [B_MSG_PKMNHURTBYSPIKES] = STRINGID_PKMNHURTBYSPIKES, [B_MSG_STEALTHROCKDMG] = STRINGID_STEALTHROCKDMG, + [B_MSG_SHARPSTEELDMG] = STRINGID_SHARPSTEELDMG, [B_MSG_POINTEDSTONESFLOAT] = STRINGID_POINTEDSTONESFLOAT, - [B_MSG_SPIKESSCATTERED] = STRINGID_SPIKESSCATTERED + [B_MSG_SPIKESSCATTERED] = STRINGID_SPIKESSCATTERED, + [B_MSG_SHARPSTEELFLOATS] = STRINGID_SHARPSTEELFLOATS, }; const u16 gSwitchInAbilityStringIds[] = @@ -1957,6 +1985,27 @@ const u16 gStatusConditionsStringIds[] = STRINGID_PKMNWASPOISONED, STRINGID_PKMNBADLYPOISONED, STRINGID_PKMNWASBURNED, STRINGID_PKMNWASPARALYZED, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNGOTFROSTBITE }; +const u16 gStatus2StringIds[] = +{ + STRINGID_PKMNWASCONFUSED, STRINGID_PKMNFELLINLOVE, STRINGID_TARGETCANTESCAPENOW, STRINGID_PKMNSUBJECTEDTOTORMENT +}; + +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, +}; + 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"); @@ -2851,6 +2900,8 @@ void BufferStringBattle(u16 stringID, u32 battler) case STRINGID_USEDMOVE: // pokemon used a move msg if (gBattleStruct->zmove.active && gBattleStruct->zmove.activeSplit != SPLIT_STATUS) StringCopy(gBattleTextBuff3, GetZMoveName(gBattleMsgDataPtr->currentMove)); + else if (IsMaxMove(gBattleMsgDataPtr->currentMove)) + StringCopy(gBattleTextBuff3, GetMaxMoveName(gBattleMsgDataPtr->currentMove)); else if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT) StringCopy(gBattleTextBuff3, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]); else diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 088546991e..94352278dd 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -336,7 +336,6 @@ static const u16 sWhiteOutBadgeMoney[9] = { 8, 16, 24, 36, 48, 64, 80, 100, 120 #define TAG_LVLUP_BANNER_MON_ICON 55130 -static bool8 IsTwoTurnsMove(u16 move); static void TrySetDestinyBondToHappen(void); static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr); static bool32 IsMonGettingExpSentOut(void); @@ -1227,7 +1226,7 @@ static bool32 TryAegiFormChange(void) { default: return FALSE; - case SPECIES_AEGISLASH: // Shield -> Blade + case SPECIES_AEGISLASH_SHIELD: // Shield -> Blade if (IS_MOVE_STATUS(gCurrentMove)) return FALSE; gBattleMons[gBattlerAttacker].species = SPECIES_AEGISLASH_BLADE; @@ -1235,7 +1234,7 @@ static bool32 TryAegiFormChange(void) case SPECIES_AEGISLASH_BLADE: // Blade -> Shield if (gCurrentMove != MOVE_KINGS_SHIELD) return FALSE; - gBattleMons[gBattlerAttacker].species = SPECIES_AEGISLASH; + gBattleMons[gBattlerAttacker].species = SPECIES_AEGISLASH_SHIELD; break; } @@ -1265,6 +1264,14 @@ static void Cmd_attackcanceler(void) u16 attackerAbility = GetBattlerAbility(gBattlerAttacker); GET_MOVE_TYPE(gCurrentMove, moveType); + // Weight-based moves are blocked by Dynamax. + if (IsDynamaxed(gBattlerTarget) && IsMoveBlockedByDynamax(gCurrentMove)) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveBlockedByDynamax; + return; + } + if (gBattleOutcome != 0) { gCurrentActionFuncId = B_ACTION_FINISHED; @@ -1358,14 +1365,14 @@ static void Cmd_attackcanceler(void) gHitMarker |= HITMARKER_OBEYS; // Check if no available target present on the field. if (NoTargetPresent(gBattlerAttacker, gCurrentMove) - && (!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + && (!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) { if (gBattleMoves[gCurrentMove].effect == EFFECT_FLING) // Edge case for removing a mon's item when there is no target available after using Fling. gBattlescriptCurrInstr = BattleScript_FlingFailConsumeItem; else gBattlescriptCurrInstr = BattleScript_FailedFromAtkString; - if (!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) + if (!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) CancelMultiTurnMoves(gBattlerAttacker); return; } @@ -1374,7 +1381,6 @@ static void Cmd_attackcanceler(void) && gBattleMoves[gCurrentMove].magicCoatAffected && !gProtectStructs[gBattlerAttacker].usesBouncedMove) { - PressurePPLose(gBattlerAttacker, gBattlerTarget, MOVE_MAGIC_COAT); gProtectStructs[gBattlerTarget].usesBouncedMove = TRUE; gBattleCommunication[MULTISTRING_CHOOSER] = 0; // Edge case for bouncing a powder move against a grass type pokemon. @@ -1407,7 +1413,8 @@ static void Cmd_attackcanceler(void) } // Z-moves and Max Moves bypass protection, but deal reduced damage (factored in AccumulateOtherModifiers) - if (gBattleStruct->zmove.active && IS_BATTLER_PROTECTED(gBattlerTarget)) + if ((gBattleStruct->zmove.active || IsMaxMove(gCurrentMove)) + && IS_BATTLER_PROTECTED(gBattlerTarget)) { BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_CouldntFullyProtect; @@ -1418,7 +1425,6 @@ static void Cmd_attackcanceler(void) { if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].snatchAffected) { - PressurePPLose(gBattlerAttacker, gBattlerByTurnOrder[i], MOVE_SNATCH); gProtectStructs[gBattlerByTurnOrder[i]].stealMove = FALSE; gBattleScripting.battler = gBattlerByTurnOrder[i]; BattleScriptPushCursor(); @@ -1445,7 +1451,7 @@ static void Cmd_attackcanceler(void) } else if (IsBattlerProtected(gBattlerTarget, gCurrentMove) && (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) - && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + && ((!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) && gBattleMoves[gCurrentMove].effect != EFFECT_SUCKER_PUNCH) { if (IsMoveMakingContact(gCurrentMove, gBattlerAttacker)) @@ -1746,7 +1752,7 @@ static void Cmd_accuracycheck(void) gBattlescriptCurrInstr = cmd->nextInstr; else if (gStatuses3[gBattlerTarget] & (STATUS3_SEMI_INVULNERABLE)) gBattlescriptCurrInstr = cmd->failInstr; - else if (!JumpIfMoveAffectedByProtect(0)) + else if (!JumpIfMoveAffectedByProtect(gCurrentMove)) gBattlescriptCurrInstr = cmd->nextInstr; } else if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_2ND_HIT @@ -1817,35 +1823,27 @@ static void Cmd_ppreduce(void) CMD_ARGS(); s32 i, ppToDeduct = 1; + u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); if (gBattleControllerExecFlags) return; - if (!gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure) + if (moveTarget == MOVE_TARGET_BOTH + || moveTarget == MOVE_TARGET_FOES_AND_ALLY + || moveTarget == MOVE_TARGET_ALL_BATTLERS + || gBattleMoves[gCurrentMove].forcePressure) { - switch (GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove)) + for (i = 0; i < gBattlersCount; i++) { - case MOVE_TARGET_FOES_AND_ALLY: - for (i = 0; i < gBattlersCount; i++) - { - if (i != gBattlerAttacker && IsBattlerAlive(i)) - ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); - } - break; - case MOVE_TARGET_BOTH: - case MOVE_TARGET_OPPONENTS_FIELD: - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) - ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); - } - break; - default: - if (gBattlerAttacker != gBattlerTarget && GetBattlerAbility(gBattlerTarget) == ABILITY_PRESSURE) - ppToDeduct++; - break; + if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) + ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); } } + else if (moveTarget != MOVE_TARGET_OPPONENTS_FIELD) + { + if (gBattlerAttacker != gBattlerTarget && GetBattlerAbility(gBattlerTarget) == ABILITY_PRESSURE) + ppToDeduct++; + } if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBattlerAttacker].pp[gCurrMovePos]) { @@ -1910,7 +1908,8 @@ s32 CalcCritChanceStageArgs(u32 battlerAtk, u32 battlerDef, u32 move, bool32 rec + 2 * (holdEffectAtk == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[battlerAtk].species == SPECIES_CHANSEY) + 2 * BENEFITS_FROM_LEEK(battlerAtk, holdEffectAtk) + 2 * (B_AFFECTION_MECHANICS == TRUE && GetBattlerFriendshipScore(battlerAtk) >= FRIENDSHIP_200_TO_254) - + (abilityAtk == ABILITY_SUPER_LUCK); + + (abilityAtk == ABILITY_SUPER_LUCK) + + gBattleStruct->bonusCritStages[gBattlerAttacker]; // Record ability only if move had at least +3 chance to get a crit if (critChance >= 3 && recordAbility && (abilityDef == ABILITY_BATTLE_ARMOR || abilityDef == ABILITY_SHELL_ARMOR)) @@ -3085,26 +3084,20 @@ void SetMoveEffect(bool32 primary, u32 certain) } break; case MOVE_EFFECT_FLINCH: - if (battlerAbility == ABILITY_INNER_FOCUS) + if (battlerAbility == ABILITY_INNER_FOCUS + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { - if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN) - { - gLastUsedAbility = ABILITY_INNER_FOCUS; - gBattlerAbility = gEffectBattler; - RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS); - gBattlescriptCurrInstr = BattleScript_FlinchPrevention; - } - else - { - gBattlescriptCurrInstr++; - } + gLastUsedAbility = ABILITY_INNER_FOCUS; + gBattlerAbility = gEffectBattler; + RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS); + gBattlescriptCurrInstr = BattleScript_FlinchPrevention; } - else + else if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber + && !IsDynamaxed(gEffectBattler)) { - if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber) - gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; - gBattlescriptCurrInstr++; + gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; } + gBattlescriptCurrInstr++; break; case MOVE_EFFECT_UPROAR: if (!(gBattleMons[gEffectBattler].status2 & STATUS2_UPROAR)) @@ -3559,14 +3552,14 @@ void SetMoveEffect(bool32 primary, u32 certain) case MOVE_EFFECT_RELIC_SONG: if (GetBattlerAbility(gBattlerAttacker) != ABILITY_SHEER_FORCE && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED)) { - if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA) + if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA_ARIA) { gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA_PIROUETTE; BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeMoveEffect); } else if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA_PIROUETTE) { - gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA; + gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA_ARIA; BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeMoveEffect); } } @@ -3775,7 +3768,8 @@ static void Cmd_tryfaintmon(void) gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL); gSideTimers[B_SIDE_OPPONENT].retaliateTimer = 2; } - if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0) + if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0 + && !IsDynamaxed(gBattlerAttacker)) { gHitMarker &= ~HITMARKER_DESTINYBOND; BattleScriptPush(gBattlescriptCurrInstr); @@ -5221,7 +5215,7 @@ static void Cmd_moveend(void) if (gProtectStructs[gBattlerTarget].spikyShielded && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SPIKY_SHIELD); @@ -5619,6 +5613,8 @@ static void Cmd_moveend(void) { gLastPrintedMoves[gBattlerAttacker] = gChosenMove; gLastUsedMove = gCurrentMove; + if (IsMaxMove(gCurrentMove)) + gBattleStruct->dynamax.lastUsedBaseMove = gBattleStruct->dynamax.baseMove[gBattlerAttacker]; } } if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) @@ -6828,7 +6824,7 @@ static void Cmd_switchineffects(void) && IsBattlerGrounded(battler)) { u8 spikesDmg = (5 - gSideTimers[GetBattlerSide(battler)].spikesAmount) * 2; - gBattleMoveDamage = gBattleMons[battler].maxHP / (spikesDmg); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (spikesDmg); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -6892,6 +6888,17 @@ static void Cmd_switchineffects(void) BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_StickyWebOnSwitchIn; } + else if (!(gDisableStructs[battler].steelSurgeDone) + && (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_STEELSURGE) + && IsBattlerAffectedByHazards(battler, FALSE) + && GetBattlerAbility(battler) != ABILITY_MAGIC_GUARD) + { + gDisableStructs[battler].steelSurgeDone = TRUE; + gBattleMoveDamage = GetStealthHazardDamage(gBattleMoves[MOVE_G_MAX_STEELSURGE].type, battler); + + if (gBattleMoveDamage != 0) + SetDmgHazardsBattlescript(battler, B_MSG_SHARPSTEELDMG); + } else if (gBattleMons[battler].hp != gBattleMons[battler].maxHP && gBattleStruct->zmove.healReplacement) { gBattleStruct->zmove.healReplacement = FALSE; @@ -6931,6 +6938,7 @@ static void Cmd_switchineffects(void) gDisableStructs[battler].spikesDone = FALSE; gDisableStructs[battler].toxicSpikesDone = FALSE; gDisableStructs[battler].stealthRockDone = FALSE; + gDisableStructs[battler].steelSurgeDone = FALSE; for (i = 0; i < gBattlersCount; i++) { @@ -7570,7 +7578,7 @@ static bool32 TryCheekPouch(u32 battler, u32 itemId) && gBattleStruct->ateBerry[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]] && !BATTLER_MAX_HP(battler)) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 3; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 3; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -8169,6 +8177,7 @@ static bool32 TryDefogClear(u32 battlerAtk, bool32 clear) DEFOG_CLEAR(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, BattleScript_StealthRockDefog, 0); DEFOG_CLEAR(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, BattleScript_ToxicSpikesDefog, 0); DEFOG_CLEAR(SIDE_STATUS_STICKY_WEB, stickyWebAmount, BattleScript_StickyWebDefog, 0); + DEFOG_CLEAR(SIDE_STATUS_STEELSURGE, steelsurgeAmount, BattleScript_SteelsurgeDefog, 0); if (B_DEFOG_CLEARS_TERRAIN >= GEN_8 && (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)) { RemoveAllTerrains(); @@ -8330,7 +8339,6 @@ static void CourtChangeSwapSideStatuses(void) u32 temp; // TODO: add Pledge-related effects - // TODO: add Gigantamax-related effects // Swap timers and statuses COURTCHANGE_SWAP(SIDE_STATUS_REFLECT, reflectTimer, temp) @@ -8345,6 +8353,8 @@ static void CourtChangeSwapSideStatuses(void) COURTCHANGE_SWAP(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, temp); COURTCHANGE_SWAP(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, temp); COURTCHANGE_SWAP(SIDE_STATUS_STICKY_WEB, stickyWebAmount, temp); + COURTCHANGE_SWAP(SIDE_STATUS_STEELSURGE, steelsurgeAmount, temp); + COURTCHANGE_SWAP(SIDE_STATUS_DAMAGE_NON_TYPES, damageNonTypesTimer, temp); // Change battler IDs of swapped effects. Needed for the correct string when they expire // E.g. "Foe's Reflect wore off!" @@ -8359,6 +8369,9 @@ static void CourtChangeSwapSideStatuses(void) // Track which side originally set the Sticky Web SWAP(sideTimerPlayer->stickyWebBattlerSide, sideTimerOpp->stickyWebBattlerSide, temp); + + // Swap what type set the Gigantamax damage over time effect + SWAP(sideTimerPlayer->damageNonTypesType, sideTimerOpp->damageNonTypesType, temp); } static void HandleScriptMegaPrimalBurst(u32 caseId, u32 battler, u32 type) @@ -8673,7 +8686,7 @@ static void Cmd_various(void) } else { - gBattleMoveDamage = gBattleMons[battler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -9278,7 +9291,8 @@ static void Cmd_various(void) } else { - if (gBattleMons[gBattlerTarget].ability == gBattleMons[gBattlerAttacker].ability) + if (gBattleMons[gBattlerTarget].ability == gBattleMons[gBattlerAttacker].ability + || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -9306,9 +9320,9 @@ static void Cmd_various(void) else { if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MEGA_LAUNCHER && gBattleMoves[gCurrentMove].pulseMove) - gBattleMoveDamage = -(gBattleMons[battler].maxHP * 75 / 100); + gBattleMoveDamage = -(GetNonDynamaxMaxHP(battler) * 75 / 100); else - gBattleMoveDamage = -(gBattleMons[battler].maxHP / 2); + gBattleMoveDamage = -(GetNonDynamaxMaxHP(battler) / 2); if (gBattleMoveDamage == 0) gBattleMoveDamage = -1; @@ -9382,37 +9396,6 @@ static void Cmd_various(void) } return; } - case VARIOUS_TRY_REFLECT_TYPE: - { - VARIOUS_ARGS(const u8 *failInstr); - if (gBattleMons[gBattlerTarget].species == SPECIES_ARCEUS || gBattleMons[gBattlerTarget].species == SPECIES_SILVALLY) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else if (GetBattlerType(gBattlerTarget, 0) == TYPE_MYSTERY && GetBattlerType(gBattlerTarget, 1) != TYPE_MYSTERY) - { - gBattleMons[gBattlerAttacker].type1 = GetBattlerType(gBattlerTarget, 1); - gBattleMons[gBattlerAttacker].type2 = GetBattlerType(gBattlerTarget, 1); - gBattlescriptCurrInstr = cmd->nextInstr; - } - else if (GetBattlerType(gBattlerTarget, 0) != TYPE_MYSTERY && GetBattlerType(gBattlerTarget, 1) == TYPE_MYSTERY) - { - gBattleMons[gBattlerAttacker].type1 = GetBattlerType(gBattlerTarget, 0); - gBattleMons[gBattlerAttacker].type2 = GetBattlerType(gBattlerTarget, 0); - gBattlescriptCurrInstr = cmd->nextInstr; - } - else if (GetBattlerType(gBattlerTarget, 0) == TYPE_MYSTERY && GetBattlerType(gBattlerTarget, 1) == TYPE_MYSTERY) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else - { - gBattleMons[gBattlerAttacker].type1 = GetBattlerType(gBattlerTarget, 0); - gBattleMons[gBattlerAttacker].type2 = GetBattlerType(gBattlerTarget, 1); - gBattlescriptCurrInstr = cmd->nextInstr; - } - return; - } case VARIOUS_TRY_SOAK: { VARIOUS_ARGS(const u8 *failInstr); @@ -9542,13 +9525,16 @@ static void Cmd_various(void) case VARIOUS_TRY_COPYCAT: { VARIOUS_ARGS(const u8 *failInstr); - if (gLastUsedMove == MOVE_UNAVAILABLE || gBattleMoves[gLastUsedMove].copycatBanned) + if (gLastUsedMove == MOVE_NONE || gLastUsedMove == MOVE_UNAVAILABLE || gBattleMoves[gLastUsedMove].copycatBanned) { gBattlescriptCurrInstr = cmd->failInstr; } else { - gCalledMove = gLastUsedMove; + if (IsMaxMove(gLastUsedMove)) + gCalledMove = gBattleStruct->dynamax.lastUsedBaseMove; + else + gCalledMove = gLastUsedMove; gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); gBattlescriptCurrInstr = cmd->nextInstr; @@ -9559,7 +9545,8 @@ static void Cmd_various(void) { VARIOUS_ARGS(const u8 *failInstr); u16 move = gLastMoves[gBattlerTarget]; - if (move == MOVE_UNAVAILABLE || gBattleMoves[move].instructBanned) + if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || gBattleMoves[move].effect == EFFECT_RECHARGE + || gBattleMoves[move].instructBanned || gBattleMoves[move].twoTurnMove || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -10011,7 +9998,7 @@ static void Cmd_various(void) case VARIOUS_TRY_HEAL_QUARTER_HP: { VARIOUS_ARGS(const u8 *failInstr); - gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -10341,7 +10328,7 @@ static void Cmd_various(void) VARIOUS_ARGS(const u8 *failInstr); bool8 atLeastOneStatBoosted = FALSE; - u16 hpFraction = max(1, gBattleMons[gBattlerAttacker].maxHP / 3); + u16 hpFraction = max(1, GetNonDynamaxMaxHP(gBattlerAttacker) / 3); for (i = 1; i < NUM_STATS; i++) { @@ -10747,12 +10734,17 @@ static void Cmd_setprotectlike(void) else if (gCurrentMove == MOVE_OBSTRUCT) { gProtectStructs[gBattlerAttacker].obstructed = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; + } + else if (gCurrentMove == MOVE_MAX_GUARD) + { + gProtectStructs[gBattlerAttacker].maxGuarded = TRUE; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; } else if (gCurrentMove == MOVE_SILK_TRAP) { gProtectStructs[gBattlerAttacker].silkTrapped = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; } gDisableStructs[gBattlerAttacker].protectUses++; @@ -10867,7 +10859,7 @@ static void Cmd_tryhealhalfhealth(void) if (cmd->battler == BS_ATTACKER) gBattlerTarget = gBattlerAttacker; - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -10919,7 +10911,6 @@ static void Cmd_trymirrormove(void) } else // no valid moves found { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -11002,12 +10993,12 @@ static void Cmd_manipulatedamage(void) case DMG_RECOIL_FROM_MISS: if (B_RECOIL_IF_MISS_DMG >= GEN_5) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; } else if (B_RECOIL_IF_MISS_DMG == GEN_4) { if ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage) - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 2; } else { @@ -11020,24 +11011,24 @@ static void Cmd_manipulatedamage(void) gBattleMoveDamage *= 2; break; case DMG_1_8_TARGET_HP: - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; break; case DMG_FULL_ATTACKER_HP: - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker); break; case DMG_CURR_ATTACKER_HP: - gBattleMoveDamage = gBattleMons[gBattlerAttacker].hp; + gBattleMoveDamage = GetNonDynamaxHP(gBattlerAttacker); break; case DMG_BIG_ROOT: gBattleMoveDamage = GetDrainedBigRootHp(gBattlerAttacker, gBattleMoveDamage); break; case DMG_1_2_ATTACKER_HP: - gBattleMoveDamage = (gBattleMons[gBattlerAttacker].maxHP + 1) / 2; // Half of Max HP Rounded UP + gBattleMoveDamage = (GetNonDynamaxMaxHP(gBattlerAttacker) + 1) / 2; // Half of Max HP Rounded UP break; case DMG_RECOIL_FROM_IMMUNE: - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 2; break; } @@ -11219,7 +11210,7 @@ static void Cmd_stockpiletohpheal(void) } else { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / (1 << (3 - gDisableStructs[gBattlerAttacker].stockpileCounter)); + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / (1 << (3 - gDisableStructs[gBattlerAttacker].stockpileCounter)); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -12034,6 +12025,15 @@ static void Cmd_tryKO(void) u32 holdEffect = GetBattlerHoldEffect(gBattlerTarget, TRUE); u16 targetAbility = GetBattlerAbility(gBattlerTarget); + // Dynamaxed Pokemon cannot be hit by OHKO moves. + if (IsDynamaxed(gBattlerTarget)) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_KO_UNAFFECTED; + gBattlescriptCurrInstr = cmd->failInstr; + return; + } + gPotentialItemEffectBattler = gBattlerTarget; if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < GetBattlerHoldEffectParam(gBattlerTarget)) @@ -12115,7 +12115,7 @@ static void Cmd_damagetohalftargethp(void) { CMD_ARGS(); - gBattleMoveDamage = gBattleMons[gBattlerTarget].hp / 2; + gBattleMoveDamage = GetNonDynamaxHP(gBattlerTarget) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -12159,7 +12159,7 @@ static void Cmd_weatherdamage(void) && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -12172,7 +12172,7 @@ static void Cmd_weatherdamage(void) && !(gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK)) { gBattlerAbility = gBattlerAttacker; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -12184,7 +12184,7 @@ static void Cmd_weatherdamage(void) && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -12362,8 +12362,8 @@ static void Cmd_setsubstitute(void) { CMD_ARGS(); - u32 hp = gBattleMons[gBattlerAttacker].maxHP / 4; - if (gBattleMons[gBattlerAttacker].maxHP / 4 == 0) + u32 hp = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; + if (GetNonDynamaxMaxHP(gBattlerAttacker) / 4 == 0) hp = 1; if (gBattleMons[gBattlerAttacker].hp <= hp) @@ -12373,7 +12373,7 @@ static void Cmd_setsubstitute(void) } else { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games) + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -12393,6 +12393,7 @@ static void Cmd_mimicattackcopy(void) if ((gBattleMoves[gLastMoves[gBattlerTarget]].mimicBanned) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) + || gLastMoves[gBattlerTarget] == MOVE_NONE || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12500,7 +12501,6 @@ static void Cmd_counterdamagecalculator(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -12528,7 +12528,6 @@ static void Cmd_mirrorcoatdamagecalculator(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -12570,18 +12569,26 @@ static void Cmd_trysetencore(void) s32 i; - for (i = 0; i < MAX_MON_MOVES; i++) + if (IsMaxMove(gLastMoves[gBattlerTarget]) && !IsDynamaxed(gBattlerTarget)) { - if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) - break; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBattleMons[gBattlerTarget].moves[i] == gBattleStruct->dynamax.baseMove[gBattlerTarget]) + break; + } + } + else + { + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) + break; + } } - if (gLastMoves[gBattlerTarget] == MOVE_NONE - || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE - || gLastMoves[gBattlerTarget] == MOVE_STRUGGLE - || gLastMoves[gBattlerTarget] == MOVE_ENCORE - || gLastMoves[gBattlerTarget] == MOVE_MIRROR_MOVE - || gLastMoves[gBattlerTarget] == MOVE_SHELL_TRAP) + if ((gBattleMoves[gLastMoves[gBattlerTarget]].encoreBanned) + || gLastMoves[gBattlerTarget] == MOVE_NONE + || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE) { i = MAX_MON_MOVES; } @@ -12606,8 +12613,8 @@ static void Cmd_painsplitdmgcalc(void) if (!(DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove))) { - s32 hpDiff = (gBattleMons[gBattlerAttacker].hp + gBattleMons[gBattlerTarget].hp) / 2; - s32 painSplitHp = gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - hpDiff; + s32 hpDiff = (gBattleMons[gBattlerAttacker].hp + GetNonDynamaxHP(gBattlerTarget)) / 2; + s32 painSplitHp = gBattleMoveDamage = GetNonDynamaxHP(gBattlerTarget) - hpDiff; u8 *storeLoc = (void *)(&gBattleScripting.painSplitHp); storeLoc[0] = (painSplitHp); @@ -12636,7 +12643,7 @@ static void Cmd_settypetorandomresistance(void) { gBattlescriptCurrInstr = cmd->failInstr; } - else if (IsTwoTurnsMove(gLastLandedMoves[gBattlerAttacker]) + else if (gBattleMoves[gLastLandedMoves[gBattlerAttacker]].twoTurnMove && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12745,20 +12752,6 @@ static void Cmd_copymovepermanently(void) } } -static bool8 IsTwoTurnsMove(u16 move) -{ - if (gBattleMoves[move].effect == EFFECT_SKULL_BASH - || gBattleMoves[move].effect == EFFECT_TWO_TURNS_ATTACK - || gBattleMoves[move].effect == EFFECT_SOLAR_BEAM - || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE - || gBattleMoves[move].effect == EFFECT_BIDE - || gBattleMoves[move].effect == EFFECT_METEOR_BEAM - || gBattleMoves[move].effect == EFFECT_GEOMANCY) - return TRUE; - else - return FALSE; -} - static void Cmd_trychoosesleeptalkmove(void) { CMD_ARGS(const u8 *failInstr); @@ -12767,8 +12760,8 @@ static void Cmd_trychoosesleeptalkmove(void) for (i = 0; i < MAX_MON_MOVES; i++) { - if ((gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned) - || IsTwoTurnsMove(gBattleMons[gBattlerAttacker].moves[i])) + if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned + || gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].twoTurnMove) { unusableMovesBits |= gBitTable[i]; } @@ -12850,15 +12843,30 @@ static void Cmd_tryspiteppreduce(void) { s32 i; - for (i = 0; i < MAX_MON_MOVES; i++) + // Get move slot to reduce PP. + if (IsMaxMove(gLastMoves[gBattlerTarget])) { - if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) - break; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBattleStruct->dynamax.baseMove[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) + break; + } + } + else + { + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) + break; + } } if (i != MAX_MON_MOVES && gBattleMons[gBattlerTarget].pp[i] > (B_CAN_SPITE_FAIL >= GEN_4 ? 0 : 1)) { s32 ppToDeduct = B_PP_REDUCED_BY_SPITE >= GEN_4 ? 4 : (Random() & 3) + 2; + // G-Max Depletion only deducts 2 PP. + if (IsMaxMove(gCurrentMove) && gBattleMoves[gCurrentMove].argument == MAX_EFFECT_SPITE) + ppToDeduct = 2; if (gBattleMons[gBattlerTarget].pp[i] < ppToDeduct) ppToDeduct = gBattleMons[gBattlerTarget].pp[i]; @@ -13002,7 +13010,7 @@ static void Cmd_cursetarget(void) else { gBattleMons[gBattlerTarget].status2 |= STATUS2_CURSED; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -13018,7 +13026,6 @@ static void Cmd_trysetspikes(void) if (gSideTimers[targetSide].spikesAmount == 3) { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } else @@ -13059,8 +13066,6 @@ static void Cmd_trysetperishsong(void) } } - PressurePPLoseOnUsingPerishSong(gBattlerAttacker); - if (notAffectedCount == gBattlersCount) gBattlescriptCurrInstr = cmd->failInstr; else @@ -13168,7 +13173,7 @@ static void Cmd_presentdamagecalculation(void) } else { - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -13334,9 +13339,9 @@ static void Cmd_maxattackhalvehp(void) { CMD_ARGS(const u8 *failInstr); - u32 halfHp = gBattleMons[gBattlerAttacker].maxHP / 2; + u32 halfHp = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; - if (!(gBattleMons[gBattlerAttacker].maxHP / 2)) + if (!(GetNonDynamaxMaxHP(gBattlerAttacker) / 2)) halfHp = 1; // Belly Drum fails if the user's current HP is less than half its maximum, or if the user's Attack is already at +6 (even if the user has Contrary). @@ -13344,7 +13349,7 @@ static void Cmd_maxattackhalvehp(void) && gBattleMons[gBattlerAttacker].hp > halfHp) { gBattleMons[gBattlerAttacker].statStages[STAT_ATK] = MAX_STAT_STAGE; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -13421,6 +13426,13 @@ static void Cmd_rapidspinfree(void) BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_StealthRockFree; } + else if (gSideStatuses[atkSide] & SIDE_STATUS_STEELSURGE) + { + gSideStatuses[atkSide] &= ~SIDE_STATUS_STEELSURGE; + gSideTimers[atkSide].steelsurgeAmount = 0; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SteelsurgeFree; + } else { gBattlescriptCurrInstr = cmd->nextInstr; @@ -13445,18 +13457,18 @@ static void Cmd_recoverbasedonsunlight(void) if (gCurrentMove == MOVE_SHORE_UP) { if (WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_SANDSTORM) - gBattleMoveDamage = 20 * gBattleMons[gBattlerAttacker].maxHP / 30; + gBattleMoveDamage = 20 * GetNonDynamaxMaxHP(gBattlerAttacker) / 30; else - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; } else { if (!(gBattleWeather & B_WEATHER_ANY) || !WEATHER_HAS_EFFECT || GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_UTILITY_UMBRELLA) - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; else if (gBattleWeather & B_WEATHER_SUN) - gBattleMoveDamage = 20 * gBattleMons[gBattlerAttacker].maxHP / 30; + gBattleMoveDamage = 20 * GetNonDynamaxMaxHP(gBattlerAttacker) / 30; else // not sunny weather - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; } if (gBattleMoveDamage == 0) @@ -13742,13 +13754,15 @@ static void Cmd_settorment(void) { CMD_ARGS(const u8 *failInstr); - if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT) + if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT + || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } else { gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; + gDisableStructs[gBattlerTarget].tormentTimer = PERMANENT_TORMENT; // permanent gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -13981,7 +13995,7 @@ static void Cmd_trywish(void) } else { - gBattleMoveDamage = max(1, gBattleMons[gBattlerTarget].maxHP / 2); + gBattleMoveDamage = max(1, GetNonDynamaxMaxHP(gBattlerAttacker) / 2); } gBattleMoveDamage *= -1; @@ -14061,13 +14075,13 @@ static void Cmd_setdamagetohealthdifference(void) { CMD_ARGS(const u8 *failInstr); - if (gBattleMons[gBattlerTarget].hp <= gBattleMons[gBattlerAttacker].hp) + if (GetNonDynamaxHP(gBattlerTarget) <= gBattleMons[gBattlerAttacker].hp) { gBattlescriptCurrInstr = cmd->failInstr; } else { - gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - gBattleMons[gBattlerAttacker].hp; + gBattleMoveDamage = GetNonDynamaxHP(gBattlerTarget) - gBattleMons[gBattlerAttacker].hp; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -14128,7 +14142,7 @@ static void Cmd_tryswapabilities(void) } else { - if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -14156,7 +14170,6 @@ static void Cmd_tryimprison(void) u8 battler, sideAttacker; sideAttacker = GetBattlerSide(gBattlerAttacker); - PressurePPLoseOnUsingImprison(gBattlerAttacker); for (battler = 0; battler < gBattlersCount; battler++) { if (sideAttacker != GetBattlerSide(battler)) @@ -14251,9 +14264,7 @@ static void Cmd_assistattackselect(void) { u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId); - if (gBattleMoves[move].copycatBanned - || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE - || gBattleMoves[move].effect == EFFECT_SKY_DROP) + if (gBattleMoves[move].assistBanned) continue; validMoves[chooseableMovesNo++] = move; @@ -14280,8 +14291,6 @@ static void Cmd_trysetmagiccoat(void) { CMD_ARGS(const u8 *failInstr); - gBattlerTarget = gBattlerAttacker; - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn { gBattlescriptCurrInstr = cmd->failInstr; @@ -14298,7 +14307,6 @@ static void Cmd_trysetsnatch(void) { CMD_ARGS(const u8 *failInstr); - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn { gBattlescriptCurrInstr = cmd->failInstr; @@ -14338,7 +14346,7 @@ static void Cmd_switchoutabilities(void) MarkBattlerForControllerExec(battler); break; case ABILITY_REGENERATOR: - gBattleMoveDamage = gBattleMons[battler].maxHP / 3; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 3; gBattleMoveDamage += gBattleMons[battler].hp; if (gBattleMoveDamage > gBattleMons[battler].maxHP) gBattleMoveDamage = gBattleMons[battler].maxHP; @@ -14605,8 +14613,6 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) { if (!(gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE)) return FALSE; - else if (B_SOUND_SUBSTITUTE >= GEN_6 && gBattleMoves[move].soundMove) - return FALSE; else if (gBattleMoves[move].ignoresSubstitute) return FALSE; else if (GetBattlerAbility(battlerAtk) == ABILITY_INFILTRATOR) @@ -14617,7 +14623,7 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) bool32 DoesDisguiseBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) { - if (gBattleMons[battlerDef].species != SPECIES_MIMIKYU + if (gBattleMons[battlerDef].species != SPECIES_MIMIKYU_DISGUISED || gBattleMons[battlerDef].status2 & STATUS2_TRANSFORMED || IS_MOVE_STATUS(move) || gHitMarker & HITMARKER_IGNORE_DISGUISE @@ -15525,7 +15531,6 @@ void BS_CalcMetalBurstDmg(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -15626,41 +15631,13 @@ static bool32 CriticalCapture(u32 odds) return FALSE; } -static const u16 sParentalBondBannedEffects[] = -{ - EFFECT_BEAT_UP, - EFFECT_BIDE, // Note: Bide should work with Parental Bond. This will be addressed in future. - EFFECT_ENDEAVOR, - EFFECT_EXPLOSION, - EFFECT_FINAL_GAMBIT, - EFFECT_FLING, - EFFECT_GEOMANCY, - EFFECT_METEOR_BEAM, - EFFECT_MULTI_HIT, - EFFECT_OHKO, - EFFECT_ROLLOUT, - EFFECT_SEMI_INVULNERABLE, - EFFECT_SKULL_BASH, - EFFECT_SKY_DROP, - EFFECT_SOLAR_BEAM, - EFFECT_TRIPLE_KICK, - EFFECT_TWO_TURNS_ATTACK, - EFFECT_UPROAR, -}; - bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler) { - if (move != MOVE_NONE && move != MOVE_STRUGGLE + if (move != MOVE_NONE && move != MOVE_UNAVAILABLE && move != MOVE_STRUGGLE + && !gBattleMoves[move].parentalBondBanned && gBattleMoves[move].split != SPLIT_STATUS - && gBattleMoves[move].strikeCount <= 2) + && gBattleMoves[move].strikeCount < 2) { - u32 i; - for (i = 0; i < ARRAY_COUNT(sParentalBondBannedEffects); i++) - { - if (gBattleMoves[move].effect == sParentalBondBannedEffects[i]) - return FALSE; - } - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { switch (GetBattlerMoveTargetType(battler, move)) @@ -16238,6 +16215,52 @@ void BS_JumpIfTerrainAffected(void) gBattlescriptCurrInstr = cmd->nextInstr; } +void BS_TryReflectType(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u16 targetBaseSpecies = GET_BASE_SPECIES_ID(gBattleMons[gBattlerTarget].species); + u8 targetType1 = GetBattlerType(gBattlerTarget, 0); + u8 targetType2 = GetBattlerType(gBattlerTarget, 1); + u8 targetType3 = GetBattlerType(gBattlerTarget, 2); + + if (targetBaseSpecies == SPECIES_ARCEUS || targetBaseSpecies == SPECIES_SILVALLY) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (IS_BATTLER_TYPELESS(gBattlerTarget)) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (targetType1 == TYPE_MYSTERY && targetType2 == TYPE_MYSTERY && targetType3 != TYPE_MYSTERY) + { + gBattleMons[gBattlerAttacker].type1 = TYPE_NORMAL; + gBattleMons[gBattlerAttacker].type2 = TYPE_NORMAL; + gBattleMons[gBattlerAttacker].type3 = targetType3; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else if (targetType1 == TYPE_MYSTERY && targetType2 != TYPE_MYSTERY) + { + gBattleMons[gBattlerAttacker].type1 = targetType2; + gBattleMons[gBattlerAttacker].type2 = targetType2; + gBattleMons[gBattlerAttacker].type3 = targetType3; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else if (targetType1 != TYPE_MYSTERY && targetType2 == TYPE_MYSTERY) + { + gBattleMons[gBattlerAttacker].type1 = targetType1; + gBattleMons[gBattlerAttacker].type2 = targetType1; + gBattleMons[gBattlerAttacker].type3 = targetType3; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattleMons[gBattlerAttacker].type1 = targetType1; + gBattleMons[gBattlerAttacker].type2 = targetType2; + gBattleMons[gBattlerAttacker].type3 = targetType3; + gBattlescriptCurrInstr = cmd->nextInstr; + } +} + void BS_TrySetOctolock(void) { NATIVE_ARGS(u8 battler, const u8 *failInstr); diff --git a/src/battle_setup.c b/src/battle_setup.c index 88c239e181..e8ffcd8908 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -590,18 +590,21 @@ void BattleSetup_StartLegendaryBattle(void) { default: case SPECIES_GROUDON: - gBattleTypeFlags |= BATTLE_TYPE_GROUDON; + case SPECIES_GROUDON_PRIMAL: CreateBattleStartTask(B_TRANSITION_GROUDON, MUS_VS_KYOGRE_GROUDON); break; case SPECIES_KYOGRE: - gBattleTypeFlags |= BATTLE_TYPE_KYOGRE; + case SPECIES_KYOGRE_PRIMAL: CreateBattleStartTask(B_TRANSITION_KYOGRE, MUS_VS_KYOGRE_GROUDON); break; case SPECIES_RAYQUAZA: - gBattleTypeFlags |= BATTLE_TYPE_RAYQUAZA; + case SPECIES_RAYQUAZA_MEGA: CreateBattleStartTask(B_TRANSITION_RAYQUAZA, MUS_VS_RAYQUAZA); break; - case SPECIES_DEOXYS: + case SPECIES_DEOXYS_NORMAL: + case SPECIES_DEOXYS_ATTACK: + case SPECIES_DEOXYS_DEFENSE: + case SPECIES_DEOXYS_SPEED: CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RG_VS_DEOXYS); break; case SPECIES_LUGIA: @@ -623,7 +626,7 @@ void StartGroudonKyogreBattle(void) { LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; - gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; if (gGameVersion == VERSION_RUBY) CreateBattleStartTask(B_TRANSITION_ANGLED_WIPES, MUS_VS_KYOGRE_GROUDON); // GROUDON @@ -643,7 +646,7 @@ void StartRegiBattle(void) LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; - gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES); switch (species) diff --git a/src/battle_util.c b/src/battle_util.c index d0bb6e8c3c..ac8e7234a1 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -336,6 +336,13 @@ void HandleAction_UseMove(void) SetTypeBeforeUsingMove(gChosenMove, gBattlerAttacker); GET_MOVE_TYPE(gChosenMove, moveType); + // check max move used + if (gBattleStruct->dynamax.usingMaxMove[gBattlerAttacker]) + { + gCurrentMove = gChosenMove = GetMaxMove(gBattlerAttacker, gCurrentMove); + gBattleStruct->dynamax.activeSplit = gBattleStruct->dynamax.splits[gBattlerAttacker]; + } + // choose target side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove) @@ -849,6 +856,7 @@ void HandleAction_ActionFinished(void) gBattleCommunication[4] = 0; gBattleScripting.multihitMoveEffect = 0; gBattleResources->battleScriptsStack->size = 0; + gBattleStruct->dynamax.usingMaxMove[gBattlerAttacker] = 0; if (B_RECALC_TURN_AFTER_ACTIONS >= GEN_8 && !afterYouActive) { @@ -1204,93 +1212,6 @@ u8 GetBattlerForBattleScript(u8 caseId) return ret; } -void PressurePPLose(u8 target, u8 attacker, u16 move) -{ - int moveIndex; - - if (GetBattlerAbility(target) != ABILITY_PRESSURE) - return; - - for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) - { - if (gBattleMons[attacker].moves[moveIndex] == move) - break; - } - - if (moveIndex == MAX_MON_MOVES) - return; - - if (gBattleMons[attacker].pp[moveIndex] != 0) - gBattleMons[attacker].pp[moveIndex]--; - - if (MOVE_IS_PERMANENT(attacker, moveIndex)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + moveIndex, 0, 1, &gBattleMons[attacker].pp[moveIndex]); - MarkBattlerForControllerExec(attacker); - } -} - -void PressurePPLoseOnUsingImprison(u8 attacker) -{ - int i, j; - int imprisonPos = MAX_MON_MOVES; - u8 atkSide = GetBattlerSide(attacker); - - for (i = 0; i < gBattlersCount; i++) - { - if (atkSide != GetBattlerSide(i) && GetBattlerAbility(i) == ABILITY_PRESSURE) - { - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (gBattleMons[attacker].moves[j] == MOVE_IMPRISON) - break; - } - if (j != MAX_MON_MOVES) - { - imprisonPos = j; - if (gBattleMons[attacker].pp[j] != 0) - gBattleMons[attacker].pp[j]--; - } - } - } - - if (imprisonPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, imprisonPos)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[attacker].pp[imprisonPos]); - MarkBattlerForControllerExec(attacker); - } -} - -void PressurePPLoseOnUsingPerishSong(u8 attacker) -{ - int i, j; - int perishSongPos = MAX_MON_MOVES; - - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerAbility(i) == ABILITY_PRESSURE && i != attacker) - { - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (gBattleMons[attacker].moves[j] == MOVE_PERISH_SONG) - break; - } - if (j != MAX_MON_MOVES) - { - perishSongPos = j; - if (gBattleMons[attacker].pp[j] != 0) - gBattleMons[attacker].pp[j]--; - } - } - } - - if (perishSongPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, perishSongPos)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[attacker].pp[perishSongPos]); - MarkBattlerForControllerExec(attacker); - } -} - static void UNUSED MarkAllBattlersForControllerExec(void) { int i; @@ -1567,26 +1488,7 @@ bool32 IsHealBlockPreventingMove(u32 battler, u32 move) if (!(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) return FALSE; - switch (gBattleMoves[move].effect) - { - case EFFECT_MORNING_SUN: - case EFFECT_SYNTHESIS: - case EFFECT_MOONLIGHT: - case EFFECT_RESTORE_HP: - case EFFECT_REST: - case EFFECT_ROOST: - case EFFECT_HEALING_WISH: - case EFFECT_WISH: - case EFFECT_HEAL_PULSE: - case EFFECT_JUNGLE_HEALING: - return TRUE; - case EFFECT_ABSORB: - case EFFECT_STRENGTH_SAP: - case EFFECT_DREAM_EATER: - return B_HEAL_BLOCKING >= GEN_6; - default: - return FALSE; - } + return gBattleMoves[move].healBlockBanned; } static bool32 IsBelchPreventingMove(u32 battler, u32 move) @@ -1597,15 +1499,18 @@ static bool32 IsBelchPreventingMove(u32 battler, u32 move) return !(gBattleStruct->ateBerry[battler & BIT_SIDE] & gBitTable[gBattlerPartyIndexes[battler]]); } +// Dynamax bypasses all selection prevention except Taunt and Assault Vest. +#define DYNAMAX_BYPASS_CHECK !gBattleStruct->dynamax.playerSelect && !IsDynamaxed(gBattlerAttacker) + u32 TrySetCantSelectMoveBattleScript(u32 battler) { u32 limitations = 0; - u8 moveId = gBattleResources->bufferB[battler][2] & ~(RET_MEGA_EVOLUTION | RET_ULTRA_BURST); + u8 moveId = gBattleResources->bufferB[battler][2] & ~(RET_MEGA_EVOLUTION | RET_ULTRA_BURST | RET_DYNAMAX); u32 move = gBattleMons[battler].moves[moveId]; u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); u16 *choicedMove = &gBattleStruct->choicedMove[battler]; - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].disabledMove == move && move != MOVE_NONE) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].disabledMove == move && move != MOVE_NONE) { gBattleScripting.battler = battler; gCurrentMove = move; @@ -1621,7 +1526,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && move == gLastMoves[battler] && move != MOVE_STRUGGLE && (gBattleMons[battler].status2 & STATUS2_TORMENT)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && move == gLastMoves[battler] && move != MOVE_STRUGGLE && (gBattleMons[battler].status2 & STATUS2_TORMENT)) { CancelMultiTurnMoves(battler); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1638,7 +1543,10 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].tauntTimer != 0 && IS_MOVE_STATUS(move)) { - gCurrentMove = move; + if (IsDynamaxed(gBattlerAttacker)) + gCurrentMove = MOVE_MAX_GUARD; + else + gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { gPalaceSelectionBattleScripts[battler] = BattleScript_SelectingNotAllowedMoveTauntInPalace; @@ -1651,7 +1559,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].throatChopTimer != 0 && gBattleMoves[move].soundMove) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].throatChopTimer != 0 && gBattleMoves[move].soundMove) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1666,7 +1574,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && GetImprisonedMovesCount(battler, move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && GetImprisonedMovesCount(battler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1681,7 +1589,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1696,7 +1604,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsHealBlockPreventingMove(battler, move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsHealBlockPreventingMove(battler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1711,7 +1619,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsBelchPreventingMove(battler, move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsBelchPreventingMove(battler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1726,7 +1634,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (move == MOVE_STUFF_CHEEKS && ItemId_GetPocket(gBattleMons[battler].item) != POCKET_BERRIES) + if (DYNAMAX_BYPASS_CHECK && move == MOVE_STUFF_CHEEKS && ItemId_GetPocket(gBattleMons[battler].item) != POCKET_BERRIES) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1741,7 +1649,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleMoves[move].effect == EFFECT_GIGATON_HAMMER && move == gLastResultingMoves[battler]) + if (gBattleMoves[move].cantUseTwice && move == gLastResultingMoves[battler]) { gCurrentMove = move; PREPARE_MOVE_BUFFER(gBattleTextBuff1, gCurrentMove); @@ -1758,7 +1666,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } gPotentialItemEffectBattler = battler; - if (HOLD_EFFECT_CHOICE(holdEffect) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) + if (DYNAMAX_BYPASS_CHECK && HOLD_EFFECT_CHOICE(holdEffect) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) { gCurrentMove = *choicedMove; gLastUsedItem = gBattleMons[battler].item; @@ -1775,7 +1683,10 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } else if (holdEffect == HOLD_EFFECT_ASSAULT_VEST && IS_MOVE_STATUS(move) && move != MOVE_ME_FIRST) { - gCurrentMove = move; + if (IsDynamaxed(gBattlerAttacker)) + gCurrentMove = MOVE_MAX_GUARD; + else + gCurrentMove = move; gLastUsedItem = gBattleMons[battler].item; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { @@ -1788,7 +1699,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) limitations++; } } - if ((GetBattlerAbility(battler) == ABILITY_GORILLA_TACTICS) && *choicedMove != MOVE_NONE + if (DYNAMAX_BYPASS_CHECK && (GetBattlerAbility(battler) == ABILITY_GORILLA_TACTICS) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) { gCurrentMove = *choicedMove; @@ -1893,7 +1804,8 @@ u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check) // Gorilla Tactics else if (check & MOVE_LIMITATION_CHOICE_ITEM && GetBattlerAbility(battler) == ABILITY_GORILLA_TACTICS && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != gBattleMons[battler].moves[i]) unusableMoves |= gBitTable[i]; - else if (check & MOVE_LIMITATION_GIGATON_HAMMER && gBattleMoves[gBattleMons[battler].moves[i]].effect == EFFECT_GIGATON_HAMMER && gBattleMons[battler].moves[i] == gLastResultingMoves[battler]) + // Can't Use Twice flag + else if (check & MOVE_LIMITATION_CANT_USE_TWICE && gBattleMoves[gBattleMons[battler].moves[i]].cantUseTwice && gBattleMons[battler].moves[i] == gLastResultingMoves[battler]) unusableMoves |= gBitTable[i]; } return unusableMoves; @@ -1987,6 +1899,7 @@ enum ENDTURN_SUN, ENDTURN_HAIL, ENDTURN_SNOW, + ENDTURN_DAMAGE_NON_TYPES, ENDTURN_GRAVITY, ENDTURN_WATER_SPORT, ENDTURN_MUD_SPORT, @@ -2366,6 +2279,34 @@ u8 DoFieldEndTurnEffects(void) } 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 + { + 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) { @@ -2528,8 +2469,10 @@ enum ENDTURN_SLOW_START, ENDTURN_PLASMA_FISTS, 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_BATTLER_COUNT }; @@ -2576,7 +2519,7 @@ u8 DoBattlerEndTurnEffects(void) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) && gBattleMons[battler].hp != 0) { - gBattleMoveDamage = GetDrainedBigRootHp(battler, gBattleMons[battler].maxHP / 16); + gBattleMoveDamage = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); BattleScriptExecute(BattleScript_IngrainTurnHeal); effect++; } @@ -2588,7 +2531,7 @@ u8 DoBattlerEndTurnEffects(void) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) && gBattleMons[battler].hp != 0) { - gBattleMoveDamage = GetDrainedBigRootHp(battler, gBattleMons[battler].maxHP / 16); + gBattleMoveDamage = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); BattleScriptExecute(BattleScript_AquaRingHeal); effect++; } @@ -2622,7 +2565,7 @@ u8 DoBattlerEndTurnEffects(void) MAGIC_GUARD_CHECK; gBattlerTarget = gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleScripting.animArg1 = gBattlerTarget; @@ -2642,7 +2585,7 @@ u8 DoBattlerEndTurnEffects(void) { if (!BATTLER_MAX_HP(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -2652,7 +2595,7 @@ u8 DoBattlerEndTurnEffects(void) } else { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_PoisonTurnDmg); @@ -2671,7 +2614,7 @@ u8 DoBattlerEndTurnEffects(void) { if (!BATTLER_MAX_HP(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -2681,7 +2624,7 @@ u8 DoBattlerEndTurnEffects(void) } else { - gBattleMoveDamage = gBattleMons[battler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; if ((gBattleMons[battler].status1 & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns @@ -2698,7 +2641,7 @@ u8 DoBattlerEndTurnEffects(void) && gBattleMons[battler].hp != 0) { MAGIC_GUARD_CHECK; - gBattleMoveDamage = gBattleMons[battler].maxHP / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (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. @@ -2717,7 +2660,7 @@ u8 DoBattlerEndTurnEffects(void) && gBattleMons[battler].hp != 0) { MAGIC_GUARD_CHECK; - gBattleMoveDamage = gBattleMons[battler].maxHP / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_FrostbiteTurnDmg); @@ -2734,7 +2677,7 @@ u8 DoBattlerEndTurnEffects(void) // persist even after the affected Pokemon has been awakened by Shed Skin. if (gBattleMons[battler].status1 & STATUS1_SLEEP) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_NightmareTurnDmg); @@ -2752,7 +2695,7 @@ u8 DoBattlerEndTurnEffects(void) && gBattleMons[battler].hp != 0) { MAGIC_GUARD_CHECK; - gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_CurseTurnDmg); @@ -2772,9 +2715,9 @@ u8 DoBattlerEndTurnEffects(void) PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleStruct->wrappedMove[battler]); gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; if (GetBattlerHoldEffect(gBattleStruct->wrappedBy[battler], TRUE) == HOLD_EFFECT_BINDING_BAND) - gBattleMoveDamage = gBattleMons[battler].maxHP / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); else - gBattleMoveDamage = gBattleMons[battler].maxHP / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -3099,6 +3042,27 @@ u8 DoBattlerEndTurnEffects(void) } 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: + if (IsDynamaxed(battler) + && --gBattleStruct->dynamax.dynamaxTurns[battler] == 0) + { + gBattleScripting.battler = battler; + UndoDynamax(battler); + BattleScriptExecute(BattleScript_DynamaxEnds); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; case ENDTURN_BATTLER_COUNT: // done gBattleStruct->turnEffectsTracker = 0; gBattleStruct->turnEffectsBattlerId++; @@ -3668,7 +3632,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) if (moveType == TYPE_FIRE) { gProtectStructs[gBattlerAttacker].powderSelfDmg = TRUE; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; gBattlescriptCurrInstr = BattleScript_MoveUsedPowder; effect = 1; } @@ -4750,7 +4714,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) { BattleScriptPushCursorAndCallback(BattleScript_RainDishActivates); - gBattleMoveDamage = gBattleMons[battler].maxHP / (gLastUsedAbility == ABILITY_RAIN_DISH ? 16 : 8); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (gLastUsedAbility == ABILITY_RAIN_DISH ? 16 : 8); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -4848,7 +4812,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (IsBattlerWeatherAffected(battler, B_WEATHER_SUN)) { BattleScriptPushCursorAndCallback(BattleScript_SolarPowerActivates); - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; effect++; @@ -4951,7 +4915,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattlescriptCurrInstr = BattleScript_GoodAsGoldActivates; effect = 1; } - else if (gLastUsedAbility == ABILITY_ICE_FACE && IS_MOVE_PHYSICAL(move) && gBattleMons[gBattlerTarget].species == SPECIES_EISCUE) + else if (gLastUsedAbility == ABILITY_ICE_FACE && IS_MOVE_PHYSICAL(move) && gBattleMons[gBattlerTarget].species == SPECIES_EISCUE_ICE_FACE) { gBattleMons[gBattlerTarget].species = SPECIES_EISCUE_NOICE_FACE; if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS) @@ -5051,7 +5015,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 else gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; - gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -5199,6 +5163,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(gBattlerAttacker) && !IsAbilityOnSide(gBattlerAttacker, ABILITY_AROMA_VEIL) && gBattleMons[gBattlerAttacker].pp[gChosenMovePos] != 0 + && !IsDynamaxed(gBattlerAttacker) // TODO: Max Moves don't make contact, useless? && (Random() % 3) == 0) { gDisableStructs[gBattlerAttacker].disabledMove = gChosenMove; @@ -5249,7 +5214,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerAttacker) && TARGET_TURN_DAMAGED - && IsMoveMakingContact(move, gBattlerAttacker)) + && IsMoveMakingContact(move, gBattlerAttacker) + && !IsDynamaxed(gBattlerTarget)) { switch (gBattleMons[gBattlerAttacker].ability) { @@ -5338,7 +5304,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && TARGET_TURN_DAMAGED && IsMoveMakingContact(move, gBattlerAttacker)) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / (B_ROUGH_SKIN_DMG >= GEN_4 ? 8 : 16); + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / (B_ROUGH_SKIN_DMG >= GEN_4 ? 8 : 16); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); @@ -5362,7 +5328,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } else { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptPushCursor(); @@ -5566,7 +5532,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleMons[gBattlerTarget].species = SPECIES_CRAMORANT; if (GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -5579,7 +5545,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleMons[gBattlerTarget].species = SPECIES_CRAMORANT; if (GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -6010,7 +5976,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)]) { gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)] = FALSE; - gBattleMons[battler].species = SPECIES_EISCUE; + gBattleMons[battler].species = SPECIES_EISCUE_ICE_FACE; BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeWithStringEnd3); effect++; } @@ -6277,6 +6243,7 @@ bool32 CanSleep(u32 battler) if (ability == ABILITY_INSOMNIA || ability == ABILITY_VITAL_SPIRIT || ability == ABILITY_COMATOSE + || ability == ABILITY_PURIFYING_SALT || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD || gBattleMons[battler].status1 & STATUS1_ANY || IsAbilityOnSide(battler, ABILITY_SWEET_VEIL) @@ -6295,6 +6262,7 @@ bool32 CanBePoisoned(u32 battlerAttacker, u32 battlerTarget) || gBattleMons[battlerTarget].status1 & STATUS1_ANY || ability == ABILITY_IMMUNITY || ability == ABILITY_COMATOSE + || ability == ABILITY_PURIFYING_SALT || IsAbilityOnSide(battlerTarget, ABILITY_PASTEL_VEIL) || IsAbilityStatusProtected(battlerTarget) || IsBattlerTerrainAffected(battlerTarget, STATUS_FIELD_MISTY_TERRAIN)) @@ -6312,6 +6280,7 @@ bool32 CanBeBurned(u32 battler) || ability == ABILITY_WATER_BUBBLE || ability == ABILITY_COMATOSE || ability == ABILITY_THERMAL_EXCHANGE + || ability == ABILITY_PURIFYING_SALT || IsAbilityStatusProtected(battler) || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) return FALSE; @@ -6325,6 +6294,7 @@ bool32 CanBeParalyzed(u32 battler) || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD || ability == ABILITY_LIMBER || ability == ABILITY_COMATOSE + || ability == ABILITY_PURIFYING_SALT || gBattleMons[battler].status1 & STATUS1_ANY || IsAbilityStatusProtected(battler) || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) @@ -6340,6 +6310,7 @@ bool32 CanBeFrozen(u32 battler) || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD || ability == ABILITY_MAGMA_ARMOR || ability == ABILITY_COMATOSE + || ability == ABILITY_PURIFYING_SALT || gBattleMons[battler].status1 & STATUS1_ANY || IsAbilityStatusProtected(battler) || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) @@ -6354,6 +6325,7 @@ bool32 CanGetFrostbite(u32 battler) || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD || ability == ABILITY_MAGMA_ARMOR || ability == ABILITY_COMATOSE + || ability == ABILITY_PURIFYING_SALT || gBattleMons[battler].status1 & STATUS1_ANY || IsAbilityStatusProtected(battler) || IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) @@ -6402,7 +6374,7 @@ static u8 HealConfuseBerry(u32 battler, u32 itemId, u32 flavorId, bool32 end2) { PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, flavorId); - gBattleMoveDamage = gBattleMons[battler].maxHP / GetBattlerItemHoldEffectParam(battler, itemId); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / GetBattlerItemHoldEffectParam(battler, itemId); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -6659,7 +6631,7 @@ static u8 ItemHealHp(u32 battler, u32 itemId, bool32 end2, bool32 percentHeal) && HasEnoughHpToEatBerry(battler, 2, itemId)) { if (percentHeal) - gBattleMoveDamage = (gBattleMons[battler].maxHP * GetBattlerItemHoldEffectParam(battler, itemId) / 100) * -1; + gBattleMoveDamage = (GetNonDynamaxMaxHP(battler) * GetBattlerItemHoldEffectParam(battler, itemId) / 100) * -1; else gBattleMoveDamage = GetBattlerItemHoldEffectParam(battler, itemId) * -1; @@ -7339,7 +7311,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } else if (GetBattlerAbility(battler) != ABILITY_MAGIC_GUARD && !moveTurn) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_ItemHurtEnd2); @@ -7353,7 +7325,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) if (gBattleMons[battler].hp < gBattleMons[battler].maxHP && !moveTurn && (B_HEAL_BLOCKING < GEN_5 || !(gStatuses3[battler] & STATUS3_HEAL_BLOCK))) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -7661,7 +7633,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD && gSpecialStatuses[gBattlerAttacker].damagedMons) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 10; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 10; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; effect = ITEM_HP_CHANGE; @@ -7707,7 +7679,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) && IsBattlerAlive(gBattlerAttacker) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 6; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 6; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; effect = ITEM_HP_CHANGE; @@ -7781,7 +7753,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) && IS_MOVE_PHYSICAL(gCurrentMove) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; if (GetBattlerAbility(battler) == ABILITY_RIPEN) @@ -7801,7 +7773,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) && IS_MOVE_SPECIAL(gCurrentMove) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; if (GetBattlerAbility(battler) == ABILITY_RIPEN) @@ -7866,7 +7838,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_STICKY_BARB: // Not an orb per se, but similar effect, and needs to NOT activate with pickpocket if (battlerAbility != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_ItemHurtEnd2); @@ -8009,12 +7981,7 @@ u32 GetMoveTarget(u16 move, u8 setTarget) static bool32 IsBattlerModernFatefulEncounter(u32 battler) { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) - return TRUE; - if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS - && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL) != SPECIES_MEW) - return TRUE; - return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MODERN_FATEFUL_ENCOUNTER, NULL); + return TRUE; } u8 IsMonDisobedient(void) @@ -8211,26 +8178,24 @@ bool32 IsBattlerProtected(u32 battler, u32 move) return FALSE; } - if (move == MOVE_TEATIME) - { + // Z-Moves and Max Moves bypass protection (except Max Guard). + if ((IsMaxMove(move) || gBattleStruct->zmove.active) + && (!gProtectStructs[battler].maxGuarded + || gBattleMoves[move].argument == MAX_EFFECT_BYPASS_PROTECT)) return FALSE; - } - - // Z-Moves and Max Moves bypass protection - if (gBattleStruct->zmove.active) - { - return FALSE; - } + + // Max Guard is silly about the moves it blocks, including Teatime. + if (gProtectStructs[battler].maxGuarded && IsMoveBlockedByMaxGuard(move)) + return TRUE; // Protective Pads doesn't stop Unseen Fist from bypassing Protect effects, so IsMoveMakingContact() isn't used here. // This means extra logic is needed to handle Shell Side Arm. if (GetBattlerAbility(gBattlerAttacker) == ABILITY_UNSEEN_FIST - && (gBattleMoves[move].makesContact || (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->swapDamageCategory))) + && (gBattleMoves[move].makesContact || (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->swapDamageCategory)) + && !gProtectStructs[battler].maxGuarded) // Max Guard cannot be bypassed by Unseen Fist return FALSE; else if (gBattleMoves[move].ignoresProtect) return FALSE; - else if (gBattleMoves[move].effect == EFFECT_FEINT) - return FALSE; else if (gProtectStructs[battler].protected) return TRUE; else if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_WIDE_GUARD @@ -8244,6 +8209,8 @@ bool32 IsBattlerProtected(u32 battler, u32 move) return TRUE; else if (gProtectStructs[battler].kingsShielded && gBattleMoves[move].power != 0) return TRUE; + else if (gProtectStructs[battler].maxGuarded) + return TRUE; else if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_QUICK_GUARD && GetChosenMovePriority(gBattlerAttacker) > 0) return TRUE; @@ -8691,10 +8658,8 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 basePower = uq4_12_multiply(basePower, UQ_4_12(1.5)); break; case EFFECT_DYNAMAX_DOUBLE_DMG: - #ifdef B_DYNAMAX if (IsDynamaxed(battlerDef)) basePower *= 2; - #endif break; case EFFECT_HIDDEN_POWER: { @@ -8736,6 +8701,9 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 if (IsBattlerTerrainAffected(battlerAtk, STATUS_FIELD_ELECTRIC_TERRAIN)) basePower = uq4_12_multiply(basePower, UQ_4_12(1.5)); break; + case EFFECT_MAX_MOVE: + basePower = GetMaxMovePower(gBattleMons[battlerAtk].moves[gBattleStruct->chosenMovePositions[battlerAtk]]); + break; } // Move-specific base power changes @@ -8980,18 +8948,6 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 modifier = uq4_12_multiply(modifier, UQ_4_12(1.33)); } - if (IsAbilityOnField(ABILITY_VESSEL_OF_RUIN) && atkAbility != ABILITY_VESSEL_OF_RUIN && IS_MOVE_SPECIAL(gCurrentMove)) - modifier = uq4_12_multiply(modifier, UQ_4_12(0.75)); - - if (IsAbilityOnField(ABILITY_SWORD_OF_RUIN) && defAbility != ABILITY_SWORD_OF_RUIN && IS_MOVE_PHYSICAL(gCurrentMove)) - modifier = uq4_12_multiply(modifier, UQ_4_12(1.25)); - - if (IsAbilityOnField(ABILITY_TABLETS_OF_RUIN) && atkAbility != ABILITY_TABLETS_OF_RUIN && IS_MOVE_PHYSICAL(gCurrentMove)) - modifier = uq4_12_multiply(modifier, UQ_4_12(0.75)); - - if (IsAbilityOnField(ABILITY_BEADS_OF_RUIN) && defAbility != ABILITY_BEADS_OF_RUIN && IS_MOVE_SPECIAL(gCurrentMove)) - modifier = uq4_12_multiply(modifier, UQ_4_12(1.25)); - // attacker partner's abilities if (IsBattlerAlive(BATTLE_PARTNER(battlerAtk))) { @@ -9275,6 +9231,13 @@ static inline u32 CalcAttackStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 m } } + // field abilities + if (IsAbilityOnField(ABILITY_VESSEL_OF_RUIN) && atkAbility != ABILITY_VESSEL_OF_RUIN && IS_MOVE_SPECIAL(move)) + modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(0.75)); + + if (IsAbilityOnField(ABILITY_TABLETS_OF_RUIN) && atkAbility != ABILITY_TABLETS_OF_RUIN && IS_MOVE_PHYSICAL(move)) + modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(0.75)); + // attacker's hold effect switch (holdEffectAtk) { @@ -9291,11 +9254,11 @@ static inline u32 CalcAttackStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 m modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(2.0)); break; case HOLD_EFFECT_CHOICE_BAND: - if (IS_MOVE_PHYSICAL(move)) + if (IS_MOVE_PHYSICAL(move) && !IsDynamaxed(battlerAtk)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; case HOLD_EFFECT_CHOICE_SPECS: - if (IS_MOVE_SPECIAL(move)) + if (IS_MOVE_SPECIAL(move) && !IsDynamaxed(battlerAtk)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; } @@ -9422,6 +9385,13 @@ static inline u32 CalcDefenseStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 } } + // field abilities + if (IsAbilityOnField(ABILITY_SWORD_OF_RUIN) && defAbility != ABILITY_SWORD_OF_RUIN && usesDefStat) + modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(0.75)); + + if (IsAbilityOnField(ABILITY_BEADS_OF_RUIN) && defAbility != ABILITY_BEADS_OF_RUIN && !usesDefStat) + modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(0.75)); + // target's hold effects switch (holdEffectDef) { @@ -9541,9 +9511,9 @@ static inline uq4_12_t GetCriticalModifier(bool32 isCrit) return UQ_4_12(1.0); } -static inline uq4_12_t GetZMoveAgainstProtectionModifier(u32 battlerDef) +static inline uq4_12_t GetZMaxMoveAgainstProtectionModifier(u32 battlerDef, u32 move) { - if (gBattleStruct->zmove.active && IS_BATTLER_PROTECTED(battlerDef)) + if ((gBattleStruct->zmove.active || IsMaxMove(move)) && IS_BATTLER_PROTECTED(battlerDef)) return UQ_4_12(0.25); return UQ_4_12(1.0); } @@ -9786,7 +9756,7 @@ static inline s32 DoMoveDamageCalcVars(u32 move, u32 battlerAtk, u32 battlerDef, DAMAGE_APPLY_MODIFIER(GetSameTypeAttackBonusModifier(battlerAtk, moveType, move, abilityAtk)); DAMAGE_APPLY_MODIFIER(typeEffectivenessModifier); DAMAGE_APPLY_MODIFIER(GetBurnOrFrostBiteModifier(battlerAtk, move, abilityAtk)); - DAMAGE_APPLY_MODIFIER(GetZMoveAgainstProtectionModifier(battlerDef)); + DAMAGE_APPLY_MODIFIER(GetZMaxMoveAgainstProtectionModifier(battlerDef, move)); DAMAGE_APPLY_MODIFIER(GetOtherModifiers(move, moveType, battlerAtk, battlerDef, isCrit, typeEffectivenessModifier, updateFlags, abilityAtk, abilityDef, holdEffectAtk, holdEffectDef)); if (dmg == 0) @@ -10319,6 +10289,10 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) } } break; + case FORM_CHANGE_BATTLE_GIGANTAMAX: + // TODO: check Gigantamax factor + targetSpecies = formChanges[i].targetSpecies; + break; case FORM_CHANGE_BATTLE_WEATHER: // Check if there is a required ability and if the battler's ability does not match it // or is suppressed. If so, revert to the no weather form. @@ -10363,6 +10337,9 @@ bool32 CanBattlerFormChange(u32 battler, u16 method) return TRUE; else if (IsBattlerPrimalReverted(battler) && (method == FORM_CHANGE_END_BATTLE)) return TRUE; + // Gigantamaxed Pokemon should revert upon fainting, switching, or ending the battle. + else if (IsGigantamaxed(battler) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_BATTLE_SWITCH || method == FORM_CHANGE_END_BATTLE)) + return TRUE; return DoesSpeciesHaveFormChangeMethod(gBattleMons[battler].species, method); } @@ -10381,7 +10358,7 @@ bool32 TryBattleFormChange(u32 battler, u16 method) targetSpecies = GetFormChangeTargetSpecies(&party[monId], method, 0); if (targetSpecies != SPECIES_NONE) { - // Saves the original species on the first form change for the player. + // Saves the original species on the first form change. if (gBattleStruct->changedSpecies[side][monId] == SPECIES_NONE) gBattleStruct->changedSpecies[side][monId] = gBattleMons[battler].species; @@ -10403,6 +10380,10 @@ bool32 TryBattleFormChange(u32 battler, u16 method) else if (IsBattlerPrimalReverted(battler) && (method == FORM_CHANGE_END_BATTLE)) restoreSpecies = TRUE; + // Gigantamax Pokemon have their forms reverted after fainting, switching, or ending the battle. + else if (IsGigantamaxed(battler) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_BATTLE_SWITCH || method == FORM_CHANGE_END_BATTLE)) + restoreSpecies = TRUE; + if (restoreSpecies) { // Reverts the original species @@ -10546,6 +10527,8 @@ u8 GetBattleMoveSplit(u32 moveId) { if (gBattleStruct != NULL && gBattleStruct->zmove.active && !IS_MOVE_STATUS(moveId)) return gBattleStruct->zmove.activeSplit; + if (gBattleStruct != NULL && IsMaxMove(moveId)) // TODO: Might be buggy depending on when this is called. + return gBattleStruct->dynamax.activeSplit; if (gBattleStruct != NULL && gBattleStruct->swapDamageCategory) // Photon Geyser, Shell Side Arm, Light That Burns the Sky return SPLIT_PHYSICAL; if (B_PHYSICAL_SPECIAL_SPLIT >= GEN_4) @@ -11002,6 +10985,9 @@ bool32 CanTargetBattler(u32 battlerAtk, u32 battlerDef, u16 move) && GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef) && gStatuses3[battlerAtk] & STATUS3_HEAL_BLOCK) return FALSE; // Pokémon affected by Heal Block cannot target allies with Pollen Puff + if ((IsDynamaxed(battlerAtk) || gBattleStruct->dynamax.playerSelect) + && GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef)) + return FALSE; return TRUE; } @@ -11038,6 +11024,8 @@ void CopyMonAbilityAndTypesToBattleMon(u32 battler, struct Pokemon *mon) void RecalcBattlerStats(u32 battler, struct Pokemon *mon) { CalculateMonStats(mon); + if (IsDynamaxed(battler) && gChosenActionByBattler[battler] != B_ACTION_SWITCH) + ApplyDynamaxHPMultiplier(battler, mon); CopyMonLevelAndBaseStatsToBattleMon(battler, mon); CopyMonAbilityAndTypesToBattleMon(battler, mon); } diff --git a/src/battle_z_move.c b/src/battle_z_move.c index 6c89420403..7069d17386 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -70,12 +70,11 @@ static const struct SignatureZMove sSignatureZMoves[] = {SPECIES_KOMMO_O, ITEM_KOMMONIUM_Z, MOVE_CLANGING_SCALES, MOVE_CLANGOROUS_SOULBLAZE}, {SPECIES_LUNALA, ITEM_LUNALIUM_Z, MOVE_MOONGEIST_BEAM, MOVE_MENACING_MOONRAZE_MAELSTROM}, {SPECIES_NECROZMA_DAWN_WINGS, ITEM_LUNALIUM_Z, MOVE_MOONGEIST_BEAM, MOVE_MENACING_MOONRAZE_MAELSTROM}, - {SPECIES_LYCANROC, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, + {SPECIES_LYCANROC_MIDDAY, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, {SPECIES_LYCANROC_MIDNIGHT, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, - {SPECIES_LYCANROC_DUSK, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, {SPECIES_MARSHADOW, ITEM_MARSHADIUM_Z, MOVE_SPECTRAL_THIEF, MOVE_SOUL_STEALING_7_STAR_STRIKE}, - {SPECIES_MIMIKYU, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, + {SPECIES_MIMIKYU_DISGUISED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, {SPECIES_MIMIKYU_BUSTED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, {SPECIES_PIKACHU_ORIGINAL_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, {SPECIES_PIKACHU_HOENN_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, diff --git a/src/clock.c b/src/clock.c index 125d403bb3..76297b4f4c 100644 --- a/src/clock.c +++ b/src/clock.c @@ -15,7 +15,7 @@ static void UpdatePerDay(struct Time *localTime); static void UpdatePerMinute(struct Time *localTime); -static void InitTimeBasedEvents(void) +void InitTimeBasedEvents(void) { FlagSet(FLAG_SYS_CLOCK_SET); RtcCalcLocalTime(); diff --git a/src/data/bard_music/pokemon.h b/src/data/bard_music/pokemon.h index 7d378da6f1..a2ca35aa7d 100644 --- a/src/data/bard_music/pokemon.h +++ b/src/data/bard_music/pokemon.h @@ -2884,7 +2884,7 @@ const struct BardSound gBardSounds_Pokemon[NUM_SPECIES][6] = { NULL_BARD_SOUND, NULL_BARD_SOUND, }, - [SPECIES_CASTFORM] = { + [SPECIES_CASTFORM_NORMAL] = { { .songLengthId = 0 }, { .songLengthId = 26 }, { .songLengthId = 51 }, @@ -3084,7 +3084,7 @@ const struct BardSound gBardSounds_Pokemon[NUM_SPECIES][6] = { NULL_BARD_SOUND, NULL_BARD_SOUND, }, - [SPECIES_DEOXYS] = { + [SPECIES_DEOXYS_NORMAL] = { { .songLengthId = 12 }, { .songLengthId = 27 }, { .songLengthId = 17 }, diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index 885038725c..d342ccbae5 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1448,6 +1448,7 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_AuraSphere, 0x200, ANIM_TAG_POLTERGEIST}, {gBattleAnimSpriteGfx_Teapot, 0x1800, ANIM_TAG_TEAPOT}, {gBattleAnimSpriteGfx_WoodHammerHammer, 0x800, ANIM_TAG_WOOD_HAMMER_HAMMER}, + {gBattleAnimSpriteGfx_Snowflakes, 0x0700, ANIM_TAG_SNOWFLAKES}, }; const struct CompressedSpritePalette gBattleAnimPaletteTable[] = @@ -1896,6 +1897,7 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Poltergeist, ANIM_TAG_POLTERGEIST}, {gBattleAnimSpritePal_Teapot, ANIM_TAG_TEAPOT}, {gBattleAnimSpritePal_WoodHammerHammer, ANIM_TAG_WOOD_HAMMER_HAMMER}, + {gBattleAnimSpritePal_RainDrops, ANIM_TAG_SNOWFLAKES}, }; const struct BattleAnimBackground gBattleAnimBackgroundTable[] = diff --git a/src/data/battle_frontier/battle_frontier_mons.h b/src/data/battle_frontier/battle_frontier_mons.h index df0a7d9b27..1147ab9080 100644 --- a/src/data/battle_frontier/battle_frontier_mons.h +++ b/src/data/battle_frontier/battle_frontier_mons.h @@ -1429,7 +1429,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = .nature = NATURE_ADAMANT }, [FRONTIER_MON_CASTFORM_1] = { - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_EMBER, MOVE_WATER_PULSE, MOVE_SHOCK_WAVE, MOVE_ICY_WIND}, .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, @@ -2164,7 +2164,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = .nature = NATURE_JOLLY }, [FRONTIER_MON_CASTFORM_2] = { - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_WATER_PULSE}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index bdc46d2327..0ad7cc0719 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -1,4 +1,4 @@ -const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = +const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = { [MOVE_NONE] = { @@ -11,11 +11,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .mimicBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, - .sleepTalkBanned = TRUE, - .instructBanned = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_POUND] = @@ -224,8 +221,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .highCritRatio = TRUE, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SWORDS_DANCE] = @@ -314,8 +313,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .windMove = TRUE, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_FLY] = @@ -334,10 +335,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BIND] = @@ -655,6 +658,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .instructBanned = TRUE, }, [MOVE_DOUBLE_EDGE] = @@ -784,6 +788,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_ROAR] = @@ -803,9 +808,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .soundMove = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SING] = @@ -820,6 +827,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -836,6 +844,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -872,6 +881,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -940,6 +950,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1105,7 +1117,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, - .instructBanned = TRUE, }, [MOVE_PECK] = @@ -1185,11 +1196,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 .meFirstBanned = TRUE, .metronomeBanned = TRUE, // B_UPDATED_MOVE_FLAGS >= GEN_2 .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SEISMIC_TOSS] = @@ -1239,6 +1250,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_MEGA_DRAIN] = @@ -1258,6 +1270,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_LEECH_SEED] = @@ -1295,6 +1308,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1326,6 +1341,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, }, @@ -1400,6 +1416,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .danceMove = TRUE, + .instructBanned = TRUE, }, [MOVE_STRING_SHOT] = @@ -1590,9 +1607,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TOXIC] = @@ -1671,6 +1690,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1686,6 +1707,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1731,6 +1754,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -6, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NIGHT_SHADE] = @@ -1759,11 +1784,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresSubstitute = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, // B_UPDATED_MOVE_FLAGS >= GEN_2 .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SCREECH] = @@ -1778,6 +1806,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -1794,6 +1823,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1815,6 +1846,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .snatchAffected = TRUE, }, @@ -1830,6 +1864,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1849,6 +1885,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1894,6 +1932,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1909,6 +1949,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1928,6 +1970,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1943,6 +1987,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1958,6 +2004,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_REFLECT] = @@ -1972,6 +2021,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1987,8 +2038,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, - .sleepTalkBanned = TRUE, }, [MOVE_BIDE] = @@ -2011,6 +2063,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_METRONOME] = @@ -2025,10 +2078,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MIRROR_MOVE] = @@ -2043,10 +2101,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_2, + .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SELF_DESTRUCT] = @@ -2061,6 +2122,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_EGG_BOMB] = @@ -2238,6 +2300,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -2285,6 +2348,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -2319,6 +2384,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -2379,6 +2447,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_POISON_GAS] = @@ -2438,6 +2507,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_LOVELY_KISS] = @@ -2468,6 +2538,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FLINCH, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -2486,10 +2557,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BUBBLE] = @@ -2593,6 +2667,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_3, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .gravityBanned = TRUE, }, @@ -2613,6 +2689,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CRABHAMMER] = @@ -2651,6 +2729,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_FURY_SWIPES] = @@ -2700,6 +2779,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, }, [MOVE_ROCK_SLIDE] = @@ -2747,6 +2829,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CONVERSION] = @@ -2762,6 +2846,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TRI_ATTACK] = @@ -2825,6 +2911,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_STRUGGLE] = @@ -2849,8 +2937,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, + .sleepTalkBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SKETCH] = @@ -2866,11 +2957,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRIPLE_KICK] = @@ -2911,6 +3006,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SPIDER_WEB] = @@ -2999,6 +3095,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .sheerForceBoost = TRUE, .soundMove = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, @@ -3021,6 +3118,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_CURSE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FLAIL] = @@ -3051,6 +3150,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_AEROBLAST] = @@ -3120,6 +3221,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, }, [MOVE_POWDER_SNOW] = @@ -3160,6 +3262,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MACH_PUNCH] = @@ -3246,6 +3349,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SLUDGE_BOMB] = @@ -3307,7 +3412,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, }, [MOVE_ZAP_CANNON] = @@ -3347,6 +3455,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, }, [MOVE_DESTINY_BOND] = @@ -3361,8 +3470,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_FOLLOW_ME, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PERISH_SONG] = @@ -3378,6 +3491,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .ignoresProtect = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .mirrorMoveBanned = TRUE, .soundMove = TRUE, }, @@ -3413,9 +3528,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BONE_RUSH] = @@ -3490,6 +3608,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .windMove = TRUE, }, @@ -3514,6 +3634,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_ENDURE] = @@ -3532,9 +3653,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_CHARM] = @@ -3570,6 +3694,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .instructBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_FALSE_SWIPE] = @@ -3622,7 +3747,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SPARK] = @@ -3708,6 +3836,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .magicCoatAffected = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_SLEEP_TALK] = @@ -3722,10 +3851,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mimicBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HEAL_BELL] = @@ -3736,11 +3870,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = B_UPDATED_MOVE_FLAGS != GEN_5, }, @@ -3802,6 +3939,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_PAIN_SPLIT] = @@ -3909,6 +4048,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ENCORE] = @@ -3924,6 +4065,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .encoreBanned = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_PURSUIT] = @@ -4039,7 +4182,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SYNTHESIS] = @@ -4054,7 +4200,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MOONLIGHT] = @@ -4073,7 +4222,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HIDDEN_POWER] = @@ -4135,6 +4287,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SUNNY_DAY] = @@ -4149,6 +4303,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CRUNCH] = @@ -4187,7 +4343,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .meFirstBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PSYCH_UP] = @@ -4203,6 +4359,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, }, @@ -4382,6 +4540,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -4404,6 +4563,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SPIT_UP] = @@ -4437,7 +4598,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAT_WAVE] = @@ -4472,6 +4636,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TORMENT] = @@ -4568,9 +4734,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .mirrorMoveBanned = TRUE, .punchingMove = TRUE, .meFirstBanned = TRUE, + .sleepTalkBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SMELLING_SALTS] = @@ -4609,8 +4777,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_NATURE_POWER] = @@ -4629,6 +4800,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_CHARGE] = @@ -4644,6 +4818,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAUNT] = @@ -4658,6 +4834,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -4677,8 +4854,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 5, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRICK] = @@ -4695,6 +4876,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_SPD_UP_2, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ROLE_PLAY] = @@ -4710,6 +4892,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WISH] = @@ -4724,7 +4908,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .healBlockBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ASSIST] = @@ -4739,10 +4926,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_INGRAIN] = @@ -4758,6 +4950,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SUPERPOWER] = @@ -4787,6 +4981,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RECYCLE] = @@ -4802,6 +4998,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_REVENGE] = @@ -4881,6 +5079,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_ERUPTION] = @@ -4909,6 +5108,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_IMPRISON] = @@ -4924,6 +5124,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .forcePressure = TRUE, }, [MOVE_REFRESH] = @@ -4939,6 +5143,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRUDGE] = @@ -4953,6 +5159,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_FOLLOW_ME, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SNATCH] = @@ -4967,9 +5176,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresSubstitute = TRUE, + .forcePressure = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SECRET_POWER] = @@ -5003,9 +5214,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ARM_THRUST] = @@ -5036,6 +5249,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAIL_GLOW] = @@ -5055,6 +5270,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LUSTER_PURGE] = @@ -5149,6 +5366,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ICE_BALL] = @@ -5166,6 +5385,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .makesContact = TRUE, .ballisticMove = TRUE, .instructBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_NEEDLE_ARM] = @@ -5201,7 +5421,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HYPER_VOICE] = @@ -5217,6 +5440,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_POISON_FANG] = @@ -5268,7 +5492,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_HYDRO_CANNON] = @@ -5283,7 +5506,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_METEOR_MASH] = @@ -5348,11 +5570,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FAKE_TEARS] = @@ -5428,6 +5652,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -5465,6 +5690,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_METAL_SOUND] = @@ -5479,6 +5705,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -5495,6 +5722,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -5527,6 +5755,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WATER_SPOUT] = @@ -5729,6 +5959,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BLOCK] = @@ -5764,6 +5996,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = B_UPDATED_MOVE_FLAGS >= GEN_8, }, @@ -5809,6 +6043,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BOUNCE] = @@ -5824,11 +6060,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sheerForceBoost = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MUD_SHOT] = @@ -5892,6 +6130,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_VOLT_TACKLE] = @@ -5941,6 +6180,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CALM_MIND] = @@ -5956,6 +6197,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LEAF_BLADE] = @@ -5993,6 +6236,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_RESET_STATS, .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ROCK_BLAST] = @@ -6095,7 +6340,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRAVITY] = @@ -6110,6 +6358,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MIRACLE_EYE] = @@ -6124,6 +6374,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -6191,7 +6442,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BRINE] = @@ -6242,6 +6496,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PLUCK] = @@ -6277,6 +6532,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_BOOST_CRITS, .snatchAffected = TRUE, .windMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ACUPRESSURE] = @@ -6292,6 +6549,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, }, @@ -6401,6 +6659,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_PSYCHO_SHIFT] = @@ -6478,6 +6737,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GASTRO_ACID] = @@ -6508,6 +6769,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ME_FIRST] = @@ -6522,10 +6785,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_COPYCAT] = @@ -6540,10 +6809,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_POWER_SWAP] = @@ -6558,6 +6832,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_GUARD_SWAP] = @@ -6572,6 +6847,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_PUNISHMENT] = @@ -6654,7 +6930,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, }, [MOVE_HEART_SWAP] = @@ -6669,6 +6948,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .ignoresSubstitute = TRUE, }, [MOVE_AQUA_RING] = @@ -6684,6 +6964,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MAGNET_RISE] = @@ -6699,6 +6981,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .gravityBanned = TRUE, }, @@ -6769,6 +7053,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_POISON_JAB] = @@ -6900,6 +7186,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_DRAGON_PULSE] = @@ -6975,6 +7262,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .punchingMove = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_VACUUM_WAVE] = @@ -7071,6 +7359,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_SPD_UP_2, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_GIGA_IMPACT] = @@ -7086,7 +7375,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .instructBanned = TRUE, }, [MOVE_NASTY_PLOT] = @@ -7102,6 +7390,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BULLET_PUNCH] = @@ -7344,6 +7634,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + //.ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -7359,6 +7650,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -7, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, }, [MOVE_DRACO_METEOR] = @@ -7455,7 +7747,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .ballisticMove = TRUE, - .instructBanned = TRUE, }, [MOVE_CROSS_POISON] = @@ -7523,6 +7814,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, }, [MOVE_STONE_EDGE] = @@ -7568,6 +7860,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .forcePressure = TRUE, }, [MOVE_GRASS_KNOT] = @@ -7606,14 +7901,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, - .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_JUDGMENT] = @@ -7719,6 +8015,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAL_ORDER] = @@ -7733,7 +8031,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAD_SMASH] = @@ -7779,7 +8080,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_SPACIAL_REND] = @@ -7810,6 +8110,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .danceMove = TRUE, }, @@ -7897,6 +8200,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SHADOW_FORCE] = @@ -7913,10 +8217,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .argument = MOVE_EFFECT_FEINT, + .twoTurnMove = TRUE, .ignoresProtect = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HONE_CLAWS] = @@ -7932,6 +8238,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WIDE_GUARD] = @@ -7948,6 +8256,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, }, @@ -7964,6 +8274,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .mirrorMoveBanned = TRUE, }, [MOVE_POWER_SPLIT] = @@ -7978,6 +8289,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .mirrorMoveBanned = TRUE, }, [MOVE_WONDER_ROOM] = @@ -7996,6 +8308,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_ALL_BATTLERS, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, }, [MOVE_PSYSHOCK] = @@ -8039,6 +8352,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RAGE_POWDER] = @@ -8058,8 +8373,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .powderMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TELEKINESIS] = @@ -8094,6 +8412,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_ALL_BATTLERS, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, }, [MOVE_SMACK_DOWN] = @@ -8171,7 +8490,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAVY_SLAM] = @@ -8187,7 +8509,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .danceMove = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_7, }, @@ -8269,6 +8590,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LOW_SWEEP] = @@ -8364,6 +8687,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -8379,6 +8705,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -8394,6 +8721,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -8455,6 +8783,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, }, @@ -8475,6 +8805,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SCALD] = @@ -8506,6 +8838,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAL_PULSE] = @@ -8521,6 +8855,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .magicCoatAffected = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .pulseMove = TRUE, }, @@ -8554,10 +8890,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SHIFT_GEAR] = @@ -8573,6 +8911,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CIRCLE_THROW] = @@ -8589,6 +8929,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_INCINERATE] = @@ -8621,7 +8962,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, - .magicCoatAffected = TRUE, .metronomeBanned = TRUE, }, @@ -8652,7 +8992,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, - .snatchAffected = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RETALIATE] = @@ -8683,6 +9024,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_BESTOW] = @@ -8698,8 +9040,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_INFERNO] = @@ -8851,6 +9195,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_WORK_UP] = @@ -8866,6 +9211,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE }, [MOVE_ELECTROWEB] = @@ -8959,6 +9306,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_SACRED_SWORD] = @@ -9028,6 +9376,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + //.windMove = TRUE, }, [MOVE_STEAMROLLER] = @@ -9060,6 +9409,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NIGHT_DAZE] = @@ -9208,6 +9559,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .argument = STATUS1_SLEEP, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, }, @@ -9224,6 +9576,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .slicingMove = TRUE, .metronomeBanned = TRUE, }, @@ -9302,6 +9655,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, @@ -9321,6 +9675,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .argument = MOVE_EFFECT_BURN, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, @@ -9340,6 +9695,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, }, @@ -9440,8 +9796,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BELCH] = @@ -9459,9 +9818,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ROTOTILLER] = @@ -9477,6 +9838,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_STICKY_WEB] = @@ -9491,6 +9853,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -9526,11 +9890,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FEINT, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .ignoresProtect = TRUE, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRICK_OR_TREAT] = @@ -9546,6 +9912,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .argument = TYPE_GHOST, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_NOBLE_ROAR] = @@ -9560,6 +9927,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -9576,6 +9944,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_PARABOLIC_CHARGE] = @@ -9594,6 +9964,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_FORESTS_CURSE] = @@ -9609,6 +9980,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .argument = TYPE_GRASS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_PETAL_BLIZZARD] = @@ -9653,6 +10025,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9669,6 +10042,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESTORE_REPLACEMENT_HP, .magicCoatAffected = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9705,6 +10079,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .argument = 75, // restores 75% HP instead of 50% HP .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_CRAFTY_SHIELD] = @@ -9720,6 +10095,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -9736,6 +10113,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRASSY_TERRAIN] = @@ -9750,6 +10128,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MISTY_TERRAIN] = @@ -9764,6 +10144,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ELECTRIFY] = @@ -9838,6 +10220,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9853,6 +10236,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_KINGS_SHIELD] = @@ -9868,9 +10253,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PLAY_NICE] = @@ -9886,6 +10274,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .magicCoatAffected = TRUE, }, @@ -9903,6 +10292,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .ignoresProtect = TRUE, .magicCoatAffected = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9956,6 +10346,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, }, @@ -10010,8 +10401,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_AROMATIC_MIST] = @@ -10027,6 +10421,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_EERIE_IMPULSE] = @@ -10071,6 +10467,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .powderMove = TRUE, .magicCoatAffected = TRUE, }, @@ -10086,6 +10483,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, }, @@ -10103,6 +10501,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HAPPY_HOUR] = @@ -10117,6 +10518,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ELECTRIC_TERRAIN] = @@ -10131,6 +10534,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_DAZZLING_GLEAM] = @@ -10159,10 +10564,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HOLD_HANDS] = @@ -10178,10 +10587,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BABY_DOLL_EYES] = @@ -10275,6 +10687,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .argument = 75, // restores 75% HP instead of 50% HP .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_THOUSAND_ARROWS] = @@ -10417,7 +10830,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FIRST_IMPRESSION] = @@ -10448,8 +10864,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SPIRIT_SHACKLE] = @@ -10497,6 +10916,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .argument = STATUS1_BURN, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -10528,6 +10948,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -10559,6 +10981,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_SOLAR_BLADE] = @@ -10573,6 +10996,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .slicingMove = TRUE, .sleepTalkBanned = TRUE, @@ -10606,8 +11030,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .magicCoatAffected = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TOXIC_THREAD] = @@ -10638,6 +11064,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GEAR_UP] = @@ -10653,6 +11081,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_THROAT_CHOP] = @@ -10714,6 +11145,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LUNGE] = @@ -10790,6 +11223,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_SMART_STRIKE] = @@ -10819,6 +11253,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -10879,6 +11315,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .instructBanned = TRUE, }, @@ -10902,6 +11340,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_CLANGING_SCALES] = @@ -10916,6 +11355,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -10962,6 +11402,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SHELL_TRAP] = @@ -10982,6 +11424,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_FLEUR_CANNON] = @@ -11088,7 +11531,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_SPECTRAL_THIEF] = @@ -11103,6 +11545,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = TRUE, .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -11183,7 +11626,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .makesContact = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, }, @@ -11328,6 +11770,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_BOUNCY_BUBBLE] = @@ -11350,6 +11793,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_BUZZY_BUZZ] = @@ -11554,10 +11998,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mimicBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .parentalBondBanned = TRUE, }, [MOVE_SNIPE_SHOT] = @@ -11604,6 +12053,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NO_RETREAT] = @@ -11619,6 +12070,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAR_SHOT] = @@ -11666,6 +12119,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .strikeCount = 2, + .parentalBondBanned = TRUE, }, [MOVE_TEATIME] = @@ -11676,11 +12130,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 0, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_OCTOLOCK] = @@ -11740,6 +12196,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, }, [MOVE_CLANGOROUS_SOUL] = @@ -11755,7 +12212,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = TRUE, + .danceMove = TRUE, .metronomeBanned = TRUE, }, @@ -11777,7 +12237,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_DECORATE] = { - .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, .effect = EFFECT_DECORATE, .power = 0, .type = TYPE_FAIRY, @@ -11788,6 +12247,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -11857,6 +12318,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .slicingMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .mimicBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_BEHEMOTH_BASH] = @@ -11874,6 +12337,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .makesContact = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .mimicBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_AURA_WHEEL] = @@ -11937,6 +12402,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .metronomeBanned = TRUE, }, @@ -12013,11 +12479,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 0, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .metronomeBanned = TRUE, }, @@ -12034,8 +12504,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, .instructBanned = TRUE, }, @@ -12084,7 +12555,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .metronomeBanned = TRUE, - .instructBanned = TRUE, }, [MOVE_STEEL_BEAM] = @@ -12159,6 +12629,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .instructBanned = TRUE, }, @@ -12194,7 +12665,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_GRASSY_GLIDE] = { #if B_UPDATED_MOVE_DATA >= GEN_9 - .power = 60, + .power = 55, #else .power = 70, #endif @@ -12326,6 +12797,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FLIP_TURN] = @@ -12403,6 +12877,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .metronomeBanned = TRUE, }, @@ -12575,6 +13053,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_DIRE_CLAW] = @@ -12625,8 +13104,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - }, +}, [MOVE_STONE_AXE] = { @@ -12664,6 +13146,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .windMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_MYSTICAL_POWER] = @@ -12697,7 +13180,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, - .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -12767,6 +13249,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEADLONG_RUSH] = @@ -12861,6 +13345,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TRIPLE_ARROWS] = @@ -12993,6 +13479,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, }, [MOVE_TAKE_HEART] = @@ -13008,6 +13497,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TERA_BLAST] = @@ -13022,6 +13513,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet + .forcePressure = TRUE, }, [MOVE_SILK_TRAP] = @@ -13037,6 +13530,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13068,6 +13563,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet }, [MOVE_LUMINA_CRASH] = @@ -13098,6 +13594,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13196,6 +13693,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet }, [MOVE_REVIVAL_BLESSING] = @@ -13210,6 +13709,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13258,6 +13759,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .makesContact = TRUE, }, [MOVE_DOODLE] = @@ -13268,10 +13770,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 100, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_FOES_AND_ALLY, // Supposedly unconfirmed? - .priority = 0, // TO VERIFY + .target = MOVE_TARGET_BOTH, + .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13288,6 +13792,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13335,6 +13841,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_AQUA_STEP] = @@ -13363,7 +13870,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, - .priority = 0, // TO VERIFY + .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, @@ -13444,6 +13951,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13459,6 +13968,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13474,6 +13985,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13489,6 +14002,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13552,6 +14067,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .ignoresProtect = TRUE, .metronomeBanned = TRUE, }, @@ -13617,6 +14133,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .slicingMove = TRUE, + .healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_DOUBLE_SHOCK] = @@ -13631,12 +14148,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, .metronomeBanned = TRUE, }, [MOVE_GIGATON_HAMMER] = { - .effect = EFFECT_GIGATON_HAMMER, + .effect = EFFECT_HIT, .power = 160, .type = TYPE_STEEL, .accuracy = 100, @@ -13646,6 +14164,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .cantUseTwice = TRUE, }, [MOVE_COMEUPPANCE] = @@ -13660,6 +14179,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .meFirstBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13692,11 +14213,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_WICKED_TORQUE] = @@ -13712,11 +14237,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_NOXIOUS_TORQUE] = @@ -13732,11 +14261,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_COMBAT_TORQUE] = @@ -13752,11 +14285,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MAGICAL_TORQUE] = @@ -13772,11 +14309,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PSYBLADE] = @@ -13807,11 +14348,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .thawsUser = TRUE, }, [MOVE_BLOOD_MOON] = { - .effect = EFFECT_GIGATON_HAMMER, + .effect = EFFECT_HIT, .power = 140, .type = TYPE_NORMAL, .accuracy = 100, @@ -13821,6 +14363,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .cantUseTwice = TRUE, }, [MOVE_MATCHA_GOTCHA] = @@ -13837,6 +14380,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .thawsUser = TRUE, .metronomeBanned = TRUE, + .healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SYRUP_BOMB] = @@ -14265,6 +14809,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_GUARDIAN_OF_ALOLA] = { @@ -14331,4 +14876,737 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = 0, }, + + [MOVE_MAX_GUARD] = + { + .effect = EFFECT_PROTECT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 4, + .split = SPLIT_STATUS, + .protectionMove = TRUE, + }, + + [MOVE_MAX_FLARE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SUN, + }, + + [MOVE_MAX_FLUTTERBY] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_BUG, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SP_ATK, + }, + + [MOVE_MAX_LIGHTNING] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_ELECTRIC_TERRAIN, + }, + + [MOVE_MAX_STRIKE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SPEED, + }, + + [MOVE_MAX_KNUCKLE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_ATTACK, + }, + + [MOVE_MAX_PHANTASM] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_DEFENSE, + }, + + [MOVE_MAX_HAILSTORM] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_HAIL, + }, + + [MOVE_MAX_OOZE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_POISON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_SP_ATK, + }, + + [MOVE_MAX_GEYSER] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAIN, + }, + + [MOVE_MAX_AIRSTREAM] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_SPEED, + }, + + [MOVE_MAX_STARFALL] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_MISTY_TERRAIN, + }, + + [MOVE_MAX_WYRMWIND] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_ATTACK, + }, + + [MOVE_MAX_MINDSTORM] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_PSYCHIC_TERRAIN, + }, + + [MOVE_MAX_ROCKFALL] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ROCK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SANDSTORM, + }, + + [MOVE_MAX_QUAKE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_GROUND, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, + }, + + [MOVE_MAX_DARKNESS] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SP_DEF, + }, + + [MOVE_MAX_OVERGROWTH] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_GRASSY_TERRAIN, + }, + + [MOVE_MAX_STEELSPIKE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_DEFENSE, + }, + + [MOVE_G_MAX_VINE_LASH] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_VINE_LASH, + }, + + [MOVE_G_MAX_WILDFIRE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_WILDFIRE, + }, + + [MOVE_G_MAX_CANNONADE] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CANNONADE, + }, + + [MOVE_G_MAX_BEFUDDLE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_BUG, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_EFFECT_SPORE_FOES, + }, + + [MOVE_G_MAX_VOLT_CRASH] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_PARALYZE_FOES, + }, + + [MOVE_G_MAX_GOLD_RUSH] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CONFUSE_FOES_PAY_DAY, + }, + + [MOVE_G_MAX_CHI_STRIKE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CRIT_PLUS, + }, + + [MOVE_G_MAX_TERROR] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_MEAN_LOOK, + }, + + [MOVE_G_MAX_FOAM_BURST] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SPEED_2_FOES, + }, + + [MOVE_G_MAX_RESONANCE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_AURORA_VEIL, + }, + + [MOVE_G_MAX_CUDDLE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_INFATUATE_FOES, + }, + + [MOVE_G_MAX_REPLENISH] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RECYCLE_BERRIES, + }, + + [MOVE_G_MAX_MALODOR] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_POISON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_POISON_FOES, + }, + + [MOVE_G_MAX_MELTDOWN] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_TORMENT_FOES, + }, + + [MOVE_G_MAX_DRUM_SOLO] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .ignoresTargetAbility = TRUE, + }, + + [MOVE_G_MAX_FIREBALL] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .ignoresTargetAbility = TRUE, + }, + + [MOVE_G_MAX_HYDROSNIPE] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .ignoresTargetAbility = TRUE, + }, + + [MOVE_G_MAX_WIND_RAGE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_DEFOG, + }, + + [MOVE_G_MAX_GRAVITAS] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_GRAVITY, + }, + + [MOVE_G_MAX_STONESURGE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_STEALTH_ROCK, + }, + + [MOVE_G_MAX_VOLCALITH] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ROCK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_VOLCALITH, + }, + + [MOVE_G_MAX_TARTNESS] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_EVASIVENESS_FOES, + }, + + [MOVE_G_MAX_SWEETNESS] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_AROMATHERAPY, + }, + + [MOVE_G_MAX_SANDBLAST] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GROUND, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SANDBLAST_FOES, + }, + + [MOVE_G_MAX_STUN_SHOCK] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_POISON_PARALYZE_FOES, + }, + + [MOVE_G_MAX_CENTIFERNO] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_FIRE_SPIN_FOES, + }, + + [MOVE_G_MAX_SMITE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CONFUSE_FOES, + }, + + + [MOVE_G_MAX_SNOOZE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_YAWN_FOE, + }, + + [MOVE_G_MAX_FINALE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_HEAL_TEAM, + }, + + [MOVE_G_MAX_STEELSURGE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_STEELSURGE, + }, + + [MOVE_G_MAX_DEPLETION] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SPITE, + }, + + [MOVE_G_MAX_ONE_BLOW] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO + }, + + [MOVE_G_MAX_RAPID_FLOW] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO + }, + }; diff --git a/src/data/contest_opponents.h b/src/data/contest_opponents.h index feeb29524f..d3f02d33ab 100644 --- a/src/data/contest_opponents.h +++ b/src/data/contest_opponents.h @@ -1760,7 +1760,7 @@ const struct ContestPokemon gContestOpponents[] = .otId = CONTEST_AI_TRAINER_ID, }, [CONTEST_OPPONENT_FELICIA] = { - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .nickname = _("CASTER"), .trainerName = _("FELICIA"), .trainerGfxId = OBJ_EVENT_GFX_LASS, diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 9ff1c5656d..cfb9700b76 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -411,7 +411,7 @@ const u32 gMonFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/anim_fro const u32 gMonFrontPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/anim_front.4bpp.lz"); const u32 gMonFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/anim_front.4bpp.lz"); const u32 gMonFrontPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Castform[] = INCBIN_U32("graphics/pokemon/castform/anim_front.4bpp.lz"); +const u32 gMonFrontPic_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/anim_front.4bpp.lz"); const u32 gMonFrontPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/anim_front.4bpp.lz"); const u32 gMonFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/anim_front.4bpp.lz"); @@ -447,7 +447,7 @@ const u32 gMonFrontPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/anim_front const u32 gMonFrontPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/anim_front.4bpp.lz"); const u32 gMonFrontPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front.4bpp.lz"); +const u32 gMonFrontPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front.4bpp.lz"); #if P_GEN_4_POKEMON == TRUE const u32 gMonFrontPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/anim_front.4bpp.lz"); const u32 gMonFrontPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/anim_front.4bpp.lz"); @@ -485,8 +485,8 @@ const u32 gMonFrontPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/anim_f const u32 gMonFrontPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/anim_front.4bpp.lz"); const u32 gMonFrontPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/anim_front.4bpp.lz"); +const u32 gMonFrontPic_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/anim_front.4bpp.lz"); +const u32 gMonFrontPic_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/anim_front.4bpp.lz"); const u32 gMonFrontPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/anim_front.4bpp.lz"); const u32 gMonFrontPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/anim_front.4bpp.lz"); const u32 gMonFrontPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/anim_front.4bpp.lz"); @@ -495,9 +495,9 @@ const u32 gMonFrontPic_PachirisuF[] = INCBIN_U32("graphics/pokemon/pachirisu/ani const u32 gMonFrontPic_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/anim_front.4bpp.lz"); const u32 gMonFrontPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/anim_front.4bpp.lz"); const u32 gMonFrontPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/anim_front.4bpp.lz"); +const u32 gMonFrontPic_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/anim_front.4bpp.lz"); +const u32 gMonFrontPic_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/anim_front.4bpp.lz"); +const u32 gMonFrontPic_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/anim_front.4bpp.lz"); const u32 gMonFrontPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/anim_frontf.4bpp.lz"); const u32 gMonFrontPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/anim_front.4bpp.lz"); @@ -575,12 +575,12 @@ const u32 gMonFrontPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/anim_front const u32 gMonFrontPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/anim_front.4bpp.lz"); const u32 gMonFrontPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/anim_front.4bpp.lz"); const u32 gMonFrontPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/anim_front.4bpp.lz"); +const u32 gMonFrontPic_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/anim_front.4bpp.lz"); const u32 gMonFrontPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/anim_front.4bpp.lz"); const u32 gMonFrontPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/anim_front.4bpp.lz"); const u32 gMonFrontPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/anim_front.4bpp.lz"); const u32 gMonFrontPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/anim_front.4bpp.lz"); +const u32 gMonFrontPic_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/anim_front.4bpp.lz"); const u32 gMonFrontPic_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/anim_front.4bpp.lz"); #endif #if P_GEN_5_POKEMON == TRUE @@ -641,12 +641,12 @@ const u32 gMonFrontPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/anim_f const u32 gMonFrontPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/anim_front.4bpp.lz"); const u32 gMonFrontPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/anim_front.4bpp.lz"); const u32 gMonFrontPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/anim_front.4bpp.lz"); +const u32 gMonFrontPic_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/anim_front.4bpp.lz"); const u32 gMonFrontPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/anim_front.4bpp.lz"); const u32 gMonFrontPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/anim_front.4bpp.lz"); const u32 gMonFrontPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/anim_front.4bpp.lz"); const u32 gMonFrontPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/anim_front.4bpp.lz"); +const u32 gMonFrontPic_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/anim_front.4bpp.lz"); const u32 gMonFrontPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/anim_front.4bpp.lz"); const u32 gMonFrontPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/anim_front.4bpp.lz"); const u32 gMonFrontPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/anim_front.4bpp.lz"); @@ -677,7 +677,7 @@ const u32 gMonFrontPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/anim const u32 gMonFrontPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/anim_front.4bpp.lz"); const u32 gMonFrontPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/anim_front.4bpp.lz"); const u32 gMonFrontPic_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/anim_front.4bpp.lz"); +const u32 gMonFrontPic_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/anim_front.4bpp.lz"); const u32 gMonFrontPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/anim_front.4bpp.lz"); const u32 gMonFrontPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/anim_front.4bpp.lz"); const u32 gMonFrontPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/anim_front.4bpp.lz"); @@ -734,14 +734,14 @@ const u32 gMonFrontPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/anim const u32 gMonFrontPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/anim_front.4bpp.lz"); const u32 gMonFrontPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/anim_front.4bpp.lz"); const u32 gMonFrontPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/anim_front.4bpp.lz"); +const u32 gMonFrontPic_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/anim_front.4bpp.lz"); +const u32 gMonFrontPic_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/anim_front.4bpp.lz"); const u32 gMonFrontPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/anim_front.4bpp.lz"); const u32 gMonFrontPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/anim_front.4bpp.lz"); +const u32 gMonFrontPic_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/anim_front.4bpp.lz"); const u32 gMonFrontPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/anim_front.4bpp.lz"); +const u32 gMonFrontPic_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/anim_front.4bpp.lz"); +const u32 gMonFrontPic_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/anim_front.4bpp.lz"); const u32 gMonFrontPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/anim_front.4bpp.lz"); #endif #if P_GEN_6_POKEMON == TRUE @@ -761,7 +761,7 @@ const u32 gMonFrontPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/ const u32 gMonFrontPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/anim_front.4bpp.lz"); const u32 gMonFrontPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/anim_front.4bpp.lz"); const u32 gMonFrontPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/anim_front.4bpp.lz"); +const u32 gMonFrontPic_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/anim_front.4bpp.lz"); const u32 gMonFrontPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/anim_front.4bpp.lz"); const u32 gMonFrontPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/anim_front.4bpp.lz"); const u32 gMonFrontPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/anim_frontf.4bpp.lz"); @@ -772,12 +772,12 @@ const u32 gMonFrontPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/anim_front const u32 gMonFrontPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/anim_front.4bpp.lz"); const u32 gMonFrontPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/anim_front.4bpp.lz"); const u32 gMonFrontPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/anim_front.4bpp.lz"); +const u32 gMonFrontPic_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/anim_front.4bpp.lz"); const u32 gMonFrontPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/anim_front.4bpp.lz"); +const u32 gMonFrontPic_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/anim_front.4bpp.lz"); const u32 gMonFrontPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/anim_front.4bpp.lz"); const u32 gMonFrontPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/anim_front.4bpp.lz"); +const u32 gMonFrontPic_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/anim_front.4bpp.lz"); const u32 gMonFrontPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/anim_front.4bpp.lz"); const u32 gMonFrontPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/anim_front.4bpp.lz"); const u32 gMonFrontPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/anim_front.4bpp.lz"); @@ -806,17 +806,17 @@ const u32 gMonFrontPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/anim_front const u32 gMonFrontPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/anim_front.4bpp.lz"); const u32 gMonFrontPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/anim_front.4bpp.lz"); const u32 gMonFrontPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/anim_front.4bpp.lz"); +const u32 gMonFrontPic_PumpkabooAverage[] = INCBIN_U32("graphics/pokemon/pumpkaboo/anim_front.4bpp.lz"); +const u32 gMonFrontPic_GourgeistAverage[] = INCBIN_U32("graphics/pokemon/gourgeist/anim_front.4bpp.lz"); const u32 gMonFrontPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/anim_front.4bpp.lz"); const u32 gMonFrontPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/anim_front.4bpp.lz"); const u32 gMonFrontPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/anim_front.4bpp.lz"); const u32 gMonFrontPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/front.4bpp.lz"); +const u32 gMonFrontPic_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/front.4bpp.lz"); const u32 gMonFrontPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/anim_front.4bpp.lz"); +const u32 gMonFrontPic_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/anim_front.4bpp.lz"); const u32 gMonFrontPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/anim_front.4bpp.lz"); +const u32 gMonFrontPic_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/anim_front.4bpp.lz"); const u32 gMonFrontPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/anim_front.4bpp.lz"); #endif #if P_GEN_7_POKEMON == TRUE @@ -839,12 +839,12 @@ const u32 gMonFrontPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/anim const u32 gMonFrontPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/anim_front.4bpp.lz"); const u32 gMonFrontPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/front.4bpp.lz"); const u32 gMonFrontPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/front.4bpp.lz"); -const u32 gMonFrontPic_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/front.4bpp.lz"); +const u32 gMonFrontPic_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/front.4bpp.lz"); const u32 gMonFrontPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/front.4bpp.lz"); const u32 gMonFrontPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/front.4bpp.lz"); const u32 gMonFrontPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/front.4bpp.lz"); -const u32 gMonFrontPic_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/front.4bpp.lz"); -const u32 gMonFrontPic_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/front.4bpp.lz"); +const u32 gMonFrontPic_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/front.4bpp.lz"); +const u32 gMonFrontPic_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/front.4bpp.lz"); const u32 gMonFrontPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/front.4bpp.lz"); const u32 gMonFrontPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/front.4bpp.lz"); const u32 gMonFrontPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/front.4bpp.lz"); @@ -872,11 +872,11 @@ const u32 gMonFrontPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/fron const u32 gMonFrontPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/anim_front.4bpp.lz"); const u32 gMonFrontPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/front.4bpp.lz"); const u32 gMonFrontPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/front.4bpp.lz"); -const u32 gMonFrontPic_Minior[] = INCBIN_U32("graphics/pokemon/minior/front.4bpp.lz"); +const u32 gMonFrontPic_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/front.4bpp.lz"); const u32 gMonFrontPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/front.4bpp.lz"); const u32 gMonFrontPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/anim_front.4bpp.lz"); const u32 gMonFrontPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/front.4bpp.lz"); -const u32 gMonFrontPic_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/front.4bpp.lz"); +const u32 gMonFrontPic_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/front.4bpp.lz"); const u32 gMonFrontPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/front.4bpp.lz"); const u32 gMonFrontPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/front.4bpp.lz"); const u32 gMonFrontPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/front.4bpp.lz"); @@ -949,7 +949,7 @@ const u32 gMonFrontPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/fron const u32 gMonFrontPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/front.4bpp.lz"); const u32 gMonFrontPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/front.4bpp.lz"); const u32 gMonFrontPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/front.4bpp.lz"); -const u32 gMonFrontPic_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/front.4bpp.lz"); +const u32 gMonFrontPic_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/front.4bpp.lz"); const u32 gMonFrontPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/anim_front.4bpp.lz"); const u32 gMonFrontPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/anim_front.4bpp.lz"); const u32 gMonFrontPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/front.4bpp.lz"); @@ -975,9 +975,9 @@ const u32 gMonFrontPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/an const u32 gMonFrontPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/front.4bpp.lz"); const u32 gMonFrontPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/front.4bpp.lz"); const u32 gMonFrontPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/front.4bpp.lz"); -const u32 gMonFrontPic_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/front.4bpp.lz"); -const u32 gMonFrontPic_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/front.4bpp.lz"); -const u32 gMonFrontPic_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/front.4bpp.lz"); +const u32 gMonFrontPic_EiscueFace[] = INCBIN_U32("graphics/pokemon/eiscue/front.4bpp.lz"); +const u32 gMonFrontPic_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/front.4bpp.lz"); +const u32 gMonFrontPic_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/front.4bpp.lz"); const u32 gMonFrontPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/front.4bpp.lz"); const u32 gMonFrontPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/front.4bpp.lz"); const u32 gMonFrontPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/front.4bpp.lz"); @@ -988,11 +988,11 @@ const u32 gMonFrontPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/fron const u32 gMonFrontPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/front.4bpp.lz"); const u32 gMonFrontPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/front.4bpp.lz"); const u32 gMonFrontPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/front.4bpp.lz"); -const u32 gMonFrontPic_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/front.4bpp.lz"); -const u32 gMonFrontPic_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/front.4bpp.lz"); +const u32 gMonFrontPic_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/front.4bpp.lz"); +const u32 gMonFrontPic_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/front.4bpp.lz"); const u32 gMonFrontPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/front.4bpp.lz"); const u32 gMonFrontPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/front.4bpp.lz"); -const u32 gMonFrontPic_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/front.4bpp.lz"); +const u32 gMonFrontPic_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/front.4bpp.lz"); const u32 gMonFrontPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/front.4bpp.lz"); const u32 gMonFrontPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/front.4bpp.lz"); const u32 gMonFrontPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/front.4bpp.lz"); @@ -1002,10 +1002,10 @@ const u32 gMonFrontPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/front.4b const u32 gMonFrontPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/front.4bpp.lz"); const u32 gMonFrontPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/front.4bpp.lz"); const u32 gMonFrontPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/front.4bpp.lz"); -const u32 gMonFrontPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); +const u32 gMonFrontPic_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); const u32 gMonFrontPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/front.4bpp.lz"); const u32 gMonFrontPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/front.4bpp.lz"); -const u32 gMonFrontPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/front.4bpp.lz"); +const u32 gMonFrontPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/front.4bpp.lz"); #endif const u32 gMonFrontPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/front.4bpp.lz"); const u32 gMonFrontPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/front.4bpp.lz"); @@ -1098,7 +1098,7 @@ const u32 gMonFrontPic_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzag const u32 gMonFrontPic_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/front.4bpp.lz"); #if P_GEN_5_POKEMON == TRUE const u32 gMonFrontPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/front.4bpp.lz"); +const u32 gMonFrontPic_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/front.4bpp.lz"); const u32 gMonFrontPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/front.4bpp.lz"); const u32 gMonFrontPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/front.4bpp.lz"); #endif @@ -1195,7 +1195,7 @@ const u32 gMonFrontPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/a const u32 gMonFrontPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/front.4bpp.lz"); const u32 gMonFrontPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/front.4bpp.lz"); const u32 gMonFrontPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/front.4bpp.lz"); +const u32 gMonFrontPic_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/front.4bpp.lz"); const u32 gMonFrontPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/front.4bpp.lz"); const u32 gMonFrontPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/front.4bpp.lz"); const u32 gMonFrontPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/front.4bpp.lz"); @@ -1289,6 +1289,39 @@ const u32 gMonFrontPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ const u32 gMonFrontPic_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/front.4bpp.lz"); const u32 gMonFrontPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/front.4bpp.lz"); const u32 gMonFrontPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/front.4bpp.lz"); +const u32 gMonFrontPic_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_UrshifuSingleStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/front.4bpp.lz"); +const u32 gMonFrontPic_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.4bpp.lz"); #endif const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.4bpp.lz"); @@ -1701,7 +1734,7 @@ const u32 gMonBackPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/back.4bpp const u32 gMonBackPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/back.4bpp.lz"); const u32 gMonBackPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/back.4bpp.lz"); const u32 gMonBackPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/backf.4bpp.lz"); -const u32 gMonBackPic_Castform[] = INCBIN_U32("graphics/pokemon/castform/back.4bpp.lz"); +const u32 gMonBackPic_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/back.4bpp.lz"); const u32 gMonBackPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/back.4bpp.lz"); const u32 gMonBackPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/back.4bpp.lz"); const u32 gMonBackPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/back.4bpp.lz"); @@ -1737,7 +1770,7 @@ const u32 gMonBackPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/back.4bpp.l const u32 gMonBackPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/back.4bpp.lz"); const u32 gMonBackPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/back.4bpp.lz"); const u32 gMonBackPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/back.4bpp.lz"); -const u32 gMonBackPic_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/back.4bpp.lz"); +const u32 gMonBackPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/back.4bpp.lz"); #if P_GEN_4_POKEMON == TRUE const u32 gMonBackPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/back.4bpp.lz"); const u32 gMonBackPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/back.4bpp.lz"); @@ -1773,8 +1806,8 @@ const u32 gMonBackPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/back.4b const u32 gMonBackPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/back.4bpp.lz"); const u32 gMonBackPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/back.4bpp.lz"); const u32 gMonBackPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/back.4bpp.lz"); -const u32 gMonBackPic_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/back.4bpp.lz"); -const u32 gMonBackPic_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/back.4bpp.lz"); +const u32 gMonBackPic_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/back.4bpp.lz"); +const u32 gMonBackPic_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/back.4bpp.lz"); const u32 gMonBackPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/back.4bpp.lz"); const u32 gMonBackPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/back.4bpp.lz"); const u32 gMonBackPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/back.4bpp.lz"); @@ -1784,9 +1817,9 @@ const u32 gMonBackPic_BuizelF[] = INCBIN_U32("graphics/pokemon/buizel/backf.4bpp const u32 gMonBackPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/back.4bpp.lz"); const u32 gMonBackPic_FloatzelF[] = INCBIN_U32("graphics/pokemon/floatzel/backf.4bpp.lz"); const u32 gMonBackPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/back.4bpp.lz"); -const u32 gMonBackPic_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/back.4bpp.lz"); -const u32 gMonBackPic_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/back.4bpp.lz"); -const u32 gMonBackPic_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/back.4bpp.lz"); +const u32 gMonBackPic_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/back.4bpp.lz"); +const u32 gMonBackPic_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/back.4bpp.lz"); +const u32 gMonBackPic_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/back.4bpp.lz"); const u32 gMonBackPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/back.4bpp.lz"); const u32 gMonBackPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/backf.4bpp.lz"); const u32 gMonBackPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/back.4bpp.lz"); @@ -1860,12 +1893,12 @@ const u32 gMonBackPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/back.4bpp.l const u32 gMonBackPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/back.4bpp.lz"); const u32 gMonBackPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/back.4bpp.lz"); const u32 gMonBackPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/back.4bpp.lz"); -const u32 gMonBackPic_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/back.4bpp.lz"); +const u32 gMonBackPic_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/back.4bpp.lz"); const u32 gMonBackPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/back.4bpp.lz"); const u32 gMonBackPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/back.4bpp.lz"); const u32 gMonBackPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/back.4bpp.lz"); const u32 gMonBackPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/back.4bpp.lz"); -const u32 gMonBackPic_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/back.4bpp.lz"); +const u32 gMonBackPic_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/back.4bpp.lz"); const u32 gMonBackPic_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/back.4bpp.lz"); #endif #if P_GEN_5_POKEMON == TRUE @@ -1926,12 +1959,12 @@ const u32 gMonBackPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/back.4b const u32 gMonBackPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/back.4bpp.lz"); const u32 gMonBackPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/back.4bpp.lz"); const u32 gMonBackPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/back.4bpp.lz"); -const u32 gMonBackPic_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/back.4bpp.lz"); +const u32 gMonBackPic_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/back.4bpp.lz"); const u32 gMonBackPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/back.4bpp.lz"); const u32 gMonBackPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/back.4bpp.lz"); const u32 gMonBackPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/back.4bpp.lz"); const u32 gMonBackPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/back.4bpp.lz"); -const u32 gMonBackPic_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/back.4bpp.lz"); +const u32 gMonBackPic_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/back.4bpp.lz"); const u32 gMonBackPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/back.4bpp.lz"); const u32 gMonBackPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/back.4bpp.lz"); const u32 gMonBackPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/back.4bpp.lz"); @@ -1962,7 +1995,7 @@ const u32 gMonBackPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/back. const u32 gMonBackPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/back.4bpp.lz"); const u32 gMonBackPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/back.4bpp.lz"); const u32 gMonBackPic_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/back.4bpp.lz"); -const u32 gMonBackPic_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/back.4bpp.lz"); +const u32 gMonBackPic_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/back.4bpp.lz"); const u32 gMonBackPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/back.4bpp.lz"); const u32 gMonBackPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/back.4bpp.lz"); const u32 gMonBackPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/back.4bpp.lz"); @@ -2019,14 +2052,14 @@ const u32 gMonBackPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/back. const u32 gMonBackPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/back.4bpp.lz"); const u32 gMonBackPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/back.4bpp.lz"); const u32 gMonBackPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/back.4bpp.lz"); -const u32 gMonBackPic_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/back.4bpp.lz"); -const u32 gMonBackPic_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/back.4bpp.lz"); +const u32 gMonBackPic_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/back.4bpp.lz"); +const u32 gMonBackPic_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/back.4bpp.lz"); const u32 gMonBackPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/back.4bpp.lz"); const u32 gMonBackPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/back.4bpp.lz"); -const u32 gMonBackPic_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/back.4bpp.lz"); +const u32 gMonBackPic_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/back.4bpp.lz"); const u32 gMonBackPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/back.4bpp.lz"); -const u32 gMonBackPic_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/back.4bpp.lz"); -const u32 gMonBackPic_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/back.4bpp.lz"); +const u32 gMonBackPic_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/back.4bpp.lz"); +const u32 gMonBackPic_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/back.4bpp.lz"); const u32 gMonBackPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/back.4bpp.lz"); #endif #if P_GEN_6_POKEMON == TRUE @@ -2046,7 +2079,7 @@ const u32 gMonBackPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/b const u32 gMonBackPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/back.4bpp.lz"); const u32 gMonBackPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/back.4bpp.lz"); const u32 gMonBackPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/back.4bpp.lz"); -const u32 gMonBackPic_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/back.4bpp.lz"); +const u32 gMonBackPic_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/back.4bpp.lz"); const u32 gMonBackPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/back.4bpp.lz"); const u32 gMonBackPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/back.4bpp.lz"); const u32 gMonBackPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/backf.4bpp.lz"); @@ -2057,12 +2090,12 @@ const u32 gMonBackPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/back.4bpp.l const u32 gMonBackPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/back.4bpp.lz"); const u32 gMonBackPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/back.4bpp.lz"); const u32 gMonBackPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/back.4bpp.lz"); -const u32 gMonBackPic_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/back.4bpp.lz"); +const u32 gMonBackPic_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/back.4bpp.lz"); const u32 gMonBackPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/back.4bpp.lz"); -const u32 gMonBackPic_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/back.4bpp.lz"); +const u32 gMonBackPic_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/back.4bpp.lz"); const u32 gMonBackPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/back.4bpp.lz"); const u32 gMonBackPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/back.4bpp.lz"); -const u32 gMonBackPic_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/back.4bpp.lz"); +const u32 gMonBackPic_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/back.4bpp.lz"); const u32 gMonBackPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/back.4bpp.lz"); const u32 gMonBackPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/back.4bpp.lz"); const u32 gMonBackPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/back.4bpp.lz"); @@ -2091,17 +2124,17 @@ const u32 gMonBackPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/back.4bpp.l const u32 gMonBackPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/back.4bpp.lz"); const u32 gMonBackPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/back.4bpp.lz"); const u32 gMonBackPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/back.4bpp.lz"); -const u32 gMonBackPic_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/back.4bpp.lz"); -const u32 gMonBackPic_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/back.4bpp.lz"); +const u32 gMonBackPic_PumpkabooAverage[] = INCBIN_U32("graphics/pokemon/pumpkaboo/back.4bpp.lz"); +const u32 gMonBackPic_GourgeistAverage[] = INCBIN_U32("graphics/pokemon/gourgeist/back.4bpp.lz"); const u32 gMonBackPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/back.4bpp.lz"); const u32 gMonBackPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/back.4bpp.lz"); const u32 gMonBackPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/back.4bpp.lz"); const u32 gMonBackPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/back.4bpp.lz"); -const u32 gMonBackPic_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/back.4bpp.lz"); +const u32 gMonBackPic_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/back.4bpp.lz"); const u32 gMonBackPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/back.4bpp.lz"); -const u32 gMonBackPic_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/back.4bpp.lz"); +const u32 gMonBackPic_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/back.4bpp.lz"); const u32 gMonBackPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/back.4bpp.lz"); -const u32 gMonBackPic_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/back.4bpp.lz"); +const u32 gMonBackPic_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/back.4bpp.lz"); const u32 gMonBackPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/back.4bpp.lz"); #endif #if P_GEN_7_POKEMON == TRUE @@ -2124,12 +2157,12 @@ const u32 gMonBackPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/back. const u32 gMonBackPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/back.4bpp.lz"); const u32 gMonBackPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/back.4bpp.lz"); const u32 gMonBackPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/back.4bpp.lz"); -const u32 gMonBackPic_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/back.4bpp.lz"); +const u32 gMonBackPic_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/back.4bpp.lz"); const u32 gMonBackPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/back.4bpp.lz"); const u32 gMonBackPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/back.4bpp.lz"); const u32 gMonBackPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/back.4bpp.lz"); -const u32 gMonBackPic_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/back.4bpp.lz"); -const u32 gMonBackPic_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/back.4bpp.lz"); +const u32 gMonBackPic_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/back.4bpp.lz"); +const u32 gMonBackPic_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/back.4bpp.lz"); const u32 gMonBackPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/back.4bpp.lz"); const u32 gMonBackPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/back.4bpp.lz"); const u32 gMonBackPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/back.4bpp.lz"); @@ -2157,11 +2190,11 @@ const u32 gMonBackPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/back. const u32 gMonBackPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/back.4bpp.lz"); const u32 gMonBackPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/back.4bpp.lz"); const u32 gMonBackPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/back.4bpp.lz"); -const u32 gMonBackPic_Minior[] = INCBIN_U32("graphics/pokemon/minior/back.4bpp.lz"); +const u32 gMonBackPic_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/back.4bpp.lz"); const u32 gMonBackPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/back.4bpp.lz"); const u32 gMonBackPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/back.4bpp.lz"); const u32 gMonBackPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/back.4bpp.lz"); -const u32 gMonBackPic_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/back.4bpp.lz"); +const u32 gMonBackPic_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/back.4bpp.lz"); const u32 gMonBackPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/back.4bpp.lz"); const u32 gMonBackPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/back.4bpp.lz"); const u32 gMonBackPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/back.4bpp.lz"); @@ -2234,7 +2267,7 @@ const u32 gMonBackPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/back. const u32 gMonBackPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/back.4bpp.lz"); const u32 gMonBackPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/back.4bpp.lz"); const u32 gMonBackPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/back.4bpp.lz"); -const u32 gMonBackPic_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/back.4bpp.lz"); +const u32 gMonBackPic_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/back.4bpp.lz"); const u32 gMonBackPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/back.4bpp.lz"); const u32 gMonBackPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/back.4bpp.lz"); const u32 gMonBackPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/back.4bpp.lz"); @@ -2260,9 +2293,9 @@ const u32 gMonBackPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/bac const u32 gMonBackPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/back.4bpp.lz"); const u32 gMonBackPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/back.4bpp.lz"); const u32 gMonBackPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/back.4bpp.lz"); -const u32 gMonBackPic_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/back.4bpp.lz"); -const u32 gMonBackPic_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/back.4bpp.lz"); -const u32 gMonBackPic_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/back.4bpp.lz"); +const u32 gMonBackPic_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/back.4bpp.lz"); +const u32 gMonBackPic_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/back.4bpp.lz"); +const u32 gMonBackPic_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/back.4bpp.lz"); const u32 gMonBackPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/back.4bpp.lz"); const u32 gMonBackPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/back.4bpp.lz"); const u32 gMonBackPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/back.4bpp.lz"); @@ -2273,11 +2306,11 @@ const u32 gMonBackPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/back. const u32 gMonBackPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/back.4bpp.lz"); const u32 gMonBackPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/back.4bpp.lz"); const u32 gMonBackPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/back.4bpp.lz"); -const u32 gMonBackPic_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/back.4bpp.lz"); -const u32 gMonBackPic_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/back.4bpp.lz"); +const u32 gMonBackPic_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/back.4bpp.lz"); +const u32 gMonBackPic_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/back.4bpp.lz"); const u32 gMonBackPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/back.4bpp.lz"); const u32 gMonBackPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/back.4bpp.lz"); -const u32 gMonBackPic_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/back.4bpp.lz"); +const u32 gMonBackPic_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/back.4bpp.lz"); const u32 gMonBackPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/back.4bpp.lz"); const u32 gMonBackPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/back.4bpp.lz"); const u32 gMonBackPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/back.4bpp.lz"); @@ -2287,10 +2320,10 @@ const u32 gMonBackPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/back.4bpp const u32 gMonBackPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/back.4bpp.lz"); const u32 gMonBackPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/back.4bpp.lz"); const u32 gMonBackPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/back.4bpp.lz"); -const u32 gMonBackPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); +const u32 gMonBackPic_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); const u32 gMonBackPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/back.4bpp.lz"); const u32 gMonBackPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/back.4bpp.lz"); -const u32 gMonBackPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); +const u32 gMonBackPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); #endif const u32 gMonBackPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/back.4bpp.lz"); const u32 gMonBackPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/back.4bpp.lz"); @@ -2383,7 +2416,7 @@ const u32 gMonBackPic_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzago const u32 gMonBackPic_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/back.4bpp.lz"); #if P_GEN_5_POKEMON == TRUE const u32 gMonBackPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/back.4bpp.lz"); -const u32 gMonBackPic_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/back.4bpp.lz"); +const u32 gMonBackPic_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/back.4bpp.lz"); const u32 gMonBackPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/back.4bpp.lz"); const u32 gMonBackPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/back.4bpp.lz"); #endif @@ -2480,7 +2513,7 @@ const u32 gMonBackPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/ba const u32 gMonBackPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/back.4bpp.lz"); const u32 gMonBackPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/back.4bpp.lz"); const u32 gMonBackPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/back.4bpp.lz"); -const u32 gMonBackPic_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/back.4bpp.lz"); +const u32 gMonBackPic_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/back.4bpp.lz"); const u32 gMonBackPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/back.4bpp.lz"); const u32 gMonBackPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/back.4bpp.lz"); const u32 gMonBackPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/back.4bpp.lz"); @@ -2574,6 +2607,39 @@ const u32 gMonBackPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/i const u32 gMonBackPic_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/back.4bpp.lz"); const u32 gMonBackPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/back.4bpp.lz"); const u32 gMonBackPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/back.4bpp.lz"); +const u32 gMonBackPic_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_UrshifuSingleStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/back.4bpp.lz"); +const u32 gMonBackPic_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.4bpp.lz"); #endif const u32 gMonPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/normal.gbapal.lz"); @@ -2928,7 +2994,7 @@ const u32 gMonPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/normal.gb const u32 gMonPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/normal.gbapal.lz"); const u32 gMonPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/normal.gbapal.lz"); const u32 gMonPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/normal.gbapal.lz"); -const u32 gMonPalette_Castform[] = INCBIN_U32("graphics/pokemon/castform/normal.gbapal.lz"); +const u32 gMonPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/normal.gbapal.lz"); const u32 gMonPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/normal.gbapal.lz"); const u32 gMonPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/normal.gbapal.lz"); const u32 gMonPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/normal.gbapal.lz"); @@ -2963,7 +3029,7 @@ const u32 gMonPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/normal.gbap const u32 gMonPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/normal.gbapal.lz"); const u32 gMonPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/normal.gbapal.lz"); const u32 gMonPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/normal.gbapal.lz"); -const u32 gMonPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/normal.gbapal.lz"); +const u32 gMonPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/normal.gbapal.lz"); #if P_GEN_4_POKEMON == TRUE const u32 gMonPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/normal.gbapal.lz"); const u32 gMonPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/normal.gbapal.lz"); @@ -2990,8 +3056,8 @@ const u32 gMonPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/normal. const u32 gMonPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/normal.gbapal.lz"); const u32 gMonPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/normal.gbapal.lz"); const u32 gMonPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/normal.gbapal.lz"); -const u32 gMonPalette_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/normal.gbapal.lz"); -const u32 gMonPalette_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/normal.gbapal.lz"); +const u32 gMonPalette_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/normal.gbapal.lz"); +const u32 gMonPalette_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/normal.gbapal.lz"); const u32 gMonPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/normal.gbapal.lz"); const u32 gMonPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/normal.gbapal.lz"); const u32 gMonPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/normalf.gbapal.lz"); @@ -3000,9 +3066,9 @@ const u32 gMonPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/norma const u32 gMonPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/normal.gbapal.lz"); const u32 gMonPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/normal.gbapal.lz"); const u32 gMonPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/normal.gbapal.lz"); -const u32 gMonPalette_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/normal.gbapal.lz"); -const u32 gMonPalette_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/normal.gbapal.lz"); -const u32 gMonPalette_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/normal.gbapal.lz"); +const u32 gMonPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/normal.gbapal.lz"); +const u32 gMonPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/normal.gbapal.lz"); +const u32 gMonPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/normal.gbapal.lz"); const u32 gMonPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/normal.gbapal.lz"); const u32 gMonPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/normal.gbapal.lz"); const u32 gMonPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/normal.gbapal.lz"); @@ -3068,12 +3134,12 @@ const u32 gMonPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/normal.gbap const u32 gMonPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/normal.gbapal.lz"); const u32 gMonPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/normal.gbapal.lz"); const u32 gMonPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/normal.gbapal.lz"); -const u32 gMonPalette_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/normal.gbapal.lz"); +const u32 gMonPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/normal.gbapal.lz"); const u32 gMonPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/normal.gbapal.lz"); const u32 gMonPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/normal.gbapal.lz"); const u32 gMonPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/normal.gbapal.lz"); const u32 gMonPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/normal.gbapal.lz"); -const u32 gMonPalette_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/normal.gbapal.lz"); +const u32 gMonPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/normal.gbapal.lz"); const u32 gMonPalette_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/normal.gbapal.lz"); #endif #if P_GEN_5_POKEMON == TRUE @@ -3134,12 +3200,12 @@ const u32 gMonPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/normal. const u32 gMonPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/normal.gbapal.lz"); const u32 gMonPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/normal.gbapal.lz"); const u32 gMonPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/normal.gbapal.lz"); -const u32 gMonPalette_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/normal.gbapal.lz"); +const u32 gMonPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/normal.gbapal.lz"); const u32 gMonPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/normal.gbapal.lz"); const u32 gMonPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/normal.gbapal.lz"); const u32 gMonPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/normal.gbapal.lz"); const u32 gMonPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/normal.gbapal.lz"); -const u32 gMonPalette_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/normal.gbapal.lz"); +const u32 gMonPalette_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/normal.gbapal.lz"); const u32 gMonPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/normal.gbapal.lz"); const u32 gMonPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/normal.gbapal.lz"); const u32 gMonPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/normal.gbapal.lz"); @@ -3169,8 +3235,8 @@ const u32 gMonPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/normal.gbap const u32 gMonPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/normal.gbapal.lz"); const u32 gMonPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/normal.gbapal.lz"); const u32 gMonPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/normal.gbapal.lz"); -const u32 gMonPalette_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/normal.gbapal.lz"); -const u32 gMonPalette_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/normal.gbapal.lz"); +const u32 gMonPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/normal.gbapal.lz"); +const u32 gMonPalette_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/normal.gbapal.lz"); const u32 gMonPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/normal.gbapal.lz"); const u32 gMonPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/normal.gbapal.lz"); const u32 gMonPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/normal.gbapal.lz"); @@ -3227,14 +3293,14 @@ const u32 gMonPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/norma const u32 gMonPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/normal.gbapal.lz"); const u32 gMonPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/normal.gbapal.lz"); const u32 gMonPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/normal.gbapal.lz"); -const u32 gMonPalette_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/normal.gbapal.lz"); -const u32 gMonPalette_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/normal.gbapal.lz"); +const u32 gMonPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/normal.gbapal.lz"); +const u32 gMonPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/normal.gbapal.lz"); const u32 gMonPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/normal.gbapal.lz"); const u32 gMonPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/normal.gbapal.lz"); -const u32 gMonPalette_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/normal.gbapal.lz"); +const u32 gMonPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/normal.gbapal.lz"); const u32 gMonPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/normal.gbapal.lz"); -const u32 gMonPalette_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/normal.gbapal.lz"); -const u32 gMonPalette_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/normal.gbapal.lz"); +const u32 gMonPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/normal.gbapal.lz"); +const u32 gMonPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/normal.gbapal.lz"); const u32 gMonPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/normal.gbapal.lz"); #endif #if P_GEN_6_POKEMON == TRUE @@ -3254,22 +3320,22 @@ const u32 gMonPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/n const u32 gMonPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/normal.gbapal.lz"); const u32 gMonPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/normal.gbapal.lz"); const u32 gMonPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/normal.gbapal.lz"); -const u32 gMonPalette_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/normal.gbapal.lz"); +const u32 gMonPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/normal.gbapal.lz"); const u32 gMonPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/normal.gbapal.lz"); const u32 gMonPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/normal.gbapal.lz"); -const u32 gMonPalette_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/normal.gbapal.lz"); -const u32 gMonPalette_Floette[] = INCBIN_U32("graphics/pokemon/floette/normal.gbapal.lz"); -const u32 gMonPalette_Florges[] = INCBIN_U32("graphics/pokemon/florges/normal.gbapal.lz"); +const u32 gMonPalette_FlabebeRedFlower[] = INCBIN_U32("graphics/pokemon/flabebe/normal.gbapal.lz"); +const u32 gMonPalette_FloetteRedFlower[] = INCBIN_U32("graphics/pokemon/floette/normal.gbapal.lz"); +const u32 gMonPalette_FlorgesRedFlower[] = INCBIN_U32("graphics/pokemon/florges/normal.gbapal.lz"); const u32 gMonPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/normal.gbapal.lz"); const u32 gMonPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/normal.gbapal.lz"); const u32 gMonPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/normal.gbapal.lz"); const u32 gMonPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/normal.gbapal.lz"); -const u32 gMonPalette_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/normal.gbapal.lz"); +const u32 gMonPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/normal.gbapal.lz"); const u32 gMonPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/normal.gbapal.lz"); -const u32 gMonPalette_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/normal.gbapal.lz"); +const u32 gMonPalette_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/normal.gbapal.lz"); const u32 gMonPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/normal.gbapal.lz"); const u32 gMonPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/normal.gbapal.lz"); -const u32 gMonPalette_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/normal.gbapal.lz"); +const u32 gMonPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/normal.gbapal.lz"); const u32 gMonPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/normal.gbapal.lz"); const u32 gMonPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/normal.gbapal.lz"); const u32 gMonPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/normal.gbapal.lz"); @@ -3304,11 +3370,11 @@ const u32 gMonPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/normal. const u32 gMonPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/normal.gbapal.lz"); const u32 gMonPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/normal.gbapal.lz"); const u32 gMonPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/normal.gbapal.lz"); -const u32 gMonPalette_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/normal.gbapal.lz"); +const u32 gMonPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/normal.gbapal.lz"); const u32 gMonPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/normal.gbapal.lz"); -const u32 gMonPalette_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/normal.gbapal.lz"); +const u32 gMonPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/normal.gbapal.lz"); const u32 gMonPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/normal.gbapal.lz"); -const u32 gMonPalette_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/normal.gbapal.lz"); +const u32 gMonPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/normal.gbapal.lz"); const u32 gMonPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/normal.gbapal.lz"); #endif #if P_GEN_7_POKEMON == TRUE @@ -3331,12 +3397,12 @@ const u32 gMonPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/norma const u32 gMonPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/normal.gbapal.lz"); const u32 gMonPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/normal.gbapal.lz"); const u32 gMonPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/normal.gbapal.lz"); -const u32 gMonPalette_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/normal.gbapal.lz"); +const u32 gMonPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/normal.gbapal.lz"); const u32 gMonPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/normal.gbapal.lz"); const u32 gMonPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/normal.gbapal.lz"); const u32 gMonPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/normal.gbapal.lz"); -const u32 gMonPalette_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/normal.gbapal.lz"); -const u32 gMonPalette_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/normal.gbapal.lz"); +const u32 gMonPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/normal.gbapal.lz"); +const u32 gMonPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/normal.gbapal.lz"); const u32 gMonPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/normal.gbapal.lz"); const u32 gMonPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/normal.gbapal.lz"); const u32 gMonPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/normal.gbapal.lz"); @@ -3363,12 +3429,12 @@ const u32 gMonPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/norma const u32 gMonPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/normal.gbapal.lz"); const u32 gMonPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/normal.gbapal.lz"); const u32 gMonPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/normal.gbapal.lz"); -const u32 gMonPalette_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/normal.gbapal.lz"); -const u32 gMonPalette_Minior[] = INCBIN_U32("graphics/pokemon/minior/normal.gbapal.lz"); +const u32 gMonPalette_SilvallyNormal[] = INCBIN_U32("graphics/pokemon/silvally/normal.gbapal.lz"); +const u32 gMonPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/normal.gbapal.lz"); const u32 gMonPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/normal.gbapal.lz"); const u32 gMonPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/normal.gbapal.lz"); const u32 gMonPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/normal.gbapal.lz"); -const u32 gMonPalette_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/normal.gbapal.lz"); +const u32 gMonPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/normal.gbapal.lz"); const u32 gMonPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/normal.gbapal.lz"); const u32 gMonPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/normal.gbapal.lz"); const u32 gMonPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/normal.gbapal.lz"); @@ -3441,7 +3507,7 @@ const u32 gMonPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/norma const u32 gMonPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/normal.gbapal.lz"); const u32 gMonPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/normal.gbapal.lz"); const u32 gMonPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/normal.gbapal.lz"); -const u32 gMonPalette_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/normal.gbapal.lz"); +const u32 gMonPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/normal.gbapal.lz"); const u32 gMonPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/normal.gbapal.lz"); const u32 gMonPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/normal.gbapal.lz"); const u32 gMonPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/normal.gbapal.lz"); @@ -3467,9 +3533,9 @@ const u32 gMonPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/nor const u32 gMonPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/normal.gbapal.lz"); const u32 gMonPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/normal.gbapal.lz"); const u32 gMonPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/normal.gbapal.lz"); -const u32 gMonPalette_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/normal.gbapal.lz"); -const u32 gMonPalette_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/normal.gbapal.lz"); -const u32 gMonPalette_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/normal.gbapal.lz"); +const u32 gMonPalette_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/normal.gbapal.lz"); +const u32 gMonPalette_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/normal.gbapal.lz"); +const u32 gMonPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/normal.gbapal.lz"); const u32 gMonPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/normal.gbapal.lz"); const u32 gMonPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/normal.gbapal.lz"); const u32 gMonPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/normal.gbapal.lz"); @@ -3480,11 +3546,11 @@ const u32 gMonPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/norma const u32 gMonPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/normal.gbapal.lz"); const u32 gMonPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/normal.gbapal.lz"); const u32 gMonPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/normal.gbapal.lz"); -const u32 gMonPalette_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/normal.gbapal.lz"); -const u32 gMonPalette_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/normal.gbapal.lz"); +const u32 gMonPalette_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/normal.gbapal.lz"); +const u32 gMonPalette_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/normal.gbapal.lz"); const u32 gMonPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/normal.gbapal.lz"); const u32 gMonPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/normal.gbapal.lz"); -const u32 gMonPalette_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/normal.gbapal.lz"); +const u32 gMonPalette_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/normal.gbapal.lz"); const u32 gMonPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/normal.gbapal.lz"); const u32 gMonPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/normal.gbapal.lz"); const u32 gMonPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/normal.gbapal.lz"); @@ -3494,10 +3560,10 @@ const u32 gMonPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/normal.gb const u32 gMonPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/normal.gbapal.lz"); const u32 gMonPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/normal.gbapal.lz"); const u32 gMonPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/normal.gbapal.lz"); -const u32 gMonPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); +const u32 gMonPalette_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); const u32 gMonPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/normal.gbapal.lz"); const u32 gMonPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/normal.gbapal.lz"); -const u32 gMonPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); +const u32 gMonPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); #endif const u32 gMonPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/normal.gbapal.lz"); const u32 gMonPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/normal.gbapal.lz"); @@ -3590,7 +3656,7 @@ const u32 gMonPalette_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzago const u32 gMonPalette_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/normal.gbapal.lz"); #if P_GEN_5_POKEMON == TRUE const u32 gMonPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/normal.gbapal.lz"); -const u32 gMonPalette_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/normal.gbapal.lz"); +const u32 gMonPalette_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/normal.gbapal.lz"); const u32 gMonPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/normal.gbapal.lz"); const u32 gMonPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/normal.gbapal.lz"); #endif @@ -3676,7 +3742,7 @@ const u32 gMonPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/ const u32 gMonPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/normal.gbapal.lz"); const u32 gMonPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/normal.gbapal.lz"); const u32 gMonPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/normal.gbapal.lz"); -const u32 gMonPalette_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/normal.gbapal.lz"); +const u32 gMonPalette_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/normal.gbapal.lz"); const u32 gMonPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/normal.gbapal.lz"); const u32 gMonPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/normal.gbapal.lz"); const u32 gMonPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/normal.gbapal.lz"); @@ -3806,6 +3872,39 @@ const u32 gMonPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/i const u32 gMonPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/normal.gbapal.lz"); const u32 gMonPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/normal.gbapal.lz"); const u32 gMonPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/normal.gbapal.lz"); +const u32 gMonPalette_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_UrshifuSingleStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.gbapal.lz"); +const u32 gMonPalette_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.gbapal.lz"); #endif const u32 gMonPalette_Egg[] = INCBIN_U32("graphics/pokemon/egg/normal.gbapal.lz"); @@ -4161,7 +4260,7 @@ const u32 gMonShinyPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/shin const u32 gMonShinyPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/shiny.gbapal.lz"); const u32 gMonShinyPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/shiny.gbapal.lz"); const u32 gMonShinyPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Castform[] = INCBIN_U32("graphics/pokemon/castform/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/shiny.gbapal.lz"); const u32 gMonShinyPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/shiny.gbapal.lz"); const u32 gMonShinyPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/shiny.gbapal.lz"); @@ -4196,7 +4295,7 @@ const u32 gMonShinyPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/shiny. const u32 gMonShinyPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/shiny.gbapal.lz"); const u32 gMonShinyPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/shiny.gbapal.lz"); #if P_GEN_4_POKEMON == TRUE const u32 gMonShinyPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/shiny.gbapal.lz"); const u32 gMonShinyPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/shiny.gbapal.lz"); @@ -4223,8 +4322,8 @@ const u32 gMonShinyPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/sh const u32 gMonShinyPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/shiny.gbapal.lz"); const u32 gMonShinyPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/shiny.gbapal.lz"); +const u32 gMonShinyPalette_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/shiny.gbapal.lz"); +const u32 gMonShinyPalette_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/shiny.gbapal.lz"); const u32 gMonShinyPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/shiny.gbapal.lz"); const u32 gMonShinyPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/shiny.gbapal.lz"); const u32 gMonShinyPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/shinyf.gbapal.lz"); @@ -4233,9 +4332,9 @@ const u32 gMonShinyPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/ const u32 gMonShinyPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/shiny.gbapal.lz"); const u32 gMonShinyPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/shiny.gbapal.lz"); const u32 gMonShinyPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/shiny.gbapal.lz"); +const u32 gMonShinyPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/shiny.gbapal.lz"); const u32 gMonShinyPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/shiny.gbapal.lz"); @@ -4301,12 +4400,12 @@ const u32 gMonShinyPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/shiny. const u32 gMonShinyPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/shiny.gbapal.lz"); const u32 gMonShinyPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/shiny.gbapal.lz"); const u32 gMonShinyPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/shiny.gbapal.lz"); +const u32 gMonShinyPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/shiny.gbapal.lz"); const u32 gMonShinyPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/shiny.gbapal.lz"); const u32 gMonShinyPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/shiny.gbapal.lz"); const u32 gMonShinyPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/shiny.gbapal.lz"); const u32 gMonShinyPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/shiny.gbapal.lz"); const u32 gMonShinyPalette_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/shiny.gbapal.lz"); #endif #if P_GEN_5_POKEMON == TRUE @@ -4367,12 +4466,12 @@ const u32 gMonShinyPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/sh const u32 gMonShinyPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/shiny.gbapal.lz"); const u32 gMonShinyPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/shiny.gbapal.lz"); const u32 gMonShinyPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/shiny.gbapal.lz"); +const u32 gMonShinyPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/shiny.gbapal.lz"); const u32 gMonShinyPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/shiny.gbapal.lz"); const u32 gMonShinyPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/shiny.gbapal.lz"); const u32 gMonShinyPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/shiny.gbapal.lz"); const u32 gMonShinyPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/shiny.gbapal.lz"); const u32 gMonShinyPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/shiny.gbapal.lz"); const u32 gMonShinyPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/shiny.gbapal.lz"); const u32 gMonShinyPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/shiny.gbapal.lz"); @@ -4402,8 +4501,8 @@ const u32 gMonShinyPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/shiny. const u32 gMonShinyPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/shiny.gbapal.lz"); const u32 gMonShinyPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/shiny.gbapal.lz"); const u32 gMonShinyPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/shiny.gbapal.lz"); +const u32 gMonShinyPalette_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/shiny.gbapal.lz"); const u32 gMonShinyPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/shiny.gbapal.lz"); const u32 gMonShinyPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/shiny.gbapal.lz"); const u32 gMonShinyPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/shiny.gbapal.lz"); @@ -4460,14 +4559,14 @@ const u32 gMonShinyPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/ const u32 gMonShinyPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/shiny.gbapal.lz"); const u32 gMonShinyPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/shiny.gbapal.lz"); const u32 gMonShinyPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/shiny.gbapal.lz"); +const u32 gMonShinyPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/shiny.gbapal.lz"); const u32 gMonShinyPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/shiny.gbapal.lz"); const u32 gMonShinyPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/shiny.gbapal.lz"); +const u32 gMonShinyPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/shiny.gbapal.lz"); const u32 gMonShinyPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/shiny.gbapal.lz"); +const u32 gMonShinyPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/shiny.gbapal.lz"); const u32 gMonShinyPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/shiny.gbapal.lz"); #endif #if P_GEN_6_POKEMON == TRUE @@ -4487,22 +4586,22 @@ const u32 gMonShinyPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchin const u32 gMonShinyPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/shiny.gbapal.lz"); const u32 gMonShinyPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/shiny.gbapal.lz"); const u32 gMonShinyPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/shiny.gbapal.lz"); +const u32 gMonShinyPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/shiny.gbapal.lz"); const u32 gMonShinyPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/shiny.gbapal.lz"); const u32 gMonShinyPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Floette[] = INCBIN_U32("graphics/pokemon/floette/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Florges[] = INCBIN_U32("graphics/pokemon/florges/shiny.gbapal.lz"); +const u32 gMonShinyPalette_FlabebeRedFlower[] = INCBIN_U32("graphics/pokemon/flabebe/shiny.gbapal.lz"); +const u32 gMonShinyPalette_FloetteRedFlower[] = INCBIN_U32("graphics/pokemon/floette/shiny.gbapal.lz"); +const u32 gMonShinyPalette_FlorgesRedFlower[] = INCBIN_U32("graphics/pokemon/florges/shiny.gbapal.lz"); const u32 gMonShinyPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/shiny.gbapal.lz"); const u32 gMonShinyPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/shiny.gbapal.lz"); const u32 gMonShinyPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/shiny.gbapal.lz"); const u32 gMonShinyPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/shiny.gbapal.lz"); +const u32 gMonShinyPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/shiny.gbapal.lz"); const u32 gMonShinyPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/shiny.gbapal.lz"); const u32 gMonShinyPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/shiny.gbapal.lz"); const u32 gMonShinyPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/shiny.gbapal.lz"); +const u32 gMonShinyPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/shiny.gbapal.lz"); const u32 gMonShinyPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/shiny.gbapal.lz"); const u32 gMonShinyPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/shiny.gbapal.lz"); const u32 gMonShinyPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/shiny.gbapal.lz"); @@ -4537,11 +4636,11 @@ const u32 gMonShinyPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/sh const u32 gMonShinyPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/shiny.gbapal.lz"); const u32 gMonShinyPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/shiny.gbapal.lz"); const u32 gMonShinyPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/shiny.gbapal.lz"); +const u32 gMonShinyPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/shiny.gbapal.lz"); const u32 gMonShinyPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/shiny.gbapal.lz"); +const u32 gMonShinyPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/shiny.gbapal.lz"); const u32 gMonShinyPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/shiny.gbapal.lz"); +const u32 gMonShinyPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/shiny.gbapal.lz"); const u32 gMonShinyPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/shiny.gbapal.lz"); #endif #if P_GEN_7_POKEMON == TRUE @@ -4564,12 +4663,12 @@ const u32 gMonShinyPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/ const u32 gMonShinyPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/shiny.gbapal.lz"); const u32 gMonShinyPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/shiny.gbapal.lz"); const u32 gMonShinyPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/shiny.gbapal.lz"); +const u32 gMonShinyPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/shiny.gbapal.lz"); const u32 gMonShinyPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/shiny.gbapal.lz"); const u32 gMonShinyPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/shiny.gbapal.lz"); const u32 gMonShinyPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/shiny.gbapal.lz"); +const u32 gMonShinyPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/shiny.gbapal.lz"); +const u32 gMonShinyPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/shiny.gbapal.lz"); const u32 gMonShinyPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/shiny.gbapal.lz"); const u32 gMonShinyPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/shiny.gbapal.lz"); const u32 gMonShinyPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/shiny.gbapal.lz"); @@ -4596,12 +4695,12 @@ const u32 gMonShinyPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/ const u32 gMonShinyPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/shiny.gbapal.lz"); const u32 gMonShinyPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/shiny.gbapal.lz"); const u32 gMonShinyPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Minior[] = INCBIN_U32("graphics/pokemon/minior/shiny.gbapal.lz"); +const u32 gMonShinyPalette_SilvallyNormal[] = INCBIN_U32("graphics/pokemon/silvally/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/shiny.gbapal.lz"); const u32 gMonShinyPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/shiny.gbapal.lz"); const u32 gMonShinyPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/shiny.gbapal.lz"); const u32 gMonShinyPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/shiny.gbapal.lz"); const u32 gMonShinyPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/shiny.gbapal.lz"); const u32 gMonShinyPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/shiny.gbapal.lz"); const u32 gMonShinyPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/shiny.gbapal.lz"); @@ -4674,7 +4773,7 @@ const u32 gMonShinyPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/ const u32 gMonShinyPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/shiny.gbapal.lz"); const u32 gMonShinyPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/shiny.gbapal.lz"); const u32 gMonShinyPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/shiny.gbapal.lz"); const u32 gMonShinyPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/shiny.gbapal.lz"); const u32 gMonShinyPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/shiny.gbapal.lz"); const u32 gMonShinyPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/shiny.gbapal.lz"); @@ -4700,9 +4799,9 @@ const u32 gMonShinyPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchi const u32 gMonShinyPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/shiny.gbapal.lz"); const u32 gMonShinyPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/shiny.gbapal.lz"); const u32 gMonShinyPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/shiny.gbapal.lz"); +const u32 gMonShinyPalette_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/shiny.gbapal.lz"); +const u32 gMonShinyPalette_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/shiny.gbapal.lz"); const u32 gMonShinyPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/shiny.gbapal.lz"); const u32 gMonShinyPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/shiny.gbapal.lz"); const u32 gMonShinyPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/shiny.gbapal.lz"); @@ -4713,11 +4812,11 @@ const u32 gMonShinyPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/ const u32 gMonShinyPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/shiny.gbapal.lz"); const u32 gMonShinyPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/shiny.gbapal.lz"); const u32 gMonShinyPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/shiny.gbapal.lz"); const u32 gMonShinyPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/shiny.gbapal.lz"); const u32 gMonShinyPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/shiny.gbapal.lz"); +const u32 gMonShinyPalette_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/shiny.gbapal.lz"); const u32 gMonShinyPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/shiny.gbapal.lz"); const u32 gMonShinyPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/shiny.gbapal.lz"); const u32 gMonShinyPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/shiny.gbapal.lz"); @@ -4727,10 +4826,10 @@ const u32 gMonShinyPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/shin const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); const u32 gMonShinyPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); +const u32 gMonShinyPalette_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); const u32 gMonShinyPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/shiny.gbapal.lz"); const u32 gMonShinyPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); +const u32 gMonShinyPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); #endif const u32 gMonShinyPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/shiny.gbapal.lz"); const u32 gMonShinyPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/shiny.gbapal.lz"); @@ -4823,7 +4922,7 @@ const u32 gMonShinyPalette_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zi const u32 gMonShinyPalette_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/shiny.gbapal.lz"); #if P_GEN_5_POKEMON == TRUE const u32 gMonShinyPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/shiny.gbapal.lz"); const u32 gMonShinyPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/shiny.gbapal.lz"); const u32 gMonShinyPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/shiny.gbapal.lz"); #endif @@ -4909,7 +5008,7 @@ const u32 gMonShinyPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/f const u32 gMonShinyPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/shiny.gbapal.lz"); const u32 gMonShinyPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/shiny.gbapal.lz"); const u32 gMonShinyPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/shiny.gbapal.lz"); const u32 gMonShinyPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/shiny.gbapal.lz"); const u32 gMonShinyPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/shiny.gbapal.lz"); const u32 gMonShinyPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/shiny.gbapal.lz"); @@ -5033,6 +5132,39 @@ const u32 gMonShinyPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/caly const u32 gMonShinyPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/shiny.gbapal.lz"); const u32 gMonShinyPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/shiny.gbapal.lz"); const u32 gMonShinyPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/shiny.gbapal.lz"); +const u32 gMonShinyPalette_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_UrshifuSingleStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.gbapal.lz"); +const u32 gMonShinyPalette_UrshifuRapidStrikeGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.gbapal.lz"); #endif const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/icon.4bpp"); @@ -5386,7 +5518,7 @@ const u8 gMonIcon_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/icon.4bpp"); const u8 gMonIcon_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/icon.4bpp"); const u8 gMonIcon_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/icon.4bpp"); const u8 gMonIcon_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/icon.4bpp"); -const u8 gMonIcon_Castform[] = INCBIN_U8("graphics/pokemon/castform/icon.4bpp"); +const u8 gMonIcon_CastformNormal[] = INCBIN_U8("graphics/pokemon/castform/icon.4bpp"); const u8 gMonIcon_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/icon.4bpp"); const u8 gMonIcon_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/icon.4bpp"); const u8 gMonIcon_Banette[] = INCBIN_U8("graphics/pokemon/banette/icon.4bpp"); @@ -5421,7 +5553,7 @@ const u8 gMonIcon_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/icon.4bpp"); const u8 gMonIcon_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/icon.4bpp"); const u8 gMonIcon_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/icon.4bpp"); const u8 gMonIcon_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/icon.4bpp"); -const u8 gMonIcon_Deoxys[] = INCBIN_U8("graphics/pokemon/deoxys/icon.4bpp"); +const u8 gMonIcon_DeoxysNormal[] = INCBIN_U8("graphics/pokemon/deoxys/icon.4bpp"); #if P_GEN_4_POKEMON == TRUE const u8 gMonIcon_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/icon.4bpp"); const u8 gMonIcon_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/icon.4bpp"); @@ -5448,8 +5580,8 @@ const u8 gMonIcon_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/icon.4bpp"); const u8 gMonIcon_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/icon.4bpp"); const u8 gMonIcon_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/icon.4bpp"); const u8 gMonIcon_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/icon.4bpp"); -const u8 gMonIcon_Burmy[] = INCBIN_U8("graphics/pokemon/burmy/icon.4bpp"); -const u8 gMonIcon_Wormadam[] = INCBIN_U8("graphics/pokemon/wormadam/icon.4bpp"); +const u8 gMonIcon_BurmyPlantCloak[] = INCBIN_U8("graphics/pokemon/burmy/icon.4bpp"); +const u8 gMonIcon_WormadamPlantCloak[] = INCBIN_U8("graphics/pokemon/wormadam/icon.4bpp"); const u8 gMonIcon_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/icon.4bpp"); const u8 gMonIcon_Combee[] = INCBIN_U8("graphics/pokemon/combee/icon.4bpp"); const u8 gMonIcon_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/icon.4bpp"); @@ -5457,9 +5589,9 @@ const u8 gMonIcon_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/icon.4bpp" const u8 gMonIcon_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/icon.4bpp"); const u8 gMonIcon_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/icon.4bpp"); const u8 gMonIcon_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/icon.4bpp"); -const u8 gMonIcon_Cherrim[] = INCBIN_U8("graphics/pokemon/cherrim/icon.4bpp"); -const u8 gMonIcon_Shellos[] = INCBIN_U8("graphics/pokemon/shellos/icon.4bpp"); -const u8 gMonIcon_Gastrodon[] = INCBIN_U8("graphics/pokemon/gastrodon/icon.4bpp"); +const u8 gMonIcon_CherrimOvercast[] = INCBIN_U8("graphics/pokemon/cherrim/icon.4bpp"); +const u8 gMonIcon_ShellosWestSea[] = INCBIN_U8("graphics/pokemon/shellos/icon.4bpp"); +const u8 gMonIcon_GastrodonWestSea[] = INCBIN_U8("graphics/pokemon/gastrodon/icon.4bpp"); const u8 gMonIcon_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/icon.4bpp"); const u8 gMonIcon_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/icon.4bpp"); const u8 gMonIcon_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/icon.4bpp"); @@ -5527,12 +5659,12 @@ const u8 gMonIcon_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/icon.4bpp"); const u8 gMonIcon_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/icon.4bpp"); const u8 gMonIcon_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/icon.4bpp"); const u8 gMonIcon_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/icon.4bpp"); -const u8 gMonIcon_Giratina[] = INCBIN_U8("graphics/pokemon/giratina/icon.4bpp"); +const u8 gMonIcon_GiratinaAltered[] = INCBIN_U8("graphics/pokemon/giratina/icon.4bpp"); const u8 gMonIcon_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/icon.4bpp"); const u8 gMonIcon_Phione[] = INCBIN_U8("graphics/pokemon/phione/icon.4bpp"); const u8 gMonIcon_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/icon.4bpp"); const u8 gMonIcon_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/icon.4bpp"); -const u8 gMonIcon_Shaymin[] = INCBIN_U8("graphics/pokemon/shaymin/icon.4bpp"); +const u8 gMonIcon_ShayminLand[] = INCBIN_U8("graphics/pokemon/shaymin/icon.4bpp"); const u8 gMonIcon_Arceus[] = INCBIN_U8("graphics/pokemon/arceus/icon.4bpp"); #endif #if P_GEN_5_POKEMON == TRUE @@ -5593,12 +5725,12 @@ const u8 gMonIcon_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/icon.4bpp"); const u8 gMonIcon_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/icon.4bpp"); const u8 gMonIcon_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/icon.4bpp"); const u8 gMonIcon_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/icon.4bpp"); -const u8 gMonIcon_Basculin[] = INCBIN_U8("graphics/pokemon/basculin/icon.4bpp"); +const u8 gMonIcon_BasculinRedStriped[] = INCBIN_U8("graphics/pokemon/basculin/icon.4bpp"); const u8 gMonIcon_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/icon.4bpp"); const u8 gMonIcon_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/icon.4bpp"); const u8 gMonIcon_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/icon.4bpp"); const u8 gMonIcon_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/icon.4bpp"); -const u8 gMonIcon_Darmanitan[] = INCBIN_U8("graphics/pokemon/darmanitan/icon.4bpp"); +const u8 gMonIcon_DarmanitanStandardMode[] = INCBIN_U8("graphics/pokemon/darmanitan/icon.4bpp"); const u8 gMonIcon_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/icon.4bpp"); const u8 gMonIcon_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/icon.4bpp"); const u8 gMonIcon_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/icon.4bpp"); @@ -5628,8 +5760,8 @@ const u8 gMonIcon_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/icon.4bpp"); const u8 gMonIcon_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/icon.4bpp"); const u8 gMonIcon_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/icon.4bpp"); const u8 gMonIcon_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/icon.4bpp"); -const u8 gMonIcon_Deerling[] = INCBIN_U8("graphics/pokemon/deerling/icon.4bpp"); -const u8 gMonIcon_Sawsbuck[] = INCBIN_U8("graphics/pokemon/sawsbuck/icon.4bpp"); +const u8 gMonIcon_DeerlingSpring[] = INCBIN_U8("graphics/pokemon/deerling/icon.4bpp"); +const u8 gMonIcon_SawsbuckSpring[] = INCBIN_U8("graphics/pokemon/sawsbuck/icon.4bpp"); const u8 gMonIcon_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/icon.4bpp"); const u8 gMonIcon_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/icon.4bpp"); const u8 gMonIcon_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/icon.4bpp"); @@ -5686,14 +5818,14 @@ const u8 gMonIcon_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/icon.4bpp" const u8 gMonIcon_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/icon.4bpp"); const u8 gMonIcon_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/icon.4bpp"); const u8 gMonIcon_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/icon.4bpp"); -const u8 gMonIcon_Tornadus[] = INCBIN_U8("graphics/pokemon/tornadus/icon.4bpp"); -const u8 gMonIcon_Thundurus[] = INCBIN_U8("graphics/pokemon/thundurus/icon.4bpp"); +const u8 gMonIcon_TornadusIncarnate[] = INCBIN_U8("graphics/pokemon/tornadus/icon.4bpp"); +const u8 gMonIcon_ThundurusIncarnate[] = INCBIN_U8("graphics/pokemon/thundurus/icon.4bpp"); const u8 gMonIcon_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/icon.4bpp"); const u8 gMonIcon_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/icon.4bpp"); -const u8 gMonIcon_Landorus[] = INCBIN_U8("graphics/pokemon/landorus/icon.4bpp"); +const u8 gMonIcon_LandorusIncarnate[] = INCBIN_U8("graphics/pokemon/landorus/icon.4bpp"); const u8 gMonIcon_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/icon.4bpp"); -const u8 gMonIcon_Keldeo[] = INCBIN_U8("graphics/pokemon/keldeo/icon.4bpp"); -const u8 gMonIcon_Meloetta[] = INCBIN_U8("graphics/pokemon/meloetta/icon.4bpp"); +const u8 gMonIcon_KeldeoOrdinary[] = INCBIN_U8("graphics/pokemon/keldeo/icon.4bpp"); +const u8 gMonIcon_MeloettaAria[] = INCBIN_U8("graphics/pokemon/meloetta/icon.4bpp"); const u8 gMonIcon_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/icon.4bpp"); #endif #if P_GEN_6_POKEMON == TRUE @@ -5713,23 +5845,23 @@ const u8 gMonIcon_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/icon.4 const u8 gMonIcon_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/icon.4bpp"); const u8 gMonIcon_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/icon.4bpp"); const u8 gMonIcon_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/icon.4bpp"); -const u8 gMonIcon_Vivillon[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); +const u8 gMonIcon_VivillonIcySnow[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); const u8 gMonIcon_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/icon.4bpp"); const u8 gMonIcon_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/icon.4bpp"); const u8 gMonIcon_PyroarF[] = INCBIN_U8("graphics/pokemon/pyroar/iconf.4bpp"); -const u8 gMonIcon_Flabebe[] = INCBIN_U8("graphics/pokemon/flabebe/icon.4bpp"); -const u8 gMonIcon_Floette[] = INCBIN_U8("graphics/pokemon/floette/icon.4bpp"); -const u8 gMonIcon_Florges[] = INCBIN_U8("graphics/pokemon/florges/icon.4bpp"); +const u8 gMonIcon_FlabebeRedFlower[] = INCBIN_U8("graphics/pokemon/flabebe/icon.4bpp"); +const u8 gMonIcon_FloetteRedFlower[] = INCBIN_U8("graphics/pokemon/floette/icon.4bpp"); +const u8 gMonIcon_FlorgesRedFlower[] = INCBIN_U8("graphics/pokemon/florges/icon.4bpp"); const u8 gMonIcon_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/icon.4bpp"); const u8 gMonIcon_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/icon.4bpp"); const u8 gMonIcon_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/icon.4bpp"); const u8 gMonIcon_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/icon.4bpp"); -const u8 gMonIcon_Furfrou[] = INCBIN_U8("graphics/pokemon/furfrou/icon.4bpp"); +const u8 gMonIcon_FurfrouNatural[] = INCBIN_U8("graphics/pokemon/furfrou/icon.4bpp"); const u8 gMonIcon_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/icon.4bpp"); -const u8 gMonIcon_Meowstic[] = INCBIN_U8("graphics/pokemon/meowstic/icon.4bpp"); +const u8 gMonIcon_MeowsticMale[] = INCBIN_U8("graphics/pokemon/meowstic/icon.4bpp"); const u8 gMonIcon_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/icon.4bpp"); const u8 gMonIcon_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/icon.4bpp"); -const u8 gMonIcon_Aegislash[] = INCBIN_U8("graphics/pokemon/aegislash/icon.4bpp"); +const u8 gMonIcon_AegislashShield[] = INCBIN_U8("graphics/pokemon/aegislash/icon.4bpp"); const u8 gMonIcon_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/icon.4bpp"); const u8 gMonIcon_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/icon.4bpp"); const u8 gMonIcon_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/icon.4bpp"); @@ -5764,11 +5896,11 @@ const u8 gMonIcon_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/icon.4bpp"); const u8 gMonIcon_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/icon.4bpp"); const u8 gMonIcon_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/icon.4bpp"); const u8 gMonIcon_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/icon.4bpp"); -const u8 gMonIcon_Xerneas[] = INCBIN_U8("graphics/pokemon/xerneas/icon.4bpp"); +const u8 gMonIcon_XerneasNeutral[] = INCBIN_U8("graphics/pokemon/xerneas/icon.4bpp"); const u8 gMonIcon_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/icon.4bpp"); -const u8 gMonIcon_Zygarde[] = INCBIN_U8("graphics/pokemon/zygarde/icon.4bpp"); +const u8 gMonIcon_Zygarde50[] = INCBIN_U8("graphics/pokemon/zygarde/icon.4bpp"); const u8 gMonIcon_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/icon.4bpp"); -const u8 gMonIcon_Hoopa[] = INCBIN_U8("graphics/pokemon/hoopa/icon.4bpp"); +const u8 gMonIcon_HoopaConfined[] = INCBIN_U8("graphics/pokemon/hoopa/icon.4bpp"); const u8 gMonIcon_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/icon.4bpp"); #endif #if P_GEN_7_POKEMON == TRUE @@ -5791,12 +5923,12 @@ const u8 gMonIcon_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/icon.4bpp" const u8 gMonIcon_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/icon.4bpp"); const u8 gMonIcon_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/icon.4bpp"); const u8 gMonIcon_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/icon.4bpp"); -const u8 gMonIcon_Oricorio[] = INCBIN_U8("graphics/pokemon/oricorio/icon.4bpp"); +const u8 gMonIcon_OricorioBaile[] = INCBIN_U8("graphics/pokemon/oricorio/icon.4bpp"); const u8 gMonIcon_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/icon.4bpp"); const u8 gMonIcon_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/icon.4bpp"); const u8 gMonIcon_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/icon.4bpp"); -const u8 gMonIcon_Lycanroc[] = INCBIN_U8("graphics/pokemon/lycanroc/icon.4bpp"); -const u8 gMonIcon_Wishiwashi[] = INCBIN_U8("graphics/pokemon/wishiwashi/icon.4bpp"); +const u8 gMonIcon_LycanrocMidday[] = INCBIN_U8("graphics/pokemon/lycanroc/icon.4bpp"); +const u8 gMonIcon_WishiwashiSolo[] = INCBIN_U8("graphics/pokemon/wishiwashi/icon.4bpp"); const u8 gMonIcon_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/icon.4bpp"); const u8 gMonIcon_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/icon.4bpp"); const u8 gMonIcon_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/icon.4bpp"); @@ -5824,11 +5956,11 @@ const u8 gMonIcon_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/icon.4bpp" const u8 gMonIcon_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/icon.4bpp"); const u8 gMonIcon_TypeNull[] = INCBIN_U8("graphics/pokemon/type_null/icon.4bpp"); const u8 gMonIcon_Silvally[] = INCBIN_U8("graphics/pokemon/silvally/icon.4bpp"); -const u8 gMonIcon_Minior[] = INCBIN_U8("graphics/pokemon/minior/icon.4bpp"); +const u8 gMonIcon_MiniorMeteor[] = INCBIN_U8("graphics/pokemon/minior/icon.4bpp"); const u8 gMonIcon_Komala[] = INCBIN_U8("graphics/pokemon/komala/icon.4bpp"); const u8 gMonIcon_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/icon.4bpp"); const u8 gMonIcon_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/icon.4bpp"); -const u8 gMonIcon_Mimikyu[] = INCBIN_U8("graphics/pokemon/mimikyu/icon.4bpp"); +const u8 gMonIcon_MimikyuDisguised[] = INCBIN_U8("graphics/pokemon/mimikyu/icon.4bpp"); const u8 gMonIcon_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/icon.4bpp"); const u8 gMonIcon_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/icon.4bpp"); const u8 gMonIcon_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/icon.4bpp"); @@ -5901,7 +6033,7 @@ const u8 gMonIcon_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/icon.4bpp" const u8 gMonIcon_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/icon.4bpp"); const u8 gMonIcon_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/icon.4bpp"); const u8 gMonIcon_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/icon.4bpp"); -const u8 gMonIcon_Toxtricity[] = INCBIN_U8("graphics/pokemon/toxtricity/icon.4bpp"); +const u8 gMonIcon_ToxtricityAmped[] = INCBIN_U8("graphics/pokemon/toxtricity/icon.4bpp"); const u8 gMonIcon_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/icon.4bpp"); const u8 gMonIcon_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/icon.4bpp"); const u8 gMonIcon_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/icon.4bpp"); @@ -5927,9 +6059,9 @@ const u8 gMonIcon_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/icon.4bp const u8 gMonIcon_Snom[] = INCBIN_U8("graphics/pokemon/snom/icon.4bpp"); const u8 gMonIcon_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/icon.4bpp"); const u8 gMonIcon_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/icon.4bpp"); -const u8 gMonIcon_Eiscue[] = INCBIN_U8("graphics/pokemon/eiscue/icon.4bpp"); -const u8 gMonIcon_Indeedee[] = INCBIN_U8("graphics/pokemon/indeedee/icon.4bpp"); -const u8 gMonIcon_Morpeko[] = INCBIN_U8("graphics/pokemon/morpeko/icon.4bpp"); +const u8 gMonIcon_EiscueIceFace[] = INCBIN_U8("graphics/pokemon/eiscue/icon.4bpp"); +const u8 gMonIcon_IndeedeeMale[] = INCBIN_U8("graphics/pokemon/indeedee/icon.4bpp"); +const u8 gMonIcon_MorpekoFullBelly[] = INCBIN_U8("graphics/pokemon/morpeko/icon.4bpp"); const u8 gMonIcon_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/icon.4bpp"); const u8 gMonIcon_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/icon.4bpp"); const u8 gMonIcon_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/icon.4bpp"); @@ -5940,11 +6072,11 @@ const u8 gMonIcon_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/icon.4bpp" const u8 gMonIcon_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/icon.4bpp"); const u8 gMonIcon_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/icon.4bpp"); const u8 gMonIcon_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/icon.4bpp"); -const u8 gMonIcon_Zacian[] = INCBIN_U8("graphics/pokemon/zacian/icon.4bpp"); -const u8 gMonIcon_Zamazenta[] = INCBIN_U8("graphics/pokemon/zamazenta/icon.4bpp"); +const u8 gMonIcon_ZacianHeroOfManyBattles[] = INCBIN_U8("graphics/pokemon/zacian/icon.4bpp"); +const u8 gMonIcon_ZamazentaHeroOfManyBattles[] = INCBIN_U8("graphics/pokemon/zamazenta/icon.4bpp"); const u8 gMonIcon_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/icon.4bpp"); const u8 gMonIcon_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/icon.4bpp"); -const u8 gMonIcon_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/icon.4bpp"); +const u8 gMonIcon_UrshifuSingleStrikeStyle[] = INCBIN_U8("graphics/pokemon/urshifu/icon.4bpp"); const u8 gMonIcon_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/icon.4bpp"); const u8 gMonIcon_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/icon.4bpp"); const u8 gMonIcon_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/icon.4bpp"); @@ -5954,10 +6086,10 @@ const u8 gMonIcon_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/icon.4bpp"); const u8 gMonIcon_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/icon.4bpp"); const u8 gMonIcon_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/icon.4bpp"); const u8 gMonIcon_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/icon.4bpp"); -const u8 gMonIcon_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); +const u8 gMonIcon_BasculegionMale[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); const u8 gMonIcon_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/icon.4bpp"); const u8 gMonIcon_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/icon.4bpp"); -const u8 gMonIcon_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); +const u8 gMonIcon_EnamorusIncarnate[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); #endif const u8 gMonIcon_VenusaurMega[] = INCBIN_U8("graphics/pokemon/venusaur/mega/icon.4bpp"); const u8 gMonIcon_CharizardMegaX[] = INCBIN_U8("graphics/pokemon/charizard/mega_x/icon.4bpp"); @@ -6050,7 +6182,7 @@ const u8 gMonIcon_ZigzagoonGalarian[] = INCBIN_U8("graphics/pokemon/zigzagoon/ga const u8 gMonIcon_LinooneGalarian[] = INCBIN_U8("graphics/pokemon/linoone/galarian/icon.4bpp"); #if P_GEN_5_POKEMON == TRUE const u8 gMonIcon_DarumakaGalarian[] = INCBIN_U8("graphics/pokemon/darumaka/galarian/icon.4bpp"); -const u8 gMonIcon_DarmanitanGalarian[] = INCBIN_U8("graphics/pokemon/darmanitan/galarian/icon.4bpp"); +const u8 gMonIcon_DarmanitanGalarianStandardMode[] = INCBIN_U8("graphics/pokemon/darmanitan/galarian/icon.4bpp"); const u8 gMonIcon_YamaskGalarian[] = INCBIN_U8("graphics/pokemon/yamask/galarian/icon.4bpp"); const u8 gMonIcon_StunfiskGalarian[] = INCBIN_U8("graphics/pokemon/stunfisk/galarian/icon.4bpp"); #endif @@ -6146,7 +6278,7 @@ const u8 gMonIcon_ShayminSky[] = INCBIN_U8("graphics/pokemon/shaymin/sky/icon.4b const u8 gMonIcon_BasculinBlueStriped[] = INCBIN_U8("graphics/pokemon/basculin/blue_striped/icon.4bpp"); const u8 gMonIcon_BasculinWhiteStriped[] = INCBIN_U8("graphics/pokemon/basculin/white_striped/icon.4bpp"); const u8 gMonIcon_DarmanitanZenMode[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/icon.4bpp"); -const u8 gMonIcon_DarmanitanZenModeGalarian[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/galarian/icon.4bpp"); +const u8 gMonIcon_DarmanitanGalarianZenMode[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/galarian/icon.4bpp"); const u8 gMonIcon_DeerlingSummer[] = INCBIN_U8("graphics/pokemon/deerling/summer/icon.4bpp"); const u8 gMonIcon_DeerlingAutumn[] = INCBIN_U8("graphics/pokemon/deerling/autumn/icon.4bpp"); const u8 gMonIcon_DeerlingWinter[] = INCBIN_U8("graphics/pokemon/deerling/winter/icon.4bpp"); @@ -6235,14 +6367,14 @@ const u8 gMonIcon_MagearnaOriginalColor[] = INCBIN_U8("graphics/pokemon/magearna const u8 gMonIcon_CramorantGulping[] = INCBIN_U8("graphics/pokemon/cramorant/gulping/icon.4bpp"); const u8 gMonIcon_CramorantGorging[] = INCBIN_U8("graphics/pokemon/cramorant/gorging/icon.4bpp"); const u8 gMonIcon_ToxtricityLowKey[] = INCBIN_U8("graphics/pokemon/toxtricity/low_key/icon.4bpp"); -//const u8 gMonIcon_AlcremieRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieMatchaCream[] = INCBIN_U8("graphics/pokemon/alcremie/matcha_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieMintCream[] = INCBIN_U8("graphics/pokemon/alcremie/mint_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieLemonCream[] = INCBIN_U8("graphics/pokemon/alcremie/lemon_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieSaltedCream[] = INCBIN_U8("graphics/pokemon/alcremie/salted_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieRubySwirl[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_swirl/icon.4bpp"); -//const u8 gMonIcon_AlcremieCaramelSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/caramel_swirl/icon.4bpp"); -//const u8 gMonIcon_AlcremieRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryMatchaCream[] = INCBIN_U8("graphics/pokemon/alcremie/matcha_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryMintCream[] = INCBIN_U8("graphics/pokemon/alcremie/mint_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryLemonCream[] = INCBIN_U8("graphics/pokemon/alcremie/lemon_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberrySaltedCream[] = INCBIN_U8("graphics/pokemon/alcremie/salted_cream/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRubySwirl[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_swirl/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/caramel_swirl/icon.4bpp"); +//const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); const u8 gMonIcon_EiscueNoiceFace[] = INCBIN_U8("graphics/pokemon/eiscue/noice_face/icon.4bpp"); const u8 gMonIcon_IndeedeeFemale[] = INCBIN_U8("graphics/pokemon/indeedee/female/icon.4bpp"); const u8 gMonIcon_MorpekoHangry[] = INCBIN_U8("graphics/pokemon/morpeko/hangry/icon.4bpp"); @@ -6254,6 +6386,39 @@ const u8 gMonIcon_CalyrexIceRider[] = INCBIN_U8("graphics/pokemon/calyrex/ice_ri const u8 gMonIcon_CalyrexShadowRider[] = INCBIN_U8("graphics/pokemon/calyrex/shadow_rider/icon.4bpp"); const u8 gMonIcon_EnamorusTherian[] = INCBIN_U8("graphics/pokemon/enamorus/therian/icon.4bpp"); const u8 gMonIcon_BasculegionFemale[] = INCBIN_U8("graphics/pokemon/basculegion/female/icon.4bpp"); +const u8 gMonIcon_VenusaurGigantamax[] = INCBIN_U8("graphics/pokemon/venusaur/gigantamax/icon.4bpp"); +const u8 gMonIcon_CharizardGigantamax[] = INCBIN_U8("graphics/pokemon/charizard/gigantamax/icon.4bpp"); +const u8 gMonIcon_BlastoiseGigantamax[] = INCBIN_U8("graphics/pokemon/blastoise/gigantamax/icon.4bpp"); +const u8 gMonIcon_ButterfreeGigantamax[] = INCBIN_U8("graphics/pokemon/butterfree/gigantamax/icon.4bpp"); +const u8 gMonIcon_PikachuGigantamax[] = INCBIN_U8("graphics/pokemon/pikachu/gigantamax/icon.4bpp"); +const u8 gMonIcon_MeowthGigantamax[] = INCBIN_U8("graphics/pokemon/meowth/gigantamax/icon.4bpp"); +const u8 gMonIcon_MachampGigantamax[] = INCBIN_U8("graphics/pokemon/machamp/gigantamax/icon.4bpp"); +const u8 gMonIcon_GengarGigantamax[] = INCBIN_U8("graphics/pokemon/gengar/gigantamax/icon.4bpp"); +const u8 gMonIcon_KinglerGigantamax[] = INCBIN_U8("graphics/pokemon/kingler/gigantamax/icon.4bpp"); +const u8 gMonIcon_LaprasGigantamax[] = INCBIN_U8("graphics/pokemon/lapras/gigantamax/icon.4bpp"); +const u8 gMonIcon_EeveeGigantamax[] = INCBIN_U8("graphics/pokemon/eevee/gigantamax/icon.4bpp"); +const u8 gMonIcon_SnorlaxGigantamax[] = INCBIN_U8("graphics/pokemon/snorlax/gigantamax/icon.4bpp"); +const u8 gMonIcon_GarbodorGigantamax[] = INCBIN_U8("graphics/pokemon/garbodor/gigantamax/icon.4bpp"); +const u8 gMonIcon_MelmetalGigantamax[] = INCBIN_U8("graphics/pokemon/melmetal/gigantamax/icon.4bpp"); +const u8 gMonIcon_RillaboomGigantamax[] = INCBIN_U8("graphics/pokemon/rillaboom/gigantamax/icon.4bpp"); +const u8 gMonIcon_CinderaceGigantamax[] = INCBIN_U8("graphics/pokemon/cinderace/gigantamax/icon.4bpp"); +const u8 gMonIcon_InteleonGigantamax[] = INCBIN_U8("graphics/pokemon/inteleon/gigantamax/icon.4bpp"); +const u8 gMonIcon_CorviknightGigantamax[] = INCBIN_U8("graphics/pokemon/corviknight/gigantamax/icon.4bpp"); +const u8 gMonIcon_OrbeetleGigantamax[] = INCBIN_U8("graphics/pokemon/orbeetle/gigantamax/icon.4bpp"); +const u8 gMonIcon_DrednawGigantamax[] = INCBIN_U8("graphics/pokemon/drednaw/gigantamax/icon.4bpp"); +const u8 gMonIcon_CoalossalGigantamax[] = INCBIN_U8("graphics/pokemon/coalossal/gigantamax/icon.4bpp"); +const u8 gMonIcon_FlappleGigantamax[] = INCBIN_U8("graphics/pokemon/flapple/gigantamax/icon.4bpp"); +const u8 gMonIcon_AppletunGigantamax[] = INCBIN_U8("graphics/pokemon/appletun/gigantamax/icon.4bpp"); +const u8 gMonIcon_SandacondaGigantamax[] = INCBIN_U8("graphics/pokemon/sandaconda/gigantamax/icon.4bpp"); +const u8 gMonIcon_ToxtricityGigantamax[] = INCBIN_U8("graphics/pokemon/toxtricity/gigantamax/icon.4bpp"); +const u8 gMonIcon_CentiskorchGigantamax[] = INCBIN_U8("graphics/pokemon/centiskorch/gigantamax/icon.4bpp"); +const u8 gMonIcon_HattereneGigantamax[] = INCBIN_U8("graphics/pokemon/hatterene/gigantamax/icon.4bpp"); +const u8 gMonIcon_GrimmsnarlGigantamax[] = INCBIN_U8("graphics/pokemon/grimmsnarl/gigantamax/icon.4bpp"); +const u8 gMonIcon_AlcremieGigantamax[] = INCBIN_U8("graphics/pokemon/alcremie/gigantamax/icon.4bpp"); +const u8 gMonIcon_CopperajahGigantamax[] = INCBIN_U8("graphics/pokemon/copperajah/gigantamax/icon.4bpp"); +const u8 gMonIcon_DuraludonGigantamax[] = INCBIN_U8("graphics/pokemon/duraludon/gigantamax/icon.4bpp"); +const u8 gMonIcon_UrshifuSingleStrikeGigantamax[] = INCBIN_U8("graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.4bpp"); +const u8 gMonIcon_UrshifuRapidStrikeGigantamax[] = INCBIN_U8("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.4bpp"); #endif const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp"); diff --git a/src/data/items.h b/src/data/items.h index a3bd7e3f39..1532a71983 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -6041,8 +6041,8 @@ const struct Item gItems[] = .holdEffectParam = 10, .description = sRazorFangDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .type = EVO_HELD_ITEM_TYPE, + .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .flingPower = 30, }, diff --git a/src/data/pokemon/egg_moves.h b/src/data/pokemon/egg_moves.h index b6cc938b70..1a71800e3a 100644 --- a/src/data/pokemon/egg_moves.h +++ b/src/data/pokemon/egg_moves.h @@ -2579,7 +2579,7 @@ const u16 gEggMoves[] = { MOVE_FLOWER_SHIELD, MOVE_GRASSY_TERRAIN), - egg_moves(SHELLOS, + egg_moves(SHELLOS_WEST_SEA, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_STOCKPILE, @@ -3865,7 +3865,7 @@ const u16 gEggMoves[] = { MOVE_ENDEAVOR, MOVE_AMNESIA), - egg_moves(ORICORIO, + egg_moves(ORICORIO_BAILE, MOVE_PLUCK, MOVE_TAILWIND, MOVE_SAFEGUARD, diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h index b26f577257..8b3bc8023c 100644 --- a/src/data/pokemon/evolution.h +++ b/src/data/pokemon/evolution.h @@ -296,12 +296,12 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_BUDEW] = {{EVO_FRIENDSHIP_DAY, 0, SPECIES_ROSELIA}}, [SPECIES_CRANIDOS] = {{EVO_LEVEL, 30, SPECIES_RAMPARDOS}}, [SPECIES_SHIELDON] = {{EVO_LEVEL, 30, SPECIES_BASTIODON}}, - [SPECIES_BURMY] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM}, + [SPECIES_BURMY_PLANT_CLOAK] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_PLANT_CLOAK}, {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}}, [SPECIES_COMBEE] = {{EVO_LEVEL_FEMALE, 21, SPECIES_VESPIQUEN}}, [SPECIES_BUIZEL] = {{EVO_LEVEL, 26, SPECIES_FLOATZEL}}, - [SPECIES_CHERUBI] = {{EVO_LEVEL, 25, SPECIES_CHERRIM}}, - [SPECIES_SHELLOS] = {{EVO_LEVEL, 30, SPECIES_GASTRODON}}, + [SPECIES_CHERUBI] = {{EVO_LEVEL, 25, SPECIES_CHERRIM_OVERCAST}}, + [SPECIES_SHELLOS_WEST_SEA] = {{EVO_LEVEL, 30, SPECIES_GASTRODON_WEST_SEA}}, [SPECIES_DRIFLOON] = {{EVO_LEVEL, 28, SPECIES_DRIFBLIM}}, [SPECIES_BUNEARY] = {{EVO_FRIENDSHIP, 0, SPECIES_LOPUNNY}}, [SPECIES_GLAMEOW] = {{EVO_LEVEL, 38, SPECIES_PURUGLY}}, @@ -362,7 +362,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_NONE, 0, SPECIES_LILLIGANT_HISUIAN}}, [SPECIES_SANDILE] = {{EVO_LEVEL, 29, SPECIES_KROKOROK}}, [SPECIES_KROKOROK] = {{EVO_LEVEL, 40, SPECIES_KROOKODILE}}, - [SPECIES_DARUMAKA] = {{EVO_LEVEL, 35, SPECIES_DARMANITAN}}, + [SPECIES_DARUMAKA] = {{EVO_LEVEL, 35, SPECIES_DARMANITAN_STANDARD_MODE}}, [SPECIES_DWEBBLE] = {{EVO_LEVEL, 34, SPECIES_CRUSTLE}}, [SPECIES_SCRAGGY] = {{EVO_LEVEL, 39, SPECIES_SCRAFTY}}, [SPECIES_YAMASK] = {{EVO_LEVEL, 34, SPECIES_COFAGRIGUS}}, @@ -379,7 +379,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_DUCKLETT] = {{EVO_LEVEL, 35, SPECIES_SWANNA}}, [SPECIES_VANILLITE] = {{EVO_LEVEL, 35, SPECIES_VANILLISH}}, [SPECIES_VANILLISH] = {{EVO_LEVEL, 47, SPECIES_VANILLUXE}}, - [SPECIES_DEERLING] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK}}, + [SPECIES_DEERLING_SPRING] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK_SPRING}}, [SPECIES_KARRABLAST] = {{EVO_TRADE_SPECIFIC_MON, SPECIES_SHELMET, SPECIES_ESCAVALIER}}, [SPECIES_FOONGUS] = {{EVO_LEVEL, 39, SPECIES_AMOONGUSS}}, [SPECIES_FRILLISH] = {{EVO_LEVEL, 40, SPECIES_JELLICENT}}, @@ -417,16 +417,16 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_FLETCHLING] = {{EVO_LEVEL, 17, SPECIES_FLETCHINDER}}, [SPECIES_FLETCHINDER] = {{EVO_LEVEL, 35, SPECIES_TALONFLAME}}, [SPECIES_SCATTERBUG] = {{EVO_LEVEL, 9, SPECIES_SPEWPA}}, - [SPECIES_SPEWPA] = {{EVO_LEVEL, 12, SPECIES_VIVILLON}}, + [SPECIES_SPEWPA] = {{EVO_LEVEL, 12, SPECIES_VIVILLON_ICY_SNOW}}, [SPECIES_LITLEO] = {{EVO_LEVEL, 35, SPECIES_PYROAR}}, - [SPECIES_FLABEBE] = {{EVO_LEVEL, 19, SPECIES_FLOETTE}}, - [SPECIES_FLOETTE] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES}}, + [SPECIES_FLABEBE_RED_FLOWER] = {{EVO_LEVEL, 19, SPECIES_FLOETTE_RED_FLOWER}}, + [SPECIES_FLOETTE_RED_FLOWER] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_RED_FLOWER}}, [SPECIES_SKIDDO] = {{EVO_LEVEL, 32, SPECIES_GOGOAT}}, [SPECIES_PANCHAM] = {{EVO_LEVEL_DARK_TYPE_MON_IN_PARTY, 32, SPECIES_PANGORO}}, - [SPECIES_ESPURR] = {{EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC}, + [SPECIES_ESPURR] = {{EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC_MALE}, {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_FEMALE}}, [SPECIES_HONEDGE] = {{EVO_LEVEL, 35, SPECIES_DOUBLADE}}, - [SPECIES_DOUBLADE] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH}}, + [SPECIES_DOUBLADE] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH_SHIELD}}, [SPECIES_SPRITZEE] = {{EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}, {EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}}, [SPECIES_SWIRLIX] = {{EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}, @@ -446,8 +446,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_LEVEL_FOG, 50, SPECIES_GOODRA_HISUIAN}}, [SPECIES_PHANTUMP] = {{EVO_TRADE, 0, SPECIES_TREVENANT}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_TREVENANT}}, - [SPECIES_PUMPKABOO] = {{EVO_TRADE, 0, SPECIES_GOURGEIST}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST}}, + [SPECIES_PUMPKABOO_AVERAGE] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_AVERAGE}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_AVERAGE}}, [SPECIES_BERGMITE] = {{EVO_LEVEL, 37, SPECIES_AVALUGG}, {EVO_NONE, 0, SPECIES_AVALUGG_HISUIAN}}, [SPECIES_NOIBAT] = {{EVO_LEVEL, 48, SPECIES_NOIVERN}}, @@ -469,7 +469,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_CRABRAWLER] = {{EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_CRABOMINABLE}, {EVO_ITEM, ITEM_ICE_STONE, SPECIES_CRABOMINABLE}}, [SPECIES_CUTIEFLY] = {{EVO_LEVEL, 25, SPECIES_RIBOMBEE}}, - [SPECIES_ROCKRUFF] = {{EVO_LEVEL_DAY, 25, SPECIES_LYCANROC}, + [SPECIES_ROCKRUFF] = {{EVO_LEVEL_DAY, 25, SPECIES_LYCANROC_MIDDAY}, {EVO_LEVEL_NIGHT, 25, SPECIES_LYCANROC_MIDNIGHT}}, [SPECIES_MAREANIE] = {{EVO_LEVEL, 38, SPECIES_TOXAPEX}}, [SPECIES_MUDBRAY] = {{EVO_LEVEL, 30, SPECIES_MUDSDALE}}, @@ -482,7 +482,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_STEENEE] = {{EVO_MOVE, MOVE_STOMP, SPECIES_TSAREENA}}, [SPECIES_WIMPOD] = {{EVO_LEVEL, 30, SPECIES_GOLISOPOD}}, [SPECIES_SANDYGAST] = {{EVO_LEVEL, 42, SPECIES_PALOSSAND}}, - [SPECIES_TYPE_NULL] = {{EVO_FRIENDSHIP, 0, SPECIES_SILVALLY}}, + [SPECIES_TYPE_NULL] = {{EVO_FRIENDSHIP, 0, SPECIES_SILVALLY_NORMAL}}, [SPECIES_JANGMO_O] = {{EVO_LEVEL, 35, SPECIES_HAKAMO_O}}, [SPECIES_HAKAMO_O] = {{EVO_LEVEL, 45, SPECIES_KOMMO_O}}, [SPECIES_COSMOG] = {{EVO_LEVEL, 43, SPECIES_COSMOEM}}, @@ -513,30 +513,30 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = {EVO_ITEM, ITEM_SWEET_APPLE, SPECIES_APPLETUN}}, [SPECIES_SILICOBRA] = {{EVO_LEVEL, 36, SPECIES_SANDACONDA}}, [SPECIES_ARROKUDA] = {{EVO_LEVEL, 26, SPECIES_BARRASKEWDA}}, - [SPECIES_TOXEL] = {{EVO_LEVEL_NATURE_AMPED, 30, SPECIES_TOXTRICITY}, + [SPECIES_TOXEL] = {{EVO_LEVEL_NATURE_AMPED, 30, SPECIES_TOXTRICITY_AMPED}, {EVO_LEVEL_NATURE_LOW_KEY, 30, SPECIES_TOXTRICITY_LOW_KEY}}, [SPECIES_SIZZLIPEDE] = {{EVO_LEVEL, 28, SPECIES_CENTISKORCH}}, [SPECIES_CLOBBOPUS] = {{EVO_MOVE, MOVE_TAUNT, SPECIES_GRAPPLOCT}}, - [SPECIES_SINISTEA] = {{EVO_ITEM, ITEM_CRACKED_POT, SPECIES_POLTEAGEIST}}, + [SPECIES_SINISTEA_PHONY] = {{EVO_ITEM, ITEM_CRACKED_POT, SPECIES_POLTEAGEIST_PHONY}}, [SPECIES_HATENNA] = {{EVO_LEVEL, 32, SPECIES_HATTREM}}, [SPECIES_HATTREM] = {{EVO_LEVEL, 42, SPECIES_HATTERENE}}, [SPECIES_IMPIDIMP] = {{EVO_LEVEL, 32, SPECIES_MORGREM}}, [SPECIES_MORGREM] = {{EVO_LEVEL, 42, SPECIES_GRIMMSNARL}}, - [SPECIES_MILCERY] = {{EVO_LEVEL, 0, SPECIES_ALCREMIE}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_RUBY_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_MATCHA_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_MINT_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_LEMON_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_SALTED_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_RUBY_SWIRL}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_CARAMEL_SWIRL}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_RAINBOW_SWIRL}}, + [SPECIES_MILCERY] = {{EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL}}, [SPECIES_SNOM] = {{EVO_FRIENDSHIP_NIGHT, 0, SPECIES_FROSMOTH}}, [SPECIES_CUFANT] = {{EVO_LEVEL, 34, SPECIES_COPPERAJAH}}, [SPECIES_DREEPY] = {{EVO_LEVEL, 50, SPECIES_DRAKLOAK}}, [SPECIES_DRAKLOAK] = {{EVO_LEVEL, 60, SPECIES_DRAGAPULT}}, - [SPECIES_KUBFU] = {{EVO_DARK_SCROLL, 0, SPECIES_URSHIFU}, - {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU}, + [SPECIES_KUBFU] = {{EVO_DARK_SCROLL, 0, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE}, + {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE}, {EVO_WATER_SCROLL, 0, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}, {EVO_ITEM, ITEM_SCROLL_OF_WATERS, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}}, #endif @@ -561,11 +561,11 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = [SPECIES_CORSOLA_GALARIAN] = {{EVO_LEVEL, 38, SPECIES_CURSOLA}}, [SPECIES_ZIGZAGOON_GALARIAN] = {{EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}}, [SPECIES_LINOONE_GALARIAN] = {{EVO_LEVEL_NIGHT, 35, SPECIES_OBSTAGOON}}, - [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN}}, + [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}}, [SPECIES_YAMASK_GALARIAN] = {{EVO_SCRIPT_TRIGGER_DMG, 49, SPECIES_RUNERIGUS}}, #else [SPECIES_ZIGZAGOON_GALARIAN] = {{EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}}, - [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN}}, + [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}}, #endif #if P_GEN_4_POKEMON == TRUE [SPECIES_BURMY_SANDY_CLOAK] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_SANDY_CLOAK}, diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 9f75ee3e27..bd8f42a3e2 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -2,29 +2,49 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = { [SPECIES_VENUSAUR] = sVenusaurFormChangeTable, [SPECIES_VENUSAUR_MEGA] = sVenusaurFormChangeTable, + [SPECIES_VENUSAUR_GIGANTAMAX] = sVenusaurFormChangeTable, [SPECIES_CHARIZARD] = sCharizardFormChangeTable, [SPECIES_CHARIZARD_MEGA_X] = sCharizardFormChangeTable, [SPECIES_CHARIZARD_MEGA_Y] = sCharizardFormChangeTable, + [SPECIES_CHARIZARD_GIGANTAMAX] = sCharizardFormChangeTable, [SPECIES_BLASTOISE] = sBlastoiseFormChangeTable, [SPECIES_BLASTOISE_MEGA] = sBlastoiseFormChangeTable, + [SPECIES_BLASTOISE_GIGANTAMAX] = sBlastoiseFormChangeTable, + [SPECIES_BUTTERFREE] = sButterfreeFormChangeTable, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sButterfreeFormChangeTable, [SPECIES_BEEDRILL] = sBeedrillFormChangeTable, [SPECIES_BEEDRILL_MEGA] = sBeedrillFormChangeTable, [SPECIES_PIDGEOT] = sPidgeotFormChangeTable, [SPECIES_PIDGEOT_MEGA] = sPidgeotFormChangeTable, + [SPECIES_PIKACHU] = sPikachuFormChangeTable, + [SPECIES_PIKACHU_GIGANTAMAX] = sPikachuFormChangeTable, + [SPECIES_MEOWTH] = sMeowthFormChangeTable, + [SPECIES_MEOWTH_GIGANTAMAX] = sMeowthFormChangeTable, [SPECIES_ALAKAZAM] = sAlakazamFormChangeTable, [SPECIES_ALAKAZAM_MEGA] = sAlakazamFormChangeTable, + [SPECIES_MACHAMP] = sMachampFormChangeTable, + [SPECIES_MACHAMP_GIGANTAMAX] = sMachampFormChangeTable, [SPECIES_SLOWBRO] = sSlowbroFormChangeTable, [SPECIES_SLOWBRO_MEGA] = sSlowbroFormChangeTable, [SPECIES_GENGAR] = sGengarFormChangeTable, [SPECIES_GENGAR_MEGA] = sGengarFormChangeTable, + [SPECIES_GENGAR_GIGANTAMAX] = sGengarFormChangeTable, + [SPECIES_KINGLER] = sKinglerFormChangeTable, + [SPECIES_KINGLER_GIGANTAMAX] = sKinglerFormChangeTable, [SPECIES_KANGASKHAN] = sKangaskhanFormChangeTable, [SPECIES_KANGASKHAN_MEGA] = sKangaskhanFormChangeTable, [SPECIES_PINSIR] = sPinsirFormChangeTable, [SPECIES_PINSIR_MEGA] = sPinsirFormChangeTable, [SPECIES_GYARADOS] = sGyaradosFormChangeTable, [SPECIES_GYARADOS_MEGA] = sGyaradosFormChangeTable, + [SPECIES_LAPRAS] = sLaprasFormChangeTable, + [SPECIES_LAPRAS_GIGANTAMAX] = sLaprasFormChangeTable, + [SPECIES_EEVEE] = sEeveeFormChangeTable, + [SPECIES_EEVEE_GIGANTAMAX] = sEeveeFormChangeTable, [SPECIES_AERODACTYL] = sAerodactylFormChangeTable, [SPECIES_AERODACTYL_MEGA] = sAerodactylFormChangeTable, + [SPECIES_SNORLAX] = sSnorlaxFormChangeTable, + [SPECIES_SNORLAX_GIGANTAMAX] = sSnorlaxFormChangeTable, [SPECIES_MEWTWO] = sMewtwoFormChangeTable, [SPECIES_MEWTWO_MEGA_X] = sMewtwoFormChangeTable, [SPECIES_MEWTWO_MEGA_Y] = sMewtwoFormChangeTable, @@ -64,7 +84,7 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_ALTARIA_MEGA] = sAltariaFormChangeTable, [SPECIES_ABSOL] = sAbsolFormChangeTable, [SPECIES_ABSOL_MEGA] = sAbsolFormChangeTable, - [SPECIES_CASTFORM] = sCastformFormChangeTable, + [SPECIES_CASTFORM_NORMAL] = sCastformFormChangeTable, [SPECIES_CASTFORM_SUNNY] = sCastformFormChangeTable, [SPECIES_CASTFORM_RAINY] = sCastformFormChangeTable, [SPECIES_CASTFORM_SNOWY] = sCastformFormChangeTable, @@ -89,10 +109,10 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_RAYQUAZA] = sRayquazaFormChangeTable, [SPECIES_RAYQUAZA_MEGA] = sRayquazaFormChangeTable, #if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY] = sBurmyFormChangeTable, + [SPECIES_BURMY_PLANT_CLOAK] = sBurmyFormChangeTable, [SPECIES_BURMY_SANDY_CLOAK] = sBurmyFormChangeTable, [SPECIES_BURMY_TRASH_CLOAK] = sBurmyFormChangeTable, - [SPECIES_CHERRIM] = sCherrimFormChangeTable, + [SPECIES_CHERRIM_OVERCAST] = sCherrimFormChangeTable, [SPECIES_CHERRIM_SUNSHINE] = sCherrimFormChangeTable, [SPECIES_LOPUNNY] = sLopunnyFormChangeTable, [SPECIES_LOPUNNY_MEGA] = sLopunnyFormChangeTable, @@ -108,11 +128,11 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_DIALGA_ORIGIN] = sDialgaFormChangeTable, [SPECIES_PALKIA] = sPalkiaFormChangeTable, [SPECIES_PALKIA_ORIGIN] = sPalkiaFormChangeTable, - [SPECIES_GIRATINA] = sGiratinaFormChangeTable, + [SPECIES_GIRATINA_ALTERED] = sGiratinaFormChangeTable, [SPECIES_GIRATINA_ORIGIN] = sGiratinaFormChangeTable, - [SPECIES_SHAYMIN] = sShayminFormChangeTable, + [SPECIES_SHAYMIN_LAND] = sShayminFormChangeTable, [SPECIES_SHAYMIN_SKY] = sShayminFormChangeTable, - [SPECIES_ARCEUS] = sArceusFormChangeTable, + [SPECIES_ARCEUS_NORMAL] = sArceusFormChangeTable, [SPECIES_ARCEUS_FIGHTING] = sArceusFormChangeTable, [SPECIES_ARCEUS_FLYING] = sArceusFormChangeTable, [SPECIES_ARCEUS_POISON] = sArceusFormChangeTable, @@ -134,19 +154,21 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = #if P_GEN_5_POKEMON == TRUE [SPECIES_AUDINO] = sAudinoFormChangeTable, [SPECIES_AUDINO_MEGA] = sAudinoFormChangeTable, - [SPECIES_DARMANITAN] = sDarmanitanFormChangeTable, + [SPECIES_DARMANITAN_STANDARD_MODE] = sDarmanitanFormChangeTable, [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanFormChangeTable, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianFormChangeTable, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianFormChangeTable, - [SPECIES_TORNADUS] = sTornadusFormChangeTable, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = sDarmanitanGalarianFormChangeTable, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = sDarmanitanGalarianFormChangeTable, + [SPECIES_GARBODOR] = sGarbodorFormChangeTable, + [SPECIES_GARBODOR_GIGANTAMAX] = sGarbodorFormChangeTable, + [SPECIES_TORNADUS_INCARNATE] = sTornadusFormChangeTable, [SPECIES_TORNADUS_THERIAN] = sTornadusFormChangeTable, - [SPECIES_THUNDURUS] = sThundurusFormChangeTable, + [SPECIES_THUNDURUS_INCARNATE] = sThundurusFormChangeTable, [SPECIES_THUNDURUS_THERIAN] = sThundurusFormChangeTable, - [SPECIES_LANDORUS] = sLandorusFormChangeTable, + [SPECIES_LANDORUS_INCARNATE] = sLandorusFormChangeTable, [SPECIES_LANDORUS_THERIAN] = sLandorusFormChangeTable, - [SPECIES_KELDEO] = sKeldeoFormChangeTable, + [SPECIES_KELDEO_ORDINARY] = sKeldeoFormChangeTable, [SPECIES_KELDEO_RESOLUTE] = sKeldeoFormChangeTable, - [SPECIES_MELOETTA] = sMeloettaFormChangeTable, + [SPECIES_MELOETTA_ARIA] = sMeloettaFormChangeTable, [SPECIES_MELOETTA_PIROUETTE] = sMeloettaFormChangeTable, [SPECIES_GENESECT] = sGenesectFormChangeTable, [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectFormChangeTable, @@ -157,26 +179,26 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = #if P_GEN_6_POKEMON == TRUE [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaBattleBondFormChangeTable, [SPECIES_GRENINJA_ASH] = sGreninjaBattleBondFormChangeTable, - [SPECIES_AEGISLASH] = sAegislashFormChangeTable, + [SPECIES_AEGISLASH_SHIELD] = sAegislashFormChangeTable, [SPECIES_AEGISLASH_BLADE] = sAegislashFormChangeTable, - [SPECIES_XERNEAS] = sXerneasFormChangeTable, + [SPECIES_XERNEAS_NEUTRAL] = sXerneasFormChangeTable, [SPECIES_XERNEAS_ACTIVE] = sXerneasFormChangeTable, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardePowerConstructFormChangeTable, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardePowerConstructFormChangeTable, [SPECIES_ZYGARDE_COMPLETE] = sZygardePowerConstructFormChangeTable, [SPECIES_DIANCIE] = sDiancieFormChangeTable, [SPECIES_DIANCIE_MEGA] = sDiancieFormChangeTable, - [SPECIES_HOOPA] = sHoopaFormChangeTable, + [SPECIES_HOOPA_CONFINED] = sHoopaFormChangeTable, [SPECIES_HOOPA_UNBOUND] = sHoopaFormChangeTable, #endif #if P_GEN_7_POKEMON == TRUE - [SPECIES_ORICORIO] = sOricorioFormChangeTable, + [SPECIES_ORICORIO_BAILE] = sOricorioFormChangeTable, [SPECIES_ORICORIO_POM_POM] = sOricorioFormChangeTable, [SPECIES_ORICORIO_PAU] = sOricorioFormChangeTable, [SPECIES_ORICORIO_SENSU] = sOricorioFormChangeTable, - [SPECIES_WISHIWASHI] = sWishiwashiFormChangeTable, + [SPECIES_WISHIWASHI_SOLO] = sWishiwashiFormChangeTable, [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiFormChangeTable, - [SPECIES_SILVALLY] = sSilvallyFormChangeTable, + [SPECIES_SILVALLY_NORMAL] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_BUG] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_DARK] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_DRAGON] = sSilvallyFormChangeTable, @@ -194,9 +216,9 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_SILVALLY_ROCK] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_STEEL] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_WATER] = sSilvallyFormChangeTable, - [SPECIES_MIMIKYU] = sMimikyuFormChangeTable, + [SPECIES_MIMIKYU_DISGUISED] = sMimikyuFormChangeTable, [SPECIES_MIMIKYU_BUSTED] = sMimikyuFormChangeTable, - [SPECIES_MINIOR] = sMiniorRedFormChangeTable, + [SPECIES_MINIOR_METEOR_RED] = sMiniorRedFormChangeTable, [SPECIES_MINIOR_CORE_RED] = sMiniorRedFormChangeTable, [SPECIES_MINIOR_METEOR_BLUE] = sMiniorBlueFormChangeTable, [SPECIES_MINIOR_CORE_BLUE] = sMiniorBlueFormChangeTable, @@ -212,20 +234,62 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_MINIOR_CORE_YELLOW] = sMiniorYellowFormChangeTable, [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaDuskManeFormChangeTable, [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaDawnWingsFormChangeTable, + [SPECIES_MELMETAL] = sMelmetalFormChangeTable, + [SPECIES_MELMETAL_GIGANTAMAX] = sMelmetalFormChangeTable, #endif #if P_GEN_8_POKEMON == TRUE + [SPECIES_RILLABOOM] = sRillaboomFormChangeTable, + [SPECIES_RILLABOOM_GIGANTAMAX] = sRillaboomFormChangeTable, + [SPECIES_CINDERACE] = sCinderaceFormChangeTable, + [SPECIES_CINDERACE_GIGANTAMAX] = sCinderaceFormChangeTable, + [SPECIES_INTELEON] = sInteleonFormChangeTable, + [SPECIES_INTELEON_GIGANTAMAX] = sInteleonFormChangeTable, + [SPECIES_CORVIKNIGHT] = sCorviknightFormChangeTable, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sCorviknightFormChangeTable, + [SPECIES_ORBEETLE] = sOrbeetleFormChangeTable, + [SPECIES_ORBEETLE_GIGANTAMAX] = sOrbeetleFormChangeTable, + [SPECIES_DREDNAW] = sDrednawFormChangeTable, + [SPECIES_DREDNAW_GIGANTAMAX] = sDrednawFormChangeTable, + [SPECIES_COALOSSAL] = sCoalossalFormChangeTable, + [SPECIES_COALOSSAL_GIGANTAMAX] = sCoalossalFormChangeTable, + [SPECIES_FLAPPLE] = sFlappleFormChangeTable, + [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleFormChangeTable, + [SPECIES_APPLETUN] = sAppletunFormChangeTable, + [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunFormChangeTable, + [SPECIES_SANDACONDA] = sSandacondaFormChangeTable, + [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaFormChangeTable, [SPECIES_CRAMORANT] = sCramorantFormChangeTable, [SPECIES_CRAMORANT_GULPING] = sCramorantFormChangeTable, [SPECIES_CRAMORANT_GORGING] = sCramorantFormChangeTable, - [SPECIES_EISCUE] = sEiscueFormChangeTable, + [SPECIES_TOXTRICITY] = sToxtricityAmpedFormChangeTable, + [SPECIES_TOXTRICITY_LOW_KEY] = sToxtricityAmpedFormChangeTable, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityLowKeyFormChangeTable, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sToxtricityLowKeyFormChangeTable, + [SPECIES_CENTISKORCH] = sCentiskorchFormChangeTable, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchFormChangeTable, + [SPECIES_HATTERENE] = sHattereneFormChangeTable, + [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneFormChangeTable, + [SPECIES_GRIMMSNARL] = sGrimmsnarlFormChangeTable, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlFormChangeTable, + [SPECIES_ALCREMIE] = sAlcremieFormChangeTable, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieFormChangeTable, + [SPECIES_EISCUE_ICE_FACE] = sEiscueFormChangeTable, [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormChangeTable, - [SPECIES_MORPEKO] = sMorpekoFormChangeTable, + [SPECIES_MORPEKO_FULL_BELLY] = sMorpekoFormChangeTable, [SPECIES_MORPEKO_HANGRY] = sMorpekoFormChangeTable, - [SPECIES_ZACIAN] = sZacianFormChangeTable, + [SPECIES_COPPERAJAH] = sCopperajahFormChangeTable, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahFormChangeTable, + [SPECIES_DURALUDON] = sDuraludonFormChangeTable, + [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonFormChangeTable, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = sZacianFormChangeTable, [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianFormChangeTable, - [SPECIES_ZAMAZENTA] = sZamazentaFormChangeTable, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = sZamazentaFormChangeTable, [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaFormChangeTable, - [SPECIES_ENAMORUS] = sEnamorusFormChangeTable, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = sUrshifuSingleStrikeFormChangeTable, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = sUrshifuSingleStrikeFormChangeTable, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeFormChangeTable, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuRapidStrikeFormChangeTable, + [SPECIES_ENAMORUS_INCARNATE] = sEnamorusFormChangeTable, [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormChangeTable, #endif }; diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 2db4d8a1d3..f339130fac 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1,16 +1,19 @@ static const struct FormChange sVenusaurFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_VENUSAUR_MEGA, ITEM_VENUSAURITE}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_VENUSAUR_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sCharizardFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_X, ITEM_CHARIZARDITE_X}, {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_Y, ITEM_CHARIZARDITE_Y}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CHARIZARD_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sBlastoiseFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLASTOISE_MEGA, ITEM_BLASTOISINITE}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BLASTOISE_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; @@ -36,6 +39,7 @@ static const struct FormChange sSlowbroFormChangeTable[] = { static const struct FormChange sGengarFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GENGAR_MEGA, ITEM_GENGARITE}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GENGAR_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; @@ -160,18 +164,18 @@ static const struct FormChange sCastformFormChangeTable[] = { {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN, ABILITY_FORECAST}, {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN, ABILITY_FORECAST}, {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW, ABILITY_FORECAST}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW), ABILITY_FORECAST}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, B_WEATHER_NONE, ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW), ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, B_WEATHER_NONE, ABILITY_FORECAST}, #else {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN}, {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN}, {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW)}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, B_WEATHER_NONE}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW)}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, B_WEATHER_NONE}, #endif - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CASTFORM}, - {FORM_CHANGE_FAINT, SPECIES_CASTFORM}, - {FORM_CHANGE_END_BATTLE, SPECIES_CASTFORM}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CASTFORM_NORMAL}, + {FORM_CHANGE_FAINT, SPECIES_CASTFORM_NORMAL}, + {FORM_CHANGE_END_BATTLE, SPECIES_CASTFORM_NORMAL}, {FORM_CHANGE_TERMINATOR}, }; @@ -227,11 +231,11 @@ static const struct FormChange sRayquazaFormChangeTable[] = { #if P_GEN_4_POKEMON == TRUE static const struct FormChange sBurmyFormChangeTable[] = { - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_GRASS}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_LONG_GRASS}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_POND}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_MOUNTAIN}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_PLAIN}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_GRASS}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_LONG_GRASS}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_POND}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_MOUNTAIN}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_PLAIN}, {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_CAVE}, {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_SAND}, {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_TRASH_CLOAK, BATTLE_TERRAIN_BUILDING}, @@ -241,16 +245,16 @@ static const struct FormChange sBurmyFormChangeTable[] = { static const struct FormChange sCherrimFormChangeTable[] = { #if B_WEATHER_FORMS >= GEN_5 {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_SUNSHINE, B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, ~B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, B_WEATHER_NONE, ABILITY_FLOWER_GIFT}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, ~B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, B_WEATHER_NONE, ABILITY_FLOWER_GIFT}, #else {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_SUNSHINE, B_WEATHER_SUN}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, ~B_WEATHER_SUN}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, B_WEATHER_NONE}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, ~B_WEATHER_SUN}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, B_WEATHER_NONE}, #endif - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CHERRIM}, - {FORM_CHANGE_FAINT, SPECIES_CHERRIM}, - {FORM_CHANGE_END_BATTLE, SPECIES_CHERRIM}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CHERRIM_OVERCAST}, + {FORM_CHANGE_FAINT, SPECIES_CHERRIM_OVERCAST}, + {FORM_CHANGE_END_BATTLE, SPECIES_CHERRIM_OVERCAST}, {FORM_CHANGE_TERMINATOR}, }; @@ -292,7 +296,7 @@ static const struct FormChange sPalkiaFormChangeTable[] = { }; static const struct FormChange sGiratinaFormChangeTable[] = { - {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA, ITEM_NONE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ALTERED, ITEM_NONE}, #if I_GRISEOUS_ORB_FORM_CHANGE < GEN_9 {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_ORB}, #endif @@ -302,12 +306,12 @@ static const struct FormChange sGiratinaFormChangeTable[] = { static const struct FormChange sShayminFormChangeTable[] = { {FORM_CHANGE_ITEM_USE, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY}, - // {FORM_CHANGE_WITHDRAW, SPECIES_SHAYMIN}, + // {FORM_CHANGE_WITHDRAW, SPECIES_SHAYMIN_LAND}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sArceusFormChangeTable[] = { - {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS, ITEM_NONE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_NORMAL, ITEM_NONE, ABILITY_MULTITYPE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIST_PLATE, ABILITY_MULTITYPE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIGHTINIUM_Z, ABILITY_MULTITYPE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_SKY_PLATE, ABILITY_MULTITYPE}, @@ -353,48 +357,48 @@ static const struct FormChange sAudinoFormChangeTable[] = { }; static const struct FormChange sDarmanitanFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, - {FORM_CHANGE_FAINT, SPECIES_DARMANITAN}, - {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_STANDARD_MODE, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_STANDARD_MODE}, + {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_STANDARD_MODE}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sDarmanitanGalarianFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE_GALARIAN, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, - {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALARIAN}, - {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALARIAN}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}, + {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sMeloettaFormChangeTable[] = { - {FORM_CHANGE_FAINT, SPECIES_MELOETTA}, - {FORM_CHANGE_END_BATTLE, SPECIES_MELOETTA}, + {FORM_CHANGE_FAINT, SPECIES_MELOETTA_ARIA}, + {FORM_CHANGE_END_BATTLE, SPECIES_MELOETTA_ARIA}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sTornadusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_INCARNATE, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sThundurusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_INCARNATE, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sLandorusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_INCARNATE, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sKeldeoFormChangeTable[] = { // {FORM_CHANGE_MOVE, SPECIES_KELDEO_RESOLUTE, MOVE_SECRET_SWORD, WHEN_LEARNED}, - // {FORM_CHANGE_MOVE, SPECIES_KELDEO, MOVE_SECRET_SWORD, WHEN_FORGOTTEN}, + // {FORM_CHANGE_MOVE, SPECIES_KELDEO_ORDINARY, MOVE_SECRET_SWORD, WHEN_FORGOTTEN}, {FORM_CHANGE_TERMINATOR}, }; @@ -416,15 +420,15 @@ static const struct FormChange sGreninjaBattleBondFormChangeTable[] = { }; static const struct FormChange sAegislashFormChangeTable[] = { - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_AEGISLASH}, - {FORM_CHANGE_FAINT, SPECIES_AEGISLASH}, - {FORM_CHANGE_END_BATTLE, SPECIES_AEGISLASH}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_AEGISLASH_SHIELD}, + {FORM_CHANGE_FAINT, SPECIES_AEGISLASH_SHIELD}, + {FORM_CHANGE_END_BATTLE, SPECIES_AEGISLASH_SHIELD}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sXerneasFormChangeTable[] = { {FORM_CHANGE_BEGIN_BATTLE, SPECIES_XERNEAS_ACTIVE}, - {FORM_CHANGE_END_BATTLE, SPECIES_XERNEAS, }, + {FORM_CHANGE_END_BATTLE, SPECIES_XERNEAS_NEUTRAL}, {FORM_CHANGE_TERMINATOR}, }; @@ -441,15 +445,15 @@ static const struct FormChange sDiancieFormChangeTable[] = { }; static const struct FormChange sHoopaFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA}, - {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA}, + {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA_CONFINED}, + {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA_CONFINED}, {FORM_CHANGE_TERMINATOR}, }; #endif #if P_GEN_7_POKEMON == TRUE static const struct FormChange sOricorioFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO, ITEM_RED_NECTAR}, + {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_BAILE, ITEM_RED_NECTAR}, {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_POM_POM, ITEM_YELLOW_NECTAR}, {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_PAU, ITEM_PINK_NECTAR}, {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_SENSU, ITEM_PURPLE_NECTAR}, @@ -457,15 +461,15 @@ static const struct FormChange sOricorioFormChangeTable[] = { }; static const struct FormChange sWishiwashiFormChangeTable[] = { {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI_SCHOOL, ABILITY_SCHOOLING, HP_HIGHER_THAN, 25}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI, ABILITY_SCHOOLING, HP_LOWER_EQ_THAN, 25}, - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_WISHIWASHI}, - {FORM_CHANGE_FAINT, SPECIES_WISHIWASHI}, - {FORM_CHANGE_END_BATTLE, SPECIES_WISHIWASHI}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI_SOLO, ABILITY_SCHOOLING, HP_LOWER_EQ_THAN, 25}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_WISHIWASHI_SOLO}, + {FORM_CHANGE_FAINT, SPECIES_WISHIWASHI_SOLO}, + {FORM_CHANGE_END_BATTLE, SPECIES_WISHIWASHI_SOLO}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sSilvallyFormChangeTable[] = { - {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY, ITEM_NONE, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_NORMAL, ITEM_NONE, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FIGHTING, ITEM_FIGHTING_MEMORY, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FLYING, ITEM_FLYING_MEMORY, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_POISON, ITEM_POISON_MEMORY, ABILITY_RKS_SYSTEM}, @@ -487,14 +491,14 @@ static const struct FormChange sSilvallyFormChangeTable[] = { }; static const struct FormChange sMimikyuFormChangeTable[] = { - {FORM_CHANGE_FAINT, SPECIES_MIMIKYU}, - {FORM_CHANGE_END_BATTLE, SPECIES_MIMIKYU}, + {FORM_CHANGE_FAINT, SPECIES_MIMIKYU_DISGUISED}, + {FORM_CHANGE_END_BATTLE, SPECIES_MIMIKYU_DISGUISED}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sMiniorRedFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_RED, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_RED, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_RED, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_RED}, {FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_RED}, {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_RED}, @@ -569,37 +573,223 @@ static const struct FormChange sCramorantFormChangeTable[] = { }; static const struct FormChange sEiscueFormChangeTable[] = { - {FORM_CHANGE_FAINT, SPECIES_EISCUE}, - {FORM_CHANGE_END_BATTLE, SPECIES_EISCUE}, + {FORM_CHANGE_FAINT, SPECIES_EISCUE_ICE_FACE}, + {FORM_CHANGE_END_BATTLE, SPECIES_EISCUE_ICE_FACE}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sMorpekoFormChangeTable[] = { - {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_HANGRY, ABILITY_HUNGER_SWITCH}, - {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO , ABILITY_HUNGER_SWITCH}, - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MORPEKO}, - {FORM_CHANGE_FAINT, SPECIES_MORPEKO}, - {FORM_CHANGE_END_BATTLE, SPECIES_MORPEKO}, + {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_HANGRY, ABILITY_HUNGER_SWITCH}, + {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_FULL_BELLY, ABILITY_HUNGER_SWITCH}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MORPEKO_FULL_BELLY}, + {FORM_CHANGE_FAINT, SPECIES_MORPEKO_FULL_BELLY}, + {FORM_CHANGE_END_BATTLE, SPECIES_MORPEKO_FULL_BELLY}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sZacianFormChangeTable[] = { - {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, - {FORM_CHANGE_END_BATTLE, SPECIES_ZACIAN, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, + {FORM_CHANGE_END_BATTLE, SPECIES_ZACIAN_HERO_OF_MANY_BATTLES, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sZamazentaFormChangeTable[] = { - {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, - {FORM_CHANGE_END_BATTLE, SPECIES_ZAMAZENTA, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, + {FORM_CHANGE_END_BATTLE, SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sEnamorusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_INCARNATE, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; + +#endif + +static const struct FormChange sButterfreeFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BUTTERFREE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sPikachuFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_PIKACHU_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMeowthFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MEOWTH_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sMachampFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MACHAMP_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sKinglerFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_KINGLER_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sLaprasFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_LAPRAS_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sEeveeFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_EEVEE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSnorlaxFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SNORLAX_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +#if P_GEN_5_POKEMON == TRUE +static const struct FormChange sGarbodorFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GARBODOR_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +#endif +#if P_GEN_7_POKEMON == TRUE +static const struct FormChange sMelmetalFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MELMETAL_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +#endif +#if P_GEN_8_POKEMON == TRUE +static const struct FormChange sRillaboomFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_RILLABOOM_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCinderaceFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CINDERACE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sInteleonFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_INTELEON_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCorviknightFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CORVIKNIGHT_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sOrbeetleFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ORBEETLE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sDrednawFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DREDNAW_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCoalossalFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COALOSSAL_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sFlappleFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_FLAPPLE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAppletunFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_APPLETUN_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sSandacondaFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SANDACONDA_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sToxtricityAmpedFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_AMPED_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sToxtricityLowKeyFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +static const struct FormChange sCentiskorchFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CENTISKORCH_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sHattereneFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_HATTERENE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sGrimmsnarlFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GRIMMSNARL_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAlcremieFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ALCREMIE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sCopperajahFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COPPERAJAH_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sDuraludonFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DURALUDON_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sUrshifuSingleStrikeFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sUrshifuRapidStrikeFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + #endif #undef WHEN_LEARNED diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index cc66c12ed8..e615fd1b14 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -72,7 +72,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_SHARPEDO] = sSharpedoFormSpeciesIdTable, [SPECIES_CAMERUPT] = sCameruptFormSpeciesIdTable, [SPECIES_ALTARIA] = sAltariaFormSpeciesIdTable, - [SPECIES_CASTFORM] = sCastformFormSpeciesIdTable, + [SPECIES_CASTFORM_NORMAL] = sCastformFormSpeciesIdTable, [SPECIES_BANETTE] = sBanetteFormSpeciesIdTable, [SPECIES_ABSOL] = sAbsolFormSpeciesIdTable, [SPECIES_GLALIE] = sGlalieFormSpeciesIdTable, @@ -83,13 +83,13 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_KYOGRE] = sKyogreFormSpeciesIdTable, [SPECIES_GROUDON] = sGroudonFormSpeciesIdTable, [SPECIES_RAYQUAZA] = sRayquazaFormSpeciesIdTable, - [SPECIES_DEOXYS] = sDeoxysFormSpeciesIdTable, + [SPECIES_DEOXYS_NORMAL] = sDeoxysFormSpeciesIdTable, #if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY] = sBurmyFormSpeciesIdTable, - [SPECIES_WORMADAM] = sWormadamFormSpeciesIdTable, - [SPECIES_CHERRIM] = sCherrimFormSpeciesIdTable, - [SPECIES_SHELLOS] = sShellosFormSpeciesIdTable, - [SPECIES_GASTRODON] = sGastrodonFormSpeciesIdTable, + [SPECIES_BURMY_PLANT_CLOAK] = sBurmyFormSpeciesIdTable, + [SPECIES_WORMADAM_PLANT_CLOAK] = sWormadamFormSpeciesIdTable, + [SPECIES_CHERRIM_OVERCAST] = sCherrimFormSpeciesIdTable, + [SPECIES_SHELLOS_WEST_SEA] = sShellosFormSpeciesIdTable, + [SPECIES_GASTRODON_WEST_SEA] = sGastrodonFormSpeciesIdTable, [SPECIES_LOPUNNY] = sLopunnyFormSpeciesIdTable, [SPECIES_GARCHOMP] = sGarchompFormSpeciesIdTable, [SPECIES_LUCARIO] = sLucarioFormSpeciesIdTable, @@ -98,80 +98,80 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_ROTOM] = sRotomFormSpeciesIdTable, [SPECIES_DIALGA] = sDialgaFormSpeciesIdTable, [SPECIES_PALKIA] = sPalkiaFormSpeciesIdTable, - [SPECIES_GIRATINA] = sGiratinaFormSpeciesIdTable, - [SPECIES_SHAYMIN] = sShayminFormSpeciesIdTable, - [SPECIES_ARCEUS] = sArceusFormSpeciesIdTable, + [SPECIES_GIRATINA_ALTERED] = sGiratinaFormSpeciesIdTable, + [SPECIES_SHAYMIN_LAND] = sShayminFormSpeciesIdTable, + [SPECIES_ARCEUS_NORMAL] = sArceusFormSpeciesIdTable, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_SAMUROTT] = sSamurottFormSpeciesIdTable, [SPECIES_AUDINO] = sAudinoFormSpeciesIdTable, - [SPECIES_BASCULIN] = sBasculinFormSpeciesIdTable, + [SPECIES_BASCULIN_RED_STRIPED] = sBasculinFormSpeciesIdTable, [SPECIES_LILLIGANT] = sLilligantFormSpeciesIdTable, [SPECIES_DARUMAKA] = sDarumakaFormSpeciesIdTable, - [SPECIES_DARMANITAN] = sDarmanitanFormSpeciesIdTable, + [SPECIES_DARMANITAN_STANDARD_MODE] = sDarmanitanFormSpeciesIdTable, [SPECIES_YAMASK] = sYamaskFormSpeciesIdTable, [SPECIES_ZORUA] = sZoruaFormSpeciesIdTable, [SPECIES_ZOROARK] = sZoroarkFormSpeciesIdTable, - [SPECIES_DEERLING] = sDeerlingFormSpeciesIdTable, - [SPECIES_SAWSBUCK] = sSawsbuckFormSpeciesIdTable, + [SPECIES_DEERLING_SPRING] = sDeerlingFormSpeciesIdTable, + [SPECIES_SAWSBUCK_SPRING] = sSawsbuckFormSpeciesIdTable, [SPECIES_STUNFISK] = sStunfiskFormSpeciesIdTable, [SPECIES_BRAVIARY] = sBraviaryFormSpeciesIdTable, - [SPECIES_TORNADUS] = sTornadusFormSpeciesIdTable, - [SPECIES_THUNDURUS] = sThundurusFormSpeciesIdTable, - [SPECIES_LANDORUS] = sLandorusFormSpeciesIdTable, + [SPECIES_TORNADUS_INCARNATE] = sTornadusFormSpeciesIdTable, + [SPECIES_THUNDURUS_INCARNATE] = sThundurusFormSpeciesIdTable, + [SPECIES_LANDORUS_INCARNATE] = sLandorusFormSpeciesIdTable, [SPECIES_KYUREM] = sKyuremFormSpeciesIdTable, - [SPECIES_KELDEO] = sKeldeoFormSpeciesIdTable, - [SPECIES_MELOETTA] = sMeloettaFormSpeciesIdTable, + [SPECIES_KELDEO_ORDINARY] = sKeldeoFormSpeciesIdTable, + [SPECIES_MELOETTA_ARIA] = sMeloettaFormSpeciesIdTable, [SPECIES_GENESECT] = sGenesectFormSpeciesIdTable, #endif #if P_GEN_6_POKEMON == TRUE [SPECIES_GRENINJA] = sGreninjaFormSpeciesIdTable, - [SPECIES_VIVILLON] = sVivillonFormSpeciesIdTable, - [SPECIES_FLABEBE] = sFlabebeFormSpeciesIdTable, + [SPECIES_VIVILLON_ICY_SNOW] = sVivillonFormSpeciesIdTable, + [SPECIES_FLABEBE_RED_FLOWER] = sFlabebeFormSpeciesIdTable, [SPECIES_FLOETTE] = sFloetteFormSpeciesIdTable, [SPECIES_FLORGES] = sFlorgesFormSpeciesIdTable, - [SPECIES_FURFROU] = sFurfrouFormSpeciesIdTable, - [SPECIES_MEOWSTIC] = sMeowsticFormSpeciesIdTable, - [SPECIES_AEGISLASH] = sAegislashFormSpeciesIdTable, + [SPECIES_FURFROU_NATURAL] = sFurfrouFormSpeciesIdTable, + [SPECIES_MEOWSTIC_MALE] = sMeowsticFormSpeciesIdTable, + [SPECIES_AEGISLASH_SHIELD] = sAegislashFormSpeciesIdTable, [SPECIES_SLIGGOO] = sSliggooFormSpeciesIdTable, [SPECIES_GOODRA] = sGoodraFormSpeciesIdTable, - [SPECIES_PUMPKABOO] = sPumpkabooFormSpeciesIdTable, - [SPECIES_GOURGEIST] = sGourgeistFormSpeciesIdTable, + [SPECIES_PUMPKABOO_AVERAGE] = sPumpkabooFormSpeciesIdTable, + [SPECIES_GOURGEIST_AVERAGE] = sGourgeistFormSpeciesIdTable, [SPECIES_AVALUGG] = sAvaluggFormSpeciesIdTable, - [SPECIES_XERNEAS] = sXerneasFormSpeciesIdTable, - [SPECIES_ZYGARDE] = sZygardeFormSpeciesIdTable, + [SPECIES_XERNEAS_NEUTRAL] = sXerneasFormSpeciesIdTable, + [SPECIES_ZYGARDE_50_AURA_BREAK] = sZygardeFormSpeciesIdTable, [SPECIES_DIANCIE] = sDiancieFormSpeciesIdTable, - [SPECIES_HOOPA] = sHoopaFormSpeciesIdTable, + [SPECIES_HOOPA_CONFINED] = sHoopaFormSpeciesIdTable, #endif #if P_GEN_7_POKEMON == TRUE [SPECIES_DECIDUEYE] = sDecidueyeFormSpeciesIdTable, - [SPECIES_ORICORIO] = sOricorioFormSpeciesIdTable, + [SPECIES_ORICORIO_BAILE] = sOricorioFormSpeciesIdTable, [SPECIES_ROCKRUFF] = sRockruffFormSpeciesIdTable, - [SPECIES_LYCANROC] = sLycanrocFormSpeciesIdTable, - [SPECIES_WISHIWASHI] = sWishiwashiFormSpeciesIdTable, - [SPECIES_SILVALLY] = sSilvallyFormSpeciesIdTable, - [SPECIES_MINIOR] = sMiniorFormSpeciesIdTable, - [SPECIES_MIMIKYU] = sMimikyuFormSpeciesIdTable, + [SPECIES_LYCANROC_MIDDAY] = sLycanrocFormSpeciesIdTable, + [SPECIES_WISHIWASHI_SOLO] = sWishiwashiFormSpeciesIdTable, + [SPECIES_SILVALLY_NORMAL] = sSilvallyFormSpeciesIdTable, + [SPECIES_MINIOR_METEOR_RED] = sMiniorFormSpeciesIdTable, + [SPECIES_MIMIKYU_DISGUISED] = sMimikyuFormSpeciesIdTable, [SPECIES_NECROZMA] = sNecrozmaFormSpeciesIdTable, [SPECIES_MAGEARNA] = sMagearnaFormSpeciesIdTable, #endif #if P_GEN_8_POKEMON == TRUE [SPECIES_CRAMORANT] = sCramorantFormSpeciesIdTable, - [SPECIES_TOXTRICITY] = sToxtricityFormSpeciesIdTable, - [SPECIES_SINISTEA] = sSinisteaFormSpeciesIdTable, - [SPECIES_POLTEAGEIST] = sPolteageistFormSpeciesIdTable, - [SPECIES_ALCREMIE] = sAlcremieFormSpeciesIdTable, - [SPECIES_EISCUE] = sEiscueFormSpeciesIdTable, - [SPECIES_INDEEDEE] = sIndeedeeFormSpeciesIdTable, - [SPECIES_MORPEKO] = sMorpekoFormSpeciesIdTable, - [SPECIES_ZACIAN] = sZacianFormSpeciesIdTable, - [SPECIES_ZAMAZENTA] = sZamazentaFormSpeciesIdTable, + [SPECIES_TOXTRICITY_AMPED] = sToxtricityFormSpeciesIdTable, + [SPECIES_SINISTEA_PHONY] = sSinisteaFormSpeciesIdTable, + [SPECIES_POLTEAGEIST_PHONY] = sPolteageistFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_EISCUE_ICE_FACE] = sEiscueFormSpeciesIdTable, + [SPECIES_INDEEDEE_MALE] = sIndeedeeFormSpeciesIdTable, + [SPECIES_MORPEKO_FULL_BELLY] = sMorpekoFormSpeciesIdTable, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = sZacianFormSpeciesIdTable, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = sZamazentaFormSpeciesIdTable, [SPECIES_ETERNATUS] = sEternatusFormSpeciesIdTable, - [SPECIES_URSHIFU] = sUrshifuFormSpeciesIdTable, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = sUrshifuFormSpeciesIdTable, [SPECIES_ZARUDE] = sZarudeFormSpeciesIdTable, [SPECIES_CALYREX] = sCalyrexFormSpeciesIdTable, - [SPECIES_ENAMORUS] = sEnamorusFormSpeciesIdTable, - [SPECIES_BASCULEGION] = sBasculegionFormSpeciesIdTable, + [SPECIES_ENAMORUS_INCARNATE] = sEnamorusFormSpeciesIdTable, + [SPECIES_BASCULEGION_MALE] = sBasculegionFormSpeciesIdTable, #endif // Megas [SPECIES_VENUSAUR_MEGA] = sVenusaurFormSpeciesIdTable, @@ -268,7 +268,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_LINOONE_GALARIAN] = sLinooneFormSpeciesIdTable, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = sDarumakaFormSpeciesIdTable, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanFormSpeciesIdTable, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = sDarmanitanFormSpeciesIdTable, [SPECIES_YAMASK_GALARIAN] = sYamaskFormSpeciesIdTable, [SPECIES_STUNFISK_GALARIAN] = sStunfiskFormSpeciesIdTable, #endif @@ -400,7 +400,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinFormSpeciesIdTable, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanFormSpeciesIdTable, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanFormSpeciesIdTable, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = sDarmanitanFormSpeciesIdTable, // Deerling [SPECIES_DEERLING_SUMMER] = sDeerlingFormSpeciesIdTable, [SPECIES_DEERLING_AUTUMN] = sDeerlingFormSpeciesIdTable, @@ -491,7 +491,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = // Xerneas [SPECIES_XERNEAS_ACTIVE] = sXerneasFormSpeciesIdTable, // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeFormSpeciesIdTable, + [SPECIES_ZYGARDE_10_AURA_BREAK] = sZygardeFormSpeciesIdTable, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeFormSpeciesIdTable, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeFormSpeciesIdTable, [SPECIES_ZYGARDE_COMPLETE] = sZygardeFormSpeciesIdTable, @@ -562,14 +562,14 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistFormSpeciesIdTable, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormSpeciesIdTable, // Indeedee @@ -593,5 +593,40 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormSpeciesIdTable, // Basculegion [SPECIES_BASCULEGION_FEMALE] = sBasculegionFormSpeciesIdTable, + // Gigantamax Forms + [SPECIES_VENUSAUR_GIGANTAMAX] = sVenusaurFormSpeciesIdTable, + [SPECIES_CHARIZARD_GIGANTAMAX] = sCharizardFormSpeciesIdTable, + [SPECIES_BLASTOISE_GIGANTAMAX] = sBlastoiseFormSpeciesIdTable, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sButterfreeFormSpeciesIdTable, + [SPECIES_PIKACHU_GIGANTAMAX] = sPikachuFormSpeciesIdTable, + [SPECIES_MEOWTH_GIGANTAMAX] = sMeowthFormSpeciesIdTable, + [SPECIES_MACHAMP_GIGANTAMAX] = sMachampFormSpeciesIdTable, + [SPECIES_GENGAR_GIGANTAMAX] = sGengarFormSpeciesIdTable, + [SPECIES_KINGLER_GIGANTAMAX] = sKinglerFormSpeciesIdTable, + [SPECIES_LAPRAS_GIGANTAMAX] = sLaprasFormSpeciesIdTable, + [SPECIES_EEVEE_GIGANTAMAX] = sEeveeFormSpeciesIdTable, + [SPECIES_SNORLAX_GIGANTAMAX] = sSnorlaxFormSpeciesIdTable, + [SPECIES_GARBODOR_GIGANTAMAX] = sGarbodorFormSpeciesIdTable, + [SPECIES_MELMETAL_GIGANTAMAX] = sMelmetalFormSpeciesIdTable, + [SPECIES_RILLABOOM_GIGANTAMAX] = sRillaboomFormSpeciesIdTable, + [SPECIES_CINDERACE_GIGANTAMAX] = sCinderaceFormSpeciesIdTable, + [SPECIES_INTELEON_GIGANTAMAX] = sInteleonFormSpeciesIdTable, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sCorviknightFormSpeciesIdTable, + [SPECIES_ORBEETLE_GIGANTAMAX] = sOrbeetleFormSpeciesIdTable, + [SPECIES_DREDNAW_GIGANTAMAX] = sDrednawFormSpeciesIdTable, + [SPECIES_COALOSSAL_GIGANTAMAX] = sCoalossalFormSpeciesIdTable, + [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleFormSpeciesIdTable, + [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunFormSpeciesIdTable, + [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaFormSpeciesIdTable, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityFormSpeciesIdTable, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sToxtricityFormSpeciesIdTable, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchFormSpeciesIdTable, + [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneFormSpeciesIdTable, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlFormSpeciesIdTable, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieFormSpeciesIdTable, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahFormSpeciesIdTable, + [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonFormSpeciesIdTable, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = sUrshifuFormSpeciesIdTable, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuFormSpeciesIdTable, #endif }; diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 2f4e9088e0..a1d5314884 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -1,6 +1,7 @@ static const u16 sVenusaurFormSpeciesIdTable[] = { SPECIES_VENUSAUR, SPECIES_VENUSAUR_MEGA, + SPECIES_VENUSAUR_GIGANTAMAX, FORM_SPECIES_END, }; @@ -8,12 +9,20 @@ static const u16 sCharizardFormSpeciesIdTable[] = { SPECIES_CHARIZARD, SPECIES_CHARIZARD_MEGA_X, SPECIES_CHARIZARD_MEGA_Y, + SPECIES_CHARIZARD_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sBlastoiseFormSpeciesIdTable[] = { SPECIES_BLASTOISE, SPECIES_BLASTOISE_MEGA, + SPECIES_BLASTOISE_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sButterfreeFormSpeciesIdTable[] = { + SPECIES_BUTTERFREE, + SPECIES_BUTTERFREE_GIGANTAMAX, FORM_SPECIES_END, }; @@ -57,6 +66,7 @@ static const u16 sPikachuFormSpeciesIdTable[] = { SPECIES_PIKACHU_ALOLA_CAP, SPECIES_PIKACHU_PARTNER_CAP, SPECIES_PIKACHU_WORLD_CAP, + SPECIES_PIKACHU_GIGANTAMAX, FORM_SPECIES_END, }; @@ -106,6 +116,7 @@ static const u16 sMeowthFormSpeciesIdTable[] = { SPECIES_MEOWTH, SPECIES_MEOWTH_ALOLAN, SPECIES_MEOWTH_GALARIAN, + SPECIES_MEOWTH_GIGANTAMAX, FORM_SPECIES_END, }; @@ -133,6 +144,12 @@ static const u16 sArcanineFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sMachampFormSpeciesIdTable[] = { + SPECIES_MACHAMP, + SPECIES_MACHAMP_GIGANTAMAX, + FORM_SPECIES_END, +}; + static const u16 sGeodudeFormSpeciesIdTable[] = { SPECIES_GEODUDE, SPECIES_GEODUDE_ALOLAN, @@ -194,9 +211,16 @@ static const u16 sMukFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sKinglerFormSpeciesIdTable[] = { + SPECIES_KINGLER, + SPECIES_KINGLER_GIGANTAMAX, + FORM_SPECIES_END, +}; + static const u16 sGengarFormSpeciesIdTable[] = { SPECIES_GENGAR, SPECIES_GENGAR_MEGA, + SPECIES_GENGAR_GIGANTAMAX, FORM_SPECIES_END, }; @@ -254,12 +278,30 @@ static const u16 sGyaradosFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sLaprasFormSpeciesIdTable[] = { + SPECIES_LAPRAS, + SPECIES_LAPRAS_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sEeveeFormSpeciesIdTable[] = { + SPECIES_EEVEE, + SPECIES_EEVEE_GIGANTAMAX, + FORM_SPECIES_END, +}; + static const u16 sAerodactylFormSpeciesIdTable[] = { SPECIES_AERODACTYL, SPECIES_AERODACTYL_MEGA, FORM_SPECIES_END, }; +static const u16 sSnorlaxFormSpeciesIdTable[] = { + SPECIES_SNORLAX, + SPECIES_SNORLAX_GIGANTAMAX, + FORM_SPECIES_END, +}; + static const u16 sArticunoFormSpeciesIdTable[] = { SPECIES_ARTICUNO, SPECIES_ARTICUNO_GALARIAN, @@ -474,7 +516,7 @@ static const u16 sAltariaFormSpeciesIdTable[] = { }; static const u16 sCastformFormSpeciesIdTable[] = { - SPECIES_CASTFORM, + SPECIES_CASTFORM_NORMAL, SPECIES_CASTFORM_SUNNY, SPECIES_CASTFORM_RAINY, SPECIES_CASTFORM_SNOWY, @@ -542,7 +584,7 @@ static const u16 sRayquazaFormSpeciesIdTable[] = { }; static const u16 sDeoxysFormSpeciesIdTable[] = { - SPECIES_DEOXYS, + SPECIES_DEOXYS_NORMAL, SPECIES_DEOXYS_ATTACK, SPECIES_DEOXYS_DEFENSE, SPECIES_DEOXYS_SPEED, @@ -551,33 +593,33 @@ static const u16 sDeoxysFormSpeciesIdTable[] = { #if P_GEN_4_POKEMON == TRUE static const u16 sBurmyFormSpeciesIdTable[] = { - SPECIES_BURMY, + SPECIES_BURMY_PLANT_CLOAK, SPECIES_BURMY_SANDY_CLOAK, SPECIES_BURMY_TRASH_CLOAK, FORM_SPECIES_END, }; static const u16 sWormadamFormSpeciesIdTable[] = { - SPECIES_WORMADAM, + SPECIES_WORMADAM_PLANT_CLOAK, SPECIES_WORMADAM_SANDY_CLOAK, SPECIES_WORMADAM_TRASH_CLOAK, FORM_SPECIES_END, }; static const u16 sCherrimFormSpeciesIdTable[] = { - SPECIES_CHERRIM, + SPECIES_CHERRIM_OVERCAST, SPECIES_CHERRIM_SUNSHINE, FORM_SPECIES_END, }; static const u16 sShellosFormSpeciesIdTable[] = { - SPECIES_SHELLOS, + SPECIES_SHELLOS_WEST_SEA, SPECIES_SHELLOS_EAST_SEA, FORM_SPECIES_END, }; static const u16 sGastrodonFormSpeciesIdTable[] = { - SPECIES_GASTRODON, + SPECIES_GASTRODON_WEST_SEA, SPECIES_GASTRODON_EAST_SEA, FORM_SPECIES_END, }; @@ -635,19 +677,19 @@ static const u16 sPalkiaFormSpeciesIdTable[] = { }; static const u16 sGiratinaFormSpeciesIdTable[] = { - SPECIES_GIRATINA, + SPECIES_GIRATINA_ALTERED, SPECIES_GIRATINA_ORIGIN, FORM_SPECIES_END, }; static const u16 sShayminFormSpeciesIdTable[] = { - SPECIES_SHAYMIN, + SPECIES_SHAYMIN_LAND, SPECIES_SHAYMIN_SKY, FORM_SPECIES_END, }; static const u16 sArceusFormSpeciesIdTable[] = { - SPECIES_ARCEUS, + SPECIES_ARCEUS_NORMAL, SPECIES_ARCEUS_FIGHTING, SPECIES_ARCEUS_FLYING, SPECIES_ARCEUS_POISON, @@ -683,7 +725,7 @@ static const u16 sAudinoFormSpeciesIdTable[] = { }; static const u16 sBasculinFormSpeciesIdTable[] = { - SPECIES_BASCULIN, + SPECIES_BASCULIN_RED_STRIPED, SPECIES_BASCULIN_BLUE_STRIPED, SPECIES_BASCULIN_WHITE_STRIPED, FORM_SPECIES_END, @@ -702,10 +744,10 @@ static const u16 sDarumakaFormSpeciesIdTable[] = { }; static const u16 sDarmanitanFormSpeciesIdTable[] = { - SPECIES_DARMANITAN, + SPECIES_DARMANITAN_STANDARD_MODE, SPECIES_DARMANITAN_ZEN_MODE, - SPECIES_DARMANITAN_GALARIAN, - SPECIES_DARMANITAN_ZEN_MODE_GALARIAN, + SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE, + SPECIES_DARMANITAN_GALARIAN_ZEN_MODE, FORM_SPECIES_END, }; @@ -727,8 +769,14 @@ static const u16 sZoroarkFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sGarbodorFormSpeciesIdTable[] = { + SPECIES_GARBODOR, + SPECIES_GARBODOR_GIGANTAMAX, + FORM_SPECIES_END, +}; + static const u16 sDeerlingFormSpeciesIdTable[] = { - SPECIES_DEERLING, + SPECIES_DEERLING_SPRING, SPECIES_DEERLING_SUMMER, SPECIES_DEERLING_AUTUMN, SPECIES_DEERLING_WINTER, @@ -736,7 +784,7 @@ static const u16 sDeerlingFormSpeciesIdTable[] = { }; static const u16 sSawsbuckFormSpeciesIdTable[] = { - SPECIES_SAWSBUCK, + SPECIES_SAWSBUCK_SPRING, SPECIES_SAWSBUCK_SUMMER, SPECIES_SAWSBUCK_AUTUMN, SPECIES_SAWSBUCK_WINTER, @@ -756,19 +804,19 @@ static const u16 sBraviaryFormSpeciesIdTable[] = { }; static const u16 sTornadusFormSpeciesIdTable[] = { - SPECIES_TORNADUS, + SPECIES_TORNADUS_INCARNATE, SPECIES_TORNADUS_THERIAN, FORM_SPECIES_END, }; static const u16 sThundurusFormSpeciesIdTable[] = { - SPECIES_THUNDURUS, + SPECIES_THUNDURUS_INCARNATE, SPECIES_THUNDURUS_THERIAN, FORM_SPECIES_END, }; static const u16 sLandorusFormSpeciesIdTable[] = { - SPECIES_LANDORUS, + SPECIES_LANDORUS_INCARNATE, SPECIES_LANDORUS_THERIAN, FORM_SPECIES_END, }; @@ -781,13 +829,13 @@ static const u16 sKyuremFormSpeciesIdTable[] = { }; static const u16 sKeldeoFormSpeciesIdTable[] = { - SPECIES_KELDEO, + SPECIES_KELDEO_ORDINARY, SPECIES_KELDEO_RESOLUTE, FORM_SPECIES_END, }; static const u16 sMeloettaFormSpeciesIdTable[] = { - SPECIES_MELOETTA, + SPECIES_MELOETTA_ARIA, SPECIES_MELOETTA_PIROUETTE, FORM_SPECIES_END, }; @@ -811,7 +859,7 @@ static const u16 sGreninjaFormSpeciesIdTable[] = { }; static const u16 sVivillonFormSpeciesIdTable[] = { - SPECIES_VIVILLON, + SPECIES_VIVILLON_ICY_SNOW, SPECIES_VIVILLON_POLAR, SPECIES_VIVILLON_TUNDRA, SPECIES_VIVILLON_CONTINENTAL, @@ -835,7 +883,7 @@ static const u16 sVivillonFormSpeciesIdTable[] = { }; static const u16 sFlabebeFormSpeciesIdTable[] = { - SPECIES_FLABEBE, + SPECIES_FLABEBE_RED_FLOWER, SPECIES_FLABEBE_YELLOW_FLOWER, SPECIES_FLABEBE_ORANGE_FLOWER, SPECIES_FLABEBE_BLUE_FLOWER, @@ -844,7 +892,7 @@ static const u16 sFlabebeFormSpeciesIdTable[] = { }; static const u16 sFloetteFormSpeciesIdTable[] = { - SPECIES_FLOETTE, + SPECIES_FLOETTE_RED_FLOWER, SPECIES_FLOETTE_YELLOW_FLOWER, SPECIES_FLOETTE_ORANGE_FLOWER, SPECIES_FLOETTE_BLUE_FLOWER, @@ -854,7 +902,7 @@ static const u16 sFloetteFormSpeciesIdTable[] = { }; static const u16 sFlorgesFormSpeciesIdTable[] = { - SPECIES_FLORGES, + SPECIES_FLORGES_RED_FLOWER, SPECIES_FLORGES_YELLOW_FLOWER, SPECIES_FLORGES_ORANGE_FLOWER, SPECIES_FLORGES_BLUE_FLOWER, @@ -863,7 +911,7 @@ static const u16 sFlorgesFormSpeciesIdTable[] = { }; static const u16 sFurfrouFormSpeciesIdTable[] = { - SPECIES_FURFROU, + SPECIES_FURFROU_NATURAL, SPECIES_FURFROU_HEART_TRIM, SPECIES_FURFROU_STAR_TRIM, SPECIES_FURFROU_DIAMOND_TRIM, @@ -877,13 +925,13 @@ static const u16 sFurfrouFormSpeciesIdTable[] = { }; static const u16 sMeowsticFormSpeciesIdTable[] = { - SPECIES_MEOWSTIC, + SPECIES_MEOWSTIC_MALE, SPECIES_MEOWSTIC_FEMALE, FORM_SPECIES_END, }; static const u16 sAegislashFormSpeciesIdTable[] = { - SPECIES_AEGISLASH, + SPECIES_AEGISLASH_SHIELD, SPECIES_AEGISLASH_BLADE, FORM_SPECIES_END, }; @@ -901,7 +949,7 @@ static const u16 sGoodraFormSpeciesIdTable[] = { }; static const u16 sPumpkabooFormSpeciesIdTable[] = { - SPECIES_PUMPKABOO, + SPECIES_PUMPKABOO_AVERAGE, SPECIES_PUMPKABOO_SMALL, SPECIES_PUMPKABOO_LARGE, SPECIES_PUMPKABOO_SUPER, @@ -909,7 +957,7 @@ static const u16 sPumpkabooFormSpeciesIdTable[] = { }; static const u16 sGourgeistFormSpeciesIdTable[] = { - SPECIES_GOURGEIST, + SPECIES_GOURGEIST_AVERAGE, SPECIES_GOURGEIST_SMALL, SPECIES_GOURGEIST_LARGE, SPECIES_GOURGEIST_SUPER, @@ -923,14 +971,14 @@ static const u16 sAvaluggFormSpeciesIdTable[] = { }; static const u16 sXerneasFormSpeciesIdTable[] = { - SPECIES_XERNEAS, + SPECIES_XERNEAS_NEUTRAL, SPECIES_XERNEAS_ACTIVE, FORM_SPECIES_END, }; static const u16 sZygardeFormSpeciesIdTable[] = { - SPECIES_ZYGARDE, - SPECIES_ZYGARDE_10, + SPECIES_ZYGARDE_50_AURA_BREAK, + SPECIES_ZYGARDE_10_AURA_BREAK, SPECIES_ZYGARDE_10_POWER_CONSTRUCT, SPECIES_ZYGARDE_50_POWER_CONSTRUCT, SPECIES_ZYGARDE_COMPLETE, @@ -944,7 +992,7 @@ static const u16 sDiancieFormSpeciesIdTable[] = { }; static const u16 sHoopaFormSpeciesIdTable[] = { - SPECIES_HOOPA, + SPECIES_HOOPA_CONFINED, SPECIES_HOOPA_UNBOUND, FORM_SPECIES_END, }; @@ -958,7 +1006,7 @@ static const u16 sDecidueyeFormSpeciesIdTable[] = { }; static const u16 sOricorioFormSpeciesIdTable[] = { - SPECIES_ORICORIO, + SPECIES_ORICORIO_BAILE, SPECIES_ORICORIO_POM_POM, SPECIES_ORICORIO_PAU, SPECIES_ORICORIO_SENSU, @@ -972,20 +1020,20 @@ static const u16 sRockruffFormSpeciesIdTable[] = { }; static const u16 sLycanrocFormSpeciesIdTable[] = { - SPECIES_LYCANROC, + SPECIES_LYCANROC_MIDDAY, SPECIES_LYCANROC_MIDNIGHT, SPECIES_LYCANROC_DUSK, FORM_SPECIES_END, }; static const u16 sWishiwashiFormSpeciesIdTable[] = { - SPECIES_WISHIWASHI, + SPECIES_WISHIWASHI_SOLO, SPECIES_WISHIWASHI_SCHOOL, FORM_SPECIES_END, }; static const u16 sSilvallyFormSpeciesIdTable[] = { - SPECIES_SILVALLY, + SPECIES_SILVALLY_NORMAL, SPECIES_SILVALLY_FIGHTING, SPECIES_SILVALLY_FLYING, SPECIES_SILVALLY_POISON, @@ -1007,7 +1055,7 @@ static const u16 sSilvallyFormSpeciesIdTable[] = { }; static const u16 sMiniorFormSpeciesIdTable[] = { - SPECIES_MINIOR, + SPECIES_MINIOR_METEOR_RED, SPECIES_MINIOR_METEOR_ORANGE, SPECIES_MINIOR_METEOR_YELLOW, SPECIES_MINIOR_METEOR_GREEN, @@ -1025,7 +1073,7 @@ static const u16 sMiniorFormSpeciesIdTable[] = { }; static const u16 sMimikyuFormSpeciesIdTable[] = { - SPECIES_MIMIKYU, + SPECIES_MIMIKYU_DISGUISED, SPECIES_MIMIKYU_BUSTED, FORM_SPECIES_END, }; @@ -1046,6 +1094,73 @@ static const u16 sMagearnaFormSpeciesIdTable[] = { #endif #if P_GEN_8_POKEMON == TRUE +static const u16 sMelmetalFormSpeciesIdTable[] = { + SPECIES_MELMETAL, + SPECIES_MELMETAL_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sRillaboomFormSpeciesIdTable[] = { + SPECIES_RILLABOOM, + SPECIES_RILLABOOM_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sCinderaceFormSpeciesIdTable[] = { + SPECIES_CINDERACE, + SPECIES_CINDERACE_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sInteleonFormSpeciesIdTable[] = { + SPECIES_INTELEON, + SPECIES_INTELEON_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sCorviknightFormSpeciesIdTable[] = { + SPECIES_CORVIKNIGHT, + SPECIES_CORVIKNIGHT_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sOrbeetleFormSpeciesIdTable[] = { + SPECIES_ORBEETLE, + SPECIES_ORBEETLE_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sDrednawFormSpeciesIdTable[] = { + SPECIES_DREDNAW, + SPECIES_DREDNAW_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sCoalossalFormSpeciesIdTable[] = { + SPECIES_COALOSSAL, + SPECIES_COALOSSAL_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sFlappleFormSpeciesIdTable[] = { + SPECIES_FLAPPLE, + SPECIES_FLAPPLE_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sAppletunFormSpeciesIdTable[] = { + SPECIES_APPLETUN, + SPECIES_APPLETUN_GIGANTAMAX, + FORM_SPECIES_END, +}; + + +static const u16 sSandacondaFormSpeciesIdTable[] = { + SPECIES_SANDACONDA, + SPECIES_SANDACONDA_GIGANTAMAX, + FORM_SPECIES_END, +}; + static const u16 sCramorantFormSpeciesIdTable[] = { SPECIES_CRAMORANT, SPECIES_CRAMORANT_GULPING, @@ -1054,62 +1169,94 @@ static const u16 sCramorantFormSpeciesIdTable[] = { }; static const u16 sToxtricityFormSpeciesIdTable[] = { - SPECIES_TOXTRICITY, + SPECIES_TOXTRICITY_AMPED, SPECIES_TOXTRICITY_LOW_KEY, + SPECIES_TOXTRICITY_AMPED_GIGANTAMAX, + SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sCentiskorchFormSpeciesIdTable[] = { + SPECIES_CENTISKORCH, + SPECIES_CENTISKORCH_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sHattereneFormSpeciesIdTable[] = { + SPECIES_HATTERENE, + SPECIES_HATTERENE_GIGANTAMAX, FORM_SPECIES_END, }; static const u16 sSinisteaFormSpeciesIdTable[] = { - SPECIES_SINISTEA, + SPECIES_SINISTEA_PHONY, SPECIES_SINISTEA_ANTIQUE, FORM_SPECIES_END, }; static const u16 sPolteageistFormSpeciesIdTable[] = { - SPECIES_POLTEAGEIST, + SPECIES_POLTEAGEIST_PHONY, SPECIES_POLTEAGEIST_ANTIQUE, FORM_SPECIES_END, }; +static const u16 sGrimmsnarlFormSpeciesIdTable[] = { + SPECIES_GRIMMSNARL, + SPECIES_GRIMMSNARL_GIGANTAMAX, + FORM_SPECIES_END, +}; + static const u16 sAlcremieFormSpeciesIdTable[] = { - SPECIES_ALCREMIE, - SPECIES_ALCREMIE_RUBY_CREAM, - SPECIES_ALCREMIE_MATCHA_CREAM, - SPECIES_ALCREMIE_MINT_CREAM, - SPECIES_ALCREMIE_LEMON_CREAM, - SPECIES_ALCREMIE_SALTED_CREAM, - SPECIES_ALCREMIE_RUBY_SWIRL, - SPECIES_ALCREMIE_CARAMEL_SWIRL, - SPECIES_ALCREMIE_RAINBOW_SWIRL, + SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, + SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, + SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, FORM_SPECIES_END, }; static const u16 sEiscueFormSpeciesIdTable[] = { - SPECIES_EISCUE, + SPECIES_EISCUE_ICE_FACE, SPECIES_EISCUE_NOICE_FACE, FORM_SPECIES_END, }; static const u16 sIndeedeeFormSpeciesIdTable[] = { - SPECIES_INDEEDEE, + SPECIES_INDEEDEE_MALE, SPECIES_INDEEDEE_FEMALE, FORM_SPECIES_END, }; static const u16 sMorpekoFormSpeciesIdTable[] = { - SPECIES_MORPEKO, + SPECIES_MORPEKO_FULL_BELLY, SPECIES_MORPEKO_HANGRY, FORM_SPECIES_END, }; +static const u16 sCopperajahFormSpeciesIdTable[] = { + SPECIES_COPPERAJAH, + SPECIES_COPPERAJAH_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sDuraludonFormSpeciesIdTable[] = { + SPECIES_DURALUDON, + SPECIES_DURALUDON_GIGANTAMAX, + FORM_SPECIES_END, +}; + static const u16 sZacianFormSpeciesIdTable[] = { - SPECIES_ZACIAN, + SPECIES_ZACIAN_HERO_OF_MANY_BATTLES, SPECIES_ZACIAN_CROWNED_SWORD, FORM_SPECIES_END, }; static const u16 sZamazentaFormSpeciesIdTable[] = { - SPECIES_ZAMAZENTA, + SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES, SPECIES_ZAMAZENTA_CROWNED_SHIELD, FORM_SPECIES_END, }; @@ -1121,8 +1268,10 @@ static const u16 sEternatusFormSpeciesIdTable[] = { }; static const u16 sUrshifuFormSpeciesIdTable[] = { - SPECIES_URSHIFU, + SPECIES_URSHIFU_SINGLE_STRIKE_STYLE, SPECIES_URSHIFU_RAPID_STRIKE_STYLE, + SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, + SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, FORM_SPECIES_END, }; @@ -1140,13 +1289,13 @@ static const u16 sCalyrexFormSpeciesIdTable[] = { }; static const u16 sEnamorusFormSpeciesIdTable[] = { - SPECIES_ENAMORUS, + SPECIES_ENAMORUS_INCARNATE, SPECIES_ENAMORUS_THERIAN, FORM_SPECIES_END, }; static const u16 sBasculegionFormSpeciesIdTable[] = { - SPECIES_BASCULEGION, + SPECIES_BASCULEGION_MALE, SPECIES_BASCULEGION_FEMALE, FORM_SPECIES_END, }; diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index 81be2ca115..2c7401059e 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -618,6 +618,7 @@ const u8 *const gItemEffectTable[ITEMS_COUNT] = [ITEM_METAL_COAT] = gItemEffect_EvoItem, [ITEM_KINGS_ROCK] = gItemEffect_EvoItem, [ITEM_RAZOR_CLAW] = gItemEffect_EvoItem, + [ITEM_RAZOR_FANG] = gItemEffect_EvoItem, [ITEM_AUSPICIOUS_ARMOR] = gItemEffect_EvoItem, [ITEM_MALICIOUS_ARMOR] = gItemEffect_EvoItem, [ITEM_SCROLL_OF_DARKNESS] = gItemEffect_EvoItem, diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 19b4e42e44..3a6dc86cc8 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -360,7 +360,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_ARON] = sAronLevelUpLearnset, [SPECIES_LAIRON] = sLaironLevelUpLearnset, [SPECIES_AGGRON] = sAggronLevelUpLearnset, - [SPECIES_CASTFORM] = sCastformLevelUpLearnset, + [SPECIES_CASTFORM_NORMAL] = sCastformLevelUpLearnset, [SPECIES_VOLBEAT] = sVolbeatLevelUpLearnset, [SPECIES_ILLUMISE] = sIllumiseLevelUpLearnset, [SPECIES_LILEEP] = sLileepLevelUpLearnset, @@ -385,7 +385,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_LATIAS] = sLatiasLevelUpLearnset, [SPECIES_LATIOS] = sLatiosLevelUpLearnset, [SPECIES_JIRACHI] = sJirachiLevelUpLearnset, - [SPECIES_DEOXYS] = sDeoxysLevelUpLearnset, + [SPECIES_DEOXYS_NORMAL] = sDeoxysNormalLevelUpLearnset, [SPECIES_CHIMECHO] = sChimechoLevelUpLearnset, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = sTurtwigLevelUpLearnset, @@ -413,8 +413,8 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_RAMPARDOS] = sRampardosLevelUpLearnset, [SPECIES_SHIELDON] = sShieldonLevelUpLearnset, [SPECIES_BASTIODON] = sBastiodonLevelUpLearnset, - [SPECIES_BURMY] = sBurmyLevelUpLearnset, - [SPECIES_WORMADAM] = sWormadamLevelUpLearnset, + [SPECIES_BURMY_PLANT_CLOAK] = sBurmyLevelUpLearnset, + [SPECIES_WORMADAM_PLANT_CLOAK] = sWormadamPlantCloakLevelUpLearnset, [SPECIES_MOTHIM] = sMothimLevelUpLearnset, [SPECIES_COMBEE] = sCombeeLevelUpLearnset, [SPECIES_VESPIQUEN] = sVespiquenLevelUpLearnset, @@ -422,9 +422,9 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_BUIZEL] = sBuizelLevelUpLearnset, [SPECIES_FLOATZEL] = sFloatzelLevelUpLearnset, [SPECIES_CHERUBI] = sCherubiLevelUpLearnset, - [SPECIES_CHERRIM] = sCherrimLevelUpLearnset, - [SPECIES_SHELLOS] = sShellosLevelUpLearnset, - [SPECIES_GASTRODON] = sGastrodonLevelUpLearnset, + [SPECIES_CHERRIM_OVERCAST] = sCherrimLevelUpLearnset, + [SPECIES_SHELLOS_WEST_SEA] = sShellosLevelUpLearnset, + [SPECIES_GASTRODON_WEST_SEA] = sGastrodonLevelUpLearnset, [SPECIES_AMBIPOM] = sAmbipomLevelUpLearnset, [SPECIES_DRIFLOON] = sDrifloonLevelUpLearnset, [SPECIES_DRIFBLIM] = sDrifblimLevelUpLearnset, @@ -488,13 +488,13 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_PALKIA] = sPalkiaLevelUpLearnset, [SPECIES_HEATRAN] = sHeatranLevelUpLearnset, [SPECIES_REGIGIGAS] = sRegigigasLevelUpLearnset, - [SPECIES_GIRATINA] = sGiratinaLevelUpLearnset, + [SPECIES_GIRATINA_ALTERED] = sGiratinaLevelUpLearnset, [SPECIES_CRESSELIA] = sCresseliaLevelUpLearnset, [SPECIES_PHIONE] = sPhioneLevelUpLearnset, [SPECIES_MANAPHY] = sManaphyLevelUpLearnset, [SPECIES_DARKRAI] = sDarkraiLevelUpLearnset, - [SPECIES_SHAYMIN] = sShayminLevelUpLearnset, - [SPECIES_ARCEUS] = sArceusLevelUpLearnset, + [SPECIES_SHAYMIN_LAND] = sShayminLandLevelUpLearnset, + [SPECIES_ARCEUS_NORMAL] = sArceusLevelUpLearnset, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = sVictiniLevelUpLearnset, @@ -553,12 +553,12 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_WHIMSICOTT] = sWhimsicottLevelUpLearnset, [SPECIES_PETILIL] = sPetililLevelUpLearnset, [SPECIES_LILLIGANT] = sLilligantLevelUpLearnset, - [SPECIES_BASCULIN] = sBasculinLevelUpLearnset, + [SPECIES_BASCULIN_RED_STRIPED] = sBasculinLevelUpLearnset, [SPECIES_SANDILE] = sSandileLevelUpLearnset, [SPECIES_KROKOROK] = sKrokorokLevelUpLearnset, [SPECIES_KROOKODILE] = sKrookodileLevelUpLearnset, [SPECIES_DARUMAKA] = sDarumakaLevelUpLearnset, - [SPECIES_DARMANITAN] = sDarmanitanLevelUpLearnset, + [SPECIES_DARMANITAN_STANDARD_MODE] = sDarmanitanLevelUpLearnset, [SPECIES_MARACTUS] = sMaractusLevelUpLearnset, [SPECIES_DWEBBLE] = sDwebbleLevelUpLearnset, [SPECIES_CRUSTLE] = sCrustleLevelUpLearnset, @@ -588,8 +588,8 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_VANILLITE] = sVanilliteLevelUpLearnset, [SPECIES_VANILLISH] = sVanillishLevelUpLearnset, [SPECIES_VANILLUXE] = sVanilluxeLevelUpLearnset, - [SPECIES_DEERLING] = sDeerlingLevelUpLearnset, - [SPECIES_SAWSBUCK] = sSawsbuckLevelUpLearnset, + [SPECIES_DEERLING_SPRING] = sDeerlingLevelUpLearnset, + [SPECIES_SAWSBUCK_SPRING] = sSawsbuckLevelUpLearnset, [SPECIES_EMOLGA] = sEmolgaLevelUpLearnset, [SPECIES_KARRABLAST] = sKarrablastLevelUpLearnset, [SPECIES_ESCAVALIER] = sEscavalierLevelUpLearnset, @@ -644,14 +644,14 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_COBALION] = sCobalionLevelUpLearnset, [SPECIES_TERRAKION] = sTerrakionLevelUpLearnset, [SPECIES_VIRIZION] = sVirizionLevelUpLearnset, - [SPECIES_TORNADUS] = sTornadusLevelUpLearnset, - [SPECIES_THUNDURUS] = sThundurusLevelUpLearnset, + [SPECIES_TORNADUS_INCARNATE] = sTornadusLevelUpLearnset, + [SPECIES_THUNDURUS_INCARNATE] = sThundurusLevelUpLearnset, [SPECIES_RESHIRAM] = sReshiramLevelUpLearnset, [SPECIES_ZEKROM] = sZekromLevelUpLearnset, - [SPECIES_LANDORUS] = sLandorusLevelUpLearnset, + [SPECIES_LANDORUS_INCARNATE] = sLandorusLevelUpLearnset, [SPECIES_KYUREM] = sKyuremLevelUpLearnset, - [SPECIES_KELDEO] = sKeldeoLevelUpLearnset, - [SPECIES_MELOETTA] = sMeloettaLevelUpLearnset, + [SPECIES_KELDEO_ORDINARY] = sKeldeoLevelUpLearnset, + [SPECIES_MELOETTA_ARIA] = sMeloettaLevelUpLearnset, [SPECIES_GENESECT] = sGenesectLevelUpLearnset, #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_TALONFLAME] = sTalonflameLevelUpLearnset, [SPECIES_SCATTERBUG] = sScatterbugLevelUpLearnset, [SPECIES_SPEWPA] = sSpewpaLevelUpLearnset, - [SPECIES_VIVILLON] = sVivillonLevelUpLearnset, + [SPECIES_VIVILLON_ICY_SNOW] = sVivillonLevelUpLearnset, [SPECIES_LITLEO] = sLitleoLevelUpLearnset, [SPECIES_PYROAR] = sPyroarLevelUpLearnset, - [SPECIES_FLABEBE] = sFlabebeLevelUpLearnset, - [SPECIES_FLOETTE] = sFloetteLevelUpLearnset, - [SPECIES_FLORGES] = sFlorgesLevelUpLearnset, + [SPECIES_FLABEBE_RED_FLOWER] = sFlabebeLevelUpLearnset, + [SPECIES_FLOETTE_RED_FLOWER] = sFloetteLevelUpLearnset, + [SPECIES_FLORGES_RED_FLOWER] = sFlorgesLevelUpLearnset, [SPECIES_SKIDDO] = sSkiddoLevelUpLearnset, [SPECIES_GOGOAT] = sGogoatLevelUpLearnset, [SPECIES_PANCHAM] = sPanchamLevelUpLearnset, [SPECIES_PANGORO] = sPangoroLevelUpLearnset, - [SPECIES_FURFROU] = sFurfrouLevelUpLearnset, + [SPECIES_FURFROU_NATURAL] = sFurfrouLevelUpLearnset, [SPECIES_ESPURR] = sEspurrLevelUpLearnset, - [SPECIES_MEOWSTIC] = sMeowsticLevelUpLearnset, + [SPECIES_MEOWSTIC_MALE] = sMeowsticMaleLevelUpLearnset, [SPECIES_HONEDGE] = sHonedgeLevelUpLearnset, [SPECIES_DOUBLADE] = sDoubladeLevelUpLearnset, - [SPECIES_AEGISLASH] = sAegislashLevelUpLearnset, + [SPECIES_AEGISLASH_SHIELD] = sAegislashLevelUpLearnset, [SPECIES_SPRITZEE] = sSpritzeeLevelUpLearnset, [SPECIES_AROMATISSE] = sAromatisseLevelUpLearnset, [SPECIES_SWIRLIX] = sSwirlixLevelUpLearnset, @@ -715,17 +715,17 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_KLEFKI] = sKlefkiLevelUpLearnset, [SPECIES_PHANTUMP] = sPhantumpLevelUpLearnset, [SPECIES_TREVENANT] = sTrevenantLevelUpLearnset, - [SPECIES_PUMPKABOO] = sPumpkabooLevelUpLearnset, - [SPECIES_GOURGEIST] = sGourgeistLevelUpLearnset, + [SPECIES_PUMPKABOO_AVERAGE] = sPumpkabooLevelUpLearnset, + [SPECIES_GOURGEIST_AVERAGE] = sGourgeistLevelUpLearnset, [SPECIES_BERGMITE] = sBergmiteLevelUpLearnset, [SPECIES_AVALUGG] = sAvaluggLevelUpLearnset, [SPECIES_NOIBAT] = sNoibatLevelUpLearnset, [SPECIES_NOIVERN] = sNoivernLevelUpLearnset, - [SPECIES_XERNEAS] = sXerneasLevelUpLearnset, + [SPECIES_XERNEAS_NEUTRAL] = sXerneasLevelUpLearnset, [SPECIES_YVELTAL] = sYveltalLevelUpLearnset, - [SPECIES_ZYGARDE] = sZygardeLevelUpLearnset, + [SPECIES_ZYGARDE_50_AURA_BREAK] = sZygardeLevelUpLearnset, [SPECIES_DIANCIE] = sDiancieLevelUpLearnset, - [SPECIES_HOOPA] = sHoopaLevelUpLearnset, + [SPECIES_HOOPA_CONFINED] = sHoopaConfinedLevelUpLearnset, [SPECIES_VOLCANION] = sVolcanionLevelUpLearnset, #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_VIKAVOLT] = sVikavoltLevelUpLearnset, [SPECIES_CRABRAWLER] = sCrabrawlerLevelUpLearnset, [SPECIES_CRABOMINABLE] = sCrabominableLevelUpLearnset, - [SPECIES_ORICORIO] = sOricorioLevelUpLearnset, + [SPECIES_ORICORIO_BAILE] = sOricorioLevelUpLearnset, [SPECIES_CUTIEFLY] = sCutieflyLevelUpLearnset, [SPECIES_RIBOMBEE] = sRibombeeLevelUpLearnset, [SPECIES_ROCKRUFF] = sRockruffLevelUpLearnset, - [SPECIES_LYCANROC] = sLycanrocLevelUpLearnset, - [SPECIES_WISHIWASHI] = sWishiwashiLevelUpLearnset, + [SPECIES_LYCANROC_MIDDAY] = sLycanrocMiddayLevelUpLearnset, + [SPECIES_WISHIWASHI_SOLO] = sWishiwashiLevelUpLearnset, [SPECIES_MAREANIE] = sMareanieLevelUpLearnset, [SPECIES_TOXAPEX] = sToxapexLevelUpLearnset, [SPECIES_MUDBRAY] = sMudbrayLevelUpLearnset, @@ -780,12 +780,12 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_PALOSSAND] = sPalossandLevelUpLearnset, [SPECIES_PYUKUMUKU] = sPyukumukuLevelUpLearnset, [SPECIES_TYPE_NULL] = sTypeNullLevelUpLearnset, - [SPECIES_SILVALLY] = sSilvallyLevelUpLearnset, - [SPECIES_MINIOR] = sMiniorLevelUpLearnset, + [SPECIES_SILVALLY_NORMAL] = sSilvallyLevelUpLearnset, + [SPECIES_MINIOR_METEOR_RED] = sMiniorLevelUpLearnset, [SPECIES_KOMALA] = sKomalaLevelUpLearnset, [SPECIES_TURTONATOR] = sTurtonatorLevelUpLearnset, [SPECIES_TOGEDEMARU] = sTogedemaruLevelUpLearnset, - [SPECIES_MIMIKYU] = sMimikyuLevelUpLearnset, + [SPECIES_MIMIKYU_DISGUISED] = sMimikyuLevelUpLearnset, [SPECIES_BRUXISH] = sBruxishLevelUpLearnset, [SPECIES_DRAMPA] = sDrampaLevelUpLearnset, [SPECIES_DHELMISE] = sDhelmiseLevelUpLearnset, @@ -858,13 +858,13 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_ARROKUDA] = sArrokudaLevelUpLearnset, [SPECIES_BARRASKEWDA] = sBarraskewdaLevelUpLearnset, [SPECIES_TOXEL] = sToxelLevelUpLearnset, - [SPECIES_TOXTRICITY] = sToxtricityLevelUpLearnset, + [SPECIES_TOXTRICITY_AMPED] = sToxtricityAmpedLevelUpLearnset, [SPECIES_SIZZLIPEDE] = sSizzlipedeLevelUpLearnset, [SPECIES_CENTISKORCH] = sCentiskorchLevelUpLearnset, [SPECIES_CLOBBOPUS] = sClobbopusLevelUpLearnset, [SPECIES_GRAPPLOCT] = sGrapploctLevelUpLearnset, - [SPECIES_SINISTEA] = sSinisteaLevelUpLearnset, - [SPECIES_POLTEAGEIST] = sPolteageistLevelUpLearnset, + [SPECIES_SINISTEA_PHONY] = sSinisteaLevelUpLearnset, + [SPECIES_POLTEAGEIST_PHONY] = sPolteageistLevelUpLearnset, [SPECIES_HATENNA] = sHatennaLevelUpLearnset, [SPECIES_HATTREM] = sHattremLevelUpLearnset, [SPECIES_HATTERENE] = sHattereneLevelUpLearnset, @@ -878,15 +878,15 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_MR_RIME] = sMrRimeLevelUpLearnset, [SPECIES_RUNERIGUS] = sRunerigusLevelUpLearnset, [SPECIES_MILCERY] = sMilceryLevelUpLearnset, - [SPECIES_ALCREMIE] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieLevelUpLearnset, [SPECIES_FALINKS] = sFalinksLevelUpLearnset, [SPECIES_PINCURCHIN] = sPincurchinLevelUpLearnset, [SPECIES_SNOM] = sSnomLevelUpLearnset, [SPECIES_FROSMOTH] = sFrosmothLevelUpLearnset, [SPECIES_STONJOURNER] = sStonjournerLevelUpLearnset, - [SPECIES_EISCUE] = sEiscueLevelUpLearnset, - [SPECIES_INDEEDEE] = sIndeedeeLevelUpLearnset, - [SPECIES_MORPEKO] = sMorpekoLevelUpLearnset, + [SPECIES_EISCUE_ICE_FACE] = sEiscueLevelUpLearnset, + [SPECIES_INDEEDEE_MALE] = sIndeedeeMaleLevelUpLearnset, + [SPECIES_MORPEKO_FULL_BELLY] = sMorpekoLevelUpLearnset, [SPECIES_CUFANT] = sCufantLevelUpLearnset, [SPECIES_COPPERAJAH] = sCopperajahLevelUpLearnset, [SPECIES_DRACOZOLT] = sDracozoltLevelUpLearnset, @@ -897,11 +897,11 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_DREEPY] = sDreepyLevelUpLearnset, [SPECIES_DRAKLOAK] = sDrakloakLevelUpLearnset, [SPECIES_DRAGAPULT] = sDragapultLevelUpLearnset, - [SPECIES_ZACIAN] = sZacianLevelUpLearnset, - [SPECIES_ZAMAZENTA] = sZamazentaLevelUpLearnset, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = sZacianLevelUpLearnset, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = sZamazentaLevelUpLearnset, [SPECIES_ETERNATUS] = sEternatusLevelUpLearnset, [SPECIES_KUBFU] = sKubfuLevelUpLearnset, - [SPECIES_URSHIFU] = sUrshifuLevelUpLearnset, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = sUrshifuSingleStrikeStyleLevelUpLearnset, [SPECIES_ZARUDE] = sZarudeLevelUpLearnset, [SPECIES_REGIELEKI] = sRegielekiLevelUpLearnset, [SPECIES_REGIDRAGO] = sRegidragoLevelUpLearnset, @@ -911,10 +911,10 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_WYRDEER] = sWyrdeerLevelUpLearnset, [SPECIES_KLEAVOR] = sKleavorLevelUpLearnset, [SPECIES_URSALUNA] = sUrsalunaLevelUpLearnset, - [SPECIES_BASCULEGION] = sBasculegionLevelUpLearnset, + [SPECIES_BASCULEGION_MALE] = sBasculegionLevelUpLearnset, [SPECIES_SNEASLER] = sSneaslerLevelUpLearnset, [SPECIES_OVERQWIL] = sOverqwilLevelUpLearnset, - [SPECIES_ENAMORUS] = sEnamorusLevelUpLearnset, + [SPECIES_ENAMORUS_INCARNATE] = sEnamorusLevelUpLearnset, #endif // Megas [SPECIES_VENUSAUR_MEGA] = sVenusaurLevelUpLearnset, @@ -1011,7 +1011,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianLevelUpLearnset, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianLevelUpLearnset, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianLevelUpLearnset, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = sDarmanitanGalarianLevelUpLearnset, [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianLevelUpLearnset, [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianLevelUpLearnset, #endif @@ -1143,7 +1143,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinLevelUpLearnset, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanLevelUpLearnset, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianLevelUpLearnset, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = sDarmanitanGalarianLevelUpLearnset, // Deerling [SPECIES_DEERLING_SUMMER] = sDeerlingLevelUpLearnset, [SPECIES_DEERLING_AUTUMN] = sDeerlingLevelUpLearnset, @@ -1234,7 +1234,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = // Xerneas [SPECIES_XERNEAS_ACTIVE] = sXerneasLevelUpLearnset, // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeLevelUpLearnset, + [SPECIES_ZYGARDE_10_AURA_BREAK] = sZygardeLevelUpLearnset, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeLevelUpLearnset, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeLevelUpLearnset, [SPECIES_ZYGARDE_COMPLETE] = sZygardeLevelUpLearnset, @@ -1305,14 +1305,14 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistLevelUpLearnset, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueLevelUpLearnset, // Indeedee @@ -1334,6 +1334,42 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderLevelUpLearnset, // Enamorus [SPECIES_ENAMORUS_THERIAN] = sEnamorusLevelUpLearnset, + // Basculegion [SPECIES_BASCULEGION_FEMALE] = sBasculegionLevelUpLearnset, + // Gigantamax Forms + [SPECIES_VENUSAUR_GIGANTAMAX] = sVenusaurLevelUpLearnset, + [SPECIES_CHARIZARD_GIGANTAMAX] = sCharizardLevelUpLearnset, + [SPECIES_BLASTOISE_GIGANTAMAX] = sBlastoiseLevelUpLearnset, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sButterfreeLevelUpLearnset, + [SPECIES_PIKACHU_GIGANTAMAX] = sPikachuLevelUpLearnset, + [SPECIES_MEOWTH_GIGANTAMAX] = sMeowthLevelUpLearnset, + [SPECIES_MACHAMP_GIGANTAMAX] = sMachampLevelUpLearnset, + [SPECIES_GENGAR_GIGANTAMAX] = sGengarLevelUpLearnset, + [SPECIES_KINGLER_GIGANTAMAX] = sKinglerLevelUpLearnset, + [SPECIES_LAPRAS_GIGANTAMAX] = sLaprasLevelUpLearnset, + [SPECIES_EEVEE_GIGANTAMAX] = sEeveeLevelUpLearnset, + [SPECIES_SNORLAX_GIGANTAMAX] = sSnorlaxLevelUpLearnset, + [SPECIES_GARBODOR_GIGANTAMAX] = sGarbodorLevelUpLearnset, + [SPECIES_MELMETAL_GIGANTAMAX] = sMelmetalLevelUpLearnset, + [SPECIES_RILLABOOM_GIGANTAMAX] = sRillaboomLevelUpLearnset, + [SPECIES_CINDERACE_GIGANTAMAX] = sCinderaceLevelUpLearnset, + [SPECIES_INTELEON_GIGANTAMAX] = sInteleonLevelUpLearnset, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sCorviknightLevelUpLearnset, + [SPECIES_ORBEETLE_GIGANTAMAX] = sOrbeetleLevelUpLearnset, + [SPECIES_DREDNAW_GIGANTAMAX] = sDrednawLevelUpLearnset, + [SPECIES_COALOSSAL_GIGANTAMAX] = sCoalossalLevelUpLearnset, + [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleLevelUpLearnset, + [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunLevelUpLearnset, + [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaLevelUpLearnset, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityAmpedLevelUpLearnset, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sToxtricityLowKeyLevelUpLearnset, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchLevelUpLearnset, + [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneLevelUpLearnset, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlLevelUpLearnset, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieLevelUpLearnset, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahLevelUpLearnset, + [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonLevelUpLearnset, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = sUrshifuSingleStrikeStyleLevelUpLearnset, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuRapidStrikeStyleLevelUpLearnset, #endif }; diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h index d7e866d933..092a711918 100644 --- a/src/data/pokemon/level_up_learnsets.h +++ b/src/data/pokemon/level_up_learnsets.h @@ -7862,7 +7862,7 @@ static const struct LevelUpMove sJirachiLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sDeoxysLevelUpLearnset[] = { +static const struct LevelUpMove sDeoxysNormalLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_WRAP), LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), @@ -8356,7 +8356,7 @@ static const struct LevelUpMove sBurmyLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sWormadamLevelUpLearnset[] = { +static const struct LevelUpMove sWormadamPlantCloakLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_QUIVER_DANCE), LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), @@ -9959,7 +9959,7 @@ static const struct LevelUpMove sDarkraiLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sShayminLevelUpLearnset[] = { +static const struct LevelUpMove sShayminLandLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWTH), LEVEL_UP_MOVE(10, MOVE_MAGICAL_LEAF), LEVEL_UP_MOVE(19, MOVE_LEECH_SEED), @@ -13816,7 +13816,7 @@ static const struct LevelUpMove sEspurrLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sMeowsticLevelUpLearnset[] = { +static const struct LevelUpMove sMeowsticMaleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_QUICK_GUARD), LEVEL_UP_MOVE( 1, MOVE_MEAN_LOOK), LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), @@ -14707,7 +14707,7 @@ static const struct LevelUpMove sDiancieLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sHoopaLevelUpLearnset[] = { +static const struct LevelUpMove sHoopaConfinedLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HYPERSPACE_HOLE), LEVEL_UP_MOVE( 1, MOVE_TRICK), LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), @@ -15233,7 +15233,7 @@ static const struct LevelUpMove sRockruffLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sLycanrocLevelUpLearnset[] = { +static const struct LevelUpMove sLycanrocMiddayLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_ACCELEROCK), LEVEL_UP_MOVE( 1, MOVE_ACCELEROCK), LEVEL_UP_MOVE( 1, MOVE_QUICK_GUARD), @@ -17156,7 +17156,7 @@ static const struct LevelUpMove sToxelLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sToxtricityLevelUpLearnset[] = { +static const struct LevelUpMove sToxtricityAmpedLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_SPARK), LEVEL_UP_MOVE( 1, MOVE_SPARK), LEVEL_UP_MOVE( 1, MOVE_EERIE_IMPULSE), @@ -17678,7 +17678,7 @@ static const struct LevelUpMove sEiscueLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sIndeedeeLevelUpLearnset[] = { +static const struct LevelUpMove sIndeedeeMaleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), LEVEL_UP_MOVE( 5, MOVE_ENCORE), @@ -17962,7 +17962,7 @@ static const struct LevelUpMove sKubfuLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sUrshifuLevelUpLearnset[] = { +static const struct LevelUpMove sUrshifuSingleStrikeStyleLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_WICKED_BLOW), LEVEL_UP_MOVE( 1, MOVE_WICKED_BLOW), LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index 52b5fac92c..ad4822ba47 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -6,6 +6,14 @@ #define FLIP 0 #define NO_FLIP 1 +#if P_UPDATED_STATS >= GEN_6 + #define BUTTERFREE_SP_ATK\ + .baseSpAttack = 90, +#else + #define BUTTERFREE_SP_ATK\ + .baseSpAttack = 80, +#endif + #if P_UPDATED_STATS >= GEN_6 #define PIKACHU_BASE_DEFENSES\ .baseDefense = 40, \ @@ -16,8 +24,98 @@ .baseSpDefense = 40 #endif -#define PIKACHU_SPECIES_INFO(gender, flip) \ - { \ +#if P_UPDATED_ABILITIES >= GEN_7 + #define GENGAR_ABILITIES\ + .abilities = {ABILITY_CURSED_BODY, ABILITY_NONE}, +#else + #define GENGAR_ABILITIES\ + .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, +#endif + +#define VENUSAUR_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = 82, \ + .baseDefense = 83, \ + .baseSpeed = 80, \ + .baseSpAttack = 100, \ + .baseSpDefense = 100, \ + .types = {TYPE_GRASS, TYPE_POISON}, \ + .catchRate = 45, \ + .expYield = 236, \ + .evYield_SpAttack = 2, \ + .evYield_SpDefense = 1, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, \ + .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE + +#define CHARIZARD_MISC_INFO \ + .baseHP = 78, \ + .baseAttack = 84, \ + .baseDefense = 78, \ + .baseSpeed = 100, \ + .baseSpAttack = 109, \ + .baseSpDefense = 85, \ + .types = {TYPE_FIRE, TYPE_FLYING}, \ + .catchRate = 45, \ + .expYield = 240, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, \ + .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER},\ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = FALSE + +#define BLASTOISE_MISC_INFO \ + .baseHP = 79, \ + .baseAttack = 83, \ + .baseDefense = 100, \ + .baseSpeed = 78, \ + .baseSpAttack = 85, \ + .baseSpDefense = 105, \ + .types = {TYPE_WATER, TYPE_WATER}, \ + .catchRate = 45, \ + .expYield = 239, \ + .evYield_SpDefense = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, \ + .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH},\ + .bodyColor = BODY_COLOR_BLUE, \ + .noFlip = FALSE + +#define BUTTERFREE_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 45, \ + .baseDefense = 50, \ + .baseSpeed = 70, \ + .baseSpDefense = 80, \ + BUTTERFREE_SP_ATK \ + .types = {TYPE_BUG, TYPE_FLYING}, \ + .catchRate = 45, \ + .expYield = 178, \ + .evYield_SpAttack = 2, \ + .evYield_SpDefense = 1, \ + .itemRare = ITEM_SILVER_POWDER, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_BUG, EGG_GROUP_BUG}, \ + .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS},\ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = FALSE + +#define PIKACHU_MISC_INFO(gender, flip) \ .baseHP = 35, \ .baseAttack = 55, \ .baseSpeed = 90, \ @@ -35,11 +133,156 @@ .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD},\ .bodyColor = BODY_COLOR_YELLOW, \ - .noFlip = flip, \ - } + .noFlip = flip -#define COSPLAY_PIKACHU_SPECIES_INFO(flip) PIKACHU_SPECIES_INFO(MON_FEMALE, flip) -#define CAP_PIKACHU_SPECIES_INFO(flip) PIKACHU_SPECIES_INFO(MON_MALE, flip) +#define MEOWTH_MISC_INFO \ + .baseHP = 40, \ + .baseAttack = 45, \ + .baseDefense = 35, \ + .baseSpeed = 90, \ + .baseSpAttack = 40, \ + .baseSpDefense = 40, \ + .types = {TYPE_NORMAL, TYPE_NORMAL}, \ + .catchRate = 255, \ + .expYield = 58, \ + .evYield_Speed = 1, \ + .itemRare = ITEM_QUICK_CLAW, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ + .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE}, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .noFlip = FALSE + +#define MACHAMP_MISC_INFO \ + .baseHP = 90, \ + .baseAttack = 130, \ + .baseDefense = 80, \ + .baseSpeed = 55, \ + .baseSpAttack = 65, \ + .baseSpDefense = 85, \ + .types = {TYPE_FIGHTING, TYPE_FIGHTING}, \ + .catchRate = 45, \ + .expYield = 227, \ + .evYield_Attack = 3, \ + .itemRare = ITEM_FOCUS_BAND, \ + .genderRatio = PERCENT_FEMALE(25), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, \ + .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE + +#define GENGAR_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 65, \ + .baseDefense = 60, \ + .baseSpeed = 110, \ + .baseSpAttack = 130, \ + .baseSpDefense = 75, \ + .types = {TYPE_GHOST, TYPE_POISON}, \ + .catchRate = 45, \ + .expYield = 225, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS},\ + GENGAR_ABILITIES \ + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE + +#define KINGLER_MISC_INFO \ + .baseHP = 55, \ + .baseAttack = 130, \ + .baseDefense = 115, \ + .baseSpeed = 75, \ + .baseSpAttack = 50, \ + .baseSpDefense = 50, \ + .types = {TYPE_WATER, TYPE_WATER}, \ + .catchRate = 60, \ + .expYield = 166, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, \ + .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, \ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = TRUE + +#define LAPRAS_MISC_INFO \ + .baseHP = 130, \ + .baseAttack = 85, \ + .baseDefense = 80, \ + .baseSpeed = 60, \ + .baseSpAttack = 85, \ + .baseSpDefense = 95, \ + .types = {TYPE_WATER, TYPE_ICE}, \ + .catchRate = 45, \ + .expYield = 187, \ + .evYield_HP = 2, \ + .itemCommon = ITEM_MYSTIC_WATER, \ + .itemRare = ITEM_MYSTIC_WATER, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, \ + .abilities = {ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION},\ + .bodyColor = BODY_COLOR_BLUE, \ + .noFlip = FALSE + +#define EEVEE_MISC_INFO \ + .baseHP = 55, \ + .baseAttack = 55, \ + .baseDefense = 50, \ + .baseSpeed = 55, \ + .baseSpAttack = 45, \ + .baseSpDefense = 65, \ + .types = {TYPE_NORMAL, TYPE_NORMAL}, \ + .catchRate = 45, \ + .expYield = 65, \ + .evYield_SpDefense = 1, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 35, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ + .abilities = {ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION},\ + .bodyColor = BODY_COLOR_BROWN, \ + .noFlip = FALSE + +#define SNORLAX_MISC_INFO \ + .baseHP = 160, \ + .baseAttack = 110, \ + .baseDefense = 65, \ + .baseSpeed = 30, \ + .baseSpAttack = 65, \ + .baseSpDefense = 110, \ + .types = {TYPE_NORMAL, TYPE_NORMAL}, \ + .catchRate = 25, \ + .expYield = 189, \ + .evYield_HP = 2, \ + .itemCommon = ITEM_LEFTOVERS, \ + .itemRare = ITEM_LEFTOVERS, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, \ + .abilities = {ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, \ + .bodyColor = BODY_COLOR_BLACK, \ + .noFlip = FALSE + +#define COSPLAY_PIKACHU_SPECIES_INFO(flip) { PIKACHU_MISC_INFO(MON_FEMALE, flip) } +#define CAP_PIKACHU_SPECIES_INFO(flip) { PIKACHU_MISC_INFO(MON_MALE, flip) } #define PICHU_SPECIES_INFO(flip) \ { \ @@ -245,7 +488,29 @@ .flags = SPECIES_FLAG_MYTHICAL, \ } -#define DEERLING_SPECIES_INFO(color) \ +#define GARBODOR_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = 95, \ + .baseDefense = 82, \ + .baseSpeed = 75, \ + .baseSpAttack = 60, \ + .baseSpDefense = 82, \ + .types = {TYPE_POISON, TYPE_POISON}, \ + .catchRate = 60, \ + .expYield = 166, \ + .evYield_Attack = 2, \ + .itemCommon = ITEM_SILK_SCARF, \ + .itemRare = ITEM_BLACK_SLUDGE, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, \ + .abilities = {ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = TRUE + +#define DEERLING_SPECIES_INFO(color) \ { \ .baseHP = 60, \ .baseAttack = 60, \ @@ -682,7 +947,229 @@ .flags = SPECIES_FLAG_MYTHICAL, \ } -#define CRAMORANT_SPECIES_INFO \ +#define MELMETAL_MISC_INFO \ + .baseHP = 135, \ + .baseAttack = 143, \ + .baseDefense = 143, \ + .baseSpeed = 34, \ + .baseSpAttack = 80, \ + .baseSpDefense = 65, \ + .types = {TYPE_STEEL, TYPE_STEEL}, \ + .catchRate = 3, \ + .expYield = 270, \ + .evYield_Attack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ + .abilities = {ABILITY_IRON_FIST, ABILITY_NONE}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE, \ + .flags = SPECIES_FLAG_MYTHICAL + +#define RILLABOOM_MISC_INFO \ + .baseHP = 100, \ + .baseAttack = 125, \ + .baseDefense = 90, \ + .baseSpeed = 85, \ + .baseSpAttack = 60, \ + .baseSpDefense = 70, \ + .types = {TYPE_GRASS, TYPE_GRASS}, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_GRASS}, \ + .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE},\ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE + +#define CINDERACE_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = 116, \ + .baseDefense = 75, \ + .baseSpeed = 119, \ + .baseSpAttack = 65, \ + .baseSpDefense = 75, \ + .types = {TYPE_FIRE, TYPE_FIRE}, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, \ + .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, \ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = FALSE + +#define INTELEON_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 85, \ + .baseDefense = 65, \ + .baseSpeed = 120, \ + .baseSpAttack = 125, \ + .baseSpDefense = 65, \ + .types = {TYPE_WATER, TYPE_WATER}, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, \ + .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, \ + .bodyColor = BODY_COLOR_BLUE, \ + .noFlip = FALSE + +#define CORVIKNIGHT_MISC_INFO \ + .baseHP = 98, \ + .baseAttack = 87, \ + .baseDefense = 105, \ + .baseSpeed = 67, \ + .baseSpAttack = 53, \ + .baseSpDefense = 85, \ + .types = {TYPE_FLYING, TYPE_STEEL}, \ + .catchRate = 45, \ + .expYield = 248, \ + .evYield_Defense = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_FLYING, EGG_GROUP_FLYING}, \ + .abilities = {ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR}, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE + +#define ORBEETLE_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 45, \ + .baseDefense = 110, \ + .baseSpeed = 90, \ + .baseSpAttack = 80, \ + .baseSpDefense = 120, \ + .types = {TYPE_BUG, TYPE_PSYCHIC}, \ + .catchRate = 45, \ + .expYield = 253, \ + .evYield_SpDefense = 3, \ + .itemRare = ITEM_PSYCHIC_SEED, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_BUG, EGG_GROUP_BUG}, \ + .abilities = {ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY}, \ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = FALSE + +#define DREDNAW_MISC_INFO \ + .baseHP = 90, \ + .baseAttack = 115, \ + .baseDefense = 90, \ + .baseSpeed = 74, \ + .baseSpAttack = 48, \ + .baseSpDefense = 68, \ + .types = {TYPE_WATER, TYPE_ROCK}, \ + .catchRate = 75, \ + .expYield = 170, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, \ + .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE + +#define COALOSSAL_MISC_INFO \ + .baseHP = 110, \ + .baseAttack = 80, \ + .baseDefense = 120, \ + .baseSpeed = 30, \ + .baseSpAttack = 80, \ + .baseSpDefense = 90, \ + .types = {TYPE_ROCK, TYPE_FIRE}, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_Defense = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = {EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, \ + .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE},\ + .bodyColor = BODY_COLOR_BLACK, \ + .noFlip = FALSE + +#define FLAPPLE_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 110, \ + .baseDefense = 80, \ + .baseSpeed = 70, \ + .baseSpAttack = 95, \ + .baseSpDefense = 60, \ + .types = {TYPE_GRASS, TYPE_DRAGON}, \ + .catchRate = 45, \ + .expYield = 170, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_ERRATIC, \ + .eggGroups = {EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, \ + .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE + +#define APPLETUN_MISC_INFO \ + .baseHP = 110, \ + .baseAttack = 85, \ + .baseDefense = 80, \ + .baseSpeed = 30, \ + .baseSpAttack = 100, \ + .baseSpDefense = 80, \ + .types = {TYPE_GRASS, TYPE_DRAGON}, \ + .catchRate = 45, \ + .expYield = 170, \ + .evYield_HP = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_ERRATIC, \ + .eggGroups = {EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, \ + .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE + +#define SANDACONDA_MISC_INFO \ + .baseHP = 72, \ + .baseAttack = 107, \ + .baseDefense = 125, \ + .baseSpeed = 71, \ + .baseSpAttack = 65, \ + .baseSpDefense = 70, \ + .types = {TYPE_GROUND, TYPE_GROUND}, \ + .catchRate = 120, \ + .expYield = 179, \ + .evYield_Defense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, \ + .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE + +#define CRAMORANT_SPECIES_INFO \ { \ .baseHP = 70, \ .baseAttack = 85, \ @@ -704,29 +1191,47 @@ .noFlip = FALSE, \ } -#define TOXTRICITY_SPECIES_INFO(ability2) \ - { \ - .baseHP = 75, \ - .baseAttack = 98, \ - .baseDefense = 70, \ - .baseSpeed = 75, \ - .baseSpAttack = 114, \ - .baseSpDefense = 70, \ - .types = { TYPE_ELECTRIC, TYPE_POISON}, \ - .catchRate = 45, \ - .expYield = 176, \ - .evYield_SpAttack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, \ - .abilities = {ABILITY_PUNK_ROCK, ability2, ABILITY_TECHNICIAN},\ - .bodyColor = BODY_COLOR_PURPLE, \ - .noFlip = FALSE, \ - } +#define TOXTRICITY_MISC_INFO(ability2) \ + .baseHP = 75, \ + .baseAttack = 98, \ + .baseDefense = 70, \ + .baseSpeed = 75, \ + .baseSpAttack = 114, \ + .baseSpDefense = 70, \ + .types = { TYPE_ELECTRIC, TYPE_POISON}, \ + .catchRate = 45, \ + .expYield = 176, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, \ + .abilities = {ABILITY_PUNK_ROCK, ability2, ABILITY_TECHNICIAN}, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE -#define SINISTEA_SPECIES_INFO \ +#define CENTISKORCH_MISC_INFO \ + .baseHP = 100, \ + .baseAttack = 115, \ + .baseDefense = 65, \ + .baseSpeed = 65, \ + .baseSpAttack = 90, \ + .baseSpDefense = 90, \ + .types = {TYPE_FIRE, TYPE_BUG}, \ + .catchRate = 75, \ + .expYield = 184, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_BUG, EGG_GROUP_BUG}, \ + .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, \ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = FALSE + +#define SINISTEA_SPECIES_INFO \ { \ .baseHP = 40, \ .baseAttack = 45, \ @@ -770,8 +1275,47 @@ .noFlip = FALSE, \ } -#define ALCREMIE_SPECIES_INFO(color) \ - { \ +#define HATTERENE_MISC_INFO \ + .baseHP = 57, \ + .baseAttack = 90, \ + .baseDefense = 95, \ + .baseSpeed = 29, \ + .baseSpAttack = 136, \ + .baseSpDefense = 103, \ + .types = {TYPE_PSYCHIC, TYPE_FAIRY}, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ + .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, \ + .bodyColor = BODY_COLOR_PINK, \ + .noFlip = FALSE + +#define GRIMMSNARL_MISC_INFO \ + .baseHP = 95, \ + .baseAttack = 120, \ + .baseDefense = 65, \ + .baseSpeed = 60, \ + .baseSpAttack = 95, \ + .baseSpDefense = 75, \ + .types = {TYPE_DARK, TYPE_FAIRY}, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_Attack = 3, \ + .genderRatio = MON_MALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, \ + .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET},\ + .bodyColor = BODY_COLOR_PURPLE, \ + .noFlip = FALSE + +#define ALCREMIE_MISC_INFO(color) \ .baseHP = 65, \ .baseAttack = 60, \ .baseDefense = 75, \ @@ -784,13 +1328,12 @@ .evYield_SpDefense = 2, \ .genderRatio = MON_FEMALE, \ .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ + .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL},\ .bodyColor = color, \ - .noFlip = FALSE, \ - } + .noFlip = FALSE #define MORPEKO_SPECIES_INFO \ { \ @@ -808,13 +1351,96 @@ .eggCycles = 10, \ .friendship = STANDARD_FRIENDSHIP, \ .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ .abilities = {ABILITY_HUNGER_SWITCH, ABILITY_NONE},\ .bodyColor = BODY_COLOR_YELLOW, \ .noFlip = FALSE, \ } -#define ZARUDE_SPECIES_INFO \ +#define COPPERAJAH_MISC_INFO \ + .baseHP = 122, \ + .baseAttack = 130, \ + .baseDefense = 69, \ + .baseSpeed = 30, \ + .baseSpAttack = 80, \ + .baseSpDefense = 69, \ + .types = {TYPE_STEEL, TYPE_STEEL}, \ + .catchRate = 90, \ + .expYield = 175, \ + .evYield_Attack = 2, \ + .itemRare = ITEM_LAGGING_TAIL, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_FIELD, EGG_GROUP_MINERAL}, \ + .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = FALSE + +#define DURALUDON_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 95, \ + .baseDefense = 115, \ + .baseSpeed = 85, \ + .baseSpAttack = 120, \ + .baseSpDefense = 50, \ + .types = {TYPE_STEEL, TYPE_DRAGON}, \ + .catchRate = 45, \ + .expYield = 187, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 30, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = {EGG_GROUP_MINERAL, EGG_GROUP_DRAGON}, \ + .abilities = {ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART}, \ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = FALSE + +#define URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO \ + .baseHP = 100, \ + .baseAttack = 130, \ + .baseDefense = 100, \ + .baseSpeed = 97, \ + .baseSpAttack = 63, \ + .baseSpDefense = 60, \ + .types = {TYPE_FIGHTING, TYPE_DARK}, \ + .catchRate = 3, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 120, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ + .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE, \ + .flags = SPECIES_FLAG_LEGENDARY + +#define URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO \ + .baseHP = 100, \ + .baseAttack = 130, \ + .baseDefense = 100, \ + .baseSpeed = 97, \ + .baseSpAttack = 63, \ + .baseSpDefense = 60, \ + .types = {TYPE_FIGHTING, TYPE_WATER}, \ + .catchRate = 3, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 120, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = {EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ + .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = FALSE, \ + .flags = SPECIES_FLAG_LEGENDARY + +#define ZARUDE_SPECIES_INFO \ { \ .baseHP = 105, \ .baseAttack = 120, \ @@ -886,28 +1512,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_VENUSAUR] = - { - .baseHP = 80, - .baseAttack = 82, - .baseDefense = 83, - .baseSpeed = 80, - .baseSpAttack = 100, - .baseSpDefense = 100, - .types = { TYPE_GRASS, TYPE_POISON }, - .catchRate = 45, - .expYield = 236, - .evYield_SpAttack = 2, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, + [SPECIES_VENUSAUR] = { VENUSAUR_MISC_INFO, }, [SPECIES_CHARMANDER] = { @@ -956,24 +1561,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_CHARIZARD] = { - .baseHP = 78, - .baseAttack = 84, - .baseDefense = 78, - .baseSpeed = 100, - .baseSpAttack = 109, - .baseSpDefense = 85, - .types = { TYPE_FIRE, TYPE_FLYING }, - .catchRate = 45, - .expYield = 240, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, + CHARIZARD_MISC_INFO, }, [SPECIES_SQUIRTLE] = @@ -1023,24 +1611,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_BLASTOISE] = { - .baseHP = 79, - .baseAttack = 83, - .baseDefense = 100, - .baseSpeed = 78, - .baseSpAttack = 85, - .baseSpDefense = 105, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 45, - .expYield = 239, - .evYield_SpDefense = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, + BLASTOISE_MISC_INFO, }, [SPECIES_CATERPIE] = @@ -1087,33 +1658,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_BUTTERFREE] = - { - .baseHP = 60, - .baseAttack = 45, - .baseDefense = 50, - .baseSpeed = 70, - .baseSpDefense = 80, - #if P_UPDATED_STATS >= GEN_6 - .baseSpAttack = 90, - #else - .baseSpAttack = 80, - #endif - .types = { TYPE_BUG, TYPE_FLYING}, - .catchRate = 45, - .expYield = 178, - .evYield_SpAttack = 2, - .evYield_SpDefense = 1, - .itemRare = ITEM_SILVER_POWDER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, + [SPECIES_BUTTERFREE] = { BUTTERFREE_MISC_INFO, }, [SPECIES_WEEDLE] = { @@ -1395,7 +1940,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_PIKACHU] = PIKACHU_SPECIES_INFO(PERCENT_FEMALE(50), FLIP), + [SPECIES_PIKACHU] = { PIKACHU_MISC_INFO(PERCENT_FEMALE(50), FLIP) }, [SPECIES_RAICHU] = { @@ -2036,25 +2581,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_MEOWTH] = { - .baseHP = 40, - .baseAttack = 45, - .baseDefense = 35, - .baseSpeed = 90, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 255, - .expYield = 58, - .evYield_Speed = 1, - .itemRare = ITEM_QUICK_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, + MEOWTH_MISC_INFO }, [SPECIES_PERSIAN] = @@ -2405,25 +2932,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_MACHAMP] = { - .baseHP = 90, - .baseAttack = 130, - .baseDefense = 80, - .baseSpeed = 55, - .baseSpAttack = 65, - .baseSpDefense = 85, - .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .catchRate = 45, - .expYield = 227, - .evYield_Attack = 3, - .itemRare = ITEM_FOCUS_BAND, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, + MACHAMP_MISC_INFO }, [SPECIES_BELLSPROUT] = @@ -3013,28 +3522,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_GENGAR] = { - .baseHP = 60, - .baseAttack = 65, - .baseDefense = 60, - .baseSpeed = 110, - .baseSpAttack = 130, - .baseSpDefense = 75, - .types = { TYPE_GHOST, TYPE_POISON }, - .catchRate = 45, - .expYield = 225, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - #if P_UPDATED_ABILITIES >= GEN_7 - .abilities = {ABILITY_CURSED_BODY, ABILITY_NONE}, - #else - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - #endif - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, + GENGAR_MISC_INFO }, [SPECIES_ONIX] = @@ -3127,24 +3615,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_KINGLER] = { - .baseHP = 55, - .baseAttack = 130, - .baseDefense = 115, - .baseSpeed = 75, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 60, - .expYield = 166, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = TRUE, + KINGLER_MISC_INFO, }, [SPECIES_VOLTORB] = @@ -3870,26 +4341,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_LAPRAS] = { - .baseHP = 130, - .baseAttack = 85, - .baseDefense = 80, - .baseSpeed = 60, - .baseSpAttack = 85, - .baseSpDefense = 95, - .types = { TYPE_WATER, TYPE_ICE }, - .catchRate = 45, - .expYield = 187, - .evYield_HP = 2, - .itemCommon = ITEM_MYSTIC_WATER, - .itemRare = ITEM_MYSTIC_WATER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, + LAPRAS_MISC_INFO, }, [SPECIES_DITTO] = @@ -3918,24 +4370,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_EEVEE] = { - .baseHP = 55, - .baseAttack = 55, - .baseDefense = 50, - .baseSpeed = 55, - .baseSpAttack = 45, - .baseSpDefense = 65, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 65, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, + EEVEE_MISC_INFO, }, [SPECIES_VAPOREON] = @@ -4138,26 +4573,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_SNORLAX] = { - .baseHP = 160, - .baseAttack = 110, - .baseDefense = 65, - .baseSpeed = 30, - .baseSpAttack = 65, - .baseSpDefense = 110, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 25, - .expYield = 189, - .evYield_HP = 2, - .itemCommon = ITEM_LEFTOVERS, - .itemRare = ITEM_LEFTOVERS, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, + SNORLAX_MISC_INFO, }, [SPECIES_ARTICUNO] = @@ -8978,7 +9394,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_CASTFORM] = CASTFORM_SPECIES_INFO(TYPE_NORMAL, BODY_COLOR_GRAY), + [SPECIES_CASTFORM_NORMAL] = CASTFORM_SPECIES_INFO(TYPE_NORMAL, BODY_COLOR_GRAY), [SPECIES_KECLEON] = { @@ -9769,7 +10185,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_DEOXYS] = + [SPECIES_DEOXYS_NORMAL] = { .baseHP = 50, .baseAttack = 150, @@ -10374,9 +10790,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_BURMY] = BURMY_SPECIES_INFO(BODY_COLOR_GREEN), + [SPECIES_BURMY_PLANT_CLOAK] = BURMY_SPECIES_INFO(BODY_COLOR_GREEN), - [SPECIES_WORMADAM] = + [SPECIES_WORMADAM_PLANT_CLOAK] = { .baseHP = 60, .baseAttack = 59, @@ -10559,11 +10975,11 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_CHERRIM] = CHERRIM_SPECIES_INFO(BODY_COLOR_PURPLE), + [SPECIES_CHERRIM_OVERCAST] = CHERRIM_SPECIES_INFO(BODY_COLOR_PURPLE), - [SPECIES_SHELLOS] = SHELLOS_SPECIES_INFO(BODY_COLOR_PURPLE), + [SPECIES_SHELLOS_WEST_SEA] = SHELLOS_SPECIES_INFO(BODY_COLOR_PURPLE), - [SPECIES_GASTRODON] = GASTRODON_SPECIES_INFO(BODY_COLOR_PURPLE), + [SPECIES_GASTRODON_WEST_SEA] = GASTRODON_SPECIES_INFO(BODY_COLOR_PURPLE), [SPECIES_AMBIPOM] = { @@ -12009,7 +12425,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_GIRATINA] = + [SPECIES_GIRATINA_ALTERED] = { .baseHP = 150, .baseAttack = 100, @@ -12125,7 +12541,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_SHAYMIN] = + [SPECIES_SHAYMIN_LAND] = { .baseHP = 100, .baseAttack = 100, @@ -12150,7 +12566,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_ARCEUS] = + [SPECIES_ARCEUS_NORMAL] = { .baseHP = 120, .baseAttack = 120, @@ -13477,7 +13893,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = TRUE, }, - [SPECIES_BASCULIN] = + [SPECIES_BASCULIN_RED_STRIPED] = { .baseHP = 70, .baseAttack = 92, @@ -13595,7 +14011,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_DARMANITAN] = + [SPECIES_DARMANITAN_STANDARD_MODE] = { .baseHP = 105, .baseAttack = 140, @@ -13918,26 +14334,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_GARBODOR] = { - .baseHP = 80, - .baseAttack = 95, - .baseDefense = 82, - .baseSpeed = 75, - .baseSpAttack = 60, - .baseSpDefense = 82, - .types = { TYPE_POISON, TYPE_POISON}, - .catchRate = 60, - .expYield = 166, - .evYield_Attack = 2, - .itemCommon = ITEM_SILK_SCARF, - .itemRare = ITEM_BLACK_SLUDGE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, + GARBODOR_MISC_INFO, }, [SPECIES_ZORUA] = @@ -14273,9 +14670,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_DEERLING] = DEERLING_SPECIES_INFO(BODY_COLOR_PINK), + [SPECIES_DEERLING_SPRING] = DEERLING_SPECIES_INFO(BODY_COLOR_PINK), - [SPECIES_SAWSBUCK] = SAWSBUCK_SPECIES_INFO, + [SPECIES_SAWSBUCK_SPRING] = SAWSBUCK_SPECIES_INFO, [SPECIES_EMOLGA] = { @@ -15502,7 +15899,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_TORNADUS] = + [SPECIES_TORNADUS_INCARNATE] = { .baseHP = 79, .baseAttack = 115, @@ -15525,7 +15922,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_THUNDURUS] = + [SPECIES_THUNDURUS_INCARNATE] = { .baseHP = 79, .baseAttack = 115, @@ -15594,7 +15991,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_LANDORUS] = + [SPECIES_LANDORUS_INCARNATE] = { .baseHP = 89, .baseAttack = 125, @@ -15642,7 +16039,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_KELDEO] = + [SPECIES_KELDEO_ORDINARY] = { .baseHP = 91, .baseAttack = 72, @@ -15665,7 +16062,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_MELOETTA] = + [SPECIES_MELOETTA_ARIA] = { .baseHP = 100, .baseAttack = 77, @@ -16048,7 +16445,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_VIVILLON] = VIVILLON_SPECIES_INFO(BODY_COLOR_WHITE), + [SPECIES_VIVILLON_ICY_SNOW] = VIVILLON_SPECIES_INFO(BODY_COLOR_WHITE), [SPECIES_LITLEO] = { @@ -16094,11 +16491,11 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_FLABEBE] = FLABEBE_SPECIES_INFO, + [SPECIES_FLABEBE_RED_FLOWER] = FLABEBE_SPECIES_INFO, - [SPECIES_FLOETTE] = FLOETTE_SPECIES_INFO, + [SPECIES_FLOETTE_RED_FLOWER] = FLOETTE_SPECIES_INFO, - [SPECIES_FLORGES] = FLORGES_SPECIES_INFO, + [SPECIES_FLORGES_RED_FLOWER] = FLORGES_SPECIES_INFO, [SPECIES_SKIDDO] = { @@ -16190,7 +16587,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_FURFROU] = FURFROU_SPECIES_INFO(FLIP), + [SPECIES_FURFROU_NATURAL] = FURFROU_SPECIES_INFO(FLIP), [SPECIES_ESPURR] = { @@ -16214,7 +16611,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_MEOWSTIC] = + [SPECIES_MEOWSTIC_MALE] = { .baseHP = 74, .baseAttack = 48, @@ -16280,7 +16677,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_AEGISLASH] = + [SPECIES_AEGISLASH_SHIELD] = { .baseHP = 60, .baseAttack = 50, @@ -16933,7 +17330,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_PUMPKABOO] = + [SPECIES_PUMPKABOO_AVERAGE] = { .baseHP = 49, .baseAttack = 66, @@ -16944,7 +17341,7 @@ const struct SpeciesInfo gSpeciesInfo[] = PUMKPABOO_MISC_INFO, }, - [SPECIES_GOURGEIST] = + [SPECIES_GOURGEIST_AVERAGE] = { .baseHP = 65, .baseAttack = 90, @@ -17059,7 +17456,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_XERNEAS] = XERNEAS_SPECIES_INFO, + [SPECIES_XERNEAS_NEUTRAL] = XERNEAS_SPECIES_INFO, [SPECIES_YVELTAL] = { @@ -17084,7 +17481,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_ZYGARDE] = ZYGARDE_50_SPECIES_INFO(ABILITY_AURA_BREAK), + [SPECIES_ZYGARDE_50_AURA_BREAK] = ZYGARDE_50_SPECIES_INFO(ABILITY_AURA_BREAK), [SPECIES_DIANCIE] = { @@ -17110,7 +17507,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_HOOPA] = + [SPECIES_HOOPA_CONFINED] = { .baseHP = 80, .baseAttack = 110, @@ -17584,7 +17981,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ORICORIO] = ORICORIO_SPECIES_INFO(TYPE_FIRE, BODY_COLOR_RED), + [SPECIES_ORICORIO_BAILE] = ORICORIO_SPECIES_INFO(TYPE_FIRE, BODY_COLOR_RED), [SPECIES_CUTIEFLY] = { @@ -17634,7 +18031,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_ROCKRUFF] = ROCKRUFF_SPECIES_INFO(ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_STEADFAST), - [SPECIES_LYCANROC] = + [SPECIES_LYCANROC_MIDDAY] = { .baseHP = 75, .baseAttack = 115, @@ -17656,7 +18053,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_WISHIWASHI] = + [SPECIES_WISHIWASHI_SOLO] = { .baseHP = 45, .baseAttack = 20, @@ -18271,9 +18668,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_SILVALLY] = SILVALLY_SPECIES_INFO(TYPE_NORMAL), + [SPECIES_SILVALLY_NORMAL] = SILVALLY_SPECIES_INFO(TYPE_NORMAL), - [SPECIES_MINIOR] = MINIOR_METEOR_SPECIES_INFO, + [SPECIES_MINIOR_METEOR_RED] = MINIOR_METEOR_SPECIES_INFO, [SPECIES_KOMALA] = { @@ -18343,7 +18740,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_MIMIKYU] = MIMIKYU_SPECIES_INFO, + [SPECIES_MIMIKYU_DISGUISED] = MIMIKYU_SPECIES_INFO, [SPECIES_BRUXISH] = { @@ -19021,25 +19418,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_MELMETAL] = { - .baseHP = 135, - .baseAttack = 143, - .baseDefense = 143, - .baseSpeed = 34, - .baseSpAttack = 80, - .baseSpDefense = 65, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 3, - .expYield = 270, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_IRON_FIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, + MELMETAL_MISC_INFO, }, #endif @@ -19088,26 +19467,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_RILLABOOM] = + [SPECIES_RILLABOOM] = { - .baseHP = 100, - .baseAttack = 125, - .baseDefense = 90, - .baseSpeed = 85, - .baseSpAttack = 60, - .baseSpDefense = 70, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 265, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, + RILLABOOM_MISC_INFO, }, [SPECIES_SCORBUNNY] = @@ -19156,24 +19518,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_CINDERACE] = { - .baseHP = 80, - .baseAttack = 116, - .baseDefense = 75, - .baseSpeed = 119, - .baseSpAttack = 65, - .baseSpDefense = 75, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 45, - .expYield = 265, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, + CINDERACE_MISC_INFO, }, [SPECIES_SOBBLE] = @@ -19223,24 +19568,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_INTELEON] = { - .baseHP = 70, - .baseAttack = 85, - .baseDefense = 65, - .baseSpeed = 120, - .baseSpAttack = 125, - .baseSpDefense = 65, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 265, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, + INTELEON_MISC_INFO, }, [SPECIES_SKWOVET] = @@ -19335,24 +19663,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_CORVIKNIGHT] = { - .baseHP = 98, - .baseAttack = 87, - .baseDefense = 105, - .baseSpeed = 67, - .baseSpAttack = 53, - .baseSpDefense = 85, - .types = { TYPE_FLYING, TYPE_STEEL}, - .catchRate = 45, - .expYield = 248, - .evYield_Defense = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, + CORVIKNIGHT_MISC_INFO, }, [SPECIES_BLIPBUG] = @@ -19402,25 +19713,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_ORBEETLE] = { - .baseHP = 60, - .baseAttack = 45, - .baseDefense = 110, - .baseSpeed = 90, - .baseSpAttack = 80, - .baseSpDefense = 120, - .types = { TYPE_BUG, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 253, - .evYield_SpDefense = 3, - .itemRare = ITEM_PSYCHIC_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, + ORBEETLE_MISC_INFO, }, [SPECIES_NICKIT] = @@ -19579,24 +19872,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_DREDNAW] = { - .baseHP = 90, - .baseAttack = 115, - .baseDefense = 90, - .baseSpeed = 74, - .baseSpAttack = 48, - .baseSpDefense = 68, - .types = { TYPE_WATER, TYPE_ROCK}, - .catchRate = 75, - .expYield = 170, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, + DREDNAW_MISC_INFO, }, [SPECIES_YAMPER] = @@ -19689,24 +19965,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_COALOSSAL] = { - .baseHP = 110, - .baseAttack = 80, - .baseDefense = 120, - .baseSpeed = 30, - .baseSpAttack = 80, - .baseSpDefense = 90, - .types = { TYPE_ROCK, TYPE_FIRE}, - .catchRate = 45, - .expYield = 255, - .evYield_Defense = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, + COALOSSAL_MISC_INFO, }, [SPECIES_APPLIN] = @@ -19733,46 +19992,12 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_FLAPPLE] = { - .baseHP = 70, - .baseAttack = 110, - .baseDefense = 80, - .baseSpeed = 70, - .baseSpAttack = 95, - .baseSpDefense = 60, - .types = { TYPE_GRASS, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 170, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, + FLAPPLE_MISC_INFO, }, [SPECIES_APPLETUN] = { - .baseHP = 110, - .baseAttack = 85, - .baseDefense = 80, - .baseSpeed = 30, - .baseSpAttack = 100, - .baseSpDefense = 80, - .types = { TYPE_GRASS, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 170, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, + APPLETUN_MISC_INFO, }, [SPECIES_SILICOBRA] = @@ -19799,24 +20024,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_SANDACONDA] = { - .baseHP = 72, - .baseAttack = 107, - .baseDefense = 125, - .baseSpeed = 71, - .baseSpAttack = 65, - .baseSpDefense = 70, - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 120, - .expYield = 179, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, + SANDACONDA_MISC_INFO, }, [SPECIES_CRAMORANT] = CRAMORANT_SPECIES_INFO, @@ -19887,7 +20095,10 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_TOXTRICITY] = TOXTRICITY_SPECIES_INFO(ABILITY_PLUS), + [SPECIES_TOXTRICITY_AMPED] = + { + TOXTRICITY_MISC_INFO(ABILITY_PLUS), + }, [SPECIES_SIZZLIPEDE] = { @@ -19913,24 +20124,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_CENTISKORCH] = { - .baseHP = 100, - .baseAttack = 115, - .baseDefense = 65, - .baseSpeed = 65, - .baseSpAttack = 90, - .baseSpDefense = 90, - .types = { TYPE_FIRE, TYPE_BUG}, - .catchRate = 75, - .expYield = 184, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, + CENTISKORCH_MISC_INFO, }, [SPECIES_CLOBBOPUS] = @@ -19977,9 +20171,9 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_SINISTEA] = SINISTEA_SPECIES_INFO, + [SPECIES_SINISTEA_PHONY] = SINISTEA_SPECIES_INFO, - [SPECIES_POLTEAGEIST] = POLTEAGEIST_SPECIES_INFO, + [SPECIES_POLTEAGEIST_PHONY] = POLTEAGEIST_SPECIES_INFO, [SPECIES_HATENNA] = { @@ -20027,24 +20221,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_HATTERENE] = { - .baseHP = 57, - .baseAttack = 90, - .baseDefense = 95, - .baseSpeed = 29, - .baseSpAttack = 136, - .baseSpDefense = 103, - .types = { TYPE_PSYCHIC, TYPE_FAIRY}, - .catchRate = 45, - .expYield = 255, - .evYield_SpAttack = 3, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, + HATTERENE_MISC_INFO, }, [SPECIES_IMPIDIMP] = @@ -20093,24 +20270,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_GRIMMSNARL] = { - .baseHP = 95, - .baseAttack = 120, - .baseDefense = 65, - .baseSpeed = 60, - .baseSpAttack = 95, - .baseSpDefense = 75, - .types = { TYPE_DARK, TYPE_FAIRY}, - .catchRate = 45, - .expYield = 255, - .evYield_Attack = 3, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, + GRIMMSNARL_MISC_INFO, }, [SPECIES_OBSTAGOON] = @@ -20268,7 +20428,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ALCREMIE] = ALCREMIE_SPECIES_INFO(BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, [SPECIES_FALINKS] = { @@ -20382,7 +20542,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_EISCUE] = + [SPECIES_EISCUE_ICE_FACE] = { .baseHP = 75, .baseAttack = 80, @@ -20404,7 +20564,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_INDEEDEE] = + [SPECIES_INDEEDEE_MALE] = { .baseHP = 60, .baseAttack = 65, @@ -20426,7 +20586,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_MORPEKO] = MORPEKO_SPECIES_INFO, + [SPECIES_MORPEKO_FULL_BELLY] = MORPEKO_SPECIES_INFO, [SPECIES_CUFANT] = { @@ -20453,25 +20613,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_COPPERAJAH] = { - .baseHP = 122, - .baseAttack = 130, - .baseDefense = 69, - .baseSpeed = 30, - .baseSpAttack = 80, - .baseSpDefense = 69, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 90, - .expYield = 175, - .evYield_Attack = 2, - .itemRare = ITEM_LAGGING_TAIL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, + COPPERAJAH_MISC_INFO, }, [SPECIES_DRACOZOLT] = @@ -20564,24 +20706,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_DURALUDON] = { - .baseHP = 70, - .baseAttack = 95, - .baseDefense = 115, - .baseSpeed = 85, - .baseSpAttack = 120, - .baseSpDefense = 50, - .types = { TYPE_STEEL, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 187, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, + DURALUDON_MISC_INFO, }, [SPECIES_DREEPY] = @@ -20650,7 +20775,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ZACIAN] = + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = { .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, @@ -20673,7 +20798,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_ZAMAZENTA] = + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = { .baseHP = 92, .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, @@ -20742,28 +20867,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_URSHIFU] = - { - .baseHP = 100, - .baseAttack = 130, - .baseDefense = 100, - .baseSpeed = 97, - .baseSpAttack = 63, - .baseSpDefense = 60, - .types = { TYPE_FIGHTING, TYPE_DARK}, - .catchRate = 3, - .expYield = 275, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 120, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = { URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO, }, [SPECIES_ZARUDE] = ZARUDE_SPECIES_INFO, @@ -20948,7 +21052,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_BASCULEGION] = + [SPECIES_BASCULEGION_MALE] = { .baseHP = 120, .baseAttack = 112, @@ -21037,7 +21141,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_ENAMORUS] = + [SPECIES_ENAMORUS_INCARNATE] = { .baseHP = 74, .baseAttack = 115, @@ -23040,7 +23144,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .flags = SPECIES_FLAG_GALARIAN_FORM, }, - [SPECIES_DARMANITAN_GALARIAN] = + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = { .baseHP = 105, .baseAttack = 140, @@ -23849,7 +23953,7 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, }, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = { .baseHP = 105, .baseAttack = 160, @@ -24285,7 +24389,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_XERNEAS_ACTIVE] = XERNEAS_SPECIES_INFO, - [SPECIES_ZYGARDE_10] = ZYGARDE_10_SPECIES_INFO(ABILITY_AURA_BREAK), + [SPECIES_ZYGARDE_10_AURA_BREAK] = ZYGARDE_10_SPECIES_INFO(ABILITY_AURA_BREAK), [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = ZYGARDE_50_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = ZYGARDE_50_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), @@ -24522,20 +24626,23 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_CRAMORANT_GULPING] = CRAMORANT_SPECIES_INFO, [SPECIES_CRAMORANT_GORGING] = CRAMORANT_SPECIES_INFO, - [SPECIES_TOXTRICITY_LOW_KEY] = TOXTRICITY_SPECIES_INFO(ABILITY_MINUS), + [SPECIES_TOXTRICITY_LOW_KEY] = + { + TOXTRICITY_MISC_INFO(ABILITY_MINUS), + }, [SPECIES_SINISTEA_ANTIQUE] = SINISTEA_SPECIES_INFO, [SPECIES_POLTEAGEIST_ANTIQUE] = POLTEAGEIST_SPECIES_INFO, - [SPECIES_ALCREMIE_RUBY_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_PINK), - [SPECIES_ALCREMIE_MATCHA_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_GREEN), - [SPECIES_ALCREMIE_MINT_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_BLUE), - [SPECIES_ALCREMIE_LEMON_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), - [SPECIES_ALCREMIE_SALTED_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_WHITE), - [SPECIES_ALCREMIE_RUBY_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_BROWN), - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_PINK) }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_GREEN) }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_BLUE) }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { ALCREMIE_MISC_INFO(BODY_COLOR_WHITE) }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_BROWN) }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW) }, [SPECIES_EISCUE_NOICE_FACE] = { @@ -24654,25 +24761,7 @@ const struct SpeciesInfo gSpeciesInfo[] = [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = { - .baseHP = 100, - .baseAttack = 130, - .baseDefense = 100, - .baseSpeed = 97, - .baseSpAttack = 63, - .baseSpDefense = 60, - .types = { TYPE_FIGHTING, TYPE_WATER}, - .catchRate = 3, - .expYield = 275, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 120, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, + URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO, }, [SPECIES_ZARUDE_DADA] = ZARUDE_SPECIES_INFO, @@ -24745,5 +24834,178 @@ const struct SpeciesInfo gSpeciesInfo[] = .noFlip = FALSE, .flags = SPECIES_FLAG_LEGENDARY, }, + + // Gigantamax Forms + [SPECIES_VENUSAUR_GIGANTAMAX] = + { + VENUSAUR_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_CHARIZARD_GIGANTAMAX] = + { + CHARIZARD_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_BLASTOISE_GIGANTAMAX] = + { + BLASTOISE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_BUTTERFREE_GIGANTAMAX] = + { + BUTTERFREE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_PIKACHU_GIGANTAMAX] = + { + PIKACHU_MISC_INFO(PERCENT_FEMALE(50), FLIP), + .gigantamax = TRUE, + }, + [SPECIES_MEOWTH_GIGANTAMAX] = + { + MEOWTH_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_MACHAMP_GIGANTAMAX] = + { + MACHAMP_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_GENGAR_GIGANTAMAX] = + { + GENGAR_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_KINGLER_GIGANTAMAX] = + { + KINGLER_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_LAPRAS_GIGANTAMAX] = + { + LAPRAS_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_EEVEE_GIGANTAMAX] = + { + EEVEE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_SNORLAX_GIGANTAMAX] = + { + SNORLAX_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_GARBODOR_GIGANTAMAX] = + { + GARBODOR_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_MELMETAL_GIGANTAMAX] = + { + MELMETAL_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_RILLABOOM_GIGANTAMAX] = + { + RILLABOOM_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_CINDERACE_GIGANTAMAX] = + { + CINDERACE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_INTELEON_GIGANTAMAX] = + { + INTELEON_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = + { + CORVIKNIGHT_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_ORBEETLE_GIGANTAMAX] = + { + ORBEETLE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_DREDNAW_GIGANTAMAX] = + { + DREDNAW_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_COALOSSAL_GIGANTAMAX] = + { + COALOSSAL_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_FLAPPLE_GIGANTAMAX] = + { + FLAPPLE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_APPLETUN_GIGANTAMAX] = + { + APPLETUN_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_SANDACONDA_GIGANTAMAX] = + { + SANDACONDA_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = + { + TOXTRICITY_MISC_INFO(ABILITY_PLUS), + .gigantamax = TRUE, + }, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = + { + TOXTRICITY_MISC_INFO(ABILITY_MINUS), + .gigantamax = TRUE, + }, + [SPECIES_CENTISKORCH_GIGANTAMAX] = + { + CENTISKORCH_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_HATTERENE_GIGANTAMAX] = + { + HATTERENE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = + { + GRIMMSNARL_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_ALCREMIE_GIGANTAMAX] = + { + ALCREMIE_MISC_INFO(BODY_COLOR_PINK), + .gigantamax = TRUE, + }, + [SPECIES_COPPERAJAH_GIGANTAMAX] = + { + COPPERAJAH_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_DURALUDON_GIGANTAMAX] = + { + DURALUDON_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = + { + URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO, + .gigantamax = TRUE, + }, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = + { + URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO, + .gigantamax = TRUE, + }, + #endif }; diff --git a/src/data/pokemon/teachable_learnset_pointers.h b/src/data/pokemon/teachable_learnset_pointers.h index f8faf62d8f..8d00b8f05c 100644 --- a/src/data/pokemon/teachable_learnset_pointers.h +++ b/src/data/pokemon/teachable_learnset_pointers.h @@ -360,7 +360,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_ARON] = sAronTeachableLearnset, [SPECIES_LAIRON] = sLaironTeachableLearnset, [SPECIES_AGGRON] = sAggronTeachableLearnset, - [SPECIES_CASTFORM] = sCastformTeachableLearnset, + [SPECIES_CASTFORM_NORMAL] = sCastformTeachableLearnset, [SPECIES_VOLBEAT] = sVolbeatTeachableLearnset, [SPECIES_ILLUMISE] = sIllumiseTeachableLearnset, [SPECIES_LILEEP] = sLileepTeachableLearnset, @@ -385,7 +385,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_LATIAS] = sLatiasTeachableLearnset, [SPECIES_LATIOS] = sLatiosTeachableLearnset, [SPECIES_JIRACHI] = sJirachiTeachableLearnset, - [SPECIES_DEOXYS] = sDeoxysTeachableLearnset, + [SPECIES_DEOXYS_NORMAL] = sDeoxysNormalTeachableLearnset, [SPECIES_CHIMECHO] = sChimechoTeachableLearnset, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = sTurtwigTeachableLearnset, @@ -413,8 +413,8 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_RAMPARDOS] = sRampardosTeachableLearnset, [SPECIES_SHIELDON] = sShieldonTeachableLearnset, [SPECIES_BASTIODON] = sBastiodonTeachableLearnset, - [SPECIES_BURMY] = sBurmyTeachableLearnset, - [SPECIES_WORMADAM] = sWormadamTeachableLearnset, + [SPECIES_BURMY_PLANT_CLOAK] = sBurmyTeachableLearnset, + [SPECIES_WORMADAM_PLANT_CLOAK] = sWormadamPlantCloakTeachableLearnset, [SPECIES_MOTHIM] = sMothimTeachableLearnset, [SPECIES_COMBEE] = sCombeeTeachableLearnset, [SPECIES_VESPIQUEN] = sVespiquenTeachableLearnset, @@ -422,9 +422,9 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_BUIZEL] = sBuizelTeachableLearnset, [SPECIES_FLOATZEL] = sFloatzelTeachableLearnset, [SPECIES_CHERUBI] = sCherubiTeachableLearnset, - [SPECIES_CHERRIM] = sCherrimTeachableLearnset, - [SPECIES_SHELLOS] = sShellosTeachableLearnset, - [SPECIES_GASTRODON] = sGastrodonTeachableLearnset, + [SPECIES_CHERRIM_OVERCAST] = sCherrimTeachableLearnset, + [SPECIES_SHELLOS_WEST_SEA] = sShellosTeachableLearnset, + [SPECIES_GASTRODON_WEST_SEA] = sGastrodonTeachableLearnset, [SPECIES_AMBIPOM] = sAmbipomTeachableLearnset, [SPECIES_DRIFLOON] = sDrifloonTeachableLearnset, [SPECIES_DRIFBLIM] = sDrifblimTeachableLearnset, @@ -488,13 +488,13 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_PALKIA] = sPalkiaTeachableLearnset, [SPECIES_HEATRAN] = sHeatranTeachableLearnset, [SPECIES_REGIGIGAS] = sRegigigasTeachableLearnset, - [SPECIES_GIRATINA] = sGiratinaTeachableLearnset, + [SPECIES_GIRATINA_ALTERED] = sGiratinaTeachableLearnset, [SPECIES_CRESSELIA] = sCresseliaTeachableLearnset, [SPECIES_PHIONE] = sPhioneTeachableLearnset, [SPECIES_MANAPHY] = sManaphyTeachableLearnset, [SPECIES_DARKRAI] = sDarkraiTeachableLearnset, - [SPECIES_SHAYMIN] = sShayminTeachableLearnset, - [SPECIES_ARCEUS] = sArceusTeachableLearnset, + [SPECIES_SHAYMIN_LAND] = sShayminLandTeachableLearnset, + [SPECIES_ARCEUS_NORMAL] = sArceusTeachableLearnset, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = sVictiniTeachableLearnset, @@ -553,12 +553,12 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_WHIMSICOTT] = sWhimsicottTeachableLearnset, [SPECIES_PETILIL] = sPetililTeachableLearnset, [SPECIES_LILLIGANT] = sLilligantTeachableLearnset, - [SPECIES_BASCULIN] = sBasculinTeachableLearnset, + [SPECIES_BASCULIN_RED_STRIPED] = sBasculinTeachableLearnset, [SPECIES_SANDILE] = sSandileTeachableLearnset, [SPECIES_KROKOROK] = sKrokorokTeachableLearnset, [SPECIES_KROOKODILE] = sKrookodileTeachableLearnset, [SPECIES_DARUMAKA] = sDarumakaTeachableLearnset, - [SPECIES_DARMANITAN] = sDarmanitanTeachableLearnset, + [SPECIES_DARMANITAN_STANDARD_MODE] = sDarmanitanTeachableLearnset, [SPECIES_MARACTUS] = sMaractusTeachableLearnset, [SPECIES_DWEBBLE] = sDwebbleTeachableLearnset, [SPECIES_CRUSTLE] = sCrustleTeachableLearnset, @@ -588,8 +588,8 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_VANILLITE] = sVanilliteTeachableLearnset, [SPECIES_VANILLISH] = sVanillishTeachableLearnset, [SPECIES_VANILLUXE] = sVanilluxeTeachableLearnset, - [SPECIES_DEERLING] = sDeerlingTeachableLearnset, - [SPECIES_SAWSBUCK] = sSawsbuckTeachableLearnset, + [SPECIES_DEERLING_SPRING] = sDeerlingTeachableLearnset, + [SPECIES_SAWSBUCK_SPRING] = sSawsbuckTeachableLearnset, [SPECIES_EMOLGA] = sEmolgaTeachableLearnset, [SPECIES_KARRABLAST] = sKarrablastTeachableLearnset, [SPECIES_ESCAVALIER] = sEscavalierTeachableLearnset, @@ -644,14 +644,14 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_COBALION] = sCobalionTeachableLearnset, [SPECIES_TERRAKION] = sTerrakionTeachableLearnset, [SPECIES_VIRIZION] = sVirizionTeachableLearnset, - [SPECIES_TORNADUS] = sTornadusTeachableLearnset, - [SPECIES_THUNDURUS] = sThundurusTeachableLearnset, + [SPECIES_TORNADUS_INCARNATE] = sTornadusTeachableLearnset, + [SPECIES_THUNDURUS_INCARNATE] = sThundurusTeachableLearnset, [SPECIES_RESHIRAM] = sReshiramTeachableLearnset, [SPECIES_ZEKROM] = sZekromTeachableLearnset, - [SPECIES_LANDORUS] = sLandorusTeachableLearnset, + [SPECIES_LANDORUS_INCARNATE] = sLandorusTeachableLearnset, [SPECIES_KYUREM] = sKyuremTeachableLearnset, - [SPECIES_KELDEO] = sKeldeoTeachableLearnset, - [SPECIES_MELOETTA] = sMeloettaTeachableLearnset, + [SPECIES_KELDEO_ORDINARY] = sKeldeoTeachableLearnset, + [SPECIES_MELOETTA_ARIA] = sMeloettaTeachableLearnset, [SPECIES_GENESECT] = sGenesectTeachableLearnset, #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_TALONFLAME] = sTalonflameTeachableLearnset, [SPECIES_SCATTERBUG] = sScatterbugTeachableLearnset, [SPECIES_SPEWPA] = sSpewpaTeachableLearnset, - [SPECIES_VIVILLON] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_ICY_SNOW] = sVivillonTeachableLearnset, [SPECIES_LITLEO] = sLitleoTeachableLearnset, [SPECIES_PYROAR] = sPyroarTeachableLearnset, - [SPECIES_FLABEBE] = sFlabebeTeachableLearnset, - [SPECIES_FLOETTE] = sFloetteTeachableLearnset, - [SPECIES_FLORGES] = sFlorgesTeachableLearnset, + [SPECIES_FLABEBE_RED_FLOWER] = sFlabebeTeachableLearnset, + [SPECIES_FLOETTE_RED_FLOWER] = sFloetteTeachableLearnset, + [SPECIES_FLORGES_RED_FLOWER] = sFlorgesTeachableLearnset, [SPECIES_SKIDDO] = sSkiddoTeachableLearnset, [SPECIES_GOGOAT] = sGogoatTeachableLearnset, [SPECIES_PANCHAM] = sPanchamTeachableLearnset, [SPECIES_PANGORO] = sPangoroTeachableLearnset, - [SPECIES_FURFROU] = sFurfrouTeachableLearnset, + [SPECIES_FURFROU_NATURAL] = sFurfrouTeachableLearnset, [SPECIES_ESPURR] = sEspurrTeachableLearnset, - [SPECIES_MEOWSTIC] = sMeowsticTeachableLearnset, + [SPECIES_MEOWSTIC] = sMeowsticMaleTeachableLearnset, [SPECIES_HONEDGE] = sHonedgeTeachableLearnset, [SPECIES_DOUBLADE] = sDoubladeTeachableLearnset, - [SPECIES_AEGISLASH] = sAegislashTeachableLearnset, + [SPECIES_AEGISLASH_SHIELD] = sAegislashTeachableLearnset, [SPECIES_SPRITZEE] = sSpritzeeTeachableLearnset, [SPECIES_AROMATISSE] = sAromatisseTeachableLearnset, [SPECIES_SWIRLIX] = sSwirlixTeachableLearnset, @@ -715,17 +715,17 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_KLEFKI] = sKlefkiTeachableLearnset, [SPECIES_PHANTUMP] = sPhantumpTeachableLearnset, [SPECIES_TREVENANT] = sTrevenantTeachableLearnset, - [SPECIES_PUMPKABOO] = sPumpkabooTeachableLearnset, - [SPECIES_GOURGEIST] = sGourgeistTeachableLearnset, + [SPECIES_PUMPKABOO_AVERAGE] = sPumpkabooTeachableLearnset, + [SPECIES_GOURGEIST_AVERAGE] = sGourgeistTeachableLearnset, [SPECIES_BERGMITE] = sBergmiteTeachableLearnset, [SPECIES_AVALUGG] = sAvaluggTeachableLearnset, [SPECIES_NOIBAT] = sNoibatTeachableLearnset, [SPECIES_NOIVERN] = sNoivernTeachableLearnset, - [SPECIES_XERNEAS] = sXerneasTeachableLearnset, + [SPECIES_XERNEAS_NEUTRAL] = sXerneasTeachableLearnset, [SPECIES_YVELTAL] = sYveltalTeachableLearnset, - [SPECIES_ZYGARDE] = sZygardeTeachableLearnset, + [SPECIES_ZYGARDE_50_AURA_BREAK] = sZygardeTeachableLearnset, [SPECIES_DIANCIE] = sDiancieTeachableLearnset, - [SPECIES_HOOPA] = sHoopaTeachableLearnset, + [SPECIES_HOOPA_CONFINED] = sHoopaConfinedTeachableLearnset, [SPECIES_VOLCANION] = sVolcanionTeachableLearnset, #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_VIKAVOLT] = sVikavoltTeachableLearnset, [SPECIES_CRABRAWLER] = sCrabrawlerTeachableLearnset, [SPECIES_CRABOMINABLE] = sCrabominableTeachableLearnset, - [SPECIES_ORICORIO] = sOricorioTeachableLearnset, + [SPECIES_ORICORIO_BAILE] = sOricorioTeachableLearnset, [SPECIES_CUTIEFLY] = sCutieflyTeachableLearnset, [SPECIES_RIBOMBEE] = sRibombeeTeachableLearnset, [SPECIES_ROCKRUFF] = sRockruffTeachableLearnset, - [SPECIES_LYCANROC] = sLycanrocTeachableLearnset, - [SPECIES_WISHIWASHI] = sWishiwashiTeachableLearnset, + [SPECIES_LYCANROC_MIDDAY] = sLycanrocMiddayTeachableLearnset, + [SPECIES_WISHIWASHI_SOLO] = sWishiwashiTeachableLearnset, [SPECIES_MAREANIE] = sMareanieTeachableLearnset, [SPECIES_TOXAPEX] = sToxapexTeachableLearnset, [SPECIES_MUDBRAY] = sMudbrayTeachableLearnset, @@ -780,12 +780,12 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_PALOSSAND] = sPalossandTeachableLearnset, [SPECIES_PYUKUMUKU] = sPyukumukuTeachableLearnset, [SPECIES_TYPE_NULL] = sTypeNullTeachableLearnset, - [SPECIES_SILVALLY] = sSilvallyTeachableLearnset, - [SPECIES_MINIOR] = sMiniorTeachableLearnset, + [SPECIES_SILVALLY_NORMAL] = sSilvallyTeachableLearnset, + [SPECIES_MINIOR_METEOR_RED] = sMiniorTeachableLearnset, [SPECIES_KOMALA] = sKomalaTeachableLearnset, [SPECIES_TURTONATOR] = sTurtonatorTeachableLearnset, [SPECIES_TOGEDEMARU] = sTogedemaruTeachableLearnset, - [SPECIES_MIMIKYU] = sMimikyuTeachableLearnset, + [SPECIES_MIMIKYU_DISGUISED] = sMimikyuTeachableLearnset, [SPECIES_BRUXISH] = sBruxishTeachableLearnset, [SPECIES_DRAMPA] = sDrampaTeachableLearnset, [SPECIES_DHELMISE] = sDhelmiseTeachableLearnset, @@ -858,13 +858,13 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_ARROKUDA] = sArrokudaTeachableLearnset, [SPECIES_BARRASKEWDA] = sBarraskewdaTeachableLearnset, [SPECIES_TOXEL] = sToxelTeachableLearnset, - [SPECIES_TOXTRICITY] = sToxtricityTeachableLearnset, + [SPECIES_TOXTRICITY_AMPED] = sToxtricityAmpedTeachableLearnset, [SPECIES_SIZZLIPEDE] = sSizzlipedeTeachableLearnset, [SPECIES_CENTISKORCH] = sCentiskorchTeachableLearnset, [SPECIES_CLOBBOPUS] = sClobbopusTeachableLearnset, [SPECIES_GRAPPLOCT] = sGrapploctTeachableLearnset, - [SPECIES_SINISTEA] = sSinisteaTeachableLearnset, - [SPECIES_POLTEAGEIST] = sPolteageistTeachableLearnset, + [SPECIES_SINISTEA_PHONY] = sSinisteaTeachableLearnset, + [SPECIES_POLTEAGEIST_PHONY] = sPolteageistTeachableLearnset, [SPECIES_HATENNA] = sHatennaTeachableLearnset, [SPECIES_HATTREM] = sHattremTeachableLearnset, [SPECIES_HATTERENE] = sHattereneTeachableLearnset, @@ -878,15 +878,15 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_MR_RIME] = sMrRimeTeachableLearnset, [SPECIES_RUNERIGUS] = sRunerigusTeachableLearnset, [SPECIES_MILCERY] = sMilceryTeachableLearnset, - [SPECIES_ALCREMIE] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAlcremieTeachableLearnset, [SPECIES_FALINKS] = sFalinksTeachableLearnset, [SPECIES_PINCURCHIN] = sPincurchinTeachableLearnset, [SPECIES_SNOM] = sSnomTeachableLearnset, [SPECIES_FROSMOTH] = sFrosmothTeachableLearnset, [SPECIES_STONJOURNER] = sStonjournerTeachableLearnset, - [SPECIES_EISCUE] = sEiscueTeachableLearnset, - [SPECIES_INDEEDEE] = sIndeedeeTeachableLearnset, - [SPECIES_MORPEKO] = sMorpekoTeachableLearnset, + [SPECIES_EISCUE_ICE_FACE] = sEiscueTeachableLearnset, + [SPECIES_INDEEDEE_MALE] = sIndeedeeMaleTeachableLearnset, + [SPECIES_MORPEKO_FULL_BELLY] = sMorpekoTeachableLearnset, [SPECIES_CUFANT] = sCufantTeachableLearnset, [SPECIES_COPPERAJAH] = sCopperajahTeachableLearnset, [SPECIES_DRACOZOLT] = sDracozoltTeachableLearnset, @@ -897,11 +897,11 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_DREEPY] = sDreepyTeachableLearnset, [SPECIES_DRAKLOAK] = sDrakloakTeachableLearnset, [SPECIES_DRAGAPULT] = sDragapultTeachableLearnset, - [SPECIES_ZACIAN] = sZacianTeachableLearnset, - [SPECIES_ZAMAZENTA] = sZamazentaTeachableLearnset, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = sZacianTeachableLearnset, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = sZamazentaTeachableLearnset, [SPECIES_ETERNATUS] = sEternatusTeachableLearnset, [SPECIES_KUBFU] = sKubfuTeachableLearnset, - [SPECIES_URSHIFU] = sUrshifuTeachableLearnset, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = sUrshifuSingleStrikeStyleTeachableLearnset, [SPECIES_ZARUDE] = sZarudeTeachableLearnset, [SPECIES_REGIELEKI] = sRegielekiTeachableLearnset, [SPECIES_REGIDRAGO] = sRegidragoTeachableLearnset, @@ -911,10 +911,10 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_WYRDEER] = sWyrdeerTeachableLearnset, [SPECIES_KLEAVOR] = sKleavorTeachableLearnset, [SPECIES_URSALUNA] = sUrsalunaTeachableLearnset, - [SPECIES_BASCULEGION] = sBasculegionTeachableLearnset, + [SPECIES_BASCULEGION_MALE] = sBasculegionTeachableLearnset, [SPECIES_SNEASLER] = sSneaslerTeachableLearnset, [SPECIES_OVERQWIL] = sOverqwilTeachableLearnset, - [SPECIES_ENAMORUS] = sEnamorusTeachableLearnset, + [SPECIES_ENAMORUS_INCARNATE] = sEnamorusTeachableLearnset, #endif // Megas [SPECIES_VENUSAUR_MEGA] = sVenusaurTeachableLearnset, @@ -1011,7 +1011,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianTeachableLearnset, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianTeachableLearnset, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianTeachableLearnset, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = sDarmanitanGalarianTeachableLearnset, [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianTeachableLearnset, [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianTeachableLearnset, #endif @@ -1143,7 +1143,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinTeachableLearnset, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanTeachableLearnset, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianTeachableLearnset, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = sDarmanitanGalarianTeachableLearnset, // Deerling [SPECIES_DEERLING_SUMMER] = sDeerlingTeachableLearnset, [SPECIES_DEERLING_AUTUMN] = sDeerlingTeachableLearnset, @@ -1234,7 +1234,7 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = // Xerneas [SPECIES_XERNEAS_ACTIVE] = sXerneasTeachableLearnset, // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeTeachableLearnset, + [SPECIES_ZYGARDE_10_AURA_BREAK] = sZygardeTeachableLearnset, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeTeachableLearnset, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeTeachableLearnset, [SPECIES_ZYGARDE_COMPLETE] = sZygardeTeachableLearnset, @@ -1305,14 +1305,14 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistTeachableLearnset, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = sEiscueTeachableLearnset, // Indeedee @@ -1334,6 +1334,42 @@ const u16 *const gTeachableLearnsets[NUM_SPECIES] = [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderTeachableLearnset, // Enamorus [SPECIES_ENAMORUS_THERIAN] = sEnamorusTeachableLearnset, + // Basculegion [SPECIES_BASCULEGION_FEMALE] = sBasculegionTeachableLearnset, + // Gigantamax Forms + [SPECIES_VENUSAUR_GIGANTAMAX] = sVenusaurTeachableLearnset, + [SPECIES_CHARIZARD_GIGANTAMAX] = sCharizardTeachableLearnset, + [SPECIES_BLASTOISE_GIGANTAMAX] = sBlastoiseTeachableLearnset, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sButterfreeTeachableLearnset, + [SPECIES_PIKACHU_GIGANTAMAX] = sPikachuTeachableLearnset, + [SPECIES_MEOWTH_GIGANTAMAX] = sMeowthTeachableLearnset, + [SPECIES_MACHAMP_GIGANTAMAX] = sMachampTeachableLearnset, + [SPECIES_GENGAR_GIGANTAMAX] = sGengarTeachableLearnset, + [SPECIES_KINGLER_GIGANTAMAX] = sKinglerTeachableLearnset, + [SPECIES_LAPRAS_GIGANTAMAX] = sLaprasTeachableLearnset, + [SPECIES_EEVEE_GIGANTAMAX] = sEeveeTeachableLearnset, + [SPECIES_SNORLAX_GIGANTAMAX] = sSnorlaxTeachableLearnset, + [SPECIES_GARBODOR_GIGANTAMAX] = sGarbodorTeachableLearnset, + [SPECIES_MELMETAL_GIGANTAMAX] = sMelmetalTeachableLearnset, + [SPECIES_RILLABOOM_GIGANTAMAX] = sRillaboomTeachableLearnset, + [SPECIES_CINDERACE_GIGANTAMAX] = sCinderaceTeachableLearnset, + [SPECIES_INTELEON_GIGANTAMAX] = sInteleonTeachableLearnset, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sCorviknightTeachableLearnset, + [SPECIES_ORBEETLE_GIGANTAMAX] = sOrbeetleTeachableLearnset, + [SPECIES_DREDNAW_GIGANTAMAX] = sDrednawTeachableLearnset, + [SPECIES_COALOSSAL_GIGANTAMAX] = sCoalossalTeachableLearnset, + [SPECIES_FLAPPLE_GIGANTAMAX] = sFlappleTeachableLearnset, + [SPECIES_APPLETUN_GIGANTAMAX] = sAppletunTeachableLearnset, + [SPECIES_SANDACONDA_GIGANTAMAX] = sSandacondaTeachableLearnset, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sToxtricityAmpedTeachableLearnset, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sToxtricityLowKeyTeachableLearnset, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sCentiskorchTeachableLearnset, + [SPECIES_HATTERENE_GIGANTAMAX] = sHattereneTeachableLearnset, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sGrimmsnarlTeachableLearnset, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAlcremieTeachableLearnset, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sCopperajahTeachableLearnset, + [SPECIES_DURALUDON_GIGANTAMAX] = sDuraludonTeachableLearnset, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = sUrshifuSingleStrikeStyleTeachableLearnset, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sUrshifuRapidStrikeStyleTeachableLearnset, #endif }; diff --git a/src/data/pokemon/teachable_learnsets.h b/src/data/pokemon/teachable_learnsets.h index b0f162c6d9..471d658f38 100644 --- a/src/data/pokemon/teachable_learnsets.h +++ b/src/data/pokemon/teachable_learnsets.h @@ -16053,7 +16053,7 @@ static const u16 sJirachiTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDeoxysTeachableLearnset[] = { +static const u16 sDeoxysNormalTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -17025,7 +17025,7 @@ static const u16 sBurmyTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWormadamTeachableLearnset[] = { +static const u16 sWormadamPlantCloakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -20141,7 +20141,7 @@ static const u16 sDarkraiTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShayminTeachableLearnset[] = { +static const u16 sShayminLandTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -26250,7 +26250,7 @@ static const u16 sEspurrTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeowsticTeachableLearnset[] = { +static const u16 sMeowsticMaleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -27666,7 +27666,7 @@ static const u16 sDiancieTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHoopaTeachableLearnset[] = { +static const u16 sHoopaConfinedTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -28364,7 +28364,7 @@ static const u16 sRockruffTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLycanrocTeachableLearnset[] = { +static const u16 sLycanrocMiddayTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -30945,7 +30945,7 @@ static const u16 sToxelTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sToxtricityTeachableLearnset[] = { +static const u16 sToxtricityAmpedTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_HYPER_BEAM, @@ -31538,7 +31538,7 @@ static const u16 sEiscueTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sIndeedeeTeachableLearnset[] = { +static const u16 sIndeedeeMaleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -31908,7 +31908,7 @@ static const u16 sKubfuTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sUrshifuTeachableLearnset[] = { +static const u16 sUrshifuSingleStrikeStyleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index d967a50fca..8937606fa8 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -383,7 +383,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_ARON] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, [SPECIES_LAIRON] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, [SPECIES_AGGRON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_CASTFORM] = { .size = MON_COORDS_SIZE(32, 64), .y_offset = 0 }, + [SPECIES_CASTFORM_NORMAL] = { .size = MON_COORDS_SIZE(32, 64), .y_offset = 0 }, [SPECIES_VOLBEAT] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_ILLUMISE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, [SPECIES_LILEEP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, @@ -408,7 +408,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_LATIAS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_LATIOS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_JIRACHI] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_DEOXYS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_DEOXYS_NORMAL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, [SPECIES_CHIMECHO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, @@ -436,8 +436,8 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, [SPECIES_SHIELDON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, [SPECIES_BASTIODON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_BURMY] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 6 }, - [SPECIES_WORMADAM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_BURMY_PLANT_CLOAK] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 6 }, + [SPECIES_WORMADAM_PLANT_CLOAK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_MOTHIM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_COMBEE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 22 }, [SPECIES_VESPIQUEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -445,9 +445,9 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_FLOATZEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, [SPECIES_CHERUBI] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_CHERRIM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, - [SPECIES_SHELLOS] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, - [SPECIES_GASTRODON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, + [SPECIES_CHERRIM_OVERCAST] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, + [SPECIES_SHELLOS_WEST_SEA] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, + [SPECIES_GASTRODON_WEST_SEA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, [SPECIES_AMBIPOM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_DRIFLOON] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, [SPECIES_DRIFBLIM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, @@ -511,13 +511,13 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_PALKIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, [SPECIES_HEATRAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, [SPECIES_REGIGIGAS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_GIRATINA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_GIRATINA_ALTERED] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, [SPECIES_CRESSELIA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_PHIONE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_MANAPHY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, [SPECIES_DARKRAI] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SHAYMIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_ARCEUS] = ARCEUS_BACK_PIC_COORDS, + [SPECIES_SHAYMIN_LAND] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, + [SPECIES_ARCEUS_NORMAL] = ARCEUS_BACK_PIC_COORDS, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 7 }, @@ -576,12 +576,12 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_PETILIL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, [SPECIES_LILLIGANT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_BASCULIN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 16 }, + [SPECIES_BASCULIN_RED_STRIPED] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 16 }, [SPECIES_SANDILE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 18 }, [SPECIES_KROKOROK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, [SPECIES_KROOKODILE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, [SPECIES_DARUMAKA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 12 }, - [SPECIES_DARMANITAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_DARMANITAN_STANDARD_MODE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_MARACTUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_DWEBBLE] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 17 }, [SPECIES_CRUSTLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, @@ -611,8 +611,8 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, [SPECIES_VANILLISH] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, [SPECIES_VANILLUXE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_DEERLING] = DEERLING_BACK_PIC_COORDS, - [SPECIES_SAWSBUCK] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 5 }, + [SPECIES_DEERLING_SPRING] = DEERLING_BACK_PIC_COORDS, + [SPECIES_SAWSBUCK_SPRING] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 5 }, [SPECIES_EMOLGA] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 16 }, [SPECIES_KARRABLAST] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 14 }, [SPECIES_ESCAVALIER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, @@ -667,14 +667,14 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_COBALION] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 6 }, [SPECIES_TERRAKION] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, [SPECIES_VIRIZION] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_TORNADUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_THUNDURUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TORNADUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_THUNDURUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_RESHIRAM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, [SPECIES_ZEKROM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_LANDORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_LANDORUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_KYUREM] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_KELDEO] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - [SPECIES_MELOETTA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_KELDEO_ORDINARY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, + [SPECIES_MELOETTA_ARIA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, [SPECIES_GENESECT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, #endif #if P_GEN_6_POKEMON == TRUE @@ -694,22 +694,22 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_SCATTERBUG] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 12 }, [SPECIES_SPEWPA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, - [SPECIES_VIVILLON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_VIVILLON_ICY_SNOW] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_LITLEO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, [SPECIES_PYROAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_FLABEBE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_FLOETTE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_FLORGES] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_FLABEBE_RED_FLOWER] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, + [SPECIES_FLOETTE_RED_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_FLORGES_RED_FLOWER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_SKIDDO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_GOGOAT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, [SPECIES_PANCHAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, [SPECIES_PANGORO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_FURFROU] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_FURFROU_NATURAL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_ESPURR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_MEOWSTIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, + [SPECIES_MEOWSTIC_MALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, [SPECIES_HONEDGE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, [SPECIES_DOUBLADE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_AEGISLASH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, + [SPECIES_AEGISLASH_SHIELD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, [SPECIES_SPRITZEE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, [SPECIES_AROMATISSE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, [SPECIES_SWIRLIX] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, @@ -738,17 +738,17 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 8 }, [SPECIES_PHANTUMP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, [SPECIES_TREVENANT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_PUMPKABOO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, - [SPECIES_GOURGEIST] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, + [SPECIES_PUMPKABOO_AVERAGE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, + [SPECIES_GOURGEIST_AVERAGE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_BERGMITE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, [SPECIES_AVALUGG] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, [SPECIES_NOIBAT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 7 }, [SPECIES_NOIVERN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_XERNEAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_XERNEAS_NEUTRAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_YVELTAL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_ZYGARDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_ZYGARDE_50_AURA_BREAK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, [SPECIES_DIANCIE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_HOOPA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, + [SPECIES_HOOPA_CONFINED] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_VOLCANION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, #endif #if P_GEN_7_POKEMON == TRUE @@ -771,12 +771,12 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, [SPECIES_CRABRAWLER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_CRABOMINABLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ORICORIO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ORICORIO_BAILE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CUTIEFLY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 15 }, [SPECIES_RIBOMBEE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, [SPECIES_ROCKRUFF] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_LYCANROC] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_WISHIWASHI] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 18 }, + [SPECIES_LYCANROC_MIDDAY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_WISHIWASHI_SOLO] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 18 }, [SPECIES_MAREANIE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 15 }, [SPECIES_TOXAPEX] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_MUDBRAY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, @@ -803,12 +803,12 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_PYUKUMUKU] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, [SPECIES_TYPE_NULL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_SILVALLY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_MINIOR] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, + [SPECIES_SILVALLY_NORMAL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_MINIOR_METEOR_RED] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, [SPECIES_KOMALA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_TURTONATOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, [SPECIES_TOGEDEMARU] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 13 }, - [SPECIES_MIMIKYU] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_MIMIKYU_DISGUISED] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, [SPECIES_BRUXISH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 14 }, [SPECIES_DRAMPA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_DHELMISE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, @@ -881,13 +881,13 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, [SPECIES_BARRASKEWDA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, [SPECIES_TOXEL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_TOXTRICITY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_AMPED] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_SIZZLIPEDE] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, [SPECIES_CENTISKORCH] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_CLOBBOPUS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, [SPECIES_GRAPPLOCT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_SINISTEA] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, - [SPECIES_POLTEAGEIST] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_SINISTEA_PHONY] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, + [SPECIES_POLTEAGEIST_PHONY] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, [SPECIES_HATENNA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, [SPECIES_HATTREM] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_HATTERENE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, @@ -901,15 +901,15 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, [SPECIES_RUNERIGUS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_MILCERY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 16 }, - [SPECIES_ALCREMIE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, [SPECIES_FALINKS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, [SPECIES_PINCURCHIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, [SPECIES_SNOM] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, [SPECIES_FROSMOTH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_STONJOURNER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_EISCUE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_INDEEDEE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_MORPEKO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, + [SPECIES_EISCUE_ICE_FACE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, + [SPECIES_INDEEDEE_MALE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_MORPEKO_FULL_BELLY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, [SPECIES_CUFANT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, [SPECIES_COPPERAJAH] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, [SPECIES_DRACOZOLT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, @@ -920,11 +920,11 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_DREEPY] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, [SPECIES_DRAKLOAK] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, [SPECIES_DRAGAPULT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_ZACIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ZAMAZENTA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_ETERNATUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_KUBFU] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_URSHIFU] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, [SPECIES_ZARUDE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_REGIELEKI] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, [SPECIES_REGIDRAGO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, @@ -934,10 +934,10 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_WYRDEER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_KLEAVOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, [SPECIES_URSALUNA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_BASCULEGION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_BASCULEGION_MALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SNEASLER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_OVERQWIL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_ENAMORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ENAMORUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif [SPECIES_VENUSAUR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, [SPECIES_CHARIZARD_MEGA_X] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, @@ -1033,7 +1033,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_LINOONE_GALARIAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_DARMANITAN_GALARIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_YAMASK_GALARIAN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, [SPECIES_STUNFISK_GALARIAN] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 23 }, #endif @@ -1165,7 +1165,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_BASCULIN_WHITE_STRIPED] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 16 }, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, // Deerling [SPECIES_DEERLING_SUMMER] = DEERLING_BACK_PIC_COORDS, [SPECIES_DEERLING_AUTUMN] = DEERLING_BACK_PIC_COORDS, @@ -1256,7 +1256,7 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = // Xerneas [SPECIES_XERNEAS_ACTIVE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, // Zygarde - [SPECIES_ZYGARDE_10] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, + [SPECIES_ZYGARDE_10_AURA_BREAK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, [SPECIES_ZYGARDE_COMPLETE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -1327,14 +1327,14 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, // Indeedee @@ -1358,6 +1358,41 @@ const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = [SPECIES_ENAMORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, // Basculegion [SPECIES_BASCULEGION_FEMALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + // Gigantamax Forms + [SPECIES_VENUSAUR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 11 }, + [SPECIES_CHARIZARD_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_BLASTOISE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_BUTTERFREE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_PIKACHU_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MEOWTH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_MACHAMP_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_GENGAR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, + [SPECIES_KINGLER_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_LAPRAS_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_EEVEE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, + [SPECIES_SNORLAX_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_GARBODOR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_MELMETAL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 14 }, + [SPECIES_RILLABOOM_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_CINDERACE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_INTELEON_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ORBEETLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, + [SPECIES_DREDNAW_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 12 }, + [SPECIES_COALOSSAL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, + [SPECIES_FLAPPLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_APPLETUN_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_SANDACONDA_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CENTISKORCH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_HATTERENE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 10 }, + [SPECIES_ALCREMIE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, + [SPECIES_COPPERAJAH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, + [SPECIES_DURALUDON_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, #endif [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, }; diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index a232abb567..bdab1335ea 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -360,7 +360,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ARON, gMonBackPic_Aron), SPECIES_SPRITE(LAIRON, gMonBackPic_Lairon), SPECIES_SPRITE(AGGRON, gMonBackPic_Aggron), - SPECIES_SPRITE(CASTFORM, gMonBackPic_Castform), + SPECIES_SPRITE(CASTFORM_NORMAL, gMonBackPic_CastformNormal), SPECIES_SPRITE(VOLBEAT, gMonBackPic_Volbeat), SPECIES_SPRITE(ILLUMISE, gMonBackPic_Illumise), SPECIES_SPRITE(LILEEP, gMonBackPic_Lileep), @@ -385,7 +385,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(LATIAS, gMonBackPic_Latias), SPECIES_SPRITE(LATIOS, gMonBackPic_Latios), SPECIES_SPRITE(JIRACHI, gMonBackPic_Jirachi), - SPECIES_SPRITE(DEOXYS, gMonBackPic_Deoxys), + SPECIES_SPRITE(DEOXYS_NORMAL, gMonBackPic_DeoxysNormal), SPECIES_SPRITE(CHIMECHO, gMonBackPic_Chimecho), #if P_GEN_4_POKEMON == TRUE SPECIES_SPRITE(TURTWIG, gMonBackPic_Turtwig), @@ -413,8 +413,8 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(RAMPARDOS, gMonBackPic_Rampardos), SPECIES_SPRITE(SHIELDON, gMonBackPic_Shieldon), SPECIES_SPRITE(BASTIODON, gMonBackPic_Bastiodon), - SPECIES_SPRITE(BURMY, gMonBackPic_Burmy), - SPECIES_SPRITE(WORMADAM, gMonBackPic_Wormadam), + SPECIES_SPRITE(BURMY_PLANT_CLOAK, gMonBackPic_BurmyPlantCloak), + SPECIES_SPRITE(WORMADAM_PLANT_CLOAK, gMonBackPic_WormadamPlantCloak), SPECIES_SPRITE(MOTHIM, gMonBackPic_Mothim), SPECIES_SPRITE(COMBEE, gMonBackPic_Combee), SPECIES_SPRITE(VESPIQUEN, gMonBackPic_Vespiquen), @@ -422,9 +422,9 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(BUIZEL, gMonBackPic_Buizel), SPECIES_SPRITE(FLOATZEL, gMonBackPic_Floatzel), SPECIES_SPRITE(CHERUBI, gMonBackPic_Cherubi), - SPECIES_SPRITE(CHERRIM, gMonBackPic_Cherrim), - SPECIES_SPRITE(SHELLOS, gMonBackPic_Shellos), - SPECIES_SPRITE(GASTRODON, gMonBackPic_Gastrodon), + SPECIES_SPRITE(CHERRIM_OVERCAST, gMonBackPic_CherrimOvercast), + SPECIES_SPRITE(SHELLOS_WEST_SEA, gMonBackPic_ShellosWestSea), + SPECIES_SPRITE(GASTRODON_WEST_SEA, gMonBackPic_GastrodonWestSea), SPECIES_SPRITE(AMBIPOM, gMonBackPic_Ambipom), SPECIES_SPRITE(DRIFLOON, gMonBackPic_Drifloon), SPECIES_SPRITE(DRIFBLIM, gMonBackPic_Drifblim), @@ -488,12 +488,12 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(PALKIA, gMonBackPic_Palkia), SPECIES_SPRITE(HEATRAN, gMonBackPic_Heatran), SPECIES_SPRITE(REGIGIGAS, gMonBackPic_Regigigas), - SPECIES_SPRITE(GIRATINA, gMonBackPic_Giratina), + SPECIES_SPRITE(GIRATINA_ALTERED, gMonBackPic_GiratinaAltered), SPECIES_SPRITE(CRESSELIA, gMonBackPic_Cresselia), SPECIES_SPRITE(PHIONE, gMonBackPic_Phione), SPECIES_SPRITE(MANAPHY, gMonBackPic_Manaphy), SPECIES_SPRITE(DARKRAI, gMonBackPic_Darkrai), - SPECIES_SPRITE(SHAYMIN, gMonBackPic_Shaymin), + SPECIES_SPRITE(SHAYMIN_LAND, gMonBackPic_ShayminLand), SPECIES_SPRITE(ARCEUS, gMonBackPic_Arceus), #endif #if P_GEN_5_POKEMON == TRUE @@ -553,12 +553,12 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(WHIMSICOTT, gMonBackPic_Whimsicott), SPECIES_SPRITE(PETILIL, gMonBackPic_Petilil), SPECIES_SPRITE(LILLIGANT, gMonBackPic_Lilligant), - SPECIES_SPRITE(BASCULIN, gMonBackPic_Basculin), + SPECIES_SPRITE(BASCULIN, gMonBackPic_BasculinRedStriped), SPECIES_SPRITE(SANDILE, gMonBackPic_Sandile), SPECIES_SPRITE(KROKOROK, gMonBackPic_Krokorok), SPECIES_SPRITE(KROOKODILE, gMonBackPic_Krookodile), SPECIES_SPRITE(DARUMAKA, gMonBackPic_Darumaka), - SPECIES_SPRITE(DARMANITAN, gMonBackPic_Darmanitan), + SPECIES_SPRITE(DARMANITAN_STANDARD_MODE, gMonBackPic_DarmanitanStandardMode), SPECIES_SPRITE(MARACTUS, gMonBackPic_Maractus), SPECIES_SPRITE(DWEBBLE, gMonBackPic_Dwebble), SPECIES_SPRITE(CRUSTLE, gMonBackPic_Crustle), @@ -588,8 +588,8 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(VANILLITE, gMonBackPic_Vanillite), SPECIES_SPRITE(VANILLISH, gMonBackPic_Vanillish), SPECIES_SPRITE(VANILLUXE, gMonBackPic_Vanilluxe), - SPECIES_SPRITE(DEERLING, gMonBackPic_Deerling), - SPECIES_SPRITE(SAWSBUCK, gMonBackPic_Sawsbuck), + SPECIES_SPRITE(DEERLING_SPRING, gMonBackPic_Deerling), + SPECIES_SPRITE(SAWSBUCK_SPRING, gMonBackPic_SawsbuckSpring), SPECIES_SPRITE(EMOLGA, gMonBackPic_Emolga), SPECIES_SPRITE(KARRABLAST, gMonBackPic_Karrablast), SPECIES_SPRITE(ESCAVALIER, gMonBackPic_Escavalier), @@ -644,14 +644,14 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(COBALION, gMonBackPic_Cobalion), SPECIES_SPRITE(TERRAKION, gMonBackPic_Terrakion), SPECIES_SPRITE(VIRIZION, gMonBackPic_Virizion), - SPECIES_SPRITE(TORNADUS, gMonBackPic_Tornadus), - SPECIES_SPRITE(THUNDURUS, gMonBackPic_Thundurus), + SPECIES_SPRITE(TORNADUS_INCARNATE, gMonBackPic_TornadusIncarnate), + SPECIES_SPRITE(THUNDURUS_INCARNATE, gMonBackPic_ThundurusIncarnate), SPECIES_SPRITE(RESHIRAM, gMonBackPic_Reshiram), SPECIES_SPRITE(ZEKROM, gMonBackPic_Zekrom), - SPECIES_SPRITE(LANDORUS, gMonBackPic_Landorus), + SPECIES_SPRITE(LANDORUS_INCARNATE, gMonBackPic_LandorusIncarnate), SPECIES_SPRITE(KYUREM, gMonBackPic_Kyurem), - SPECIES_SPRITE(KELDEO, gMonBackPic_Keldeo), - SPECIES_SPRITE(MELOETTA, gMonBackPic_Meloetta), + SPECIES_SPRITE(KELDEO_ORDINARY, gMonBackPic_KeldeoOrdinary), + SPECIES_SPRITE(MELOETTA, gMonBackPic_MeloettaAria), SPECIES_SPRITE(GENESECT, gMonBackPic_Genesect), #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(TALONFLAME, gMonBackPic_Talonflame), SPECIES_SPRITE(SCATTERBUG, gMonBackPic_Scatterbug), SPECIES_SPRITE(SPEWPA, gMonBackPic_Spewpa), - SPECIES_SPRITE(VIVILLON, gMonBackPic_Vivillon), + SPECIES_SPRITE(VIVILLON_ICY_SNOW, gMonBackPic_VivillonIcySnow), SPECIES_SPRITE(LITLEO, gMonBackPic_Litleo), SPECIES_SPRITE(PYROAR, gMonBackPic_Pyroar), - SPECIES_SPRITE(FLABEBE, gMonBackPic_Flabebe), - SPECIES_SPRITE(FLOETTE, gMonBackPic_Floette), - SPECIES_SPRITE(FLORGES, gMonBackPic_Florges), + SPECIES_SPRITE(FLABEBE_RED_FLOWER, gMonBackPic_Flabebe), + SPECIES_SPRITE(FLOETTE_RED_FLOWER, gMonBackPic_Floette), + SPECIES_SPRITE(FLORGES_RED_FLOWER, gMonBackPic_Florges), SPECIES_SPRITE(SKIDDO, gMonBackPic_Skiddo), SPECIES_SPRITE(GOGOAT, gMonBackPic_Gogoat), SPECIES_SPRITE(PANCHAM, gMonBackPic_Pancham), SPECIES_SPRITE(PANGORO, gMonBackPic_Pangoro), - SPECIES_SPRITE(FURFROU, gMonBackPic_Furfrou), + SPECIES_SPRITE(FURFROU_NATURAL, gMonBackPic_FurfrouNatural), SPECIES_SPRITE(ESPURR, gMonBackPic_Espurr), - SPECIES_SPRITE(MEOWSTIC, gMonBackPic_Meowstic), + SPECIES_SPRITE(MEOWSTIC_MALE, gMonBackPic_MeowsticMale), SPECIES_SPRITE(HONEDGE, gMonBackPic_Honedge), SPECIES_SPRITE(DOUBLADE, gMonBackPic_Doublade), - SPECIES_SPRITE(AEGISLASH, gMonBackPic_Aegislash), + SPECIES_SPRITE(AEGISLASH_SHIELD, gMonBackPic_AegislashShield), SPECIES_SPRITE(SPRITZEE, gMonBackPic_Spritzee), SPECIES_SPRITE(AROMATISSE, gMonBackPic_Aromatisse), SPECIES_SPRITE(SWIRLIX, gMonBackPic_Swirlix), @@ -715,17 +715,17 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(KLEFKI, gMonBackPic_Klefki), SPECIES_SPRITE(PHANTUMP, gMonBackPic_Phantump), SPECIES_SPRITE(TREVENANT, gMonBackPic_Trevenant), - SPECIES_SPRITE(PUMPKABOO, gMonBackPic_Pumpkaboo), - SPECIES_SPRITE(GOURGEIST, gMonBackPic_Gourgeist), + SPECIES_SPRITE(PUMPKABOO_AVERAGE, gMonBackPic_PumpkabooAverage), + SPECIES_SPRITE(GOURGEIST_AVERAGE, gMonBackPic_GourgeistAverage), SPECIES_SPRITE(BERGMITE, gMonBackPic_Bergmite), SPECIES_SPRITE(AVALUGG, gMonBackPic_Avalugg), SPECIES_SPRITE(NOIBAT, gMonBackPic_Noibat), SPECIES_SPRITE(NOIVERN, gMonBackPic_Noivern), - SPECIES_SPRITE(XERNEAS, gMonBackPic_Xerneas), + SPECIES_SPRITE(XERNEAS_NEUTRAL, gMonBackPic_XerneasNeutral), SPECIES_SPRITE(YVELTAL, gMonBackPic_Yveltal), - SPECIES_SPRITE(ZYGARDE, gMonBackPic_Zygarde), + SPECIES_SPRITE(ZYGARDE_50_AURA_BREAK, gMonBackPic_Zygarde50), SPECIES_SPRITE(DIANCIE, gMonBackPic_Diancie), - SPECIES_SPRITE(HOOPA, gMonBackPic_Hoopa), + SPECIES_SPRITE(HOOPA_CONFINED, gMonBackPic_HoopaConfined), SPECIES_SPRITE(VOLCANION, gMonBackPic_Volcanion), #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(VIKAVOLT, gMonBackPic_Vikavolt), SPECIES_SPRITE(CRABRAWLER, gMonBackPic_Crabrawler), SPECIES_SPRITE(CRABOMINABLE, gMonBackPic_Crabominable), - SPECIES_SPRITE(ORICORIO, gMonBackPic_Oricorio), + SPECIES_SPRITE(ORICORIO_BAILE, gMonBackPic_OricorioBaile), SPECIES_SPRITE(CUTIEFLY, gMonBackPic_Cutiefly), SPECIES_SPRITE(RIBOMBEE, gMonBackPic_Ribombee), SPECIES_SPRITE(ROCKRUFF, gMonBackPic_Rockruff), - SPECIES_SPRITE(LYCANROC, gMonBackPic_Lycanroc), - SPECIES_SPRITE(WISHIWASHI, gMonBackPic_Wishiwashi), + SPECIES_SPRITE(LYCANROC_MIDDAY, gMonBackPic_LycanrocMidday), + SPECIES_SPRITE(WISHIWASHI_SOLO, gMonBackPic_WishiwashiSolo), SPECIES_SPRITE(MAREANIE, gMonBackPic_Mareanie), SPECIES_SPRITE(TOXAPEX, gMonBackPic_Toxapex), SPECIES_SPRITE(MUDBRAY, gMonBackPic_Mudbray), @@ -781,11 +781,11 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(PYUKUMUKU, gMonBackPic_Pyukumuku), SPECIES_SPRITE(TYPE_NULL, gMonBackPic_TypeNull), SPECIES_SPRITE(SILVALLY, gMonBackPic_Silvally), - SPECIES_SPRITE(MINIOR, gMonBackPic_Minior), + SPECIES_SPRITE(MINIOR_METEOR_RED, gMonBackPic_MiniorMeteor), SPECIES_SPRITE(KOMALA, gMonBackPic_Komala), SPECIES_SPRITE(TURTONATOR, gMonBackPic_Turtonator), SPECIES_SPRITE(TOGEDEMARU, gMonBackPic_Togedemaru), - SPECIES_SPRITE(MIMIKYU, gMonBackPic_Mimikyu), + SPECIES_SPRITE(MIMIKYU_DISGUISED, gMonBackPic_MimikyuDisguised), SPECIES_SPRITE(BRUXISH, gMonBackPic_Bruxish), SPECIES_SPRITE(DRAMPA, gMonBackPic_Drampa), SPECIES_SPRITE(DHELMISE, gMonBackPic_Dhelmise), @@ -858,13 +858,13 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ARROKUDA, gMonBackPic_Arrokuda), SPECIES_SPRITE(BARRASKEWDA, gMonBackPic_Barraskewda), SPECIES_SPRITE(TOXEL, gMonBackPic_Toxel), - SPECIES_SPRITE(TOXTRICITY, gMonBackPic_Toxtricity), + SPECIES_SPRITE(TOXTRICITY_AMPED, gMonBackPic_ToxtricityAmped), SPECIES_SPRITE(SIZZLIPEDE, gMonBackPic_Sizzlipede), SPECIES_SPRITE(CENTISKORCH, gMonBackPic_Centiskorch), SPECIES_SPRITE(CLOBBOPUS, gMonBackPic_Clobbopus), SPECIES_SPRITE(GRAPPLOCT, gMonBackPic_Grapploct), - SPECIES_SPRITE(SINISTEA, gMonBackPic_Sinistea), - SPECIES_SPRITE(POLTEAGEIST, gMonBackPic_Polteageist), + SPECIES_SPRITE(SINISTEA_PHONY, gMonBackPic_Sinistea), + SPECIES_SPRITE(POLTEAGEIST_PHONY, gMonBackPic_Polteageist), SPECIES_SPRITE(HATENNA, gMonBackPic_Hatenna), SPECIES_SPRITE(HATTREM, gMonBackPic_Hattrem), SPECIES_SPRITE(HATTERENE, gMonBackPic_Hatterene), @@ -884,9 +884,9 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(SNOM, gMonBackPic_Snom), SPECIES_SPRITE(FROSMOTH, gMonBackPic_Frosmoth), SPECIES_SPRITE(STONJOURNER, gMonBackPic_Stonjourner), - SPECIES_SPRITE(EISCUE, gMonBackPic_Eiscue), - SPECIES_SPRITE(INDEEDEE, gMonBackPic_Indeedee), - SPECIES_SPRITE(MORPEKO, gMonBackPic_Morpeko), + SPECIES_SPRITE(EISCUE_ICE_FACE, gMonBackPic_EiscueIceFace), + SPECIES_SPRITE(INDEEDEE_MALE, gMonBackPic_IndeedeeMale), + SPECIES_SPRITE(MORPEKO_FULL_BELLY, gMonBackPic_MorpekoFullBelly), SPECIES_SPRITE(CUFANT, gMonBackPic_Cufant), SPECIES_SPRITE(COPPERAJAH, gMonBackPic_Copperajah), SPECIES_SPRITE(DRACOZOLT, gMonBackPic_Dracozolt), @@ -897,11 +897,11 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(DREEPY, gMonBackPic_Dreepy), SPECIES_SPRITE(DRAKLOAK, gMonBackPic_Drakloak), SPECIES_SPRITE(DRAGAPULT, gMonBackPic_Dragapult), - SPECIES_SPRITE(ZACIAN, gMonBackPic_Zacian), - SPECIES_SPRITE(ZAMAZENTA, gMonBackPic_Zamazenta), + SPECIES_SPRITE(ZACIAN_HERO_OF_MANY_BATTLES, gMonBackPic_ZacianHeroOfManyBattles), + SPECIES_SPRITE(ZAMAZENTA_HERO_OF_MANY_BATTLES, gMonBackPic_ZamazentaHeroOfManyBattles), SPECIES_SPRITE(ETERNATUS, gMonBackPic_Eternatus), SPECIES_SPRITE(KUBFU, gMonBackPic_Kubfu), - SPECIES_SPRITE(URSHIFU, gMonBackPic_Urshifu), + SPECIES_SPRITE(URSHIFU_SINGLE_STRIKE_STYLE, gMonBackPic_UrshifuSingleStrikeStyle), SPECIES_SPRITE(ZARUDE, gMonBackPic_Zarude), SPECIES_SPRITE(REGIELEKI, gMonBackPic_Regieleki), SPECIES_SPRITE(REGIDRAGO, gMonBackPic_Regidrago), @@ -911,10 +911,10 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(WYRDEER, gMonBackPic_Wyrdeer), SPECIES_SPRITE(KLEAVOR, gMonBackPic_Kleavor), SPECIES_SPRITE(URSALUNA, gMonBackPic_Ursaluna), - SPECIES_SPRITE(BASCULEGION, gMonBackPic_Basculegion), + SPECIES_SPRITE(BASCULEGION_MALE, gMonBackPic_BasculegionMale), SPECIES_SPRITE(SNEASLER, gMonBackPic_Sneasler), SPECIES_SPRITE(OVERQWIL, gMonBackPic_Overqwil), - SPECIES_SPRITE(ENAMORUS, gMonBackPic_Enamorus), + SPECIES_SPRITE(ENAMORUS_INCARNATE, gMonBackPic_EnamorusIncarnate), #endif SPECIES_SPRITE(VENUSAUR_MEGA, gMonBackPic_VenusaurMega), @@ -1011,7 +1011,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(LINOONE_GALARIAN, gMonBackPic_LinooneGalarian), #if P_GEN_5_POKEMON == TRUE SPECIES_SPRITE(DARUMAKA_GALARIAN, gMonBackPic_DarumakaGalarian), - SPECIES_SPRITE(DARMANITAN_GALARIAN, gMonBackPic_DarmanitanGalarian), + SPECIES_SPRITE(DARMANITAN_GALARIAN_STANDARD_MODE, gMonBackPic_DarmanitanGalarianStandardMode), SPECIES_SPRITE(YAMASK_GALARIAN, gMonBackPic_YamaskGalarian), SPECIES_SPRITE(STUNFISK_GALARIAN, gMonBackPic_StunfiskGalarian), #endif @@ -1141,7 +1141,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(BASCULIN_WHITE_STRIPED, gMonBackPic_BasculinWhiteStriped), SPECIES_SPRITE(DARMANITAN_ZEN_MODE, gMonBackPic_DarmanitanZenMode), - SPECIES_SPRITE(DARMANITAN_ZEN_MODE_GALARIAN, gMonBackPic_DarmanitanZenModeGalarian), + SPECIES_SPRITE(DARMANITAN_GALARIAN_ZEN_MODE, gMonBackPic_DarmanitanGalarianZenMode), SPECIES_SPRITE(DEERLING_SUMMER, gMonBackPic_Deerling), SPECIES_SPRITE(DEERLING_AUTUMN, gMonBackPic_Deerling), @@ -1234,7 +1234,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ZYGARDE_10, gMonBackPic_Zygarde10), SPECIES_SPRITE(ZYGARDE_10_POWER_CONSTRUCT, gMonBackPic_Zygarde10), - SPECIES_SPRITE(ZYGARDE_50_POWER_CONSTRUCT, gMonBackPic_Zygarde), + SPECIES_SPRITE(ZYGARDE_50_POWER_CONSTRUCT, gMonBackPic_Zygarde50), SPECIES_SPRITE(ZYGARDE_COMPLETE, gMonBackPic_ZygardeComplete), SPECIES_SPRITE(HOOPA_UNBOUND, gMonBackPic_HoopaUnbound), @@ -1270,12 +1270,12 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(SILVALLY_DARK, gMonBackPic_Silvally), SPECIES_SPRITE(SILVALLY_FAIRY, gMonBackPic_Silvally), - SPECIES_SPRITE(MINIOR_METEOR_ORANGE, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_YELLOW, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_GREEN, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_BLUE, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_INDIGO, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_VIOLET, gMonBackPic_Minior), + SPECIES_SPRITE(MINIOR_METEOR_ORANGE, gMonBackPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_YELLOW, gMonBackPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_GREEN, gMonBackPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_BLUE, gMonBackPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_INDIGO, gMonBackPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_VIOLET, gMonBackPic_MiniorMeteor), SPECIES_SPRITE(MINIOR_CORE_RED, gMonBackPic_MiniorCore), SPECIES_SPRITE(MINIOR_CORE_ORANGE, gMonBackPic_MiniorCore), SPECIES_SPRITE(MINIOR_CORE_YELLOW, gMonBackPic_MiniorCore), @@ -1334,6 +1334,42 @@ const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ENAMORUS_THERIAN, gMonBackPic_EnamorusTherian), SPECIES_SPRITE(BASCULEGION_FEMALE, gMonBackPic_BasculegionFemale), + + // Gigantamax Forms + SPECIES_SPRITE(VENUSAUR_GIGANTAMAX, gMonBackPic_VenusaurGigantamax), + SPECIES_SPRITE(CHARIZARD_GIGANTAMAX, gMonBackPic_CharizardGigantamax), + SPECIES_SPRITE(BLASTOISE_GIGANTAMAX, gMonBackPic_BlastoiseGigantamax), + SPECIES_SPRITE(BUTTERFREE_GIGANTAMAX, gMonBackPic_ButterfreeGigantamax), + SPECIES_SPRITE(PIKACHU_GIGANTAMAX, gMonBackPic_PikachuGigantamax), + SPECIES_SPRITE(MEOWTH_GIGANTAMAX, gMonBackPic_MeowthGigantamax), + SPECIES_SPRITE(MACHAMP_GIGANTAMAX, gMonBackPic_MachampGigantamax), + SPECIES_SPRITE(GENGAR_GIGANTAMAX, gMonBackPic_GengarGigantamax), + SPECIES_SPRITE(KINGLER_GIGANTAMAX, gMonBackPic_KinglerGigantamax), + SPECIES_SPRITE(LAPRAS_GIGANTAMAX, gMonBackPic_LaprasGigantamax), + SPECIES_SPRITE(EEVEE_GIGANTAMAX, gMonBackPic_EeveeGigantamax), + SPECIES_SPRITE(SNORLAX_GIGANTAMAX, gMonBackPic_SnorlaxGigantamax), + SPECIES_SPRITE(GARBODOR_GIGANTAMAX, gMonBackPic_GarbodorGigantamax), + SPECIES_SPRITE(MELMETAL_GIGANTAMAX, gMonBackPic_MelmetalGigantamax), + SPECIES_SPRITE(RILLABOOM_GIGANTAMAX, gMonBackPic_RillaboomGigantamax), + SPECIES_SPRITE(CINDERACE_GIGANTAMAX, gMonBackPic_CinderaceGigantamax), + SPECIES_SPRITE(INTELEON_GIGANTAMAX, gMonBackPic_InteleonGigantamax), + SPECIES_SPRITE(CORVIKNIGHT_GIGANTAMAX, gMonBackPic_CorviknightGigantamax), + SPECIES_SPRITE(ORBEETLE_GIGANTAMAX, gMonBackPic_OrbeetleGigantamax), + SPECIES_SPRITE(DREDNAW_GIGANTAMAX, gMonBackPic_DrednawGigantamax), + SPECIES_SPRITE(COALOSSAL_GIGANTAMAX, gMonBackPic_CoalossalGigantamax), + SPECIES_SPRITE(FLAPPLE_GIGANTAMAX, gMonBackPic_FlappleGigantamax), + SPECIES_SPRITE(APPLETUN_GIGANTAMAX, gMonBackPic_AppletunGigantamax), + SPECIES_SPRITE(SANDACONDA_GIGANTAMAX, gMonBackPic_SandacondaGigantamax), + SPECIES_SPRITE(TOXTRICITY_AMPED_GIGANTAMAX, gMonBackPic_ToxtricityGigantamax), + SPECIES_SPRITE(TOXTRICITY_LOW_KEY_GIGANTAMAX, gMonBackPic_ToxtricityGigantamax), + SPECIES_SPRITE(CENTISKORCH_GIGANTAMAX, gMonBackPic_CentiskorchGigantamax), + SPECIES_SPRITE(HATTERENE_GIGANTAMAX, gMonBackPic_HattereneGigantamax), + SPECIES_SPRITE(GRIMMSNARL_GIGANTAMAX, gMonBackPic_GrimmsnarlGigantamax), + SPECIES_SPRITE(ALCREMIE_GIGANTAMAX, gMonBackPic_AlcremieGigantamax), + SPECIES_SPRITE(COPPERAJAH_GIGANTAMAX, gMonBackPic_CopperajahGigantamax), + SPECIES_SPRITE(DURALUDON_GIGANTAMAX, gMonBackPic_DuraludonGigantamax), + SPECIES_SPRITE(URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, gMonBackPic_UrshifuSingleStrikeGigantamax), + SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonBackPic_UrshifuRapidStrikeGigantamax), #endif SPECIES_SPRITE(EGG, gMonFrontPic_Egg), }; diff --git a/src/data/pokemon_graphics/enemy_mon_elevation.h b/src/data/pokemon_graphics/enemy_mon_elevation.h index 007c6a90a7..9f80b98a3a 100644 --- a/src/data/pokemon_graphics/enemy_mon_elevation.h +++ b/src/data/pokemon_graphics/enemy_mon_elevation.h @@ -51,7 +51,7 @@ const u8 gEnemyMonElevation[NUM_SPECIES + 1] = [SPECIES_DUSKULL] = 13, [SPECIES_SHUPPET] = 14, [SPECIES_BANETTE] = 8, - [SPECIES_CASTFORM] = 16, + [SPECIES_CASTFORM_NORMAL] = 16, [SPECIES_BELDUM] = 8, [SPECIES_RAYQUAZA] = 6, [SPECIES_LATIAS] = 12, @@ -99,19 +99,19 @@ const u8 gEnemyMonElevation[NUM_SPECIES + 1] = [SPECIES_BRAVIARY] = 8, [SPECIES_HYDREIGON] = 3, [SPECIES_VOLCARONA] = 6, - [SPECIES_TORNADUS] = 7, - [SPECIES_THUNDURUS] = 7, - [SPECIES_LANDORUS] = 7, - [SPECIES_MELOETTA] = 8, + [SPECIES_TORNADUS_INCARNATE] = 7, + [SPECIES_THUNDURUS_INCARNATE] = 7, + [SPECIES_LANDORUS_INCARNATE] = 7, + [SPECIES_MELOETTA_ARIA] = 8, // Gen 6 [SPECIES_FLETCHINDER] = 9, [SPECIES_TALONFLAME] = 7, - [SPECIES_VIVILLON] = 9, - [SPECIES_FLABEBE] = 6, - [SPECIES_FLOETTE] = 4, + [SPECIES_VIVILLON_ICY_SNOW] = 9, + [SPECIES_FLABEBE_RED_FLOWER] = 6, + [SPECIES_FLOETTE_RED_FLOWER] = 4, [SPECIES_HONEDGE] = 4, [SPECIES_DOUBLADE] = 5, - [SPECIES_AEGISLASH] = 3, + [SPECIES_AEGISLASH_SHIELD] = 3, [SPECIES_SPRITZEE] = 14, [SPECIES_INKAY] = 14, [SPECIES_CARBINK] = 4, @@ -119,13 +119,13 @@ const u8 gEnemyMonElevation[NUM_SPECIES + 1] = [SPECIES_PHANTUMP] = 5, [SPECIES_NOIBAT] = 8, [SPECIES_YVELTAL] = 5, - [SPECIES_HOOPA] = 13, + [SPECIES_HOOPA_CONFINED] = 13, // Gen 7 [SPECIES_VIKAVOLT] = 8, [SPECIES_CUTIEFLY] = 10, [SPECIES_RIBOMBEE] = 6, [SPECIES_COMFEY] = 8, - [SPECIES_MINIOR] = 17, + [SPECIES_MINIOR_METEOR_RED] = 17, [SPECIES_DHELMISE] = 2, [SPECIES_TAPU_KOKO] = 9, [SPECIES_TAPU_LELE] = 8, @@ -143,8 +143,8 @@ const u8 gEnemyMonElevation[NUM_SPECIES + 1] = [SPECIES_CORVISQUIRE] = 10, [SPECIES_ORBEETLE] = 8, [SPECIES_FLAPPLE] = 9, - [SPECIES_SINISTEA] = 9, - [SPECIES_POLTEAGEIST] = 11, + [SPECIES_SINISTEA_PHONY] = 9, + [SPECIES_POLTEAGEIST_PHONY] = 11, [SPECIES_RUNERIGUS] = 5, [SPECIES_MILCERY] = 10, [SPECIES_FROSMOTH] = 7, @@ -268,4 +268,5 @@ const u8 gEnemyMonElevation[NUM_SPECIES + 1] = [SPECIES_SINISTEA_ANTIQUE] = 10, [SPECIES_POLTEAGEIST_ANTIQUE] = 12, [SPECIES_ETERNATUS_ETERNAMAX] = 13, + [SPECIES_BUTTERFREE_GIGANTAMAX] = 10, }; diff --git a/src/data/pokemon_graphics/footprint_table.h b/src/data/pokemon_graphics/footprint_table.h index 38737ac439..67e88c6d3d 100644 --- a/src/data/pokemon_graphics/footprint_table.h +++ b/src/data/pokemon_graphics/footprint_table.h @@ -360,7 +360,7 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_ARON] = gMonFootprint_Aron, [SPECIES_LAIRON] = gMonFootprint_Lairon, [SPECIES_AGGRON] = gMonFootprint_Aggron, - [SPECIES_CASTFORM] = gMonFootprint_Castform, + [SPECIES_CASTFORM_NORMAL] = gMonFootprint_Castform, [SPECIES_VOLBEAT] = gMonFootprint_Volbeat, [SPECIES_ILLUMISE] = gMonFootprint_Illumise, [SPECIES_LILEEP] = gMonFootprint_Lileep, @@ -385,7 +385,7 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_LATIAS] = gMonFootprint_Latias, [SPECIES_LATIOS] = gMonFootprint_Latios, [SPECIES_JIRACHI] = gMonFootprint_Jirachi, - [SPECIES_DEOXYS] = gMonFootprint_Deoxys, + [SPECIES_DEOXYS_NORMAL] = gMonFootprint_Deoxys, [SPECIES_CHIMECHO] = gMonFootprint_Chimecho, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = gMonFootprint_Turtwig, @@ -413,8 +413,8 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = gMonFootprint_Rampardos, [SPECIES_SHIELDON] = gMonFootprint_Shieldon, [SPECIES_BASTIODON] = gMonFootprint_Bastiodon, - [SPECIES_BURMY] = gMonFootprint_Burmy, - [SPECIES_WORMADAM] = gMonFootprint_Wormadam, + [SPECIES_BURMY_PLANT_CLOAK] = gMonFootprint_Burmy, + [SPECIES_WORMADAM_PLANT_CLOAK] = gMonFootprint_Wormadam, [SPECIES_MOTHIM] = gMonFootprint_Mothim, [SPECIES_COMBEE] = gMonFootprint_Combee, [SPECIES_VESPIQUEN] = gMonFootprint_Vespiquen, @@ -422,9 +422,9 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = gMonFootprint_Buizel, [SPECIES_FLOATZEL] = gMonFootprint_Floatzel, [SPECIES_CHERUBI] = gMonFootprint_Cherubi, - [SPECIES_CHERRIM] = gMonFootprint_Cherrim, - [SPECIES_SHELLOS] = gMonFootprint_Shellos, - [SPECIES_GASTRODON] = gMonFootprint_Gastrodon, + [SPECIES_CHERRIM_OVERCAST] = gMonFootprint_Cherrim, + [SPECIES_SHELLOS_WEST_SEA] = gMonFootprint_Shellos, + [SPECIES_GASTRODON_WEST_SEA] = gMonFootprint_Gastrodon, [SPECIES_AMBIPOM] = gMonFootprint_Ambipom, [SPECIES_DRIFLOON] = gMonFootprint_Drifloon, [SPECIES_DRIFBLIM] = gMonFootprint_Drifblim, @@ -488,13 +488,13 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_PALKIA] = gMonFootprint_Palkia, [SPECIES_HEATRAN] = gMonFootprint_Heatran, [SPECIES_REGIGIGAS] = gMonFootprint_Regigigas, - [SPECIES_GIRATINA] = gMonFootprint_Giratina, + [SPECIES_GIRATINA_ALTERED] = gMonFootprint_Giratina, [SPECIES_CRESSELIA] = gMonFootprint_Cresselia, [SPECIES_PHIONE] = gMonFootprint_Phione, [SPECIES_MANAPHY] = gMonFootprint_Manaphy, [SPECIES_DARKRAI] = gMonFootprint_Darkrai, - [SPECIES_SHAYMIN] = gMonFootprint_Shaymin, - [SPECIES_ARCEUS] = gMonFootprint_Arceus, + [SPECIES_SHAYMIN_LAND] = gMonFootprint_Shaymin, + [SPECIES_ARCEUS_NORMAL] = gMonFootprint_Arceus, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = gMonFootprint_Victini, @@ -553,12 +553,12 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = gMonFootprint_Whimsicott, [SPECIES_PETILIL] = gMonFootprint_Petilil, [SPECIES_LILLIGANT] = gMonFootprint_Lilligant, - [SPECIES_BASCULIN] = gMonFootprint_Basculin, + [SPECIES_BASCULIN_RED_STRIPED] = gMonFootprint_Basculin, [SPECIES_SANDILE] = gMonFootprint_Sandile, [SPECIES_KROKOROK] = gMonFootprint_Krokorok, [SPECIES_KROOKODILE] = gMonFootprint_Krookodile, [SPECIES_DARUMAKA] = gMonFootprint_Darumaka, - [SPECIES_DARMANITAN] = gMonFootprint_Darmanitan, + [SPECIES_DARMANITAN_STANDARD_MODE] = gMonFootprint_Darmanitan, [SPECIES_MARACTUS] = gMonFootprint_Maractus, [SPECIES_DWEBBLE] = gMonFootprint_Dwebble, [SPECIES_CRUSTLE] = gMonFootprint_Crustle, @@ -588,8 +588,8 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = gMonFootprint_Vanillite, [SPECIES_VANILLISH] = gMonFootprint_Vanillish, [SPECIES_VANILLUXE] = gMonFootprint_Vanilluxe, - [SPECIES_DEERLING] = gMonFootprint_Deerling, - [SPECIES_SAWSBUCK] = gMonFootprint_Sawsbuck, + [SPECIES_DEERLING_SPRING] = gMonFootprint_Deerling, + [SPECIES_SAWSBUCK_SPRING] = gMonFootprint_Sawsbuck, [SPECIES_EMOLGA] = gMonFootprint_Emolga, [SPECIES_KARRABLAST] = gMonFootprint_Karrablast, [SPECIES_ESCAVALIER] = gMonFootprint_Escavalier, @@ -644,14 +644,14 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_COBALION] = gMonFootprint_Cobalion, [SPECIES_TERRAKION] = gMonFootprint_Terrakion, [SPECIES_VIRIZION] = gMonFootprint_Virizion, - [SPECIES_TORNADUS] = gMonFootprint_Tornadus, - [SPECIES_THUNDURUS] = gMonFootprint_Thundurus, + [SPECIES_TORNADUS_INCARNATE] = gMonFootprint_Tornadus, + [SPECIES_THUNDURUS_INCARNATE] = gMonFootprint_Thundurus, [SPECIES_RESHIRAM] = gMonFootprint_Reshiram, [SPECIES_ZEKROM] = gMonFootprint_Zekrom, - [SPECIES_LANDORUS] = gMonFootprint_Landorus, + [SPECIES_LANDORUS_INCARNATE] = gMonFootprint_Landorus, [SPECIES_KYUREM] = gMonFootprint_Kyurem, - [SPECIES_KELDEO] = gMonFootprint_Keldeo, - [SPECIES_MELOETTA] = gMonFootprint_Meloetta, + [SPECIES_KELDEO_ORDINARY] = gMonFootprint_Keldeo, + [SPECIES_MELOETTA_ARIA] = gMonFootprint_Meloetta, [SPECIES_GENESECT] = gMonFootprint_Genesect, #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = gMonFootprint_Talonflame, [SPECIES_SCATTERBUG] = gMonFootprint_Scatterbug, [SPECIES_SPEWPA] = gMonFootprint_Spewpa, - [SPECIES_VIVILLON] = gMonFootprint_Vivillon, + [SPECIES_VIVILLON_ICY_SNOW] = gMonFootprint_Vivillon, [SPECIES_LITLEO] = gMonFootprint_Litleo, [SPECIES_PYROAR] = gMonFootprint_Pyroar, - [SPECIES_FLABEBE] = gMonFootprint_Flabebe, - [SPECIES_FLOETTE] = gMonFootprint_Floette, - [SPECIES_FLORGES] = gMonFootprint_Florges, + [SPECIES_FLABEBE_RED_FLOWER] = gMonFootprint_Flabebe, + [SPECIES_FLOETTE_RED_FLOWER] = gMonFootprint_Floette, + [SPECIES_FLORGES_RED_FLOWER] = gMonFootprint_Florges, [SPECIES_SKIDDO] = gMonFootprint_Skiddo, [SPECIES_GOGOAT] = gMonFootprint_Gogoat, [SPECIES_PANCHAM] = gMonFootprint_Pancham, [SPECIES_PANGORO] = gMonFootprint_Pangoro, - [SPECIES_FURFROU] = gMonFootprint_Furfrou, + [SPECIES_FURFROU_NATURAL] = gMonFootprint_Furfrou, [SPECIES_ESPURR] = gMonFootprint_Espurr, - [SPECIES_MEOWSTIC] = gMonFootprint_Meowstic, + [SPECIES_MEOWSTIC_MALE] = gMonFootprint_Meowstic, [SPECIES_HONEDGE] = gMonFootprint_Honedge, [SPECIES_DOUBLADE] = gMonFootprint_Doublade, - [SPECIES_AEGISLASH] = gMonFootprint_Aegislash, + [SPECIES_AEGISLASH_SHIELD] = gMonFootprint_Aegislash, [SPECIES_SPRITZEE] = gMonFootprint_Spritzee, [SPECIES_AROMATISSE] = gMonFootprint_Aromatisse, [SPECIES_SWIRLIX] = gMonFootprint_Swirlix, @@ -715,17 +715,17 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = gMonFootprint_Klefki, [SPECIES_PHANTUMP] = gMonFootprint_Phantump, [SPECIES_TREVENANT] = gMonFootprint_Trevenant, - [SPECIES_PUMPKABOO] = gMonFootprint_Pumpkaboo, - [SPECIES_GOURGEIST] = gMonFootprint_Gourgeist, + [SPECIES_PUMPKABOO_AVERAGE] = gMonFootprint_Pumpkaboo, + [SPECIES_GOURGEIST_AVERAGE] = gMonFootprint_Gourgeist, [SPECIES_BERGMITE] = gMonFootprint_Bergmite, [SPECIES_AVALUGG] = gMonFootprint_Avalugg, [SPECIES_NOIBAT] = gMonFootprint_Noibat, [SPECIES_NOIVERN] = gMonFootprint_Noivern, - [SPECIES_XERNEAS] = gMonFootprint_Xerneas, + [SPECIES_XERNEAS_NEUTRAL] = gMonFootprint_Xerneas, [SPECIES_YVELTAL] = gMonFootprint_Yveltal, - [SPECIES_ZYGARDE] = gMonFootprint_Zygarde, + [SPECIES_ZYGARDE_50_AURA_BREAK] = gMonFootprint_Zygarde, [SPECIES_DIANCIE] = gMonFootprint_Diancie, - [SPECIES_HOOPA] = gMonFootprint_Hoopa, + [SPECIES_HOOPA_CONFINED] = gMonFootprint_Hoopa, [SPECIES_VOLCANION] = gMonFootprint_Volcanion, #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = gMonFootprint_Vikavolt, [SPECIES_CRABRAWLER] = gMonFootprint_Crabrawler, [SPECIES_CRABOMINABLE] = gMonFootprint_Crabominable, - [SPECIES_ORICORIO] = gMonFootprint_Oricorio, + [SPECIES_ORICORIO_BAILE] = gMonFootprint_Oricorio, [SPECIES_CUTIEFLY] = gMonFootprint_Cutiefly, [SPECIES_RIBOMBEE] = gMonFootprint_Ribombee, [SPECIES_ROCKRUFF] = gMonFootprint_Rockruff, - [SPECIES_LYCANROC] = gMonFootprint_Lycanroc, - [SPECIES_WISHIWASHI] = gMonFootprint_Wishiwashi, + [SPECIES_LYCANROC_MIDDAY] = gMonFootprint_Lycanroc, + [SPECIES_WISHIWASHI_SOLO] = gMonFootprint_Wishiwashi, [SPECIES_MAREANIE] = gMonFootprint_Mareanie, [SPECIES_TOXAPEX] = gMonFootprint_Toxapex, [SPECIES_MUDBRAY] = gMonFootprint_Mudbray, @@ -780,12 +780,12 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = gMonFootprint_Palossand, [SPECIES_PYUKUMUKU] = gMonFootprint_Pyukumuku, [SPECIES_TYPE_NULL] = gMonFootprint_Type_Null, - [SPECIES_SILVALLY] = gMonFootprint_Silvally, - [SPECIES_MINIOR] = gMonFootprint_Minior, + [SPECIES_SILVALLY_NORMAL] = gMonFootprint_Silvally, + [SPECIES_MINIOR_METEOR_RED] = gMonFootprint_Minior, [SPECIES_KOMALA] = gMonFootprint_Komala, [SPECIES_TURTONATOR] = gMonFootprint_Turtonator, [SPECIES_TOGEDEMARU] = gMonFootprint_Togedemaru, - [SPECIES_MIMIKYU] = gMonFootprint_Mimikyu, + [SPECIES_MIMIKYU_DISGUISED] = gMonFootprint_Mimikyu, [SPECIES_BRUXISH] = gMonFootprint_Bruxish, [SPECIES_DRAMPA] = gMonFootprint_Drampa, [SPECIES_DHELMISE] = gMonFootprint_Dhelmise, @@ -858,13 +858,13 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = gMonFootprint_Arrokuda, [SPECIES_BARRASKEWDA] = gMonFootprint_Barraskewda, [SPECIES_TOXEL] = gMonFootprint_Toxel, - [SPECIES_TOXTRICITY] = gMonFootprint_Toxtricity, + [SPECIES_TOXTRICITY_AMPED] = gMonFootprint_Toxtricity, [SPECIES_SIZZLIPEDE] = gMonFootprint_Sizzlipede, [SPECIES_CENTISKORCH] = gMonFootprint_Centiskorch, [SPECIES_CLOBBOPUS] = gMonFootprint_Clobbopus, [SPECIES_GRAPPLOCT] = gMonFootprint_Grapploct, - [SPECIES_SINISTEA] = gMonFootprint_Sinistea, - [SPECIES_POLTEAGEIST] = gMonFootprint_Polteageist, + [SPECIES_SINISTEA_PHONY] = gMonFootprint_Sinistea, + [SPECIES_POLTEAGEIST_PHONY] = gMonFootprint_Polteageist, [SPECIES_HATENNA] = gMonFootprint_Hatenna, [SPECIES_HATTREM] = gMonFootprint_Hattrem, [SPECIES_HATTERENE] = gMonFootprint_Hatterene, @@ -878,15 +878,15 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = gMonFootprint_Mr_Rime, [SPECIES_RUNERIGUS] = gMonFootprint_Runerigus, [SPECIES_MILCERY] = gMonFootprint_Milcery, - [SPECIES_ALCREMIE] = gMonFootprint_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonFootprint_Alcremie, [SPECIES_FALINKS] = gMonFootprint_Falinks, [SPECIES_PINCURCHIN] = gMonFootprint_Pincurchin, [SPECIES_SNOM] = gMonFootprint_Snom, [SPECIES_FROSMOTH] = gMonFootprint_Frosmoth, [SPECIES_STONJOURNER] = gMonFootprint_Stonjourner, - [SPECIES_EISCUE] = gMonFootprint_Eiscue, - [SPECIES_INDEEDEE] = gMonFootprint_Indeedee, - [SPECIES_MORPEKO] = gMonFootprint_Morpeko, + [SPECIES_EISCUE_ICE_FACE] = gMonFootprint_Eiscue, + [SPECIES_INDEEDEE_MALE] = gMonFootprint_Indeedee, + [SPECIES_MORPEKO_FULL_BELLY] = gMonFootprint_Morpeko, [SPECIES_CUFANT] = gMonFootprint_Cufant, [SPECIES_COPPERAJAH] = gMonFootprint_Copperajah, [SPECIES_DRACOZOLT] = gMonFootprint_Dracozolt, @@ -897,11 +897,11 @@ const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = [SPECIES_DREEPY] = gMonFootprint_Dreepy, [SPECIES_DRAKLOAK] = gMonFootprint_Drakloak, [SPECIES_DRAGAPULT] = gMonFootprint_Dragapult, - [SPECIES_ZACIAN] = gMonFootprint_Zacian, - [SPECIES_ZAMAZENTA] = gMonFootprint_Zamazenta, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = gMonFootprint_Zacian, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = gMonFootprint_Zamazenta, [SPECIES_ETERNATUS] = gMonFootprint_Eternatus, [SPECIES_KUBFU] = gMonFootprint_Kubfu, - [SPECIES_URSHIFU] = gMonFootprint_Urshifu, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = gMonFootprint_Urshifu, [SPECIES_ZARUDE] = gMonFootprint_Zarude, [SPECIES_REGIELEKI] = gMonFootprint_Regieleki, [SPECIES_REGIDRAGO] = gMonFootprint_Regidrago, diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 27e38d0221..cc2fae2884 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -4131,7 +4131,7 @@ static const union AnimCmd sAnim_Aggron_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Castform_1[] = +static const union AnimCmd sAnim_CastformNormal_1[] = { ANIMCMD_FRAME(0, 12), ANIMCMD_FRAME(1, 24), @@ -4490,7 +4490,7 @@ static const union AnimCmd sAnim_Jirachi_2[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Deoxys_1[] = +static const union AnimCmd sAnim_DeoxysNormal_1[] = { ANIMCMD_FRAME(0, 16), ANIMCMD_FRAME(1, 16), @@ -4500,15 +4500,6 @@ static const union AnimCmd sAnim_Deoxys_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Deoxys_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Chimecho_1[] = { ANIMCMD_FRAME(0, 15), @@ -5894,7 +5885,7 @@ static const union AnimCmd sAnim_Regigigas_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Giratina_1[] = +static const union AnimCmd sAnim_GiratinaAltered_1[] = { ANIMCMD_FRAME(0, 12), ANIMCMD_FRAME(1, 45), @@ -5937,7 +5928,7 @@ static const union AnimCmd sAnim_Darkrai_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Shaymin_1[] = +static const union AnimCmd sAnim_ShayminLand_1[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_FRAME(1, 10), @@ -6606,7 +6597,7 @@ static const union AnimCmd sAnim_Darumaka_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Darmanitan_1[] = +static const union AnimCmd sAnim_DarmanitanStandardMode_1[] = { ANIMCMD_FRAME(1, 10), ANIMCMD_FRAME(0, 10), @@ -7480,7 +7471,7 @@ static const union AnimCmd sAnim_Virizion_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Tornadus_1[] = +static const union AnimCmd sAnim_TornadusIncarnate_1[] = { ANIMCMD_FRAME(1, 2), ANIMCMD_FRAME(0, 2), @@ -7507,7 +7498,7 @@ static const union AnimCmd sAnim_Tornadus_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Thundurus_1[] = +static const union AnimCmd sAnim_ThundurusIncarnate_1[] = { ANIMCMD_FRAME(1, 2), ANIMCMD_FRAME(0, 2), @@ -7548,7 +7539,7 @@ static const union AnimCmd sAnim_Zekrom_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Landorus_1[] = +static const union AnimCmd sAnim_LandorusIncarnate_1[] = { ANIMCMD_FRAME(1, 2), ANIMCMD_FRAME(0, 2), @@ -7584,14 +7575,14 @@ static const union AnimCmd sAnim_Kyurem_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Keldeo_1[] = +static const union AnimCmd sAnim_KeldeoOrdinary_1[] = { ANIMCMD_FRAME(1, 32), ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; -static const union AnimCmd sAnim_Meloetta_1[] = +static const union AnimCmd sAnim_MeloettaAria_1[] = { ANIMCMD_FRAME(0, 15), ANIMCMD_FRAME(1, 45), @@ -7603,7 +7594,7 @@ static const union AnimCmd sAnim_Meloetta_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Meloetta_2[] = +static const union AnimCmd sAnim_MeloettaAria_2[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_FRAME(2, 20), @@ -7985,7 +7976,7 @@ static const union AnimCmd sAnim_Doublade_2[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Aegislash_1[] = +static const union AnimCmd sAnim_AegislashShield_1[] = { ANIMCMD_FRAME(0, 18), ANIMCMD_FRAME(1, 18), @@ -8191,15 +8182,7 @@ static const union AnimCmd sAnim_Dedenne_1[] = static const union AnimCmd sAnim_Carbink_1[] = { - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 25), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; @@ -8348,7 +8331,7 @@ static const union AnimCmd sAnim_Yveltal_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Zygarde_1[] = +static const union AnimCmd sAnim_Zygarde50_1[] = { ANIMCMD_FRAME(0, 10), ANIMCMD_FRAME(1, 25), @@ -8534,13 +8517,13 @@ static const union AnimCmd sAnim_Rockruff_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Lycanroc_1[] = +static const union AnimCmd sAnim_LycanrocMidday_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_Wishiwashi_1[] = +static const union AnimCmd sAnim_WishiwashiSolo_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -8729,7 +8712,7 @@ static const union AnimCmd sAnim_Silvally_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Minior_1[] = +static const union AnimCmd sAnim_MiniorMeteor_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -8755,7 +8738,7 @@ static const union AnimCmd sAnim_Togedemaru_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Mimikyu_1[] = +static const union AnimCmd sAnim_MimikyuDisguised_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -9531,7 +9514,7 @@ static const union AnimCmd sAnim_Overqwil_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Enamorus_1[] = +static const union AnimCmd sAnim_EnamorusIncarnate_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -10043,7 +10026,7 @@ static const union AnimCmd sAnim_DarumakaGalarian_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_DarmanitanGalarian_1[] = +static const union AnimCmd sAnim_DarmanitanGalarianStandardMode_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -10162,6 +10145,208 @@ static const union AnimCmd sAnim_DecidueyeHisuian_1[] = }; #endif +static const union AnimCmd sAnim_VenusaurGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_CharizardGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_BlastoiseGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ButterfreeGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_PikachuGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_MeowthGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_MachampGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_GengarGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_KinglerGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_LaprasGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_EeveeGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SnorlaxGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +#if P_GEN_5_POKEMON == TRUE +static const union AnimCmd sAnim_GarbodorGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; +#endif +#if P_GEN_7_POKEMON == TRUE +static const union AnimCmd sAnim_MelmetalGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; +#endif +#if P_GEN_8_POKEMON == TRUE +static const union AnimCmd sAnim_RillaboomGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_CinderaceGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_InteleonGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_CorviknightGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_OrbeetleGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DrednawGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_CoalossalGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_FlappleGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_AppletunGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SandacondaGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ToxtricityGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_CentiskorchGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_HattereneGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_GrimmsnarlGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_AlcremieGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_CopperajahGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DuraludonGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_UrshifuSingleStrikeStyleGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_UrshifuRapidStrikeStyleGigantamax_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; +#endif + static const union AnimCmd sAnim_PikachuCosplay_1[] = { ANIMCMD_FRAME(0, 1), @@ -10356,7 +10541,7 @@ static const union AnimCmd sAnim_DarmanitanZenMode_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_DarmanitanZenModeGalarian_1[] = +static const union AnimCmd sAnim_DarmanitanGalarianZenMode_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -10501,6 +10686,7 @@ static const union AnimCmd sAnim_LycanrocDusk_1[] = ANIMCMD_END, }; #endif + #if P_GEN_8_POKEMON == TRUE static const union AnimCmd sAnim_EnamorusTherian_1[] = { @@ -10891,7 +11077,7 @@ SINGLE_ANIMATION(Relicanth); SINGLE_ANIMATION(Aron); SINGLE_ANIMATION(Lairon); SINGLE_ANIMATION(Aggron); -SINGLE_ANIMATION(Castform); +SINGLE_ANIMATION(CastformNormal); SINGLE_ANIMATION(CastformSunny); SINGLE_ANIMATION(CastformRainy); SINGLE_ANIMATION(CastformSnowy); @@ -10919,7 +11105,7 @@ DOUBLE_ANIMATION(Rayquaza); DOUBLE_ANIMATION(Latias); DOUBLE_ANIMATION(Latios); DOUBLE_ANIMATION(Jirachi); -DOUBLE_ANIMATION(Deoxys); +SINGLE_ANIMATION(DeoxysNormal); SINGLE_ANIMATION(Chimecho); SINGLE_ANIMATION(Egg); SINGLE_ANIMATION(UnownB); @@ -11056,12 +11242,12 @@ SINGLE_ANIMATION(Dialga); SINGLE_ANIMATION(Palkia); SINGLE_ANIMATION(Heatran); SINGLE_ANIMATION(Regigigas); -SINGLE_ANIMATION(Giratina); +SINGLE_ANIMATION(GiratinaAltered); SINGLE_ANIMATION(Cresselia); SINGLE_ANIMATION(Phione); SINGLE_ANIMATION(Manaphy); SINGLE_ANIMATION(Darkrai); -SINGLE_ANIMATION(Shaymin); +SINGLE_ANIMATION(ShayminLand); SINGLE_ANIMATION(Arceus); #endif #if P_GEN_5_POKEMON == TRUE @@ -11126,7 +11312,7 @@ SINGLE_ANIMATION(Sandile); SINGLE_ANIMATION(Krokorok); DOUBLE_ANIMATION(Krookodile); SINGLE_ANIMATION(Darumaka); -SINGLE_ANIMATION(Darmanitan); +SINGLE_ANIMATION(DarmanitanStandardMode); SINGLE_ANIMATION(Maractus); SINGLE_ANIMATION(Dwebble); SINGLE_ANIMATION(Crustle); @@ -11212,14 +11398,14 @@ SINGLE_ANIMATION(Volcarona); SINGLE_ANIMATION(Cobalion); DOUBLE_ANIMATION(Terrakion); SINGLE_ANIMATION(Virizion); -SINGLE_ANIMATION(Tornadus); -SINGLE_ANIMATION(Thundurus); +SINGLE_ANIMATION(TornadusIncarnate); +SINGLE_ANIMATION(ThundurusIncarnate); SINGLE_ANIMATION(Reshiram); SINGLE_ANIMATION(Zekrom); -SINGLE_ANIMATION(Landorus); +SINGLE_ANIMATION(LandorusIncarnate); SINGLE_ANIMATION(Kyurem); -SINGLE_ANIMATION(Keldeo); -DOUBLE_ANIMATION(Meloetta); +SINGLE_ANIMATION(KeldeoOrdinary); +DOUBLE_ANIMATION(MeloettaAria); SINGLE_ANIMATION(Genesect); #endif #if P_GEN_6_POKEMON == TRUE @@ -11255,7 +11441,7 @@ SINGLE_ANIMATION(Espurr); SINGLE_ANIMATION(Meowstic); SINGLE_ANIMATION(Honedge); DOUBLE_ANIMATION(Doublade); -SINGLE_ANIMATION(Aegislash); +SINGLE_ANIMATION(AegislashShield); SINGLE_ANIMATION(Spritzee); SINGLE_ANIMATION(Aromatisse); SINGLE_ANIMATION(Swirlix); @@ -11292,7 +11478,7 @@ SINGLE_ANIMATION(Noibat); SINGLE_ANIMATION(Noivern); SINGLE_ANIMATION(Xerneas); SINGLE_ANIMATION(Yveltal); -SINGLE_ANIMATION(Zygarde); +SINGLE_ANIMATION(Zygarde50); SINGLE_ANIMATION(Diancie); SINGLE_ANIMATION(Hoopa); SINGLE_ANIMATION(Volcanion); @@ -11321,8 +11507,8 @@ SINGLE_ANIMATION(Oricorio); SINGLE_ANIMATION(Cutiefly); SINGLE_ANIMATION(Ribombee); SINGLE_ANIMATION(Rockruff); -SINGLE_ANIMATION(Lycanroc); -SINGLE_ANIMATION(Wishiwashi); +SINGLE_ANIMATION(LycanrocMidday); +SINGLE_ANIMATION(WishiwashiSolo); SINGLE_ANIMATION(Mareanie); SINGLE_ANIMATION(Toxapex); SINGLE_ANIMATION(Mudbray); @@ -11350,11 +11536,11 @@ SINGLE_ANIMATION(Palossand); SINGLE_ANIMATION(Pyukumuku); SINGLE_ANIMATION(TypeNull); SINGLE_ANIMATION(Silvally); -SINGLE_ANIMATION(Minior); +SINGLE_ANIMATION(MiniorMeteor); SINGLE_ANIMATION(Komala); SINGLE_ANIMATION(Turtonator); SINGLE_ANIMATION(Togedemaru); -SINGLE_ANIMATION(Mimikyu); +SINGLE_ANIMATION(MimikyuDisguised); SINGLE_ANIMATION(Bruxish); SINGLE_ANIMATION(Drampa); SINGLE_ANIMATION(Dhelmise); @@ -11483,7 +11669,7 @@ SINGLE_ANIMATION(Ursaluna); SINGLE_ANIMATION(Basculegion); SINGLE_ANIMATION(Sneasler); SINGLE_ANIMATION(Overqwil); -SINGLE_ANIMATION(Enamorus); +SINGLE_ANIMATION(EnamorusIncarnate); #endif SINGLE_ANIMATION(VenusaurMega); SINGLE_ANIMATION(CHARIZARD_MEGA_X); @@ -11576,7 +11762,7 @@ SINGLE_ANIMATION(ZigzagoonGalarian); SINGLE_ANIMATION(LinooneGalarian); #if P_GEN_5_POKEMON == TRUE SINGLE_ANIMATION(DarumakaGalarian); -SINGLE_ANIMATION(DarmanitanGalarian); +SINGLE_ANIMATION(DarmanitanGalarianStandardMode); SINGLE_ANIMATION(YamaskGalarian); SINGLE_ANIMATION(StunfiskGalarian); #endif @@ -11628,7 +11814,7 @@ SINGLE_ANIMATION(ShayminSky); #endif #if P_GEN_5_POKEMON == TRUE SINGLE_ANIMATION(DarmanitanZenMode); -SINGLE_ANIMATION(DarmanitanZenModeGalarian); +SINGLE_ANIMATION(DarmanitanGalarianZenMode); SINGLE_ANIMATION(TornadusTherian); SINGLE_ANIMATION(ThundurusTherian); SINGLE_ANIMATION(LandorusTherian); @@ -11653,6 +11839,46 @@ SINGLE_ANIMATION(LycanrocDusk); #if P_GEN_8_POKEMON == TRUE SINGLE_ANIMATION(EnamorusTherian); #endif +// Gigantamax Forms +SINGLE_ANIMATION(VenusaurGigantamax); +SINGLE_ANIMATION(CharizardGigantamax); +SINGLE_ANIMATION(BlastoiseGigantamax); +SINGLE_ANIMATION(ButterfreeGigantamax); +SINGLE_ANIMATION(PikachuGigantamax); +SINGLE_ANIMATION(MeowthGigantamax); +SINGLE_ANIMATION(MachampGigantamax); +SINGLE_ANIMATION(GengarGigantamax); +SINGLE_ANIMATION(KinglerGigantamax); +SINGLE_ANIMATION(LaprasGigantamax); +SINGLE_ANIMATION(EeveeGigantamax); +SINGLE_ANIMATION(SnorlaxGigantamax); +#if P_GEN_5_POKEMON == TRUE +SINGLE_ANIMATION(GarbodorGigantamax); +#endif +#if P_GEN_7_POKEMON == TRUE +SINGLE_ANIMATION(MelmetalGigantamax); +#endif +#if P_GEN_8_POKEMON == TRUE +SINGLE_ANIMATION(RillaboomGigantamax); +SINGLE_ANIMATION(CinderaceGigantamax); +SINGLE_ANIMATION(InteleonGigantamax); +SINGLE_ANIMATION(CorviknightGigantamax); +SINGLE_ANIMATION(OrbeetleGigantamax); +SINGLE_ANIMATION(DrednawGigantamax); +SINGLE_ANIMATION(CoalossalGigantamax); +SINGLE_ANIMATION(FlappleGigantamax); +SINGLE_ANIMATION(AppletunGigantamax); +SINGLE_ANIMATION(SandacondaGigantamax); +SINGLE_ANIMATION(ToxtricityGigantamax); +SINGLE_ANIMATION(CentiskorchGigantamax); +SINGLE_ANIMATION(HattereneGigantamax); +SINGLE_ANIMATION(GrimmsnarlGigantamax); +SINGLE_ANIMATION(AlcremieGigantamax); +SINGLE_ANIMATION(CopperajahGigantamax); +SINGLE_ANIMATION(DuraludonGigantamax); +SINGLE_ANIMATION(UrshifuSingleStrikeStyleGigantamax); +SINGLE_ANIMATION(UrshifuRapidStrikeStyleGigantamax); +#endif const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = { // Gen 1 @@ -12018,7 +12244,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_ARON] = sAnims_Aron, [SPECIES_LAIRON] = sAnims_Lairon, [SPECIES_AGGRON] = sAnims_Aggron, - [SPECIES_CASTFORM] = sAnims_Castform, + [SPECIES_CASTFORM_NORMAL] = sAnims_CastformNormal, [SPECIES_VOLBEAT] = sAnims_Volbeat, [SPECIES_ILLUMISE] = sAnims_Illumise, [SPECIES_LILEEP] = sAnims_Lileep, @@ -12043,7 +12269,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_LATIAS] = sAnims_Latias, [SPECIES_LATIOS] = sAnims_Latios, [SPECIES_JIRACHI] = sAnims_Jirachi, - [SPECIES_DEOXYS] = sAnims_Deoxys, + [SPECIES_DEOXYS_NORMAL] = sAnims_DeoxysNormal, [SPECIES_CHIMECHO] = sAnims_Chimecho, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = sAnims_Turtwig, @@ -12071,8 +12297,8 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = sAnims_Rampardos, [SPECIES_SHIELDON] = sAnims_Shieldon, [SPECIES_BASTIODON] = sAnims_Bastiodon, - [SPECIES_BURMY] = sAnims_Burmy, - [SPECIES_WORMADAM] = sAnims_Wormadam, + [SPECIES_BURMY_PLANT_CLOAK] = sAnims_Burmy, + [SPECIES_WORMADAM_PLANT_CLOAK] = sAnims_Wormadam, [SPECIES_MOTHIM] = sAnims_Mothim, [SPECIES_COMBEE] = sAnims_Combee, [SPECIES_VESPIQUEN] = sAnims_Vespiquen, @@ -12080,9 +12306,9 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = sAnims_Buizel, [SPECIES_FLOATZEL] = sAnims_Floatzel, [SPECIES_CHERUBI] = sAnims_Cherubi, - [SPECIES_CHERRIM] = sAnims_CherrimOvercast, - [SPECIES_SHELLOS] = sAnims_Shellos, - [SPECIES_GASTRODON] = sAnims_Gastrodon, + [SPECIES_CHERRIM_OVERCAST] = sAnims_CherrimOvercast, + [SPECIES_SHELLOS_WEST_SEA] = sAnims_Shellos, + [SPECIES_GASTRODON_WEST_SEA] = sAnims_Gastrodon, [SPECIES_AMBIPOM] = sAnims_Ambipom, [SPECIES_DRIFLOON] = sAnims_Drifloon, [SPECIES_DRIFBLIM] = sAnims_Drifblim, @@ -12146,13 +12372,13 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_PALKIA] = sAnims_Palkia, [SPECIES_HEATRAN] = sAnims_Heatran, [SPECIES_REGIGIGAS] = sAnims_Regigigas, - [SPECIES_GIRATINA] = sAnims_Giratina, + [SPECIES_GIRATINA_ALTERED] = sAnims_GiratinaAltered, [SPECIES_CRESSELIA] = sAnims_Cresselia, [SPECIES_PHIONE] = sAnims_Phione, [SPECIES_MANAPHY] = sAnims_Manaphy, [SPECIES_DARKRAI] = sAnims_Darkrai, - [SPECIES_SHAYMIN] = sAnims_Shaymin, - [SPECIES_ARCEUS] = sAnims_Arceus, + [SPECIES_SHAYMIN_LAND] = sAnims_ShayminLand, + [SPECIES_ARCEUS_NORMAL] = sAnims_Arceus, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = sAnims_Victini, @@ -12211,12 +12437,12 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = sAnims_Whimsicott, [SPECIES_PETILIL] = sAnims_Petilil, [SPECIES_LILLIGANT] = sAnims_Lilligant, - [SPECIES_BASCULIN] = sAnims_Basculin, + [SPECIES_BASCULIN_RED_STRIPED] = sAnims_Basculin, [SPECIES_SANDILE] = sAnims_Sandile, [SPECIES_KROKOROK] = sAnims_Krokorok, [SPECIES_KROOKODILE] = sAnims_Krookodile, [SPECIES_DARUMAKA] = sAnims_Darumaka, - [SPECIES_DARMANITAN] = sAnims_Darmanitan, + [SPECIES_DARMANITAN_STANDARD_MODE] = sAnims_DarmanitanStandardMode, [SPECIES_MARACTUS] = sAnims_Maractus, [SPECIES_DWEBBLE] = sAnims_Dwebble, [SPECIES_CRUSTLE] = sAnims_Crustle, @@ -12246,8 +12472,8 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = sAnims_Vanillite, [SPECIES_VANILLISH] = sAnims_Vanillish, [SPECIES_VANILLUXE] = sAnims_Vanilluxe, - [SPECIES_DEERLING] = sAnims_Deerling, - [SPECIES_SAWSBUCK] = sAnims_Sawsbuck, + [SPECIES_DEERLING_SPRING] = sAnims_Deerling, + [SPECIES_SAWSBUCK_SPRING] = sAnims_Sawsbuck, [SPECIES_EMOLGA] = sAnims_Emolga, [SPECIES_KARRABLAST] = sAnims_Karrablast, [SPECIES_ESCAVALIER] = sAnims_Escavalier, @@ -12302,14 +12528,14 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_COBALION] = sAnims_Cobalion, [SPECIES_TERRAKION] = sAnims_Terrakion, [SPECIES_VIRIZION] = sAnims_Virizion, - [SPECIES_TORNADUS] = sAnims_Tornadus, - [SPECIES_THUNDURUS] = sAnims_Thundurus, + [SPECIES_TORNADUS_INCARNATE] = sAnims_TornadusIncarnate, + [SPECIES_THUNDURUS_INCARNATE] = sAnims_ThundurusIncarnate, [SPECIES_RESHIRAM] = sAnims_Reshiram, [SPECIES_ZEKROM] = sAnims_Zekrom, - [SPECIES_LANDORUS] = sAnims_Landorus, + [SPECIES_LANDORUS_INCARNATE] = sAnims_LandorusIncarnate, [SPECIES_KYUREM] = sAnims_Kyurem, - [SPECIES_KELDEO] = sAnims_Keldeo, - [SPECIES_MELOETTA] = sAnims_Meloetta, + [SPECIES_KELDEO_ORDINARY] = sAnims_KeldeoOrdinary, + [SPECIES_MELOETTA_ARIA] = sAnims_MeloettaAria, [SPECIES_GENESECT] = sAnims_Genesect, #endif #if P_GEN_6_POKEMON == TRUE @@ -12329,22 +12555,22 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = sAnims_Talonflame, [SPECIES_SCATTERBUG] = sAnims_Scatterbug, [SPECIES_SPEWPA] = sAnims_Spewpa, - [SPECIES_VIVILLON] = sAnims_Vivillon, + [SPECIES_VIVILLON_ICY_SNOW] = sAnims_Vivillon, [SPECIES_LITLEO] = sAnims_Litleo, [SPECIES_PYROAR] = sAnims_Pyroar, - [SPECIES_FLABEBE] = sAnims_Flabebe, - [SPECIES_FLOETTE] = sAnims_Floette, - [SPECIES_FLORGES] = sAnims_Florges, + [SPECIES_FLABEBE_RED_FLOWER] = sAnims_Flabebe, + [SPECIES_FLOETTE_RED_FLOWER] = sAnims_Floette, + [SPECIES_FLORGES_RED_FLOWER] = sAnims_Florges, [SPECIES_SKIDDO] = sAnims_Skiddo, [SPECIES_GOGOAT] = sAnims_Gogoat, [SPECIES_PANCHAM] = sAnims_Pancham, [SPECIES_PANGORO] = sAnims_Pangoro, - [SPECIES_FURFROU] = sAnims_Furfrou, + [SPECIES_FURFROU_NATURAL] = sAnims_Furfrou, [SPECIES_ESPURR] = sAnims_Espurr, - [SPECIES_MEOWSTIC] = sAnims_Meowstic, + [SPECIES_MEOWSTIC_MALE] = sAnims_Meowstic, [SPECIES_HONEDGE] = sAnims_Honedge, [SPECIES_DOUBLADE] = sAnims_Doublade, - [SPECIES_AEGISLASH] = sAnims_Aegislash, + [SPECIES_AEGISLASH_SHIELD] = sAnims_AegislashShield, [SPECIES_SPRITZEE] = sAnims_Spritzee, [SPECIES_AROMATISSE] = sAnims_Aromatisse, [SPECIES_SWIRLIX] = sAnims_Swirlix, @@ -12373,17 +12599,17 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = sAnims_Klefki, [SPECIES_PHANTUMP] = sAnims_Phantump, [SPECIES_TREVENANT] = sAnims_Trevenant, - [SPECIES_PUMPKABOO] = sAnims_Pumpkaboo, - [SPECIES_GOURGEIST] = sAnims_Gourgeist, + [SPECIES_PUMPKABOO_AVERAGE] = sAnims_Pumpkaboo, + [SPECIES_GOURGEIST_AVERAGE] = sAnims_Gourgeist, [SPECIES_BERGMITE] = sAnims_Bergmite, [SPECIES_AVALUGG] = sAnims_Avalugg, [SPECIES_NOIBAT] = sAnims_Noibat, [SPECIES_NOIVERN] = sAnims_Noivern, - [SPECIES_XERNEAS] = sAnims_Xerneas, + [SPECIES_XERNEAS_NEUTRAL] = sAnims_Xerneas, [SPECIES_YVELTAL] = sAnims_Yveltal, - [SPECIES_ZYGARDE] = sAnims_Zygarde, + [SPECIES_ZYGARDE_50_AURA_BREAK] = sAnims_Zygarde50, [SPECIES_DIANCIE] = sAnims_Diancie, - [SPECIES_HOOPA] = sAnims_Hoopa, + [SPECIES_HOOPA_CONFINED] = sAnims_Hoopa, [SPECIES_VOLCANION] = sAnims_Volcanion, #endif #if P_GEN_7_POKEMON == TRUE @@ -12406,12 +12632,12 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = sAnims_Vikavolt, [SPECIES_CRABRAWLER] = sAnims_Crabrawler, [SPECIES_CRABOMINABLE] = sAnims_Crabominable, - [SPECIES_ORICORIO] = sAnims_Oricorio, + [SPECIES_ORICORIO_BAILE] = sAnims_Oricorio, [SPECIES_CUTIEFLY] = sAnims_Cutiefly, [SPECIES_RIBOMBEE] = sAnims_Ribombee, [SPECIES_ROCKRUFF] = sAnims_Rockruff, - [SPECIES_LYCANROC] = sAnims_Lycanroc, - [SPECIES_WISHIWASHI] = sAnims_Wishiwashi, + [SPECIES_LYCANROC_MIDDAY] = sAnims_LycanrocMidday, + [SPECIES_WISHIWASHI_SOLO] = sAnims_WishiwashiSolo, [SPECIES_MAREANIE] = sAnims_Mareanie, [SPECIES_TOXAPEX] = sAnims_Toxapex, [SPECIES_MUDBRAY] = sAnims_Mudbray, @@ -12438,12 +12664,12 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = sAnims_Palossand, [SPECIES_PYUKUMUKU] = sAnims_Pyukumuku, [SPECIES_TYPE_NULL] = sAnims_TypeNull, - [SPECIES_SILVALLY] = sAnims_Silvally, - [SPECIES_MINIOR] = sAnims_Minior, + [SPECIES_SILVALLY_NORMAL] = sAnims_Silvally, + [SPECIES_MINIOR_METEOR_RED] = sAnims_MiniorMeteor, [SPECIES_KOMALA] = sAnims_Komala, [SPECIES_TURTONATOR] = sAnims_Turtonator, [SPECIES_TOGEDEMARU] = sAnims_Togedemaru, - [SPECIES_MIMIKYU] = sAnims_Mimikyu, + [SPECIES_MIMIKYU_DISGUISED] = sAnims_MimikyuDisguised, [SPECIES_BRUXISH] = sAnims_Bruxish, [SPECIES_DRAMPA] = sAnims_Drampa, [SPECIES_DHELMISE] = sAnims_Dhelmise, @@ -12516,13 +12742,13 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = sAnims_Arrokuda, [SPECIES_BARRASKEWDA] = sAnims_Barraskewda, [SPECIES_TOXEL] = sAnims_Toxel, - [SPECIES_TOXTRICITY] = sAnims_Toxtricity, + [SPECIES_TOXTRICITY_AMPED] = sAnims_Toxtricity, [SPECIES_SIZZLIPEDE] = sAnims_Sizzlipede, [SPECIES_CENTISKORCH] = sAnims_Centiskorch, [SPECIES_CLOBBOPUS] = sAnims_Clobbopus, [SPECIES_GRAPPLOCT] = sAnims_Grapploct, - [SPECIES_SINISTEA] = sAnims_Sinistea, - [SPECIES_POLTEAGEIST] = sAnims_Polteageist, + [SPECIES_SINISTEA_PHONY] = sAnims_Sinistea, + [SPECIES_POLTEAGEIST_PHONY] = sAnims_Polteageist, [SPECIES_HATENNA] = sAnims_Hatenna, [SPECIES_HATTREM] = sAnims_Hattrem, [SPECIES_HATTERENE] = sAnims_Hatterene, @@ -12536,15 +12762,15 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = sAnims_MrRime, [SPECIES_RUNERIGUS] = sAnims_Runerigus, [SPECIES_MILCERY] = sAnims_Milcery, - [SPECIES_ALCREMIE] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = sAnims_Alcremie, [SPECIES_FALINKS] = sAnims_Falinks, [SPECIES_PINCURCHIN] = sAnims_Pincurchin, [SPECIES_SNOM] = sAnims_Snom, [SPECIES_FROSMOTH] = sAnims_Frosmoth, [SPECIES_STONJOURNER] = sAnims_Stonjourner, - [SPECIES_EISCUE] = sAnims_Eiscue, - [SPECIES_INDEEDEE] = sAnims_Indeedee, - [SPECIES_MORPEKO] = sAnims_Morpeko, + [SPECIES_EISCUE_ICE_FACE] = sAnims_Eiscue, + [SPECIES_INDEEDEE_MALE] = sAnims_Indeedee, + [SPECIES_MORPEKO_FULL_BELLY] = sAnims_Morpeko, [SPECIES_CUFANT] = sAnims_Cufant, [SPECIES_COPPERAJAH] = sAnims_Copperajah, [SPECIES_DRACOZOLT] = sAnims_Dracozolt, @@ -12555,11 +12781,11 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_DREEPY] = sAnims_Dreepy, [SPECIES_DRAKLOAK] = sAnims_Drakloak, [SPECIES_DRAGAPULT] = sAnims_Dragapult, - [SPECIES_ZACIAN] = sAnims_Zacian, - [SPECIES_ZAMAZENTA] = sAnims_Zamazenta, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = sAnims_Zacian, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = sAnims_Zamazenta, [SPECIES_ETERNATUS] = sAnims_Eternatus, [SPECIES_KUBFU] = sAnims_Kubfu, - [SPECIES_URSHIFU] = sAnims_Urshifu, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = sAnims_Urshifu, [SPECIES_ZARUDE] = sAnims_Zarude, [SPECIES_REGIELEKI] = sAnims_Regieleki, [SPECIES_REGIDRAGO] = sAnims_Regidrago, @@ -12569,10 +12795,10 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_WYRDEER] = sAnims_Wyrdeer, [SPECIES_KLEAVOR] = sAnims_Kleavor, [SPECIES_URSALUNA] = sAnims_Ursaluna, - [SPECIES_BASCULEGION] = sAnims_Basculegion, + [SPECIES_BASCULEGION_MALE] = sAnims_Basculegion, [SPECIES_SNEASLER] = sAnims_Sneasler, [SPECIES_OVERQWIL] = sAnims_Overqwil, - [SPECIES_ENAMORUS] = sAnims_Enamorus, + [SPECIES_ENAMORUS_INCARNATE] = sAnims_EnamorusIncarnate, #endif // Mega/Primal Forms [SPECIES_VENUSAUR_MEGA] = sAnims_VenusaurMega, @@ -12668,7 +12894,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_LINOONE_GALARIAN] = sAnims_LinooneGalarian, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = sAnims_DarumakaGalarian, - [SPECIES_DARMANITAN_GALARIAN] = sAnims_DarmanitanGalarian, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = sAnims_DarmanitanGalarianStandardMode, [SPECIES_YAMASK_GALARIAN] = sAnims_YamaskGalarian, [SPECIES_STUNFISK_GALARIAN] = sAnims_StunfiskGalarian, #endif @@ -12783,7 +13009,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_BASCULIN_BLUE_STRIPED] = sAnims_Basculin, [SPECIES_BASCULIN_WHITE_STRIPED] = sAnims_Basculin, [SPECIES_DARMANITAN_ZEN_MODE] = sAnims_DarmanitanZenMode, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sAnims_DarmanitanZenModeGalarian, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = sAnims_DarmanitanGalarianZenMode, [SPECIES_DEERLING_SUMMER] = sAnims_Deerling, [SPECIES_DEERLING_AUTUMN] = sAnims_Deerling, [SPECIES_DEERLING_WINTER] = sAnims_Deerling, @@ -12855,9 +13081,9 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_GOURGEIST_LARGE] = sAnims_Gourgeist, [SPECIES_GOURGEIST_SUPER] = sAnims_Gourgeist, [SPECIES_XERNEAS_ACTIVE] = sAnims_Xerneas, - [SPECIES_ZYGARDE_10] = sAnims_Zygarde10, + [SPECIES_ZYGARDE_10_AURA_BREAK] = sAnims_Zygarde10, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sAnims_Zygarde10, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sAnims_Zygarde, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sAnims_Zygarde50, [SPECIES_ZYGARDE_COMPLETE] = sAnims_ZygardeComplete, [SPECIES_HOOPA_UNBOUND] = sAnims_HoopaUnbound, #endif @@ -12886,19 +13112,19 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_SILVALLY_DRAGON] = sAnims_Silvally, [SPECIES_SILVALLY_DARK] = sAnims_Silvally, [SPECIES_SILVALLY_FAIRY] = sAnims_Silvally, - [SPECIES_MINIOR_METEOR_ORANGE] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_YELLOW] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_GREEN] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_BLUE] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_INDIGO] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_VIOLET] = sAnims_Minior, - [SPECIES_MINIOR_CORE_RED] = sAnims_Minior, - [SPECIES_MINIOR_CORE_ORANGE] = sAnims_Minior, - [SPECIES_MINIOR_CORE_YELLOW] = sAnims_Minior, - [SPECIES_MINIOR_CORE_GREEN] = sAnims_Minior, - [SPECIES_MINIOR_CORE_BLUE] = sAnims_Minior, - [SPECIES_MINIOR_CORE_INDIGO] = sAnims_Minior, - [SPECIES_MINIOR_CORE_VIOLET] = sAnims_Minior, + [SPECIES_MINIOR_METEOR_ORANGE] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_METEOR_YELLOW] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_METEOR_GREEN] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_METEOR_BLUE] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_METEOR_INDIGO] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_METEOR_VIOLET] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_RED] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_ORANGE] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_YELLOW] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_GREEN] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_BLUE] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_INDIGO] = sAnims_MiniorMeteor, + [SPECIES_MINIOR_CORE_VIOLET] = sAnims_MiniorMeteor, [SPECIES_MIMIKYU_BUSTED] = sAnims_MimikyuBusted, [SPECIES_NECROZMA_DUSK_MANE] = sAnims_Necrozma, [SPECIES_NECROZMA_DAWN_WINGS] = sAnims_Necrozma, @@ -12911,14 +13137,14 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_TOXTRICITY_LOW_KEY] = sAnims_Toxtricity, [SPECIES_SINISTEA_ANTIQUE] = sAnims_Sinistea, [SPECIES_POLTEAGEIST_ANTIQUE] = sAnims_Polteageist, - [SPECIES_ALCREMIE_RUBY_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_MINT_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = sAnims_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = sAnims_Alcremie, [SPECIES_EISCUE_NOICE_FACE] = sAnims_Eiscue, [SPECIES_INDEEDEE_FEMALE] = sAnims_Indeedee, [SPECIES_MORPEKO_HANGRY] = sAnims_Morpeko, @@ -12931,6 +13157,46 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = [SPECIES_CALYREX_SHADOW_RIDER] = sAnims_Calyrex, [SPECIES_ENAMORUS_THERIAN] = sAnims_EnamorusTherian, [SPECIES_BASCULEGION_FEMALE] = sAnims_Basculegion, +#endif + [SPECIES_VENUSAUR_GIGANTAMAX] = sAnims_VenusaurGigantamax, + [SPECIES_CHARIZARD_GIGANTAMAX] = sAnims_CharizardGigantamax, + [SPECIES_BLASTOISE_GIGANTAMAX] = sAnims_BlastoiseGigantamax, + [SPECIES_BUTTERFREE_GIGANTAMAX] = sAnims_ButterfreeGigantamax, + [SPECIES_PIKACHU_GIGANTAMAX] = sAnims_PikachuGigantamax, + [SPECIES_MEOWTH_GIGANTAMAX] = sAnims_MeowthGigantamax, + [SPECIES_MACHAMP_GIGANTAMAX] = sAnims_MachampGigantamax, + [SPECIES_GENGAR_GIGANTAMAX] = sAnims_GengarGigantamax, + [SPECIES_KINGLER_GIGANTAMAX] = sAnims_KinglerGigantamax, + [SPECIES_LAPRAS_GIGANTAMAX] = sAnims_LaprasGigantamax, + [SPECIES_EEVEE_GIGANTAMAX] = sAnims_EeveeGigantamax, + [SPECIES_SNORLAX_GIGANTAMAX] = sAnims_SnorlaxGigantamax, +#if P_GEN_5_POKEMON == TRUE + [SPECIES_GARBODOR_GIGANTAMAX] = sAnims_GarbodorGigantamax, +#endif +#if P_GEN_7_POKEMON == TRUE + [SPECIES_MELMETAL_GIGANTAMAX] = sAnims_MelmetalGigantamax, +#endif +#if P_GEN_8_POKEMON == TRUE + [SPECIES_RILLABOOM_GIGANTAMAX] = sAnims_RillaboomGigantamax, + [SPECIES_CINDERACE_GIGANTAMAX] = sAnims_CinderaceGigantamax, + [SPECIES_INTELEON_GIGANTAMAX] = sAnims_InteleonGigantamax, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = sAnims_CorviknightGigantamax, + [SPECIES_ORBEETLE_GIGANTAMAX] = sAnims_OrbeetleGigantamax, + [SPECIES_DREDNAW_GIGANTAMAX] = sAnims_DrednawGigantamax, + [SPECIES_COALOSSAL_GIGANTAMAX] = sAnims_CoalossalGigantamax, + [SPECIES_FLAPPLE_GIGANTAMAX] = sAnims_FlappleGigantamax, + [SPECIES_APPLETUN_GIGANTAMAX] = sAnims_AppletunGigantamax, + [SPECIES_SANDACONDA_GIGANTAMAX] = sAnims_SandacondaGigantamax, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = sAnims_ToxtricityGigantamax, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = sAnims_ToxtricityGigantamax, + [SPECIES_CENTISKORCH_GIGANTAMAX] = sAnims_CentiskorchGigantamax, + [SPECIES_HATTERENE_GIGANTAMAX] = sAnims_HattereneGigantamax, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = sAnims_GrimmsnarlGigantamax, + [SPECIES_ALCREMIE_GIGANTAMAX] = sAnims_AlcremieGigantamax, + [SPECIES_COPPERAJAH_GIGANTAMAX] = sAnims_CopperajahGigantamax, + [SPECIES_DURALUDON_GIGANTAMAX] = sAnims_DuraludonGigantamax, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = sAnims_UrshifuSingleStrikeStyleGigantamax, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = sAnims_UrshifuRapidStrikeStyleGigantamax, #endif [SPECIES_EGG] = sAnims_Egg, }; diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index 897ce63308..e06e8f1e7b 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -364,7 +364,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_ARON] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, [SPECIES_LAIRON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_AGGRON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CASTFORM] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 17 }, + [SPECIES_CASTFORM_NORMAL] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 17 }, [SPECIES_VOLBEAT] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, [SPECIES_ILLUMISE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, [SPECIES_LILEEP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, @@ -389,7 +389,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_LATIAS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, [SPECIES_LATIOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_JIRACHI] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, - [SPECIES_DEOXYS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_DEOXYS_NORMAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CHIMECHO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, @@ -417,8 +417,8 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_SHIELDON] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_BASTIODON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_BURMY] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 13 }, - [SPECIES_WORMADAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, + [SPECIES_BURMY_PLANT_CLOAK] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 13 }, + [SPECIES_WORMADAM_PLANT_CLOAK] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, [SPECIES_MOTHIM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 12 }, [SPECIES_COMBEE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 16 }, [SPECIES_VESPIQUEN] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, @@ -426,9 +426,9 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, [SPECIES_FLOATZEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, [SPECIES_CHERUBI] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, - [SPECIES_CHERRIM] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 8 }, - [SPECIES_SHELLOS] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_GASTRODON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_CHERRIM_OVERCAST] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 8 }, + [SPECIES_SHELLOS_WEST_SEA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, + [SPECIES_GASTRODON_WEST_SEA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, [SPECIES_AMBIPOM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_DRIFLOON] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 7 }, [SPECIES_DRIFBLIM] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, @@ -492,13 +492,13 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_PALKIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_HEATRAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_REGIGIGAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_GIRATINA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GIRATINA_ALTERED] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CRESSELIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_PHIONE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 8 }, [SPECIES_MANAPHY] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 10 }, [SPECIES_DARKRAI] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SHAYMIN] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, - [SPECIES_ARCEUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SHAYMIN_LAND] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, + [SPECIES_ARCEUS_NORMAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, @@ -557,12 +557,12 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, [SPECIES_PETILIL] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 12 }, [SPECIES_LILLIGANT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_BASCULIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, + [SPECIES_BASCULIN_RED_STRIPED] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, [SPECIES_SANDILE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 18 }, [SPECIES_KROKOROK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, [SPECIES_KROOKODILE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_DARUMAKA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_DARMANITAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_DARMANITAN_STANDARD_MODE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_MARACTUS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_DWEBBLE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, [SPECIES_CRUSTLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, @@ -592,8 +592,8 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, [SPECIES_VANILLISH] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 5 }, [SPECIES_VANILLUXE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_DEERLING] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, - [SPECIES_SAWSBUCK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_DEERLING_SPRING] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, + [SPECIES_SAWSBUCK_SPRING] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_EMOLGA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 17 }, [SPECIES_KARRABLAST] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 13 }, [SPECIES_ESCAVALIER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -648,14 +648,14 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_COBALION] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, [SPECIES_TERRAKION] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, [SPECIES_VIRIZION] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_TORNADUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_THUNDURUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_TORNADUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_THUNDURUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_RESHIRAM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_ZEKROM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LANDORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_LANDORUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_KYUREM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_KELDEO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_MELOETTA] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, + [SPECIES_KELDEO_ORDINARY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_MELOETTA_ARIA] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, [SPECIES_GENESECT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, #endif #if P_GEN_6_POKEMON == TRUE @@ -675,22 +675,22 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_SCATTERBUG] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 13 }, [SPECIES_SPEWPA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_VIVILLON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_VIVILLON_ICY_SNOW] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_LITLEO] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, [SPECIES_PYROAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FLABEBE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_FLOETTE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_FLORGES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_FLABEBE_RED_FLOWER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_FLOETTE_RED_FLOWER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, + [SPECIES_FLORGES_RED_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SKIDDO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, [SPECIES_GOGOAT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_PANCHAM] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 12 }, [SPECIES_PANGORO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FURFROU] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, + [SPECIES_FURFROU_NATURAL] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_ESPURR] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, - [SPECIES_MEOWSTIC] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, + [SPECIES_MEOWSTIC_MALE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, [SPECIES_HONEDGE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, [SPECIES_DOUBLADE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_AEGISLASH] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_AEGISLASH_SHIELD] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_SPRITZEE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, [SPECIES_AROMATISSE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, [SPECIES_SWIRLIX] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, @@ -719,17 +719,17 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 4 }, [SPECIES_PHANTUMP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, [SPECIES_TREVENANT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PUMPKABOO] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_GOURGEIST] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_PUMPKABOO_AVERAGE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, + [SPECIES_GOURGEIST_AVERAGE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, [SPECIES_BERGMITE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, [SPECIES_AVALUGG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, [SPECIES_NOIBAT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, [SPECIES_NOIVERN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_XERNEAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_XERNEAS_NEUTRAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_YVELTAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ZYGARDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ZYGARDE_50_AURA_BREAK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_DIANCIE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 1 }, - [SPECIES_HOOPA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_HOOPA_CONFINED] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, [SPECIES_VOLCANION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif #if P_GEN_7_POKEMON == TRUE @@ -752,12 +752,12 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, [SPECIES_CRABRAWLER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, [SPECIES_CRABOMINABLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ORICORIO] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_ORICORIO_BAILE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_CUTIEFLY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 16 }, [SPECIES_RIBOMBEE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, [SPECIES_ROCKRUFF] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_LYCANROC] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_WISHIWASHI] = { .size = MON_COORDS_SIZE(40, 24), .y_offset = 15 }, + [SPECIES_LYCANROC_MIDDAY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_WISHIWASHI_SOLO] = { .size = MON_COORDS_SIZE(40, 24), .y_offset = 15 }, [SPECIES_MAREANIE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, [SPECIES_TOXAPEX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_MUDBRAY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, @@ -784,12 +784,12 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_PYUKUMUKU] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_TYPE_NULL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SILVALLY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MINIOR] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, + [SPECIES_SILVALLY_NORMAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MINIOR_METEOR_RED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, [SPECIES_KOMALA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, [SPECIES_TURTONATOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_TOGEDEMARU] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_MIMIKYU] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_MIMIKYU_DISGUISED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, [SPECIES_BRUXISH] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, [SPECIES_DRAMPA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_DHELMISE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, @@ -862,13 +862,13 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 13 }, [SPECIES_BARRASKEWDA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_TOXEL] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_TOXTRICITY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, + [SPECIES_TOXTRICITY_AMPED] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, [SPECIES_SIZZLIPEDE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, [SPECIES_CENTISKORCH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, [SPECIES_CLOBBOPUS] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, [SPECIES_GRAPPLOCT] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, - [SPECIES_SINISTEA] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, - [SPECIES_POLTEAGEIST] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_SINISTEA_PHONY] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, + [SPECIES_POLTEAGEIST_PHONY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, [SPECIES_HATENNA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, [SPECIES_HATTREM] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_HATTERENE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, @@ -882,15 +882,15 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, [SPECIES_RUNERIGUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_MILCERY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_ALCREMIE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, [SPECIES_FALINKS] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, [SPECIES_PINCURCHIN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, [SPECIES_SNOM] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 20 }, [SPECIES_FROSMOTH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_STONJOURNER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_EISCUE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - [SPECIES_INDEEDEE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, - [SPECIES_MORPEKO] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, + [SPECIES_EISCUE_ICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, + [SPECIES_INDEEDEE_MALE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, + [SPECIES_MORPEKO_FULL_BELLY] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, [SPECIES_CUFANT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, [SPECIES_COPPERAJAH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_DRACOZOLT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, @@ -901,11 +901,11 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_DREEPY] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, [SPECIES_DRAKLOAK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, [SPECIES_DRAGAPULT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_ZACIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ZAMAZENTA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_ETERNATUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, [SPECIES_KUBFU] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_URSHIFU] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_ZARUDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_REGIELEKI] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, [SPECIES_REGIDRAGO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, @@ -915,10 +915,10 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_WYRDEER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_KLEAVOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, [SPECIES_URSALUNA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_BASCULEGION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_BASCULEGION_MALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_SNEASLER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_OVERQWIL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ENAMORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ENAMORUS_INCARNATE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif // Megas [SPECIES_VENUSAUR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, @@ -1015,7 +1015,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_LINOONE_GALARIAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_DARMANITAN_GALARIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, [SPECIES_YAMASK_GALARIAN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, [SPECIES_STUNFISK_GALARIAN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, #endif @@ -1147,7 +1147,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = [SPECIES_BASCULIN_WHITE_STRIPED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 10 }, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, // Deerling [SPECIES_DEERLING_SUMMER] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, [SPECIES_DEERLING_AUTUMN] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, @@ -1238,7 +1238,7 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = // Xerneas [SPECIES_XERNEAS_ACTIVE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, // Zygarde - [SPECIES_ZYGARDE_10] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_ZYGARDE_10_AURA_BREAK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_ZYGARDE_COMPLETE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, @@ -1309,14 +1309,14 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, // Eiscue [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, // Indeedee @@ -1336,9 +1336,45 @@ const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = // Calyrex [SPECIES_CALYREX_ICE_RIDER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, [SPECIES_CALYREX_SHADOW_RIDER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + // Enamorus [SPECIES_ENAMORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, // Basculegion [SPECIES_BASCULEGION_FEMALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + // Gigantamax Forms + [SPECIES_VENUSAUR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_CHARIZARD_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_BLASTOISE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, + [SPECIES_BUTTERFREE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 10 }, + [SPECIES_PIKACHU_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_MEOWTH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_MACHAMP_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GENGAR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, + [SPECIES_KINGLER_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_LAPRAS_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_EEVEE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, + [SPECIES_SNORLAX_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GARBODOR_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MELMETAL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_RILLABOOM_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CINDERACE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_INTELEON_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ORBEETLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_DREDNAW_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_COALOSSAL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_FLAPPLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_APPLETUN_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_SANDACONDA_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CENTISKORCH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, + [SPECIES_HATTERENE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ALCREMIE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_COPPERAJAH_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_DURALUDON_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, #endif // Egg [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 27fefa9507..33e82debfe 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -360,7 +360,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ARON, gMonFrontPic_Aron), SPECIES_SPRITE(LAIRON, gMonFrontPic_Lairon), SPECIES_SPRITE(AGGRON, gMonFrontPic_Aggron), - SPECIES_SPRITE(CASTFORM, gMonFrontPic_Castform), + SPECIES_SPRITE(CASTFORM_NORMAL, gMonFrontPic_CastformNormal), SPECIES_SPRITE(VOLBEAT, gMonFrontPic_Volbeat), SPECIES_SPRITE(ILLUMISE, gMonFrontPic_Illumise), SPECIES_SPRITE(LILEEP, gMonFrontPic_Lileep), @@ -385,7 +385,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(LATIAS, gMonFrontPic_Latias), SPECIES_SPRITE(LATIOS, gMonFrontPic_Latios), SPECIES_SPRITE(JIRACHI, gMonFrontPic_Jirachi), - SPECIES_SPRITE(DEOXYS, gMonFrontPic_Deoxys), + SPECIES_SPRITE(DEOXYS_NORMAL, gMonFrontPic_DeoxysNormal), SPECIES_SPRITE(CHIMECHO, gMonFrontPic_Chimecho), #if P_GEN_4_POKEMON == TRUE SPECIES_SPRITE(TURTWIG, gMonFrontPic_Turtwig), @@ -413,8 +413,8 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(RAMPARDOS, gMonFrontPic_Rampardos), SPECIES_SPRITE(SHIELDON, gMonFrontPic_Shieldon), SPECIES_SPRITE(BASTIODON, gMonFrontPic_Bastiodon), - SPECIES_SPRITE(BURMY, gMonFrontPic_Burmy), - SPECIES_SPRITE(WORMADAM, gMonFrontPic_Wormadam), + SPECIES_SPRITE(BURMY_PLANT_CLOAK, gMonFrontPic_BurmyPlantCloak), + SPECIES_SPRITE(WORMADAM_PLANT_CLOAK, gMonFrontPic_WormadamPlantCloak), SPECIES_SPRITE(MOTHIM, gMonFrontPic_Mothim), SPECIES_SPRITE(COMBEE, gMonFrontPic_Combee), SPECIES_SPRITE(VESPIQUEN, gMonFrontPic_Vespiquen), @@ -422,9 +422,9 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(BUIZEL, gMonFrontPic_Buizel), SPECIES_SPRITE(FLOATZEL, gMonFrontPic_Floatzel), SPECIES_SPRITE(CHERUBI, gMonFrontPic_Cherubi), - SPECIES_SPRITE(CHERRIM, gMonFrontPic_Cherrim), - SPECIES_SPRITE(SHELLOS, gMonFrontPic_Shellos), - SPECIES_SPRITE(GASTRODON, gMonFrontPic_Gastrodon), + SPECIES_SPRITE(CHERRIM_OVERCAST, gMonFrontPic_CherrimOvercast), + SPECIES_SPRITE(SHELLOS_WEST_SEA, gMonFrontPic_ShellosWestSea), + SPECIES_SPRITE(GASTRODON_WEST_SEA, gMonFrontPic_GastrodonWestSea), SPECIES_SPRITE(AMBIPOM, gMonFrontPic_Ambipom), SPECIES_SPRITE(DRIFLOON, gMonFrontPic_Drifloon), SPECIES_SPRITE(DRIFBLIM, gMonFrontPic_Drifblim), @@ -488,12 +488,12 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(PALKIA, gMonFrontPic_Palkia), SPECIES_SPRITE(HEATRAN, gMonFrontPic_Heatran), SPECIES_SPRITE(REGIGIGAS, gMonFrontPic_Regigigas), - SPECIES_SPRITE(GIRATINA, gMonFrontPic_Giratina), + SPECIES_SPRITE(GIRATINA_ALTERED, gMonFrontPic_GiratinaAltered), SPECIES_SPRITE(CRESSELIA, gMonFrontPic_Cresselia), SPECIES_SPRITE(PHIONE, gMonFrontPic_Phione), SPECIES_SPRITE(MANAPHY, gMonFrontPic_Manaphy), SPECIES_SPRITE(DARKRAI, gMonFrontPic_Darkrai), - SPECIES_SPRITE(SHAYMIN, gMonFrontPic_Shaymin), + SPECIES_SPRITE(SHAYMIN_LAND, gMonFrontPic_ShayminLand), SPECIES_SPRITE(ARCEUS, gMonFrontPic_Arceus), #endif #if P_GEN_5_POKEMON == TRUE @@ -553,12 +553,12 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(WHIMSICOTT, gMonFrontPic_Whimsicott), SPECIES_SPRITE(PETILIL, gMonFrontPic_Petilil), SPECIES_SPRITE(LILLIGANT, gMonFrontPic_Lilligant), - SPECIES_SPRITE(BASCULIN, gMonFrontPic_Basculin), + SPECIES_SPRITE(BASCULIN, gMonFrontPic_BasculinRedStriped), SPECIES_SPRITE(SANDILE, gMonFrontPic_Sandile), SPECIES_SPRITE(KROKOROK, gMonFrontPic_Krokorok), SPECIES_SPRITE(KROOKODILE, gMonFrontPic_Krookodile), SPECIES_SPRITE(DARUMAKA, gMonFrontPic_Darumaka), - SPECIES_SPRITE(DARMANITAN, gMonFrontPic_Darmanitan), + SPECIES_SPRITE(DARMANITAN_STANDARD_MODE, gMonFrontPic_DarmanitanStandardMode), SPECIES_SPRITE(MARACTUS, gMonFrontPic_Maractus), SPECIES_SPRITE(DWEBBLE, gMonFrontPic_Dwebble), SPECIES_SPRITE(CRUSTLE, gMonFrontPic_Crustle), @@ -588,8 +588,8 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(VANILLITE, gMonFrontPic_Vanillite), SPECIES_SPRITE(VANILLISH, gMonFrontPic_Vanillish), SPECIES_SPRITE(VANILLUXE, gMonFrontPic_Vanilluxe), - SPECIES_SPRITE(DEERLING, gMonFrontPic_Deerling), - SPECIES_SPRITE(SAWSBUCK, gMonFrontPic_Sawsbuck), + SPECIES_SPRITE(DEERLING_SPRING, gMonFrontPic_Deerling), + SPECIES_SPRITE(SAWSBUCK_SPRING, gMonFrontPic_SawsbuckSpring), SPECIES_SPRITE(EMOLGA, gMonFrontPic_Emolga), SPECIES_SPRITE(KARRABLAST, gMonFrontPic_Karrablast), SPECIES_SPRITE(ESCAVALIER, gMonFrontPic_Escavalier), @@ -644,14 +644,14 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(COBALION, gMonFrontPic_Cobalion), SPECIES_SPRITE(TERRAKION, gMonFrontPic_Terrakion), SPECIES_SPRITE(VIRIZION, gMonFrontPic_Virizion), - SPECIES_SPRITE(TORNADUS, gMonFrontPic_Tornadus), - SPECIES_SPRITE(THUNDURUS, gMonFrontPic_Thundurus), + SPECIES_SPRITE(TORNADUS_INCARNATE, gMonFrontPic_TornadusIncarnate), + SPECIES_SPRITE(THUNDURUS_INCARNATE, gMonFrontPic_ThundurusIncarnate), SPECIES_SPRITE(RESHIRAM, gMonFrontPic_Reshiram), SPECIES_SPRITE(ZEKROM, gMonFrontPic_Zekrom), - SPECIES_SPRITE(LANDORUS, gMonFrontPic_Landorus), + SPECIES_SPRITE(LANDORUS_INCARNATE, gMonFrontPic_LandorusIncarnate), SPECIES_SPRITE(KYUREM, gMonFrontPic_Kyurem), - SPECIES_SPRITE(KELDEO, gMonFrontPic_Keldeo), - SPECIES_SPRITE(MELOETTA, gMonFrontPic_Meloetta), + SPECIES_SPRITE(KELDEO_ORDINARY, gMonFrontPic_KeldeoOrdinary), + SPECIES_SPRITE(MELOETTA, gMonFrontPic_MeloettaAria), SPECIES_SPRITE(GENESECT, gMonFrontPic_Genesect), #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(TALONFLAME, gMonFrontPic_Talonflame), SPECIES_SPRITE(SCATTERBUG, gMonFrontPic_Scatterbug), SPECIES_SPRITE(SPEWPA, gMonFrontPic_Spewpa), - SPECIES_SPRITE(VIVILLON, gMonFrontPic_Vivillon), + SPECIES_SPRITE(VIVILLON_ICY_SNOW, gMonFrontPic_VivillonIcySnow), SPECIES_SPRITE(LITLEO, gMonFrontPic_Litleo), SPECIES_SPRITE(PYROAR, gMonFrontPic_Pyroar), - SPECIES_SPRITE(FLABEBE, gMonFrontPic_Flabebe), - SPECIES_SPRITE(FLOETTE, gMonFrontPic_Floette), - SPECIES_SPRITE(FLORGES, gMonFrontPic_Florges), + SPECIES_SPRITE(FLABEBE_RED_FLOWER, gMonFrontPic_Flabebe), + SPECIES_SPRITE(FLOETTE_RED_FLOWER, gMonFrontPic_Floette), + SPECIES_SPRITE(FLORGES_RED_FLOWER, gMonFrontPic_Florges), SPECIES_SPRITE(SKIDDO, gMonFrontPic_Skiddo), SPECIES_SPRITE(GOGOAT, gMonFrontPic_Gogoat), SPECIES_SPRITE(PANCHAM, gMonFrontPic_Pancham), SPECIES_SPRITE(PANGORO, gMonFrontPic_Pangoro), - SPECIES_SPRITE(FURFROU, gMonFrontPic_Furfrou), + SPECIES_SPRITE(FURFROU_NATURAL, gMonFrontPic_FurfrouNatural), SPECIES_SPRITE(ESPURR, gMonFrontPic_Espurr), - SPECIES_SPRITE(MEOWSTIC, gMonFrontPic_Meowstic), + SPECIES_SPRITE(MEOWSTIC_MALE, gMonFrontPic_MeowsticMale), SPECIES_SPRITE(HONEDGE, gMonFrontPic_Honedge), SPECIES_SPRITE(DOUBLADE, gMonFrontPic_Doublade), - SPECIES_SPRITE(AEGISLASH, gMonFrontPic_Aegislash), + SPECIES_SPRITE(AEGISLASH_SHIELD, gMonFrontPic_AegislashShield), SPECIES_SPRITE(SPRITZEE, gMonFrontPic_Spritzee), SPECIES_SPRITE(AROMATISSE, gMonFrontPic_Aromatisse), SPECIES_SPRITE(SWIRLIX, gMonFrontPic_Swirlix), @@ -715,17 +715,17 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(KLEFKI, gMonFrontPic_Klefki), SPECIES_SPRITE(PHANTUMP, gMonFrontPic_Phantump), SPECIES_SPRITE(TREVENANT, gMonFrontPic_Trevenant), - SPECIES_SPRITE(PUMPKABOO, gMonFrontPic_Pumpkaboo), - SPECIES_SPRITE(GOURGEIST, gMonFrontPic_Gourgeist), + SPECIES_SPRITE(PUMPKABOO_AVERAGE, gMonFrontPic_PumpkabooAverage), + SPECIES_SPRITE(GOURGEIST_AVERAGE, gMonFrontPic_GourgeistAverage), SPECIES_SPRITE(BERGMITE, gMonFrontPic_Bergmite), SPECIES_SPRITE(AVALUGG, gMonFrontPic_Avalugg), SPECIES_SPRITE(NOIBAT, gMonFrontPic_Noibat), SPECIES_SPRITE(NOIVERN, gMonFrontPic_Noivern), - SPECIES_SPRITE(XERNEAS, gMonFrontPic_Xerneas), + SPECIES_SPRITE(XERNEAS_NEUTRAL, gMonFrontPic_XerneasNeutral), SPECIES_SPRITE(YVELTAL, gMonFrontPic_Yveltal), - SPECIES_SPRITE(ZYGARDE, gMonFrontPic_Zygarde), + SPECIES_SPRITE(ZYGARDE_50_AURA_BREAK, gMonFrontPic_Zygarde50), SPECIES_SPRITE(DIANCIE, gMonFrontPic_Diancie), - SPECIES_SPRITE(HOOPA, gMonFrontPic_Hoopa), + SPECIES_SPRITE(HOOPA_CONFINED, gMonFrontPic_HoopaConfined), SPECIES_SPRITE(VOLCANION, gMonFrontPic_Volcanion), #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(VIKAVOLT, gMonFrontPic_Vikavolt), SPECIES_SPRITE(CRABRAWLER, gMonFrontPic_Crabrawler), SPECIES_SPRITE(CRABOMINABLE, gMonFrontPic_Crabominable), - SPECIES_SPRITE(ORICORIO, gMonFrontPic_Oricorio), + SPECIES_SPRITE(ORICORIO_BAILE, gMonFrontPic_OricorioBaile), SPECIES_SPRITE(CUTIEFLY, gMonFrontPic_Cutiefly), SPECIES_SPRITE(RIBOMBEE, gMonFrontPic_Ribombee), SPECIES_SPRITE(ROCKRUFF, gMonFrontPic_Rockruff), - SPECIES_SPRITE(LYCANROC, gMonFrontPic_Lycanroc), - SPECIES_SPRITE(WISHIWASHI, gMonFrontPic_Wishiwashi), + SPECIES_SPRITE(LYCANROC_MIDDAY, gMonFrontPic_LycanrocMidday), + SPECIES_SPRITE(WISHIWASHI_SOLO, gMonFrontPic_WishiwashiSolo), SPECIES_SPRITE(MAREANIE, gMonFrontPic_Mareanie), SPECIES_SPRITE(TOXAPEX, gMonFrontPic_Toxapex), SPECIES_SPRITE(MUDBRAY, gMonFrontPic_Mudbray), @@ -781,11 +781,11 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(PYUKUMUKU, gMonFrontPic_Pyukumuku), SPECIES_SPRITE(TYPE_NULL, gMonFrontPic_TypeNull), SPECIES_SPRITE(SILVALLY, gMonFrontPic_Silvally), - SPECIES_SPRITE(MINIOR, gMonFrontPic_Minior), + SPECIES_SPRITE(MINIOR_METEOR_RED, gMonFrontPic_MiniorMeteor), SPECIES_SPRITE(KOMALA, gMonFrontPic_Komala), SPECIES_SPRITE(TURTONATOR, gMonFrontPic_Turtonator), SPECIES_SPRITE(TOGEDEMARU, gMonFrontPic_Togedemaru), - SPECIES_SPRITE(MIMIKYU, gMonFrontPic_Mimikyu), + SPECIES_SPRITE(MIMIKYU_DISGUISED, gMonFrontPic_MimikyuDisguised), SPECIES_SPRITE(BRUXISH, gMonFrontPic_Bruxish), SPECIES_SPRITE(DRAMPA, gMonFrontPic_Drampa), SPECIES_SPRITE(DHELMISE, gMonFrontPic_Dhelmise), @@ -858,13 +858,13 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ARROKUDA, gMonFrontPic_Arrokuda), SPECIES_SPRITE(BARRASKEWDA, gMonFrontPic_Barraskewda), SPECIES_SPRITE(TOXEL, gMonFrontPic_Toxel), - SPECIES_SPRITE(TOXTRICITY, gMonFrontPic_Toxtricity), + SPECIES_SPRITE(TOXTRICITY_AMPED, gMonFrontPic_ToxtricityAmped), SPECIES_SPRITE(SIZZLIPEDE, gMonFrontPic_Sizzlipede), SPECIES_SPRITE(CENTISKORCH, gMonFrontPic_Centiskorch), SPECIES_SPRITE(CLOBBOPUS, gMonFrontPic_Clobbopus), SPECIES_SPRITE(GRAPPLOCT, gMonFrontPic_Grapploct), - SPECIES_SPRITE(SINISTEA, gMonFrontPic_Sinistea), - SPECIES_SPRITE(POLTEAGEIST, gMonFrontPic_Polteageist), + SPECIES_SPRITE(SINISTEA_PHONY, gMonFrontPic_Sinistea), + SPECIES_SPRITE(POLTEAGEIST_PHONY, gMonFrontPic_Polteageist), SPECIES_SPRITE(HATENNA, gMonFrontPic_Hatenna), SPECIES_SPRITE(HATTREM, gMonFrontPic_Hattrem), SPECIES_SPRITE(HATTERENE, gMonFrontPic_Hatterene), @@ -884,9 +884,9 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(SNOM, gMonFrontPic_Snom), SPECIES_SPRITE(FROSMOTH, gMonFrontPic_Frosmoth), SPECIES_SPRITE(STONJOURNER, gMonFrontPic_Stonjourner), - SPECIES_SPRITE(EISCUE, gMonFrontPic_Eiscue), - SPECIES_SPRITE(INDEEDEE, gMonFrontPic_Indeedee), - SPECIES_SPRITE(MORPEKO, gMonFrontPic_Morpeko), + SPECIES_SPRITE(EISCUE_ICE_FACE, gMonFrontPic_EiscueFace), + SPECIES_SPRITE(INDEEDEE_MALE, gMonFrontPic_IndeedeeMale), + SPECIES_SPRITE(MORPEKO_FULL_BELLY, gMonFrontPic_MorpekoFullBelly), SPECIES_SPRITE(CUFANT, gMonFrontPic_Cufant), SPECIES_SPRITE(COPPERAJAH, gMonFrontPic_Copperajah), SPECIES_SPRITE(DRACOZOLT, gMonFrontPic_Dracozolt), @@ -897,11 +897,11 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(DREEPY, gMonFrontPic_Dreepy), SPECIES_SPRITE(DRAKLOAK, gMonFrontPic_Drakloak), SPECIES_SPRITE(DRAGAPULT, gMonFrontPic_Dragapult), - SPECIES_SPRITE(ZACIAN, gMonFrontPic_Zacian), - SPECIES_SPRITE(ZAMAZENTA, gMonFrontPic_Zamazenta), + SPECIES_SPRITE(ZACIAN_HERO_OF_MANY_BATTLES, gMonFrontPic_ZacianHeroOfManyBattles), + SPECIES_SPRITE(ZAMAZENTA_HERO_OF_MANY_BATTLES, gMonFrontPic_ZamazentaHeroOfManyBattles), SPECIES_SPRITE(ETERNATUS, gMonFrontPic_Eternatus), SPECIES_SPRITE(KUBFU, gMonFrontPic_Kubfu), - SPECIES_SPRITE(URSHIFU, gMonFrontPic_Urshifu), + SPECIES_SPRITE(URSHIFU_SINGLE_STRIKE_STYLE, gMonFrontPic_UrshifuSingleStrikeStyle), SPECIES_SPRITE(ZARUDE, gMonFrontPic_Zarude), SPECIES_SPRITE(REGIELEKI, gMonFrontPic_Regieleki), SPECIES_SPRITE(REGIDRAGO, gMonFrontPic_Regidrago), @@ -911,10 +911,10 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(WYRDEER, gMonFrontPic_Wyrdeer), SPECIES_SPRITE(KLEAVOR, gMonFrontPic_Kleavor), SPECIES_SPRITE(URSALUNA, gMonFrontPic_Ursaluna), - SPECIES_SPRITE(BASCULEGION, gMonFrontPic_Basculegion), + SPECIES_SPRITE(BASCULEGION_MALE, gMonFrontPic_BasculegionMale), SPECIES_SPRITE(SNEASLER, gMonFrontPic_Sneasler), SPECIES_SPRITE(OVERQWIL, gMonFrontPic_Overqwil), - SPECIES_SPRITE(ENAMORUS, gMonFrontPic_Enamorus), + SPECIES_SPRITE(ENAMORUS_INCARNATE, gMonFrontPic_EnamorusIncarnate), #endif SPECIES_SPRITE(VENUSAUR_MEGA, gMonFrontPic_VenusaurMega), SPECIES_SPRITE(CHARIZARD_MEGA_X, gMonFrontPic_CharizardMegaX), @@ -1010,7 +1010,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(LINOONE_GALARIAN, gMonFrontPic_LinooneGalarian), #if P_GEN_5_POKEMON == TRUE SPECIES_SPRITE(DARUMAKA_GALARIAN, gMonFrontPic_DarumakaGalarian), - SPECIES_SPRITE(DARMANITAN_GALARIAN, gMonFrontPic_DarmanitanGalarian), + SPECIES_SPRITE(DARMANITAN_GALARIAN_STANDARD_MODE, gMonFrontPic_DarmanitanGalarianStandardMode), SPECIES_SPRITE(YAMASK_GALARIAN, gMonFrontPic_YamaskGalarian), SPECIES_SPRITE(STUNFISK_GALARIAN, gMonFrontPic_StunfiskGalarian), #endif @@ -1140,7 +1140,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(BASCULIN_WHITE_STRIPED, gMonFrontPic_BasculinWhiteStriped), SPECIES_SPRITE(DARMANITAN_ZEN_MODE, gMonFrontPic_DarmanitanZenMode), - SPECIES_SPRITE(DARMANITAN_ZEN_MODE_GALARIAN, gMonFrontPic_DarmanitanZenModeGalarian), + SPECIES_SPRITE(DARMANITAN_GALARIAN_ZEN_MODE, gMonFrontPic_DarmanitanGalarianZenMode), SPECIES_SPRITE(DEERLING_SUMMER, gMonFrontPic_Deerling), SPECIES_SPRITE(DEERLING_AUTUMN, gMonFrontPic_Deerling), @@ -1233,7 +1233,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ZYGARDE_10, gMonFrontPic_Zygarde10), SPECIES_SPRITE(ZYGARDE_10_POWER_CONSTRUCT, gMonFrontPic_Zygarde10), - SPECIES_SPRITE(ZYGARDE_50_POWER_CONSTRUCT, gMonFrontPic_Zygarde), + SPECIES_SPRITE(ZYGARDE_50_POWER_CONSTRUCT, gMonFrontPic_Zygarde50), SPECIES_SPRITE(ZYGARDE_COMPLETE, gMonFrontPic_ZygardeComplete), SPECIES_SPRITE(HOOPA_UNBOUND, gMonFrontPic_HoopaUnbound), @@ -1269,12 +1269,12 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(SILVALLY_DARK, gMonFrontPic_Silvally), SPECIES_SPRITE(SILVALLY_FAIRY, gMonFrontPic_Silvally), - SPECIES_SPRITE(MINIOR_METEOR_ORANGE, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_YELLOW, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_GREEN, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_BLUE, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_INDIGO, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_VIOLET, gMonFrontPic_Minior), + SPECIES_SPRITE(MINIOR_METEOR_ORANGE, gMonFrontPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_YELLOW, gMonFrontPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_GREEN, gMonFrontPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_BLUE, gMonFrontPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_INDIGO, gMonFrontPic_MiniorMeteor), + SPECIES_SPRITE(MINIOR_METEOR_VIOLET, gMonFrontPic_MiniorMeteor), SPECIES_SPRITE(MINIOR_CORE_RED, gMonFrontPic_MiniorCore), SPECIES_SPRITE(MINIOR_CORE_ORANGE, gMonFrontPic_MiniorCore), SPECIES_SPRITE(MINIOR_CORE_YELLOW, gMonFrontPic_MiniorCore), @@ -1333,6 +1333,42 @@ const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = SPECIES_SPRITE(ENAMORUS_THERIAN, gMonFrontPic_EnamorusTherian), SPECIES_SPRITE(BASCULEGION_FEMALE, gMonFrontPic_BasculegionFemale), + + // Gigantamax Forms + SPECIES_SPRITE(VENUSAUR_GIGANTAMAX, gMonFrontPic_VenusaurGigantamax), + SPECIES_SPRITE(CHARIZARD_GIGANTAMAX, gMonFrontPic_CharizardGigantamax), + SPECIES_SPRITE(BLASTOISE_GIGANTAMAX, gMonFrontPic_BlastoiseGigantamax), + SPECIES_SPRITE(BUTTERFREE_GIGANTAMAX, gMonFrontPic_ButterfreeGigantamax), + SPECIES_SPRITE(PIKACHU_GIGANTAMAX, gMonFrontPic_PikachuGigantamax), + SPECIES_SPRITE(MEOWTH_GIGANTAMAX, gMonFrontPic_MeowthGigantamax), + SPECIES_SPRITE(MACHAMP_GIGANTAMAX, gMonFrontPic_MachampGigantamax), + SPECIES_SPRITE(GENGAR_GIGANTAMAX, gMonFrontPic_GengarGigantamax), + SPECIES_SPRITE(KINGLER_GIGANTAMAX, gMonFrontPic_KinglerGigantamax), + SPECIES_SPRITE(LAPRAS_GIGANTAMAX, gMonFrontPic_LaprasGigantamax), + SPECIES_SPRITE(EEVEE_GIGANTAMAX, gMonFrontPic_EeveeGigantamax), + SPECIES_SPRITE(SNORLAX_GIGANTAMAX, gMonFrontPic_SnorlaxGigantamax), + SPECIES_SPRITE(GARBODOR_GIGANTAMAX, gMonFrontPic_GarbodorGigantamax), + SPECIES_SPRITE(MELMETAL_GIGANTAMAX, gMonFrontPic_MelmetalGigantamax), + SPECIES_SPRITE(RILLABOOM_GIGANTAMAX, gMonFrontPic_RillaboomGigantamax), + SPECIES_SPRITE(CINDERACE_GIGANTAMAX, gMonFrontPic_CinderaceGigantamax), + SPECIES_SPRITE(INTELEON_GIGANTAMAX, gMonFrontPic_InteleonGigantamax), + SPECIES_SPRITE(CORVIKNIGHT_GIGANTAMAX, gMonFrontPic_CorviknightGigantamax), + SPECIES_SPRITE(ORBEETLE_GIGANTAMAX, gMonFrontPic_OrbeetleGigantamax), + SPECIES_SPRITE(DREDNAW_GIGANTAMAX, gMonFrontPic_DrednawGigantamax), + SPECIES_SPRITE(COALOSSAL_GIGANTAMAX, gMonFrontPic_CoalossalGigantamax), + SPECIES_SPRITE(FLAPPLE_GIGANTAMAX, gMonFrontPic_FlappleGigantamax), + SPECIES_SPRITE(APPLETUN_GIGANTAMAX, gMonFrontPic_AppletunGigantamax), + SPECIES_SPRITE(SANDACONDA_GIGANTAMAX, gMonFrontPic_SandacondaGigantamax), + SPECIES_SPRITE(TOXTRICITY_AMPED_GIGANTAMAX, gMonFrontPic_ToxtricityGigantamax), + SPECIES_SPRITE(TOXTRICITY_LOW_KEY_GIGANTAMAX, gMonFrontPic_ToxtricityGigantamax), + SPECIES_SPRITE(CENTISKORCH_GIGANTAMAX, gMonFrontPic_CentiskorchGigantamax), + SPECIES_SPRITE(HATTERENE_GIGANTAMAX, gMonFrontPic_HattereneGigantamax), + SPECIES_SPRITE(GRIMMSNARL_GIGANTAMAX, gMonFrontPic_GrimmsnarlGigantamax), + SPECIES_SPRITE(ALCREMIE_GIGANTAMAX, gMonFrontPic_AlcremieGigantamax), + SPECIES_SPRITE(COPPERAJAH_GIGANTAMAX, gMonFrontPic_CopperajahGigantamax), + SPECIES_SPRITE(DURALUDON_GIGANTAMAX, gMonFrontPic_DuraludonGigantamax), + SPECIES_SPRITE(URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, gMonFrontPic_UrshifuSingleStrikeGigantamax), + SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonFrontPic_UrshifuRapidStrikeGigantamax), #endif SPECIES_SPRITE(EGG, gMonFrontPic_Egg), }; diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index 1fa65f3b33..8e4a9c32b2 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -360,7 +360,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(ARON, gMonPalette_Aron), SPECIES_PAL(LAIRON, gMonPalette_Lairon), SPECIES_PAL(AGGRON, gMonPalette_Aggron), - SPECIES_PAL(CASTFORM, gMonPalette_Castform), + SPECIES_PAL(CASTFORM_NORMAL, gMonPalette_CastformNormal), SPECIES_PAL(VOLBEAT, gMonPalette_Volbeat), SPECIES_PAL(ILLUMISE, gMonPalette_Illumise), SPECIES_PAL(LILEEP, gMonPalette_Lileep), @@ -385,7 +385,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(LATIAS, gMonPalette_Latias), SPECIES_PAL(LATIOS, gMonPalette_Latios), SPECIES_PAL(JIRACHI, gMonPalette_Jirachi), - SPECIES_PAL(DEOXYS, gMonPalette_Deoxys), + SPECIES_PAL(DEOXYS_NORMAL, gMonPalette_DeoxysNormal), SPECIES_PAL(CHIMECHO, gMonPalette_Chimecho), #if P_GEN_4_POKEMON == TRUE SPECIES_PAL(TURTWIG, gMonPalette_Turtwig), @@ -413,8 +413,8 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(RAMPARDOS, gMonPalette_Rampardos), SPECIES_PAL(SHIELDON, gMonPalette_Shieldon), SPECIES_PAL(BASTIODON, gMonPalette_Bastiodon), - SPECIES_PAL(BURMY, gMonPalette_Burmy), - SPECIES_PAL(WORMADAM, gMonPalette_Wormadam), + SPECIES_PAL(BURMY_PLANT_CLOAK, gMonPalette_BurmyPlantCloak), + SPECIES_PAL(WORMADAM_PLANT_CLOAK, gMonPalette_WormadamPlantCloak), SPECIES_PAL(MOTHIM, gMonPalette_Mothim), SPECIES_PAL(COMBEE, gMonPalette_Combee), SPECIES_PAL(VESPIQUEN, gMonPalette_Vespiquen), @@ -422,9 +422,9 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(BUIZEL, gMonPalette_Buizel), SPECIES_PAL(FLOATZEL, gMonPalette_Floatzel), SPECIES_PAL(CHERUBI, gMonPalette_Cherubi), - SPECIES_PAL(CHERRIM, gMonPalette_Cherrim), - SPECIES_PAL(SHELLOS, gMonPalette_Shellos), - SPECIES_PAL(GASTRODON, gMonPalette_Gastrodon), + SPECIES_PAL(CHERRIM_OVERCAST, gMonPalette_CherrimOvercast), + SPECIES_PAL(SHELLOS_WEST_SEA, gMonPalette_ShellosWestSea), + SPECIES_PAL(GASTRODON_WEST_SEA, gMonPalette_GastrodonWestSea), SPECIES_PAL(AMBIPOM, gMonPalette_Ambipom), SPECIES_PAL(DRIFLOON, gMonPalette_Drifloon), SPECIES_PAL(DRIFBLIM, gMonPalette_Drifblim), @@ -488,12 +488,12 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(PALKIA, gMonPalette_Palkia), SPECIES_PAL(HEATRAN, gMonPalette_Heatran), SPECIES_PAL(REGIGIGAS, gMonPalette_Regigigas), - SPECIES_PAL(GIRATINA, gMonPalette_Giratina), + SPECIES_PAL(GIRATINA_ALTERED, gMonPalette_GiratinaAltered), SPECIES_PAL(CRESSELIA, gMonPalette_Cresselia), SPECIES_PAL(PHIONE, gMonPalette_Phione), SPECIES_PAL(MANAPHY, gMonPalette_Manaphy), SPECIES_PAL(DARKRAI, gMonPalette_Darkrai), - SPECIES_PAL(SHAYMIN, gMonPalette_Shaymin), + SPECIES_PAL(SHAYMIN_LAND, gMonPalette_ShayminLand), SPECIES_PAL(ARCEUS, gMonPalette_Arceus), #endif #if P_GEN_5_POKEMON == TRUE @@ -553,12 +553,12 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(WHIMSICOTT, gMonPalette_Whimsicott), SPECIES_PAL(PETILIL, gMonPalette_Petilil), SPECIES_PAL(LILLIGANT, gMonPalette_Lilligant), - SPECIES_PAL(BASCULIN, gMonPalette_Basculin), + SPECIES_PAL(BASCULIN, gMonPalette_BasculinRedStriped), SPECIES_PAL(SANDILE, gMonPalette_Sandile), SPECIES_PAL(KROKOROK, gMonPalette_Krokorok), SPECIES_PAL(KROOKODILE, gMonPalette_Krookodile), SPECIES_PAL(DARUMAKA, gMonPalette_Darumaka), - SPECIES_PAL(DARMANITAN, gMonPalette_Darmanitan), + SPECIES_PAL(DARMANITAN_STANDARD_MODE, gMonPalette_DarmanitanStandardMode), SPECIES_PAL(MARACTUS, gMonPalette_Maractus), SPECIES_PAL(DWEBBLE, gMonPalette_Dwebble), SPECIES_PAL(CRUSTLE, gMonPalette_Crustle), @@ -588,8 +588,8 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(VANILLITE, gMonPalette_Vanillite), SPECIES_PAL(VANILLISH, gMonPalette_Vanillish), SPECIES_PAL(VANILLUXE, gMonPalette_Vanilluxe), - SPECIES_PAL(DEERLING, gMonPalette_Deerling), - SPECIES_PAL(SAWSBUCK, gMonPalette_Sawsbuck), + SPECIES_PAL(DEERLING_SPRING, gMonPalette_DeerlingSpring), + SPECIES_PAL(SAWSBUCK_SPRING, gMonPalette_SawsbuckSpring), SPECIES_PAL(EMOLGA, gMonPalette_Emolga), SPECIES_PAL(KARRABLAST, gMonPalette_Karrablast), SPECIES_PAL(ESCAVALIER, gMonPalette_Escavalier), @@ -644,14 +644,14 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(COBALION, gMonPalette_Cobalion), SPECIES_PAL(TERRAKION, gMonPalette_Terrakion), SPECIES_PAL(VIRIZION, gMonPalette_Virizion), - SPECIES_PAL(TORNADUS, gMonPalette_Tornadus), - SPECIES_PAL(THUNDURUS, gMonPalette_Thundurus), + SPECIES_PAL(TORNADUS_INCARNATE, gMonPalette_TornadusIncarnate), + SPECIES_PAL(THUNDURUS_INCARNATE, gMonPalette_ThundurusIncarnate), SPECIES_PAL(RESHIRAM, gMonPalette_Reshiram), SPECIES_PAL(ZEKROM, gMonPalette_Zekrom), - SPECIES_PAL(LANDORUS, gMonPalette_Landorus), + SPECIES_PAL(LANDORUS_INCARNATE, gMonPalette_LandorusIncarnate), SPECIES_PAL(KYUREM, gMonPalette_Kyurem), - SPECIES_PAL(KELDEO, gMonPalette_Keldeo), - SPECIES_PAL(MELOETTA, gMonPalette_Meloetta), + SPECIES_PAL(KELDEO_ORDINARY, gMonPalette_KeldeoOrdinary), + SPECIES_PAL(MELOETTA, gMonPalette_MeloettaAria), SPECIES_PAL(GENESECT, gMonPalette_Genesect), #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(TALONFLAME, gMonPalette_Talonflame), SPECIES_PAL(SCATTERBUG, gMonPalette_Scatterbug), SPECIES_PAL(SPEWPA, gMonPalette_Spewpa), - SPECIES_PAL(VIVILLON, gMonPalette_Vivillon), + SPECIES_PAL(VIVILLON_ICY_SNOW, gMonPalette_VivillonIcySnow), SPECIES_PAL(LITLEO, gMonPalette_Litleo), SPECIES_PAL(PYROAR, gMonPalette_Pyroar), - SPECIES_PAL(FLABEBE, gMonPalette_Flabebe), - SPECIES_PAL(FLOETTE, gMonPalette_Floette), - SPECIES_PAL(FLORGES, gMonPalette_Florges), + SPECIES_PAL(FLABEBE_RED_FLOWER, gMonPalette_FlabebeRedFlower), + SPECIES_PAL(FLOETTE_RED_FLOWER, gMonPalette_FloetteRedFlower), + SPECIES_PAL(FLORGES_RED_FLOWER, gMonPalette_FlorgesRedFlower), SPECIES_PAL(SKIDDO, gMonPalette_Skiddo), SPECIES_PAL(GOGOAT, gMonPalette_Gogoat), SPECIES_PAL(PANCHAM, gMonPalette_Pancham), SPECIES_PAL(PANGORO, gMonPalette_Pangoro), - SPECIES_PAL(FURFROU, gMonPalette_Furfrou), + SPECIES_PAL(FURFROU_NATURAL, gMonPalette_FurfrouNatural), SPECIES_PAL(ESPURR, gMonPalette_Espurr), - SPECIES_PAL(MEOWSTIC, gMonPalette_Meowstic), + SPECIES_PAL(MEOWSTIC_MALE, gMonPalette_MeowsticMale), SPECIES_PAL(HONEDGE, gMonPalette_Honedge), SPECIES_PAL(DOUBLADE, gMonPalette_Doublade), - SPECIES_PAL(AEGISLASH, gMonPalette_Aegislash), + SPECIES_PAL(AEGISLASH_SHIELD, gMonPalette_AegislashShield), SPECIES_PAL(SPRITZEE, gMonPalette_Spritzee), SPECIES_PAL(AROMATISSE, gMonPalette_Aromatisse), SPECIES_PAL(SWIRLIX, gMonPalette_Swirlix), @@ -715,17 +715,17 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(KLEFKI, gMonPalette_Klefki), SPECIES_PAL(PHANTUMP, gMonPalette_Phantump), SPECIES_PAL(TREVENANT, gMonPalette_Trevenant), - SPECIES_PAL(PUMPKABOO, gMonPalette_Pumpkaboo), - SPECIES_PAL(GOURGEIST, gMonPalette_Gourgeist), + SPECIES_PAL(PUMPKABOO_AVERAGE, gMonPalette_Pumpkaboo), + SPECIES_PAL(GOURGEIST_AVERAGE, gMonPalette_Gourgeist), SPECIES_PAL(BERGMITE, gMonPalette_Bergmite), SPECIES_PAL(AVALUGG, gMonPalette_Avalugg), SPECIES_PAL(NOIBAT, gMonPalette_Noibat), SPECIES_PAL(NOIVERN, gMonPalette_Noivern), - SPECIES_PAL(XERNEAS, gMonPalette_Xerneas), + SPECIES_PAL(XERNEAS_NEUTRAL, gMonPalette_XerneasNeutral), SPECIES_PAL(YVELTAL, gMonPalette_Yveltal), - SPECIES_PAL(ZYGARDE, gMonPalette_Zygarde), + SPECIES_PAL(ZYGARDE_50_AURA_BREAK, gMonPalette_Zygarde50), SPECIES_PAL(DIANCIE, gMonPalette_Diancie), - SPECIES_PAL(HOOPA, gMonPalette_Hoopa), + SPECIES_PAL(HOOPA_CONFINED, gMonPalette_HoopaConfined), SPECIES_PAL(VOLCANION, gMonPalette_Volcanion), #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(VIKAVOLT, gMonPalette_Vikavolt), SPECIES_PAL(CRABRAWLER, gMonPalette_Crabrawler), SPECIES_PAL(CRABOMINABLE, gMonPalette_Crabominable), - SPECIES_PAL(ORICORIO, gMonPalette_Oricorio), + SPECIES_PAL(ORICORIO_BAILE, gMonPalette_OricorioBaile), SPECIES_PAL(CUTIEFLY, gMonPalette_Cutiefly), SPECIES_PAL(RIBOMBEE, gMonPalette_Ribombee), SPECIES_PAL(ROCKRUFF, gMonPalette_Rockruff), - SPECIES_PAL(LYCANROC, gMonPalette_Lycanroc), - SPECIES_PAL(WISHIWASHI, gMonPalette_Wishiwashi), + SPECIES_PAL(LYCANROC_MIDDAY, gMonPalette_LycanrocMidday), + SPECIES_PAL(WISHIWASHI_SOLO, gMonPalette_WishiwashiSolo), SPECIES_PAL(MAREANIE, gMonPalette_Mareanie), SPECIES_PAL(TOXAPEX, gMonPalette_Toxapex), SPECIES_PAL(MUDBRAY, gMonPalette_Mudbray), @@ -780,12 +780,12 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(PALOSSAND, gMonPalette_Palossand), SPECIES_PAL(PYUKUMUKU, gMonPalette_Pyukumuku), SPECIES_PAL(TYPE_NULL, gMonPalette_TypeNull), - SPECIES_PAL(SILVALLY, gMonPalette_Silvally), - SPECIES_PAL(MINIOR, gMonPalette_Minior), + SPECIES_PAL(SILVALLY_NORMAL, gMonPalette_SilvallyNormal), + SPECIES_PAL(MINIOR_METEOR_RED, gMonPalette_MiniorMeteor), SPECIES_PAL(KOMALA, gMonPalette_Komala), SPECIES_PAL(TURTONATOR, gMonPalette_Turtonator), SPECIES_PAL(TOGEDEMARU, gMonPalette_Togedemaru), - SPECIES_PAL(MIMIKYU, gMonPalette_Mimikyu), + SPECIES_PAL(MIMIKYU_DISGUISED, gMonPalette_MimikyuDisguised), SPECIES_PAL(BRUXISH, gMonPalette_Bruxish), SPECIES_PAL(DRAMPA, gMonPalette_Drampa), SPECIES_PAL(DHELMISE, gMonPalette_Dhelmise), @@ -858,13 +858,13 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(ARROKUDA, gMonPalette_Arrokuda), SPECIES_PAL(BARRASKEWDA, gMonPalette_Barraskewda), SPECIES_PAL(TOXEL, gMonPalette_Toxel), - SPECIES_PAL(TOXTRICITY, gMonPalette_Toxtricity), + SPECIES_PAL(TOXTRICITY_AMPED, gMonPalette_ToxtricityAmped), SPECIES_PAL(SIZZLIPEDE, gMonPalette_Sizzlipede), SPECIES_PAL(CENTISKORCH, gMonPalette_Centiskorch), SPECIES_PAL(CLOBBOPUS, gMonPalette_Clobbopus), SPECIES_PAL(GRAPPLOCT, gMonPalette_Grapploct), - SPECIES_PAL(SINISTEA, gMonPalette_Sinistea), - SPECIES_PAL(POLTEAGEIST, gMonPalette_Polteageist), + SPECIES_PAL(SINISTEA_PHONY, gMonPalette_Sinistea), + SPECIES_PAL(POLTEAGEIST_PHONY, gMonPalette_Polteageist), SPECIES_PAL(HATENNA, gMonPalette_Hatenna), SPECIES_PAL(HATTREM, gMonPalette_Hattrem), SPECIES_PAL(HATTERENE, gMonPalette_Hatterene), @@ -884,9 +884,9 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(SNOM, gMonPalette_Snom), SPECIES_PAL(FROSMOTH, gMonPalette_Frosmoth), SPECIES_PAL(STONJOURNER, gMonPalette_Stonjourner), - SPECIES_PAL(EISCUE, gMonPalette_Eiscue), - SPECIES_PAL(INDEEDEE, gMonPalette_Indeedee), - SPECIES_PAL(MORPEKO, gMonPalette_Morpeko), + SPECIES_PAL(EISCUE_ICE_FACE, gMonPalette_EiscueIceFace), + SPECIES_PAL(INDEEDEE_MALE, gMonPalette_IndeedeeMale), + SPECIES_PAL(MORPEKO_FULL_BELLY, gMonPalette_MorpekoFullBelly), SPECIES_PAL(CUFANT, gMonPalette_Cufant), SPECIES_PAL(COPPERAJAH, gMonPalette_Copperajah), SPECIES_PAL(DRACOZOLT, gMonPalette_Dracozolt), @@ -897,11 +897,11 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(DREEPY, gMonPalette_Dreepy), SPECIES_PAL(DRAKLOAK, gMonPalette_Drakloak), SPECIES_PAL(DRAGAPULT, gMonPalette_Dragapult), - SPECIES_PAL(ZACIAN, gMonPalette_Zacian), - SPECIES_PAL(ZAMAZENTA, gMonPalette_Zamazenta), + SPECIES_PAL(ZACIAN_HERO_OF_MANY_BATTLES, gMonPalette_ZacianHeroOfManyBattles), + SPECIES_PAL(ZAMAZENTA_HERO_OF_MANY_BATTLES, gMonPalette_ZamazentaHeroOfManyBattles), SPECIES_PAL(ETERNATUS, gMonPalette_Eternatus), SPECIES_PAL(KUBFU, gMonPalette_Kubfu), - SPECIES_PAL(URSHIFU, gMonPalette_Urshifu), + SPECIES_PAL(URSHIFU_SINGLE_STRIKE_STYLE, gMonPalette_UrshifuSingleStrikeStyle), SPECIES_PAL(ZARUDE, gMonPalette_Zarude), SPECIES_PAL(REGIELEKI, gMonPalette_Regieleki), SPECIES_PAL(REGIDRAGO, gMonPalette_Regidrago), @@ -911,10 +911,10 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(WYRDEER, gMonPalette_Wyrdeer), SPECIES_PAL(KLEAVOR, gMonPalette_Kleavor), SPECIES_PAL(URSALUNA, gMonPalette_Ursaluna), - SPECIES_PAL(BASCULEGION, gMonPalette_Basculegion), + SPECIES_PAL(BASCULEGION_MALE, gMonPalette_BasculegionMale), SPECIES_PAL(SNEASLER, gMonPalette_Sneasler), SPECIES_PAL(OVERQWIL, gMonPalette_Overqwil), - SPECIES_PAL(ENAMORUS, gMonPalette_Enamorus), + SPECIES_PAL(ENAMORUS_INCARNATE, gMonPalette_EnamorusIncarnate), #endif SPECIES_PAL(VENUSAUR_MEGA, gMonPalette_VenusaurMega), SPECIES_PAL(CHARIZARD_MEGA_X, gMonPalette_CharizardMegaX), @@ -1010,7 +1010,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(LINOONE_GALARIAN, gMonPalette_LinooneGalarian), #if P_GEN_5_POKEMON == TRUE SPECIES_PAL(DARUMAKA_GALARIAN, gMonPalette_DarumakaGalarian), - SPECIES_PAL(DARMANITAN_GALARIAN, gMonPalette_DarmanitanGalarian), + SPECIES_PAL(DARMANITAN_GALARIAN_STANDARD_MODE, gMonPalette_DarmanitanGalarianStandardMode), SPECIES_PAL(YAMASK_GALARIAN, gMonPalette_YamaskGalarian), SPECIES_PAL(STUNFISK_GALARIAN, gMonPalette_StunfiskGalarian), #endif @@ -1141,7 +1141,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(BASCULIN_WHITE_STRIPED, gMonPalette_BasculinWhiteStriped), SPECIES_PAL(DARMANITAN_ZEN_MODE, gMonPalette_DarmanitanZenMode), - SPECIES_PAL(DARMANITAN_ZEN_MODE_GALARIAN, gMonPalette_DarmanitanZenModeGalarian), + SPECIES_PAL(DARMANITAN_GALARIAN_ZEN_MODE, gMonPalette_DarmanitanGalarianZenMode), SPECIES_PAL(DEERLING_SUMMER, gMonPalette_DeerlingSummer), SPECIES_PAL(DEERLING_AUTUMN, gMonPalette_DeerlingAutumn), @@ -1234,7 +1234,7 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(ZYGARDE_10, gMonPalette_Zygarde10), SPECIES_PAL(ZYGARDE_10_POWER_CONSTRUCT, gMonPalette_Zygarde10), - SPECIES_PAL(ZYGARDE_50_POWER_CONSTRUCT, gMonPalette_Zygarde), + SPECIES_PAL(ZYGARDE_50_POWER_CONSTRUCT, gMonPalette_Zygarde50), SPECIES_PAL(ZYGARDE_COMPLETE, gMonPalette_ZygardeComplete), SPECIES_PAL(HOOPA_UNBOUND, gMonPalette_HoopaUnbound), @@ -1270,12 +1270,12 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(SILVALLY_DARK, gMonPalette_SilvallyDark), SPECIES_PAL(SILVALLY_FAIRY, gMonPalette_SilvallyFairy), - SPECIES_PAL(MINIOR_METEOR_ORANGE, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_YELLOW, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_GREEN, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_BLUE, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_INDIGO, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_VIOLET, gMonPalette_Minior), + SPECIES_PAL(MINIOR_METEOR_ORANGE, gMonPalette_MiniorMeteor), + SPECIES_PAL(MINIOR_METEOR_YELLOW, gMonPalette_MiniorMeteor), + SPECIES_PAL(MINIOR_METEOR_GREEN, gMonPalette_MiniorMeteor), + SPECIES_PAL(MINIOR_METEOR_BLUE, gMonPalette_MiniorMeteor), + SPECIES_PAL(MINIOR_METEOR_INDIGO, gMonPalette_MiniorMeteor), + SPECIES_PAL(MINIOR_METEOR_VIOLET, gMonPalette_MiniorMeteor), SPECIES_PAL(MINIOR_CORE_RED, gMonPalette_MiniorCoreRed), SPECIES_PAL(MINIOR_CORE_ORANGE, gMonPalette_MiniorCoreOrange), SPECIES_PAL(MINIOR_CORE_YELLOW, gMonPalette_MiniorCoreYellow), @@ -1330,8 +1330,45 @@ const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = SPECIES_PAL(CALYREX_ICE_RIDER, gMonPalette_CalyrexIceRider), SPECIES_PAL(CALYREX_SHADOW_RIDER, gMonPalette_CalyrexShadowRider), + SPECIES_PAL(ENAMORUS_THERIAN, gMonPalette_EnamorusTherian), SPECIES_PAL(BASCULEGION_FEMALE, gMonPalette_BasculegionFemale), + + // Gigantamax Forms + SPECIES_PAL(VENUSAUR_GIGANTAMAX, gMonPalette_VenusaurGigantamax), + SPECIES_PAL(CHARIZARD_GIGANTAMAX, gMonPalette_CharizardGigantamax), + SPECIES_PAL(BLASTOISE_GIGANTAMAX, gMonPalette_BlastoiseGigantamax), + SPECIES_PAL(BUTTERFREE_GIGANTAMAX, gMonPalette_ButterfreeGigantamax), + SPECIES_PAL(PIKACHU_GIGANTAMAX, gMonPalette_PikachuGigantamax), + SPECIES_PAL(MEOWTH_GIGANTAMAX, gMonPalette_MeowthGigantamax), + SPECIES_PAL(MACHAMP_GIGANTAMAX, gMonPalette_MachampGigantamax), + SPECIES_PAL(GENGAR_GIGANTAMAX, gMonPalette_GengarGigantamax), + SPECIES_PAL(KINGLER_GIGANTAMAX, gMonPalette_KinglerGigantamax), + SPECIES_PAL(LAPRAS_GIGANTAMAX, gMonPalette_LaprasGigantamax), + SPECIES_PAL(EEVEE_GIGANTAMAX, gMonPalette_EeveeGigantamax), + SPECIES_PAL(SNORLAX_GIGANTAMAX, gMonPalette_SnorlaxGigantamax), + SPECIES_PAL(GARBODOR_GIGANTAMAX, gMonPalette_GarbodorGigantamax), + SPECIES_PAL(MELMETAL_GIGANTAMAX, gMonPalette_MelmetalGigantamax), + SPECIES_PAL(RILLABOOM_GIGANTAMAX, gMonPalette_RillaboomGigantamax), + SPECIES_PAL(CINDERACE_GIGANTAMAX, gMonPalette_CinderaceGigantamax), + SPECIES_PAL(INTELEON_GIGANTAMAX, gMonPalette_InteleonGigantamax), + SPECIES_PAL(CORVIKNIGHT_GIGANTAMAX, gMonPalette_CorviknightGigantamax), + SPECIES_PAL(ORBEETLE_GIGANTAMAX, gMonPalette_OrbeetleGigantamax), + SPECIES_PAL(DREDNAW_GIGANTAMAX, gMonPalette_DrednawGigantamax), + SPECIES_PAL(COALOSSAL_GIGANTAMAX, gMonPalette_CoalossalGigantamax), + SPECIES_PAL(FLAPPLE_GIGANTAMAX, gMonPalette_FlappleGigantamax), + SPECIES_PAL(APPLETUN_GIGANTAMAX, gMonPalette_AppletunGigantamax), + SPECIES_PAL(SANDACONDA_GIGANTAMAX, gMonPalette_SandacondaGigantamax), + SPECIES_PAL(TOXTRICITY_AMPED_GIGANTAMAX, gMonPalette_ToxtricityGigantamax), + SPECIES_PAL(TOXTRICITY_LOW_KEY_GIGANTAMAX, gMonPalette_ToxtricityGigantamax), + SPECIES_PAL(CENTISKORCH_GIGANTAMAX, gMonPalette_CentiskorchGigantamax), + SPECIES_PAL(HATTERENE_GIGANTAMAX, gMonPalette_HattereneGigantamax), + SPECIES_PAL(GRIMMSNARL_GIGANTAMAX, gMonPalette_GrimmsnarlGigantamax), + SPECIES_PAL(ALCREMIE_GIGANTAMAX, gMonPalette_AlcremieGigantamax), + SPECIES_PAL(COPPERAJAH_GIGANTAMAX, gMonPalette_CopperajahGigantamax), + SPECIES_PAL(DURALUDON_GIGANTAMAX, gMonPalette_DuraludonGigantamax), + SPECIES_PAL(URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, gMonPalette_UrshifuSingleStrikeGigantamax), + SPECIES_PAL(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonPalette_UrshifuRapidStrikeGigantamax), #endif SPECIES_PAL(EGG, gMonPalette_Egg), }; diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index b674617b67..44a140a8da 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -360,7 +360,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(ARON, gMonShinyPalette_Aron), SPECIES_SHINY_PAL(LAIRON, gMonShinyPalette_Lairon), SPECIES_SHINY_PAL(AGGRON, gMonShinyPalette_Aggron), - SPECIES_SHINY_PAL(CASTFORM, gMonShinyPalette_Castform), + SPECIES_SHINY_PAL(CASTFORM_NORMAL, gMonShinyPalette_CastformNormal), SPECIES_SHINY_PAL(VOLBEAT, gMonShinyPalette_Volbeat), SPECIES_SHINY_PAL(ILLUMISE, gMonShinyPalette_Illumise), SPECIES_SHINY_PAL(LILEEP, gMonShinyPalette_Lileep), @@ -385,7 +385,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(LATIAS, gMonShinyPalette_Latias), SPECIES_SHINY_PAL(LATIOS, gMonShinyPalette_Latios), SPECIES_SHINY_PAL(JIRACHI, gMonShinyPalette_Jirachi), - SPECIES_SHINY_PAL(DEOXYS, gMonShinyPalette_Deoxys), + SPECIES_SHINY_PAL(DEOXYS_NORMAL, gMonShinyPalette_DeoxysNormal), SPECIES_SHINY_PAL(CHIMECHO, gMonShinyPalette_Chimecho), #if P_GEN_4_POKEMON == TRUE SPECIES_SHINY_PAL(TURTWIG, gMonShinyPalette_Turtwig), @@ -413,8 +413,8 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(RAMPARDOS, gMonShinyPalette_Rampardos), SPECIES_SHINY_PAL(SHIELDON, gMonShinyPalette_Shieldon), SPECIES_SHINY_PAL(BASTIODON, gMonShinyPalette_Bastiodon), - SPECIES_SHINY_PAL(BURMY, gMonShinyPalette_Burmy), - SPECIES_SHINY_PAL(WORMADAM, gMonShinyPalette_Wormadam), + SPECIES_SHINY_PAL(BURMY_PLANT_CLOAK, gMonShinyPalette_BurmyPlantCloak), + SPECIES_SHINY_PAL(WORMADAM_PLANT_CLOAK, gMonShinyPalette_WormadamPlantCloak), SPECIES_SHINY_PAL(MOTHIM, gMonShinyPalette_Mothim), SPECIES_SHINY_PAL(COMBEE, gMonShinyPalette_Combee), SPECIES_SHINY_PAL(VESPIQUEN, gMonShinyPalette_Vespiquen), @@ -422,9 +422,9 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(BUIZEL, gMonShinyPalette_Buizel), SPECIES_SHINY_PAL(FLOATZEL, gMonShinyPalette_Floatzel), SPECIES_SHINY_PAL(CHERUBI, gMonShinyPalette_Cherubi), - SPECIES_SHINY_PAL(CHERRIM, gMonShinyPalette_Cherrim), - SPECIES_SHINY_PAL(SHELLOS, gMonShinyPalette_Shellos), - SPECIES_SHINY_PAL(GASTRODON, gMonShinyPalette_Gastrodon), + SPECIES_SHINY_PAL(CHERRIM_OVERCAST, gMonShinyPalette_CherrimOvercast), + SPECIES_SHINY_PAL(SHELLOS_WEST_SEA, gMonShinyPalette_ShellosWestSea), + SPECIES_SHINY_PAL(GASTRODON_WEST_SEA, gMonShinyPalette_GastrodonWestSea), SPECIES_SHINY_PAL(AMBIPOM, gMonShinyPalette_Ambipom), SPECIES_SHINY_PAL(DRIFLOON, gMonShinyPalette_Drifloon), SPECIES_SHINY_PAL(DRIFBLIM, gMonShinyPalette_Drifblim), @@ -488,12 +488,12 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(PALKIA, gMonShinyPalette_Palkia), SPECIES_SHINY_PAL(HEATRAN, gMonShinyPalette_Heatran), SPECIES_SHINY_PAL(REGIGIGAS, gMonShinyPalette_Regigigas), - SPECIES_SHINY_PAL(GIRATINA, gMonShinyPalette_Giratina), + SPECIES_SHINY_PAL(GIRATINA_ALTERED, gMonShinyPalette_GiratinaAltered), SPECIES_SHINY_PAL(CRESSELIA, gMonShinyPalette_Cresselia), SPECIES_SHINY_PAL(PHIONE, gMonShinyPalette_Phione), SPECIES_SHINY_PAL(MANAPHY, gMonShinyPalette_Manaphy), SPECIES_SHINY_PAL(DARKRAI, gMonShinyPalette_Darkrai), - SPECIES_SHINY_PAL(SHAYMIN, gMonShinyPalette_Shaymin), + SPECIES_SHINY_PAL(SHAYMIN_LAND, gMonShinyPalette_ShayminLand), SPECIES_SHINY_PAL(ARCEUS, gMonShinyPalette_Arceus), #endif #if P_GEN_5_POKEMON == TRUE @@ -553,12 +553,12 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(WHIMSICOTT, gMonShinyPalette_Whimsicott), SPECIES_SHINY_PAL(PETILIL, gMonShinyPalette_Petilil), SPECIES_SHINY_PAL(LILLIGANT, gMonShinyPalette_Lilligant), - SPECIES_SHINY_PAL(BASCULIN, gMonShinyPalette_Basculin), + SPECIES_SHINY_PAL(BASCULIN, gMonShinyPalette_BasculinRedStriped), SPECIES_SHINY_PAL(SANDILE, gMonShinyPalette_Sandile), SPECIES_SHINY_PAL(KROKOROK, gMonShinyPalette_Krokorok), SPECIES_SHINY_PAL(KROOKODILE, gMonShinyPalette_Krookodile), SPECIES_SHINY_PAL(DARUMAKA, gMonShinyPalette_Darumaka), - SPECIES_SHINY_PAL(DARMANITAN, gMonShinyPalette_Darmanitan), + SPECIES_SHINY_PAL(DARMANITAN_STANDARD_MODE, gMonShinyPalette_DarmanitanStandardMode), SPECIES_SHINY_PAL(MARACTUS, gMonShinyPalette_Maractus), SPECIES_SHINY_PAL(DWEBBLE, gMonShinyPalette_Dwebble), SPECIES_SHINY_PAL(CRUSTLE, gMonShinyPalette_Crustle), @@ -588,8 +588,8 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(VANILLITE, gMonShinyPalette_Vanillite), SPECIES_SHINY_PAL(VANILLISH, gMonShinyPalette_Vanillish), SPECIES_SHINY_PAL(VANILLUXE, gMonShinyPalette_Vanilluxe), - SPECIES_SHINY_PAL(DEERLING, gMonShinyPalette_Deerling), - SPECIES_SHINY_PAL(SAWSBUCK, gMonShinyPalette_Sawsbuck), + SPECIES_SHINY_PAL(DEERLING_SPRING, gMonShinyPalette_DeerlingSpring), + SPECIES_SHINY_PAL(SAWSBUCK_SPRING, gMonShinyPalette_SawsbuckSpring), SPECIES_SHINY_PAL(EMOLGA, gMonShinyPalette_Emolga), SPECIES_SHINY_PAL(KARRABLAST, gMonShinyPalette_Karrablast), SPECIES_SHINY_PAL(ESCAVALIER, gMonShinyPalette_Escavalier), @@ -644,14 +644,14 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(COBALION, gMonShinyPalette_Cobalion), SPECIES_SHINY_PAL(TERRAKION, gMonShinyPalette_Terrakion), SPECIES_SHINY_PAL(VIRIZION, gMonShinyPalette_Virizion), - SPECIES_SHINY_PAL(TORNADUS, gMonShinyPalette_Tornadus), - SPECIES_SHINY_PAL(THUNDURUS, gMonShinyPalette_Thundurus), + SPECIES_SHINY_PAL(TORNADUS_INCARNATE, gMonShinyPalette_TornadusIncarnate), + SPECIES_SHINY_PAL(THUNDURUS_INCARNATE, gMonShinyPalette_ThundurusIncarnate), SPECIES_SHINY_PAL(RESHIRAM, gMonShinyPalette_Reshiram), SPECIES_SHINY_PAL(ZEKROM, gMonShinyPalette_Zekrom), - SPECIES_SHINY_PAL(LANDORUS, gMonShinyPalette_Landorus), + SPECIES_SHINY_PAL(LANDORUS_INCARNATE, gMonShinyPalette_LandorusIncarnate), SPECIES_SHINY_PAL(KYUREM, gMonShinyPalette_Kyurem), - SPECIES_SHINY_PAL(KELDEO, gMonShinyPalette_Keldeo), - SPECIES_SHINY_PAL(MELOETTA, gMonShinyPalette_Meloetta), + SPECIES_SHINY_PAL(KELDEO_ORDINARY, gMonShinyPalette_KeldeoOrdinary), + SPECIES_SHINY_PAL(MELOETTA, gMonShinyPalette_MeloettaAria), SPECIES_SHINY_PAL(GENESECT, gMonShinyPalette_Genesect), #endif #if P_GEN_6_POKEMON == TRUE @@ -671,22 +671,22 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(TALONFLAME, gMonShinyPalette_Talonflame), SPECIES_SHINY_PAL(SCATTERBUG, gMonShinyPalette_Scatterbug), SPECIES_SHINY_PAL(SPEWPA, gMonShinyPalette_Spewpa), - SPECIES_SHINY_PAL(VIVILLON, gMonShinyPalette_Vivillon), + SPECIES_SHINY_PAL(VIVILLON_ICY_SNOW, gMonShinyPalette_VivillonIcySnow), SPECIES_SHINY_PAL(LITLEO, gMonShinyPalette_Litleo), SPECIES_SHINY_PAL(PYROAR, gMonShinyPalette_Pyroar), - SPECIES_SHINY_PAL(FLABEBE, gMonShinyPalette_Flabebe), - SPECIES_SHINY_PAL(FLOETTE, gMonShinyPalette_Floette), - SPECIES_SHINY_PAL(FLORGES, gMonShinyPalette_Florges), + SPECIES_SHINY_PAL(FLABEBE_RED_FLOWER, gMonShinyPalette_FlabebeRedFlower), + SPECIES_SHINY_PAL(FLOETTE_RED_FLOWER, gMonShinyPalette_FloetteRedFlower), + SPECIES_SHINY_PAL(FLORGES_RED_FLOWER, gMonShinyPalette_FlorgesRedFlower), SPECIES_SHINY_PAL(SKIDDO, gMonShinyPalette_Skiddo), SPECIES_SHINY_PAL(GOGOAT, gMonShinyPalette_Gogoat), SPECIES_SHINY_PAL(PANCHAM, gMonShinyPalette_Pancham), SPECIES_SHINY_PAL(PANGORO, gMonShinyPalette_Pangoro), - SPECIES_SHINY_PAL(FURFROU, gMonShinyPalette_Furfrou), + SPECIES_SHINY_PAL(FURFROU_NATURAL, gMonShinyPalette_FurfrouNatural), SPECIES_SHINY_PAL(ESPURR, gMonShinyPalette_Espurr), - SPECIES_SHINY_PAL(MEOWSTIC, gMonShinyPalette_Meowstic), + SPECIES_SHINY_PAL(MEOWSTIC_MALE, gMonShinyPalette_MeowsticMale), SPECIES_SHINY_PAL(HONEDGE, gMonShinyPalette_Honedge), SPECIES_SHINY_PAL(DOUBLADE, gMonShinyPalette_Doublade), - SPECIES_SHINY_PAL(AEGISLASH, gMonShinyPalette_Aegislash), + SPECIES_SHINY_PAL(AEGISLASH_SHIELD, gMonShinyPalette_AegislashShield), SPECIES_SHINY_PAL(SPRITZEE, gMonShinyPalette_Spritzee), SPECIES_SHINY_PAL(AROMATISSE, gMonShinyPalette_Aromatisse), SPECIES_SHINY_PAL(SWIRLIX, gMonShinyPalette_Swirlix), @@ -715,17 +715,17 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(KLEFKI, gMonShinyPalette_Klefki), SPECIES_SHINY_PAL(PHANTUMP, gMonShinyPalette_Phantump), SPECIES_SHINY_PAL(TREVENANT, gMonShinyPalette_Trevenant), - SPECIES_SHINY_PAL(PUMPKABOO, gMonShinyPalette_Pumpkaboo), - SPECIES_SHINY_PAL(GOURGEIST, gMonShinyPalette_Gourgeist), + SPECIES_SHINY_PAL(PUMPKABOO_AVERAGE, gMonShinyPalette_Pumpkaboo), + SPECIES_SHINY_PAL(GOURGEIST_AVERAGE, gMonShinyPalette_Gourgeist), SPECIES_SHINY_PAL(BERGMITE, gMonShinyPalette_Bergmite), SPECIES_SHINY_PAL(AVALUGG, gMonShinyPalette_Avalugg), SPECIES_SHINY_PAL(NOIBAT, gMonShinyPalette_Noibat), SPECIES_SHINY_PAL(NOIVERN, gMonShinyPalette_Noivern), - SPECIES_SHINY_PAL(XERNEAS, gMonShinyPalette_Xerneas), + SPECIES_SHINY_PAL(XERNEAS_NEUTRAL, gMonShinyPalette_XerneasNeutral), SPECIES_SHINY_PAL(YVELTAL, gMonShinyPalette_Yveltal), - SPECIES_SHINY_PAL(ZYGARDE, gMonShinyPalette_Zygarde), + SPECIES_SHINY_PAL(ZYGARDE_50_AURA_BREAK, gMonShinyPalette_Zygarde50), SPECIES_SHINY_PAL(DIANCIE, gMonShinyPalette_Diancie), - SPECIES_SHINY_PAL(HOOPA, gMonShinyPalette_Hoopa), + SPECIES_SHINY_PAL(HOOPA_CONFINED, gMonShinyPalette_HoopaConfined), SPECIES_SHINY_PAL(VOLCANION, gMonShinyPalette_Volcanion), #endif #if P_GEN_7_POKEMON == TRUE @@ -748,12 +748,12 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(VIKAVOLT, gMonShinyPalette_Vikavolt), SPECIES_SHINY_PAL(CRABRAWLER, gMonShinyPalette_Crabrawler), SPECIES_SHINY_PAL(CRABOMINABLE, gMonShinyPalette_Crabominable), - SPECIES_SHINY_PAL(ORICORIO, gMonShinyPalette_Oricorio), + SPECIES_SHINY_PAL(ORICORIO_BAILE, gMonShinyPalette_OricorioBaile), SPECIES_SHINY_PAL(CUTIEFLY, gMonShinyPalette_Cutiefly), SPECIES_SHINY_PAL(RIBOMBEE, gMonShinyPalette_Ribombee), SPECIES_SHINY_PAL(ROCKRUFF, gMonShinyPalette_Rockruff), - SPECIES_SHINY_PAL(LYCANROC, gMonShinyPalette_Lycanroc), - SPECIES_SHINY_PAL(WISHIWASHI, gMonShinyPalette_Wishiwashi), + SPECIES_SHINY_PAL(LYCANROC_MIDDAY, gMonShinyPalette_LycanrocMidday), + SPECIES_SHINY_PAL(WISHIWASHI_SOLO, gMonShinyPalette_WishiwashiSolo), SPECIES_SHINY_PAL(MAREANIE, gMonShinyPalette_Mareanie), SPECIES_SHINY_PAL(TOXAPEX, gMonShinyPalette_Toxapex), SPECIES_SHINY_PAL(MUDBRAY, gMonShinyPalette_Mudbray), @@ -780,12 +780,12 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(PALOSSAND, gMonShinyPalette_Palossand), SPECIES_SHINY_PAL(PYUKUMUKU, gMonShinyPalette_Pyukumuku), SPECIES_SHINY_PAL(TYPE_NULL, gMonShinyPalette_TypeNull), - SPECIES_SHINY_PAL(SILVALLY, gMonShinyPalette_Silvally), - SPECIES_SHINY_PAL(MINIOR, gMonShinyPalette_Minior), + SPECIES_SHINY_PAL(SILVALLY_NORMAL, gMonShinyPalette_SilvallyNormal), + SPECIES_SHINY_PAL(MINIOR_METEOR_RED, gMonShinyPalette_MiniorMeteor), SPECIES_SHINY_PAL(KOMALA, gMonShinyPalette_Komala), SPECIES_SHINY_PAL(TURTONATOR, gMonShinyPalette_Turtonator), SPECIES_SHINY_PAL(TOGEDEMARU, gMonShinyPalette_Togedemaru), - SPECIES_SHINY_PAL(MIMIKYU, gMonShinyPalette_Mimikyu), + SPECIES_SHINY_PAL(MIMIKYU_DISGUISED, gMonShinyPalette_MimikyuDisguised), SPECIES_SHINY_PAL(BRUXISH, gMonShinyPalette_Bruxish), SPECIES_SHINY_PAL(DRAMPA, gMonShinyPalette_Drampa), SPECIES_SHINY_PAL(DHELMISE, gMonShinyPalette_Dhelmise), @@ -858,13 +858,13 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(ARROKUDA, gMonShinyPalette_Arrokuda), SPECIES_SHINY_PAL(BARRASKEWDA, gMonShinyPalette_Barraskewda), SPECIES_SHINY_PAL(TOXEL, gMonShinyPalette_Toxel), - SPECIES_SHINY_PAL(TOXTRICITY, gMonShinyPalette_Toxtricity), + SPECIES_SHINY_PAL(TOXTRICITY_AMPED, gMonShinyPalette_ToxtricityAmped), SPECIES_SHINY_PAL(SIZZLIPEDE, gMonShinyPalette_Sizzlipede), SPECIES_SHINY_PAL(CENTISKORCH, gMonShinyPalette_Centiskorch), SPECIES_SHINY_PAL(CLOBBOPUS, gMonShinyPalette_Clobbopus), SPECIES_SHINY_PAL(GRAPPLOCT, gMonShinyPalette_Grapploct), - SPECIES_SHINY_PAL(SINISTEA, gMonShinyPalette_Sinistea), - SPECIES_SHINY_PAL(POLTEAGEIST, gMonShinyPalette_Polteageist), + SPECIES_SHINY_PAL(SINISTEA_PHONY, gMonShinyPalette_Sinistea), + SPECIES_SHINY_PAL(POLTEAGEIST_PHONY, gMonShinyPalette_Polteageist), SPECIES_SHINY_PAL(HATENNA, gMonShinyPalette_Hatenna), SPECIES_SHINY_PAL(HATTREM, gMonShinyPalette_Hattrem), SPECIES_SHINY_PAL(HATTERENE, gMonShinyPalette_Hatterene), @@ -884,9 +884,9 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(SNOM, gMonShinyPalette_Snom), SPECIES_SHINY_PAL(FROSMOTH, gMonShinyPalette_Frosmoth), SPECIES_SHINY_PAL(STONJOURNER, gMonShinyPalette_Stonjourner), - SPECIES_SHINY_PAL(EISCUE, gMonShinyPalette_Eiscue), - SPECIES_SHINY_PAL(INDEEDEE, gMonShinyPalette_Indeedee), - SPECIES_SHINY_PAL(MORPEKO, gMonShinyPalette_Morpeko), + SPECIES_SHINY_PAL(EISCUE_ICE_FACE, gMonShinyPalette_EiscueIceFace), + SPECIES_SHINY_PAL(INDEEDEE_MALE, gMonShinyPalette_IndeedeeMale), + SPECIES_SHINY_PAL(MORPEKO_FULL_BELLY, gMonShinyPalette_MorpekoFullBelly), SPECIES_SHINY_PAL(CUFANT, gMonShinyPalette_Cufant), SPECIES_SHINY_PAL(COPPERAJAH, gMonShinyPalette_Copperajah), SPECIES_SHINY_PAL(DRACOZOLT, gMonShinyPalette_Dracozolt), @@ -897,11 +897,11 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(DREEPY, gMonShinyPalette_Dreepy), SPECIES_SHINY_PAL(DRAKLOAK, gMonShinyPalette_Drakloak), SPECIES_SHINY_PAL(DRAGAPULT, gMonShinyPalette_Dragapult), - SPECIES_SHINY_PAL(ZACIAN, gMonShinyPalette_Zacian), - SPECIES_SHINY_PAL(ZAMAZENTA, gMonShinyPalette_Zamazenta), + SPECIES_SHINY_PAL(ZACIAN_HERO_OF_MANY_BATTLES, gMonShinyPalette_ZacianHeroOfManyBattles), + SPECIES_SHINY_PAL(ZAMAZENTA_HERO_OF_MANY_BATTLES, gMonShinyPalette_ZamazentaHeroOfManyBattles), SPECIES_SHINY_PAL(ETERNATUS, gMonShinyPalette_Eternatus), SPECIES_SHINY_PAL(KUBFU, gMonShinyPalette_Kubfu), - SPECIES_SHINY_PAL(URSHIFU, gMonShinyPalette_Urshifu), + SPECIES_SHINY_PAL(URSHIFU_SINGLE_STRIKE_STYLE, gMonShinyPalette_UrshifuSingleStrikeStyle), SPECIES_SHINY_PAL(ZARUDE, gMonShinyPalette_Zarude), SPECIES_SHINY_PAL(REGIELEKI, gMonShinyPalette_Regieleki), SPECIES_SHINY_PAL(REGIDRAGO, gMonShinyPalette_Regidrago), @@ -911,10 +911,10 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(WYRDEER, gMonShinyPalette_Wyrdeer), SPECIES_SHINY_PAL(KLEAVOR, gMonShinyPalette_Kleavor), SPECIES_SHINY_PAL(URSALUNA, gMonShinyPalette_Ursaluna), - SPECIES_SHINY_PAL(BASCULEGION, gMonShinyPalette_Basculegion), + SPECIES_SHINY_PAL(BASCULEGION_MALE, gMonShinyPalette_BasculegionMale), SPECIES_SHINY_PAL(SNEASLER, gMonShinyPalette_Sneasler), SPECIES_SHINY_PAL(OVERQWIL, gMonShinyPalette_Overqwil), - SPECIES_SHINY_PAL(ENAMORUS, gMonShinyPalette_Enamorus), + SPECIES_SHINY_PAL(ENAMORUS_INCARNATE, gMonShinyPalette_EnamorusIncarnate), #endif SPECIES_SHINY_PAL(VENUSAUR_MEGA, gMonShinyPalette_VenusaurMega), @@ -1011,7 +1011,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(LINOONE_GALARIAN, gMonShinyPalette_LinooneGalarian), #if P_GEN_5_POKEMON == TRUE SPECIES_SHINY_PAL(DARUMAKA_GALARIAN, gMonShinyPalette_DarumakaGalarian), - SPECIES_SHINY_PAL(DARMANITAN_GALARIAN, gMonShinyPalette_DarmanitanGalarian), + SPECIES_SHINY_PAL(DARMANITAN_GALARIAN_STANDARD_MODE, gMonShinyPalette_DarmanitanGalarianStandardMode), SPECIES_SHINY_PAL(YAMASK_GALARIAN, gMonShinyPalette_YamaskGalarian), SPECIES_SHINY_PAL(STUNFISK_GALARIAN, gMonShinyPalette_StunfiskGalarian), #endif @@ -1140,7 +1140,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(BASCULIN_WHITE_STRIPED, gMonShinyPalette_BasculinWhiteStriped), SPECIES_SHINY_PAL(DARMANITAN_ZEN_MODE, gMonShinyPalette_DarmanitanZenMode), - SPECIES_SHINY_PAL(DARMANITAN_ZEN_MODE_GALARIAN, gMonShinyPalette_DarmanitanZenModeGalarian), + SPECIES_SHINY_PAL(DARMANITAN_GALARIAN_ZEN_MODE, gMonShinyPalette_DarmanitanGalarianZenMode), SPECIES_SHINY_PAL(DEERLING_SUMMER, gMonShinyPalette_DeerlingSummer), SPECIES_SHINY_PAL(DEERLING_AUTUMN, gMonShinyPalette_DeerlingAutumn), @@ -1232,7 +1232,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(ZYGARDE_10, gMonShinyPalette_Zygarde10), SPECIES_SHINY_PAL(ZYGARDE_10_POWER_CONSTRUCT, gMonShinyPalette_Zygarde10), - SPECIES_SHINY_PAL(ZYGARDE_50_POWER_CONSTRUCT, gMonShinyPalette_Zygarde), + SPECIES_SHINY_PAL(ZYGARDE_50_POWER_CONSTRUCT, gMonShinyPalette_Zygarde50), SPECIES_SHINY_PAL(ZYGARDE_COMPLETE, gMonShinyPalette_ZygardeComplete), SPECIES_SHINY_PAL(HOOPA_UNBOUND, gMonShinyPalette_HoopaUnbound), @@ -1268,12 +1268,12 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(SILVALLY_DARK, gMonShinyPalette_SilvallyDark), SPECIES_SHINY_PAL(SILVALLY_FAIRY, gMonShinyPalette_SilvallyFairy), - SPECIES_SHINY_PAL(MINIOR_METEOR_ORANGE, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_YELLOW, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_GREEN, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_BLUE, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_INDIGO, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_VIOLET, gMonShinyPalette_Minior), + SPECIES_SHINY_PAL(MINIOR_METEOR_ORANGE, gMonShinyPalette_MiniorMeteor), + SPECIES_SHINY_PAL(MINIOR_METEOR_YELLOW, gMonShinyPalette_MiniorMeteor), + SPECIES_SHINY_PAL(MINIOR_METEOR_GREEN, gMonShinyPalette_MiniorMeteor), + SPECIES_SHINY_PAL(MINIOR_METEOR_BLUE, gMonShinyPalette_MiniorMeteor), + SPECIES_SHINY_PAL(MINIOR_METEOR_INDIGO, gMonShinyPalette_MiniorMeteor), + SPECIES_SHINY_PAL(MINIOR_METEOR_VIOLET, gMonShinyPalette_MiniorMeteor), SPECIES_SHINY_PAL(MINIOR_CORE_RED, gMonShinyPalette_MiniorCore), SPECIES_SHINY_PAL(MINIOR_CORE_ORANGE, gMonShinyPalette_MiniorCore), SPECIES_SHINY_PAL(MINIOR_CORE_YELLOW, gMonShinyPalette_MiniorCore), @@ -1329,8 +1329,45 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = SPECIES_SHINY_PAL(CALYREX_ICE_RIDER, gMonShinyPalette_CalyrexIceRider), SPECIES_SHINY_PAL(CALYREX_SHADOW_RIDER, gMonShinyPalette_CalyrexShadowRider), - SPECIES_SHINY_PAL(BASCULEGION_FEMALE, gMonShinyPalette_BasculegionFemale), SPECIES_SHINY_PAL(ENAMORUS_THERIAN, gMonShinyPalette_EnamorusTherian), + + SPECIES_SHINY_PAL(BASCULEGION_FEMALE, gMonShinyPalette_BasculegionFemale), + + // Gigantamax Forms + SPECIES_SHINY_PAL(VENUSAUR_GIGANTAMAX, gMonShinyPalette_VenusaurGigantamax), + SPECIES_SHINY_PAL(CHARIZARD_GIGANTAMAX, gMonShinyPalette_CharizardGigantamax), + SPECIES_SHINY_PAL(BLASTOISE_GIGANTAMAX, gMonShinyPalette_BlastoiseGigantamax), + SPECIES_SHINY_PAL(BUTTERFREE_GIGANTAMAX, gMonShinyPalette_ButterfreeGigantamax), + SPECIES_SHINY_PAL(PIKACHU_GIGANTAMAX, gMonShinyPalette_PikachuGigantamax), + SPECIES_SHINY_PAL(MEOWTH_GIGANTAMAX, gMonShinyPalette_MeowthGigantamax), + SPECIES_SHINY_PAL(MACHAMP_GIGANTAMAX, gMonShinyPalette_MachampGigantamax), + SPECIES_SHINY_PAL(GENGAR_GIGANTAMAX, gMonShinyPalette_GengarGigantamax), + SPECIES_SHINY_PAL(KINGLER_GIGANTAMAX, gMonShinyPalette_KinglerGigantamax), + SPECIES_SHINY_PAL(LAPRAS_GIGANTAMAX, gMonShinyPalette_LaprasGigantamax), + SPECIES_SHINY_PAL(EEVEE_GIGANTAMAX, gMonShinyPalette_EeveeGigantamax), + SPECIES_SHINY_PAL(SNORLAX_GIGANTAMAX, gMonShinyPalette_SnorlaxGigantamax), + SPECIES_SHINY_PAL(GARBODOR_GIGANTAMAX, gMonShinyPalette_GarbodorGigantamax), + SPECIES_SHINY_PAL(MELMETAL_GIGANTAMAX, gMonShinyPalette_MelmetalGigantamax), + SPECIES_SHINY_PAL(RILLABOOM_GIGANTAMAX, gMonShinyPalette_RillaboomGigantamax), + SPECIES_SHINY_PAL(CINDERACE_GIGANTAMAX, gMonShinyPalette_CinderaceGigantamax), + SPECIES_SHINY_PAL(INTELEON_GIGANTAMAX, gMonShinyPalette_InteleonGigantamax), + SPECIES_SHINY_PAL(CORVIKNIGHT_GIGANTAMAX, gMonShinyPalette_CorviknightGigantamax), + SPECIES_SHINY_PAL(ORBEETLE_GIGANTAMAX, gMonShinyPalette_OrbeetleGigantamax), + SPECIES_SHINY_PAL(DREDNAW_GIGANTAMAX, gMonShinyPalette_DrednawGigantamax), + SPECIES_SHINY_PAL(COALOSSAL_GIGANTAMAX, gMonShinyPalette_CoalossalGigantamax), + SPECIES_SHINY_PAL(FLAPPLE_GIGANTAMAX, gMonShinyPalette_FlappleGigantamax), + SPECIES_SHINY_PAL(APPLETUN_GIGANTAMAX, gMonShinyPalette_AppletunGigantamax), + SPECIES_SHINY_PAL(SANDACONDA_GIGANTAMAX, gMonShinyPalette_SandacondaGigantamax), + SPECIES_SHINY_PAL(TOXTRICITY_AMPED_GIGANTAMAX, gMonShinyPalette_ToxtricityGigantamax), + SPECIES_SHINY_PAL(TOXTRICITY_LOW_KEY_GIGANTAMAX, gMonShinyPalette_ToxtricityGigantamax), + SPECIES_SHINY_PAL(CENTISKORCH_GIGANTAMAX, gMonShinyPalette_CentiskorchGigantamax), + SPECIES_SHINY_PAL(HATTERENE_GIGANTAMAX, gMonShinyPalette_HattereneGigantamax), + SPECIES_SHINY_PAL(GRIMMSNARL_GIGANTAMAX, gMonShinyPalette_GrimmsnarlGigantamax), + SPECIES_SHINY_PAL(ALCREMIE_GIGANTAMAX, gMonShinyPalette_AlcremieGigantamax), + SPECIES_SHINY_PAL(COPPERAJAH_GIGANTAMAX, gMonShinyPalette_CopperajahGigantamax), + SPECIES_SHINY_PAL(DURALUDON_GIGANTAMAX, gMonShinyPalette_DuraludonGigantamax), + SPECIES_SHINY_PAL(URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, gMonShinyPalette_UrshifuSingleStrikeGigantamax), + SPECIES_SHINY_PAL(URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, gMonShinyPalette_UrshifuRapidStrikeGigantamax), #endif SPECIES_SHINY_PAL(EGG, gMonPalette_Egg), }; diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 8ec4520e94..39fd8129b2 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -1,6 +1,6 @@ #if B_EXPANDED_MOVE_NAMES == TRUE // 16 letters -const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = +const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1] = { [MOVE_NONE] = _("-"), [MOVE_POUND] = _("Pound"), @@ -835,10 +835,64 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_MATCHA_GOTCHA] = _("Matcha Gotcha"), [MOVE_SYRUP_BOMB] = _("Syrup Bomb"), [MOVE_IVY_CUDGEL] = _("Ivy Cudgel"), + // Max Moves + [MOVE_MAX_GUARD] = _("Max Guard"), + [MOVE_MAX_STRIKE] = _("Max Strike"), + [MOVE_MAX_KNUCKLE] = _("Max Knuckle"), + [MOVE_MAX_AIRSTREAM] = _("Max Airstream"), + [MOVE_MAX_OOZE] = _("Max Ooze"), + [MOVE_MAX_QUAKE] = _("Max Quake"), + [MOVE_MAX_ROCKFALL] = _("Max Rockfall"), + [MOVE_MAX_FLUTTERBY] = _("Max Flutterby"), + [MOVE_MAX_PHANTASM] = _("Max Phantasm"), + [MOVE_MAX_STEELSPIKE] = _("Max Steelspike"), + [MOVE_MAX_FLARE] = _("Max Flare"), + [MOVE_MAX_GEYSER] = _("Max Geyser"), + [MOVE_MAX_OVERGROWTH] = _("Max Overgrowth"), + [MOVE_MAX_LIGHTNING] = _("Max Lightning"), + [MOVE_MAX_HAILSTORM] = _("Max Hailstorm"), + [MOVE_MAX_MINDSTORM] = _("Max Mindstorm"), + [MOVE_MAX_WYRMWIND] = _("Max Wyrmwind"), + [MOVE_MAX_DARKNESS] = _("Max Darkness"), + [MOVE_MAX_STARFALL] = _("Max Starfall"), + // Gigantamax Moves + [MOVE_G_MAX_VINE_LASH] = _("Gmax Vine Lash"), + [MOVE_G_MAX_WILDFIRE] = _("Gmax Wildfire"), + [MOVE_G_MAX_CANNONADE] = _("Gmax Cannonade"), + [MOVE_G_MAX_BEFUDDLE] = _("Gmax Befuddle"), + [MOVE_G_MAX_VOLT_CRASH] = _("Gmax Volt Crash"), + [MOVE_G_MAX_GOLD_RUSH] = _("Gmax Gold Rush"), + [MOVE_G_MAX_CHI_STRIKE] = _("Gmax Chi Strike"), + [MOVE_G_MAX_TERROR] = _("Gmax Terror"), + [MOVE_G_MAX_FOAM_BURST] = _("Gmax Foam Burst"), + [MOVE_G_MAX_RESONANCE] = _("Gmax Resonance"), + [MOVE_G_MAX_CUDDLE] = _("Gmax Cuddle"), + [MOVE_G_MAX_REPLENISH] = _("Gmax Replenish"), + [MOVE_G_MAX_MALODOR] = _("Gmax Malodor"), + [MOVE_G_MAX_MELTDOWN] = _("Gmax Meltdown"), + [MOVE_G_MAX_DRUM_SOLO] = _("Gmax Drum Solo"), + [MOVE_G_MAX_FIREBALL] = _("Gmax Fireball"), + [MOVE_G_MAX_HYDROSNIPE] = _("Gmax Hydrosnipe"), + [MOVE_G_MAX_WIND_RAGE] = _("Gmax Wind Rage"), + [MOVE_G_MAX_GRAVITAS] = _("Gmax Gravitas"), + [MOVE_G_MAX_STONESURGE] = _("Gmax Stonesurge"), + [MOVE_G_MAX_VOLCALITH] = _("Gmax Volcalith"), + [MOVE_G_MAX_TARTNESS] = _("Gmax Tartness"), + [MOVE_G_MAX_SWEETNESS] = _("Gmax Sweetness"), + [MOVE_G_MAX_SANDBLAST] = _("Gmax Sandblast"), + [MOVE_G_MAX_STUN_SHOCK] = _("Gmax Stun Shock"), + [MOVE_G_MAX_CENTIFERNO] = _("Gmax Centiferno"), + [MOVE_G_MAX_SMITE] = _("Gmax Smite"), + [MOVE_G_MAX_SNOOZE] = _("Gmax Snooze"), + [MOVE_G_MAX_FINALE] = _("Gmax Finale"), + [MOVE_G_MAX_STEELSURGE] = _("Gmax Steelsurge"), + [MOVE_G_MAX_DEPLETION] = _("Gmax Depletion"), + [MOVE_G_MAX_ONE_BLOW] = _("Gmax One Blow"), + [MOVE_G_MAX_RAPID_FLOW] = _("Gmax Rapid Flow"), }; #else // 12 letters -const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = +const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1] = { [MOVE_NONE] = _("-"), [MOVE_POUND] = _("Pound"), @@ -1673,6 +1727,60 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_MATCHA_GOTCHA] = _("MatchaGotcha"), [MOVE_SYRUP_BOMB] = _("Syrup Bomb"), [MOVE_IVY_CUDGEL] = _("Ivy Cudgel"), + // Max Moves + [MOVE_MAX_GUARD] = _("M-Guard"), + [MOVE_MAX_STRIKE] = _("M-Strike"), + [MOVE_MAX_KNUCKLE] = _("M-Knuckle"), + [MOVE_MAX_AIRSTREAM] = _("M-Airstream"), + [MOVE_MAX_OOZE] = _("M-Ooze"), + [MOVE_MAX_QUAKE] = _("M-Quake"), + [MOVE_MAX_ROCKFALL] = _("M-Rockfall"), + [MOVE_MAX_FLUTTERBY] = _("M-Flutterby"), + [MOVE_MAX_PHANTASM] = _("M-Phantasm"), + [MOVE_MAX_STEELSPIKE] = _("M-Steelspike"), + [MOVE_MAX_FLARE] = _("M-Flare"), + [MOVE_MAX_GEYSER] = _("M-Geyser"), + [MOVE_MAX_OVERGROWTH] = _("M-Overgrowth"), + [MOVE_MAX_LIGHTNING] = _("M-Lightning"), + [MOVE_MAX_HAILSTORM] = _("M-Hailstorm"), + [MOVE_MAX_MINDSTORM] = _("M-Mindstorm"), + [MOVE_MAX_WYRMWIND] = _("M-Wyrmwind"), + [MOVE_MAX_DARKNESS] = _("M-Darkness"), + [MOVE_MAX_STARFALL] = _("M-Starfall"), +// Gigantamax Moves + [MOVE_G_MAX_VINE_LASH] = _("G-Vine Lash"), + [MOVE_G_MAX_WILDFIRE] = _("G-Wildfire"), + [MOVE_G_MAX_CANNONADE] = _("G-Cannonade"), + [MOVE_G_MAX_BEFUDDLE] = _("G-Befuddle"), + [MOVE_G_MAX_VOLT_CRASH] = _("G-VoltCrash"), + [MOVE_G_MAX_GOLD_RUSH] = _("G-Gold Rush"), + [MOVE_G_MAX_CHI_STRIKE] = _("G-ChiStrike"), + [MOVE_G_MAX_TERROR] = _("G-Terror"), + [MOVE_G_MAX_FOAM_BURST] = _("G-FoamBurst"), + [MOVE_G_MAX_RESONANCE] = _("G-Resonance"), + [MOVE_G_MAX_CUDDLE] = _("G-Cuddle"), + [MOVE_G_MAX_REPLENISH] = _("G-Replenish"), + [MOVE_G_MAX_MALODOR] = _("G-Malodor"), + [MOVE_G_MAX_MELTDOWN] = _("G-Meltdown"), + [MOVE_G_MAX_DRUM_SOLO] = _("G-Drum Solo"), + [MOVE_G_MAX_FIREBALL] = _("G-Fireball"), + [MOVE_G_MAX_HYDROSNIPE] = _("G-Hydrsnipe"), + [MOVE_G_MAX_WIND_RAGE] = _("G-Wind Rage"), + [MOVE_G_MAX_GRAVITAS] = _("G-Gravitas"), + [MOVE_G_MAX_STONESURGE] = _("G-Stonesrge"), + [MOVE_G_MAX_VOLCALITH] = _("G-Volcalith"), + [MOVE_G_MAX_TARTNESS] = _("G-Tartness"), + [MOVE_G_MAX_SWEETNESS] = _("G-Sweetness"), + [MOVE_G_MAX_SANDBLAST] = _("G-Sandblast"), + [MOVE_G_MAX_STUN_SHOCK] = _("G-StunShock"), + [MOVE_G_MAX_CENTIFERNO] = _("G-Centiferno"), + [MOVE_G_MAX_SMITE] = _("G-Smite"), + [MOVE_G_MAX_SNOOZE] = _("G-Snooze"), + [MOVE_G_MAX_FINALE] = _("G-Finale"), + [MOVE_G_MAX_STEELSURGE] = _("G-Steelsrge"), + [MOVE_G_MAX_DEPLETION] = _("G-Depletion"), + [MOVE_G_MAX_ONE_BLOW] = _("G-One Blow"), + [MOVE_G_MAX_RAPID_FLOW] = _("G-Rapid Flow"), }; #endif @@ -1750,3 +1858,114 @@ const u8 *const gZMoveNames[] = [MOVE_LIGHT_THAT_BURNS_THE_SKY - FIRST_Z_MOVE] = sText_Light_That_Burns_The_Sky, [MOVE_SOUL_STEALING_7_STAR_STRIKE - FIRST_Z_MOVE] = sText_Soul_Stealing_7_Star_Strike, }; + +// Max Moves +static const u8 sText_Max_Guard[] = _("Max Guard"); +static const u8 sText_Max_Strike[] = _("Max Strike"); +static const u8 sText_Max_Knuckle[] = _("Max Knuckle"); +static const u8 sText_Max_Airstream[] = _("Max Airstream"); +static const u8 sText_Max_Ooze[] = _("Max Ooze"); +static const u8 sText_Max_Quake[] = _("Max Quake"); +static const u8 sText_Max_Rockfall[] = _("Max Rockfall"); +static const u8 sText_Max_Flutterby[] = _("Max Flutterby"); +static const u8 sText_Max_Phantasm[] = _("Max Phantasm"); +static const u8 sText_Max_Steelspike[] = _("Max Steelspike"); +static const u8 sText_Max_Flare[] = _("Max Flare"); +static const u8 sText_Max_Geyser[] = _("Max Geyser"); +static const u8 sText_Max_Overgrowth[] = _("Max Overgrowth"); +static const u8 sText_Max_Lightning[] = _("Max Lightning"); +static const u8 sText_Max_Hailstorm[] = _("Max Hailstorm"); +static const u8 sText_Max_Mindstorm[] = _("Max Mindstorm"); +static const u8 sText_Max_Wyrmwind[] = _("Max Wyrmwind"); +static const u8 sText_Max_Darkness[] = _("Max Darkness"); +static const u8 sText_Max_Starfall[] = _("Max Starfall"); +static const u8 sText_G_Max_Vine_Lash[] = _("G-Max Vine Lash"); +static const u8 sText_G_Max_Wildfire[] = _("G-Max Wildfire"); +static const u8 sText_G_Max_Cannonade[] = _("G-Max Cannonade"); +static const u8 sText_G_Max_Befuddle[] = _("G-Max Befuddle"); +static const u8 sText_G_Max_Volt_Crash[] = _("G-Max Volt Crash"); +static const u8 sText_G_Max_Gold_Rush[] = _("G-Max Gold Rush"); +static const u8 sText_G_Max_Chi_Strike[] = _("G-Max Chi Strike"); +static const u8 sText_G_Max_Terror[] = _("G-Max Terror"); +static const u8 sText_G_Max_Foam_Burst[] = _("G-Max Foam Burst"); +static const u8 sText_G_Max_Resonance[] = _("G-Max Resonance"); +static const u8 sText_G_Max_Cuddle[] = _("G-Max Cuddle"); +static const u8 sText_G_Max_Replenish[] = _("G-Max Replenish"); +static const u8 sText_G_Max_Malodor[] = _("G-Max Malodor"); +static const u8 sText_G_Max_Meltdown[] = _("G-Max Meltdown"); +static const u8 sText_G_Max_Drum_Solo[] = _("G-Max Drum Solo"); +static const u8 sText_G_Max_Fireball[] = _("G-Max Fireball"); +static const u8 sText_G_Max_Hydrosnipe[] = _("G-Max Hydrosnipe"); +static const u8 sText_G_Max_Wind_Rage[] = _("G-Max Wind Rage"); +static const u8 sText_G_Max_Gravitas[] = _("G-Max Gravitas"); +static const u8 sText_G_Max_Stonesurge[] = _("G-Max Stonesurge"); +static const u8 sText_G_Max_Volcalith[] = _("G-Max Volcalith"); +static const u8 sText_G_Max_Tartness[] = _("G-Max Tartness"); +static const u8 sText_G_Max_Sweetness[] = _("G-Max Sweetness"); +static const u8 sText_G_Max_Sandblast[] = _("G-Max Sandblast"); +static const u8 sText_G_Max_Stun_Shock[] = _("G-Max Stun Shock"); +static const u8 sText_G_Max_Centiferno[] = _("G-Max Centiferno"); +static const u8 sText_G_Max_Smite[] = _("G-Max Smite"); +static const u8 sText_G_Max_Snooze[] = _("G-Max Snooze"); +static const u8 sText_G_Max_Finale[] = _("G-Max Finale"); +static const u8 sText_G_Max_Steelsurge[] = _("G-Max Steelsurge"); +static const u8 sText_G_Max_Depletion[] = _("G-Max Depletion"); +static const u8 sText_G_Max_One_Blow[] = _("G-Max One Blow"); +static const u8 sText_G_Max_Rapid_Flow[] = _("G-Max Rapid Flow"); + +const u8 *const gMaxMoveNames[] = +{ + [MOVE_MAX_GUARD - FIRST_MAX_MOVE] = sText_Max_Guard, + [MOVE_MAX_STRIKE - FIRST_MAX_MOVE] = sText_Max_Strike, + [MOVE_MAX_KNUCKLE - FIRST_MAX_MOVE] = sText_Max_Knuckle, + [MOVE_MAX_AIRSTREAM - FIRST_MAX_MOVE] = sText_Max_Airstream, + [MOVE_MAX_OOZE - FIRST_MAX_MOVE] = sText_Max_Ooze, + [MOVE_MAX_QUAKE - FIRST_MAX_MOVE] = sText_Max_Quake, + [MOVE_MAX_ROCKFALL - FIRST_MAX_MOVE] = sText_Max_Rockfall, + [MOVE_MAX_FLUTTERBY - FIRST_MAX_MOVE] = sText_Max_Flutterby, + [MOVE_MAX_PHANTASM - FIRST_MAX_MOVE] = sText_Max_Phantasm, + [MOVE_MAX_STEELSPIKE - FIRST_MAX_MOVE] = sText_Max_Steelspike, + [MOVE_MAX_FLARE - FIRST_MAX_MOVE] = sText_Max_Flare, + [MOVE_MAX_GEYSER - FIRST_MAX_MOVE] = sText_Max_Geyser, + [MOVE_MAX_OVERGROWTH - FIRST_MAX_MOVE] = sText_Max_Overgrowth, + [MOVE_MAX_LIGHTNING - FIRST_MAX_MOVE] = sText_Max_Lightning, + [MOVE_MAX_HAILSTORM - FIRST_MAX_MOVE] = sText_Max_Hailstorm, + [MOVE_MAX_MINDSTORM - FIRST_MAX_MOVE] = sText_Max_Mindstorm, + [MOVE_MAX_WYRMWIND - FIRST_MAX_MOVE] = sText_Max_Wyrmwind, + [MOVE_MAX_DARKNESS - FIRST_MAX_MOVE] = sText_Max_Darkness, + [MOVE_MAX_STARFALL - FIRST_MAX_MOVE] = sText_Max_Starfall, + [MOVE_G_MAX_VINE_LASH - FIRST_MAX_MOVE] = sText_G_Max_Vine_Lash, + [MOVE_G_MAX_WILDFIRE - FIRST_MAX_MOVE] = sText_G_Max_Wildfire, + [MOVE_G_MAX_CANNONADE - FIRST_MAX_MOVE] = sText_G_Max_Cannonade, + [MOVE_G_MAX_BEFUDDLE - FIRST_MAX_MOVE] = sText_G_Max_Befuddle, + [MOVE_G_MAX_VOLT_CRASH - FIRST_MAX_MOVE] = sText_G_Max_Volt_Crash, + [MOVE_G_MAX_GOLD_RUSH - FIRST_MAX_MOVE] = sText_G_Max_Gold_Rush, + [MOVE_G_MAX_CHI_STRIKE - FIRST_MAX_MOVE] = sText_G_Max_Chi_Strike, + [MOVE_G_MAX_TERROR - FIRST_MAX_MOVE] = sText_G_Max_Terror, + [MOVE_G_MAX_FOAM_BURST - FIRST_MAX_MOVE] = sText_G_Max_Foam_Burst, + [MOVE_G_MAX_RESONANCE - FIRST_MAX_MOVE] = sText_G_Max_Resonance, + [MOVE_G_MAX_CUDDLE - FIRST_MAX_MOVE] = sText_G_Max_Cuddle, + [MOVE_G_MAX_REPLENISH - FIRST_MAX_MOVE] = sText_G_Max_Replenish, + [MOVE_G_MAX_MALODOR - FIRST_MAX_MOVE] = sText_G_Max_Malodor, + [MOVE_G_MAX_MELTDOWN - FIRST_MAX_MOVE] = sText_G_Max_Meltdown, + [MOVE_G_MAX_DRUM_SOLO - FIRST_MAX_MOVE] = sText_G_Max_Drum_Solo, + [MOVE_G_MAX_FIREBALL - FIRST_MAX_MOVE] = sText_G_Max_Fireball, + [MOVE_G_MAX_HYDROSNIPE - FIRST_MAX_MOVE] = sText_G_Max_Hydrosnipe, + [MOVE_G_MAX_WIND_RAGE - FIRST_MAX_MOVE] = sText_G_Max_Wind_Rage, + [MOVE_G_MAX_GRAVITAS - FIRST_MAX_MOVE] = sText_G_Max_Gravitas, + [MOVE_G_MAX_STONESURGE - FIRST_MAX_MOVE] = sText_G_Max_Stonesurge, + [MOVE_G_MAX_VOLCALITH - FIRST_MAX_MOVE] = sText_G_Max_Volcalith, + [MOVE_G_MAX_TARTNESS - FIRST_MAX_MOVE] = sText_G_Max_Tartness, + [MOVE_G_MAX_SWEETNESS - FIRST_MAX_MOVE] = sText_G_Max_Sweetness, + [MOVE_G_MAX_SANDBLAST - FIRST_MAX_MOVE] = sText_G_Max_Sandblast, + [MOVE_G_MAX_STUN_SHOCK - FIRST_MAX_MOVE] = sText_G_Max_Stun_Shock, + [MOVE_G_MAX_CENTIFERNO - FIRST_MAX_MOVE] = sText_G_Max_Centiferno, + [MOVE_G_MAX_SMITE - FIRST_MAX_MOVE] = sText_G_Max_Smite, + [MOVE_G_MAX_SNOOZE - FIRST_MAX_MOVE] = sText_G_Max_Snooze, + [MOVE_G_MAX_FINALE - FIRST_MAX_MOVE] = sText_G_Max_Finale, + [MOVE_G_MAX_STEELSURGE - FIRST_MAX_MOVE] = sText_G_Max_Steelsurge, + [MOVE_G_MAX_DEPLETION - FIRST_MAX_MOVE] = sText_G_Max_Depletion, + [MOVE_G_MAX_ONE_BLOW - FIRST_MAX_MOVE] = sText_G_Max_One_Blow, + [MOVE_G_MAX_RAPID_FLOW - FIRST_MAX_MOVE] = sText_G_Max_Rapid_Flow, +}; + \ No newline at end of file diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index e9aee3a06c..d9da9fd9e8 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -350,7 +350,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_ARMALDO] = _("Armaldo"), [SPECIES_FEEBAS] = _("Feebas"), [SPECIES_MILOTIC] = _("Milotic"), - [SPECIES_CASTFORM] = _("Castform"), + [SPECIES_CASTFORM_NORMAL] = _("Castform"), [SPECIES_KECLEON] = _("Kecleon"), [SPECIES_SHUPPET] = _("Shuppet"), [SPECIES_BANETTE] = _("Banette"), @@ -385,7 +385,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_GROUDON] = _("Groudon"), [SPECIES_RAYQUAZA] = _("Rayquaza"), [SPECIES_JIRACHI] = _("Jirachi"), - [SPECIES_DEOXYS] = _("Deoxys"), + [SPECIES_DEOXYS_NORMAL] = _("Deoxys"), #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = _("Turtwig"), [SPECIES_GROTLE] = _("Grotle"), @@ -412,8 +412,8 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_RAMPARDOS] = _("Rampardos"), [SPECIES_SHIELDON] = _("Shieldon"), [SPECIES_BASTIODON] = _("Bastiodon"), - [SPECIES_BURMY] = _("Burmy"), - [SPECIES_WORMADAM] = _("Wormadam"), + [SPECIES_BURMY_PLANT_CLOAK] = _("Burmy"), + [SPECIES_WORMADAM_PLANT_CLOAK] = _("Wormadam"), [SPECIES_MOTHIM] = _("Mothim"), [SPECIES_COMBEE] = _("Combee"), [SPECIES_VESPIQUEN] = _("Vespiquen"), @@ -421,9 +421,9 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_BUIZEL] = _("Buizel"), [SPECIES_FLOATZEL] = _("Floatzel"), [SPECIES_CHERUBI] = _("Cherubi"), - [SPECIES_CHERRIM] = _("Cherrim"), - [SPECIES_SHELLOS] = _("Shellos"), - [SPECIES_GASTRODON] = _("Gastrodon"), + [SPECIES_CHERRIM_OVERCAST] = _("Cherrim"), + [SPECIES_SHELLOS_WEST_SEA] = _("Shellos"), + [SPECIES_GASTRODON_WEST_SEA] = _("Gastrodon"), [SPECIES_AMBIPOM] = _("Ambipom"), [SPECIES_DRIFLOON] = _("Drifloon"), [SPECIES_DRIFBLIM] = _("Drifblim"), @@ -487,13 +487,13 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_PALKIA] = _("Palkia"), [SPECIES_HEATRAN] = _("Heatran"), [SPECIES_REGIGIGAS] = _("Regigigas"), - [SPECIES_GIRATINA] = _("Giratina"), + [SPECIES_GIRATINA_ALTERED] = _("Giratina"), [SPECIES_CRESSELIA] = _("Cresselia"), [SPECIES_PHIONE] = _("Phione"), [SPECIES_MANAPHY] = _("Manaphy"), [SPECIES_DARKRAI] = _("Darkrai"), - [SPECIES_SHAYMIN] = _("Shaymin"), - [SPECIES_ARCEUS] = _("Arceus"), + [SPECIES_SHAYMIN_LAND] = _("Shaymin"), + [SPECIES_ARCEUS_NORMAL] = _("Arceus"), #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = _("Victini"), @@ -552,12 +552,12 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_WHIMSICOTT] = _("Whimsicott"), [SPECIES_PETILIL] = _("Petilil"), [SPECIES_LILLIGANT] = _("Lilligant"), - [SPECIES_BASCULIN] = _("Basculin"), + [SPECIES_BASCULIN_RED_STRIPED] = _("Basculin"), [SPECIES_SANDILE] = _("Sandile"), [SPECIES_KROKOROK] = _("Krokorok"), [SPECIES_KROOKODILE] = _("Krookodile"), [SPECIES_DARUMAKA] = _("Darumaka"), - [SPECIES_DARMANITAN] = _("Darmanitan"), + [SPECIES_DARMANITAN_STANDARD_MODE] = _("Darmanitan"), [SPECIES_MARACTUS] = _("Maractus"), [SPECIES_DWEBBLE] = _("Dwebble"), [SPECIES_CRUSTLE] = _("Crustle"), @@ -587,8 +587,8 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_VANILLITE] = _("Vanillite"), [SPECIES_VANILLISH] = _("Vanillish"), [SPECIES_VANILLUXE] = _("Vanilluxe"), - [SPECIES_DEERLING] = _("Deerling"), - [SPECIES_SAWSBUCK] = _("Sawsbuck"), + [SPECIES_DEERLING_SPRING] = _("Deerling"), + [SPECIES_SAWSBUCK_SPRING] = _("Sawsbuck"), [SPECIES_EMOLGA] = _("Emolga"), [SPECIES_KARRABLAST] = _("Karrablast"), [SPECIES_ESCAVALIER] = _("Escavalier"), @@ -643,14 +643,14 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_COBALION] = _("Cobalion"), [SPECIES_TERRAKION] = _("Terrakion"), [SPECIES_VIRIZION] = _("Virizion"), - [SPECIES_TORNADUS] = _("Tornadus"), - [SPECIES_THUNDURUS] = _("Thundurus"), + [SPECIES_TORNADUS_INCARNATE] = _("Tornadus"), + [SPECIES_THUNDURUS_INCARNATE] = _("Thundurus"), [SPECIES_RESHIRAM] = _("Reshiram"), [SPECIES_ZEKROM] = _("Zekrom"), - [SPECIES_LANDORUS] = _("Landorus"), + [SPECIES_LANDORUS_INCARNATE] = _("Landorus"), [SPECIES_KYUREM] = _("Kyurem"), - [SPECIES_KELDEO] = _("Keldeo"), - [SPECIES_MELOETTA] = _("Meloetta"), + [SPECIES_KELDEO_ORDINARY] = _("Keldeo"), + [SPECIES_MELOETTA_ARIA] = _("Meloetta"), [SPECIES_GENESECT] = _("Genesect"), #endif #if P_GEN_6_POKEMON == TRUE @@ -670,22 +670,22 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_TALONFLAME] = _("Talonflame"), [SPECIES_SCATTERBUG] = _("Scatterbug"), [SPECIES_SPEWPA] = _("Spewpa"), - [SPECIES_VIVILLON] = _("Vivillon"), + [SPECIES_VIVILLON_ICY_SNOW] = _("Vivillon"), [SPECIES_LITLEO] = _("Litleo"), [SPECIES_PYROAR] = _("Pyroar"), - [SPECIES_FLABEBE] = _("Flabébé"), - [SPECIES_FLOETTE] = _("Floette"), - [SPECIES_FLORGES] = _("Florges"), + [SPECIES_FLABEBE_RED_FLOWER] = _("Flabébé"), + [SPECIES_FLOETTE_RED_FLOWER] = _("Floette"), + [SPECIES_FLORGES_RED_FLOWER] = _("Florges"), [SPECIES_SKIDDO] = _("Skiddo"), [SPECIES_GOGOAT] = _("Gogoat"), [SPECIES_PANCHAM] = _("Pancham"), [SPECIES_PANGORO] = _("Pangoro"), - [SPECIES_FURFROU] = _("Furfrou"), + [SPECIES_FURFROU_NATURAL] = _("Furfrou"), [SPECIES_ESPURR] = _("Espurr"), - [SPECIES_MEOWSTIC] = _("Meowstic"), + [SPECIES_MEOWSTIC_MALE] = _("Meowstic"), [SPECIES_HONEDGE] = _("Honedge"), [SPECIES_DOUBLADE] = _("Doublade"), - [SPECIES_AEGISLASH] = _("Aegislash"), + [SPECIES_AEGISLASH_SHIELD] = _("Aegislash"), [SPECIES_SPRITZEE] = _("Spritzee"), [SPECIES_AROMATISSE] = _("Aromatisse"), [SPECIES_SWIRLIX] = _("Swirlix"), @@ -714,17 +714,17 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_KLEFKI] = _("Klefki"), [SPECIES_PHANTUMP] = _("Phantump"), [SPECIES_TREVENANT] = _("Trevenant"), - [SPECIES_PUMPKABOO] = _("Pumpkaboo"), - [SPECIES_GOURGEIST] = _("Gourgeist"), + [SPECIES_PUMPKABOO_AVERAGE] = _("Pumpkaboo"), + [SPECIES_GOURGEIST_AVERAGE] = _("Gourgeist"), [SPECIES_BERGMITE] = _("Bergmite"), [SPECIES_AVALUGG] = _("Avalugg"), [SPECIES_NOIBAT] = _("Noibat"), [SPECIES_NOIVERN] = _("Noivern"), - [SPECIES_XERNEAS] = _("Xerneas"), + [SPECIES_XERNEAS_NEUTRAL] = _("Xerneas"), [SPECIES_YVELTAL] = _("Yveltal"), - [SPECIES_ZYGARDE] = _("Zygarde"), + [SPECIES_ZYGARDE_50_AURA_BREAK] = _("Zygarde"), [SPECIES_DIANCIE] = _("Diancie"), - [SPECIES_HOOPA] = _("Hoopa"), + [SPECIES_HOOPA_CONFINED] = _("Hoopa"), [SPECIES_VOLCANION] = _("Volcanion"), #endif #if P_GEN_7_POKEMON == TRUE @@ -747,12 +747,12 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_VIKAVOLT] = _("Vikavolt"), [SPECIES_CRABRAWLER] = _("Crabrawler"), [SPECIES_CRABOMINABLE] = _("Crabminabl"), - [SPECIES_ORICORIO] = _("Oricorio"), + [SPECIES_ORICORIO_BAILE] = _("Oricorio"), [SPECIES_CUTIEFLY] = _("Cutiefly"), [SPECIES_RIBOMBEE] = _("Ribombee"), [SPECIES_ROCKRUFF] = _("Rockruff"), - [SPECIES_LYCANROC] = _("Lycanroc"), - [SPECIES_WISHIWASHI] = _("Wishiwashi"), + [SPECIES_LYCANROC_MIDDAY] = _("Lycanroc"), + [SPECIES_WISHIWASHI_SOLO] = _("Wishiwashi"), [SPECIES_MAREANIE] = _("Mareanie"), [SPECIES_TOXAPEX] = _("Toxapex"), [SPECIES_MUDBRAY] = _("Mudbray"), @@ -779,12 +779,12 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_PALOSSAND] = _("Palossand"), [SPECIES_PYUKUMUKU] = _("Pyukumuku"), [SPECIES_TYPE_NULL] = _("Type: Null"), - [SPECIES_SILVALLY] = _("Silvally"), - [SPECIES_MINIOR] = _("Minior"), + [SPECIES_SILVALLY_NORMAL] = _("Silvally"), + [SPECIES_MINIOR_METEOR_RED] = _("Minior"), [SPECIES_KOMALA] = _("Komala"), [SPECIES_TURTONATOR] = _("Turtonator"), [SPECIES_TOGEDEMARU] = _("Togedemaru"), - [SPECIES_MIMIKYU] = _("Mimikyu"), + [SPECIES_MIMIKYU_DISGUISED] = _("Mimikyu"), [SPECIES_BRUXISH] = _("Bruxish"), [SPECIES_DRAMPA] = _("Drampa"), [SPECIES_DHELMISE] = _("Dhelmise"), @@ -857,13 +857,13 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_ARROKUDA] = _("Arrokuda"), [SPECIES_BARRASKEWDA] = _("Barraskewd"), [SPECIES_TOXEL] = _("Toxel"), - [SPECIES_TOXTRICITY] = _("Toxtricity"), + [SPECIES_TOXTRICITY_AMPED] = _("Toxtricity"), [SPECIES_SIZZLIPEDE] = _("Sizzlipede"), [SPECIES_CENTISKORCH] = _("Centiskorc"), [SPECIES_CLOBBOPUS] = _("Clobbopus"), [SPECIES_GRAPPLOCT] = _("Grapploct"), - [SPECIES_SINISTEA] = _("Sinistea"), - [SPECIES_POLTEAGEIST] = _("Polteageis"), + [SPECIES_SINISTEA_PHONY] = _("Sinistea"), + [SPECIES_POLTEAGEIST_PHONY] = _("Polteageis"), [SPECIES_HATENNA] = _("Hatenna"), [SPECIES_HATTREM] = _("Hattrem"), [SPECIES_HATTERENE] = _("Hatterene"), @@ -877,15 +877,15 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_MR_RIME] = _("Mr. Rime"), [SPECIES_RUNERIGUS] = _("Runerigus"), [SPECIES_MILCERY] = _("Milcery"), - [SPECIES_ALCREMIE] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = _("Alcremie"), [SPECIES_FALINKS] = _("Falinks"), [SPECIES_PINCURCHIN] = _("Pincurchin"), [SPECIES_SNOM] = _("Snom"), [SPECIES_FROSMOTH] = _("Frosmoth"), [SPECIES_STONJOURNER] = _("Stonjourne"), - [SPECIES_EISCUE] = _("Eiscue"), - [SPECIES_INDEEDEE] = _("Indeedee"), - [SPECIES_MORPEKO] = _("Morpeko"), + [SPECIES_EISCUE_ICE_FACE] = _("Eiscue"), + [SPECIES_INDEEDEE_MALE] = _("Indeedee"), + [SPECIES_MORPEKO_FULL_BELLY] = _("Morpeko"), [SPECIES_CUFANT] = _("Cufant"), [SPECIES_COPPERAJAH] = _("Copperajah"), [SPECIES_DRACOZOLT] = _("Dracozolt"), @@ -896,11 +896,11 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_DREEPY] = _("Dreepy"), [SPECIES_DRAKLOAK] = _("Drakloak"), [SPECIES_DRAGAPULT] = _("Dragapult"), - [SPECIES_ZACIAN] = _("Zacian"), - [SPECIES_ZAMAZENTA] = _("Zamazenta"), + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = _("Zacian"), + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = _("Zamazenta"), [SPECIES_ETERNATUS] = _("Eternatus"), [SPECIES_KUBFU] = _("Kubfu"), - [SPECIES_URSHIFU] = _("Urshifu"), + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = _("Urshifu"), [SPECIES_ZARUDE] = _("Zarude"), [SPECIES_REGIELEKI] = _("Regieleki"), [SPECIES_REGIDRAGO] = _("Regidrago"), @@ -910,10 +910,10 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_WYRDEER] = _("Wyrdeer"), [SPECIES_KLEAVOR] = _("Kleavor"), [SPECIES_URSALUNA] = _("Ursaluna"), - [SPECIES_BASCULEGION] = _("Bsculegion"), + [SPECIES_BASCULEGION_MALE] = _("Bsculegion"), [SPECIES_SNEASLER] = _("Sneasler"), [SPECIES_OVERQWIL] = _("Overqwil"), - [SPECIES_ENAMORUS] = _("Enamorus"), + [SPECIES_ENAMORUS_INCARNATE] = _("Enamorus"), #endif // Megas @@ -1013,7 +1013,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_LINOONE_GALARIAN] = _("Linoone"), #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = _("Darumaka"), - [SPECIES_DARMANITAN_GALARIAN] = _("Darmanitan"), + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = _("Darmanitan"), [SPECIES_YAMASK_GALARIAN] = _("Yamask"), [SPECIES_STUNFISK_GALARIAN] = _("Stunfisk"), #endif @@ -1146,7 +1146,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { [SPECIES_BASCULIN_WHITE_STRIPED] = _("Basculin"), // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = _("Darmanitan"), - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = _("Darmanitan"), + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = _("Darmanitan"), // Deerling [SPECIES_DEERLING_SUMMER] = _("Deerling"), [SPECIES_DEERLING_AUTUMN] = _("Deerling"), @@ -1238,7 +1238,7 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { // Xerneas [SPECIES_XERNEAS_ACTIVE] = _("Xerneas"), // Zygarde - [SPECIES_ZYGARDE_10] = _("Zygarde"), + [SPECIES_ZYGARDE_10_AURA_BREAK] = _("Zygarde"), [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = _("Zygarde"), [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = _("Zygarde"), [SPECIES_ZYGARDE_COMPLETE] = _("Zygarde"), @@ -1309,14 +1309,14 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE] = _("Polteageis"), // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_MATCHA_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_MINT_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_LEMON_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_SALTED_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_RUBY_SWIRL] = _("Alcremie"), - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = _("Alcremie"), - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = _("Alcremie"), + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = _("Alcremie"), // Eiscue [SPECIES_EISCUE_NOICE_FACE] = _("Eiscue"), // Indeedee @@ -1336,6 +1336,42 @@ const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { // Calyrex [SPECIES_CALYREX_ICE_RIDER] = _("Calyrex"), [SPECIES_CALYREX_SHADOW_RIDER] = _("Calyrex"), + // Basculegion [SPECIES_BASCULEGION_FEMALE] = _("Bsculegion"), + // Gigantamax Forms + [SPECIES_VENUSAUR_GIGANTAMAX] = _("Venusaur"), + [SPECIES_CHARIZARD_GIGANTAMAX] = _("Charizard"), + [SPECIES_BLASTOISE_GIGANTAMAX] = _("Blastoise"), + [SPECIES_BUTTERFREE_GIGANTAMAX] = _("Butterfree"), + [SPECIES_PIKACHU_GIGANTAMAX] = _("Pikachu"), + [SPECIES_MEOWTH_GIGANTAMAX] = _("Meowth"), + [SPECIES_MACHAMP_GIGANTAMAX] = _("Machamp"), + [SPECIES_GENGAR_GIGANTAMAX] = _("Gengar"), + [SPECIES_KINGLER_GIGANTAMAX] = _("Kingler"), + [SPECIES_LAPRAS_GIGANTAMAX] = _("Lapras"), + [SPECIES_EEVEE_GIGANTAMAX] = _("Eevee"), + [SPECIES_SNORLAX_GIGANTAMAX] = _("Snorlax"), + [SPECIES_GARBODOR_GIGANTAMAX] = _("Garbodor"), + [SPECIES_MELMETAL_GIGANTAMAX] = _("Melmetal"), + [SPECIES_RILLABOOM_GIGANTAMAX] = _("Rillaboom"), + [SPECIES_CINDERACE_GIGANTAMAX] = _("Cinderace"), + [SPECIES_INTELEON_GIGANTAMAX] = _("Inteleon"), + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = _("Corviknigh"), + [SPECIES_ORBEETLE_GIGANTAMAX] = _("Orbeetle"), + [SPECIES_DREDNAW_GIGANTAMAX] = _("Drednaw"), + [SPECIES_COALOSSAL_GIGANTAMAX] = _("Coalossal"), + [SPECIES_FLAPPLE_GIGANTAMAX] = _("Flapple"), + [SPECIES_APPLETUN_GIGANTAMAX] = _("Appletun"), + [SPECIES_SANDACONDA_GIGANTAMAX] = _("Sandaconda"), + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = _("Toxtricity"), + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = _("Toxtricity"), + [SPECIES_CENTISKORCH_GIGANTAMAX] = _("Centiskorc"), + [SPECIES_HATTERENE_GIGANTAMAX] = _("Hatterene"), + [SPECIES_GRIMMSNARL_GIGANTAMAX] = _("Grimmsnarl"), + [SPECIES_ALCREMIE_GIGANTAMAX] = _("Alcremie"), + [SPECIES_COPPERAJAH_GIGANTAMAX] = _("Copperajah"), + [SPECIES_DURALUDON_GIGANTAMAX] = _("Duraludon"), + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = _("Urshifu"), + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = _("Urshifu"), #endif }; diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index ed53a181dd..b3128781c4 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -5443,7 +5443,7 @@ static const struct TrainerMon sParty_Angelica[] = { { .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), .lvl = 30, - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_RAIN_DANCE, MOVE_WEATHER_BALL, MOVE_THUNDER, MOVE_WATER_PULSE} } }; @@ -6224,7 +6224,7 @@ static const struct TrainerMon sParty_Jonas[] = { static const struct TrainerMon sParty_Kayley[] = { { .lvl = 31, - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_SUNNY_DAY, MOVE_WEATHER_BALL, MOVE_FLAMETHROWER, MOVE_SOLAR_BEAM} } }; diff --git a/src/daycare.c b/src/daycare.c index 3389903808..b00512ca03 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1053,7 +1053,7 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent else if (eggSpecies == SPECIES_MANAPHY) eggSpecies = SPECIES_PHIONE; else if (eggSpecies == SPECIES_SINISTEA_ANTIQUE) - eggSpecies = SPECIES_SINISTEA; + eggSpecies = SPECIES_SINISTEA_PHONY; else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_VIVILLON) eggSpecies = SPECIES_SCATTERBUG; else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_ROTOM) @@ -1076,7 +1076,7 @@ static void _GiveEggFromDaycare(struct DayCare *daycare) { struct Pokemon egg; u16 species; - u8 parentSlots[DAYCARE_MON_COUNT]; + u8 parentSlots[DAYCARE_MON_COUNT] = {0}; bool8 isEgg; species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots); diff --git a/src/debug.c b/src/debug.c index d1f3b2a48d..3d8d6f33bc 100644 --- a/src/debug.c +++ b/src/debug.c @@ -9,6 +9,7 @@ #include "global.h" #include "battle.h" #include "battle_setup.h" +#include "clock.h" #include "coins.h" #include "credits.h" #include "data.h" @@ -82,6 +83,7 @@ enum { // Util DEBUG_UTIL_MENU_ITEM_WARP, DEBUG_UTIL_MENU_ITEM_POISON_MONS, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK, + DEBUG_UTIL_MENU_ITEM_ROM_SPACE, DEBUG_UTIL_MENU_ITEM_WEATHER, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, @@ -302,6 +304,7 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId); static void DebugAction_FlagsVars_RunningShoes(u8 taskId); static void DebugAction_Util_PoisonMons(u8 taskId); static void DebugAction_Util_CheckSaveBlock(u8 taskId); +static void DebugAction_Util_CheckROMSpace(u8 taskId); static void DebugAction_Util_Weather(u8 taskId); static void DebugAction_Util_Weather_SelectId(u8 taskId); static void DebugAction_Util_CheckWallClock(u8 taskId); @@ -389,6 +392,7 @@ extern const u8 Debug_HatchAnEgg[]; extern const u8 PlayersHouse_2F_EventScript_SetWallClock[]; extern const u8 PlayersHouse_2F_EventScript_CheckWallClock[]; extern const u8 Debug_CheckSaveBlock[]; +extern const u8 Debug_CheckROMSpace[]; extern const u8 Debug_BoxFilledMessage[]; #include "data/map_group_count.h" @@ -431,6 +435,7 @@ static const u8 sDebugText_Util_WarpToMap_SelectWarp[] = _("Warp:{CLEAR_TO 90 static const u8 sDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); static const u8 sDebugText_Util_PoisonMons[] = _("Poison all mons"); static const u8 sDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_ROMSpace[] = _("ROM Space…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Util_Weather[] = _("Set weather…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Util_Weather_ID[] = _("Weather Id: {STR_VAR_3}\n{STR_VAR_1}\n{STR_VAR_2}"); static const u8 sDebugText_Util_CheckWallClock[] = _("Check Wall Clock…{CLEAR_TO 110}{RIGHT_ARROW}"); @@ -594,6 +599,7 @@ static const struct ListMenuItem sDebugMenu_Items_Utilities[] = [DEBUG_UTIL_MENU_ITEM_WARP] = {sDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {sDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {sDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, + [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = {sDebugText_Util_ROMSpace, DEBUG_UTIL_MENU_ITEM_ROM_SPACE}, [DEBUG_UTIL_MENU_ITEM_WEATHER] = {sDebugText_Util_Weather, DEBUG_UTIL_MENU_ITEM_WEATHER}, [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {sDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {sDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, @@ -727,6 +733,7 @@ static void (*const sDebugMenu_Actions_Utilities[])(u8) = [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = DebugAction_Util_PoisonMons, [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, + [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = DebugAction_Util_CheckROMSpace, [DEBUG_UTIL_MENU_ITEM_WEATHER] = DebugAction_Util_Weather, [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, @@ -1799,6 +1806,7 @@ void CheckSaveBlock1Size(struct ScriptContext *ctx) u32 maxSb1Size = SECTOR_DATA_SIZE * (SECTOR_ID_SAVEBLOCK1_END - SECTOR_ID_SAVEBLOCK1_START + 1); ConvertIntToDecimalStringN(gStringVar1, currSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, maxSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, maxSb1Size - currSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); } void CheckSaveBlock2Size(struct ScriptContext *ctx) @@ -1807,6 +1815,7 @@ void CheckSaveBlock2Size(struct ScriptContext *ctx) u32 maxSb2Size = SECTOR_DATA_SIZE; ConvertIntToDecimalStringN(gStringVar1, currSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, maxSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, maxSb2Size - currSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); } void CheckPokemonStorageSize(struct ScriptContext *ctx) @@ -1815,6 +1824,7 @@ void CheckPokemonStorageSize(struct ScriptContext *ctx) u32 maxPkmnStorageSize = SECTOR_DATA_SIZE * (SECTOR_ID_PKMN_STORAGE_END - SECTOR_ID_PKMN_STORAGE_START + 1); ConvertIntToDecimalStringN(gStringVar1, currPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, maxPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, maxPkmnStorageSize - currPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); } static void DebugAction_Util_CheckSaveBlock(u8 taskId) @@ -1824,6 +1834,61 @@ static void DebugAction_Util_CheckSaveBlock(u8 taskId) ScriptContext_SetupScript(Debug_CheckSaveBlock); } +enum RoundMode +{ + ROUND_CEILING, + ROUND_NEAREST, + ROUND_FLOOR, +}; + +static u8 *ConvertQ22_10ToDecimalString(u8 *string, u32 q22_10, u32 decimalDigits, enum RoundMode roundMode) +{ + string = ConvertIntToDecimalStringN(string, q22_10 >> 10, STR_CONV_MODE_LEFT_ALIGN, 10); + + if (decimalDigits == 0) + return string; + + *string++ = CHAR_PERIOD; + + q22_10 &= (1 << 10) - 1; + while (decimalDigits-- > 1) + { + q22_10 *= 10; + *string++ = CHAR_0 + (q22_10 >> 10); + q22_10 &= (1 << 10) - 1; + } + + q22_10 *= 10; + switch (roundMode) + { + case ROUND_CEILING: q22_10 += (1 << 10) - 1; break; + case ROUND_NEAREST: q22_10 += 1 << (10 - 1); break; + case ROUND_FLOOR: break; + } + *string++ = CHAR_0 + (q22_10 >> 10); + + *string++ = EOS; + + return string; +} + +void CheckROMSize(struct ScriptContext *ctx) +{ + extern u8 __rom_end[]; + u32 currROMSizeB = __rom_end - (const u8 *)ROM_START; + u32 currROMSizeKB = (currROMSizeB + 1023) / 1024; + u32 currROMFreeKB = ((const u8 *)ROM_END - __rom_end) / 1024; + ConvertQ22_10ToDecimalString(gStringVar1, currROMSizeKB, 2, ROUND_CEILING); + ConvertQ22_10ToDecimalString(gStringVar2, currROMFreeKB, 2, ROUND_FLOOR); +} + +static void DebugAction_Util_CheckROMSpace(u8 taskId) +{ + Debug_DestroyMenu_Full(taskId); + LockPlayerFieldControls(); + ScriptContext_SetupScript(Debug_CheckROMSpace); +} + static const u8 sWeatherNames[22][24] = { [WEATHER_NONE] = _("NONE"), [WEATHER_SUNNY_CLOUDS] = _("SUNNY CLOUDS"), @@ -1969,6 +2034,7 @@ static void DebugAction_Util_Clear_Boxes(u8 taskId) } static void DebugAction_Util_CheatStart(u8 taskId) { + InitTimeBasedEvents(); Debug_DestroyMenu_Full_Script(taskId, Debug_CheatStart); } static void DebugAction_Util_HatchAnEgg(u8 taskId) diff --git a/src/graphics.c b/src/graphics.c index 00bcea0564..d152d081c0 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -448,6 +448,9 @@ const u32 gBattleAnimSpritePal_SpinningBall2[] = INCBIN_U32("graphics/battle_ani const u32 gBattleAnimSpriteGfx_WoodHammerHammer[] = INCBIN_U32("graphics/battle_anims/sprites/wood_hammer_hammer.4bpp.lz"); const u32 gBattleAnimSpritePal_WoodHammerHammer[] = INCBIN_U32("graphics/battle_anims/sprites/wood_hammer_hammer.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.4bpp.lz"); +const u32 gBattleAnimSpritePal_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.gbapal.lz"); + // old battle interface data, unused const u32 gOldBattleInterfaceGfx[] = INCBIN_U32("graphics/unused/obi1.4bpp.lz"); @@ -1739,41 +1742,6 @@ const u16 gPokedexSearchMenu_Pal[] = INCBIN_U16("graphics/pokedex/search_menu.gb const u32 gPokedexSearchMenu_Gfx[] = INCBIN_U32("graphics/pokedex/search_menu.4bpp.lz"); const u32 gPokedexSearchMenuNational_Tilemap[] = INCBIN_U32("graphics/pokedex/search_menu_national.bin.lz"); const u32 gPokedexSearchMenuHoenn_Tilemap[] = INCBIN_U32("graphics/pokedex/search_menu_hoenn.bin.lz"); -// Pokedex HGSS -#if POKEDEX_PLUS_HGSS == TRUE -const u16 gPokedexPlusHGSS_Default_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_default.gbapal"); -const u16 gPokedexPlusHGSS_National_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_national.gbapal"); -const u16 gPokedexPlusHGSS_MenuSearch_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_menu.gbapal"); -const u16 gPokedexPlusHGSS_SearchResults_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_results.gbapal"); -const u16 gPokedexPlusHGSS_Default_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_default_dark.gbapal"); -const u16 gPokedexPlusHGSS_National_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_national_dark.gbapal"); -const u16 gPokedexPlusHGSS_MenuSearch_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_menu_dark.gbapal"); -const u16 gPokedexPlusHGSS_SearchResults_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_results_dark.gbapal"); -const u32 gPokedexPlusHGSS_MenuList_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_list.4bpp.lz"); -const u32 gPokedexPlusHGSS_MenuList_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_list_DECA.4bpp.lz"); -const u32 gPokedexPlusHGSS_Interface_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_interface.4bpp.lz"); -const u32 gPokedexPlusHGSS_Interface_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_interface_DECA.4bpp.lz"); -const u32 gPokedexPlusHGSS_Menu_1_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu1.4bpp.lz"); -const u32 gPokedexPlusHGSS_Menu_2_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu2.4bpp.lz"); -const u32 gPokedexPlusHGSS_Menu_3_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu3.4bpp.lz"); -const u32 gPokedexPlusHGSS_MenuSearch_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_search.4bpp.lz"); -const u32 gPokedexPlusHGSS_MenuSearch_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_search_DECA.4bpp.lz"); -const u32 gPokedexPlusHGSS_StartMenuMain_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_start_menu.bin.lz"); -const u32 gPokedexPlusHGSS_StartMenuSearchResults_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_start_menu_search_results.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar_clear.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenList_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_list_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenListUnderlay_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_list_screen_underlay.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenInfo_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_info_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenStats_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_stats_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenEvolution_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_evo_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenEvolution_Tilemap_PE[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_evo_screen_PE.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenForms_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_forms_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenCry_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_cry_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenSize_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_size_screen.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenSearchHoenn_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_hoenn.bin.lz"); -const u32 gPokedexPlusHGSS_ScreenSearchNational_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_national.bin.lz"); -#endif const u16 gSummaryScreen_MoveEffect_Battle_Tilemap[] = INCBIN_U16("graphics/summary_screen/effect_battle.bin"); const u16 gSummaryScreen_MoveEffect_Contest_Tilemap[] = INCBIN_U16("graphics/summary_screen/effect_contest.bin"); diff --git a/src/pokedex.c b/src/pokedex.c index 308c078c22..487413e4b6 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1591,10 +1591,11 @@ static void ResetPokedexView(struct PokedexView *pokedexView) void CB2_OpenPokedex(void) { -#if POKEDEX_PLUS_HGSS == TRUE - CB2_OpenPokedexPlusHGSS(); - return; -#endif + if (POKEDEX_PLUS_HGSS) + { + CB2_OpenPokedexPlusHGSS(); + return; + } switch (gMain.state) { @@ -3944,11 +3945,10 @@ static void HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) u8 DisplayCaughtMonDexPage(u16 dexNum, u32 otId, u32 personality) { u8 taskId = 0; - #if POKEDEX_PLUS_HGSS + if (POKEDEX_PLUS_HGSS) taskId = CreateTask(Task_DisplayCaughtMonDexPageHGSS, 0); - #else + else taskId = CreateTask(Task_DisplayCaughtMonDexPage, 0); - #endif // POKEDEX_PLUS_HGSS gTasks[taskId].tState = 0; gTasks[taskId].tDexNum = dexNum; diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index be5633294e..65df818263 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -47,7 +47,6 @@ #include "constants/rgb.h" #include "constants/songs.h" -#if POKEDEX_PLUS_HGSS == TRUE enum { @@ -117,7 +116,6 @@ enum NAME_YZ, }; - extern const u8 *const gMonFootprintTable[]; extern const u16 gPokedexOrder_Alphabetical[]; extern const u16 gPokedexOrder_Height[]; @@ -125,6 +123,7 @@ extern const u16 gPokedexOrder_Weight[]; extern const struct Evolution gEvolutionTable[][EVOS_PER_MON]; extern const struct PokedexEntry gPokedexEntries[]; +// static .rodata strings static const u8 sText_No000[] = _("{NO}000"); static const u8 sCaughtBall_Gfx[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp"); @@ -133,6 +132,166 @@ ALIGNED(4) static const u8 sExpandedPlaceholder_PokedexDescription[] = _(""); static const u16 sSizeScreenSilhouette_Pal[] = INCBIN_U16("graphics/pokedex/size_silhouette.gbapal"); static const u8 sText_TenDashes2[] = _("----------"); +static const u8 sText_Stats_Buttons[] = _("{A_BUTTON}TOGGLE {DPAD_UPDOWN}MOVES"); +static const u8 sText_Stats_Buttons_Decapped[] = _("{A_BUTTON}Toggle {DPAD_UPDOWN}Moves"); +static const u8 sText_Stats_HP[] = _("HP"); +static const u8 sText_Stats_Attack[] = _("ATK"); +static const u8 sText_Stats_Defense[] = _("DEF"); +static const u8 sText_Stats_Speed[] = _("SPE"); +static const u8 sText_Stats_SpAttack[] = _("SP.A"); +static const u8 sText_Stats_SpDefense[] = _("SP.D"); +static const u8 sText_Stats_EV_Plus1[] = _("{UP_ARROW_2}"); +static const u8 sText_Stats_EV_Plus2[] = _("{UP_ARROW_2}{UP_ARROW_2}"); +static const u8 sText_Stats_EV_Plus3[] = _("{UP_ARROW_2}{UP_ARROW_2}{UP_ARROW_2}"); +static const u8 sText_Stats_EvStr1Str2[] = _("{STR_VAR_1}{STR_VAR_2}"); +static const u8 sText_Stats_MoveSelectedMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); +static const u8 sText_Stats_MoveLevel[] = _("LVL"); +static const u8 sText_Stats_Gender_0[] = _("♂"); +static const u8 sText_Stats_Gender_12_5[] = _("♀ 1/7 ♂"); //_("♀ 12.5 / 87.5 ♂"); +static const u8 sText_Stats_Gender_25[] = _("♀ 1/3 ♂"); //_("♀ 25 / 75 ♂"); +static const u8 sText_Stats_Gender_50[] = _("♀ 1/1 ♂"); //_("♀ 50 / 50 ♂"); +static const u8 sText_Stats_Gender_75[] = _("♀ 3/1 ♂"); //_("♀ 75 / 25 ♂"); +static const u8 sText_Stats_Gender_87_5[] = _("♀ 7/1 ♂"); +static const u8 sText_Stats_Gender_100[] = _("♀"); +static const u8 sText_Stats_CatchRate[] = _("CATCH{0x5B}: "); +static const u8 sText_Stats_CatchRate_Legend[] = _("LEGENDARY"); +static const u8 sText_Stats_CatchRate_VeryHard[] = _("VERY HARD"); +static const u8 sText_Stats_CatchRate_Difficult[] = _("DIFFICULT"); +static const u8 sText_Stats_CatchRate_Medium[] = _("MEDIUM"); +static const u8 sText_Stats_CatchRate_Relaxed[] = _("RELAXED"); +static const u8 sText_Stats_CatchRate_Easy[] = _("EASY"); +static const u8 sText_Stats_ExpYield[] = _("EXP YIELD: "); +static const u8 sText_Stats_EggCycles[] = _("HATCH STEPS:"); +static const u8 sText_Stats_EggCycles_VeryFast[] = _("{EMOJI_BOLT}{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_EggCycles_Fast[] = _("{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_EggCycles_Normal[] = _("{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_EggCycles_Slow[] = _("{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_Growthrate[] = _("GROW: "); +static const u8 sText_Stats_Friendship[] = _("FRIENDSHIP:"); +static const u8 sText_Stats_Friendship_BigAnger[] = _("{EMOJI_BIGANGER}"); +static const u8 sText_Stats_Friendship_Neutral[] = _("{EMOJI_NEUTRAL}"); +static const u8 sText_Stats_Friendship_Happy[] = _("{EMOJI_HAPPY}"); +static const u8 sText_Stats_Friendship_BigSmile[] = _("{EMOJI_BIGSMILE}"); +static const u8 sText_Stats_MEDIUM_FAST[] = _("MED. FAST"); +static const u8 sText_Stats_ERRATIC[] = _("ERRATIC"); +static const u8 sText_Stats_FLUCTUATING[] = _("FLUCTUATING"); +static const u8 sText_Stats_MEDIUM_SLOW[] = _("MED. SLOW"); +static const u8 sText_Stats_FAST[] = _("FAST"); +static const u8 sText_Stats_SLOW[] = _("SLOW"); +static const u8 sText_Stats_ContestHeart[] = _("H"); +static const u8 sText_Stats_Minus[] = _("-"); +static const u8 sText_Stats_eggGroup[] = _("EGG G1:"); +static const u8 sText_Stats_eggGroup_Groups[] = _("{STR_VAR_1}/{STR_VAR_2}"); +static const u8 sText_Stats_eggGroup_MONSTER[] = _("MONSTER"); +static const u8 sText_Stats_eggGroup_WATER_1[] = _("WATER {CIRCLE_1}"); +static const u8 sText_Stats_eggGroup_BUG[] = _("BUG"); +static const u8 sText_Stats_eggGroup_FLYING[] = _("FLYING"); +static const u8 sText_Stats_eggGroup_FIELD[] = _("FIELD"); +static const u8 sText_Stats_eggGroup_FAIRY[] = _("FAIRY"); +static const u8 sText_Stats_eggGroup_GRASS[] = _("GRASS"); +static const u8 sText_Stats_eggGroup_HUMAN_LIKE[] = _("HUMANE"); +static const u8 sText_Stats_eggGroup_WATER_3[] = _("WATER {CIRCLE_3}"); +static const u8 sText_Stats_eggGroup_MINERAL[] = _("MINERAL"); +static const u8 sText_Stats_eggGroup_AMORPHOUS[] = _("AMORPHOUS"); +static const u8 sText_Stats_eggGroup_WATER_2[] = _("WATER {CIRCLE_2}"); +static const u8 sText_Stats_eggGroup_DITTO[] = _("DITTO"); +static const u8 sText_Stats_eggGroup_DRAGON[] = _("DRAGON"); +static const u8 sText_Stats_eggGroup_UNDISCOVERED[] = _("---"); +static const u8 sText_Dex_SEEN[] = _("SEEN"); +static const u8 sText_Dex_OWN[] = _("OWN"); + +static const u8 sText_EVO_Buttons[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK"); +static const u8 sText_EVO_Buttons_Decapped[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check"); +static const u8 sText_EVO_Buttons_PE[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK {START_BUTTON}FORMs"); +static const u8 sText_EVO_Buttons_Decapped_PE[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check {START_BUTTON}Froms"); +static const u8 sText_EVO_Name[] = _("{STR_VAR_3}:"); +static const u8 sText_EVO_PreEvo[] = _("{STR_VAR_1} evolves from {STR_VAR_2}"); +static const u8 sText_EVO_PreEvo_PE_Mega[] = _("{STR_VAR_1} Mega Evolves with {STR_VAR_2}"); +static const u8 sText_EVO_FRIENDSHIP[] = _("{LV}{UP_ARROW}, high friendship"); +static const u8 sText_EVO_FRIENDSHIP_DAY[] = _("{LV}{UP_ARROW}, high friendship, day"); +static const u8 sText_EVO_FRIENDSHIP_NIGHT[] = _("{LV}{UP_ARROW}, high friendship, night"); +static const u8 sText_EVO_FRIENDSHIP_MOVE_TYPE[] = _("{LV}{UP_ARROW}, high friendship, {STR_VAR_2} move"); +static const u8 sText_EVO_LEVEL[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); +static const u8 sText_EVO_TRADE[] = _("Trading"); +static const u8 sText_EVO_TRADE_ITEM[] = _("Trading, holding {STR_VAR_2}"); +static const u8 sText_EVO_ITEM[] = _("{STR_VAR_2} is used"); +static const u8 sText_EVO_LEVEL_ATK_GT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk > Def"); +static const u8 sText_EVO_LEVEL_ATK_EQ_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk = Def"); +static const u8 sText_EVO_LEVEL_ATK_LT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk < Def"); +static const u8 sText_EVO_LEVEL_SILCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Silcoon persona"); +static const u8 sText_EVO_LEVEL_CASCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Cascoon persona"); +static const u8 sText_EVO_LEVEL_NINJASK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); +static const u8 sText_EVO_LEVEL_SHEDINJA[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, party<6, 1x POKéBALL"); +static const u8 sText_EVO_BEAUTY[] = _("{LV}{UP_ARROW}, high beauty"); +static const u8 sText_EVO_LEVEL_FEMALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is female"); +static const u8 sText_EVO_LEVEL_MALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is male"); +static const u8 sText_EVO_LEVEL_NIGHT[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, night"); +static const u8 sText_EVO_LEVEL_DAY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, day"); +static const u8 sText_EVO_LEVEL_DUSK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, dusk (5-6PM)"); +static const u8 sText_EVO_ITEM_HOLD_DAY[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, day"); +static const u8 sText_EVO_ITEM_HOLD_NIGHT[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, night"); +static const u8 sText_EVO_MOVE[] = _("{LV}{UP_ARROW}, knows {STR_VAR_2}"); +static const u8 sText_EVO_MAPSEC[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); +static const u8 sText_EVO_ITEM_MALE[] = _("{STR_VAR_2} used on male"); +static const u8 sText_EVO_ITEM_FEMALE[] = _("{STR_VAR_2} used on female"); +static const u8 sText_EVO_LEVEL_RAIN[] = _("{LV}{UP_ARROW} to {STR_VAR_2} while raining"); +static const u8 sText_EVO_SPECIFIC_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with {STR_VAR_2} in party"); +static const u8 sText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with dark type in party"); +static const u8 sText_EVO_TRADE_SPECIFIC_MON[] = _("Traded for {STR_VAR_2}"); +static const u8 sText_EVO_SPECIFIC_MAP[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); +static const u8 sText_EVO_LEVEL_NATURE_AMPED[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Amped natures"); +static const u8 sText_EVO_LEVEL_NATURE_LOW_KEY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Low Key natures"); +static const u8 sText_EVO_CRITICAL_HITS[] = _("Land {STR_VAR_2} critical hits in\nsingle battle"); +static const u8 sText_EVO_SCRIPT_TRIGGER_DMG[] = _("Takes at least {STR_VAR_2} HP in damage"); +static const u8 sText_EVO_DARK_SCROLL[] = _("ScrllOfDrknss is used"); +static const u8 sText_EVO_WATER_SCROLL[] = _("ScrollOfWatrs is used"); +static const u8 sText_EVO_ITEM_NIGHT[] = _("{STR_VAR_2} is used, night"); +static const u8 sText_EVO_ITEM_DAY[] = _("{STR_VAR_2} is used, day"); +static const u8 sText_EVO_ITEM_HOLD[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}"); +static const u8 sText_EVO_UNKNOWN[] = _("Method unknown"); +static const u8 sText_EVO_NONE[] = _("{STR_VAR_1} has no evolution."); + +static const u8 sText_FORMS_Buttons_PE[] = _("{A_BUTTON}FORM MODE {START_BUTTON}EVOs"); +static const u8 sText_FORMS_Buttons_Decapped_PE[] = _("{START_BUTTON}Evos"); +static const u8 sText_FORMS_Buttons_Submenu_PE[] = _("{DPAD_NONE}FORMs {A_BUTTON}CHECK {START_BUTTON}EVOs"); +static const u8 sText_FORMS_Buttons_Submenu_Decapped_PE[] = _("{START_BUTTON}Evos"); +static const u8 sText_FORMS_NONE[] = _("{STR_VAR_1} has no alternate forms."); +static const u8 sText_PlusSymbol[] = _("+"); + +// static .rodata graphics + +static const u16 sPokedexPlusHGSS_Default_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_default.gbapal"); +static const u16 sPokedexPlusHGSS_National_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_national.gbapal"); +static const u16 sPokedexPlusHGSS_MenuSearch_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_menu.gbapal"); +static const u16 sPokedexPlusHGSS_SearchResults_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_results.gbapal"); +static const u16 sPokedexPlusHGSS_Default_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_default_dark.gbapal"); +static const u16 sPokedexPlusHGSS_National_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_national_dark.gbapal"); +static const u16 sPokedexPlusHGSS_MenuSearch_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_menu_dark.gbapal"); +static const u16 sPokedexPlusHGSS_SearchResults_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_results_dark.gbapal"); +static const u32 sPokedexPlusHGSS_MenuList_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_list.4bpp.lz"); +static const u32 sPokedexPlusHGSS_MenuList_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_list_DECA.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Interface_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_interface.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Interface_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_interface_DECA.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Menu_1_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu1.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Menu_2_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu2.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Menu_3_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu3.4bpp.lz"); +static const u32 sPokedexPlusHGSS_MenuSearch_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_search.4bpp.lz"); +static const u32 sPokedexPlusHGSS_MenuSearch_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_search_DECA.4bpp.lz"); +static const u32 sPokedexPlusHGSS_StartMenuMain_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_start_menu.bin.lz"); +static const u32 sPokedexPlusHGSS_StartMenuSearchResults_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_start_menu_search_results.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar_clear.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenList_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_list_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenListUnderlay_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_list_screen_underlay.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenInfo_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_info_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenStats_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_stats_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenEvolution_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_evo_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenEvolution_Tilemap_PE[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_evo_screen_PE.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenForms_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_forms_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenCry_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_cry_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSize_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_size_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSearchHoenn_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_hoenn.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSearchNational_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_national.bin.lz"); #define SCROLLING_MON_X 146 #define HGSS_DECAPPED FALSE @@ -375,7 +534,6 @@ static void Task_SwitchScreensFromSizeScreen(u8); static void LoadScreenSelectBarMain(u16); static void LoadScreenSelectBarSubmenu(u16); static void HighlightScreenSelectBarItem(u8, u16); -static void HighlightSubmenuScreenSelectBarItem(u8, u16); static void Task_HandleCaughtMonPageInput(u8); static void Task_ExitCaughtMonPage(u8); static void SpriteCB_SlideCaughtMonToCenter(struct Sprite *sprite); @@ -463,6 +621,8 @@ static void Task_ExitFormsScreen(u8 taskId); static u8 ShowSplitIcon(u32 split); //Physical/Special Split from BE static void DestroySplitIcon(void); //Physical/Special Split from BE +static u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum); + //Physical/Special Split from BE #define TAG_SPLIT_ICONS 30004 @@ -1076,14 +1236,14 @@ static const struct SpriteTemplate sDexListStartMenuCursorSpriteTemplate = static const struct CompressedSpriteSheet sInterfaceSpriteSheet[] = { - {gPokedexPlusHGSS_Interface_Gfx, 0x2000, TAG_DEX_INTERFACE}, - {gPokedexPlusHGSS_Interface_DECA_Gfx, 0x2000, TAG_DEX_INTERFACE}, + {sPokedexPlusHGSS_Interface_Gfx, 0x2000, TAG_DEX_INTERFACE}, + {sPokedexPlusHGSS_Interface_DECA_Gfx, 0x2000, TAG_DEX_INTERFACE}, {0} }; static const struct SpritePalette sInterfaceSpritePalette[] = { - {gPokedexPlusHGSS_Default_Pal, TAG_DEX_INTERFACE}, + {sPokedexPlusHGSS_Default_Pal, TAG_DEX_INTERFACE}, {0} }; @@ -1927,6 +2087,8 @@ static const struct WindowTemplate sSearchMenu_WindowTemplate[] = //************************************ void CB2_OpenPokedexPlusHGSS(void) { + if (!POKEDEX_PLUS_HGSS) return; // prevents the compiler from emitting static .rodata + // if the feature is disabled switch (gMain.state) { case 0: @@ -2048,7 +2210,7 @@ static void CB2_Pokedex(void) UpdatePaletteFade(); } -void Task_OpenPokedexMainPage(u8 taskId) +static void Task_OpenPokedexMainPage(u8 taskId) { sPokedexView->isSearchResults = FALSE; sPokedexView->sEvoScreenData.fromEvoPage = FALSE; @@ -2246,21 +2408,21 @@ static void LoadPokedexBgPalette(bool8 isSearchResults) if (!HGSS_DARK_MODE) { if (isSearchResults == TRUE) - LoadPalette(gPokedexPlusHGSS_SearchResults_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_SearchResults_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); else if (!IsNationalPokedexEnabled()) - LoadPalette(gPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); else - LoadPalette(gPokedexPlusHGSS_National_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_National_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32); } else { if (isSearchResults == TRUE) - LoadPalette(gPokedexPlusHGSS_SearchResults_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_SearchResults_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); else if (!IsNationalPokedexEnabled()) - LoadPalette(gPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); else - LoadPalette(gPokedexPlusHGSS_National_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_National_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32); } @@ -2293,15 +2455,15 @@ static bool8 LoadPokedexListPage(u8 page) SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE)); SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE)); if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_MenuList_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuList_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_MenuList_DECA_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(1, gPokedexPlusHGSS_ScreenList_Tilemap, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenListUnderlay_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuList_DECA_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(1, sPokedexPlusHGSS_ScreenList_Tilemap, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenListUnderlay_Tilemap, 0, 0); if (page == PAGE_MAIN) - CopyToBgTilemapBuffer(0, gPokedexPlusHGSS_StartMenuMain_Tilemap, 0, 0x280); + CopyToBgTilemapBuffer(0, sPokedexPlusHGSS_StartMenuMain_Tilemap, 0, 0x280); else - CopyToBgTilemapBuffer(0, gPokedexPlusHGSS_StartMenuSearchResults_Tilemap, 0, 0x280); + CopyToBgTilemapBuffer(0, sPokedexPlusHGSS_StartMenuSearchResults_Tilemap, 0, 0x280); ResetPaletteFade(); if (page == PAGE_MAIN) sPokedexView->isSearchResults = FALSE; @@ -3202,7 +3364,7 @@ static void SpriteCB_SeenOwnInfo(struct Sprite *sprite) DestroySprite(sprite); } -void SpriteCB_MoveMonForInfoScreen(struct Sprite *sprite) +static void SpriteCB_MoveMonForInfoScreen(struct Sprite *sprite) { sprite->oam.priority = 0; sprite->oam.affineMode = ST_OAM_AFFINE_OFF; @@ -3648,8 +3810,6 @@ static void Task_LoadInfoScreen(u8 taskId) break; case 1: LoadTilesetTilemapHGSS(INFO_SCREEN); - // DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0); - // CopyToBgTilemapBuffer(3, gPokedexInfoScreen_Tilemap, 0, 0); FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); PutWindowTilemap(WIN_INFO); PutWindowTilemap(WIN_FOOTPRINT); @@ -3659,7 +3819,6 @@ static void Task_LoadInfoScreen(u8 taskId) break; case 2: LoadScreenSelectBarMain(0xD); - // HighlightScreenSelectBarItem(sPokedexView->selectedScreen, 0xD); LoadPokedexBgPalette(sPokedexView->isSearchResults); gMain.state++; break; @@ -3718,7 +3877,6 @@ static void Task_LoadInfoScreen(u8 taskId) } break; case 9: - // if (!IsCryPlayingOrClearCrySongs()) gMain.state++; break; case 10: @@ -3895,13 +4053,13 @@ static void Task_SwitchScreensFromAreaScreen(u8 taskId) //************************************ static void LoadScreenSelectBarMain(u16 unused) { - CopyToBgTilemapBuffer(1, gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear, 0, 0); + CopyToBgTilemapBuffer(1, sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear, 0, 0); CopyBgTilemapBufferToVram(1); } static void LoadScreenSelectBarSubmenu(u16 unused) { - CopyToBgTilemapBuffer(1, gPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap, 0, 0); + CopyToBgTilemapBuffer(1, sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap, 0, 0); CopyBgTilemapBufferToVram(1); } @@ -3932,36 +4090,6 @@ static void UNUSED HighlightScreenSelectBarItem(u8 selectedScreen, u16 unused) CopyBgTilemapBufferToVram(1); } -static void UNUSED HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) -{ - u8 i; - u8 j; - u16 *ptr = GetBgTilemapBuffer(1); - - for (i = 0; i < 4; i++) - { - u8 row = i * 7 + 1; - u32 newPalette; - - do - { - if (i == a || i == 3) - newPalette = 0x2000; - else - newPalette = 0x4000; - } while (0); - - for (j = 0; j < 7; j++) - { - ptr[row + j] = (ptr[row + j] % 0x1000) | newPalette; - ptr[row + j + 0x20] = (ptr[row + j + 0x20] % 0x1000) | newPalette; - } - } - CopyBgTilemapBufferToVram(1); -} - - - //************************************ //* * //* CAUGHT MON * @@ -3979,9 +4107,14 @@ static void UNUSED HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) void Task_DisplayCaughtMonDexPageHGSS(u8 taskId) { u8 spriteId; - u16 species = gTasks[taskId].tSpecies; - u16 dexNum = SpeciesToNationalPokedexNum(species); + u16 species; + u16 dexNum; + if (!POKEDEX_PLUS_HGSS) return; // prevents the compiler from emitting static .rodata + // if the feature is disabled + + species = gTasks[taskId].tSpecies; + dexNum = SpeciesToNationalPokedexNum(species); switch (gTasks[taskId].tState) { case 0: @@ -4074,16 +4207,16 @@ static void Task_HandleCaughtMonPageInput(u8 taskId) else if (++gTasks[taskId].tPalTimer & 16) { if (!HGSS_DARK_MODE) - LoadPalette(gPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + LoadPalette(sPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); else - LoadPalette(gPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + LoadPalette(sPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); } else { if (!HGSS_DARK_MODE) - LoadPalette(gPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + LoadPalette(sPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); else - LoadPalette(gPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + LoadPalette(sPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); } } @@ -4309,8 +4442,6 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry) const u8 *category; const u8 *description; - // if (newEntry) - // PrintInfoScreenText(gText_PokedexRegistration, GetStringCenterAlignXOffset(1, gText_PokedexRegistration, 0xF0), 0); if (value == 0) value = NationalToHoennOrder(num); else @@ -4664,7 +4795,7 @@ static UNUSED u32 GetPokedexMonPersonality(u16 species) //* HGSS * //* * //************************************ -u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum) +static u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum) { if (!nationalNum) return 0; @@ -4681,45 +4812,45 @@ static void LoadTilesetTilemapHGSS(u8 page) { case INFO_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenInfo_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenInfo_Tilemap, 0, 0); break; case STATS_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenStats_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenStats_Tilemap, 0, 0); break; case EVO_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenEvolution_Tilemap_PE, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenEvolution_Tilemap_PE, 0, 0); break; case FORMS_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenForms_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenForms_Tilemap, 0, 0); break; case CRY_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenCry_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenCry_Tilemap, 0, 0); break; case SIZE_SCREEN: if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenSize_Tilemap, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenSize_Tilemap, 0, 0); break; } } @@ -4753,9 +4884,9 @@ static void StatsPage_PrintNavigationButtons(void) u8 x = 9; u8 y = 0; if (!HGSS_DECAPPED) - AddTextPrinterParameterized3(WIN_STATS_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_Stats_Buttons); + AddTextPrinterParameterized3(WIN_STATS_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_Stats_Buttons); else - AddTextPrinterParameterized3(WIN_STATS_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_Stats_Buttons_Decapped); + AddTextPrinterParameterized3(WIN_STATS_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_Stats_Buttons_Decapped); PutWindowTilemap(WIN_STATS_NAVIGATION_BUTTONS); CopyWindowToVram(WIN_STATS_NAVIGATION_BUTTONS, 3); @@ -4779,14 +4910,22 @@ static void ResetStatsWindows(void) static void SaveMonDataInStruct(void) { u16 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); - u8 evs[6] = {gSpeciesInfo[species].evYield_HP, gSpeciesInfo[species].evYield_Speed, gSpeciesInfo[species].evYield_Attack, gSpeciesInfo[species].evYield_SpAttack, gSpeciesInfo[species].evYield_Defense, gSpeciesInfo[species].evYield_SpDefense}; + u8 evs[NUM_STATS] = + { + [STAT_HP] = gSpeciesInfo[species].evYield_HP, + [STAT_ATK] = gSpeciesInfo[species].evYield_Speed, + [STAT_DEF] = gSpeciesInfo[species].evYield_Attack, + [STAT_SPEED] = gSpeciesInfo[species].evYield_SpAttack, + [STAT_SPATK] = gSpeciesInfo[species].evYield_Defense, + [STAT_SPDEF] = gSpeciesInfo[species].evYield_SpDefense + }; u8 differentEVs = 0; u8 i; //Count how many different EVs - for (i = 0; i<6; i++) + for (i = 0; i < NUM_STATS; i++) { - if (EVs[i] > 0) //HP//Speed//Attack//Special Attack//Defense//Special Defense + if (evs[i] > 0) //HP//Speed//Attack//Special Attack//Defense//Special Defense differentEVs++; } @@ -4799,12 +4938,12 @@ static void SaveMonDataInStruct(void) sPokedexView->sPokemonStats.baseDefense = gSpeciesInfo[species].baseDefense; sPokedexView->sPokemonStats.baseSpDefense = gSpeciesInfo[species].baseSpDefense; sPokedexView->sPokemonStats.differentEVs = differentEVs; - sPokedexView->sPokemonStats.evYield_HP = EVs[0]; - sPokedexView->sPokemonStats.evYield_Speed = EVs[1]; - sPokedexView->sPokemonStats.evYield_Attack = EVs[2]; - sPokedexView->sPokemonStats.evYield_SpAttack = EVs[3]; - sPokedexView->sPokemonStats.evYield_Defense = EVs[4]; - sPokedexView->sPokemonStats.evYield_SpDefense = EVs[5]; + sPokedexView->sPokemonStats.evYield_HP = evs[STAT_HP]; + sPokedexView->sPokemonStats.evYield_Speed = evs[STAT_ATK]; + sPokedexView->sPokemonStats.evYield_Attack = evs[STAT_DEF]; + sPokedexView->sPokemonStats.evYield_SpAttack = evs[STAT_SPEED]; + sPokedexView->sPokemonStats.evYield_Defense = evs[STAT_SPATK]; + sPokedexView->sPokemonStats.evYield_SpDefense = evs[STAT_SPDEF]; sPokedexView->sPokemonStats.catchRate = gSpeciesInfo[species].catchRate; sPokedexView->sPokemonStats.growthRate = gSpeciesInfo[species].growthRate; sPokedexView->sPokemonStats.eggGroup1 = gSpeciesInfo[species].eggGroups[0]; @@ -4898,7 +5037,7 @@ static void Task_LoadStatsScreen(u8 taskId) PrintStatsScreen_Moves_Bottom(taskId); if (!sPokedexListItem->owned) LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); - StatsPage_PrintNavigationButtons(); //gText_Stats_Buttons + StatsPage_PrintNavigationButtons(); //sText_Stats_Buttons gMain.state++; break; case 7: @@ -5145,7 +5284,7 @@ static void PrintStatsScreen_Moves_Top(u8 taskId) //Moves selected from move max ConvertIntToDecimalStringN(gStringVar1, (selected+1), STR_CONV_MODE_RIGHT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar2, movesTotal, STR_CONV_MODE_RIGHT_ALIGN, 3); - StringExpandPlaceholders(gStringVar1, gText_Stats_MoveSelectedMax); + StringExpandPlaceholders(gStringVar1, sText_Stats_MoveSelectedMax); PrintStatsScreenTextSmallWhite(WIN_STATS_MOVES_TOP, gStringVar1, moves_x-1, moves_y+1); //Move name @@ -5175,7 +5314,7 @@ static void PrintStatsScreen_Moves_Top(u8 taskId) { level = gLevelUpLearnsets[species][(selected-numEggMoves)].level; ConvertIntToDecimalStringN(gStringVar1, level, STR_CONV_MODE_LEFT_ALIGN, 3); //Move learn lvl - PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, gText_Stats_MoveLevel, moves_x + 113, moves_y + 3); //Level text + PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, sText_Stats_MoveLevel, moves_x + 113, moves_y + 3); //Level text PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, gStringVar1, moves_x + 113, moves_y + 14); //Print level item = ITEM_RARE_CANDY; } @@ -5285,7 +5424,7 @@ static void PrintStatsScreen_Moves_Bottom(u8 taskId) if (contest_effectValue != 0xFF) contest_appeal = contest_effectValue / 10; ConvertIntToDecimalStringN(gStringVar1, contest_appeal, STR_CONV_MODE_RIGHT_ALIGN, 1); - StringCopy(gStringVar2, gText_PlusSymbol); + StringCopy(gStringVar2, sText_PlusSymbol); StringAppend(gStringVar2, gStringVar1); PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gStringVar2, moves_x + 45, moves_y); @@ -5294,7 +5433,7 @@ static void PrintStatsScreen_Moves_Bottom(u8 taskId) if (contest_effectValue != 0xFF) contest_jam = contest_effectValue / 10; ConvertIntToDecimalStringN(gStringVar1, contest_jam, STR_CONV_MODE_RIGHT_ALIGN, 1); - StringCopy(gStringVar2, gText_Stats_Minus); + StringCopy(gStringVar2, sText_Stats_Minus); StringAppend(gStringVar2, gStringVar1); PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gStringVar2, moves_x + 119, moves_y); } @@ -5326,25 +5465,25 @@ static void PrintStatsScreen_NameGender(u8 taskId, u32 num, u32 value) switch (sPokedexView->sPokemonStats.genderRatio) { case 0: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_0, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_0, gender_x, gender_y); break; case 31: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_12_5, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_12_5, gender_x, gender_y); break; case 63: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_25, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_25, gender_x, gender_y); break; case 127: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_50, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_50, gender_x, gender_y); break; case 191: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_75, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_75, gender_x, gender_y); break; case 223: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_87_5, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_87_5, gender_x, gender_y); break; case 254: - PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_Stats_Gender_100, gender_x, gender_y); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_100, gender_x, gender_y); break; default: PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_ThreeDashes, gender_x, gender_y); @@ -5373,13 +5512,13 @@ static u8* PrintMonStatsToggle_EV_Arrows(u8 *dest, u8 value) switch (value) { case 1: - StringCopy(dest, gText_Stats_EV_Plus1); + StringCopy(dest, sText_Stats_EV_Plus1); break; case 2: - StringCopy(dest, gText_Stats_EV_Plus2); + StringCopy(dest, sText_Stats_EV_Plus2); break; case 3: - StringCopy(dest, gText_Stats_EV_Plus3); + StringCopy(dest, sText_Stats_EV_Plus3); break; } return dest; @@ -5406,29 +5545,29 @@ static void PrintStatsScreen_Left(u8 taskId) //Base stats if (gTasks[taskId].data[5] == 0) { - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_HP, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_HP, base_x, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseHP, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_first_row, base_y + base_y_offset*base_i); - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_Speed, base_x+base_x_second_row, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Speed, base_x+base_x_second_row, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseSpeed, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_offset, base_y + base_y_offset*base_i); base_i++; - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_Attack, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Attack, base_x, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseAttack, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_first_row, base_y + base_y_offset*base_i); - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_SpAttack, base_x+base_x_second_row, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_SpAttack, base_x+base_x_second_row, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseSpAttack, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_offset, base_y + base_y_offset*base_i); base_i++; - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_Defense, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Defense, base_x, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseDefense, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_first_row, base_y + base_y_offset*base_i); - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_SpDefense, base_x+base_x_second_row, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_SpDefense, base_x+base_x_second_row, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseSpDefense, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_offset, base_y + base_y_offset*base_i); base_i++; @@ -5445,9 +5584,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_HP); + StringCopy(gStringVar1, sText_Stats_HP); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[0]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } //Speed @@ -5456,9 +5595,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_Speed); + StringCopy(gStringVar1, sText_Stats_Speed); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[1]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } //Attack @@ -5467,9 +5606,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_Attack); + StringCopy(gStringVar1, sText_Stats_Attack); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[2]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } //Special Attack @@ -5478,9 +5617,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_SpAttack); + StringCopy(gStringVar1, sText_Stats_SpAttack); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[3]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } //Defense @@ -5489,9 +5628,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_Defense); + StringCopy(gStringVar1, sText_Stats_Defense); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[4]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } //Special Defense @@ -5500,9 +5639,9 @@ static void PrintStatsScreen_Left(u8 taskId) differentEVs++; column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); - StringCopy(gStringVar1, gText_Stats_SpDefense); + StringCopy(gStringVar1, sText_Stats_SpDefense); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[5]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); } } @@ -5512,54 +5651,54 @@ static void PrintStatsScreen_Left(u8 taskId) //HP if (EVs[0] > 0) { - StringCopy(gStringVar1, gText_Stats_HP); + StringCopy(gStringVar1, sText_Stats_HP); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[0]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } //Speed if (EVs[1] > 0) { - StringCopy(gStringVar1, gText_Stats_Speed); + StringCopy(gStringVar1, sText_Stats_Speed); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[1]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } //Attack if (EVs[2] > 0) { - StringCopy(gStringVar1, gText_Stats_Attack); + StringCopy(gStringVar1, sText_Stats_Attack); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[2]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } //Special Attack if (EVs[3] > 0) { - StringCopy(gStringVar1, gText_Stats_SpAttack); + StringCopy(gStringVar1, sText_Stats_SpAttack); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[3]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } //Defense if (EVs[4] > 0) { - StringCopy(gStringVar1, gText_Stats_Defense); + StringCopy(gStringVar1, sText_Stats_Defense); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[4]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } //Special Defense if (EVs[5] > 0) { - StringCopy(gStringVar1, gText_Stats_SpDefense); + StringCopy(gStringVar1, sText_Stats_SpDefense); PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[5]); - StringExpandPlaceholders(gStringVar3, gText_Stats_EvStr1Str2); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); column++; } @@ -5574,42 +5713,42 @@ static void PrintStatsScreen_Left(u8 taskId) u32 growthRate = sPokedexView->sPokemonStats.growthRate; //Catch rate - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate, base_x, base_y + base_y_offset*base_i); if (catchRate <= 10) - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_Legend, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Legend, base_x + x_offset_column, base_y + base_y_offset*base_i); else if (catchRate <= 70) - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_VeryHard, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_VeryHard, base_x + x_offset_column, base_y + base_y_offset*base_i); else if (catchRate <= 100) - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_Difficult, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Difficult, base_x + x_offset_column, base_y + base_y_offset*base_i); else if (catchRate <= 150) - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_Medium, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Medium, base_x + x_offset_column, base_y + base_y_offset*base_i); else if (catchRate <= 200) - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_Relaxed, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Relaxed, base_x + x_offset_column, base_y + base_y_offset*base_i); else - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_CatchRate_Easy, base_x + x_offset_column, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Easy, base_x + x_offset_column, base_y + base_y_offset*base_i); base_i++; //Growth rate - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_Growthrate, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Growthrate, base_x, base_y + base_y_offset*base_i); switch (growthRate) { case GROWTH_MEDIUM_FAST: - StringCopy(strEV, gText_Stats_MEDIUM_FAST); + StringCopy(strEV, sText_Stats_MEDIUM_FAST); break; case GROWTH_ERRATIC: - StringCopy(strEV, gText_Stats_ERRATIC); + StringCopy(strEV, sText_Stats_ERRATIC); break; case GROWTH_FLUCTUATING: - StringCopy(strEV, gText_Stats_FLUCTUATING); + StringCopy(strEV, sText_Stats_FLUCTUATING); break; case GROWTH_MEDIUM_SLOW: - StringCopy(strEV, gText_Stats_MEDIUM_SLOW); + StringCopy(strEV, sText_Stats_MEDIUM_SLOW); break; case GROWTH_FAST: - StringCopy(strEV, gText_Stats_FAST); + StringCopy(strEV, sText_Stats_FAST); break; case GROWTH_SLOW: - StringCopy(strEV, gText_Stats_SLOW); + StringCopy(strEV, sText_Stats_SLOW); break; default: break; @@ -5620,29 +5759,29 @@ static void PrintStatsScreen_Left(u8 taskId) else { //Exp Yield - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_ExpYield, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_ExpYield, base_x, base_y + base_y_offset*base_i); ConvertIntToDecimalStringN(gStringVar1, sPokedexView->sPokemonStats.expYield, STR_CONV_MODE_RIGHT_ALIGN, 3); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar1, base_x + base_x_offset, base_y + base_y_offset*base_i); base_i++; //Friendship - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_Friendship, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Friendship, base_x, base_y + base_y_offset*base_i); switch (sPokedexView->sPokemonStats.friendship) { case 35: - StringCopy(strEV, gText_Stats_Friendship_BigAnger); + StringCopy(strEV, sText_Stats_Friendship_BigAnger); break; case 70: - StringCopy(strEV, gText_Stats_Friendship_Neutral); + StringCopy(strEV, sText_Stats_Friendship_Neutral); break; case 90: - StringCopy(strEV, gText_Stats_Friendship_Happy); + StringCopy(strEV, sText_Stats_Friendship_Happy); break; case 100: - StringCopy(strEV, gText_Stats_Friendship_Happy); + StringCopy(strEV, sText_Stats_Friendship_Happy); break; case 140: - StringCopy(strEV, gText_Stats_Friendship_BigSmile); + StringCopy(strEV, sText_Stats_Friendship_BigSmile); break; default: ConvertIntToDecimalStringN(strEV, sPokedexView->sPokemonStats.friendship, STR_CONV_MODE_RIGHT_ALIGN, 3); @@ -5655,30 +5794,30 @@ static void PrintStatsScreen_Left(u8 taskId) //Egg cycles if (sPokedexView->sPokemonStats.eggGroup1 == EGG_GROUP_UNDISCOVERED || sPokedexView->sPokemonStats.eggGroup2 == EGG_GROUP_UNDISCOVERED) //Species without eggs (legendaries etc) { - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_EggCycles, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_EggCycles, base_x, base_y + base_y_offset*base_i); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_ThreeDashes, 78, base_y + base_y_offset*base_i); } else { - PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_Stats_EggCycles, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_EggCycles, base_x, base_y + base_y_offset*base_i); if (sPokedexView->sPokemonStats.eggCycles <= 10) { - StringCopy(strEV, gText_Stats_EggCycles_VeryFast); + StringCopy(strEV, sText_Stats_EggCycles_VeryFast); align_x = 76; } else if (sPokedexView->sPokemonStats.eggCycles <= 20) { - StringCopy(strEV, gText_Stats_EggCycles_Fast); + StringCopy(strEV, sText_Stats_EggCycles_Fast); align_x = 85; } else if (sPokedexView->sPokemonStats.eggCycles <= 30) { - StringCopy(strEV, gText_Stats_EggCycles_Normal); + StringCopy(strEV, sText_Stats_EggCycles_Normal); align_x = 76; } else { - StringCopy(strEV, gText_Stats_EggCycles_Slow); + StringCopy(strEV, sText_Stats_EggCycles_Slow); align_x = 67; } PrintStatsScreenTextSmall(WIN_STATS_LEFT, strEV, align_x, base_y + base_y_offset*base_i); @@ -5689,49 +5828,49 @@ static void PrintStatsScreen_Left(u8 taskId) switch (sPokedexView->sPokemonStats.eggGroup1) { case EGG_GROUP_MONSTER : - StringCopy(gStringVar1, gText_Stats_eggGroup_MONSTER); + StringCopy(gStringVar1, sText_Stats_eggGroup_MONSTER); break; case EGG_GROUP_WATER_1 : - StringCopy(gStringVar1, gText_Stats_eggGroup_WATER_1); + StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_1); break; case EGG_GROUP_BUG : - StringCopy(gStringVar1, gText_Stats_eggGroup_BUG); + StringCopy(gStringVar1, sText_Stats_eggGroup_BUG); break; case EGG_GROUP_FLYING : - StringCopy(gStringVar1, gText_Stats_eggGroup_FLYING); + StringCopy(gStringVar1, sText_Stats_eggGroup_FLYING); break; case EGG_GROUP_FIELD : - StringCopy(gStringVar1, gText_Stats_eggGroup_FIELD); + StringCopy(gStringVar1, sText_Stats_eggGroup_FIELD); break; case EGG_GROUP_FAIRY : - StringCopy(gStringVar1, gText_Stats_eggGroup_FAIRY); + StringCopy(gStringVar1, sText_Stats_eggGroup_FAIRY); break; case EGG_GROUP_GRASS : - StringCopy(gStringVar1, gText_Stats_eggGroup_GRASS); + StringCopy(gStringVar1, sText_Stats_eggGroup_GRASS); break; case EGG_GROUP_HUMAN_LIKE : - StringCopy(gStringVar1, gText_Stats_eggGroup_HUMAN_LIKE); + StringCopy(gStringVar1, sText_Stats_eggGroup_HUMAN_LIKE); break; case EGG_GROUP_WATER_3 : - StringCopy(gStringVar1, gText_Stats_eggGroup_WATER_3); + StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_3); break; case EGG_GROUP_MINERAL : - StringCopy(gStringVar1, gText_Stats_eggGroup_MINERAL); + StringCopy(gStringVar1, sText_Stats_eggGroup_MINERAL); break; case EGG_GROUP_AMORPHOUS : - StringCopy(gStringVar1, gText_Stats_eggGroup_AMORPHOUS); + StringCopy(gStringVar1, sText_Stats_eggGroup_AMORPHOUS); break; case EGG_GROUP_WATER_2 : - StringCopy(gStringVar1, gText_Stats_eggGroup_WATER_2); + StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_2); break; case EGG_GROUP_DITTO : - StringCopy(gStringVar1, gText_Stats_eggGroup_DITTO); + StringCopy(gStringVar1, sText_Stats_eggGroup_DITTO); break; case EGG_GROUP_DRAGON : - StringCopy(gStringVar1, gText_Stats_eggGroup_DRAGON); + StringCopy(gStringVar1, sText_Stats_eggGroup_DRAGON); break; case EGG_GROUP_UNDISCOVERED: - StringCopy(gStringVar1, gText_Stats_eggGroup_UNDISCOVERED); + StringCopy(gStringVar1, sText_Stats_eggGroup_UNDISCOVERED); break; } //Egg group 2 @@ -5740,52 +5879,52 @@ static void PrintStatsScreen_Left(u8 taskId) switch (sPokedexView->sPokemonStats.eggGroup2) { case EGG_GROUP_MONSTER : - StringCopy(gStringVar2, gText_Stats_eggGroup_MONSTER); + StringCopy(gStringVar2, sText_Stats_eggGroup_MONSTER); break; case EGG_GROUP_WATER_1 : - StringCopy(gStringVar2, gText_Stats_eggGroup_WATER_1); + StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_1); break; case EGG_GROUP_BUG : - StringCopy(gStringVar2, gText_Stats_eggGroup_BUG); + StringCopy(gStringVar2, sText_Stats_eggGroup_BUG); break; case EGG_GROUP_FLYING : - StringCopy(gStringVar2, gText_Stats_eggGroup_FLYING); + StringCopy(gStringVar2, sText_Stats_eggGroup_FLYING); break; case EGG_GROUP_FIELD : - StringCopy(gStringVar2, gText_Stats_eggGroup_FIELD); + StringCopy(gStringVar2, sText_Stats_eggGroup_FIELD); break; case EGG_GROUP_FAIRY : - StringCopy(gStringVar2, gText_Stats_eggGroup_FAIRY); + StringCopy(gStringVar2, sText_Stats_eggGroup_FAIRY); break; case EGG_GROUP_GRASS : - StringCopy(gStringVar2, gText_Stats_eggGroup_GRASS); + StringCopy(gStringVar2, sText_Stats_eggGroup_GRASS); break; case EGG_GROUP_HUMAN_LIKE : - StringCopy(gStringVar2, gText_Stats_eggGroup_HUMAN_LIKE); + StringCopy(gStringVar2, sText_Stats_eggGroup_HUMAN_LIKE); break; case EGG_GROUP_WATER_3 : - StringCopy(gStringVar2, gText_Stats_eggGroup_WATER_3); + StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_3); break; case EGG_GROUP_MINERAL : - StringCopy(gStringVar2, gText_Stats_eggGroup_MINERAL); + StringCopy(gStringVar2, sText_Stats_eggGroup_MINERAL); break; case EGG_GROUP_AMORPHOUS : - StringCopy(gStringVar2, gText_Stats_eggGroup_AMORPHOUS); + StringCopy(gStringVar2, sText_Stats_eggGroup_AMORPHOUS); break; case EGG_GROUP_WATER_2 : - StringCopy(gStringVar2, gText_Stats_eggGroup_WATER_2); + StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_2); break; case EGG_GROUP_DITTO : - StringCopy(gStringVar2, gText_Stats_eggGroup_DITTO); + StringCopy(gStringVar2, sText_Stats_eggGroup_DITTO); break; case EGG_GROUP_DRAGON : - StringCopy(gStringVar2, gText_Stats_eggGroup_DRAGON); + StringCopy(gStringVar2, sText_Stats_eggGroup_DRAGON); break; case EGG_GROUP_UNDISCOVERED: - StringCopy(gStringVar2, gText_Stats_eggGroup_UNDISCOVERED); + StringCopy(gStringVar2, sText_Stats_eggGroup_UNDISCOVERED); break; } - StringExpandPlaceholders(gStringVar3, gText_Stats_eggGroup_Groups); + StringExpandPlaceholders(gStringVar3, sText_Stats_eggGroup_Groups); align_x = GetStringRightAlignXOffset(0, gStringVar3, total_x); PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x, base_y + base_y_offset*base_i); } @@ -5898,29 +6037,28 @@ static void EvoFormsPage_PrintNavigationButtons(void) if (sPokedexView->selectedScreen == EVO_SCREEN) { if (!HGSS_DECAPPED) - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x+9, y, sStatsPageNavigationTextColor, 0, gText_EVO_Buttons_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x+9, y, sStatsPageNavigationTextColor, 0, sText_EVO_Buttons_PE); else - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x+9, y, sStatsPageNavigationTextColor, 0, gText_EVO_Buttons_Decapped_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x+9, y, sStatsPageNavigationTextColor, 0, sText_EVO_Buttons_Decapped_PE); } else if (sPokedexView->selectedScreen == FORMS_SCREEN) { if (sPokedexView->sFormScreenData.inSubmenu) { if (!HGSS_DECAPPED) - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_FORMS_Buttons_Submenu_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_Submenu_PE); else - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_FORMS_Buttons_Submenu_Decapped_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_Submenu_Decapped_PE); } else { if (!HGSS_DECAPPED) - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_FORMS_Buttons_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_PE); else - AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, gText_FORMS_Buttons_Decapped_PE); + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_Decapped_PE); } } - // DrawKeypadIcon(WIN_NAVIGATION_BUTTONS, 10, 5, 0); //(u8 windowId, u8 keypadIconId, u16 x, u16 y) PutWindowTilemap(WIN_NAVIGATION_BUTTONS); CopyWindowToVram(WIN_NAVIGATION_BUTTONS, 3); } @@ -6169,7 +6307,7 @@ static void HandleTargetSpeciesPrint(u8 taskId, u16 targetSpecies, u16 previousT StringCopy(gStringVar3, gSpeciesNames[targetSpecies]); //evolution mon name else StringCopy(gStringVar3, gText_ThreeQuestionMarks); //show questionmarks instead of name - StringExpandPlaceholders(gStringVar3, gText_EVO_Name); //evolution mon name + StringExpandPlaceholders(gStringVar3, sText_EVO_Name); //evolution mon name PrintInfoScreenTextSmall(gStringVar3, base_x, base_y + base_y_offset*base_i); //evolution mon name //Print mon icon in the top row @@ -6214,7 +6352,7 @@ static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 specie StringCopy(gStringVar1, gSpeciesNames[species]); //evolution mon name if (sPokedexView->sEvoScreenData.isMega) - StringExpandPlaceholders(gStringVar3, gText_EVO_PreEvo_PE_Mega); + StringExpandPlaceholders(gStringVar3, sText_EVO_PreEvo_PE_Mega); else { @@ -6223,7 +6361,7 @@ static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 specie else StringCopy(gStringVar2, gText_ThreeQuestionMarks); //show questionmarks instead of name - StringExpandPlaceholders(gStringVar3, gText_EVO_PreEvo); //evolution mon name + StringExpandPlaceholders(gStringVar3, sText_EVO_PreEvo); //evolution mon name } @@ -6371,7 +6509,7 @@ static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, //If there are no evolutions print text if (times == 0 && depth == 0) { - StringExpandPlaceholders(gStringVar4, gText_EVO_NONE); + StringExpandPlaceholders(gStringVar4, sText_EVO_NONE); PrintInfoScreenTextSmall(gStringVar4, base_x-7-7, base_y + base_y_offset*depth_i); } @@ -6391,178 +6529,178 @@ static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, { case EVO_FRIENDSHIP: ConvertIntToDecimalStringN(gStringVar2, 220, STR_CONV_MODE_LEADING_ZEROS, 3); //friendship value - StringExpandPlaceholders(gStringVar4, gText_EVO_FRIENDSHIP ); + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP ); break; case EVO_FRIENDSHIP_DAY: - StringExpandPlaceholders(gStringVar4, gText_EVO_FRIENDSHIP_DAY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_DAY ); break; case EVO_FRIENDSHIP_NIGHT: - StringExpandPlaceholders(gStringVar4, gText_EVO_FRIENDSHIP_NIGHT ); + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_NIGHT ); break; case EVO_LEVEL: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL ); break; case EVO_TRADE: - StringExpandPlaceholders(gStringVar4, gText_EVO_TRADE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE ); break; case EVO_TRADE_ITEM: item = gEvolutionTable[species][i].param; //item CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, gText_EVO_TRADE_ITEM ); + StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE_ITEM ); break; case EVO_ITEM: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM ); break; case EVO_LEVEL_ATK_GT_DEF: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_ATK_GT_DEF ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_GT_DEF ); break; case EVO_LEVEL_ATK_EQ_DEF: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_ATK_EQ_DEF ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_EQ_DEF ); break; case EVO_LEVEL_ATK_LT_DEF: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_ATK_LT_DEF ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_LT_DEF ); break; case EVO_LEVEL_SILCOON: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_SILCOON ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_SILCOON ); break; case EVO_LEVEL_CASCOON: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_CASCOON ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_CASCOON ); break; case EVO_LEVEL_NINJASK: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_NINJASK ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NINJASK ); break; case EVO_LEVEL_SHEDINJA: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_SHEDINJA ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_SHEDINJA ); break; case EVO_BEAUTY: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, 3); //beauty - StringExpandPlaceholders(gStringVar4, gText_EVO_BEAUTY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_BEAUTY ); break; case EVO_LEVEL_FEMALE: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_FEMALE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_FEMALE ); break; case EVO_LEVEL_MALE: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_MALE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_MALE ); break; case EVO_LEVEL_NIGHT: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_NIGHT ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NIGHT ); break; case EVO_LEVEL_DAY: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_DAY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DAY ); break; case EVO_LEVEL_DUSK: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_DUSK ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DUSK ); break; case EVO_ITEM_HOLD_DAY: item = gEvolutionTable[species][i].param; //item CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_HOLD_DAY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD_DAY ); break; case EVO_ITEM_HOLD_NIGHT: item = gEvolutionTable[species][i].param; //item CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_HOLD_NIGHT ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD_NIGHT ); break; case EVO_MOVE: StringCopy(gStringVar2, gMoveNames[gEvolutionTable[species][i].param]); - StringExpandPlaceholders(gStringVar4, gText_EVO_MOVE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_MOVE ); break; case EVO_FRIENDSHIP_MOVE_TYPE: StringCopy(gStringVar2, gTypeNames[gEvolutionTable[species][i].param]); - StringExpandPlaceholders(gStringVar4, gText_EVO_FRIENDSHIP_MOVE_TYPE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_MOVE_TYPE ); break; case EVO_MAPSEC: StringCopy(gStringVar2, gRegionMapEntries[gEvolutionTable[species][i].param].name); - StringExpandPlaceholders(gStringVar4, gText_EVO_MAPSEC ); + StringExpandPlaceholders(gStringVar4, sText_EVO_MAPSEC ); break; case EVO_ITEM_MALE: item = gEvolutionTable[species][i].param; //item CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_MALE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_MALE ); break; case EVO_ITEM_FEMALE: item = gEvolutionTable[species][i].param; //item CopyItemName(item, gStringVar2); //item - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_FEMALE ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_FEMALE ); break; case EVO_LEVEL_RAIN: //if (j == WEATHER_RAIN || j == WEATHER_RAIN_THUNDERSTORM || j == WEATHER_DOWNPOUR) - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_RAIN ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_RAIN ); break; case EVO_SPECIFIC_MON_IN_PARTY: StringCopy(gStringVar2, gSpeciesNames[gEvolutionTable[species][i].param]); //mon name - StringExpandPlaceholders(gStringVar4, gText_EVO_SPECIFIC_MON_IN_PARTY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_SPECIFIC_MON_IN_PARTY ); break; case EVO_LEVEL_DARK_TYPE_MON_IN_PARTY: - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY ); break; case EVO_TRADE_SPECIFIC_MON: StringCopy(gStringVar2, gSpeciesNames[gEvolutionTable[species][i].param]); //mon name - StringExpandPlaceholders(gStringVar4, gText_EVO_TRADE_SPECIFIC_MON ); + StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE_SPECIFIC_MON ); break; case EVO_SPECIFIC_MAP: mapHeader = Overworld_GetMapHeaderByGroupAndId(gEvolutionTable[species][i].param >> 8, gEvolutionTable[species][i].param & 0xFF); GetMapName(gStringVar2, mapHeader->regionMapSectionId, 0); - StringExpandPlaceholders(gStringVar4, gText_EVO_SPECIFIC_MAP ); + StringExpandPlaceholders(gStringVar4, sText_EVO_SPECIFIC_MAP ); break; case EVO_LEVEL_NATURE_AMPED: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_NATURE_AMPED); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NATURE_AMPED); break; case EVO_LEVEL_NATURE_LOW_KEY: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level - StringExpandPlaceholders(gStringVar4, gText_EVO_LEVEL_NATURE_LOW_KEY); + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NATURE_LOW_KEY); break; case EVO_CRITICAL_HITS: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_CRITS_DIGITS); //crits - StringExpandPlaceholders(gStringVar4, gText_EVO_CRITICAL_HITS); + StringExpandPlaceholders(gStringVar4, sText_EVO_CRITICAL_HITS); break; case EVO_SCRIPT_TRIGGER_DMG: ConvertIntToDecimalStringN(gStringVar2, gEvolutionTable[species][i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_DMG_DIGITS); //damage - StringExpandPlaceholders(gStringVar4, gText_EVO_SCRIPT_TRIGGER_DMG); + StringExpandPlaceholders(gStringVar4, sText_EVO_SCRIPT_TRIGGER_DMG); break; case EVO_DARK_SCROLL: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_DARK_SCROLL ); + StringExpandPlaceholders(gStringVar4, sText_EVO_DARK_SCROLL ); break; case EVO_WATER_SCROLL: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_WATER_SCROLL ); + StringExpandPlaceholders(gStringVar4, sText_EVO_WATER_SCROLL ); break; case EVO_ITEM_NIGHT: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_NIGHT ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_NIGHT ); break; case EVO_ITEM_DAY: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_DAY ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_DAY ); break; case EVO_ITEM_HOLD: item = gEvolutionTable[species][i].param; CopyItemName(item, gStringVar2); - StringExpandPlaceholders(gStringVar4, gText_EVO_ITEM_HOLD ); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD ); break; default: - StringExpandPlaceholders(gStringVar4, gText_EVO_UNKNOWN ); + StringExpandPlaceholders(gStringVar4, sText_EVO_UNKNOWN ); break; }//Switch end PrintInfoScreenTextSmall(gStringVar4, base_x + depth_x*depth+base_x_offset, base_y + base_y_offset*base_i); //Print actual instructions @@ -6861,13 +6999,6 @@ static void PrintForms(u8 taskId, u16 species) gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 52 + 34*(times-1), 31, 4, 0); //Create pokemon sprite else if (times < 14) gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-7), 70 - y_offset_icons, 4, 0); //Create pokemon sprite - // Can't print any more forms, because we're going out of bounds for task data. - /* - else if (times < 21) - gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-14), 104 - y_offset_icons, 4, 0); //Create pokemon sprite - else - gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-21), 138 - y_offset_icons, 4, 0); //Create pokemon sprite - */ gSprites[gTasks[taskId].data[4+times]].oam.priority = 0; } } @@ -6877,7 +7008,7 @@ static void PrintForms(u8 taskId, u16 species) //If there are no forms print text if (times == 0) { - StringExpandPlaceholders(gStringVar4, gText_FORMS_NONE); + StringExpandPlaceholders(gStringVar4, sText_FORMS_NONE); PrintInfoScreenTextSmall(gStringVar4, base_x, base_y + base_y_offset*times); } } @@ -7699,17 +7830,17 @@ static void Task_LoadSearchMenu(u8 taskId) DeactivateAllTextPrinters(); PutWindowTilemap(0); if (!HGSS_DECAPPED) - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_MenuSearch_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuSearch_Gfx, 0x2000, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gPokedexPlusHGSS_MenuSearch_DECA_Gfx, 0x2000, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuSearch_DECA_Gfx, 0x2000, 0, 0); if (!IsNationalPokedexEnabled()) - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenSearchHoenn_Tilemap, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenSearchHoenn_Tilemap, 0, 0); else - CopyToBgTilemapBuffer(3, gPokedexPlusHGSS_ScreenSearchNational_Tilemap, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenSearchNational_Tilemap, 0, 0); if (!HGSS_DARK_MODE) - LoadPalette(gPokedexPlusHGSS_MenuSearch_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_MenuSearch_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); else - LoadPalette(gPokedexPlusHGSS_MenuSearch_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); + LoadPalette(sPokedexPlusHGSS_MenuSearch_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); gMain.state = 1; } break; @@ -8516,5 +8647,3 @@ static void ClearSearchParameterBoxText(void) { ClearSearchMenuRect(144, 8, 96, 96); } - -#endif diff --git a/src/pokemon.c b/src/pokemon.c index 9a8ad991e4..3eef17995d 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -62,7 +62,11 @@ #define NIGHT_EVO_HOUR_BEGIN 0 #define NIGHT_EVO_HOUR_END 12 +#if P_FRIENDSHIP_EVO_THRESHOLD >= GEN_9 +#define FRIENDSHIP_EVO_THRESHOLD 160 +#else #define FRIENDSHIP_EVO_THRESHOLD 220 +#endif struct SpeciesItem { @@ -1360,7 +1364,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_LINOONE_GALARIAN - 1] = NATIONAL_DEX_LINOONE, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN - 1] = NATIONAL_DEX_DARUMAKA, - [SPECIES_DARMANITAN_GALARIAN - 1] = NATIONAL_DEX_DARMANITAN, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE - 1] = NATIONAL_DEX_DARMANITAN, [SPECIES_YAMASK_GALARIAN - 1] = NATIONAL_DEX_YAMASK, [SPECIES_STUNFISK_GALARIAN - 1] = NATIONAL_DEX_STUNFISK, #endif @@ -1491,7 +1495,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_BASCULIN_WHITE_STRIPED - 1] = NATIONAL_DEX_BASCULIN, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE - 1] = NATIONAL_DEX_DARMANITAN, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN - 1] = NATIONAL_DEX_DARMANITAN, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE - 1] = NATIONAL_DEX_DARMANITAN, // Deerling [SPECIES_DEERLING_SUMMER - 1] = NATIONAL_DEX_DEERLING, [SPECIES_DEERLING_AUTUMN - 1] = NATIONAL_DEX_DEERLING, @@ -1582,7 +1586,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = // Xerneas [SPECIES_XERNEAS_ACTIVE - 1] = NATIONAL_DEX_XERNEAS, // Zygarde - [SPECIES_ZYGARDE_10 - 1] = NATIONAL_DEX_ZYGARDE, + [SPECIES_ZYGARDE_10_AURA_BREAK - 1] = NATIONAL_DEX_ZYGARDE, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT - 1] = NATIONAL_DEX_ZYGARDE, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT - 1] = NATIONAL_DEX_ZYGARDE, [SPECIES_ZYGARDE_COMPLETE - 1] = NATIONAL_DEX_ZYGARDE, @@ -1653,14 +1657,14 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = // Polteageist [SPECIES_POLTEAGEIST_ANTIQUE - 1] = NATIONAL_DEX_POLTEAGEIST, // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, // Eiscue [SPECIES_EISCUE_NOICE_FACE - 1] = NATIONAL_DEX_EISCUE, // Indeedee @@ -1681,7 +1685,43 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_CALYREX_ICE_RIDER - 1] = NATIONAL_DEX_CALYREX, [SPECIES_CALYREX_SHADOW_RIDER - 1] = NATIONAL_DEX_CALYREX, [SPECIES_ENAMORUS_THERIAN - 1] = NATIONAL_DEX_ENAMORUS, + // Basculegion [SPECIES_BASCULEGION_FEMALE - 1] = NATIONAL_DEX_BASCULEGION, + // Gigantamax Forms + [SPECIES_VENUSAUR_GIGANTAMAX - 1] = NATIONAL_DEX_VENUSAUR, + [SPECIES_CHARIZARD_GIGANTAMAX - 1] = NATIONAL_DEX_CHARIZARD, + [SPECIES_BLASTOISE_GIGANTAMAX - 1] = NATIONAL_DEX_BLASTOISE, + [SPECIES_BUTTERFREE_GIGANTAMAX - 1] = NATIONAL_DEX_BUTTERFREE, + [SPECIES_PIKACHU_GIGANTAMAX - 1] = NATIONAL_DEX_PIKACHU, + [SPECIES_MEOWTH_GIGANTAMAX - 1] = NATIONAL_DEX_MEOWTH, + [SPECIES_MACHAMP_GIGANTAMAX - 1] = NATIONAL_DEX_MACHAMP, + [SPECIES_GENGAR_GIGANTAMAX - 1] = NATIONAL_DEX_GENGAR, + [SPECIES_KINGLER_GIGANTAMAX - 1] = NATIONAL_DEX_KINGLER, + [SPECIES_LAPRAS_GIGANTAMAX - 1] = NATIONAL_DEX_LAPRAS, + [SPECIES_EEVEE_GIGANTAMAX - 1] = NATIONAL_DEX_EEVEE, + [SPECIES_SNORLAX_GIGANTAMAX - 1] = NATIONAL_DEX_SNORLAX, + [SPECIES_GARBODOR_GIGANTAMAX - 1] = NATIONAL_DEX_GARBODOR, + [SPECIES_MELMETAL_GIGANTAMAX - 1] = NATIONAL_DEX_MELMETAL, + [SPECIES_RILLABOOM_GIGANTAMAX - 1] = NATIONAL_DEX_RILLABOOM, + [SPECIES_CINDERACE_GIGANTAMAX - 1] = NATIONAL_DEX_CINDERACE, + [SPECIES_INTELEON_GIGANTAMAX - 1] = NATIONAL_DEX_INTELEON, + [SPECIES_CORVIKNIGHT_GIGANTAMAX - 1] = NATIONAL_DEX_CORVIKNIGHT, + [SPECIES_ORBEETLE_GIGANTAMAX - 1] = NATIONAL_DEX_ORBEETLE, + [SPECIES_DREDNAW_GIGANTAMAX - 1] = NATIONAL_DEX_DREDNAW, + [SPECIES_COALOSSAL_GIGANTAMAX - 1] = NATIONAL_DEX_COALOSSAL, + [SPECIES_FLAPPLE_GIGANTAMAX - 1] = NATIONAL_DEX_FLAPPLE, + [SPECIES_APPLETUN_GIGANTAMAX - 1] = NATIONAL_DEX_APPLETUN, + [SPECIES_SANDACONDA_GIGANTAMAX - 1] = NATIONAL_DEX_SANDACONDA, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX - 1] = NATIONAL_DEX_TOXTRICITY, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX - 1] = NATIONAL_DEX_TOXTRICITY, + [SPECIES_CENTISKORCH_GIGANTAMAX - 1] = NATIONAL_DEX_CENTISKORCH, + [SPECIES_HATTERENE_GIGANTAMAX - 1] = NATIONAL_DEX_HATTERENE, + [SPECIES_GRIMMSNARL_GIGANTAMAX - 1] = NATIONAL_DEX_GRIMMSNARL, + [SPECIES_ALCREMIE_GIGANTAMAX - 1] = NATIONAL_DEX_ALCREMIE, + [SPECIES_COPPERAJAH_GIGANTAMAX - 1] = NATIONAL_DEX_COPPERAJAH, + [SPECIES_DURALUDON_GIGANTAMAX - 1] = NATIONAL_DEX_DURALUDON, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX - 1] = NATIONAL_DEX_URSHIFU, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX - 1] = NATIONAL_DEX_URSHIFU, #endif }; @@ -2328,7 +2368,7 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_ARMALDO - 1] = ANIM_V_SHAKE, [SPECIES_FEEBAS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, [SPECIES_MILOTIC - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_CASTFORM - 1] = ANIM_H_SLIDE_WOBBLE, + [SPECIES_CASTFORM_NORMAL - 1] = ANIM_H_SLIDE_WOBBLE, [SPECIES_KECLEON - 1] = ANIM_FLICKER_INCREASING, [SPECIES_SHUPPET - 1] = ANIM_V_SLIDE_WOBBLE, [SPECIES_BANETTE - 1] = ANIM_CIRCULAR_STRETCH_TWICE, @@ -2363,7 +2403,7 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_GROUDON - 1] = ANIM_V_SHAKE, [SPECIES_RAYQUAZA - 1] = ANIM_H_SHAKE, [SPECIES_JIRACHI - 1] = ANIM_RISING_WOBBLE, - [SPECIES_DEOXYS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_DEOXYS_NORMAL - 1] = ANIM_GROW_VIBRATE, // Gen 4 [SPECIES_TURTWIG - 1] = ANIM_V_SQUISH_AND_BOUNCE, @@ -2391,8 +2431,8 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_RAMPARDOS - 1] = ANIM_V_SHAKE_TWICE, [SPECIES_SHIELDON - 1] = ANIM_V_SHAKE, [SPECIES_BASTIODON - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_BURMY - 1] = ANIM_V_STRETCH, - [SPECIES_WORMADAM - 1] = ANIM_SWING_CONVEX_FAST_SHORT, + [SPECIES_BURMY_PLANT_CLOAK - 1] = ANIM_V_STRETCH, + [SPECIES_WORMADAM_PLANT_CLOAK - 1] = ANIM_SWING_CONVEX_FAST_SHORT, [SPECIES_MOTHIM - 1] = ANIM_H_SLIDE_WOBBLE, [SPECIES_COMBEE - 1] = ANIM_V_SLIDE_WOBBLE, [SPECIES_VESPIQUEN - 1] = ANIM_LUNGE_GROW, @@ -2400,9 +2440,9 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_BUIZEL - 1] = ANIM_GROW_VIBRATE, [SPECIES_FLOATZEL - 1] = ANIM_H_JUMPS_V_STRETCH, [SPECIES_CHERUBI - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CHERRIM - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - [SPECIES_SHELLOS - 1] = ANIM_V_STRETCH, - [SPECIES_GASTRODON - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_CHERRIM_OVERCAST - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + [SPECIES_SHELLOS_WEST_SEA - 1] = ANIM_V_STRETCH, + [SPECIES_GASTRODON_WEST_SEA - 1] = ANIM_CIRCULAR_STRETCH_TWICE, [SPECIES_AMBIPOM - 1] = ANIM_BACK_AND_LUNGE, [SPECIES_DRIFLOON - 1] = ANIM_V_SLIDE_WOBBLE, [SPECIES_DRIFBLIM - 1] = ANIM_V_SLIDE_WOBBLE, @@ -2466,13 +2506,13 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_PALKIA - 1] = ANIM_V_SHAKE, [SPECIES_HEATRAN - 1] = ANIM_GLOW_ORANGE, [SPECIES_REGIGIGAS - 1] = ANIM_V_SHAKE, - [SPECIES_GIRATINA - 1] = ANIM_GROW_VIBRATE, + [SPECIES_GIRATINA_ALTERED - 1] = ANIM_GROW_VIBRATE, [SPECIES_CRESSELIA - 1] = ANIM_H_SLIDE_WOBBLE, [SPECIES_PHIONE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_MANAPHY - 1] = ANIM_SWING_CONVEX, [SPECIES_DARKRAI - 1] = ANIM_GLOW_BLACK, - [SPECIES_SHAYMIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARCEUS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_SHAYMIN_LAND - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ARCEUS_NORMAL - 1] = ANIM_GROW_VIBRATE, // Gen 5 [SPECIES_VICTINI - 1] = ANIM_H_JUMPS, @@ -2531,12 +2571,12 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_WHIMSICOTT - 1] = ANIM_SHRINK_GROW, [SPECIES_PETILIL - 1] = ANIM_H_JUMPS_V_STRETCH, [SPECIES_LILLIGANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BASCULIN - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_BASCULIN_RED_STRIPED - 1] = ANIM_TIP_MOVE_FORWARD, [SPECIES_SANDILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_KROKOROK - 1] = ANIM_V_STRETCH, [SPECIES_KROOKODILE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, [SPECIES_DARUMAKA - 1] = ANIM_SWING_CONCAVE, - [SPECIES_DARMANITAN - 1] = ANIM_CIRCULAR_STRETCH_TWICE, + [SPECIES_DARMANITAN_STANDARD_MODE - 1] = ANIM_CIRCULAR_STRETCH_TWICE, [SPECIES_MARACTUS - 1] = ANIM_H_JUMPS_V_STRETCH, [SPECIES_DWEBBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_CRUSTLE - 1] = ANIM_H_SLIDE_SLOW, @@ -2566,8 +2606,8 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_VANILLITE - 1] = ANIM_H_SLIDE, [SPECIES_VANILLISH - 1] = ANIM_GROW_VIBRATE, [SPECIES_VANILLUXE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DEERLING - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SAWSBUCK - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_DEERLING_SPRING - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SAWSBUCK_SPRING - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_EMOLGA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, [SPECIES_KARRABLAST - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ESCAVALIER - 1] = ANIM_BACK_AND_LUNGE, @@ -2622,14 +2662,14 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_COBALION - 1] = ANIM_V_STRETCH, [SPECIES_TERRAKION - 1] = ANIM_V_SHAKE_TWICE, [SPECIES_VIRIZION - 1] = ANIM_GROW_VIBRATE, - [SPECIES_TORNADUS - 1] = ANIM_FIGURE_8, - [SPECIES_THUNDURUS - 1] = ANIM_FIGURE_8, + [SPECIES_TORNADUS_INCARNATE - 1] = ANIM_FIGURE_8, + [SPECIES_THUNDURUS_INCARNATE - 1] = ANIM_FIGURE_8, [SPECIES_RESHIRAM - 1] = ANIM_V_SHAKE, [SPECIES_ZEKROM - 1] = ANIM_V_SHAKE, - [SPECIES_LANDORUS - 1] = ANIM_FIGURE_8, + [SPECIES_LANDORUS_INCARNATE - 1] = ANIM_FIGURE_8, [SPECIES_KYUREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_KELDEO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MELOETTA - 1] = ANIM_GROW_VIBRATE, + [SPECIES_KELDEO_ORDINARY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MELOETTA_ARIA - 1] = ANIM_GROW_VIBRATE, [SPECIES_GENESECT - 1] = ANIM_H_VIBRATE, // Gen 6 @@ -2649,22 +2689,22 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_TALONFLAME - 1] = ANIM_SWING_CONCAVE_FAST, [SPECIES_SCATTERBUG - 1] = ANIM_V_STRETCH, [SPECIES_SPEWPA - 1] = ANIM_V_SHAKE, - [SPECIES_VIVILLON - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_VIVILLON_ICY_SNOW - 1] = ANIM_ZIGZAG_SLOW, [SPECIES_LITLEO - 1] = ANIM_BACK_AND_LUNGE, [SPECIES_PYROAR - 1] = ANIM_V_SHAKE, - [SPECIES_FLABEBE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_FLOETTE - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_FLORGES - 1] = ANIM_GROW_VIBRATE, + [SPECIES_FLABEBE_RED_FLOWER - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, + [SPECIES_FLOETTE_RED_FLOWER - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_FLORGES_RED_FLOWER - 1] = ANIM_GROW_VIBRATE, [SPECIES_SKIDDO - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_GOGOAT - 1] = ANIM_V_STRETCH, [SPECIES_PANCHAM - 1] = ANIM_H_STRETCH, [SPECIES_PANGORO - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_FURFROU - 1] = ANIM_H_SLIDE, + [SPECIES_FURFROU_NATURAL - 1] = ANIM_H_SLIDE, [SPECIES_ESPURR - 1] = ANIM_V_STRETCH, - [SPECIES_MEOWSTIC - 1] = ANIM_GROW_VIBRATE, + [SPECIES_MEOWSTIC_MALE - 1] = ANIM_GROW_VIBRATE, [SPECIES_HONEDGE - 1] = ANIM_SWING_CONVEX, [SPECIES_DOUBLADE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_AEGISLASH - 1] = ANIM_H_VIBRATE, + [SPECIES_AEGISLASH_SHIELD - 1] = ANIM_H_VIBRATE, [SPECIES_SPRITZEE - 1] = ANIM_V_SLIDE_WOBBLE, [SPECIES_AROMATISSE - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, [SPECIES_SWIRLIX - 1] = ANIM_H_JUMPS_V_STRETCH, @@ -2693,17 +2733,17 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_KLEFKI - 1] = ANIM_FOUR_PETAL, [SPECIES_PHANTUMP - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_TREVENANT - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_PUMPKABOO - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_GOURGEIST - 1] = ANIM_SHRINK_GROW, + [SPECIES_PUMPKABOO_AVERAGE - 1] = ANIM_V_SLIDE_WOBBLE, + [SPECIES_GOURGEIST_AVERAGE - 1] = ANIM_SHRINK_GROW, [SPECIES_BERGMITE - 1] = ANIM_LUNGE_GROW, [SPECIES_AVALUGG - 1] = ANIM_V_SHAKE, [SPECIES_NOIBAT - 1] = ANIM_RISING_WOBBLE, [SPECIES_NOIVERN - 1] = ANIM_V_STRETCH, - [SPECIES_XERNEAS - 1] = ANIM_GROW_VIBRATE, + [SPECIES_XERNEAS_NEUTRAL - 1] = ANIM_GROW_VIBRATE, [SPECIES_YVELTAL - 1] = ANIM_FRONT_FLIP, - [SPECIES_ZYGARDE - 1] = ANIM_TIP_MOVE_FORWARD, + [SPECIES_ZYGARDE_50_AURA_BREAK - 1] = ANIM_TIP_MOVE_FORWARD, [SPECIES_DIANCIE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HOOPA - 1] = ANIM_ZIGZAG_SLOW, + [SPECIES_HOOPA_CONFINED - 1] = ANIM_ZIGZAG_SLOW, [SPECIES_VOLCANION - 1] = ANIM_V_SHAKE_TWICE, // Gen 7 @@ -2726,12 +2766,12 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_VIKAVOLT - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, [SPECIES_CRABRAWLER - 1] = ANIM_V_SHAKE, [SPECIES_CRABOMINABLE - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_ORICORIO - 1] = ANIM_CONCAVE_ARC_SMALL, + [SPECIES_ORICORIO_BAILE - 1] = ANIM_CONCAVE_ARC_SMALL, [SPECIES_CUTIEFLY - 1] = ANIM_V_SLIDE_WOBBLE, [SPECIES_RIBOMBEE - 1] = ANIM_CONVEX_DOUBLE_ARC_TWICE, [SPECIES_ROCKRUFF - 1] = ANIM_V_STRETCH, - [SPECIES_LYCANROC - 1] = ANIM_V_SHAKE, - [SPECIES_WISHIWASHI - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, + [SPECIES_LYCANROC_MIDDAY - 1] = ANIM_V_SHAKE, + [SPECIES_WISHIWASHI_SOLO - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, [SPECIES_MAREANIE - 1] = ANIM_GLOW_PURPLE, [SPECIES_TOXAPEX - 1] = ANIM_SHAKE_GLOW_PURPLE_SLOW, [SPECIES_MUDBRAY - 1] = ANIM_V_SHAKE, @@ -2758,12 +2798,12 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_PALOSSAND - 1] = ANIM_H_VIBRATE, [SPECIES_PYUKUMUKU - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_TYPE_NULL - 1] = ANIM_H_SHAKE, - [SPECIES_SILVALLY - 1] = ANIM_V_SHAKE, - [SPECIES_MINIOR - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, + [SPECIES_SILVALLY_NORMAL - 1] = ANIM_V_SHAKE, + [SPECIES_MINIOR_METEOR_RED - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, [SPECIES_KOMALA - 1] = ANIM_H_DIP, [SPECIES_TURTONATOR - 1] = ANIM_SHAKE_GLOW_RED, [SPECIES_TOGEDEMARU - 1] = ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_MIMIKYU - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + [SPECIES_MIMIKYU_DISGUISED - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, [SPECIES_BRUXISH - 1] = ANIM_RISING_WOBBLE, [SPECIES_DRAMPA - 1] = ANIM_V_SHAKE, [SPECIES_DHELMISE - 1] = ANIM_SWING_CONVEX, @@ -2836,13 +2876,13 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_ARROKUDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_BARRASKEWDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_TOXEL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TOXTRICITY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_TOXTRICITY_AMPED - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_SIZZLIPEDE - 1] = ANIM_H_VIBRATE, [SPECIES_CENTISKORCH - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_CLOBBOPUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_GRAPPLOCT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SINISTEA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_POLTEAGEIST - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SINISTEA_PHONY - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_POLTEAGEIST_PHONY - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_HATENNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_HATTREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_HATTERENE - 1] = ANIM_V_SQUISH_AND_BOUNCE, @@ -2856,15 +2896,15 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_MR_RIME - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_RUNERIGUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_MILCERY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_FALINKS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_PINCURCHIN - 1] = ANIM_SHRINK_GROW_VIBRATE, [SPECIES_SNOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_FROSMOTH - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_STONJOURNER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_EISCUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_INDEEDEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MORPEKO - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_EISCUE_ICE_FACE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_INDEEDEE_MALE - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_MORPEKO_FULL_BELLY - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_CUFANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_COPPERAJAH - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_DRACOZOLT - 1] = ANIM_V_SQUISH_AND_BOUNCE, @@ -2875,11 +2915,11 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_DREEPY - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_DRAKLOAK - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_DRAGAPULT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZACIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZAMAZENTA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ETERNATUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_KUBFU - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_URSHIFU - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ZARUDE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_REGIELEKI - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_REGIDRAGO - 1] = ANIM_V_SQUISH_AND_BOUNCE, @@ -2889,10 +2929,10 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_WYRDEER - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_KLEAVOR - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_URSALUNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BASCULEGION - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BASCULEGION_MALE - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_SNEASLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_OVERQWIL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ENAMORUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ENAMORUS_INCARNATE - 1] = ANIM_V_SQUISH_AND_BOUNCE, // Gen 3 Forms [SPECIES_CASTFORM_SUNNY - 1] = ANIM_GROW_VIBRATE, @@ -3010,7 +3050,7 @@ const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_GOURGEIST_LARGE - 1] = ANIM_SHRINK_GROW, [SPECIES_GOURGEIST_SUPER - 1] = ANIM_SHRINK_GROW, [SPECIES_XERNEAS_ACTIVE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ZYGARDE_10 - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ZYGARDE_10_AURA_BREAK - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT - 1] = ANIM_TIP_MOVE_FORWARD, [SPECIES_ZYGARDE_COMPLETE - 1] = ANIM_GROW_VIBRATE, @@ -7744,10 +7784,26 @@ bool32 IsSpeciesInHoennDex(u16 species) u16 GetBattleBGM(void) { - if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) - return MUS_VS_KYOGRE_GROUDON; - else if (gBattleTypeFlags & BATTLE_TYPE_REGI) - return MUS_VS_REGI; + if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) + { + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_RAYQUAZA: + return MUS_VS_RAYQUAZA; + case SPECIES_KYOGRE: + case SPECIES_GROUDON: + return MUS_VS_KYOGRE_GROUDON; + case SPECIES_REGIROCK: + case SPECIES_REGICE: + case SPECIES_REGISTEEL: + case SPECIES_REGIGIGAS: + case SPECIES_REGIELEKI: + case SPECIES_REGIDRAGO: + return MUS_VS_REGI; + default: + return MUS_RG_VS_LEGEND; + } + } else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) return MUS_VS_TRAINER; else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 958bc3ffeb..1070c22aa8 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -569,7 +569,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_ARMALDO] = BACK_ANIM_V_SHAKE, [SPECIES_FEEBAS] = BACK_ANIM_H_SPRING, [SPECIES_MILOTIC] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_CASTFORM] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_CASTFORM_NORMAL] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_KECLEON] = BACK_ANIM_H_VIBRATE, [SPECIES_SHUPPET] = BACK_ANIM_H_VIBRATE, [SPECIES_BANETTE] = BACK_ANIM_H_VIBRATE, @@ -604,7 +604,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_GROUDON] = BACK_ANIM_SHAKE_GLOW_RED, [SPECIES_RAYQUAZA] = BACK_ANIM_GROW_STUTTER, [SPECIES_JIRACHI] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_DEOXYS_NORMAL] = BACK_ANIM_SHRINK_GROW_VIBRATE, // Gen 4 [SPECIES_TURTWIG] = BACK_ANIM_H_SLIDE, @@ -632,8 +632,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_RAMPARDOS] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_SHIELDON] = BACK_ANIM_V_SHAKE, [SPECIES_BASTIODON] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_BURMY] = BACK_ANIM_H_SHAKE, - [SPECIES_WORMADAM] = BACK_ANIM_V_SHAKE, + [SPECIES_BURMY_PLANT_CLOAK] = BACK_ANIM_H_SHAKE, + [SPECIES_WORMADAM_PLANT_CLOAK] = BACK_ANIM_V_SHAKE, [SPECIES_MOTHIM] = BACK_ANIM_H_SHAKE, [SPECIES_COMBEE] = BACK_ANIM_TRIANGLE_DOWN, [SPECIES_VESPIQUEN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, @@ -641,8 +641,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_BUIZEL] = BACK_ANIM_H_SLIDE, [SPECIES_FLOATZEL] = BACK_ANIM_V_STRETCH, [SPECIES_CHERUBI] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CHERRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_SHELLOS] = BACK_ANIM_H_SPRING, + [SPECIES_CHERRIM_OVERCAST] = BACK_ANIM_V_STRETCH, + [SPECIES_SHELLOS_WEST_SEA] = BACK_ANIM_H_SPRING, [SPECIES_GASTRODON] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_AMBIPOM] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_DRIFLOON] = BACK_ANIM_CONCAVE_ARC_SMALL, @@ -707,13 +707,13 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_PALKIA] = BACK_ANIM_H_SHAKE, [SPECIES_HEATRAN] = BACK_ANIM_SHAKE_GLOW_RED, [SPECIES_REGIGIGAS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_GIRATINA] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_GIRATINA_ALTERED] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_CRESSELIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_PHIONE] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_MANAPHY] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_DARKRAI] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SHAYMIN] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_ARCEUS] = BACK_ANIM_GROW, + [SPECIES_SHAYMIN_LAND] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_ARCEUS_NORMAL] = BACK_ANIM_GROW, // Gen 5 [SPECIES_VICTINI] = BACK_ANIM_H_SHAKE, @@ -772,12 +772,12 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_WHIMSICOTT] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_PETILIL] = BACK_ANIM_V_STRETCH, [SPECIES_LILLIGANT] = BACK_ANIM_SHRINK_GROW, - [SPECIES_BASCULIN] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_BASCULIN_RED_STRIPED] = BACK_ANIM_JOLT_RIGHT, [SPECIES_SANDILE] = BACK_ANIM_H_SLIDE, [SPECIES_KROKOROK] = BACK_ANIM_V_STRETCH, [SPECIES_KROOKODILE] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_DARUMAKA] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_DARMANITAN] = BACK_ANIM_V_SHAKE_H_SLIDE, + [SPECIES_DARMANITAN_STANDARD_MODE] = BACK_ANIM_V_SHAKE_H_SLIDE, [SPECIES_MARACTUS] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_DWEBBLE] = BACK_ANIM_H_SLIDE, [SPECIES_CRUSTLE] = BACK_ANIM_V_SHAKE_LOW, @@ -807,8 +807,8 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_VANILLITE] = BACK_ANIM_H_SLIDE, [SPECIES_VANILLISH] = BACK_ANIM_H_SLIDE, [SPECIES_VANILLUXE] = BACK_ANIM_H_SHAKE, - [SPECIES_DEERLING] = BACK_ANIM_H_SLIDE, - [SPECIES_SAWSBUCK] = BACK_ANIM_DIP_RIGHT_SIDE, + [SPECIES_DEERLING_SPRING] = BACK_ANIM_H_SLIDE, + [SPECIES_SAWSBUCK_SPRING] = BACK_ANIM_DIP_RIGHT_SIDE, [SPECIES_EMOLGA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_KARRABLAST] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_ESCAVALIER] = BACK_ANIM_JOLT_RIGHT, @@ -863,14 +863,14 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_COBALION] = BACK_ANIM_V_STRETCH, [SPECIES_TERRAKION] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_VIRIZION] = BACK_ANIM_H_SHAKE, - [SPECIES_TORNADUS] = BACK_ANIM_V_SHAKE, - [SPECIES_THUNDURUS] = BACK_ANIM_V_SHAKE, + [SPECIES_TORNADUS_INCARNATE] = BACK_ANIM_V_SHAKE, + [SPECIES_THUNDURUS_INCARNATE] = BACK_ANIM_V_SHAKE, [SPECIES_RESHIRAM] = BACK_ANIM_SHAKE_GLOW_RED, [SPECIES_ZEKROM] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_LANDORUS] = BACK_ANIM_V_SHAKE, + [SPECIES_LANDORUS_INCARNATE] = BACK_ANIM_V_SHAKE, [SPECIES_KYUREM] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_KELDEO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MELOETTA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_KELDEO_ORDINARY] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_MELOETTA_ARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_GENESECT] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, // Gen 6 @@ -890,22 +890,22 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_TALONFLAME] = BACK_ANIM_SHAKE_GLOW_RED, [SPECIES_SCATTERBUG] = BACK_ANIM_H_SLIDE, [SPECIES_SPEWPA] = BACK_ANIM_H_VIBRATE, - [SPECIES_VIVILLON] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + [SPECIES_VIVILLON_ICY_SNOW] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_LITLEO] = BACK_ANIM_CONCAVE_ARC_SMALL, [SPECIES_PYROAR] = BACK_ANIM_H_STRETCH, - [SPECIES_FLABEBE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FLOETTE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_FLORGES] = BACK_ANIM_SHRINK_GROW_VIBRATE, + [SPECIES_FLABEBE_RED_FLOWER] = BACK_ANIM_CONCAVE_ARC_SMALL, + [SPECIES_FLOETTE_RED_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_FLORGES_RED_FLOWER] = BACK_ANIM_SHRINK_GROW_VIBRATE, [SPECIES_SKIDDO] = BACK_ANIM_CONCAVE_ARC_SMALL, [SPECIES_GOGOAT] = BACK_ANIM_DIP_RIGHT_SIDE, [SPECIES_PANCHAM] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_PANGORO] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_FURFROU] = BACK_ANIM_V_STRETCH, + [SPECIES_FURFROU_NATURAL] = BACK_ANIM_V_STRETCH, [SPECIES_ESPURR] = BACK_ANIM_H_SLIDE, - [SPECIES_MEOWSTIC] = BACK_ANIM_CONCAVE_ARC_LARGE, + [SPECIES_MEOWSTIC_MALE] = BACK_ANIM_CONCAVE_ARC_LARGE, [SPECIES_HONEDGE] = BACK_ANIM_V_SHAKE, [SPECIES_DOUBLADE] = BACK_ANIM_H_SHAKE, - [SPECIES_AEGISLASH] = BACK_ANIM_H_VIBRATE, + [SPECIES_AEGISLASH_SHIELD] = BACK_ANIM_H_VIBRATE, [SPECIES_SPRITZEE] = BACK_ANIM_TRIANGLE_DOWN, [SPECIES_AROMATISSE] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_SWIRLIX] = BACK_ANIM_H_SPRING, @@ -934,17 +934,17 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_KLEFKI] = BACK_ANIM_TRIANGLE_DOWN, [SPECIES_PHANTUMP] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, [SPECIES_TREVENANT] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_PUMPKABOO] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GOURGEIST] = BACK_ANIM_V_STRETCH, + [SPECIES_PUMPKABOO_AVERAGE] = BACK_ANIM_TRIANGLE_DOWN, + [SPECIES_GOURGEIST_AVERAGE] = BACK_ANIM_V_STRETCH, [SPECIES_BERGMITE] = BACK_ANIM_H_SHAKE, [SPECIES_AVALUGG] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_NOIBAT] = BACK_ANIM_TRIANGLE_DOWN, [SPECIES_NOIVERN] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_XERNEAS] = BACK_ANIM_V_SHAKE_LOW, + [SPECIES_XERNEAS_NEUTRAL] = BACK_ANIM_V_SHAKE_LOW, [SPECIES_YVELTAL] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_ZYGARDE] = BACK_ANIM_V_STRETCH, + [SPECIES_ZYGARDE_50_AURA_BREAK] = BACK_ANIM_V_STRETCH, [SPECIES_DIANCIE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_HOOPA] = BACK_ANIM_CONVEX_DOUBLE_ARC, + [SPECIES_HOOPA_CONFINED] = BACK_ANIM_CONVEX_DOUBLE_ARC, [SPECIES_VOLCANION] = BACK_ANIM_SHAKE_GLOW_RED, // Gen 7 todo: assign @@ -1251,7 +1251,7 @@ static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = [SPECIES_GOURGEIST_LARGE] = BACK_ANIM_V_STRETCH, [SPECIES_GOURGEIST_SUPER] = BACK_ANIM_V_STRETCH, [SPECIES_XERNEAS_ACTIVE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_ZYGARDE_10] = BACK_ANIM_JOLT_RIGHT, + [SPECIES_ZYGARDE_10_AURA_BREAK] = BACK_ANIM_JOLT_RIGHT, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, [SPECIES_ZYGARDE_COMPLETE] = BACK_ANIM_SHAKE_GLOW_GREEN, diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index a6e4101d38..2207ebfa1e 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -386,7 +386,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_ARON] = gMonIcon_Aron, [SPECIES_LAIRON] = gMonIcon_Lairon, [SPECIES_AGGRON] = gMonIcon_Aggron, - [SPECIES_CASTFORM] = gMonIcon_Castform, + [SPECIES_CASTFORM_NORMAL] = gMonIcon_CastformNormal, [SPECIES_VOLBEAT] = gMonIcon_Volbeat, [SPECIES_ILLUMISE] = gMonIcon_Illumise, [SPECIES_LILEEP] = gMonIcon_Lileep, @@ -411,7 +411,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_LATIAS] = gMonIcon_Latias, [SPECIES_LATIOS] = gMonIcon_Latios, [SPECIES_JIRACHI] = gMonIcon_Jirachi, - [SPECIES_DEOXYS] = gMonIcon_Deoxys, + [SPECIES_DEOXYS_NORMAL] = gMonIcon_DeoxysNormal, [SPECIES_CHIMECHO] = gMonIcon_Chimecho, #if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = gMonIcon_Turtwig, @@ -439,8 +439,8 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = gMonIcon_Rampardos, [SPECIES_SHIELDON] = gMonIcon_Shieldon, [SPECIES_BASTIODON] = gMonIcon_Bastiodon, - [SPECIES_BURMY] = gMonIcon_Burmy, - [SPECIES_WORMADAM] = gMonIcon_Wormadam, + [SPECIES_BURMY_PLANT_CLOAK] = gMonIcon_BurmyPlantCloak, + [SPECIES_WORMADAM_PLANT_CLOAK] = gMonIcon_WormadamPlantCloak, [SPECIES_MOTHIM] = gMonIcon_Mothim, [SPECIES_COMBEE] = gMonIcon_Combee, [SPECIES_VESPIQUEN] = gMonIcon_Vespiquen, @@ -448,9 +448,9 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = gMonIcon_Buizel, [SPECIES_FLOATZEL] = gMonIcon_Floatzel, [SPECIES_CHERUBI] = gMonIcon_Cherubi, - [SPECIES_CHERRIM] = gMonIcon_Cherrim, - [SPECIES_SHELLOS] = gMonIcon_Shellos, - [SPECIES_GASTRODON] = gMonIcon_Gastrodon, + [SPECIES_CHERRIM_OVERCAST] = gMonIcon_CherrimOvercast, + [SPECIES_SHELLOS_WEST_SEA] = gMonIcon_ShellosWestSea, + [SPECIES_GASTRODON_WEST_SEA] = gMonIcon_GastrodonWestSea, [SPECIES_AMBIPOM] = gMonIcon_Ambipom, [SPECIES_DRIFLOON] = gMonIcon_Drifloon, [SPECIES_DRIFBLIM] = gMonIcon_Drifblim, @@ -514,13 +514,13 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_PALKIA] = gMonIcon_Palkia, [SPECIES_HEATRAN] = gMonIcon_Heatran, [SPECIES_REGIGIGAS] = gMonIcon_Regigigas, - [SPECIES_GIRATINA] = gMonIcon_Giratina, + [SPECIES_GIRATINA_ALTERED] = gMonIcon_GiratinaAltered, [SPECIES_CRESSELIA] = gMonIcon_Cresselia, [SPECIES_PHIONE] = gMonIcon_Phione, [SPECIES_MANAPHY] = gMonIcon_Manaphy, [SPECIES_DARKRAI] = gMonIcon_Darkrai, - [SPECIES_SHAYMIN] = gMonIcon_Shaymin, - [SPECIES_ARCEUS] = gMonIcon_Arceus, + [SPECIES_SHAYMIN_LAND] = gMonIcon_ShayminLand, + [SPECIES_ARCEUS_NORMAL] = gMonIcon_Arceus, #endif #if P_GEN_5_POKEMON == TRUE [SPECIES_VICTINI] = gMonIcon_Victini, @@ -579,12 +579,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = gMonIcon_Whimsicott, [SPECIES_PETILIL] = gMonIcon_Petilil, [SPECIES_LILLIGANT] = gMonIcon_Lilligant, - [SPECIES_BASCULIN] = gMonIcon_Basculin, + [SPECIES_BASCULIN_RED_STRIPED] = gMonIcon_BasculinRedStriped, [SPECIES_SANDILE] = gMonIcon_Sandile, [SPECIES_KROKOROK] = gMonIcon_Krokorok, [SPECIES_KROOKODILE] = gMonIcon_Krookodile, [SPECIES_DARUMAKA] = gMonIcon_Darumaka, - [SPECIES_DARMANITAN] = gMonIcon_Darmanitan, + [SPECIES_DARMANITAN_STANDARD_MODE] = gMonIcon_DarmanitanStandardMode, [SPECIES_MARACTUS] = gMonIcon_Maractus, [SPECIES_DWEBBLE] = gMonIcon_Dwebble, [SPECIES_CRUSTLE] = gMonIcon_Crustle, @@ -614,8 +614,8 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = gMonIcon_Vanillite, [SPECIES_VANILLISH] = gMonIcon_Vanillish, [SPECIES_VANILLUXE] = gMonIcon_Vanilluxe, - [SPECIES_DEERLING] = gMonIcon_Deerling, - [SPECIES_SAWSBUCK] = gMonIcon_Sawsbuck, + [SPECIES_DEERLING_SPRING] = gMonIcon_DeerlingSpring, + [SPECIES_SAWSBUCK_SPRING] = gMonIcon_SawsbuckSpring, [SPECIES_EMOLGA] = gMonIcon_Emolga, [SPECIES_KARRABLAST] = gMonIcon_Karrablast, [SPECIES_ESCAVALIER] = gMonIcon_Escavalier, @@ -670,14 +670,14 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_COBALION] = gMonIcon_Cobalion, [SPECIES_TERRAKION] = gMonIcon_Terrakion, [SPECIES_VIRIZION] = gMonIcon_Virizion, - [SPECIES_TORNADUS] = gMonIcon_Tornadus, - [SPECIES_THUNDURUS] = gMonIcon_Thundurus, + [SPECIES_TORNADUS_INCARNATE] = gMonIcon_TornadusIncarnate, + [SPECIES_THUNDURUS_INCARNATE] = gMonIcon_ThundurusIncarnate, [SPECIES_RESHIRAM] = gMonIcon_Reshiram, [SPECIES_ZEKROM] = gMonIcon_Zekrom, - [SPECIES_LANDORUS] = gMonIcon_Landorus, + [SPECIES_LANDORUS_INCARNATE] = gMonIcon_LandorusIncarnate, [SPECIES_KYUREM] = gMonIcon_Kyurem, - [SPECIES_KELDEO] = gMonIcon_Keldeo, - [SPECIES_MELOETTA] = gMonIcon_Meloetta, + [SPECIES_KELDEO_ORDINARY] = gMonIcon_KeldeoOrdinary, + [SPECIES_MELOETTA_ARIA] = gMonIcon_MeloettaAria, [SPECIES_GENESECT] = gMonIcon_Genesect, #endif #if P_GEN_6_POKEMON == TRUE @@ -697,22 +697,22 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = gMonIcon_Talonflame, [SPECIES_SCATTERBUG] = gMonIcon_Scatterbug, [SPECIES_SPEWPA] = gMonIcon_Spewpa, - [SPECIES_VIVILLON] = gMonIcon_Vivillon, + [SPECIES_VIVILLON_ICY_SNOW] = gMonIcon_VivillonIcySnow, [SPECIES_LITLEO] = gMonIcon_Litleo, [SPECIES_PYROAR] = gMonIcon_Pyroar, - [SPECIES_FLABEBE] = gMonIcon_Flabebe, - [SPECIES_FLOETTE] = gMonIcon_Floette, - [SPECIES_FLORGES] = gMonIcon_Florges, + [SPECIES_FLABEBE_RED_FLOWER] = gMonIcon_FlabebeRedFlower, + [SPECIES_FLOETTE_RED_FLOWER] = gMonIcon_FloetteRedFlower, + [SPECIES_FLORGES_RED_FLOWER] = gMonIcon_FlorgesRedFlower, [SPECIES_SKIDDO] = gMonIcon_Skiddo, [SPECIES_GOGOAT] = gMonIcon_Gogoat, [SPECIES_PANCHAM] = gMonIcon_Pancham, [SPECIES_PANGORO] = gMonIcon_Pangoro, - [SPECIES_FURFROU] = gMonIcon_Furfrou, + [SPECIES_FURFROU_NATURAL] = gMonIcon_FurfrouNatural, [SPECIES_ESPURR] = gMonIcon_Espurr, - [SPECIES_MEOWSTIC] = gMonIcon_Meowstic, + [SPECIES_MEOWSTIC_MALE] = gMonIcon_MeowsticMale, [SPECIES_HONEDGE] = gMonIcon_Honedge, [SPECIES_DOUBLADE] = gMonIcon_Doublade, - [SPECIES_AEGISLASH] = gMonIcon_Aegislash, + [SPECIES_AEGISLASH_SHIELD] = gMonIcon_AegislashShield, [SPECIES_SPRITZEE] = gMonIcon_Spritzee, [SPECIES_AROMATISSE] = gMonIcon_Aromatisse, [SPECIES_SWIRLIX] = gMonIcon_Swirlix, @@ -741,17 +741,17 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = gMonIcon_Klefki, [SPECIES_PHANTUMP] = gMonIcon_Phantump, [SPECIES_TREVENANT] = gMonIcon_Trevenant, - [SPECIES_PUMPKABOO] = gMonIcon_Pumpkaboo, - [SPECIES_GOURGEIST] = gMonIcon_Gourgeist, + [SPECIES_PUMPKABOO_AVERAGE] = gMonIcon_Pumpkaboo, + [SPECIES_GOURGEIST_AVERAGE] = gMonIcon_Gourgeist, [SPECIES_BERGMITE] = gMonIcon_Bergmite, [SPECIES_AVALUGG] = gMonIcon_Avalugg, [SPECIES_NOIBAT] = gMonIcon_Noibat, [SPECIES_NOIVERN] = gMonIcon_Noivern, - [SPECIES_XERNEAS] = gMonIcon_Xerneas, + [SPECIES_XERNEAS_NEUTRAL] = gMonIcon_XerneasNeutral, [SPECIES_YVELTAL] = gMonIcon_Yveltal, - [SPECIES_ZYGARDE] = gMonIcon_Zygarde, + [SPECIES_ZYGARDE_50_AURA_BREAK] = gMonIcon_Zygarde50, [SPECIES_DIANCIE] = gMonIcon_Diancie, - [SPECIES_HOOPA] = gMonIcon_Hoopa, + [SPECIES_HOOPA_CONFINED] = gMonIcon_HoopaConfined, [SPECIES_VOLCANION] = gMonIcon_Volcanion, #endif #if P_GEN_7_POKEMON == TRUE @@ -774,12 +774,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = gMonIcon_Vikavolt, [SPECIES_CRABRAWLER] = gMonIcon_Crabrawler, [SPECIES_CRABOMINABLE] = gMonIcon_Crabominable, - [SPECIES_ORICORIO] = gMonIcon_Oricorio, + [SPECIES_ORICORIO_BAILE] = gMonIcon_OricorioBaile, [SPECIES_CUTIEFLY] = gMonIcon_Cutiefly, [SPECIES_RIBOMBEE] = gMonIcon_Ribombee, [SPECIES_ROCKRUFF] = gMonIcon_Rockruff, - [SPECIES_LYCANROC] = gMonIcon_Lycanroc, - [SPECIES_WISHIWASHI] = gMonIcon_Wishiwashi, + [SPECIES_LYCANROC_MIDDAY] = gMonIcon_LycanrocMidday, + [SPECIES_WISHIWASHI_SOLO] = gMonIcon_WishiwashiSolo, [SPECIES_MAREANIE] = gMonIcon_Mareanie, [SPECIES_TOXAPEX] = gMonIcon_Toxapex, [SPECIES_MUDBRAY] = gMonIcon_Mudbray, @@ -806,12 +806,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = gMonIcon_Palossand, [SPECIES_PYUKUMUKU] = gMonIcon_Pyukumuku, [SPECIES_TYPE_NULL] = gMonIcon_TypeNull, - [SPECIES_SILVALLY] = gMonIcon_Silvally, - [SPECIES_MINIOR] = gMonIcon_Minior, + [SPECIES_SILVALLY_NORMAL] = gMonIcon_Silvally, + [SPECIES_MINIOR_METEOR_RED] = gMonIcon_MiniorMeteor, [SPECIES_KOMALA] = gMonIcon_Komala, [SPECIES_TURTONATOR] = gMonIcon_Turtonator, [SPECIES_TOGEDEMARU] = gMonIcon_Togedemaru, - [SPECIES_MIMIKYU] = gMonIcon_Mimikyu, + [SPECIES_MIMIKYU_DISGUISED] = gMonIcon_MimikyuDisguised, [SPECIES_BRUXISH] = gMonIcon_Bruxish, [SPECIES_DRAMPA] = gMonIcon_Drampa, [SPECIES_DHELMISE] = gMonIcon_Dhelmise, @@ -884,13 +884,13 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = gMonIcon_Arrokuda, [SPECIES_BARRASKEWDA] = gMonIcon_Barraskewda, [SPECIES_TOXEL] = gMonIcon_Toxel, - [SPECIES_TOXTRICITY] = gMonIcon_Toxtricity, + [SPECIES_TOXTRICITY_AMPED] = gMonIcon_ToxtricityAmped, [SPECIES_SIZZLIPEDE] = gMonIcon_Sizzlipede, [SPECIES_CENTISKORCH] = gMonIcon_Centiskorch, [SPECIES_CLOBBOPUS] = gMonIcon_Clobbopus, [SPECIES_GRAPPLOCT] = gMonIcon_Grapploct, - [SPECIES_SINISTEA] = gMonIcon_Sinistea, - [SPECIES_POLTEAGEIST] = gMonIcon_Polteageist, + [SPECIES_SINISTEA_PHONY] = gMonIcon_Sinistea, + [SPECIES_POLTEAGEIST_PHONY] = gMonIcon_Polteageist, [SPECIES_HATENNA] = gMonIcon_Hatenna, [SPECIES_HATTREM] = gMonIcon_Hattrem, [SPECIES_HATTERENE] = gMonIcon_Hatterene, @@ -904,15 +904,15 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = gMonIcon_MrRime, [SPECIES_RUNERIGUS] = gMonIcon_Runerigus, [SPECIES_MILCERY] = gMonIcon_Milcery, - [SPECIES_ALCREMIE] = gMonIcon_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonIcon_Alcremie, [SPECIES_FALINKS] = gMonIcon_Falinks, [SPECIES_PINCURCHIN] = gMonIcon_Pincurchin, [SPECIES_SNOM] = gMonIcon_Snom, [SPECIES_FROSMOTH] = gMonIcon_Frosmoth, [SPECIES_STONJOURNER] = gMonIcon_Stonjourner, - [SPECIES_EISCUE] = gMonIcon_Eiscue, - [SPECIES_INDEEDEE] = gMonIcon_Indeedee, - [SPECIES_MORPEKO] = gMonIcon_Morpeko, + [SPECIES_EISCUE_ICE_FACE] = gMonIcon_EiscueIceFace, + [SPECIES_INDEEDEE_MALE] = gMonIcon_IndeedeeMale, + [SPECIES_MORPEKO_FULL_BELLY] = gMonIcon_MorpekoFullBelly, [SPECIES_CUFANT] = gMonIcon_Cufant, [SPECIES_COPPERAJAH] = gMonIcon_Copperajah, [SPECIES_DRACOZOLT] = gMonIcon_Dracozolt, @@ -923,11 +923,11 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_DREEPY] = gMonIcon_Dreepy, [SPECIES_DRAKLOAK] = gMonIcon_Drakloak, [SPECIES_DRAGAPULT] = gMonIcon_Dragapult, - [SPECIES_ZACIAN] = gMonIcon_Zacian, - [SPECIES_ZAMAZENTA] = gMonIcon_Zamazenta, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = gMonIcon_ZacianHeroOfManyBattles, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = gMonIcon_ZamazentaHeroOfManyBattles, [SPECIES_ETERNATUS] = gMonIcon_Eternatus, [SPECIES_KUBFU] = gMonIcon_Kubfu, - [SPECIES_URSHIFU] = gMonIcon_Urshifu, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = gMonIcon_UrshifuSingleStrikeStyle, [SPECIES_ZARUDE] = gMonIcon_Zarude, [SPECIES_REGIELEKI] = gMonIcon_Regieleki, [SPECIES_REGIDRAGO] = gMonIcon_Regidrago, @@ -937,10 +937,10 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_WYRDEER] = gMonIcon_Wyrdeer, [SPECIES_KLEAVOR] = gMonIcon_Kleavor, [SPECIES_URSALUNA] = gMonIcon_Ursaluna, - [SPECIES_BASCULEGION] = gMonIcon_Basculegion, + [SPECIES_BASCULEGION_MALE] = gMonIcon_BasculegionMale, [SPECIES_SNEASLER] = gMonIcon_Sneasler, [SPECIES_OVERQWIL] = gMonIcon_Overqwil, - [SPECIES_ENAMORUS] = gMonIcon_Enamorus, + [SPECIES_ENAMORUS_INCARNATE] = gMonIcon_EnamorusIncarnate, #endif [SPECIES_VENUSAUR_MEGA] = gMonIcon_VenusaurMega, [SPECIES_CHARIZARD_MEGA_X] = gMonIcon_CharizardMegaX, @@ -1033,7 +1033,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_LINOONE_GALARIAN] = gMonIcon_LinooneGalarian, #if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = gMonIcon_DarumakaGalarian, - [SPECIES_DARMANITAN_GALARIAN] = gMonIcon_DarmanitanGalarian, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = gMonIcon_DarmanitanGalarianStandardMode, [SPECIES_YAMASK_GALARIAN] = gMonIcon_YamaskGalarian, [SPECIES_STUNFISK_GALARIAN] = gMonIcon_StunfiskGalarian, #endif @@ -1146,7 +1146,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_BASCULIN_BLUE_STRIPED] = gMonIcon_BasculinBlueStriped, [SPECIES_BASCULIN_WHITE_STRIPED] = gMonIcon_BasculinWhiteStriped, [SPECIES_DARMANITAN_ZEN_MODE] = gMonIcon_DarmanitanZenMode, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = gMonIcon_DarmanitanZenModeGalarian, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = gMonIcon_DarmanitanGalarianZenMode, [SPECIES_DEERLING_SUMMER] = gMonIcon_DeerlingSummer, [SPECIES_DEERLING_AUTUMN] = gMonIcon_DeerlingAutumn, [SPECIES_DEERLING_WINTER] = gMonIcon_DeerlingWinter, @@ -1218,9 +1218,9 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_GOURGEIST_LARGE] = gMonIcon_Gourgeist, [SPECIES_GOURGEIST_SUPER] = gMonIcon_Gourgeist, [SPECIES_XERNEAS_ACTIVE] = gMonIcon_XerneasActive, - [SPECIES_ZYGARDE_10] = gMonIcon_Zygarde10, + [SPECIES_ZYGARDE_10_AURA_BREAK] = gMonIcon_Zygarde10, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = gMonIcon_Zygarde10, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = gMonIcon_Zygarde, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = gMonIcon_Zygarde50, [SPECIES_ZYGARDE_COMPLETE] = gMonIcon_ZygardeComplete, [SPECIES_HOOPA_UNBOUND] = gMonIcon_HoopaUnbound, #endif @@ -1249,12 +1249,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_SILVALLY_DRAGON] = gMonIcon_Silvally, [SPECIES_SILVALLY_DARK] = gMonIcon_Silvally, [SPECIES_SILVALLY_FAIRY] = gMonIcon_Silvally, - [SPECIES_MINIOR_METEOR_ORANGE] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_YELLOW] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_GREEN] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_BLUE] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_INDIGO] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_VIOLET] = gMonIcon_Minior, + [SPECIES_MINIOR_METEOR_ORANGE] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_YELLOW] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_GREEN] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_BLUE] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_INDIGO] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_VIOLET] = gMonIcon_MiniorMeteor, [SPECIES_MINIOR_CORE_RED] = gMonIcon_MiniorCoreRed, [SPECIES_MINIOR_CORE_ORANGE] = gMonIcon_MiniorCoreOrange, [SPECIES_MINIOR_CORE_YELLOW] = gMonIcon_MiniorCoreYellow, @@ -1274,26 +1274,61 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_TOXTRICITY_LOW_KEY] = gMonIcon_ToxtricityLowKey, [SPECIES_SINISTEA_ANTIQUE] = gMonIcon_Sinistea, [SPECIES_POLTEAGEIST_ANTIQUE] = gMonIcon_Polteageist, - [SPECIES_ALCREMIE_RUBY_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieRubyCream, - [SPECIES_ALCREMIE_MATCHA_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieMatchaCream, - [SPECIES_ALCREMIE_MINT_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieMintCream, - [SPECIES_ALCREMIE_LEMON_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieLemonCream, - [SPECIES_ALCREMIE_SALTED_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieSaltedCream, - [SPECIES_ALCREMIE_RUBY_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieRubySwirl, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieCaramelSwirl, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieRainbowSwirl, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieStrawberryRainbowSwirl, [SPECIES_EISCUE_NOICE_FACE] = gMonIcon_EiscueNoiceFace, [SPECIES_INDEEDEE_FEMALE] = gMonIcon_IndeedeeFemale, [SPECIES_MORPEKO_HANGRY] = gMonIcon_MorpekoHangry, [SPECIES_ZACIAN_CROWNED_SWORD] = gMonIcon_ZacianCrownedSword, [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = gMonIcon_ZamazentaCrownedShield, [SPECIES_ETERNATUS_ETERNAMAX] = gMonIcon_EternatusEternamax, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = gMonIcon_Urshifu, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = gMonIcon_UrshifuSingleStrikeStyle, [SPECIES_ZARUDE_DADA] = gMonIcon_ZarudeDada, [SPECIES_CALYREX_ICE_RIDER] = gMonIcon_CalyrexIceRider, [SPECIES_CALYREX_SHADOW_RIDER] = gMonIcon_CalyrexShadowRider, [SPECIES_ENAMORUS_THERIAN] = gMonIcon_EnamorusTherian, [SPECIES_BASCULEGION_FEMALE] = gMonIcon_BasculegionFemale, + // Gigantamax Forms + [SPECIES_VENUSAUR_GIGANTAMAX] = gMonIcon_VenusaurGigantamax, + [SPECIES_CHARIZARD_GIGANTAMAX] = gMonIcon_CharizardGigantamax, + [SPECIES_BLASTOISE_GIGANTAMAX] = gMonIcon_BlastoiseGigantamax, + [SPECIES_BUTTERFREE_GIGANTAMAX] = gMonIcon_ButterfreeGigantamax, + [SPECIES_PIKACHU_GIGANTAMAX] = gMonIcon_PikachuGigantamax, + [SPECIES_MEOWTH_GIGANTAMAX] = gMonIcon_MeowthGigantamax, + [SPECIES_MACHAMP_GIGANTAMAX] = gMonIcon_MachampGigantamax, + [SPECIES_GENGAR_GIGANTAMAX] = gMonIcon_GengarGigantamax, + [SPECIES_KINGLER_GIGANTAMAX] = gMonIcon_KinglerGigantamax, + [SPECIES_LAPRAS_GIGANTAMAX] = gMonIcon_LaprasGigantamax, + [SPECIES_EEVEE_GIGANTAMAX] = gMonIcon_EeveeGigantamax, + [SPECIES_SNORLAX_GIGANTAMAX] = gMonIcon_SnorlaxGigantamax, + [SPECIES_GARBODOR_GIGANTAMAX] = gMonIcon_GarbodorGigantamax, + [SPECIES_MELMETAL_GIGANTAMAX] = gMonIcon_MelmetalGigantamax, + [SPECIES_RILLABOOM_GIGANTAMAX] = gMonIcon_RillaboomGigantamax, + [SPECIES_CINDERACE_GIGANTAMAX] = gMonIcon_CinderaceGigantamax, + [SPECIES_INTELEON_GIGANTAMAX] = gMonIcon_InteleonGigantamax, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = gMonIcon_CorviknightGigantamax, + [SPECIES_ORBEETLE_GIGANTAMAX] = gMonIcon_OrbeetleGigantamax, + [SPECIES_DREDNAW_GIGANTAMAX] = gMonIcon_DrednawGigantamax, + [SPECIES_COALOSSAL_GIGANTAMAX] = gMonIcon_CoalossalGigantamax, + [SPECIES_FLAPPLE_GIGANTAMAX] = gMonIcon_FlappleGigantamax, + [SPECIES_APPLETUN_GIGANTAMAX] = gMonIcon_AppletunGigantamax, + [SPECIES_SANDACONDA_GIGANTAMAX] = gMonIcon_SandacondaGigantamax, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = gMonIcon_ToxtricityGigantamax, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = gMonIcon_ToxtricityGigantamax, + [SPECIES_CENTISKORCH_GIGANTAMAX] = gMonIcon_CentiskorchGigantamax, + [SPECIES_HATTERENE_GIGANTAMAX] = gMonIcon_HattereneGigantamax, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = gMonIcon_GrimmsnarlGigantamax, + [SPECIES_ALCREMIE_GIGANTAMAX] = gMonIcon_AlcremieGigantamax, + [SPECIES_COPPERAJAH_GIGANTAMAX] = gMonIcon_CopperajahGigantamax, + [SPECIES_DURALUDON_GIGANTAMAX] = gMonIcon_DuraludonGigantamax, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = gMonIcon_UrshifuSingleStrikeGigantamax, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = gMonIcon_UrshifuRapidStrikeGigantamax, #endif [SPECIES_EGG] = gMonIcon_Egg, }; @@ -1676,7 +1711,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_ARON] = 2, [SPECIES_LAIRON] = 2, [SPECIES_AGGRON] = 2, - [SPECIES_CASTFORM] = 0, + [SPECIES_CASTFORM_NORMAL] = 0, [SPECIES_VOLBEAT] = 0, [SPECIES_ILLUMISE] = 2, [SPECIES_LILEEP] = 2, @@ -1701,7 +1736,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_LATIAS] = 0, [SPECIES_LATIOS] = 0, [SPECIES_JIRACHI] = 0, - [SPECIES_DEOXYS] = 0, + [SPECIES_DEOXYS_NORMAL] = 0, [SPECIES_CHIMECHO] = 0, [SPECIES_TURTWIG] = 1, [SPECIES_GROTLE] = 1, @@ -1728,8 +1763,8 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_RAMPARDOS] = 0, [SPECIES_SHIELDON] = 1, [SPECIES_BASTIODON] = 1, - [SPECIES_BURMY] = 1, - [SPECIES_WORMADAM] = 1, + [SPECIES_BURMY_PLANT_CLOAK] = 1, + [SPECIES_WORMADAM_PLANT_CLOAK] = 1, [SPECIES_MOTHIM] = 0, [SPECIES_COMBEE] = 0, [SPECIES_VESPIQUEN] = 0, @@ -1737,9 +1772,9 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_BUIZEL] = 0, [SPECIES_FLOATZEL] = 0, [SPECIES_CHERUBI] = 1, - [SPECIES_CHERRIM] = 0, - [SPECIES_SHELLOS] = 0, - [SPECIES_GASTRODON] = 0, + [SPECIES_CHERRIM_OVERCAST] = 0, + [SPECIES_SHELLOS_WEST_SEA] = 0, + [SPECIES_GASTRODON_WEST_SEA] = 0, [SPECIES_AMBIPOM] = 2, [SPECIES_DRIFLOON] = 2, [SPECIES_DRIFBLIM] = 2, @@ -1803,13 +1838,13 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_PALKIA] = 2, [SPECIES_HEATRAN] = 0, [SPECIES_REGIGIGAS] = 0, - [SPECIES_GIRATINA] = 0, + [SPECIES_GIRATINA_ALTERED] = 0, [SPECIES_CRESSELIA] = 0, [SPECIES_PHIONE] = 0, [SPECIES_MANAPHY] = 0, [SPECIES_DARKRAI] = 0, - [SPECIES_SHAYMIN] = 1, - [SPECIES_ARCEUS] = 1, + [SPECIES_SHAYMIN_LAND] = 1, + [SPECIES_ARCEUS_NORMAL] = 1, [SPECIES_VICTINI] = 0, [SPECIES_SNIVY] = 1, [SPECIES_SERVINE] = 1, @@ -1866,12 +1901,12 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_WHIMSICOTT] = 1, [SPECIES_PETILIL] = 1, [SPECIES_LILLIGANT] = 1, - [SPECIES_BASCULIN] = 1, + [SPECIES_BASCULIN_RED_STRIPED] = 1, [SPECIES_SANDILE] = 1, [SPECIES_KROKOROK] = 1, [SPECIES_KROOKODILE] = 0, [SPECIES_DARUMAKA] = 0, - [SPECIES_DARMANITAN] = 0, + [SPECIES_DARMANITAN_STANDARD_MODE] = 0, [SPECIES_MARACTUS] = 1, [SPECIES_DWEBBLE] = 0, [SPECIES_CRUSTLE] = 2, @@ -1901,8 +1936,8 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_VANILLITE] = 0, [SPECIES_VANILLISH] = 2, [SPECIES_VANILLUXE] = 2, - [SPECIES_DEERLING] = 1, - [SPECIES_SAWSBUCK] = 1, + [SPECIES_DEERLING_SPRING] = 1, + [SPECIES_SAWSBUCK_SPRING] = 1, [SPECIES_EMOLGA] = 2, [SPECIES_KARRABLAST] = 0, [SPECIES_ESCAVALIER] = 0, @@ -1957,14 +1992,14 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_COBALION] = 0, [SPECIES_TERRAKION] = 2, [SPECIES_VIRIZION] = 1, - [SPECIES_TORNADUS] = 1, - [SPECIES_THUNDURUS] = 0, + [SPECIES_TORNADUS_INCARNATE] = 1, + [SPECIES_THUNDURUS_INCARNATE] = 0, [SPECIES_RESHIRAM] = 0, [SPECIES_ZEKROM] = 2, - [SPECIES_LANDORUS] = 0, + [SPECIES_LANDORUS_INCARNATE] = 0, [SPECIES_KYUREM] = 0, - [SPECIES_KELDEO] = 0, - [SPECIES_MELOETTA] = 4, + [SPECIES_KELDEO_ORDINARY] = 0, + [SPECIES_MELOETTA_ARIA] = 4, [SPECIES_GENESECT] = 2, [SPECIES_CHESPIN] = 1, [SPECIES_QUILLADIN] = 1, @@ -1982,22 +2017,22 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_TALONFLAME] = 2, [SPECIES_SCATTERBUG] = 1, [SPECIES_SPEWPA] = 1, - [SPECIES_VIVILLON] = 0, + [SPECIES_VIVILLON_ICY_SNOW] = 0, [SPECIES_LITLEO] = 2, [SPECIES_PYROAR] = 2, - [SPECIES_FLABEBE] = 1, - [SPECIES_FLOETTE] = 1, - [SPECIES_FLORGES] = 0, + [SPECIES_FLABEBE_RED_FLOWER] = 1, + [SPECIES_FLOETTE_RED_FLOWER] = 1, + [SPECIES_FLORGES_RED_FLOWER] = 0, [SPECIES_SKIDDO] = 1, [SPECIES_GOGOAT] = 1, [SPECIES_PANCHAM] = 1, [SPECIES_PANGORO] = 1, - [SPECIES_FURFROU] = 0, + [SPECIES_FURFROU_NATURAL] = 0, [SPECIES_ESPURR] = 2, - [SPECIES_MEOWSTIC] = 0, + [SPECIES_MEOWSTIC_MALE] = 0, [SPECIES_HONEDGE] = 2, [SPECIES_DOUBLADE] = 2, - [SPECIES_AEGISLASH] = 2, + [SPECIES_AEGISLASH_SHIELD] = 2, [SPECIES_SPRITZEE] = 0, [SPECIES_AROMATISSE] = 0, [SPECIES_SWIRLIX] = 1, @@ -2026,17 +2061,17 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_KLEFKI] = 0, [SPECIES_PHANTUMP] = 1, [SPECIES_TREVENANT] = 1, - [SPECIES_PUMPKABOO] = 2, - [SPECIES_GOURGEIST] = 2, + [SPECIES_PUMPKABOO_AVERAGE] = 2, + [SPECIES_GOURGEIST_AVERAGE] = 2, [SPECIES_BERGMITE] = 0, [SPECIES_AVALUGG] = 0, [SPECIES_NOIBAT] = 2, [SPECIES_NOIVERN] = 2, - [SPECIES_XERNEAS] = 0, + [SPECIES_XERNEAS_NEUTRAL] = 0, [SPECIES_YVELTAL] = 0, - [SPECIES_ZYGARDE] = 1, + [SPECIES_ZYGARDE_50_AURA_BREAK] = 1, [SPECIES_DIANCIE] = 1, - [SPECIES_HOOPA] = 0, + [SPECIES_HOOPA_CONFINED] = 0, [SPECIES_VOLCANION] = 0, [SPECIES_ROWLET] = 0, [SPECIES_DARTRIX] = 1, @@ -2057,12 +2092,12 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_VIKAVOLT] = 0, [SPECIES_CRABRAWLER] = 2, [SPECIES_CRABOMINABLE] = 2, - [SPECIES_ORICORIO] = 0, + [SPECIES_ORICORIO_BAILE] = 0, [SPECIES_CUTIEFLY] = 2, [SPECIES_RIBOMBEE] = 2, [SPECIES_ROCKRUFF] = 2, - [SPECIES_LYCANROC] = 2, - [SPECIES_WISHIWASHI] = 2, + [SPECIES_LYCANROC_MIDDAY] = 2, + [SPECIES_WISHIWASHI_SOLO] = 2, [SPECIES_MAREANIE] = 2, [SPECIES_TOXAPEX] = 0, [SPECIES_MUDBRAY] = 2, @@ -2089,12 +2124,12 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_PALOSSAND] = 2, [SPECIES_PYUKUMUKU] = 0, [SPECIES_TYPE_NULL] = 0, - [SPECIES_SILVALLY] = 0, - [SPECIES_MINIOR] = 2, + [SPECIES_SILVALLY_NORMAL] = 0, + [SPECIES_MINIOR_METEOR_RED] = 2, [SPECIES_KOMALA] = 2, [SPECIES_TURTONATOR] = 0, [SPECIES_TOGEDEMARU] = 2, - [SPECIES_MIMIKYU] = 1, + [SPECIES_MIMIKYU_DISGUISED] = 1, [SPECIES_BRUXISH] = 0, [SPECIES_DRAMPA] = 0, [SPECIES_DHELMISE] = 1, @@ -2165,13 +2200,13 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_ARROKUDA] = 2, [SPECIES_BARRASKEWDA] = 2, [SPECIES_TOXEL] = 2, - [SPECIES_TOXTRICITY] = 2, + [SPECIES_TOXTRICITY_AMPED] = 2, [SPECIES_SIZZLIPEDE] = 0, [SPECIES_CENTISKORCH] = 0, [SPECIES_CLOBBOPUS] = 0, [SPECIES_GRAPPLOCT] = 2, - [SPECIES_SINISTEA] = 2, - [SPECIES_POLTEAGEIST] = 2, + [SPECIES_SINISTEA_PHONY] = 2, + [SPECIES_POLTEAGEIST_PHONY] = 2, [SPECIES_HATENNA] = 0, [SPECIES_HATTREM] = 0, [SPECIES_HATTERENE] = 0, @@ -2185,15 +2220,15 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_MR_RIME] = 0, [SPECIES_RUNERIGUS] = 2, [SPECIES_MILCERY] = 1, - [SPECIES_ALCREMIE] = 1, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = 1, [SPECIES_FALINKS] = 0, [SPECIES_PINCURCHIN] = 0, [SPECIES_SNOM] = 0, [SPECIES_FROSMOTH] = 0, [SPECIES_STONJOURNER] = 2, - [SPECIES_EISCUE] = 0, - [SPECIES_INDEEDEE] = 2, - [SPECIES_MORPEKO] = 2, + [SPECIES_EISCUE_ICE_FACE] = 0, + [SPECIES_INDEEDEE_MALE] = 2, + [SPECIES_MORPEKO_FULL_BELLY] = 2, [SPECIES_CUFANT] = 0, [SPECIES_COPPERAJAH] = 0, [SPECIES_DRACOZOLT] = 1, @@ -2204,11 +2239,11 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_DREEPY] = 0, [SPECIES_DRAKLOAK] = 0, [SPECIES_DRAGAPULT] = 0, - [SPECIES_ZACIAN] = 2, - [SPECIES_ZAMAZENTA] = 2, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = 2, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = 2, [SPECIES_ETERNATUS] = 0, [SPECIES_KUBFU] = 1, - [SPECIES_URSHIFU] = 2, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = 2, [SPECIES_ZARUDE] = 1, [SPECIES_REGIELEKI] = 0, [SPECIES_REGIDRAGO] = 0, @@ -2218,10 +2253,10 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_WYRDEER] = 2, [SPECIES_KLEAVOR] = 2, [SPECIES_URSALUNA] = 2, - [SPECIES_BASCULEGION] = 1, + [SPECIES_BASCULEGION_MALE] = 1, [SPECIES_SNEASLER] = 2, [SPECIES_OVERQWIL] = 2, - [SPECIES_ENAMORUS] = 1, + [SPECIES_ENAMORUS_INCARNATE] = 1, [SPECIES_VENUSAUR_MEGA] = 4, [SPECIES_CHARIZARD_MEGA_X] = 0, [SPECIES_CHARIZARD_MEGA_Y] = 0, @@ -2306,7 +2341,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_ZIGZAGOON_GALARIAN] = 0, [SPECIES_LINOONE_GALARIAN] = 0, [SPECIES_DARUMAKA_GALARIAN] = 0, - [SPECIES_DARMANITAN_GALARIAN] = 0, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = 0, [SPECIES_YAMASK_GALARIAN] = 2, [SPECIES_STUNFISK_GALARIAN] = 1, [SPECIES_GROWLITHE_HISUIAN] = 0, @@ -2386,7 +2421,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_BASCULIN_BLUE_STRIPED] = 0, [SPECIES_BASCULIN_WHITE_STRIPED] = 0, [SPECIES_DARMANITAN_ZEN_MODE] = 0, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = 0, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = 0, [SPECIES_DEERLING_SUMMER] = 1, [SPECIES_DEERLING_AUTUMN] = 0, [SPECIES_DEERLING_WINTER] = 2, @@ -2458,7 +2493,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_GOURGEIST_LARGE] = 2, [SPECIES_GOURGEIST_SUPER] = 2, [SPECIES_XERNEAS_ACTIVE] = 0, - [SPECIES_ZYGARDE_10] = 1, + [SPECIES_ZYGARDE_10_AURA_BREAK] = 1, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = 1, [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = 1, [SPECIES_ZYGARDE_COMPLETE] = 1, @@ -2508,14 +2543,14 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_TOXTRICITY_LOW_KEY] = 2, [SPECIES_SINISTEA_ANTIQUE] = 2, [SPECIES_POLTEAGEIST_ANTIQUE] = 2, - [SPECIES_ALCREMIE_RUBY_CREAM] = 0, - [SPECIES_ALCREMIE_MATCHA_CREAM] = 0, - [SPECIES_ALCREMIE_MINT_CREAM] = 0, - [SPECIES_ALCREMIE_LEMON_CREAM] = 0, - [SPECIES_ALCREMIE_SALTED_CREAM] = 0, - [SPECIES_ALCREMIE_RUBY_SWIRL] = 0, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = 0, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = 0, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = 0, [SPECIES_EISCUE_NOICE_FACE] = 0, [SPECIES_INDEEDEE_FEMALE] = 2, [SPECIES_MORPEKO_HANGRY] = 2, @@ -2528,6 +2563,40 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_CALYREX_SHADOW_RIDER] = 0, [SPECIES_ENAMORUS_THERIAN] = 1, [SPECIES_BASCULEGION_FEMALE] = 0, + [SPECIES_VENUSAUR_GIGANTAMAX] = 0, + [SPECIES_CHARIZARD_GIGANTAMAX] = 0, + [SPECIES_BLASTOISE_GIGANTAMAX] = 0, + [SPECIES_BUTTERFREE_GIGANTAMAX] = 0, + [SPECIES_PIKACHU_GIGANTAMAX] = 2, + [SPECIES_MEOWTH_GIGANTAMAX] = 1, + [SPECIES_MACHAMP_GIGANTAMAX] = 0, + [SPECIES_GENGAR_GIGANTAMAX] = 2, + [SPECIES_KINGLER_GIGANTAMAX] = 0, + [SPECIES_LAPRAS_GIGANTAMAX] = 2, + [SPECIES_EEVEE_GIGANTAMAX] = 2, + [SPECIES_SNORLAX_GIGANTAMAX] = 3, + [SPECIES_GARBODOR_GIGANTAMAX] = 0, + [SPECIES_MELMETAL_GIGANTAMAX] = 0, + [SPECIES_RILLABOOM_GIGANTAMAX] = 1, + [SPECIES_CINDERACE_GIGANTAMAX] = 0, + [SPECIES_INTELEON_GIGANTAMAX] = 0, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = 0, + [SPECIES_ORBEETLE_GIGANTAMAX] = 0, + [SPECIES_DREDNAW_GIGANTAMAX] = 0, + [SPECIES_COALOSSAL_GIGANTAMAX] = 0, + [SPECIES_FLAPPLE_GIGANTAMAX] = 1, + [SPECIES_APPLETUN_GIGANTAMAX] = 1, + [SPECIES_SANDACONDA_GIGANTAMAX] = 1, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = 0, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = 0, + [SPECIES_CENTISKORCH_GIGANTAMAX] = 0, + [SPECIES_HATTERENE_GIGANTAMAX] = 0, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = 0, + [SPECIES_ALCREMIE_GIGANTAMAX] = 1, + [SPECIES_COPPERAJAH_GIGANTAMAX] = 0, + [SPECIES_DURALUDON_GIGANTAMAX] = 0, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = 0, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = 0, #endif [SPECIES_EGG] = 1, }; diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index 9478084d9b..bbbffba4b3 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -426,288 +426,288 @@ EWRAM_DATA static struct PokemonJumpGfx *sPokemonJumpGfx = NULL; */ static const struct PokemonJumpMons sPokeJumpMons[] = { - { .species = SPECIES_BULBASAUR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHARMANDER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SQUIRTLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CATERPIE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_METAPOD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WEEDLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KAKUNA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATTATA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATTATA_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATICATE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATICATE_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PIKACHU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_COSPLAY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ROCK_STAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_BELLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_POP_STAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_PH_D, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_LIBRE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ORIGINAL_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_HOENN_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_SINNOH_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_UNOVA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_KALOS_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ALOLA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_PARTNER_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_WORLD_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SANDSHREW, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SANDSHREW_ALOLAN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NIDORAN_F, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_NIDORAN_M, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLEFAIRY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VULPIX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VULPIX_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_JIGGLYPUFF, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ODDISH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PARAS, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MEOWTH, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWTH_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWTH_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PSYDUCK, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MANKEY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GROWLITHE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_POLIWAG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BELLSPROUT, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHELLDER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KRABBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_EXEGGCUTE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CUBONE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DITTO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_EEVEE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_OMANYTE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KABUTO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHIKORITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CYNDAQUIL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TOTODILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPINARAK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PICHU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PICHU_SPIKY_EARED, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLEFFA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_IGGLYBUFF, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOGEPI, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MAREEP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BELLOSSOM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MARILL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SUNKERN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_WOOPER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PINECO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SNUBBULL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SHUCKLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TEDDIURSA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SLUGMA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SWINUB, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HOUNDOUR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PHANPY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PORYGON2, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TYROGUE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SMOOCHUM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELEKID, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MAGBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LARVITAR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TREECKO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TORCHIC, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MUDKIP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MARSHTOMP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_POOCHYENA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ZIGZAGOON, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ZIGZAGOON_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LINOONE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LINOONE_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_WURMPLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SILCOON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CASCOON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_LOTAD, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SEEDOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RALTS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KIRLIA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SURSKIT, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHROOMISH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NINCADA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WHISMUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_AZURILL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SKITTY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SABLEYE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SABLEYE_MEGA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MAWILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ARON, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MEDITITE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELECTRIKE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PLUSLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MINUN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_VOLBEAT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ILLUMISE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROSELIA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GULPIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NUMEL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TORKOAL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SPOINK, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TRAPINCH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CACNEA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ANORITH, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WYNAUT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SNORUNT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLAMPERL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BAGON, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TURTWIG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHIMCHAR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PIPLUP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BIDOOF, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KRICKETOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHINX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BUDEW, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHIELDON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PACHIRISU, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BUIZEL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CHERUBI, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHERRIM, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHERRIM_SUNSHINE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHELLOS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHELLOS_EAST_SEA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BUNEARY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GLAMEOW, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_STUNKY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BONSLY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MIME_JR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_HAPPINY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GIBLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MUNCHLAX, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_RIOLU, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CROAGUNK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHAYMIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SNIVY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TEPIG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_OSHAWOTT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PATRAT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LILLIPUP, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PURRLOIN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PANSAGE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PANSEAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PANPOUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROGGENROLA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DRILBUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_EXCADRILL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TIMBURR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SEWADDLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SWADLOON, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VENIPEDE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PETILIL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SANDILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DARUMAKA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DARUMAKA_GALARIAN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DWEBBLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SCRAGGY, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ARCHEN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TRUBBISH, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ZORUA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MINCCINO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CINCCINO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_GOTHITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GOTHORITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DEERLING, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_SUMMER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_AUTUMN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_WINTER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KARRABLAST, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FOONGUS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_AMOONGUSS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_JOLTIK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LITWICK, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_AXEW, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CUBCHOO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHELMET, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_STUNFISK, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_STUNFISK_GALARIAN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PAWNIARD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DURANT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHESPIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_QUILLADIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_FENNEKIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FROAKIE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_FROGADIER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BUNNELBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SPEWPA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LITLEO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PANCHAM, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ESPURR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWSTIC, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWSTIC_FEMALE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BINACLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CLAUNCHER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_HELIOPTILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DEDENNE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GOOMY, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ROWLET, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DARTRIX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LITTEN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TORRACAT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_POPPLIO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BRIONNE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_YUNGOOS, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GUMSHOOS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_GRUBBIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHARJABUG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CRABRAWLER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ROCKRUFF, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROCKRUFF_OWN_TEMPO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MAREANIE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DEWPIDER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FOMANTIS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MORELULL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SALANDIT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_STUFFUL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BOUNSWEET, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_STEENEE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_WIMPOD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PYUKUMUKU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KOMALA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOGEDEMARU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MIMIKYU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MIMIKYU_BUSTED, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_JANGMO_O, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MARSHADOW, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MELTAN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GROOKEY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_THWACKEY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SCORBUNNY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RABOOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SOBBLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DRIZZILE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BLIPBUG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DOTTLER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NICKIT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GOSSIFLEUR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELDEGOSS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_WOOLOO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CHEWTLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_YAMPER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROLYCOLY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_APPLIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_APPLETUN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOXEL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SIZZLIPEDE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CLOBBOPUS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HATENNA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HATTREM, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_IMPIDIMP, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ALCREMIE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PINCURCHIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SNOM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MORPEKO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MORPEKO_HANGRY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KUBFU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BULBASAUR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHARMANDER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SQUIRTLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CATERPIE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_METAPOD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_WEEDLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KAKUNA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATTATA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATTATA_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATICATE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATICATE_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PIKACHU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_COSPLAY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ROCK_STAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_BELLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_POP_STAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_PH_D, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_LIBRE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ORIGINAL_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_HOENN_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_SINNOH_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_UNOVA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_KALOS_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ALOLA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_PARTNER_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_WORLD_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SANDSHREW, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SANDSHREW_ALOLAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NIDORAN_F, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_NIDORAN_M, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CLEFAIRY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VULPIX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VULPIX_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_JIGGLYPUFF, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ODDISH, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PARAS, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MEOWTH, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWTH_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWTH_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PSYDUCK, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MANKEY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GROWLITHE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_POLIWAG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BELLSPROUT, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHELLDER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KRABBY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_EXEGGCUTE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CUBONE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DITTO, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_EEVEE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_OMANYTE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KABUTO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHIKORITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CYNDAQUIL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TOTODILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPINARAK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PICHU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PICHU_SPIKY_EARED, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CLEFFA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_IGGLYBUFF, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOGEPI, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MAREEP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BELLOSSOM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MARILL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SUNKERN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_WOOPER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PINECO, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SNUBBULL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SHUCKLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TEDDIURSA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SLUGMA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SWINUB, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HOUNDOUR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PHANPY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PORYGON2, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TYROGUE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SMOOCHUM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ELEKID, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MAGBY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LARVITAR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TREECKO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TORCHIC, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MUDKIP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MARSHTOMP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_POOCHYENA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ZIGZAGOON, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ZIGZAGOON_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LINOONE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LINOONE_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_WURMPLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SILCOON, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CASCOON, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_LOTAD, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SEEDOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RALTS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KIRLIA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SURSKIT, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHROOMISH, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NINCADA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_WHISMUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_AZURILL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SKITTY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SABLEYE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SABLEYE_MEGA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MAWILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ARON, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MEDITITE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ELECTRIKE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PLUSLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MINUN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_VOLBEAT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ILLUMISE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROSELIA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GULPIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NUMEL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TORKOAL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SPOINK, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TRAPINCH, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CACNEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ANORITH, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_WYNAUT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SNORUNT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CLAMPERL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BAGON, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TURTWIG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHIMCHAR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PIPLUP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BIDOOF, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KRICKETOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHINX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BUDEW, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHIELDON, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PACHIRISU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BUIZEL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CHERUBI, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHERRIM_OVERCAST, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHERRIM_SUNSHINE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHELLOS_WEST_SEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHELLOS_EAST_SEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BUNEARY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GLAMEOW, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_STUNKY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BONSLY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MIME_JR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_HAPPINY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GIBLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MUNCHLAX, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_RIOLU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CROAGUNK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHAYMIN_LAND, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SNIVY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TEPIG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_OSHAWOTT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PATRAT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LILLIPUP, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PURRLOIN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PANSAGE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PANSEAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PANPOUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROGGENROLA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DRILBUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_EXCADRILL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TIMBURR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SEWADDLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SWADLOON, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VENIPEDE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PETILIL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SANDILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DARUMAKA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DARUMAKA_GALARIAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DWEBBLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SCRAGGY, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ARCHEN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TRUBBISH, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ZORUA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MINCCINO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CINCCINO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_GOTHITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GOTHORITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DEERLING_SPRING, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_SUMMER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_AUTUMN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_WINTER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KARRABLAST, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FOONGUS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_AMOONGUSS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_JOLTIK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LITWICK, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_AXEW, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CUBCHOO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHELMET, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_STUNFISK, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_STUNFISK_GALARIAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PAWNIARD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DURANT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHESPIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_QUILLADIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_FENNEKIN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FROAKIE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_FROGADIER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BUNNELBY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SPEWPA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LITLEO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PANCHAM, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ESPURR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWSTIC_MALE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWSTIC_FEMALE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BINACLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CLAUNCHER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_HELIOPTILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DEDENNE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GOOMY, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ROWLET, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DARTRIX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LITTEN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TORRACAT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_POPPLIO, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BRIONNE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_YUNGOOS, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GUMSHOOS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_GRUBBIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHARJABUG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CRABRAWLER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ROCKRUFF, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROCKRUFF_OWN_TEMPO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MAREANIE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DEWPIDER, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FOMANTIS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MORELULL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SALANDIT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_STUFFUL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BOUNSWEET, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_STEENEE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_WIMPOD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PYUKUMUKU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KOMALA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOGEDEMARU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MIMIKYU_DISGUISED, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MIMIKYU_BUSTED, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_JANGMO_O, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MARSHADOW, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MELTAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GROOKEY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_THWACKEY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SCORBUNNY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RABOOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SOBBLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DRIZZILE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BLIPBUG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DOTTLER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NICKIT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GOSSIFLEUR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ELDEGOSS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_WOOLOO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CHEWTLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_YAMPER, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROLYCOLY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_APPLIN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_APPLETUN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOXEL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SIZZLIPEDE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CLOBBOPUS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HATENNA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HATTREM, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_IMPIDIMP, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PINCURCHIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SNOM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MORPEKO_FULL_BELLY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MORPEKO_HANGRY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KUBFU, .jumpType = JUMP_TYPE_FAST, }, }; void StartPokemonJump(u16 partyId, MainCallback exitCallback) diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index bfe2e7581a..ee3cc559f8 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -71,7 +71,7 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u heldItem[1] = item >> 8; SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); - // In case a mon with a form changing item is given. Eg: SPECIES_ARCEUS with ITEM_SPLASH_PLATE will transform into SPECIES_ARCEUS_WATER upon gifted. + // In case a mon with a form changing item is given. Eg: SPECIES_ARCEUS_NORMAL with ITEM_SPLASH_PLATE will transform into SPECIES_ARCEUS_WATER upon gifted. targetSpecies = GetFormChangeTargetSpecies(&mon, FORM_CHANGE_ITEM_HOLD, 0); if (targetSpecies != SPECIES_NONE) { diff --git a/src/secret_base.c b/src/secret_base.c index c5f21e252d..a662acb36e 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1733,6 +1733,9 @@ void ReceiveSecretBasesData(void *secretBases, size_t recordSize, u8 linkIdx) struct SecretBaseRecordMixer mixers[3]; u16 i; + if (linkIdx > 3) + return; + if (FlagGet(FLAG_RECEIVED_SECRET_POWER)) { switch (GetLinkPlayerCount()) diff --git a/src/strings.c b/src/strings.c index 52b6fefc02..1197c54cd9 100644 --- a/src/strings.c +++ b/src/strings.c @@ -207,7 +207,6 @@ const u8 gText_MaleSymbol[] = _("♂"); const u8 gText_FemaleSymbol[] = _("♀"); const u8 gText_LevelSymbol[] = _("{LV}"); const u8 gText_NumberClear01[] = _("{NO}{CLEAR 0x01}"); -const u8 gText_PlusSymbol[] = _("+"); // Unused const u8 gText_RightArrow[] = _("{RIGHT_ARROW}"); // Unused const u8 gText_IDNumber2[] = _("{ID}{NO}"); const u8 gText_Space[] = _(" "); @@ -1834,130 +1833,3 @@ const u8 gText_Berries[] = _("BERRIES"); const u8 gText_ExpShareOn[] = _("The Exp. Share has been turned on.{PAUSE_UNTIL_PRESS}"); const u8 gText_ExpShareOff[] = _("The Exp. Share has been turned off.{PAUSE_UNTIL_PRESS}"); const u8 gText_BasePointsResetToZero[] = _("{STR_VAR_1}'s base points\nwere all reset to zero!{PAUSE_UNTIL_PRESS}"); -//HGSS_Ui PokedexPlus -#if POKEDEX_PLUS_HGSS == TRUE -const u8 gText_Stats_Buttons[] = _("{A_BUTTON}TOGGLE {DPAD_UPDOWN}MOVES"); -const u8 gText_Stats_Buttons_Decapped[] = _("{A_BUTTON}Toggle {DPAD_UPDOWN}Moves"); -const u8 gText_Stats_HP[] = _("HP"); -const u8 gText_Stats_Attack[] = _("ATK"); -const u8 gText_Stats_Defense[] = _("DEF"); -const u8 gText_Stats_Speed[] = _("SPE"); -const u8 gText_Stats_SpAttack[] = _("SP.A"); -const u8 gText_Stats_SpDefense[] = _("SP.D"); -const u8 gText_Stats_EV_Plus1[] = _("{UP_ARROW_2}"); -const u8 gText_Stats_EV_Plus2[] = _("{UP_ARROW_2}{UP_ARROW_2}"); -const u8 gText_Stats_EV_Plus3[] = _("{UP_ARROW_2}{UP_ARROW_2}{UP_ARROW_2}"); -const u8 gText_Stats_EvStr1Str2[] = _("{STR_VAR_1}{STR_VAR_2}"); -const u8 gText_Stats_MoveSelectedMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); -const u8 gText_Stats_MoveLevel[] = _("LVL"); -const u8 gText_Stats_Gender_0[] = _("♂"); -const u8 gText_Stats_Gender_12_5[] = _("♀ 1/7 ♂"); //_("♀ 12.5 / 87.5 ♂"); -const u8 gText_Stats_Gender_25[] = _("♀ 1/3 ♂"); //_("♀ 25 / 75 ♂"); -const u8 gText_Stats_Gender_50[] = _("♀ 1/1 ♂"); //_("♀ 50 / 50 ♂"); -const u8 gText_Stats_Gender_75[] = _("♀ 3/1 ♂"); //_("♀ 75 / 25 ♂"); -const u8 gText_Stats_Gender_87_5[] = _("♀ 7/1 ♂"); -const u8 gText_Stats_Gender_100[] = _("♀"); -const u8 gText_Stats_CatchRate[] = _("CATCH{0x5B}: "); -const u8 gText_Stats_CatchRate_Legend[] = _("LEGENDARY"); -const u8 gText_Stats_CatchRate_VeryHard[] = _("VERY HARD"); -const u8 gText_Stats_CatchRate_Difficult[] = _("DIFFICULT"); -const u8 gText_Stats_CatchRate_Medium[] = _("MEDIUM"); -const u8 gText_Stats_CatchRate_Relaxed[] = _("RELAXED"); -const u8 gText_Stats_CatchRate_Easy[] = _("EASY"); -const u8 gText_Stats_ExpYield[] = _("EXP YIELD: "); -const u8 gText_Stats_EggCycles[] = _("HATCH STEPS:"); -const u8 gText_Stats_EggCycles_VeryFast[] = _("{EMOJI_BOLT}{EMOJI_DIZZYEGG}"); -const u8 gText_Stats_EggCycles_Fast[] = _("{EMOJI_DIZZYEGG}"); -const u8 gText_Stats_EggCycles_Normal[] = _("{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}"); -const u8 gText_Stats_EggCycles_Slow[] = _("{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}"); -const u8 gText_Stats_Growthrate[] = _("GROW: "); -const u8 gText_Stats_Friendship[] = _("FRIENDSHIP:"); -const u8 gText_Stats_Friendship_BigAnger[] = _("{EMOJI_BIGANGER}"); -const u8 gText_Stats_Friendship_Neutral[] = _("{EMOJI_NEUTRAL}"); -const u8 gText_Stats_Friendship_Happy[] = _("{EMOJI_HAPPY}"); -const u8 gText_Stats_Friendship_BigSmile[] = _("{EMOJI_BIGSMILE}"); -const u8 gText_Stats_MEDIUM_FAST[] = _("MED. FAST"); -const u8 gText_Stats_ERRATIC[] = _("ERRATIC"); -const u8 gText_Stats_FLUCTUATING[] = _("FLUCTUATING"); -const u8 gText_Stats_MEDIUM_SLOW[] = _("MED. SLOW"); -const u8 gText_Stats_FAST[] = _("FAST"); -const u8 gText_Stats_SLOW[] = _("SLOW"); -const u8 gText_Stats_ContestHeart[] = _("H"); -const u8 gText_Stats_Minus[] = _("-"); -const u8 gText_Stats_eggGroup[] = _("EGG G1:"); -const u8 gText_Stats_eggGroup_Groups[] = _("{STR_VAR_1}/{STR_VAR_2}"); -const u8 gText_Stats_eggGroup_MONSTER[] = _("MONSTER"); -const u8 gText_Stats_eggGroup_WATER_1[] = _("WATER {CIRCLE_1}"); -const u8 gText_Stats_eggGroup_BUG[] = _("BUG"); -const u8 gText_Stats_eggGroup_FLYING[] = _("FLYING"); -const u8 gText_Stats_eggGroup_FIELD[] = _("FIELD"); -const u8 gText_Stats_eggGroup_FAIRY[] = _("FAIRY"); -const u8 gText_Stats_eggGroup_GRASS[] = _("GRASS"); -const u8 gText_Stats_eggGroup_HUMAN_LIKE[] = _("HUMANE"); -const u8 gText_Stats_eggGroup_WATER_3[] = _("WATER {CIRCLE_3}"); -const u8 gText_Stats_eggGroup_MINERAL[] = _("MINERAL"); -const u8 gText_Stats_eggGroup_AMORPHOUS[] = _("AMORPHOUS"); -const u8 gText_Stats_eggGroup_WATER_2[] = _("WATER {CIRCLE_2}"); -const u8 gText_Stats_eggGroup_DITTO[] = _("DITTO"); -const u8 gText_Stats_eggGroup_DRAGON[] = _("DRAGON"); -const u8 gText_Stats_eggGroup_UNDISCOVERED[] = _("---"); -const u8 gText_Dex_SEEN[] = _("SEEN"); -const u8 gText_Dex_OWN[] = _("OWN"); - -const u8 gText_EVO_Buttons[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK"); -const u8 gText_EVO_Buttons_Decapped[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check"); -const u8 gText_EVO_Buttons_PE[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK {START_BUTTON}FORMs"); -const u8 gText_EVO_Buttons_Decapped_PE[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check {START_BUTTON}Froms"); -const u8 gText_EVO_Name[] = _("{STR_VAR_3}:"); -const u8 gText_EVO_PreEvo[] = _("{STR_VAR_1} evolves from {STR_VAR_2}"); -const u8 gText_EVO_PreEvo_PE_Mega[] = _("{STR_VAR_1} Mega Evolves with {STR_VAR_2}"); -const u8 gText_EVO_FRIENDSHIP[] = _("{LV}{UP_ARROW}, high friendship"); -const u8 gText_EVO_FRIENDSHIP_DAY[] = _("{LV}{UP_ARROW}, high friendship, day"); -const u8 gText_EVO_FRIENDSHIP_NIGHT[] = _("{LV}{UP_ARROW}, high friendship, night"); -const u8 gText_EVO_FRIENDSHIP_MOVE_TYPE[] = _("{LV}{UP_ARROW}, high friendship, {STR_VAR_2} move"); -const u8 gText_EVO_LEVEL[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); -const u8 gText_EVO_TRADE[] = _("Trading"); -const u8 gText_EVO_TRADE_ITEM[] = _("Trading, holding {STR_VAR_2}"); -const u8 gText_EVO_ITEM[] = _("{STR_VAR_2} is used"); -const u8 gText_EVO_LEVEL_ATK_GT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk > Def"); -const u8 gText_EVO_LEVEL_ATK_EQ_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk = Def"); -const u8 gText_EVO_LEVEL_ATK_LT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk < Def"); -const u8 gText_EVO_LEVEL_SILCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Silcoon persona"); -const u8 gText_EVO_LEVEL_CASCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Cascoon persona"); -const u8 gText_EVO_LEVEL_NINJASK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); -const u8 gText_EVO_LEVEL_SHEDINJA[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, party<6, 1x POKéBALL"); -const u8 gText_EVO_BEAUTY[] = _("{LV}{UP_ARROW}, high beauty"); -const u8 gText_EVO_LEVEL_FEMALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is female"); -const u8 gText_EVO_LEVEL_MALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is male"); -const u8 gText_EVO_LEVEL_NIGHT[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, night"); -const u8 gText_EVO_LEVEL_DAY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, day"); -const u8 gText_EVO_LEVEL_DUSK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, dusk (5-6PM)"); -const u8 gText_EVO_ITEM_HOLD_DAY[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, day"); -const u8 gText_EVO_ITEM_HOLD_NIGHT[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, night"); -const u8 gText_EVO_MOVE[] = _("{LV}{UP_ARROW}, knows {STR_VAR_2}"); -const u8 gText_EVO_MAPSEC[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); -const u8 gText_EVO_ITEM_MALE[] = _("{STR_VAR_2} used on male"); -const u8 gText_EVO_ITEM_FEMALE[] = _("{STR_VAR_2} used on female"); -const u8 gText_EVO_LEVEL_RAIN[] = _("{LV}{UP_ARROW} to {STR_VAR_2} while raining"); -const u8 gText_EVO_SPECIFIC_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with {STR_VAR_2} in party"); -const u8 gText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with dark type in party"); -const u8 gText_EVO_TRADE_SPECIFIC_MON[] = _("Traded for {STR_VAR_2}"); -const u8 gText_EVO_SPECIFIC_MAP[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); -const u8 gText_EVO_LEVEL_NATURE_AMPED[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Amped natures"); -const u8 gText_EVO_LEVEL_NATURE_LOW_KEY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Low Key natures"); -const u8 gText_EVO_CRITICAL_HITS[] = _("Land {STR_VAR_2} critical hits in\nsingle battle"); -const u8 gText_EVO_SCRIPT_TRIGGER_DMG[] = _("Takes at least {STR_VAR_2} HP in damage"); -const u8 gText_EVO_DARK_SCROLL[] = _("ScrllOfDrknss is used"); -const u8 gText_EVO_WATER_SCROLL[] = _("ScrollOfWatrs is used"); -const u8 gText_EVO_ITEM_NIGHT[] = _("{STR_VAR_2} is used, night"); -const u8 gText_EVO_ITEM_DAY[] = _("{STR_VAR_2} is used, day"); -const u8 gText_EVO_ITEM_HOLD[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}"); -const u8 gText_EVO_UNKNOWN[] = _("Method unknown"); -const u8 gText_EVO_NONE[] = _("{STR_VAR_1} has no evolution."); - -const u8 gText_FORMS_Buttons_PE[] = _("{A_BUTTON}FORM MODE {START_BUTTON}EVOs"); -const u8 gText_FORMS_Buttons_Decapped_PE[] = _("{START_BUTTON}Evos"); -const u8 gText_FORMS_Buttons_Submenu_PE[] = _("{DPAD_NONE}FORMs {A_BUTTON}CHECK {START_BUTTON}EVOs"); -const u8 gText_FORMS_Buttons_Submenu_Decapped_PE[] = _("{START_BUTTON}Evos"); -const u8 gText_FORMS_NONE[] = _("{STR_VAR_1} has no alternate forms."); -#endif diff --git a/src/trade.c b/src/trade.c index 95538ab40b..4976e00912 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1570,13 +1570,6 @@ static u8 CheckValidityOfTradeMons(u8 *aliveMons, u8 playerPartyCount, u8 player partnerMonIdx %= PARTY_SIZE; partnerSpecies = GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_SPECIES); - // Partner cant trade illegitimate Deoxys or Mew - if (partnerSpecies == SPECIES_DEOXYS || partnerSpecies == SPECIES_MEW) - { - if (!GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_MODERN_FATEFUL_ENCOUNTER)) - return PARTNER_MON_INVALID; - } - // Can't trade specific species if (gSpeciesInfo[partnerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return PARTNER_MON_INVALID; @@ -2424,12 +2417,6 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int } } - if (species[monIdx] == SPECIES_DEOXYS || species[monIdx] == SPECIES_MEW) - { - if (!GetMonData(&playerParty[monIdx], MON_DATA_MODERN_FATEFUL_ENCOUNTER)) - return CANT_TRADE_INVALID_MON; - } - // Can't trade specific species if (gSpeciesInfo[species[monIdx]].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return CANT_TRADE_INVALID_MON; @@ -2495,16 +2482,6 @@ s32 GetGameProgressForLinkTrade(void) return TRADE_BOTH_PLAYERS_READY; } -static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isModernFatefulEncounter) -{ - if (species == SPECIES_DEOXYS || species == SPECIES_MEW) - { - if (!isModernFatefulEncounter) - return TRUE; - } - return FALSE; -} - int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isModernFatefulEncounter) { bool8 playerHasNationalDex = player.hasNationalDex; @@ -2523,10 +2500,6 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf return UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2; } - // Cannot trade illegitimate Deoxys/Mew - if (IsDeoxysOrMewUntradable(playerSpecies, isModernFatefulEncounter)) - return UR_TRADE_MSG_MON_CANT_BE_TRADED; - // Can't trade specific species if (gSpeciesInfo[playerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return UR_TRADE_MSG_MON_CANT_BE_TRADED; @@ -2575,9 +2548,6 @@ int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 sp { bool8 hasNationalDex = player.hasNationalDex; - if (IsDeoxysOrMewUntradable(species, isModernFatefulEncounter)) - return CANT_REGISTER_MON_NOW; - // Can't trade specific species if (gSpeciesInfo[species].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return CANT_REGISTER_MON; diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 3162c5ed23..8335b37e7d 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -415,6 +415,7 @@ static u8 PickWildMonNature(void) } } } +#if B_SYNCHRONIZE_NATURE < GEN_9 // check synchronize for a pokemon with the same ability if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE @@ -422,6 +423,7 @@ static u8 PickWildMonNature(void) { return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % NUM_NATURES; } +#endif // random nature return Random() % NUM_NATURES; diff --git a/test/battle/ability/beads_of_ruin.c b/test/battle/ability/beads_of_ruin.c index 1c6f740e8b..b406a9ecf3 100644 --- a/test/battle/ability/beads_of_ruin.c +++ b/test/battle/ability/beads_of_ruin.c @@ -25,7 +25,7 @@ SINGLE_BATTLE_TEST("Beads of Ruin reduces Sp. Def", s16 damage) } HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.25), results[1].damage); + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.33), results[1].damage); } } diff --git a/test/battle/ability/cute_charm.c b/test/battle/ability/cute_charm.c index 9bef66b19a..54ca0c2907 100644 --- a/test/battle/ability/cute_charm.c +++ b/test/battle/ability/cute_charm.c @@ -21,10 +21,12 @@ SINGLE_BATTLE_TEST("Cute Charm inflicts infatuation on contact") MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!"); MESSAGE("Wobbuffet is in love with Foe Clefairy!"); } else { - NOT ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player); - NOT MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!"); - NOT MESSAGE("Wobbuffet is in love with Foe Clefairy!"); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player); + MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!"); + MESSAGE("Wobbuffet is in love with Foe Clefairy!"); + } } } } diff --git a/test/battle/ability/flame_body.c b/test/battle/ability/flame_body.c index 959b583f80..b275c20e1c 100644 --- a/test/battle/ability/flame_body.c +++ b/test/battle/ability/flame_body.c @@ -20,10 +20,12 @@ SINGLE_BATTLE_TEST("Flame Body inflicts burn on contact") MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!"); STATUS_ICON(player, burn: TRUE); } else { - NOT ABILITY_POPUP(opponent, ABILITY_FLAME_BODY); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player); - NOT MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!"); - NOT STATUS_ICON(player, burn: TRUE); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_FLAME_BODY); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player); + MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!"); + STATUS_ICON(player, burn: TRUE); + } } } } diff --git a/test/battle/ability/flower_gift.c b/test/battle/ability/flower_gift.c index e02f90dc6c..a956741e5e 100644 --- a/test/battle/ability/flower_gift.c +++ b/test/battle/ability/flower_gift.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim in harsh sunlight") { GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim in harsh sunlight") SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when weather changes") { GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when weather c ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Cherrim transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CHERRIM); + EXPECT_EQ(player->species, SPECIES_CHERRIM_OVERCAST); } } @@ -43,7 +43,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when its abili { GIVEN { ASSUME(B_WEATHER_FORMS >= GEN_5); - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -57,7 +57,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when its abili ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Cherrim transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CHERRIM); + EXPECT_EQ(player->species, SPECIES_CHERRIM_OVERCAST); } } @@ -67,7 +67,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies b PARAMETRIZE { sunny = FALSE; } PARAMETRIZE { sunny = TRUE; } GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -101,7 +101,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the Sp. Def of Cherrim and its allies PARAMETRIZE { sunny = FALSE; } PARAMETRIZE { sunny = TRUE; } GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/ability/forecast.c b/test/battle/ability/forecast.c index 66793ebfb2..6bb4c5045f 100644 --- a/test/battle/ability/forecast.c +++ b/test/battle/ability/forecast.c @@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from an opponent's m PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, move); } @@ -42,7 +42,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from its own move") PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, move); } @@ -75,7 +75,7 @@ DOUBLE_BATTLE_TEST("Forecast transforms Castform in weather from a partner's mov PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -110,10 +110,10 @@ DOUBLE_BATTLE_TEST("Forecast transforms all Castforms present in weather") PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } - OPPONENT(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } - OPPONENT(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } + OPPONENT(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } + OPPONENT(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } } WHEN { TURN { MOVE(playerRight, move); } } SCENE { @@ -162,7 +162,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from an ability") PARAMETRIZE { species = SPECIES_GROUDON; ability = ABILITY_DROUGHT; } PARAMETRIZE { species = SPECIES_ABOMASNOW; ability = ABILITY_SNOW_WARNING; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(species) { Ability(ability); } } WHEN { @@ -193,7 +193,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in primal weather") PARAMETRIZE { species = SPECIES_KYOGRE; ability = ABILITY_PRIMORDIAL_SEA; item = ITEM_BLUE_ORB; } PARAMETRIZE { species = SPECIES_GROUDON; ability = ABILITY_DESOLATE_LAND; item = ITEM_RED_ORB; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(species) { Item(item); } } WHEN { @@ -219,7 +219,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in primal weather") SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when weather expires") { GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -238,14 +238,14 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when weather exp ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when Sandstorm is active") { GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -260,7 +260,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when Sandstorm i ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } @@ -268,7 +268,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal under Air Lock") { KNOWN_FAILING; GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_RAYQUAZA); } WHEN { @@ -285,7 +285,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal under Air Lock") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } @@ -293,7 +293,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform on switch-in") { GIVEN { PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -313,7 +313,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform on switch-in") SINGLE_BATTLE_TEST("Forecast transforms Castform when weather changes") { GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -336,7 +336,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when its ability { GIVEN { ASSUME(B_WEATHER_FORMS >= GEN_5); - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -350,6 +350,6 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when its ability ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } diff --git a/test/battle/ability/harvest.c b/test/battle/ability/harvest.c new file mode 100644 index 0000000000..9fb969b036 --- /dev/null +++ b/test/battle/ability/harvest.c @@ -0,0 +1,17 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Harvest has a 50% chance to restore a Berry at the end of the turn"); +TO_DO_BATTLE_TEST("Harvest always restores a Berry in Sunlight"); +TO_DO_BATTLE_TEST("Harvest restores a Berry even after being switched out and back in"); +TO_DO_BATTLE_TEST("Harvest restores a Berry consumed by Fling"); +TO_DO_BATTLE_TEST("Harvest restores a Berry consumed by Natural Gift"); +TO_DO_BATTLE_TEST("Harvest only works once per turn"); // Check for berries that are consumed immediately, like Pecha Berry +TO_DO_BATTLE_TEST("Harvest doesn't restore a Berry when destroyed by Incinerate"); +TO_DO_BATTLE_TEST("Harvest doesn't restore a Berry when knocked off by Knock Off"); +TO_DO_BATTLE_TEST("Harvest doesn't restore a Berry when eaten by Bug Bite/Pluck"); +TO_DO_BATTLE_TEST("Harvest doesn't restore a Berry that's collected via Pickup"); +TO_DO_BATTLE_TEST("Harvest order is affected by speed"); +TO_DO_BATTLE_TEST("Harvest doesn't restore a Berry when transfered to another Pokémon"); +TO_DO_BATTLE_TEST("Harvest can restore a Berry that was transferred from another Pokémon"); +TO_DO_BATTLE_TEST("Harvest can only restore the newest berry consumed that was transferred from another Pokémon instead of its original Berry"); diff --git a/test/battle/ability/hunger_switch.c b/test/battle/ability/hunger_switch.c index c0802d6643..2b39bde589 100644 --- a/test/battle/ability/hunger_switch.c +++ b/test/battle/ability/hunger_switch.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Hunger Switch switches Morpeko's forms at the end of the turn") { u16 species; - PARAMETRIZE { species = SPECIES_MORPEKO; } + PARAMETRIZE { species = SPECIES_MORPEKO_FULL_BELLY; } PARAMETRIZE { species = SPECIES_MORPEKO_HANGRY; } GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); @@ -17,9 +17,9 @@ SINGLE_BATTLE_TEST("Hunger Switch switches Morpeko's forms at the end of the tur MESSAGE("Foe Wobbuffet used Celebrate!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); } THEN { - if (species == SPECIES_MORPEKO) + if (species == SPECIES_MORPEKO_FULL_BELLY) EXPECT_EQ(player->species, SPECIES_MORPEKO_HANGRY); else - EXPECT_EQ(player->species, SPECIES_MORPEKO); + EXPECT_EQ(player->species, SPECIES_MORPEKO_FULL_BELLY); } } diff --git a/test/battle/ability/leaf_guard.c b/test/battle/ability/leaf_guard.c index 66eb6fc186..595a9451c3 100644 --- a/test/battle/ability/leaf_guard.c +++ b/test/battle/ability/leaf_guard.c @@ -25,10 +25,13 @@ SINGLE_BATTLE_TEST("Leaf Guard prevents non-volatile status conditions in sun") NOT ANIMATION(ANIM_TYPE_MOVE, move, opponent); ABILITY_POPUP(player, ABILITY_LEAF_GUARD); MESSAGE("It doesn't affect Leafeon…"); + NOT STATUS_ICON(player, status); } else { - NOT ABILITY_POPUP(player, ABILITY_LEAF_GUARD); + NONE_OF { + ABILITY_POPUP(player, ABILITY_LEAF_GUARD); + STATUS_ICON(player, status); + } } - NOT STATUS_ICON(player, status); } } @@ -65,7 +68,9 @@ SINGLE_BATTLE_TEST("Leaf Guard prevents Rest during sun") TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_REST); } } SCENE { MESSAGE("But it failed!"); - NOT STATUS_ICON(player, sleep: TRUE); - NONE_OF { HP_BAR(player); } + NONE_OF { + STATUS_ICON(player, sleep: TRUE); + HP_BAR(player); + } } } diff --git a/test/battle/ability/limber.c b/test/battle/ability/limber.c index 87d4177ffd..9ba2760c87 100644 --- a/test/battle/ability/limber.c +++ b/test/battle/ability/limber.c @@ -10,7 +10,9 @@ SINGLE_BATTLE_TEST("Limber prevents paralysis") TURN { MOVE(opponent, MOVE_THUNDER_SHOCK); } } SCENE { HP_BAR(player); - NONE_OF { ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); } - NONE_OF { STATUS_ICON(player, paralysis: TRUE); } + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + STATUS_ICON(player, paralysis: TRUE); + } } } diff --git a/test/battle/ability/parental_bond.c b/test/battle/ability/parental_bond.c new file mode 100644 index 0000000000..9d0598304d --- /dev/null +++ b/test/battle/ability/parental_bond.c @@ -0,0 +1,58 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Parental Bond converts Tackle into a two-strike move") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].split != SPLIT_STATUS); + ASSUME(gBattleMoves[MOVE_TACKLE].strikeCount < 2); + ASSUME(gBattleMoves[MOVE_TACKLE].effect == EFFECT_HIT); + PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, megaEvolve: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); + MESSAGE("Kangaskhan has Mega Evolved into Mega Kangaskhan!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + } THEN { + EXPECT_EQ(player->species, SPECIES_KANGASKHAN_MEGA); + } +} + +TO_DO_BATTLE_TEST("Parental Bond tests"); + +// Temporary TODO: Convert Bulbapedia description into tests. +/* +In battle +Parental Bond causes most damaging moves used by the Pokémon to become two-strike moves. It does not affect multi-strike moves. + +If a move could hit multiple targets (including allies), such as Earthquake and Rock Slide, it will not strike twice; however, if it can only hit a single Pokémon, such as in a Single Battle or if using a move that can hit multiple targets when only one target is in range, it will strike twice. If a move could hit multiple Pokémon but only hits one due to missing the other Pokémon, it will only strike once. + +Since Parental Bond turns moves into two-hit multi-strike moves, each strike has a separate chance to be a critical hit, items and Abilities that trigger upon strike or contact such as Cursed Body and Rocky Helmet occur for each strike, and Spiky Shield and King's Shield only damage and decrease Attack (respectively) once if they protect a Pokémon from a contact move used by a Pokémon with Parental Bond. Additionally, there is only one accuracy check, so either both strikes hit or both strikes miss. + +Any attack which has a secondary effect (except Secret Power) has the same secondary effect on both strikes (such as Power-Up Punch); if a secondary effect has a certain chance of occurring, each strike has an independent chance of activating that effect. Even if the Pokémon's Ability is changed to Mummy after the first strike, it will continue to make a second strike regardless. Pay Day scatters coins after the first strike only. Incinerate destroys applicable held items after each strike. + +Unlike other secondary effects, Secret Power's secondary effect can only occur after the final strike. If a move has recoil damage, the recoil will be based on the damage dealt by both strikes, but will be taken after the final strike; Struggle will inflict recoil damage equal to half the user's maximum HP (after the final strike). Moves that switch the target out and moves that switch the user out strike twice, then force a Pokémon to switch out after both strikes are conducted. Thief, Covet, Bug Bite, and Pluck do not steal or eat the target's held item until after the final strike, so if the target could use its item after the first strike (e.g. due to low HP), it will use it before the attacker can steal or eat it. Smelling Salts, Wake-Up Slap, and Knock Off do not cure the target's status condition or remove its held item (respectively) until after the final strike, so both strikes get the increased power. Fire-type moves, Scald, and Steam Eruption thaw a frozen target after the final strike (so a frozen target cannot be thawed and then burned by the same move). Smack Down and Thousand Arrows only cause the target to fall to the ground after the final strike. If Meloetta has Parental Bond and uses Relic Song, it will change Forme only once, after the final strike. Burn Up does not remove the user's Fire type until after the second strike (so both strikes receive same-type attack bonus). + +If a Pokémon with Parental Bond uses an Electric-type move on a Pokémon with Lightning Rod, or a Water-type move on a Pokémon with Storm Drain, the effect of raising the target's Special Attack will only happen once. + +If Present heals the target it will only strike once, but if it damages the target it will strike twice (the second strike will always damage the target). Fixed-damage moves (such as Seismic Toss and Dragon Rage) deal the full amount of damage for both strikes. The damage dealt by Psywave is generated separately for each strike, and the second strike's damage is not halved. Each strike of Super Fang halves the target's HP (effectively quartering it if HP is not changed between strikes). Counter, Mirror Coat, Metal Burst, and Bide deal the full amount of damage for both strikes. The first strike of Assurance counts as previously taking damage for the second strike, giving it increased power. Fury Cutter and Echoed Voice only consider uses of the move rather than hits, so the second strike's power is not boosted by the first strike. Grass Pledge, Fire Pledge, and Water Pledge strike twice, even when used as a combination move. Natural Gift and Spit Up strike twice. Moves that require recharging after use strike twice, but the user only needs to recharge for one turn. + +One-hit knockout moves, Fling, Self-Destruct, Explosion, Final Gambit, Uproar, Rollout, and Ice Ball only strike once. (Other consecutively executed moves, such as Outrage, can strike twice.) Moves with a charging turn (such as Fly and Solar Beam) only strike once, even if the Pokémon becomes fully charged in one turn (such as with a Power Herb). Endeavor also only strikes once, even if the user or target's HP is changed after it strikes (such as by Iron Barbs or the Sitrus Berry). Confusion damage only occurs once. + +Spirit Shackle and Anchor Shot only trap the target after the final strike. + +Generation VI +The second strike has its damage halved (unless it is a set-damage move) + +Generation VII onward +The second strike now deals 25% of its usual damage (unless it is a set-damage move). + +Parental Bond does not affect Z-Moves or Max Moves. +*/ +// TONS OF TESTS NEEDED. FOR NOW, THIS SINGLE TEST IS MADE TO MAKE SURE AN ISSUE WAS FIXED. diff --git a/test/battle/ability/poison_point.c b/test/battle/ability/poison_point.c index 7d2fcd518b..0df1255081 100644 --- a/test/battle/ability/poison_point.c +++ b/test/battle/ability/poison_point.c @@ -21,10 +21,12 @@ SINGLE_BATTLE_TEST("Poison Point inflicts poison on contact") MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!"); STATUS_ICON(player, poison: TRUE); } else { - NOT ABILITY_POPUP(opponent, ABILITY_POISON_POINT); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); - NOT MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!"); - NOT STATUS_ICON(player, poison: TRUE); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_POISON_POINT); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); + MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!"); + STATUS_ICON(player, poison: TRUE); + } } } } diff --git a/test/battle/ability/prankster.c b/test/battle/ability/prankster.c new file mode 100644 index 0000000000..3f402e0fc6 --- /dev/null +++ b/test/battle/ability/prankster.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Prankster-affected moves don't affect Dark-type Pokémon") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_UMBREON].types[0] == TYPE_DARK); + PLAYER(SPECIES_UMBREON); + OPPONENT(SPECIES_MURKROW) { Ability(ABILITY_PRANKSTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_CONFUSE_RAY); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player); + MESSAGE("It doesn't affect Umbreon…"); + } +} +TO_DO_BATTLE_TEST("Prankster-affected moves affect Ally Dark-type Pokémon") +TO_DO_BATTLE_TEST("Prankster-affected moves called via Assist don't affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves called via Nature Power don't affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves called via Instruct affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves called via After you affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Bounce/Coat can affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Coat from a Pokémon with Prankster can't affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected moves that target all Pokémon are successful regardless of the presence of Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster-affected move effects don't affect Dark-type Pokémon"); +TO_DO_BATTLE_TEST("Prankster increases the priority of moves by 1"); +TO_DO_BATTLE_TEST("Prankster increases the priority of status Z-Moves by 1"); +TO_DO_BATTLE_TEST("Prankster increases the priority of Extreme Evoboost by 1"); +TO_DO_BATTLE_TEST("Prankster is blocked by Quick Guard in Gen5+"); diff --git a/test/battle/ability/pressure.c b/test/battle/ability/pressure.c new file mode 100644 index 0000000000..db92d198b7 --- /dev/null +++ b/test/battle/ability/pressure.c @@ -0,0 +1,70 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Pressure causes opponent's moves to use up 1 additional PP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_POUND, 35}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_POUND); } + } THEN { + EXPECT_EQ(player->pp[0], 33); + } +} + +DOUBLE_BATTLE_TEST("Pressure's effect stacks with multiple Pokémon") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SWIFT, 20}); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + OPPONENT(SPECIES_WYNAUT) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SWIFT); } + } THEN { + EXPECT_EQ(playerLeft->pp[0], 17); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect applies to Imprison and Snatch") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_IMPRISON, 10}, {MOVE_SNATCH, 10}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_IMPRISON); } + TURN { MOVE(player, MOVE_SNATCH); } + } THEN { + EXPECT_EQ(player->pp[0], 8); + EXPECT_EQ(player->pp[1], 8); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect applies to Spikes, Stealth Rock and Toxic Spikes") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SPIKES, 20}, {MOVE_STEALTH_ROCK, 20}, {MOVE_TOXIC_SPIKES, 20}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_SPIKES); } + TURN { MOVE(player, MOVE_STEALTH_ROCK); } + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + } THEN { + EXPECT_EQ(player->pp[0], 18); + EXPECT_EQ(player->pp[1], 18); + EXPECT_EQ(player->pp[2], 18); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect doesn't apply to Sticky Web") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_STICKY_WEB, 20}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_STICKY_WEB); } + } THEN { + EXPECT_EQ(player->pp[0], 19); + } +} diff --git a/test/battle/ability/purifying_salt.c b/test/battle/ability/purifying_salt.c index 0a53dbc61b..ea89124681 100644 --- a/test/battle/ability/purifying_salt.c +++ b/test/battle/ability/purifying_salt.c @@ -57,9 +57,12 @@ SINGLE_BATTLE_TEST("Purifying Salt grants immunity to status effects") NOT ANIMATION(ANIM_TYPE_MOVE, move, opponent); ABILITY_POPUP(player, ABILITY_PURIFYING_SALT); MESSAGE("It doesn't affect Wobbuffet…"); + NOT STATUS_ICON(player, status); } else { - NOT ABILITY_POPUP(player, ABILITY_PURIFYING_SALT); + NONE_OF { + ABILITY_POPUP(player, ABILITY_PURIFYING_SALT); + STATUS_ICON(player, status); + } } - NOT STATUS_ICON(player, status); } } diff --git a/test/battle/ability/sap_sipper.c b/test/battle/ability/sap_sipper.c index 89ec422491..918e553a3a 100644 --- a/test/battle/ability/sap_sipper.c +++ b/test/battle/ability/sap_sipper.c @@ -21,8 +21,10 @@ SINGLE_BATTLE_TEST("Sap Sipper negates effects from Grass-type moves") } WHEN { TURN { MOVE(opponent, MOVE_SPORE); } } SCENE { - NONE_OF { ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, player); } - NONE_OF { STATUS_ICON(player, sleep: TRUE); } + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, player); + STATUS_ICON(player, sleep: TRUE); + } } } @@ -49,7 +51,9 @@ SINGLE_BATTLE_TEST("Sap Sipper does not increase Attack if already maxed") TURN { MOVE(player, MOVE_BELLY_DRUM); MOVE(opponent, MOVE_VINE_WHIP); } } SCENE { ABILITY_POPUP(player, ABILITY_SAP_SIPPER); - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } - NONE_OF { MESSAGE("Marill's Attack rose!"); } + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Marill's Attack rose!"); + } } } diff --git a/test/battle/ability/schooling.c b/test/battle/ability/schooling.c index 448e37261d..49a70266de 100644 --- a/test/battle/ability/schooling.c +++ b/test/battle/ability/schooling.c @@ -9,8 +9,8 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is 25 GIVEN { ASSUME(P_GEN_7_POKEMON == TRUE); - ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); - PLAYER(SPECIES_WISHIWASHI) + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI_SOLO].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI_SOLO) { Level(level); HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 2); @@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is 25 ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); } } THEN { - EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SOLO); } } @@ -49,8 +49,8 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is ov GIVEN { ASSUME(P_GEN_7_POKEMON == TRUE); - ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); - PLAYER(SPECIES_WISHIWASHI) + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI_SOLO].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI_SOLO) { Level(level); HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / (overQuarterHP ? 2 : 4)); @@ -71,7 +71,7 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is ov if (level >= 20 && overQuarterHP) EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SCHOOL); else - EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SOLO); } } @@ -83,8 +83,8 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is he GIVEN { ASSUME(P_GEN_7_POKEMON == TRUE); - ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); - PLAYER(SPECIES_WISHIWASHI) + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI_SOLO].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI_SOLO) { Level(level); HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 4); @@ -106,6 +106,6 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is he if (level >= 20) EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SCHOOL); else - EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SOLO); } } diff --git a/test/battle/ability/static.c b/test/battle/ability/static.c index e0d91aa0d5..51224da944 100644 --- a/test/battle/ability/static.c +++ b/test/battle/ability/static.c @@ -20,10 +20,12 @@ SINGLE_BATTLE_TEST("Static inflicts paralysis on contact") MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!"); STATUS_ICON(player, paralysis: TRUE); } else { - NOT ABILITY_POPUP(opponent, ABILITY_STATIC); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); - NOT MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!"); - NOT STATUS_ICON(player, paralysis: TRUE); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_STATIC); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!"); + STATUS_ICON(player, paralysis: TRUE); + } } } } diff --git a/test/battle/ability/sword_of_ruin.c b/test/battle/ability/sword_of_ruin.c index 2abc0c04f7..35ba4f6e0d 100644 --- a/test/battle/ability/sword_of_ruin.c +++ b/test/battle/ability/sword_of_ruin.c @@ -25,7 +25,7 @@ SINGLE_BATTLE_TEST("Sword of Ruin reduces Defense", s16 damage) } HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.25), results[1].damage); + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.33), results[1].damage); } } diff --git a/test/battle/ability/toxic_debris.c b/test/battle/ability/toxic_debris.c index f3e23e5abb..fadde2ceb5 100644 --- a/test/battle/ability/toxic_debris.c +++ b/test/battle/ability/toxic_debris.c @@ -17,10 +17,11 @@ SINGLE_BATTLE_TEST("Toxic Debris sets Toxic Spikes on the opposing side if hit b if (move == MOVE_TACKLE) { ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); - } - else { - NOT ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); - NOT MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + } else { + NONE_OF { + ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + } } } } @@ -42,8 +43,10 @@ SINGLE_BATTLE_TEST("Toxic Debris does not activate if two layers of Toxic Spikes ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); - NOT ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); - NOT MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + NONE_OF { + ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + } } } @@ -58,8 +61,10 @@ SINGLE_BATTLE_TEST("If a Substitute is hit, Toxic Debris does not set Toxic Spik } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); - NOT ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); - NOT MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + NONE_OF { + ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); + MESSAGE("Poison Spikes were scattered all around the opposing team's feet!"); + } } } diff --git a/test/battle/ability/wind_power.c b/test/battle/ability/wind_power.c index ad7d63a0e7..b68bff3b50 100644 --- a/test/battle/ability/wind_power.c +++ b/test/battle/ability/wind_power.c @@ -133,8 +133,10 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly for every battler with the ab ABILITY_POPUP(playerRight, ABILITY_WIND_POWER); MESSAGE("Being hit by Air Cutter charged Wobbuffet with power!"); } - NOT HP_BAR(opponentLeft); - NOT HP_BAR(opponentRight); + NONE_OF { + HP_BAR(opponentLeft); + HP_BAR(opponentRight); + } } THEN { EXPECT_NE(playerLeft->hp, playerLeft->maxHP); diff --git a/test/battle/ability/zen_mode.c b/test/battle/ability/zen_mode.c index 37bb4160f9..3d1e25ffa7 100644 --- a/test/battle/ability/zen_mode.c +++ b/test/battle/ability/zen_mode.c @@ -4,8 +4,8 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less at the end of the turn") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } GIVEN { ASSUME(P_GEN_5_POKEMON == TRUE); @@ -34,8 +34,8 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less before the first turn") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } GIVEN { ASSUME(P_GEN_5_POKEMON == TRUE); @@ -63,8 +63,8 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is healed above half") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } GIVEN { ASSUME(P_GEN_5_POKEMON == TRUE); diff --git a/test/battle/form_change/battle_switch.c b/test/battle/form_change/battle_switch.c index bd18e0ccfc..dd6c68466e 100644 --- a/test/battle/form_change/battle_switch.c +++ b/test/battle/form_change/battle_switch.c @@ -5,7 +5,7 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon switching out") { GIVEN { ASSUME(P_GEN_6_POKEMON == TRUE); - PLAYER(SPECIES_AEGISLASH); + PLAYER(SPECIES_AEGISLASH_SHIELD); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -18,6 +18,6 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon switching out") MESSAGE("Aegislash used Tackle!"); MESSAGE("Foe Wobbuffet used Celebrate!"); } THEN { - EXPECT_EQ(player->species, SPECIES_AEGISLASH); + EXPECT_EQ(player->species, SPECIES_AEGISLASH_SHIELD); } } diff --git a/test/battle/form_change/begin_battle.c b/test/battle/form_change/begin_battle.c index 328db756df..b61ff069d4 100644 --- a/test/battle/form_change/begin_battle.c +++ b/test/battle/form_change/begin_battle.c @@ -5,7 +5,7 @@ SINGLE_BATTLE_TEST("Xerneas changes into Active Form upon battle start") { GIVEN { ASSUME(P_GEN_6_POKEMON == TRUE); - PLAYER(SPECIES_XERNEAS); + PLAYER(SPECIES_XERNEAS_NEUTRAL); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } @@ -21,13 +21,13 @@ SINGLE_BATTLE_TEST("Zacian changes into its Crowned Form when holding the Rusted PARAMETRIZE { item = ITEM_RUSTED_SWORD; } GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZACIAN) { Item(item); } + PLAYER(SPECIES_ZACIAN_HERO_OF_MANY_BATTLES) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } } THEN { if (item == ITEM_NONE) - EXPECT_EQ(player->species, SPECIES_ZACIAN); + EXPECT_EQ(player->species, SPECIES_ZACIAN_HERO_OF_MANY_BATTLES); else EXPECT_EQ(player->species, SPECIES_ZACIAN_CROWNED_SWORD); } @@ -37,7 +37,7 @@ SINGLE_BATTLE_TEST("Zacian's Iron Head becomes Behemoth Blade upon form change") { GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZACIAN) { Item(ITEM_RUSTED_SWORD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } + PLAYER(SPECIES_ZACIAN_HERO_OF_MANY_BATTLES) { Item(ITEM_RUSTED_SWORD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } @@ -54,13 +54,13 @@ SINGLE_BATTLE_TEST("Zamazenta changes into its Crowned Form when holding the Rus PARAMETRIZE { item = ITEM_RUSTED_SHIELD; } GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZAMAZENTA) { Item(item); } + PLAYER(SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } } THEN { if (item == ITEM_NONE) - EXPECT_EQ(player->species, SPECIES_ZAMAZENTA); + EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES); else EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_CROWNED_SHIELD); } @@ -70,7 +70,7 @@ SINGLE_BATTLE_TEST("Zamazenta's Iron Head becomes Behemoth Bash upon form change { GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZAMAZENTA) { Item(ITEM_RUSTED_SHIELD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } + PLAYER(SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES) { Item(ITEM_RUSTED_SHIELD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } diff --git a/test/battle/form_change/faint.c b/test/battle/form_change/faint.c index f4baa2894e..82f361917e 100644 --- a/test/battle/form_change/faint.c +++ b/test/battle/form_change/faint.c @@ -5,7 +5,7 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon fainting") { GIVEN { ASSUME(P_GEN_6_POKEMON == TRUE); - PLAYER(SPECIES_AEGISLASH) { HP(1); } + PLAYER(SPECIES_AEGISLASH_SHIELD) { HP(1); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -14,6 +14,6 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon fainting") MESSAGE("Foe Wobbuffet used Gust!"); MESSAGE("Aegislash fainted!"); } THEN { - EXPECT_EQ(GetMonData(&PLAYER_PARTY[0], MON_DATA_SPECIES), SPECIES_AEGISLASH); + EXPECT_EQ(GetMonData(&PLAYER_PARTY[0], MON_DATA_SPECIES), SPECIES_AEGISLASH_SHIELD); } } diff --git a/test/battle/hold_effect/attack_up.c b/test/battle/hold_effect/attack_up.c index 2a6dd7c2df..0602d651d7 100644 --- a/test/battle/hold_effect/attack_up.c +++ b/test/battle/hold_effect/attack_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Liechi Berry raises the holder's Attack by one stage when HP TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Using Liechi Berry, the Attack of Wobbuffet rose!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Using Liechi Berry, the Attack of Wobbuffet rose!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Liechi Berry, the Attack of Wobbuffet rose!"); } diff --git a/test/battle/hold_effect/critical_hit_up.c b/test/battle/hold_effect/critical_hit_up.c index 799a1e423f..c0cc2e864f 100644 --- a/test/battle/hold_effect/critical_hit_up.c +++ b/test/battle/hold_effect/critical_hit_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two s TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Wobbuffet used Lansat Berry to get pumped!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet used Lansat Berry to get pumped!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet used Lansat Berry to get pumped!"); } @@ -48,11 +47,12 @@ SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two s } } -SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two stages when HP drops to 1/4 or below") +SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two stages") { PASSES_RANDOMLY(1, 2, RNG_CRITICAL_HIT); GIVEN { ASSUME(gBattleMoves[MOVE_TACKLE].highCritRatio == FALSE); + ASSUME(B_CRIT_CHANCE >= GEN_6); PLAYER(SPECIES_WOBBUFFET) { MaxHP(160); HP(80); Item(ITEM_LANSAT_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/hold_effect/defense_up.c b/test/battle/hold_effect/defense_up.c index 4326f156dc..774cd3b981 100644 --- a/test/battle/hold_effect/defense_up.c +++ b/test/battle/hold_effect/defense_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Ganlon Berry raises the holder's Defense by one stage when H TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Using Ganlon Berry, the Defense of Wobbuffet rose!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Using Ganlon Berry, the Defense of Wobbuffet rose!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Ganlon Berry, the Defense of Wobbuffet rose!"); } diff --git a/test/battle/hold_effect/jaboca_berry.c b/test/battle/hold_effect/jaboca_berry.c index ce102ff83a..d009ae03a6 100644 --- a/test/battle/hold_effect/jaboca_berry.c +++ b/test/battle/hold_effect/jaboca_berry.c @@ -4,41 +4,57 @@ ASSUMPTIONS { ASSUME(gItems[ITEM_JABOCA_BERRY].holdEffect == HOLD_EFFECT_JABOCA_BERRY); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); } SINGLE_BATTLE_TEST("Jaboca Berry causes the attacker to lose 1/8 of its max HP if a physical move was used") { s16 damage; + u16 move; - GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_JABOCA_BERRY); } - } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); - HP_BAR(opponent); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - HP_BAR(player, captureDamage: &damage); - MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Jaboca Berry!"); - } THEN { - EXPECT_EQ(player->maxHP / 8, damage); - } -} + PARAMETRIZE { move = MOVE_SWIFT; } + PARAMETRIZE { move = MOVE_TACKLE; } -SINGLE_BATTLE_TEST("Jaboca Berry is not triggered by a special move") -{ GIVEN { ASSUME(gBattleMoves[MOVE_SWIFT].split == SPLIT_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_JABOCA_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_SWIFT); } + TURN { MOVE(player, move); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_SWIFT, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - NOT MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Jaboca Berry!"); + if (move == MOVE_TACKLE) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + HP_BAR(player, captureDamage: &damage); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Jaboca Berry!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Jaboca Berry!"); + } + } + } THEN { + if (move == MOVE_TACKLE) + EXPECT_EQ(player->maxHP / 8, damage); + } +} + +SINGLE_BATTLE_TEST("Jaboca Berry tirggers before Bug Bite can steal it") +{ + KNOWN_FAILING; + GIVEN { + ASSUME(gBattleMoves[MOVE_BUG_BITE].split == SPLIT_PHYSICAL); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_JABOCA_BERRY); } + } WHEN { + TURN { MOVE(player, MOVE_BUG_BITE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BUG_BITE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + HP_BAR(player); + MESSAGE("Wyanut was hurt by Foe Wobbuffet's Jaboca Berry!"); + NOT MESSAGE("Wynaut stole and ate Foe Wobbuffet's Jaboca Berry!"); } } diff --git a/test/battle/hold_effect/kee_berry.c b/test/battle/hold_effect/kee_berry.c index a809381226..6e5319416f 100644 --- a/test/battle/hold_effect/kee_berry.c +++ b/test/battle/hold_effect/kee_berry.c @@ -4,23 +4,37 @@ ASSUMPTIONS { ASSUME(gItems[ITEM_KEE_BERRY].holdEffect == HOLD_EFFECT_KEE_BERRY); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); } SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by one stage when hit by a physical move") { + u16 move; + + PARAMETRIZE { move = MOVE_SWIFT; } + PARAMETRIZE { move = MOVE_TACKLE; } + GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + ASSUME(gBattleMoves[MOVE_SWIFT].split == SPLIT_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_KEE_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, move); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - MESSAGE("Using Kee Berry, the Defense of Foe Wobbuffet rose!"); + if (move == MOVE_TACKLE) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Using Kee Berry, the Defense of Foe Wobbuffet rose!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Using Kee Berry, the Defense of Foe Wobbuffet rose!"); + } + } } THEN { - EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); + if (move == MOVE_TACKLE) + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); } } @@ -28,7 +42,6 @@ SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by two stages with Rip { GIVEN { ASSUME(P_GEN_8_POKEMON == TRUE); - ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_APPLIN) { Item(ITEM_KEE_BERRY); Ability(ABILITY_RIPEN); } } WHEN { @@ -54,7 +67,9 @@ SINGLE_BATTLE_TEST("Kee Berry is not triggered by a special move") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SWIFT, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - NOT MESSAGE("Using Kee Berry, the Defense of Foe Wobbuffet rose!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Using Kee Berry, the Defense of Foe Wobbuffet rose!"); + } } } diff --git a/test/battle/hold_effect/maranga_berry.c b/test/battle/hold_effect/maranga_berry.c index 08f827c30c..0a3edffbf5 100644 --- a/test/battle/hold_effect/maranga_berry.c +++ b/test/battle/hold_effect/maranga_berry.c @@ -8,19 +8,32 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Maranga Berry raises the holder's Sp. Def by one stage when hit by a special move") { + u16 move = MOVE_NONE; + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); ASSUME(gBattleMoves[MOVE_SWIFT].split == SPLIT_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_MARANGA_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_SWIFT); } + TURN { MOVE(player, move); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_SWIFT, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - MESSAGE("Using Maranga Berry, the Sp. Def of Foe Wobbuffet rose!"); + if (move == MOVE_SWIFT) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Using Maranga Berry, the Sp. Def of Foe Wobbuffet rose!"); + } + else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Using Maranga Berry, the Sp. Def of Foe Wobbuffet rose!"); + } + } } THEN { - EXPECT_EQ(opponent->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 1); + if (move == MOVE_SWIFT) + EXPECT_EQ(opponent->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 1); } } @@ -42,19 +55,3 @@ SINGLE_BATTLE_TEST("Maranga Berry raises the holder's Sp. Def by two stages with EXPECT_EQ(opponent->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 2); } } - -SINGLE_BATTLE_TEST("Maranga Berry raises the holder's Sp. Def by one stage when hit by a special move") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_MARANGA_BERRY); } - } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); - HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - NOT MESSAGE("Using Maranga Berry, the Sp. Def of Foe Wobbuffet rose!"); - } -} diff --git a/test/battle/hold_effect/micle_berry.c b/test/battle/hold_effect/micle_berry.c index 224c2fecf6..79c40f68cc 100644 --- a/test/battle/hold_effect/micle_berry.c +++ b/test/battle/hold_effect/micle_berry.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Micle Berry raises the holder's accuracy by 1.2 when HP drop TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Wobbuffet boosted the accuracy of its next move using Micle Berry!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet boosted the accuracy of its next move using Micle Berry!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet boosted the accuracy of its next move using Micle Berry!"); } @@ -64,5 +63,3 @@ SINGLE_BATTLE_TEST("Micle Berry raises the holder's accuracy by 1.2") ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBMISSION, player); } } - - diff --git a/test/battle/hold_effect/rowap_berry.c b/test/battle/hold_effect/rowap_berry.c index 4145948791..d019a0f77b 100644 --- a/test/battle/hold_effect/rowap_berry.c +++ b/test/battle/hold_effect/rowap_berry.c @@ -9,21 +9,34 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Rowap Berry causes the attacker to lose 1/8 of its max HP if a special move was used") { s16 damage; + u16 move; + + PARAMETRIZE { move = MOVE_SWIFT; } + PARAMETRIZE { move = MOVE_TACKLE; } GIVEN { ASSUME(gBattleMoves[MOVE_SWIFT].split == SPLIT_SPECIAL); + ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ROWAP_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_SWIFT); } + TURN { MOVE(player, move); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_SWIFT, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - HP_BAR(player, captureDamage: &damage); - MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rowap Berry!"); + if (move == MOVE_SWIFT) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + HP_BAR(player, captureDamage: &damage); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rowap Berry!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rowap Berry!"); + } + } } THEN { - EXPECT_EQ(player->maxHP / 8, damage); + if (move == MOVE_SWIFT) + EXPECT_EQ(player->maxHP / 8, damage); } } @@ -38,7 +51,9 @@ SINGLE_BATTLE_TEST("Rowap Berry is not triggered by a physical move") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); - NOT MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rowap Berry!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rowap Berry!"); + } } } diff --git a/test/battle/hold_effect/safety_goggles.c b/test/battle/hold_effect/safety_goggles.c index f00cdb3325..1b8c47de70 100644 --- a/test/battle/hold_effect/safety_goggles.c +++ b/test/battle/hold_effect/safety_goggles.c @@ -10,7 +10,6 @@ SINGLE_BATTLE_TEST("Safety Goggles block powder and spore moves") { GIVEN { ASSUME(gBattleMoves[MOVE_STUN_SPORE].powderMove); - ASSUME(gItems[ITEM_SAFETY_GOGGLES].holdEffect == HOLD_EFFECT_SAFETY_GOGGLES); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_ABRA) { Item(ITEM_SAFETY_GOGGLES); } } WHEN { @@ -21,6 +20,28 @@ SINGLE_BATTLE_TEST("Safety Goggles block powder and spore moves") } } -TO_DO_BATTLE_TEST("Safety Goggles blocks damage from hail"); -TO_DO_BATTLE_TEST("Safety Goggles blocks damage from sandstorm"); +SINGLE_BATTLE_TEST("Safety Goggles blocks damage from Hail") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(player, MOVE_HAIL); } + } SCENE { + NOT MESSAGE("Foe Wobbuffet is pelted by HAIL!"); + } +} + +SINGLE_BATTLE_TEST("Safety Goggles blocks damage from Sandstorm") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(player, MOVE_SANDSTORM); } + } SCENE { + NOT MESSAGE("Foe Wobbuffet is buffeted by the sandstorm!"); + } +} + TO_DO_BATTLE_TEST("Safety Goggles blocks Effect Spore's effect"); diff --git a/test/battle/hold_effect/special_attack_up.c b/test/battle/hold_effect/special_attack_up.c index 1059960abc..9815ab1212 100644 --- a/test/battle/hold_effect/special_attack_up.c +++ b/test/battle/hold_effect/special_attack_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Petaya Berry raises the holder's Sp. Atk by one stage when H TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Using Petaya Berry, the Sp. Atk of Wobbuffet rose!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Using Petaya Berry, the Sp. Atk of Wobbuffet rose!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Petaya Berry, the Sp. Atk of Wobbuffet rose!"); } diff --git a/test/battle/hold_effect/special_defense_up.c b/test/battle/hold_effect/special_defense_up.c index 9a6c8c44be..2ba3c02a57 100644 --- a/test/battle/hold_effect/special_defense_up.c +++ b/test/battle/hold_effect/special_defense_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Apicot Berry raises the holder's Sp. Def by one stage when H TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Using Apicot Berry, the Sp. Def of Wobbuffet rose!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Using Apicot Berry, the Sp. Def of Wobbuffet rose!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Apicot Berry, the Sp. Def of Wobbuffet rose!"); } diff --git a/test/battle/hold_effect/speed_up.c b/test/battle/hold_effect/speed_up.c index 62ca65dbc2..558d4262e8 100644 --- a/test/battle/hold_effect/speed_up.c +++ b/test/battle/hold_effect/speed_up.c @@ -21,13 +21,12 @@ SINGLE_BATTLE_TEST("Salac Berry raises the holder's Speed by one stage when HP d TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) - { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - NOT MESSAGE("Using Salac Berry, the Speed of Wobbuffet rose!"); - } - else - { + if (move == MOVE_TACKLE) { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Using Salac Berry, the Speed of Wobbuffet rose!"); + } + } else { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Salac Berry, the Speed of Wobbuffet rose!"); } diff --git a/test/battle/move_effect/absorb.c b/test/battle/move_effect/absorb.c index d46dbd9c5c..5d164de40d 100644 --- a/test/battle/move_effect/absorb.c +++ b/test/battle/move_effect/absorb.c @@ -34,8 +34,10 @@ SINGLE_BATTLE_TEST("Absorb fails if Heal Block applies") TURN { MOVE(opponent, MOVE_HEAL_BLOCK); MOVE(player, MOVE_ABSORB); } } SCENE { MESSAGE("Wobbuffet was prevented from healing!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player); - NOT HP_BAR(opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player); + HP_BAR(opponent); + HP_BAR(player); + } } } diff --git a/test/battle/move_effect/aurora_veil.c b/test/battle/move_effect/aurora_veil.c new file mode 100644 index 0000000000..ff255d9ae4 --- /dev/null +++ b/test/battle/move_effect/aurora_veil.c @@ -0,0 +1,33 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_AURORA_VEIL].effect == EFFECT_AURORA_VEIL); +} + +SINGLE_BATTLE_TEST("Aurora Veil can only be used in Hail and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_CELEBRATE; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_AURORA_VEIL); } + } SCENE { + if (move == MOVE_CELEBRATE) + MESSAGE("But it failed!"); + else + NOT MESSAGE("But it failed!"); + } +} + +TO_DO_BATTLE_TEST("Aurora Veil reduces damage done to the user by half in singles") +TO_DO_BATTLE_TEST("Aurora Veil reduces damage done to the user by roughly a third in doubles") +TO_DO_BATTLE_TEST("Aurora Veil's damage reduction is ignored by Critical Hits") +TO_DO_BATTLE_TEST("Aurora Veil's damage reduction doesn't stack with Reflect or Light Screen") +TO_DO_BATTLE_TEST("Aurora Veil doesn't reduce confusion damage") +TO_DO_BATTLE_TEST("Aurora Veil doesn't reduce damage done by moves that do direct damage") // Bide, Counter, Endeavor, Final Gambit, Metal Burst, Mirror Coat, Psywave, Seismic Toss, Sonic Boom, Super Fang diff --git a/test/battle/move_effect/bug_bite.c b/test/battle/move_effect/bug_bite.c index 385b8a400f..8f59e6f003 100644 --- a/test/battle/move_effect/bug_bite.c +++ b/test/battle/move_effect/bug_bite.c @@ -114,18 +114,15 @@ SINGLE_BATTLE_TEST("Bug Bite eats the target's berry and immediately gains its e } } -// To verify in the actual games. -// Bulbapedia - The effect of a Jaboca Berry will activate before the Berry can be stolen. -// Showdown - Jaboca Berry is stolen and eaten and nothing happens. This is how it currently works on expansion. -TO_DO_BATTLE_TEST("Bug Bite interaction with Jaboca Berry."); - SINGLE_BATTLE_TEST("Tanga Berry activates before Bug Bite") { GIVEN { + ASSUME(gItems[ITEM_TANGA_BERRY].holdEffect == HOLD_EFFECT_RESIST_BERRY); + ASSUME(gItems[ITEM_TANGA_BERRY].holdEffectParam == TYPE_BUG); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) {Item(ITEM_TANGA_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_BUG_BITE); } + TURN { MOVE(player, MOVE_BUG_BITE); } } SCENE { MESSAGE("Wobbuffet used Bug Bite!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); diff --git a/test/battle/move_effect/burn_hit.c b/test/battle/move_effect/burn_hit.c index 3f257dfcb3..627a051a53 100644 --- a/test/battle/move_effect/burn_hit.c +++ b/test/battle/move_effect/burn_hit.c @@ -21,7 +21,7 @@ SINGLE_BATTLE_TEST("Ember inflicts burn") } } -SINGLE_BATTLE_TEST("Ember cannot burn a Fire-type") +SINGLE_BATTLE_TEST("Ember cannot burn a Fire-type Pokémon") { GIVEN { ASSUME(gSpeciesInfo[SPECIES_CHARMANDER].types[0] == TYPE_FIRE); @@ -32,7 +32,9 @@ SINGLE_BATTLE_TEST("Ember cannot burn a Fire-type") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); - NOT STATUS_ICON(opponent, burn: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + STATUS_ICON(opponent, burn: TRUE); + } } } diff --git a/test/battle/move_effect/dire_claw.c b/test/battle/move_effect/dire_claw.c index 421ba201d0..9149f4a3cc 100644 --- a/test/battle/move_effect/dire_claw.c +++ b/test/battle/move_effect/dire_claw.c @@ -25,11 +25,9 @@ SINGLE_BATTLE_TEST("Dire Claw can inflict poison, paralysis or sleep") ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); if (statusAnim == B_ANIM_STATUS_PRZ) { STATUS_ICON(opponent, paralysis: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_SLP) { + } else if (statusAnim == B_ANIM_STATUS_SLP) { STATUS_ICON(opponent, sleep: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PSN) { + } else if (statusAnim == B_ANIM_STATUS_PSN) { STATUS_ICON(opponent, poison: TRUE); } } @@ -53,12 +51,13 @@ SINGLE_BATTLE_TEST("Dire Claw cannot poison/paralyze poison/electric types respe } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DIRE_CLAW, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PSN) { - NOT STATUS_ICON(opponent, poison: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponent, poison: TRUE); + } } } } @@ -86,15 +85,15 @@ SINGLE_BATTLE_TEST("Dire Claw cannot poison/paralyze/cause to fall asleep pokemo } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DIRE_CLAW, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_SLP) { - NOT STATUS_ICON(opponent, sleep: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PSN) { - NOT STATUS_ICON(opponent, poison: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } else if (statusAnim == B_ANIM_STATUS_SLP) { + STATUS_ICON(opponent, sleep: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponent, poison: TRUE); + } } } } @@ -115,15 +114,15 @@ SINGLE_BATTLE_TEST("Dire Claw cannot poison/paralyze/cause to fall asleep a mon } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DIRE_CLAW, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_SLP) { - NOT STATUS_ICON(opponent, sleep: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PSN) { - NOT STATUS_ICON(opponent, poison: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } else if (statusAnim == B_ANIM_STATUS_SLP) { + STATUS_ICON(opponent, sleep: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponent, poison: TRUE); + } } } } diff --git a/test/battle/move_effect/dream_eater.c b/test/battle/move_effect/dream_eater.c index 047fe78982..62fd918a1b 100644 --- a/test/battle/move_effect/dream_eater.c +++ b/test/battle/move_effect/dream_eater.c @@ -47,8 +47,10 @@ SINGLE_BATTLE_TEST("Dream Eater fails if Heal Block applies") TURN { MOVE(opponent, MOVE_HEAL_BLOCK); MOVE(player, MOVE_DREAM_EATER); } } SCENE { MESSAGE("Wobbuffet was prevented from healing!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_DREAM_EATER, player); - NOT HP_BAR(opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DREAM_EATER, player); + HP_BAR(opponent); + HP_BAR(player); + } } } diff --git a/test/battle/move_effect/freeze_hit.c b/test/battle/move_effect/freeze_hit.c index 5d99311cee..4c9ff557e4 100644 --- a/test/battle/move_effect/freeze_hit.c +++ b/test/battle/move_effect/freeze_hit.c @@ -4,6 +4,7 @@ ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_POWDER_SNOW].effect == EFFECT_FREEZE_HIT); + ASSUME(gBattleMoves[MOVE_BLIZZARD].accuracy == 70); } SINGLE_BATTLE_TEST("Powder Snow inflicts freeze") @@ -21,7 +22,7 @@ SINGLE_BATTLE_TEST("Powder Snow inflicts freeze") } } -SINGLE_BATTLE_TEST("Powder Snow cannot freeze an Ice-type") +SINGLE_BATTLE_TEST("Powder Snow cannot freeze an Ice-type Pokémon") { GIVEN { ASSUME(gSpeciesInfo[SPECIES_SNORUNT].types[0] == TYPE_ICE); @@ -32,7 +33,36 @@ SINGLE_BATTLE_TEST("Powder Snow cannot freeze an Ice-type") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_POWDER_SNOW, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent); - NOT STATUS_ICON(opponent, freeze: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent); + STATUS_ICON(opponent, freeze: TRUE); + } + } +} + +SINGLE_BATTLE_TEST("Freeze cannot be inflicted in Sunlight") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_ICE_BEAM); } + } SCENE { + NOT MESSAGE("Wobbuffet was frozen solid!"); + } +} + +SINGLE_BATTLE_TEST("Blizzard bypasses accuracy checks in Hail and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_BLIZZARD); } + } SCENE { + NOT MESSAGE("Wobbuffet's attack missed!"); } } diff --git a/test/battle/move_effect/gigaton_hammer.c b/test/battle/move_effect/gigaton_hammer.c deleted file mode 100644 index aaff50f752..0000000000 --- a/test/battle/move_effect/gigaton_hammer.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "global.h" -#include "test/battle.h" - -ASSUMPTIONS -{ - ASSUME(gBattleMoves[MOVE_GIGATON_HAMMER].effect == EFFECT_GIGATON_HAMMER); -} - -SINGLE_BATTLE_TEST("Struggle will be used if slow Encore is used on Gigaton Hammer") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); MOVE(opponent, MOVE_ENCORE); } - TURN { FORCED_MOVE(player); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - } -} - -SINGLE_BATTLE_TEST("Gigaton Hammer strikes again if fast encore is used") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { MOVE(opponent, MOVE_ENCORE); FORCED_MOVE(player); } - TURN { FORCED_MOVE(player); } - TURN { FORCED_MOVE(player); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - } -} - -SINGLE_BATTLE_TEST("Gigaton Hammer alternates with Struggle if it is the only usable move left") -{ - GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_GIGATON_HAMMER, MOVE_NONE, MOVE_NONE, MOVE_NONE); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { FORCED_MOVE(player); } - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { FORCED_MOVE(player); } - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - } -} diff --git a/test/battle/move_effect/hurricane.c b/test/battle/move_effect/hurricane.c new file mode 100644 index 0000000000..31cd956b10 --- /dev/null +++ b/test/battle/move_effect/hurricane.c @@ -0,0 +1,35 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_HURRICANE].effect == EFFECT_HURRICANE); + ASSUME(gBattleMoves[MOVE_HURRICANE].accuracy == 70); +} + +SINGLE_BATTLE_TEST("Hurricane's accuracy is lowered to 50% in Sunlight") +{ + PASSES_RANDOMLY(50, 100, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SUNNY_DAY); MOVE(opponent, MOVE_HURRICANE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HURRICANE, opponent); + } +} + +SINGLE_BATTLE_TEST("Hurricane bypasses accuracy checks in Rain") +{ + PASSES_RANDOMLY(100, 100, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_RAIN_DANCE); MOVE(player, MOVE_HURRICANE); } + } SCENE { + NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } + } +} +TO_DO_BATTLE_TEST("Hurricane Veil can hit airborne targets") // Fly, Bounce, Sky Drop diff --git a/test/battle/move_effect/leech_seed.c b/test/battle/move_effect/leech_seed.c new file mode 100644 index 0000000000..a2585a3d7f --- /dev/null +++ b/test/battle/move_effect/leech_seed.c @@ -0,0 +1,26 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_LEECH_SEED].effect == EFFECT_LEECH_SEED); +} + +SINGLE_BATTLE_TEST("Leech Seed doesn't affect Grass-type Pokémon") +{ + PASSES_RANDOMLY(90, 100, RNG_ACCURACY); + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_ODDISH].types[0] == TYPE_GRASS); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_ODDISH); + } WHEN { + TURN { MOVE(player, MOVE_LEECH_SEED); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_LEECH_SEED, player); + MESSAGE("It doesn't affect Foe Oddish…"); + } +} +TO_DO_BATTLE_TEST("Leech Seed doesn't affect already seeded targets") +TO_DO_BATTLE_TEST("Leech Seeded targets lose 1/8 of its max HP every turn and give it to the user") +TO_DO_BATTLE_TEST("Leech Seed's effect is paused until a new battler replaces the original user's position") // Faint, can't be replaced, then revived. +TO_DO_BATTLE_TEST("Leech Seed's effect pause still prevents it from being seeded again") diff --git a/test/battle/move_effect/make_it_rain.c b/test/battle/move_effect/make_it_rain.c index 42046c1457..560bcffa78 100644 --- a/test/battle/move_effect/make_it_rain.c +++ b/test/battle/move_effect/make_it_rain.c @@ -32,3 +32,27 @@ SINGLE_BATTLE_TEST("Make It Rain lowers special attack by one stage") EXPECT_MUL_EQ(damage[0], Q_4_12(0.66), damage[1]); } } + +DOUBLE_BATTLE_TEST("Make It Rain lowers special attack by one stage if it hits both targets") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MAKE_IT_RAIN); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MAKE_IT_RAIN, playerLeft); + HP_BAR(opponentLeft); + NONE_OF { + MESSAGE("Coins scattered everywhere!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's Sp. Atk fell!"); + } + HP_BAR(opponentRight); + MESSAGE("Coins scattered everywhere!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's Sp. Atk fell!"); + } +} diff --git a/test/battle/move_effect/moonlight.c b/test/battle/move_effect/moonlight.c new file mode 100644 index 0000000000..ded85c3fc4 --- /dev/null +++ b/test/battle/move_effect/moonlight.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_MOONLIGHT].effect == EFFECT_MOONLIGHT); +} + +SINGLE_BATTLE_TEST("Moonlight recovers 1/2 of the user's max HP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(200); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MOONLIGHT); } + } SCENE { + HP_BAR(player, damage: -(200 / 2)); + } +} + +SINGLE_BATTLE_TEST("Moonlight recovers 2/3 of the user's max HP in Sunlight") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(300); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_MOONLIGHT); } + } SCENE { + HP_BAR(player, damage: -(300 / 1.5)); + } +} + +SINGLE_BATTLE_TEST("Moonlight recovers 1/4 of the user's max HP in Rain, Sandstorm, Hail, and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_RAIN_DANCE; } + PARAMETRIZE { move = MOVE_SANDSTORM; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_MOONLIGHT); } + } SCENE { + HP_BAR(player, damage: -(400 / 4)); + } +} diff --git a/test/battle/move_effect/morning_sun.c b/test/battle/move_effect/morning_sun.c new file mode 100644 index 0000000000..7157944c6b --- /dev/null +++ b/test/battle/move_effect/morning_sun.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_MORNING_SUN].effect == EFFECT_MORNING_SUN); +} + +SINGLE_BATTLE_TEST("Morning Sun recovers 1/2 of the user's max HP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(200); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MORNING_SUN); } + } SCENE { + HP_BAR(player, damage: -(200 / 2)); + } +} + +SINGLE_BATTLE_TEST("Morning Sun recovers 2/3 of the user's max HP in Sunlight") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(300); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_MORNING_SUN); } + } SCENE { + HP_BAR(player, damage: -(300 / 1.5)); + } +} + +SINGLE_BATTLE_TEST("Morning Sun recovers 1/4 of the user's max HP in Rain, Sandstorm, Hail, and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_RAIN_DANCE; } + PARAMETRIZE { move = MOVE_SANDSTORM; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_MORNING_SUN); } + } SCENE { + HP_BAR(player, damage: -(400 / 4)); + } +} diff --git a/test/battle/move_effect/multi_hit.c b/test/battle/move_effect/multi_hit.c index 6a034c830f..99e506ad68 100644 --- a/test/battle/move_effect/multi_hit.c +++ b/test/battle/move_effect/multi_hit.c @@ -25,11 +25,12 @@ SINGLE_BATTLE_TEST("Multi hit Moves hit the maximum amount with Skill Link") } } -SINGLE_BATTLE_TEST("Multi hit Moves hit twice 35 Percent of the time") +SINGLE_BATTLE_TEST("Multi hit Moves hit twice 35% of the time") { PASSES_RANDOMLY(35, 100, RNG_HITS); GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -41,11 +42,12 @@ SINGLE_BATTLE_TEST("Multi hit Moves hit twice 35 Percent of the time") } } -SINGLE_BATTLE_TEST("Multi hit Moves hit thrice 35 Percent of the time") +SINGLE_BATTLE_TEST("Multi hit Moves hit thrice 35% of the time") { PASSES_RANDOMLY(35, 100, RNG_HITS); GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -58,11 +60,12 @@ SINGLE_BATTLE_TEST("Multi hit Moves hit thrice 35 Percent of the time") } } -SINGLE_BATTLE_TEST("Multi hit Moves hit four times 35 Percent of the time") +SINGLE_BATTLE_TEST("Multi hit Moves hit four times 15% of the time") { PASSES_RANDOMLY(15, 100, RNG_HITS); GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -76,11 +79,12 @@ SINGLE_BATTLE_TEST("Multi hit Moves hit four times 35 Percent of the time") } } -SINGLE_BATTLE_TEST("Multi hit Moves hit four times 35 Percent of the time") +SINGLE_BATTLE_TEST("Multi hit Moves hit five times 15% of the time") { PASSES_RANDOMLY(15, 100, RNG_HITS); GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/move_effect/ohko.c b/test/battle/move_effect/ohko.c new file mode 100644 index 0000000000..63e77b07f9 --- /dev/null +++ b/test/battle/move_effect/ohko.c @@ -0,0 +1,26 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_SHEER_COLD].effect == EFFECT_OHKO); +} + +SINGLE_BATTLE_TEST("Sheer Cold doesn't affect Ice-type Pokémon") +{ + GIVEN { + ASSUME(B_SHEER_COLD_IMMUNITY >= GEN_7); + ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_GLALIE); + } WHEN { + TURN { MOVE(player, MOVE_SHEER_COLD); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SHEER_COLD, player); + MESSAGE("It doesn't affect Foe Glalie…"); + } +} +TO_DO_BATTLE_TEST("Fissure faints the target, skipping regular damage calculations") +TO_DO_BATTLE_TEST("Fissure always fails if the target has a higher level than the user") +TO_DO_BATTLE_TEST("Fissure's accuracy increases by 1% for every level the user has over the target") +TO_DO_BATTLE_TEST("Fissure's ignores non-stage accuracy modifiers") // Gravity, Wide Lens, Compound Eyes diff --git a/test/battle/move_effect/paralyze_hit.c b/test/battle/move_effect/paralyze_hit.c index 4efe6746ce..c2fa440be1 100644 --- a/test/battle/move_effect/paralyze_hit.c +++ b/test/battle/move_effect/paralyze_hit.c @@ -33,7 +33,9 @@ SINGLE_BATTLE_TEST("Thunder Shock cannot paralyze an Electric-type") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_SHOCK, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); - NOT STATUS_ICON(opponent, paralysis: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + } } } diff --git a/test/battle/move_effect/poison_hit.c b/test/battle/move_effect/poison_hit.c index 91d7004669..229355cb65 100644 --- a/test/battle/move_effect/poison_hit.c +++ b/test/battle/move_effect/poison_hit.c @@ -4,6 +4,7 @@ ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_POISON_STING].effect == EFFECT_POISON_HIT); + ASSUME(gBattleMoves[MOVE_TWINEEDLE].effect == EFFECT_POISON_HIT); } SINGLE_BATTLE_TEST("Poison Sting inflicts poison") @@ -22,18 +23,24 @@ SINGLE_BATTLE_TEST("Poison Sting inflicts poison") } } -SINGLE_BATTLE_TEST("Poison Sting cannot poison Poison-type") +SINGLE_BATTLE_TEST("Poison cannot be inflicted on Poison and Steel-type Pokémon") { + u32 mon; + PARAMETRIZE { mon = SPECIES_NIDORAN_M; } + PARAMETRIZE { mon = SPECIES_REGISTEEL; } GIVEN { ASSUME(gSpeciesInfo[SPECIES_NIDORAN_M].types[0] == TYPE_POISON); + ASSUME(gSpeciesInfo[SPECIES_REGISTEEL].types[0] == TYPE_STEEL); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_NIDORAN_M); + OPPONENT(mon); } WHEN { - TURN { MOVE(player, MOVE_POISON_STING); } + TURN { MOVE(player, MOVE_TWINEEDLE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_POISON_STING, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TWINEEDLE, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); - NOT STATUS_ICON(opponent, poison: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, poison: TRUE); + } } } diff --git a/test/battle/move_effect/protect.c b/test/battle/move_effect/protect.c index 39bd0eb8ae..dd9f57b356 100644 --- a/test/battle/move_effect/protect.c +++ b/test/battle/move_effect/protect.c @@ -93,8 +93,8 @@ SINGLE_BATTLE_TEST("King's Shield, Silk Trap and Obstruct protect from damaging } else { NOT ANIMATION(ANIM_TYPE_MOVE, usedMove, player); MESSAGE("Foe Wobbuffet protected itself!"); - NOT HP_BAR(opponent); if (usedMove == MOVE_TACKLE) { + NOT HP_BAR(opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); if (statId == STAT_ATK) { MESSAGE("Wobbuffet's Attack fell!"); @@ -106,7 +106,10 @@ SINGLE_BATTLE_TEST("King's Shield, Silk Trap and Obstruct protect from damaging } } } else { - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + NONE_OF { + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } } } } THEN { @@ -173,11 +176,14 @@ SINGLE_BATTLE_TEST("Baneful Bunker poisons pokemon for moves making contact") MESSAGE("Foe Wobbuffet protected itself!"); NOT ANIMATION(ANIM_TYPE_MOVE, usedMove, player); MESSAGE("Foe Wobbuffet protected itself!"); - NOT HP_BAR(opponent); if (usedMove == MOVE_TACKLE) { + NOT HP_BAR(opponent); STATUS_ICON(player, STATUS1_POISON); } else { - NOT STATUS_ICON(player, STATUS1_POISON); + NONE_OF { + HP_BAR(opponent); + STATUS_ICON(player, STATUS1_POISON); + } } } } @@ -218,8 +224,10 @@ SINGLE_BATTLE_TEST("Recoil damage is not applied if target was protected") ANIMATION(ANIM_TYPE_MOVE, protectMove, opponent); MESSAGE("Foe Beautifly protected itself!"); // MESSAGE("Rapidash used recoilMove!"); - NOT ANIMATION(ANIM_TYPE_MOVE, recoilMove, player); - NOT MESSAGE("Rapidash is hit with recoil!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, recoilMove, player); + MESSAGE("Rapidash is hit with recoil!"); + } } } @@ -251,16 +259,17 @@ SINGLE_BATTLE_TEST("Multi-hit moves don't hit a protected target and fail only o // Each effect happens only once. if (move == MOVE_KINGS_SHIELD || move == MOVE_SILK_TRAP || move == MOVE_OBSTRUCT) { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - } - else if (move == MOVE_SPIKY_SHIELD) { + } else if (move == MOVE_SPIKY_SHIELD) { HP_BAR(player); - NOT HP_BAR(player); - } - else if (move == MOVE_BANEFUL_BUNKER) { + } else if (move == MOVE_BANEFUL_BUNKER) { STATUS_ICON(player, STATUS1_POISON); } NONE_OF { + if (move == MOVE_KINGS_SHIELD || move == MOVE_SILK_TRAP || move == MOVE_OBSTRUCT) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } else if (move == MOVE_SPIKY_SHIELD) { + HP_BAR(player); + } MESSAGE("Hit 2 time(s)!"); MESSAGE("Hit 3 time(s)!"); MESSAGE("Hit 4 time(s)!"); diff --git a/test/battle/move_effect/reflect_type.c b/test/battle/move_effect/reflect_type.c new file mode 100644 index 0000000000..e873516034 --- /dev/null +++ b/test/battle/move_effect/reflect_type.c @@ -0,0 +1,186 @@ +#include "global.h" +#include "test/battle.h" + +TO_DO_BATTLE_TEST("Reflect Type fails if the user is Terastallized"); +TO_DO_BATTLE_TEST("Reflect Type succeeds against a Terastallized target and copies its Tera type"); + +SINGLE_BATTLE_TEST("Reflect Type does not affect any of Arceus' forms") +{ + u32 j; + static const u16 sArceusFormSpeciesIdTable[] = { + SPECIES_ARCEUS, + SPECIES_ARCEUS_FIGHTING, + SPECIES_ARCEUS_FLYING, + SPECIES_ARCEUS_POISON, + SPECIES_ARCEUS_GROUND, + SPECIES_ARCEUS_ROCK, + SPECIES_ARCEUS_BUG, + SPECIES_ARCEUS_GHOST, + SPECIES_ARCEUS_STEEL, + SPECIES_ARCEUS_FIRE, + SPECIES_ARCEUS_WATER, + SPECIES_ARCEUS_GRASS, + SPECIES_ARCEUS_ELECTRIC, + SPECIES_ARCEUS_PSYCHIC, + SPECIES_ARCEUS_ICE, + SPECIES_ARCEUS_DRAGON, + SPECIES_ARCEUS_DARK, + SPECIES_ARCEUS_FAIRY, + }; + u16 species = SPECIES_NONE; + + for (j = 0; j < ARRAY_COUNT(sArceusFormSpeciesIdTable); j++) + { + PARAMETRIZE { species = sArceusFormSpeciesIdTable[j]; } + } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("Wobbuffet used Reflect Type!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Reflect Type does not affect any of Silvally's forms") +{ + u32 j; + static const u16 sSilvallyFormSpeciesIdTable[] = { + SPECIES_SILVALLY, + SPECIES_SILVALLY_FIGHTING, + SPECIES_SILVALLY_FLYING, + SPECIES_SILVALLY_POISON, + SPECIES_SILVALLY_GROUND, + SPECIES_SILVALLY_ROCK, + SPECIES_SILVALLY_BUG, + SPECIES_SILVALLY_GHOST, + SPECIES_SILVALLY_STEEL, + SPECIES_SILVALLY_FIRE, + SPECIES_SILVALLY_WATER, + SPECIES_SILVALLY_GRASS, + SPECIES_SILVALLY_ELECTRIC, + SPECIES_SILVALLY_PSYCHIC, + SPECIES_SILVALLY_ICE, + SPECIES_SILVALLY_DRAGON, + SPECIES_SILVALLY_DARK, + SPECIES_SILVALLY_FAIRY, + }; + u16 species = SPECIES_NONE; + + for (j = 0; j < ARRAY_COUNT(sSilvallyFormSpeciesIdTable); j++) + { + PARAMETRIZE { species = sSilvallyFormSpeciesIdTable[j]; } + } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("Wobbuffet used Reflect Type!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Reflect Type does not affect Pokémon with no types") +{ + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[0] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[1] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[0] == TYPE_WATER); + ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[1] == TYPE_FIGHTING); + GIVEN { + PLAYER(SPECIES_ARCANINE); + OPPONENT(SPECIES_POLIWRATH); + } WHEN { + TURN { MOVE(player, MOVE_BURN_UP); MOVE(opponent, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("Arcanine used Burn Up!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BURN_UP, player); + HP_BAR(opponent); + MESSAGE("Arcanine burned itself out!"); + MESSAGE("Foe Poliwrath used Reflect Type!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Reflect Type copies a target's dual types") +{ + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[0] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[1] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[0] == TYPE_WATER); + ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[1] == TYPE_FIGHTING); + GIVEN { + PLAYER(SPECIES_ARCANINE); + OPPONENT(SPECIES_POLIWRATH); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("Arcanine used Reflect Type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT_TYPE, player); + MESSAGE("Arcanine's type changed to match the Foe Poliwrath's!"); + } THEN { + EXPECT_EQ(player->type1, TYPE_WATER); + EXPECT_EQ(player->type2, TYPE_FIGHTING); + EXPECT_EQ(player->type3, TYPE_MYSTERY); + } +} + +SINGLE_BATTLE_TEST("Reflect Type copies a target's pure type") +{ + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[0] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[1] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_SUDOWOODO].types[0] == TYPE_ROCK); + ASSUME(gSpeciesInfo[SPECIES_SUDOWOODO].types[1] == TYPE_ROCK); + GIVEN { + PLAYER(SPECIES_ARCANINE); + OPPONENT(SPECIES_SUDOWOODO); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT_TYPE); } + } SCENE { + MESSAGE("Arcanine used Reflect Type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT_TYPE, player); + MESSAGE("Arcanine's type changed to match the Foe Sudowoodo's!"); + } THEN { + EXPECT_EQ(player->type1, TYPE_ROCK); + EXPECT_EQ(player->type2, TYPE_ROCK); + EXPECT_EQ(player->type3, TYPE_MYSTERY); + } +} + +SINGLE_BATTLE_TEST("Reflect Type defaults to Normal type for the user's type1 and type2 if the target only has a 3rd type") +{ + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] == TYPE_PSYCHIC); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[1] == TYPE_PSYCHIC); + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[0] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[1] == TYPE_FIRE); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ARCANINE); + } WHEN { + TURN { MOVE(opponent, MOVE_BURN_UP); } + TURN { MOVE(player, MOVE_FORESTS_CURSE); } + TURN { MOVE(player, MOVE_REFLECT_TYPE); } + } SCENE { + // Turn 1 + MESSAGE("Foe Arcanine used Burn Up!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BURN_UP, opponent); + HP_BAR(player); + MESSAGE("Foe Arcanine burned itself out!"); + // Turn 2 + MESSAGE("Wobbuffet used Forest'sCurs!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FORESTS_CURSE, player); + MESSAGE("Grass type was added to Foe Arcanine!"); + // Turn 3 + MESSAGE("Wobbuffet used Reflect Type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT_TYPE, player); + MESSAGE("Wobbuffet's type changed to match the Foe Arcanine's!"); + } THEN { + EXPECT_EQ(player->type1, TYPE_NORMAL); + EXPECT_EQ(player->type2, TYPE_NORMAL); + EXPECT_EQ(player->type3, TYPE_GRASS); + } +} diff --git a/test/battle/move_effect/roost.c b/test/battle/move_effect/roost.c index c213c951e8..f138cc2cfa 100644 --- a/test/battle/move_effect/roost.c +++ b/test/battle/move_effect/roost.c @@ -36,8 +36,10 @@ SINGLE_BATTLE_TEST("Roost fails when user is at full HP") TURN { MOVE(player, MOVE_ROOST); } } SCENE { MESSAGE("Wobbuffet's HP is full!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); + HP_BAR(player); + } } } @@ -52,8 +54,10 @@ SINGLE_BATTLE_TEST("Roost fails if the user is under the effects of Heal Block") ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BLOCK, opponent); MESSAGE("Wobbuffet was prevented from healing!"); // Message when Heal Block is applied MESSAGE("Wobbuffet was prevented from healing!"); // Message when trying to heal under Heal Block - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); + HP_BAR(player); + } } } @@ -340,8 +344,10 @@ SINGLE_BATTLE_TEST("Roost's suppression prevents Reflect Type from copying any F // Turn 3: EQ has no effect MESSAGE("Swellow used Earthquake!"); MESSAGE("It doesn't affect Foe Wobbuffet…"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, player); - NOT HP_BAR(opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, player); + HP_BAR(opponent); + } } } @@ -357,8 +363,10 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Levitate") ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); MESSAGE("Flygon regained health!"); MESSAGE("Foe Wobbuffet used Earthquake!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); + HP_BAR(player); + } } } @@ -374,8 +382,10 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Air Balloon ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); MESSAGE("Wobbuffet regained health!"); MESSAGE("Foe Wobbuffet used Earthquake!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); + HP_BAR(player); + } } } @@ -397,8 +407,10 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Magnet Rise ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); MESSAGE("Wobbuffet regained health!"); MESSAGE("Foe Wobbuffet used Earthquake!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); + HP_BAR(player); + } } } @@ -421,8 +433,10 @@ SINGLE_BATTLE_TEST("Roost does not suppress the ungrounded effect of Telekinesis ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); MESSAGE("Wobbuffet regained health!"); MESSAGE("Foe Wobbuffet used Earthquake!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); - NOT HP_BAR(player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); + HP_BAR(player); + } } } diff --git a/test/battle/move_effect/solar_beam.c b/test/battle/move_effect/solar_beam.c new file mode 100644 index 0000000000..6aa8056b72 --- /dev/null +++ b/test/battle/move_effect/solar_beam.c @@ -0,0 +1,167 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_SOLAR_BEAM].effect == EFFECT_SOLAR_BEAM); + ASSUME(gBattleMoves[MOVE_SOLAR_BLADE].effect == EFFECT_SOLAR_BEAM); +} + +SINGLE_BATTLE_TEST("Solar Beam and Solar Blade can be used instantly in Sunlight") +{ + u32 move; + PARAMETRIZE { move = MOVE_SOLAR_BEAM; } + PARAMETRIZE { move = MOVE_SOLAR_BLADE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, move); } + } SCENE { + NOT MESSAGE("Wobbuffet took in sunlight!"); + } +} + +SINGLE_BATTLE_TEST("Solar Beam's power is halved in Rain", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_RAIN_DANCE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Blade's power is halved in Rain", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_RAIN_DANCE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Beam's power is halved in a Sandstorm", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SANDSTORM; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Blade's power is halved in a Sandstorm", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SANDSTORM; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Beam's power is halved in Hail", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_HAIL; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Blade's power is halved in Hail", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_HAIL; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Beam's power is halved in Snow", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Solar Blade's power is halved in Snow", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } + TURN { SKIP_TURN(player); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} diff --git a/test/battle/move_effect/synthesis.c b/test/battle/move_effect/synthesis.c new file mode 100644 index 0000000000..7b0c260fa0 --- /dev/null +++ b/test/battle/move_effect/synthesis.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_SYNTHESIS].effect == EFFECT_SYNTHESIS); +} + +SINGLE_BATTLE_TEST("Synthesis recovers 1/2 of the user's max HP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(200); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SYNTHESIS); } + } SCENE { + HP_BAR(player, damage: -(200 / 2)); + } +} + +SINGLE_BATTLE_TEST("Synthesis recovers 2/3 of the user's max HP in Sunlight") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(300); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); MOVE(player, MOVE_SYNTHESIS); } + } SCENE { + HP_BAR(player, damage: -(300 / 1.5)); + } +} + +SINGLE_BATTLE_TEST("Synthesis recovers 1/4 of the user's max HP in Rain, Sandstorm, Hail, and Snow") +{ + u32 move; + PARAMETRIZE { move = MOVE_RAIN_DANCE; } + PARAMETRIZE { move = MOVE_SANDSTORM; } + PARAMETRIZE { move = MOVE_HAIL; } + PARAMETRIZE { move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_SYNTHESIS); } + } SCENE { + HP_BAR(player, damage: -(400 / 4)); + } +} diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index fc55fa0163..232f922f84 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -57,8 +57,10 @@ SINGLE_BATTLE_TEST("Syrup Bomb is prevented by Bulletproof") } SCENE { ABILITY_POPUP(opponent, ABILITY_BULLETPROOF); MESSAGE("Foe Chespin's Bulletproof blocks Syrup Bomb!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); - NOT HP_BAR(opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + } } } @@ -81,35 +83,32 @@ SINGLE_BATTLE_TEST("Clear Body, White Smoke and Full Metal Body prevent Sticky S } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); if (species == SPECIES_BELDUM) { MESSAGE("Foe Beldum got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Beldum's Speed fell!"); } else if (species == SPECIES_TORKOAL) { MESSAGE("Foe Torkoal got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Torkoal's Speed fell!"); } - else + else if (species == SPECIES_SOLGALEO) { MESSAGE("Foe Solgaleo got covered in sticky syrup!"); ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Solgaleo's Speed fell!"); + } + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Beldum's Speed fell!"); } } } -SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Amulet") +SINGLE_BATTLE_TEST("Clear Amulet prevents Sticky Syrup speed reduction") { GIVEN { PLAYER(SPECIES_WOBBUFFET); @@ -120,9 +119,11 @@ SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Amulet") ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); - MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + MESSAGE("Foe Wobbuffet's Speed was not lowered!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + } } } @@ -144,7 +145,9 @@ SINGLE_BATTLE_TEST("Sticky syrup will not decrease speed further then minus six" HP_BAR(opponent); MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); MESSAGE("Foe Wobbuffet's Speed won't go lower!"); - NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + } } } diff --git a/test/battle/move_effect/teatime.c b/test/battle/move_effect/teatime.c index c34b742920..399cafb919 100644 --- a/test/battle/move_effect/teatime.c +++ b/test/battle/move_effect/teatime.c @@ -149,8 +149,10 @@ SINGLE_BATTLE_TEST("Teatime does not affect Pokémon in the semi-invulnerable tu } } SCENE { MESSAGE("Wobbuffet used Teatime!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TEATIME, player); - NOT MESSAGE("Using Liechi Berry, the Attack of Foe Wobbuffet rose!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TEATIME, player); + MESSAGE("Using Liechi Berry, the Attack of Foe Wobbuffet rose!"); + } } } diff --git a/test/battle/move_effect/thunder.c b/test/battle/move_effect/thunder.c new file mode 100644 index 0000000000..d6e5101f3b --- /dev/null +++ b/test/battle/move_effect/thunder.c @@ -0,0 +1,34 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_THUNDER].effect == EFFECT_THUNDER); + ASSUME(gBattleMoves[MOVE_THUNDER].accuracy == 70); +} + +SINGLE_BATTLE_TEST("Thunder's accuracy is lowered to 50% in Sunlight") +{ + PASSES_RANDOMLY(50, 100, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SUNNY_DAY); MOVE(opponent, MOVE_THUNDER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER, opponent); + } +} + +SINGLE_BATTLE_TEST("Thunder bypasses accuracy checks in Rain") +{ + PASSES_RANDOMLY(100, 100, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_RAIN_DANCE); MOVE(player, MOVE_THUNDER); } + } SCENE { + NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } + } +} diff --git a/test/battle/move_effect/toxic.c b/test/battle/move_effect/toxic.c index 78d978b268..4a07994fb8 100644 --- a/test/battle/move_effect/toxic.c +++ b/test/battle/move_effect/toxic.c @@ -40,9 +40,11 @@ SINGLE_BATTLE_TEST("Toxic cannot miss if used by a Poison-type") ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); STATUS_ICON(opponent, badPoison: TRUE); } else { - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); - NOT ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); - NOT STATUS_ICON(opponent, badPoison: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, badPoison: TRUE); + } } } } diff --git a/test/battle/move_effect/toxic_spikes.c b/test/battle/move_effect/toxic_spikes.c index 43de89ede9..3bac9d8ba5 100644 --- a/test/battle/move_effect/toxic_spikes.c +++ b/test/battle/move_effect/toxic_spikes.c @@ -151,7 +151,7 @@ SINGLE_BATTLE_TEST("Toxic Spikes do not affect Steel-types") } } -SINGLE_BATTLE_TEST("Toxic Spikes are removed by grounded Poison-types") +SINGLE_BATTLE_TEST("Toxic Spikes are removed by grounded Poison-type Pokémon on switch in") { u32 species; u32 item = ITEM_NONE; @@ -190,7 +190,7 @@ SINGLE_BATTLE_TEST("Toxic Spikes are removed by grounded Poison-types") // A Pokémon that gets passed magnet rise should still remove the Toxic // Spikes even though it is airborne. // The test currently fails, because we don't incorporate this bug. -SINGLE_BATTLE_TEST("Toxic Spikes are removed by Poison-types affected by Magnet Rise") +SINGLE_BATTLE_TEST("Toxic Spikes are removed by Poison-type Pokémon affected by Magnet Rise on switch in") { KNOWN_FAILING; GIVEN { diff --git a/test/battle/move_effect/tri_attack.c b/test/battle/move_effect/tri_attack.c index aec711aaba..d7d2102271 100644 --- a/test/battle/move_effect/tri_attack.c +++ b/test/battle/move_effect/tri_attack.c @@ -25,11 +25,9 @@ SINGLE_BATTLE_TEST("Tri Attack can inflict paralysis, burn or freeze") ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); if (statusAnim == B_ANIM_STATUS_BRN) { STATUS_ICON(opponent, burn: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_FRZ) { + } else if (statusAnim == B_ANIM_STATUS_FRZ) { STATUS_ICON(opponent, freeze: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PRZ) { + } else if (statusAnim == B_ANIM_STATUS_PRZ) { STATUS_ICON(opponent, paralysis: TRUE); } } @@ -54,15 +52,15 @@ SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze electric/fire/ice typ } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_BRN) { - NOT STATUS_ICON(opponent, burn: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_FRZ) { - NOT STATUS_ICON(opponent, freeze: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_BRN) { + STATUS_ICON(opponent, burn: TRUE); + } else if (statusAnim == B_ANIM_STATUS_FRZ) { + STATUS_ICON(opponent, freeze: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } } } } @@ -92,15 +90,15 @@ SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze pokemon with abilitie } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_BRN) { - NOT STATUS_ICON(opponent, burn: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_FRZ) { - NOT STATUS_ICON(opponent, freeze: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_BRN) { + STATUS_ICON(opponent, burn: TRUE); + } else if (statusAnim == B_ANIM_STATUS_FRZ) { + STATUS_ICON(opponent, freeze: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } } } } @@ -121,15 +119,15 @@ SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze a mon which is alread } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, player); HP_BAR(opponent); - NOT ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); - if (statusAnim == B_ANIM_STATUS_BRN) { - NOT STATUS_ICON(opponent, burn: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_FRZ) { - NOT STATUS_ICON(opponent, freeze: TRUE); - } - else if (statusAnim == B_ANIM_STATUS_PRZ) { - NOT STATUS_ICON(opponent, paralysis: TRUE); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponent); + if (statusAnim == B_ANIM_STATUS_BRN) { + STATUS_ICON(opponent, burn: TRUE); + } else if (statusAnim == B_ANIM_STATUS_FRZ) { + STATUS_ICON(opponent, freeze: TRUE); + } else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponent, paralysis: TRUE); + } } } } diff --git a/test/battle/move_effect/weather_ball.c b/test/battle/move_effect/weather_ball.c new file mode 100644 index 0000000000..629b32f97e --- /dev/null +++ b/test/battle/move_effect/weather_ball.c @@ -0,0 +1,80 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_WEATHER_BALL].effect == EFFECT_WEATHER_BALL); +} + +SINGLE_BATTLE_TEST("Weather Ball doubles its power and turns to a Fire-type move in Sunlight", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SUNNY_DAY; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_MEGANIUM); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(6.0), results[1].damage); // double base power + type effectiveness + sun 50% boost + } +} + +SINGLE_BATTLE_TEST("Weather Ball doubles its power and turns to a Water-type move in Rain", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_RAIN_DANCE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ARCANINE); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(6.0), results[1].damage); // double base power + type effectiveness + rain 50% boost + } +} + +SINGLE_BATTLE_TEST("Weather Ball doubles its power and turns to a Rock-type move in a Sandstorm", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_SANDSTORM; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_MAGMAR) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4.0), results[1].damage); // double base power + type effectiveness. + } +} + +SINGLE_BATTLE_TEST("Weather Ball doubles its power and turns to an Ice-type move in Hail and Snow", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_CELEBRATE; } + PARAMETRIZE{ move = MOVE_HAIL; } + PARAMETRIZE{ move = MOVE_SNOWSCAPE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_DRAGONAIR) { Item(ITEM_SAFETY_GOGGLES); }; + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(player, MOVE_WEATHER_BALL); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4.0), results[1].damage); // double base power + type effectiveness. + } +} diff --git a/test/battle/move_flags/cant_use_twice.c b/test/battle/move_flags/cant_use_twice.c new file mode 100644 index 0000000000..3135e00169 --- /dev/null +++ b/test/battle/move_flags/cant_use_twice.c @@ -0,0 +1,93 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_GIGATON_HAMMER].cantUseTwice == TRUE); + ASSUME(gBattleMoves[MOVE_BLOOD_MOON].cantUseTwice == TRUE); +} + +SINGLE_BATTLE_TEST("Struggle will be used if slow Encore is used on moves with the cantUseTwice flag") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_ENCORE); } + TURN { FORCED_MOVE(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag strike again if fast encore is used") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(opponent, MOVE_ENCORE); FORCED_MOVE(player); } + TURN { FORCED_MOVE(player); } + TURN { FORCED_MOVE(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag alternate with Struggle if it is the only usable move left") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(move, MOVE_NONE, MOVE_NONE, MOVE_NONE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { FORCED_MOVE(player); } + TURN { MOVE(player, move); } + TURN { FORCED_MOVE(player); } + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag can alternate between each other") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_GIGATON_HAMMER, MOVE_BLOOD_MOON, MOVE_NONE, MOVE_NONE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + TURN { MOVE(player, MOVE_BLOOD_MOON); } + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + TURN { MOVE(player, MOVE_BLOOD_MOON); } + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BLOOD_MOON, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BLOOD_MOON, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + } +} diff --git a/test/battle/type/grass.c b/test/battle/move_flags/powder.c similarity index 86% rename from test/battle/type/grass.c rename to test/battle/move_flags/powder.c index 6bb016c580..184402f6bf 100644 --- a/test/battle/type/grass.c +++ b/test/battle/move_flags/powder.c @@ -1,7 +1,7 @@ #include "global.h" #include "test/battle.h" -SINGLE_BATTLE_TEST("Grass-type Pokémon block powder and spore moves") +SINGLE_BATTLE_TEST("Powder moves are blocked by Grass-type Pokémon") { GIVEN { ASSUME(gBattleMoves[MOVE_STUN_SPORE].powderMove); diff --git a/test/battle/trainer_control.c b/test/battle/trainer_control.c index a0e94dbbec..810a721fa5 100644 --- a/test/battle/trainer_control.c +++ b/test/battle/trainer_control.c @@ -4,6 +4,7 @@ #include "battle_main.h" #include "data.h" #include "malloc.h" +#include "random.h" #include "string_util.h" #include "constants/item.h" #include "constants/abilities.h" @@ -119,3 +120,17 @@ TEST("CreateNPCTrainerPartyForTrainer generates different personalities for diff EXPECT(testParty[0].box.personality != testParty[1].box.personality); Free(testParty); } + +TEST("ModifyPersonalityForNature can set any nature") +{ + u32 personality = 0, nature = 0, j = 0, k = 0; + for (j = 0; j < 64; j++) + { + for (k = 0; k < NUM_NATURES; k++) + { + PARAMETRIZE { personality = Random32(); nature = k; } + } + } + ModifyPersonalityForNature(&personality, nature); + EXPECT_EQ(GetNatureFromPersonality(personality), nature); +} diff --git a/test/battle/weather/hail.c b/test/battle/weather/hail.c new file mode 100644 index 0000000000..8908e17a79 --- /dev/null +++ b/test/battle/weather/hail.c @@ -0,0 +1,31 @@ +#include "global.h" +#include "test/battle.h" + +// Please add Hail interactions with move, item and ability effects on their respective files. +SINGLE_BATTLE_TEST("Hail deals 1/16 damage per turn") +{ + s16 hailDamage; + + GIVEN { + PLAYER(SPECIES_GLALIE); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {MOVE(player, MOVE_HAIL);} + } SCENE { + MESSAGE("Foe Wobbuffet is pelted by HAIL!"); + HP_BAR(opponent, captureDamage: &hailDamage); + } THEN { EXPECT_EQ(hailDamage, opponent->maxHP / 16); } +} + +SINGLE_BATTLE_TEST("Hail damage does not affect Ice-type Pokémon") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GLALIE); + } WHEN { + TURN {MOVE(player, MOVE_HAIL);} + } SCENE { + NOT MESSAGE("Foe Glalie is pelted by HAIL!"); + } +} diff --git a/test/battle/weather/sandstorm.c b/test/battle/weather/sandstorm.c new file mode 100644 index 0000000000..3d4fbb631b --- /dev/null +++ b/test/battle/weather/sandstorm.c @@ -0,0 +1,66 @@ +#include "global.h" +#include "test/battle.h" + +// Please add Sandstorm interactions with move, item and ability effects on their respective files. +SINGLE_BATTLE_TEST("Sandstorm deals 1/16 damage per turn") +{ + s16 sandstormDamage; + + GIVEN { + PLAYER(SPECIES_SANDSLASH); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {MOVE(player, MOVE_SANDSTORM);} + } SCENE { + MESSAGE("Foe Wobbuffet is buffeted by the sandstorm!"); + HP_BAR(opponent, captureDamage: &sandstormDamage); + } THEN { EXPECT_EQ(sandstormDamage, opponent->maxHP / 16); } +} + +SINGLE_BATTLE_TEST("Sandstorm multiplies the special defense of Rock-types by 1.5x", s16 damage) +{ + u16 move; + PARAMETRIZE{ move = MOVE_SANDSTORM; } + PARAMETRIZE{ move = MOVE_CELEBRATE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) ; + OPPONENT(SPECIES_NOSEPASS); + } WHEN { + TURN { MOVE(opponent, move); } + TURN { MOVE(player, MOVE_SWIFT); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Sandstorm damage does not hurt Ground, Rock, and Steel-type Pokémon") +{ + u32 mon; + PARAMETRIZE { mon = SPECIES_SANDSLASH; } + PARAMETRIZE { mon = SPECIES_NOSEPASS; } + PARAMETRIZE { mon = SPECIES_REGISTEEL; } + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_SANDSLASH].types[0] == TYPE_GROUND); + ASSUME(gSpeciesInfo[SPECIES_NOSEPASS].types[0] == TYPE_ROCK); + ASSUME(gSpeciesInfo[SPECIES_REGISTEEL].types[0] == TYPE_STEEL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(mon); + } WHEN { + TURN { MOVE(player, MOVE_SANDSTORM); } + } SCENE { + switch (mon) + { + case SPECIES_SANDSLASH: + NOT MESSAGE("Foe Sandslash is buffeted by the sandstorm!"); + break; + case SPECIES_NOSEPASS: + NOT MESSAGE("Foe Nosepass is buffeted by the sandstorm!"); + break; + case SPECIES_REGISTEEL: + NOT MESSAGE("Foe Registeel is buffeted by the sandstorm!"); + break; + } + } +} diff --git a/test/battle/weather/snow.c b/test/battle/weather/snow.c index 21b7a5565e..dff18e7b76 100644 --- a/test/battle/weather/snow.c +++ b/test/battle/weather/snow.c @@ -1,6 +1,7 @@ #include "global.h" #include "test/battle.h" +// Please add Snow interactions with move, item and ability effects on their respective files. ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_SNOWSCAPE].effect == EFFECT_SNOWSCAPE); @@ -8,7 +9,7 @@ ASSUMPTIONS ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE || gSpeciesInfo[SPECIES_GLALIE].types[1] == TYPE_ICE); } -SINGLE_BATTLE_TEST("Snow increases the defense of Ice types by 50 %", s16 damage) +SINGLE_BATTLE_TEST("Snow multiplies the defense of Ice-types by 1.5x", s16 damage) { u16 move; PARAMETRIZE{ move = MOVE_SNOWSCAPE; } @@ -25,126 +26,3 @@ SINGLE_BATTLE_TEST("Snow increases the defense of Ice types by 50 %", s16 damage EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } - -SINGLE_BATTLE_TEST("Snow turns Weather Ball to an Ice-type move and doubles its power", s16 damage) -{ - u16 move; - PARAMETRIZE{ move = MOVE_CELEBRATE; } - PARAMETRIZE{ move = MOVE_SNOWSCAPE; } - GIVEN { - ASSUME(gBattleMoves[MOVE_WEATHER_BALL].effect == EFFECT_WEATHER_BALL); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_DRAGONAIR); - } WHEN { - TURN { MOVE(player, move); } - TURN { MOVE(player, MOVE_WEATHER_BALL); } - } SCENE { - HP_BAR(opponent, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(4.0), results[1].damage); // double base power + type effectiveness. - } -} - -SINGLE_BATTLE_TEST("Snow allows Blizzard to bypass accuracy checks") -{ - PASSES_RANDOMLY(100, 100, RNG_ACCURACY); - GIVEN { - ASSUME(gBattleMoves[MOVE_BLIZZARD].accuracy == 70); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_BLIZZARD); } - } SCENE { - NONE_OF { MESSAGE("Wobbuffet's attack missed!"); } - } -} - -SINGLE_BATTLE_TEST("Snow halves the power of Solar Beam", s16 damage) -{ - u16 move; - PARAMETRIZE{ move = MOVE_CELEBRATE; } - PARAMETRIZE{ move = MOVE_SNOWSCAPE; } - GIVEN { - ASSUME(gBattleMoves[MOVE_SOLAR_BEAM].effect == EFFECT_SOLAR_BEAM); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BEAM); } - TURN { SKIP_TURN(player); } - } SCENE { - HP_BAR(opponent, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); - } -} - -SINGLE_BATTLE_TEST("Snow halves the power of Solar Blade", s16 damage) -{ - u16 move; - PARAMETRIZE{ move = MOVE_CELEBRATE; } - PARAMETRIZE{ move = MOVE_SNOWSCAPE; } - GIVEN { - ASSUME(gBattleMoves[MOVE_SOLAR_BLADE].effect == EFFECT_SOLAR_BEAM); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WYNAUT); - } WHEN { - TURN { MOVE(opponent, move); MOVE(player, MOVE_SOLAR_BLADE); } - TURN { SKIP_TURN(player); } - } SCENE { - HP_BAR(opponent, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); - } -} - -SINGLE_BATTLE_TEST("Snow causes Moonlight to recover 1/4 of the user's max HP") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_MOONLIGHT].effect == EFFECT_MOONLIGHT); - PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_MOONLIGHT); } - } SCENE { - HP_BAR(player, damage: -(400 / 4)); - } -} - -SINGLE_BATTLE_TEST("Snow causes Moonlight to recover 1/4 of the user's max HP") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_MOONLIGHT].effect == EFFECT_MOONLIGHT); - PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_MOONLIGHT); } - } SCENE { - HP_BAR(player, damage: -(400 / 4)); - } -} - -SINGLE_BATTLE_TEST("Snow causes Synthesis to recover 1/4 of the user's max HP") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_SYNTHESIS].effect == EFFECT_SYNTHESIS); - PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_SYNTHESIS); } - } SCENE { - HP_BAR(player, damage: -(400 / 4)); - } -} - -SINGLE_BATTLE_TEST("Snow causes Morning Sun to recover 1/4 of the user's max HP") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_MORNING_SUN].effect == EFFECT_MORNING_SUN); - PLAYER(SPECIES_WOBBUFFET) { HP(1); MaxHP(400); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, MOVE_SNOWSCAPE); MOVE(player, MOVE_MORNING_SUN); } - } SCENE { - HP_BAR(player, damage: -(400 / 4)); - } -} diff --git a/test/dynamax.c b/test/dynamax.c new file mode 100644 index 0000000000..27a689153e --- /dev/null +++ b/test/dynamax.c @@ -0,0 +1,1461 @@ +#include "global.h" +#include "test/battle.h" + +// ============= DYNAMAX AND MAX MOVE INTERACTIONS =================== +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x", u16 hp) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = FALSE; } + PARAMETRIZE { dynamax = TRUE; } + GIVEN { // TODO: Dynamax level + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: dynamax); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + if (dynamax) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); + MESSAGE("Wobbuffet used Max Strike!"); + } + MESSAGE("Foe Wobbuffet used Celebrate!"); + } THEN { + results[i].hp = player->hp; + } FINALLY { + EXPECT_MUL_EQ(results[0].hp, Q_4_12(1.5), results[1].hp); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns", u16 hp) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = FALSE; } + PARAMETRIZE { dynamax = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: dynamax); } // 1st max move + TURN { MOVE(player, MOVE_TACKLE); } // 2nd max move + TURN { MOVE(player, MOVE_TACKLE); } // 3rd max move + } SCENE { + int i; + for (i = 0; i < DYNAMAX_TURNS_COUNT; ++i) { + if (dynamax) + MESSAGE("Wobbuffet used Max Strike!"); + else + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + } + if (dynamax) // Expect to have visual reversion at the end. + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + } THEN { + results[i].hp = player->hp; + } FINALLY { + EXPECT_EQ(results[0].hp, results[1].hp); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be flinched") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_FAKE_OUT].effect == EFFECT_FAKE_OUT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_FAKE_OUT); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Fake Out!"); + NONE_OF { MESSAGE("Wobbuffet flinched!"); } + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be hit by weight-based moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_HEAVY_SLAM].effect == EFFECT_HEAT_CRASH); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_HEAVY_SLAM); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Heavy Slam!"); + MESSAGE("The move was blocked by the power of Dynamax!"); + NONE_OF { HP_BAR(player); } + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be hit by OHKO moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_FISSURE].effect == EFFECT_OHKO); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_MACHAMP) { Ability(ABILITY_NO_GUARD); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_FISSURE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Machamp used Fissure!"); + MESSAGE("Wobbuffet is unaffected!"); + NONE_OF { HP_BAR(player); } + } +} + +// can't be used at all in Raid, see "Documenting Dynamax" +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Destiny Bond") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_DESTINY_BOND); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Destiny Bond!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet fainted!"); + NONE_OF { HP_BAR(player); } + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are affected by Grudge") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_GRUDGE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Grudge!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Wobbuffet's Tackle lost all its PP due to the GRUDGE!"); + MESSAGE("Foe Wobbuffet fainted!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by phazing moves, but still take damage") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_DRAGON_TAIL].effect == EFFECT_HIT_SWITCH_TARGET); + ASSUME(gBattleMoves[MOVE_WHIRLWIND].effect == EFFECT_ROAR); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_WHIRLWIND); MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Dragon Tail!"); + HP_BAR(player); + MESSAGE("The move was blocked by the power of Dynamax!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Whirlwind!"); + MESSAGE("The move was blocked by the power of Dynamax!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Red Card") +{ + GIVEN { + ASSUME(gItems[ITEM_RED_CARD].holdEffect == HOLD_EFFECT_RED_CARD); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Wobbuffet held up its Red Card against Wobbuffet!"); + MESSAGE("The move was blocked by the power of Dynamax!"); + } THEN { + EXPECT_EQ(opponent->item, ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be switched out by Eject Button") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet is switched out with the Eject Button!"); + } THEN { + EXPECT_EQ(opponent->item, ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot have their ability swapped to another Pokemon's") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + PLAYER(SPECIES_MILTANK) { Ability(ABILITY_SCRAPPY); } + OPPONENT(SPECIES_RUNERIGUS) { Ability(ABILITY_WANDERING_SPIRIT); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_SKILL_SWAP); } + } SCENE { + MESSAGE("Miltank used Max Strike!"); + MESSAGE("Foe Runerigus used Skill Swap!"); + MESSAGE("But it failed!"); + } THEN { + EXPECT_EQ(player->ability, ABILITY_SCRAPPY); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their ability changed or suppressed") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SHADOW_TAG); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_SIMPLE_BEAM); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Simple Beam!"); + MESSAGE("Wobbuffet acquired Simple!"); + } THEN { + EXPECT_EQ(player->ability, ABILITY_SIMPLE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Encore") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_ENCORE); } + TURN { MOVE(player, MOVE_EMBER); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Encore!"); + MESSAGE("But it failed!"); + MESSAGE("Wobbuffet used Max Flare!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be encored immediately after reverting") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; // yes, this speed is necessary + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }; + } WHEN { + TURN { MOVE(player, MOVE_ARM_THRUST, dynamax: TRUE); } + TURN { MOVE(player, MOVE_ARM_THRUST); } + TURN { MOVE(player, MOVE_ARM_THRUST); } + TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Knuckle!"); + MESSAGE("Wobbuffet used Max Knuckle!"); + MESSAGE("Wobbuffet used Max Knuckle!"); + MESSAGE("Foe Wobbuffet used Encore!"); + MESSAGE("Wobbuffet used Arm Thrust!"); + } +} + +// Max Moves don't make contact, so Cursed Body doesn't need to be tested, but it is coded for. +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon's Max Moves cannot be disabled") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_DISABLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Disable!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have base moves disabled on their first turn") +{ + GIVEN { + ASSUME(B_DISABLE_TURNS >= GEN_5); + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }; + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_DISABLE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN {} + TURN {} + TURN { MOVE(player, MOVE_TACKLE, allowed: FALSE); MOVE(player, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Disable!"); + MESSAGE("Wobbuffet's Tackle was disabled!"); + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Torment") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TORMENT); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Torment!"); + MESSAGE("But it failed!"); + } +} + +// This is true for all item-removing moves. +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not immune to Knock Off") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_POTION); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_KNOCK_OFF); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Knock Off!"); + MESSAGE("Foe Wobbuffet knocked off Wobbuffet's Potion!"); + } THEN { + EXPECT_EQ(player->item, ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon lose their substitutes") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Substitute!"); + MESSAGE("Wobbuffet made a SUBSTITUTE!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + HP_BAR(player); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their base moves copied by Copycat") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TRICK_ROOM, dynamax: TRUE, target: opponentLeft); MOVE(playerRight, MOVE_COPYCAT, target: opponentLeft); } + } SCENE { + MESSAGE("Wobbuffet used Max Guard!"); + MESSAGE("Wynaut used Trick Room!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon take double damage from Dynamax Cannon", s16 damage) +{ + bool32 dynamaxed; + PARAMETRIZE { dynamaxed = FALSE; } + PARAMETRIZE { dynamaxed = TRUE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_DYNAMAX_CANNON].effect == EFFECT_DYNAMAX_DOUBLE_DMG); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: dynamaxed); MOVE(opponent, MOVE_DYNAMAX_CANNON); } + } SCENE { + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(2.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves deal 1/4 damage through protect", s16 damage) +{ + bool32 protected; + PARAMETRIZE { protected = TRUE; } + PARAMETRIZE { protected = FALSE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (protected) + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_PROTECT); } + else + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't bypass Max Guard") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_PROTECT, dynamax: TRUE); } + } SCENE { + NONE_OF { HP_BAR(opponent); } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) Feint bypasses Max Guard but doesn't break it") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_PROTECT, dynamax: TRUE); + MOVE(opponentLeft, MOVE_FEINT, target: playerLeft); + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + } + } SCENE { + MESSAGE("Wobbuffet used Max Guard!"); + MESSAGE("Foe Wobbuffet used Feint!"); + HP_BAR(playerLeft); + MESSAGE("Foe Wynaut used Tackle!"); + NONE_OF { HP_BAR(playerLeft); } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Instruct") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, dynamax: TRUE, target: opponentLeft); + MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); + } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Wynaut used Instruct!"); + MESSAGE("But it failed!"); + } +} + +// TODO: Gigantamax factor +SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms change upon Dynamaxing") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } THEN { + EXPECT_EQ(player->species, SPECIES_VENUSAUR_GIGANTAMAX); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms revert upon switching") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { SWITCH(player, 1); } + TURN { SWITCH(player, 0); } + } THEN { + EXPECT_EQ(player->species, SPECIES_VENUSAUR); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Choice items", s16 damage) +{ + u16 item; + PARAMETRIZE { item = ITEM_CHOICE_BAND; } + PARAMETRIZE { item = ITEM_NONE; } + GIVEN { + ASSUME(gItems[ITEM_CHOICE_BAND].holdEffect == HOLD_EFFECT_CHOICE_BAND); + PLAYER(SPECIES_WOBBUFFET) { Item(item); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_ARM_THRUST, dynamax: TRUE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + MESSAGE("Wobbuffet used Max Knuckle!"); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot use Max Guard while holding Assault Vest") +{ + GIVEN { + ASSUME(gItems[ITEM_ASSAULT_VEST].holdEffect == HOLD_EFFECT_ASSAULT_VEST); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ASSAULT_VEST); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_PROTECT, allowed: FALSE); MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +// Almost anything that calculates gBattleMoveDamage based on HP has been changed to non-Dynamax HP. +// This includes Leftovers, Life Orb, Heal Pulse, Rocky Helmet, Sandstorm, etc. etc. +// There are some redundant cases (i.e Substitute) that can never be used by a Dynamaxed pokemon. +// Anything that is conditional based off max HP still uses gBattleMons[battler].maxHP. +// Below are some tests, but very far from all encompassing: + +SINGLE_BATTLE_TEST("(DYNAMAX) Endeavor uses a Pokemon's non-Dynamax HP", s16 damage) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_ENDEAVOR].effect == EFFECT_ENDEAVOR); + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_ENDEAVOR); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } + } SCENE { + MESSAGE("Foe Wobbuffet used Endeavor!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Super Fang uses a Pokemon's non-Dynamax HP", s16 damage) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_SUPER_FANG].effect == EFFECT_SUPER_FANG); + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_SUPER_FANG); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } + } SCENE { + MESSAGE("Foe Wobbuffet used Super Fang!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Pain Split uses a Pokemon's non-Dynamax HP", s16 damage) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_PAIN_SPLIT].effect == EFFECT_PAIN_SPLIT); + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_PAIN_SPLIT); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } + } SCENE { + MESSAGE("Foe Wobbuffet used Pain Split!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Sitrus Berries heal based on a Pokemon's non-Dynamax HP", s16 damage) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } + GIVEN { + ASSUME(I_SITRUS_BERRY_HEAL >= GEN_4); + ASSUME(gItems[ITEM_SITRUS_BERRY].holdEffect == HOLD_EFFECT_RESTORE_PCT_HP); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SITRUS_BERRY); } + } WHEN { + TURN { MOVE(opponent, MOVE_FLING); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } + } SCENE { + MESSAGE("Wobbuffet's Sitrus Berry restored health!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Heal Pulse heals based on a Pokemon's non-Dynamax HP", s16 damage) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_HEAL_PULSE].effect == EFFECT_HEAL_PULSE); + PLAYER(SPECIES_WOBBUFFET) { HP(1); Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_HEAL_PULSE); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } + } SCENE { + MESSAGE("Foe Wobbuffet used Heal Pulse!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +// ============= MAX MOVE EFFECTS ========================================== +SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's speed") +{ + GIVEN { + // Fails?: ASSUME(GetMaxMove(B_POSITION_PLAYER_LEFT, MOVE_TACKLE) == MOVE_MAX_STRIKE); + ASSUME(gBattleMoves[MOVE_MAX_STRIKE].argument == MAX_EFFECT_LOWER_SPEED); + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } + PLAYER(SPECIES_WOBBUFFET) { Speed(80); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + // turn 2 + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +// This test should apply to all stat-lowering Max Moves, including G-Max Foam Burst and G-Max Tartness. +DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_STRIKE].argument == MAX_EFFECT_LOWER_SPEED); + PLAYER(SPECIES_WOBBUFFET) { Speed(80); } + PLAYER(SPECIES_WOBBUFFET) { Speed(79); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(100); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(99); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); \ + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); \ + MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); \ + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + MESSAGE("Foe Wobbuffet's Speed fell!"); + // turn 2 + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + MESSAGE("Foe Wobbuffet's Speed fell!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + } +} + +// This test should apply to all stat-boosting Max Moves, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) Max Knuckle raises both allies' attack") +{ + s16 damage[4]; + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_KNUCKLE].argument == MAX_EFFECT_RAISE_TEAM_ATTACK); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft, dynamax: TRUE); \ + MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } + TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft); \ + MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Max Knuckle!"); + HP_BAR(opponentLeft, captureDamage: &damage[0]); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's Attack rose!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Wynaut's Attack rose!"); + MESSAGE("Wynaut used Tackle!"); + HP_BAR(opponentRight, captureDamage: &damage[1]); + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Foe Wynaut used Celebrate!"); + // turn 2 + MESSAGE("Wobbuffet used Max Knuckle!"); + HP_BAR(opponentLeft, captureDamage: &damage[2]); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's Attack rose!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Wynaut's Attack rose!"); + MESSAGE("Wynaut used Tackle!"); + HP_BAR(opponentRight, captureDamage: &damage[3]); + } THEN { + EXPECT_GT(damage[2], damage[0]); + EXPECT_GT(damage[3], damage[1]); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Flare sets up sunlight") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_FLARE].argument == MAX_EFFECT_SUN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EMBER, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Flare!"); + MESSAGE("The sunlight got bright!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SUN_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Geyser sets up heavy rain") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_GEYSER].argument == MAX_EFFECT_RAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WATER_GUN, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Geyser!"); + MESSAGE("It started to rain!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_RAIN_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Hailstorm sets up hail") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_HAILSTORM].argument == MAX_EFFECT_HAIL); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_POWDER_SNOW, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Hailstorm!"); + MESSAGE("It started to hail!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HAIL_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Rockfall sets up a sandstorm") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_ROCKFALL].argument == MAX_EFFECT_SANDSTORM); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ROCK_THROW, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Rockfall!"); + MESSAGE("A sandstorm brewed!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SANDSTORM_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Overgrowth sets up Grassy Terrain") +{ + s32 maxHP = 490; // Because of recalculated stats upon Dynamaxing + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_OVERGROWTH].argument == MAX_EFFECT_GRASSY_TERRAIN); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].baseHP == 190); + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(maxHP); HP(maxHP / 2); }; + PLAYER(SPECIES_WOBBUFFET) { MaxHP(maxHP); HP(maxHP / 2); }; + } WHEN { + TURN { MOVE(player, MOVE_VINE_WHIP, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_VINE_WHIP); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Overgrowth!"); + MESSAGE("Grass grew to cover the battlefield!"); + MESSAGE("Wobbuffet is healed by the grassy terrain!"); + HP_BAR(player, damage: -maxHP/16); + MESSAGE("Foe Wobbuffet is healed by the grassy terrain!"); + HP_BAR(opponent, damage: -maxHP/16); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Mindstorm sets up Psychic Terrain") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_MINDSTORM].argument == MAX_EFFECT_PSYCHIC_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_EXTREME_SPEED); MOVE(player, MOVE_PSYCHIC, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_EXTREME_SPEED); MOVE(player, MOVE_PSYCHIC); } + } SCENE { + MESSAGE("Foe Wobbuffet used ExtremeSpeed!"); + MESSAGE("Wobbuffet used Max Mindstorm!"); + MESSAGE("Foe Wobbuffet cannot use ExtremeSpeed!"); + MESSAGE("Wobbuffet used Max Mindstorm!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Lightning sets up Electric Terrain") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_LIGHTNING].argument == MAX_EFFECT_ELECTRIC_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THUNDERBOLT, dynamax: TRUE); MOVE(opponent, MOVE_SPORE); } + } SCENE { + MESSAGE("Wobbuffet used Max Lightning!"); + MESSAGE("Foe Wobbuffet used Spore!"); + MESSAGE("Wobbuffet surrounds itself with electrified terrain!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Starfall sets up Misty Terrain") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_STARFALL].argument == MAX_EFFECT_MISTY_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MOONBLAST, dynamax: TRUE); MOVE(opponent, MOVE_TOXIC); } + } SCENE { + MESSAGE("Wobbuffet used Max Starfall!"); + MESSAGE("Foe Wobbuffet used Toxic!"); + MESSAGE("Wobbuffet surrounds itself with a protective mist!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Stonesurge sets up Stealth Rocks") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_STONESURGE].argument == MAX_EFFECT_STEALTH_ROCK); + PLAYER(SPECIES_DREDNAW); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_LIQUIDATION, dynamax: TRUE); } + TURN { SWITCH(opponent, 1); } + } SCENE { + // turn 1 + MESSAGE("Drednaw used G-Max Stonesurge!"); + MESSAGE("Pointed stones float in the air around the opposing team!"); + // turn 2 + MESSAGE("Pointed stones dug into Foe Wobbuffet!"); + } +} + +// The test below also tests that sharp steel does type-based damage and can be Defogged away. +SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Steelsurge sets up sharp steel") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_STEELSURGE].argument == MAX_EFFECT_STEELSURGE); + PLAYER(SPECIES_COPPERAJAH); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_HATTERENE); + } WHEN { + TURN { MOVE(player, MOVE_IRON_HEAD, dynamax: TRUE); } + TURN { SWITCH(opponent, 1); } + TURN { } // wait out Dynamax + TURN { MOVE(opponent, MOVE_DEFOG); } + } SCENE { + // turn 1 + MESSAGE("Copperajah used G-Max Steelsurge!"); + MESSAGE("Sharp-pointed steel floats around the opposing team!"); + // turn 2 + MESSAGE("2 sent out Hatterene!"); + MESSAGE("Sharp steel bit into Foe Hatterene!"); + // turn 4 + MESSAGE("Foe Hatterene used Defog!"); + MESSAGE("The sharp steel disappeared from the ground around the opposing team!"); + } THEN { + EXPECT_MUL_EQ(opponent->maxHP, Q_4_12(0.75), opponent->hp); + } +} + +// The test below should apply to G-Max Fireball and G-Max Drum Solo, too. +SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Hydrosnipe has fixed power and ignores abilities", s16 damage) +{ + u16 move; + PARAMETRIZE { move = MOVE_WATER_GUN; } + PARAMETRIZE { move = MOVE_HYDRO_CANNON; } + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_HYDROSNIPE].argument == MAX_EFFECT_FIXED_POWER); + PLAYER(SPECIES_INTELEON); + OPPONENT(SPECIES_ARCTOVISH) { Ability(ABILITY_WATER_ABSORB); } + } WHEN { + TURN { MOVE(player, move, dynamax: TRUE); } + } SCENE { + MESSAGE("Inteleon used G-Max Hydrosnipe!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Volt Crash paralyzes both opponents") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_VOLT_CRASH].argument == MAX_EFFECT_PARALYZE_FOES); + PLAYER(SPECIES_PIKACHU); + PLAYER(SPECIES_PICHU); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Pikachu used G-Max Volt Crash!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentLeft); + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentRight); + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Wynaut is paralyzed! It may be unable to move!"); + } +} + +// G-Max Stun Shock can apply different statuses to each opponent, but this isn't +// compatible with the test RNG set-up. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock paralyzes or poisons both opponents") +{ + u8 statusAnim; + u32 rng; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = STATUS1_PARALYSIS; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = STATUS1_POISON; } + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); + PLAYER(SPECIES_TOXTRICITY); + PLAYER(SPECIES_TOXEL); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, dynamax: TRUE, \ + WITH_RNG(RNG_G_MAX_STUN_SHOCK, rng)); } + } SCENE { + MESSAGE("Toxtricity used G-Max Stun Shock!"); + // opponent left + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentLeft); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + } + else { + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + } + // opponent right + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentRight); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentRight, poison: TRUE); + MESSAGE("Foe Wynaut was poisoned!"); + } + else { + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Wynaut is paralyzed! It may be unable to move!"); + } + } +} + +// This test extends to G-Max Befuddle, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock chooses statuses before considering immunities") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); + PLAYER(SPECIES_TOXTRICITY); + PLAYER(SPECIES_TOXEL); + OPPONENT(SPECIES_GARBODOR); + OPPONENT(SPECIES_TRUBBISH); + } WHEN { + TURN { MOVE(playerLeft, MOVE_NUZZLE, target: opponentLeft, dynamax: TRUE, \ + WITH_RNG(RNG_G_MAX_STUN_SHOCK, STATUS1_POISON)); } + } SCENE { + MESSAGE("Toxtricity used G-Max Stun Shock!"); + NONE_OF { + // opponent left + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Garbodor was poisoned!"); + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Garbodor is paralyzed! It may be unable to move!"); + // opponent right + STATUS_ICON(opponentRight, poison: TRUE); + MESSAGE("Foe Trubbish was poisoned!"); + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Trubbish is paralyzed! It may be unable to move!"); + } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Befuddle paralyzes, poisons, or sleeps both opponents") +{ + u8 statusAnim; + u32 rng; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = STATUS1_PARALYSIS; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = STATUS1_POISON; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_SLP; rng = STATUS1_SLEEP; } + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_BEFUDDLE].argument == MAX_EFFECT_EFFECT_SPORE_FOES); + PLAYER(SPECIES_BUTTERFREE); + PLAYER(SPECIES_CATERPIE); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_BUG_BITE, target: opponentLeft, dynamax: TRUE, + WITH_RNG(RNG_G_MAX_BEFUDDLE, rng)); } + } SCENE { + MESSAGE("Butterfree used G-Max Befuddle!"); + // opponent left + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentLeft); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + } + else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + } + else { + STATUS_ICON(opponentLeft, sleep: TRUE); + MESSAGE("Foe Wobbuffet fell asleep!"); + } + // opponent right + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentRight); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentRight, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + } + else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + } + else { + STATUS_ICON(opponentRight, sleep: TRUE); + MESSAGE("Foe Wobbuffet fell asleep!"); + } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Gold Rush confuses both opponents and generates money") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_GOLD_RUSH].argument == MAX_EFFECT_CONFUSE_FOES_PAY_DAY); + PLAYER(SPECIES_MEOWTH); + PLAYER(SPECIES_PERSIAN); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Meowth used G-Max Gold Rush!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentLeft); + MESSAGE("Foe Wobbuffet became confused!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentRight); + MESSAGE("Foe Wobbuffet became confused!"); + MESSAGE("Coins scattered everywhere!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Smite confuses both opponents") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_SMITE].argument == MAX_EFFECT_CONFUSE_FOES); + PLAYER(SPECIES_HATTERENE); + PLAYER(SPECIES_HATENNA); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Hatterene used G-Max Smite!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentLeft); + MESSAGE("Foe Wobbuffet became confused!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentRight); + MESSAGE("Foe Wobbuffet became confused!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Cuddle infatuates both opponents, if possible") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_CUDDLE].argument == MAX_EFFECT_INFATUATE_FOES); + PLAYER(SPECIES_EEVEE) { Gender(MON_MALE); } + PLAYER(SPECIES_EEVEE); + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); } + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Eevee used G-Max Cuddle!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, opponentLeft); + MESSAGE("Foe Wobbuffet fell in love!"); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, opponentRight); + MESSAGE("Foe Wobbuffet fell in love!"); + } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Terror traps both opponents") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_TERROR].argument == MAX_EFFECT_MEAN_LOOK); + PLAYER(SPECIES_GENGAR); + PLAYER(SPECIES_GASTLY); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_LICK, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Gengar used G-Max Terror!"); + MESSAGE("Foe Wobbuffet can't escape now!"); + MESSAGE("Foe Wobbuffet can't escape now!"); + } THEN { // Can't find good way to test trapping + EXPECT(opponentLeft->status2 & STATUS2_ESCAPE_PREVENTION); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Meltdown torments both opponents for 3 turns") +{ + GIVEN { + ASSUME(P_GEN_7_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_MELTDOWN].argument == MAX_EFFECT_TORMENT_FOES); + PLAYER(SPECIES_MELMETAL); + PLAYER(SPECIES_MELTAN); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SPLASH, MOVE_CELEBRATE); } + OPPONENT(SPECIES_WYNAUT) { Moves(MOVE_SPLASH, MOVE_CELEBRATE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_IRON_HEAD, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_SPLASH); MOVE(opponentRight, MOVE_SPLASH); } + TURN { MOVE(playerLeft, MOVE_CELEBRATE, target: opponentLeft); \ + MOVE(opponentLeft, MOVE_SPLASH, allowed: FALSE); \ + MOVE(opponentLeft, MOVE_CELEBRATE); \ + MOVE(opponentRight, MOVE_SPLASH, allowed: FALSE); \ + MOVE(opponentRight, MOVE_CELEBRATE); } + TURN { MOVE(playerLeft, MOVE_CELEBRATE, target: opponentLeft); \ + MOVE(opponentLeft, MOVE_SPLASH); \ + MOVE(opponentRight, MOVE_SPLASH); } + } SCENE { + // turn 1 + MESSAGE("Melmetal used G-Max Meltdown!"); + MESSAGE("Foe Wobbuffet was subjected to torment!"); + MESSAGE("Foe Wynaut was subjected to torment!"); + MESSAGE("Foe Wobbuffet used Splash!"); + MESSAGE("Foe Wynaut used Splash!"); + // turn 2 + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Foe Wynaut used Celebrate!"); + // end of turn 3 + MESSAGE("Foe Wobbuffet is tormented no more!"); + MESSAGE("Foe Wynaut is tormented no more!"); + } +} + +// This test applies to G-Max Cannonade, G-Max Vine Lash, and G-Max Volcalith, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Wildfire sets a field effect that damages non-Fire types") +{ + s16 damage; + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_WILDFIRE].argument == MAX_EFFECT_WILDFIRE); + PLAYER(SPECIES_CHARIZARD); + PLAYER(SPECIES_CHARMANDER); + OPPONENT(SPECIES_WOBBUFFET) { HP(600); MaxHP(600); } + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_ARCANINE); + } WHEN { + TURN { MOVE(playerLeft, MOVE_EMBER, target: opponentLeft, dynamax: TRUE); } + TURN { } + TURN { SWITCH(opponentLeft, 2); } + TURN { } + TURN { } + } SCENE { + // turn 1 + MESSAGE("Charizard used G-Max Wildfire!"); + MESSAGE("The opposing team was surrounded by flames!"); + MESSAGE("Foe Wobbuffet is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentLeft, captureDamage: &damage); + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 2 + MESSAGE("Foe Wobbuffet is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentLeft); + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 3 + NONE_OF { MESSAGE("Foe Arcanine is burning up within G-Max Wildfire's flames!"); } + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 4 + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 5 + NONE_OF { + HP_BAR(opponentRight); + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + } + } THEN { + EXPECT_EQ(damage, 100); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Replenish recycles allies' berries 50\% of the time") +{ + PASSES_RANDOMLY(1, 2, RNG_G_MAX_REPLENISH); + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_REPLENISH].argument == MAX_EFFECT_RECYCLE_BERRIES); + PLAYER(SPECIES_SNORLAX) { Item(ITEM_APICOT_BERRY); } + PLAYER(SPECIES_MUNCHLAX) { Item(ITEM_APICOT_BERRY); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_APICOT_BERRY); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_APICOT_BERRY); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_STUFF_CHEEKS); \ + MOVE(playerRight, MOVE_STUFF_CHEEKS); \ + MOVE(opponentLeft, MOVE_STUFF_CHEEKS); \ + MOVE(opponentRight, MOVE_STUFF_CHEEKS); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + } SCENE { + // turn 1 + MESSAGE("Using Apicot Berry, the Sp. Def of Snorlax rose!"); + MESSAGE("Using Apicot Berry, the Sp. Def of Munchlax rose!"); + MESSAGE("Using Apicot Berry, the Sp. Def of Foe Wobbuffet rose!"); + MESSAGE("Using Apicot Berry, the Sp. Def of Foe Wobbuffet rose!"); + // turn 2 + MESSAGE("Snorlax used G-Max Replenish!"); + MESSAGE("Snorlax found one Apicot Berry!"); + MESSAGE("Munchlax found one Apicot Berry!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Snooze makes only the target drowsy") +{ + PASSES_RANDOMLY(1, 2, RNG_G_MAX_SNOOZE); + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_SNOOZE].argument == MAX_EFFECT_YAWN_FOE); + PLAYER(SPECIES_GRIMMSNARL); + PLAYER(SPECIES_IMPIDIMP); + OPPONENT(SPECIES_BLISSEY); + OPPONENT(SPECIES_CHANSEY); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DARK_PULSE, target: opponentLeft, dynamax: TRUE); } + TURN { } + } SCENE { + // turn 1 + MESSAGE("Grimmsnarl used G-Max Snooze!"); + MESSAGE("Grimmsnarl made Foe Blissey drowsy!"); + // turn 2 + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponentLeft); + MESSAGE("Foe Blissey fell asleep!"); + STATUS_ICON(opponentLeft, sleep: TRUE); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Finale heals allies by 1/6 of their health") +{ + s16 damage1, damage2; + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_FINALE].argument == MAX_EFFECT_HEAL_TEAM); + PLAYER(SPECIES_ALCREMIE) { HP(1); } + PLAYER(SPECIES_MILCERY) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Alcremie used G-Max Finale!"); + HP_BAR(playerLeft, captureDamage: &damage1); + HP_BAR(playerRight, captureDamage: &damage2); + } THEN { + EXPECT_MUL_EQ(playerLeft->hp - 1, Q_4_12(6), playerLeft->maxHP); // heals based on Dynamax HP + EXPECT_MUL_EQ(playerRight->hp - 1, Q_4_12(6), playerRight->maxHP); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Sweetness cures allies' status conditions") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_SWEETNESS].argument == MAX_EFFECT_AROMATHERAPY); + PLAYER(SPECIES_APPLETUN) { Status1(STATUS1_POISON); } + PLAYER(SPECIES_APPLIN) { Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_VINE_WHIP, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Appletun used G-Max Sweetness!"); + STATUS_ICON(playerLeft, none: TRUE); + MESSAGE("Appletun's status returned to normal!"); + STATUS_ICON(playerRight, none: TRUE); + MESSAGE("Applin's status returned to normal!"); + } +} + +// This test applies to G-Max Sandblast, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Centiferno traps both opponents in Fire Spin") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_CENTIFERNO].argument == MAX_EFFECT_FIRE_SPIN_FOES); + PLAYER(SPECIES_CENTISKORCH); + PLAYER(SPECIES_SIZZLIPEDE); + PLAYER(SPECIES_SIZZLIPEDE); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_FLAME_CHARGE, target: opponentLeft, dynamax: TRUE); } + TURN { SWITCH(playerLeft, 2); } + } SCENE { + // turn 1 + MESSAGE("Centiskorc used G-Max Centiferno!"); + MESSAGE("Foe Wobbuffet is hurt by Fire Spin!"); + HP_BAR(opponentLeft); + MESSAGE("Foe Wynaut is hurt by Fire Spin!"); + HP_BAR(opponentRight); + // turn 2 - Fire Spin continues even after Centiskorch switches out + MESSAGE("Foe Wobbuffet is hurt by Fire Spin!"); + HP_BAR(opponentLeft); + MESSAGE("Foe Wynaut is hurt by Fire Spin!"); + HP_BAR(opponentRight); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") +{ + u32 j; + GIVEN { + ASSUME(B_CRIT_CHANCE >= GEN_6); + ASSUME(gBattleMoves[MOVE_G_MAX_CHI_STRIKE].argument == MAX_EFFECT_CRIT_PLUS); + PLAYER(SPECIES_MACHAMP); + PLAYER(SPECIES_MACHOP); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft); \ + MOVE(playerRight, MOVE_FOCUS_ENERGY); } + TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } + } SCENE { + // turn 1 - 3 + for (j = 0; j < 3; ++j) { + MESSAGE("Machamp used G-Max Chi Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Machamp is getting pumped!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Machop is getting pumped!"); + } + // turn 4 + MESSAGE("Machop used Tackle!"); // Machop is at +5 crit stages + MESSAGE("A critical hit!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Depletion takes away 2 PP from the target's last move") +{ + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_DEPLETION].argument == MAX_EFFECT_SPITE); + PLAYER(SPECIES_DURALUDON); + PLAYER(SPECIES_WYNAUT); + // Dynamax behaves weird with test turn order because stats are recalculated. + OPPONENT(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DRAGON_CLAW, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Sableye used Celebrate!"); + MESSAGE("Duraludon used G-Max Depletion!"); + MESSAGE("Reduced Foe Sableye's Celebrate by 2!"); + } +} + +// This test applies to G-Max Rapid Flow, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max One Blow bypasses Max Guard for full damage", s16 damage) +{ + bool32 protect; + PARAMETRIZE { protect = TRUE; } + PARAMETRIZE { protect = FALSE; } + GIVEN { + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(gBattleMoves[MOVE_G_MAX_ONE_BLOW].argument == MAX_EFFECT_BYPASS_PROTECT); + PLAYER(SPECIES_URSHIFU); + PLAYER(SPECIES_KUBFU); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + if (protect) + TURN { MOVE(playerLeft, MOVE_WICKED_BLOW, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_PROTECT, dynamax: TRUE); } + else + TURN { MOVE(playerLeft, MOVE_WICKED_BLOW, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_PSYCHIC, target: playerLeft, dynamax: TRUE); } + } SCENE { + if (protect) + MESSAGE("Foe Wobbuffet used Max Guard!"); + MESSAGE("Urshifu used G-Max One Blow!"); + HP_BAR(opponentLeft, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +// Bug Testing +DOUBLE_BATTLE_TEST("(DYNAMAX) Max Flare doesn't softlock the game when fainting player partner") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { HP(1); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_PROTECT, dynamax: TRUE); + MOVE(opponentLeft, MOVE_V_CREATE, target: playerRight, dynamax: TRUE); + SEND_OUT(playerRight, 2); } + TURN { } + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't execute effects on fainted battlers") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); }; + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet fainted!"); + NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + } +} diff --git a/test/random.c b/test/random.c index b99a5921e1..845f24f102 100644 --- a/test/random.c +++ b/test/random.c @@ -6,7 +6,7 @@ // Therefore the maximum error is 8*3584, or 28672. #define SHUFFLE_TEST_IMPL \ u32 i, j, error; \ - u16 indexSum[7]; \ + u16 indexSum[8]; \ memset(indexSum, 0, sizeof(indexSum)); \ for (i = 0; i < 1024; i++) \ { \ diff --git a/test/test_runner.c b/test/test_runner.c index 15ed889aac..83bab5d0ba 100644 --- a/test/test_runner.c +++ b/test/test_runner.c @@ -56,9 +56,10 @@ static bool32 PrefixMatch(const char *pattern, const char *string) enum { STATE_INIT, - STATE_NEXT_TEST, + STATE_ASSIGN_TEST, STATE_RUN_TEST, STATE_REPORT_RESULT, + STATE_NEXT_TEST, STATE_EXIT, }; @@ -152,17 +153,15 @@ void CB2_TestRunner(void) } else { - gTestRunnerState.state = STATE_NEXT_TEST; - gTestRunnerState.test = __start_tests - 1; + gTestRunnerState.state = STATE_ASSIGN_TEST; + gTestRunnerState.test = __start_tests; } gTestRunnerState.exitCode = 0; gTestRunnerState.skipFilename = NULL; break; - case STATE_NEXT_TEST: - gTestRunnerState.test++; - + case STATE_ASSIGN_TEST: if (gTestRunnerState.test == __stop_tests) { gTestRunnerState.state = STATE_EXIT; @@ -172,6 +171,7 @@ void CB2_TestRunner(void) if (gTestRunnerState.test->runner != &gAssumptionsRunner && !PrefixMatch(gTestRunnerArgv, gTestRunnerState.test->name)) { + gTestRunnerState.state = STATE_NEXT_TEST; return; } @@ -191,6 +191,8 @@ void CB2_TestRunner(void) sCurrentTest.address = (uintptr_t)gTestRunnerState.test; sCurrentTest.state = CURRENT_TEST_STATE_ESTIMATE; + // If AssignCostToRunner fails, we want to report the failure. + gTestRunnerState.state = STATE_REPORT_RESULT; if (AssignCostToRunner() == gTestRunnerI) gTestRunnerState.state = STATE_RUN_TEST; else @@ -201,8 +203,13 @@ void CB2_TestRunner(void) case STATE_RUN_TEST: gTestRunnerState.state = STATE_REPORT_RESULT; sCurrentTest.state = CURRENT_TEST_STATE_RUN; + SeedRng(0); + SeedRng2(0); if (gTestRunnerState.test->runner->setUp) + { gTestRunnerState.test->runner->setUp(gTestRunnerState.test->data); + gTestRunnerState.tearDown = TRUE; + } // NOTE: Assumes that the compiler interns __FILE__. if (gTestRunnerState.skipFilename == gTestRunnerState.test->filename) // Assumption fails for tests in this file. { @@ -214,13 +221,17 @@ void CB2_TestRunner(void) gTestRunnerState.test->runner->run(gTestRunnerState.test->data); } break; + case STATE_REPORT_RESULT: REG_TM2CNT_H = 0; gTestRunnerState.state = STATE_NEXT_TEST; - if (gTestRunnerState.test->runner->tearDown) + if (gTestRunnerState.tearDown && gTestRunnerState.test->runner->tearDown) + { gTestRunnerState.test->runner->tearDown(gTestRunnerState.test->data); + gTestRunnerState.tearDown = FALSE; + } if (gTestRunnerState.result == TEST_RESULT_PASS && !gTestRunnerState.expectLeaks) @@ -340,6 +351,11 @@ void CB2_TestRunner(void) break; + case STATE_NEXT_TEST: + gTestRunnerState.state = STATE_ASSIGN_TEST; + gTestRunnerState.test++; + break; + case STATE_EXIT: MgbaExit_(gTestRunnerState.exitCode); break; diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 8482ff243c..53a1c8d7c5 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -149,6 +149,7 @@ static u32 BattleTest_EstimateCost(void *data) { u32 cost; const struct BattleTest *test = data; + memset(STATE, 0, sizeof(*STATE)); STATE->runRandomly = TRUE; InvokeTestFunction(test); cost = 1; @@ -1979,6 +1980,9 @@ void MoveGetIdAndSlot(s32 battlerId, struct MoveContext *ctx, u32 *moveId, u32 * if (ctx->explicitUltraBurst && ctx->ultraBurst) *moveSlot |= RET_ULTRA_BURST; + + if (ctx->explicitDynamax && ctx->dynamax) + *moveSlot |= RET_DYNAMAX; } void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) @@ -2303,8 +2307,18 @@ static const char *const sQueueGroupTypeMacros[] = void OpenQueueGroup(u32 sourceLine, enum QueueGroupType type) { INVALID_IF(DATA.queueGroupType, "%s inside %s", sQueueGroupTypeMacros[type], sQueueGroupTypeMacros[DATA.queueGroupType]); - DATA.queueGroupType = type; - DATA.queueGroupStart = DATA.queuedEventsCount; + if (DATA.queuedEventsCount > 0 + && DATA.queuedEvents[DATA.queueGroupStart].groupType == QUEUE_GROUP_NONE_OF + && DATA.queuedEvents[DATA.queueGroupStart].groupSize == DATA.queuedEventsCount - DATA.queueGroupStart + && type == QUEUE_GROUP_NONE_OF) + { + INVALID("'NOT x; NOT y;', did you mean 'NONE_OF { x; y; }'?"); + } + else + { + DATA.queueGroupType = type; + DATA.queueGroupStart = DATA.queuedEventsCount; + } } void CloseQueueGroup(u32 sourceLine) diff --git a/tools/mgba-rom-test-hydra/main.c b/tools/mgba-rom-test-hydra/main.c index 123d8a2552..c2189ac0df 100644 --- a/tools/mgba-rom-test-hydra/main.c +++ b/tools/mgba-rom-test-hydra/main.c @@ -2,9 +2,9 @@ * parses the output to display human-readable progress. * * Output lines starting with "GBA Debug: :" are parsed as commands to - * Hydra, other output lines starting with "GBA Debug: " are parsed as - * output from the current test, and any other lines are parsed as - * output from the mgba-rom-test process itself. + * Hydra, other output lines starting with "GBA Debug: " or with "GBA: " + * are parsed as output from the current test, and any other lines are + * parsed as output from the mgba-rom-test process itself. * * COMMANDS * N: Sets the test name to the remainder of the line. @@ -75,10 +75,17 @@ static void handle_read(int i, struct Runner *runner) { eol++; size_t n = eol - sol; - if (runner->input_buffer_size >= strlen("GBA Debug: ") - && !strncmp(sol, "GBA Debug: ", strlen("GBA Debug: "))) + char *soc; + if (runner->input_buffer_size >= strlen("GBA: ") + && !strncmp(sol, "GBA: ", strlen("GBA: "))) { - char *soc = sol + strlen("GBA Debug: "); + soc = sol + strlen("GBA: "); + goto buffer_output; + } + else if (runner->input_buffer_size >= strlen("GBA Debug: ") + && !strncmp(sol, "GBA Debug: ", strlen("GBA Debug: "))) + { + soc = sol + strlen("GBA Debug: "); if (soc[0] == ':') { switch (soc[1])