From 003bd54600679d3bacdd40a0919fdf5723b855a6 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sat, 13 Jul 2024 12:02:18 +0200 Subject: [PATCH 01/14] Rename battle terrain to environment --- asm/macros/battle_script.inc | 4 +- data/battle_anim_scripts.s | 38 +-- data/battle_scripts_1.s | 4 +- .../building/anim_map.bin | Bin .../building/anim_tiles.png | Bin .../building/map.bin | Bin .../building/palette.pal | 0 .../building/palette2.pal | 0 .../building/palette3.pal | 0 .../building/tiles.png | Bin .../cave/anim_map.bin | Bin .../cave/anim_tiles.png | Bin .../cave/groudon.pal | 0 .../cave/map.bin | Bin .../cave/palette.pal | 0 .../cave/tiles.png | Bin .../long_grass/anim_map.bin | Bin .../long_grass/anim_tiles.png | Bin .../long_grass/map.bin | Bin .../long_grass/palette.pal | 0 .../long_grass/tiles.png | Bin .../plain/palette.pal | 0 .../pond_water/anim_map.bin | Bin .../pond_water/anim_tiles.png | Bin .../pond_water/map.bin | Bin .../pond_water/palette.pal | 0 .../pond_water/tiles.png | Bin .../rock/anim_map.bin | Bin .../rock/anim_tiles.png | Bin .../rock/map.bin | Bin .../rock/palette.pal | 0 .../rock/tiles.png | Bin .../sand/anim_map.bin | Bin .../sand/anim_tiles.png | Bin .../sand/map.bin | Bin .../sand/palette.pal | 0 .../sand/tiles.png | Bin .../sky/anim_map.bin | Bin .../sky/anim_tiles.png | Bin .../sky/map.bin | Bin .../sky/palette.pal | 0 .../sky/tiles.png | Bin .../stadium/battle_frontier.pal | 0 .../stadium/map.bin | Bin .../stadium/palette1.pal | 0 .../stadium/palette2.pal | 0 .../stadium/palette3.pal | 0 .../stadium/palette4.pal | 0 .../stadium/palette5.pal | 0 .../stadium/palette6.pal | 0 .../stadium/palette7.pal | 0 .../stadium/tiles.png | Bin .../tall_grass/anim_map.bin | Bin .../tall_grass/anim_tiles.png | Bin .../tall_grass/map.bin | Bin .../tall_grass/palette.pal | 0 .../tall_grass/tiles.png | Bin .../underwater/anim_map.bin | Bin .../underwater/anim_tiles.png | Bin .../underwater/map.bin | Bin .../underwater/palette.pal | 0 .../underwater/tiles.png | Bin .../water/anim_map.bin | Bin .../water/anim_tiles.png | Bin .../water/kyogre.pal | 0 .../water/map.bin | Bin .../water/palette.pal | 0 .../water/tiles.png | Bin include/battle.h | 2 +- include/battle_anim.h | 2 +- include/battle_controllers.h | 2 +- include/battle_setup.h | 2 +- include/constants/battle.h | 2 +- include/graphics.h | 132 ++++---- src/battle_anim_ground.c | 14 +- src/battle_anim_normal.c | 32 +- src/battle_anim_utility_funcs.c | 6 +- src/battle_bg.c | 306 +++++++++--------- src/battle_controllers.c | 4 +- src/battle_intro.c | 16 +- src/battle_main.c | 8 +- src/battle_script_commands.c | 24 +- src/battle_setup.c | 2 +- src/data/graphics/battle_environment.h | 88 +++++ src/data/graphics/battle_terrain.h | 88 ----- src/evolution_scene.c | 4 +- src/graphics.c | 2 +- src/pokeblock_feed.c | 4 +- 88 files changed, 393 insertions(+), 393 deletions(-) rename graphics/{battle_terrain => battle_environment}/building/anim_map.bin (100%) rename graphics/{battle_terrain => battle_environment}/building/anim_tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/building/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/building/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/building/palette2.pal (100%) rename graphics/{battle_terrain => battle_environment}/building/palette3.pal (100%) rename graphics/{battle_terrain => battle_environment}/building/tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/cave/anim_map.bin (100%) rename graphics/{battle_terrain => battle_environment}/cave/anim_tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/cave/groudon.pal (100%) rename graphics/{battle_terrain => battle_environment}/cave/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/cave/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/cave/tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/long_grass/anim_map.bin (100%) rename graphics/{battle_terrain => battle_environment}/long_grass/anim_tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/long_grass/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/long_grass/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/long_grass/tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/plain/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/pond_water/anim_map.bin (100%) rename graphics/{battle_terrain => battle_environment}/pond_water/anim_tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/pond_water/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/pond_water/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/pond_water/tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/rock/anim_map.bin (100%) rename graphics/{battle_terrain => battle_environment}/rock/anim_tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/rock/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/rock/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/rock/tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/sand/anim_map.bin (100%) rename graphics/{battle_terrain => battle_environment}/sand/anim_tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/sand/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/sand/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/sand/tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/sky/anim_map.bin (100%) rename graphics/{battle_terrain => battle_environment}/sky/anim_tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/sky/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/sky/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/sky/tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/stadium/battle_frontier.pal (100%) rename graphics/{battle_terrain => battle_environment}/stadium/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/stadium/palette1.pal (100%) rename graphics/{battle_terrain => battle_environment}/stadium/palette2.pal (100%) rename graphics/{battle_terrain => battle_environment}/stadium/palette3.pal (100%) rename graphics/{battle_terrain => battle_environment}/stadium/palette4.pal (100%) rename graphics/{battle_terrain => battle_environment}/stadium/palette5.pal (100%) rename graphics/{battle_terrain => battle_environment}/stadium/palette6.pal (100%) rename graphics/{battle_terrain => battle_environment}/stadium/palette7.pal (100%) rename graphics/{battle_terrain => battle_environment}/stadium/tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/tall_grass/anim_map.bin (100%) rename graphics/{battle_terrain => battle_environment}/tall_grass/anim_tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/tall_grass/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/tall_grass/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/tall_grass/tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/underwater/anim_map.bin (100%) rename graphics/{battle_terrain => battle_environment}/underwater/anim_tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/underwater/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/underwater/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/underwater/tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/water/anim_map.bin (100%) rename graphics/{battle_terrain => battle_environment}/water/anim_tiles.png (100%) rename graphics/{battle_terrain => battle_environment}/water/kyogre.pal (100%) rename graphics/{battle_terrain => battle_environment}/water/map.bin (100%) rename graphics/{battle_terrain => battle_environment}/water/palette.pal (100%) rename graphics/{battle_terrain => battle_environment}/water/tiles.png (100%) create mode 100644 src/data/graphics/battle_environment.h delete mode 100644 src/data/graphics/battle_terrain.h diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index ccb887327f..0bb9e072be 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1044,7 +1044,7 @@ .byte 0xcb .endm - .macro callterrainattack + .macro callenvironmentattack .byte 0xcc .endm @@ -1192,7 +1192,7 @@ .4byte \ptr .endm - .macro settypetoterrain ptr:req + .macro settypetoenvironment ptr:req .byte 0xeb .4byte \ptr .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 4519761845..5fe714b58a 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -2097,7 +2097,7 @@ Move_MEAN_LOOK: Move_ROCK_THROW: loadspritegfx ANIM_TAG_ROCKS - createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_TARGET, 2, 6, 1, 15, 1 + createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_TARGET, 2, 6, 1, 15, 1 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 0, 1, 0, 0 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 6 @@ -2119,7 +2119,7 @@ Move_ROCK_THROW: Move_ROCK_SLIDE: loadspritegfx ANIM_TAG_ROCKS monbg ANIM_DEF_PARTNER - createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1 + createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -5, 1, -5, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 @@ -2909,7 +2909,7 @@ Move_BARRAGE: createvisualtask AnimTask_BarrageBall, 3 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 24 - createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 40, 1 + createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 40, 1 createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 0, 4, 20, 1 createvisualtask AnimTask_ShakeMon, 3, ANIM_DEF_PARTNER, 0, 4, 20, 1 loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 2 @@ -3660,7 +3660,7 @@ Move_SUPERPOWER: createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER delay 20 - createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 180, 1 + createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 180, 1 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_EARTHQUAKE, 0 delay 40 createsprite gSuperpowerRockSpriteTemplate, ANIM_ATTACKER, 41, 200, 96, 1, 120 @@ -5011,7 +5011,7 @@ SnoreEffect: playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, ANIM_ATTACKER, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 7, 1 - createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 14, 0, 0 + createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 14, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -42, -38, 24, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, -42, 24, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, -38, 24, 0, 0 @@ -6871,7 +6871,7 @@ Move_ANCIENT_POWER: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 10, 1 + createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 10, 1 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 20, 32, -48, 50, 2 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, -38, 25, 5 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 32, 32, -28, 40, 3 @@ -7292,14 +7292,14 @@ Move_METAL_CLAW: playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 - createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 + createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 delay 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 2 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 - createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 + createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 waitforvisualfinish end @@ -8515,7 +8515,7 @@ HyperVoiceEffect: createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 6, 1 - createvisualtask AnimTask_ShakeBattleTerrain, 2, 1, 0, 6, 1 + createvisualtask AnimTask_ShakeBattleEnvironment, 2, 1, 0, 6, 1 createvisualtask SoundTask_WaitForCry, 5 return @@ -8637,7 +8637,7 @@ Move_DRAGON_CLAW: createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 - createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 + createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER delay 2 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER @@ -8650,7 +8650,7 @@ Move_DRAGON_CLAW: createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 - createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 + createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER delay 2 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER @@ -9111,7 +9111,7 @@ Move_BLAST_BURN: createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 60, -30, 24, 0, 0, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, 3, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 12, 0, 20, 1 - createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1 + createvisualtask AnimTask_ShakeBattleEnvironment, 2, 2, 0, 10, 1 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 96, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 48, 24, 0, 0, 0 @@ -9125,32 +9125,32 @@ Move_BLAST_BURN: Move_ROCK_TOMB: loadspritegfx ANIM_TAG_X_SIGN loadspritegfx ANIM_TAG_ROCKS - createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1 + createvisualtask AnimTask_ShakeBattleEnvironment, 2, 2, 0, 10, 1 waitforvisualfinish createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, 20, 12, 64, 114, 0 delay 8 - createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 + createvisualtask AnimTask_ShakeBattleEnvironment, 2, 0, 2, 3, 1 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, -20, 12, 64, 98, 0 delay 8 - createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 + createvisualtask AnimTask_ShakeBattleEnvironment, 2, 0, 2, 3, 1 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 66, 3, 6, 64, 82, 0 delay 8 - createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 + createvisualtask AnimTask_ShakeBattleEnvironment, 2, 0, 2, 3, 1 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, -3, 13, 64, 66, 0 delay 8 - createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 + createvisualtask AnimTask_ShakeBattleEnvironment, 2, 0, 2, 3, 1 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 24 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET createsprite gRedXSpriteTemplate, ANIM_TARGET, 5, ANIM_TARGET, 50 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 20, 1 - createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1 + createvisualtask AnimTask_ShakeBattleEnvironment, 2, 2, 0, 10, 1 waitforvisualfinish end @@ -9635,7 +9635,7 @@ Move_SKY_UPPERCUT: end Move_SECRET_POWER: - createvisualtask AnimTask_GetBattleTerrain, 5 + createvisualtask AnimTask_GetBattleEnvironment, 5 jumpargeq 0, BATTLE_TERRAIN_GRASS, Move_NEEDLE_ARM jumpargeq 0, BATTLE_TERRAIN_LONG_GRASS, Move_MAGICAL_LEAF jumpargeq 0, BATTLE_TERRAIN_SAND, Move_MUD_SHOT diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0c0dc72831..00a40fbbb0 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2289,7 +2289,7 @@ BattleScript_EffectNaturePower:: attackcanceler attackstring pause B_WAIT_TIME_SHORT - callterrainattack + callenvironmentattack printstring STRINGID_NATUREPOWERTURNEDINTO waitmessage B_WAIT_TIME_LONG return @@ -2799,7 +2799,7 @@ BattleScript_EffectCamouflage:: attackcanceler attackstring ppreduce - settypetoterrain BattleScript_ButItFailed + settypetoenvironment BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNCHANGEDTYPE diff --git a/graphics/battle_terrain/building/anim_map.bin b/graphics/battle_environment/building/anim_map.bin similarity index 100% rename from graphics/battle_terrain/building/anim_map.bin rename to graphics/battle_environment/building/anim_map.bin diff --git a/graphics/battle_terrain/building/anim_tiles.png b/graphics/battle_environment/building/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/building/anim_tiles.png rename to graphics/battle_environment/building/anim_tiles.png diff --git a/graphics/battle_terrain/building/map.bin b/graphics/battle_environment/building/map.bin similarity index 100% rename from graphics/battle_terrain/building/map.bin rename to graphics/battle_environment/building/map.bin diff --git a/graphics/battle_terrain/building/palette.pal b/graphics/battle_environment/building/palette.pal similarity index 100% rename from graphics/battle_terrain/building/palette.pal rename to graphics/battle_environment/building/palette.pal diff --git a/graphics/battle_terrain/building/palette2.pal b/graphics/battle_environment/building/palette2.pal similarity index 100% rename from graphics/battle_terrain/building/palette2.pal rename to graphics/battle_environment/building/palette2.pal diff --git a/graphics/battle_terrain/building/palette3.pal b/graphics/battle_environment/building/palette3.pal similarity index 100% rename from graphics/battle_terrain/building/palette3.pal rename to graphics/battle_environment/building/palette3.pal diff --git a/graphics/battle_terrain/building/tiles.png b/graphics/battle_environment/building/tiles.png similarity index 100% rename from graphics/battle_terrain/building/tiles.png rename to graphics/battle_environment/building/tiles.png diff --git a/graphics/battle_terrain/cave/anim_map.bin b/graphics/battle_environment/cave/anim_map.bin similarity index 100% rename from graphics/battle_terrain/cave/anim_map.bin rename to graphics/battle_environment/cave/anim_map.bin diff --git a/graphics/battle_terrain/cave/anim_tiles.png b/graphics/battle_environment/cave/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/cave/anim_tiles.png rename to graphics/battle_environment/cave/anim_tiles.png diff --git a/graphics/battle_terrain/cave/groudon.pal b/graphics/battle_environment/cave/groudon.pal similarity index 100% rename from graphics/battle_terrain/cave/groudon.pal rename to graphics/battle_environment/cave/groudon.pal diff --git a/graphics/battle_terrain/cave/map.bin b/graphics/battle_environment/cave/map.bin similarity index 100% rename from graphics/battle_terrain/cave/map.bin rename to graphics/battle_environment/cave/map.bin diff --git a/graphics/battle_terrain/cave/palette.pal b/graphics/battle_environment/cave/palette.pal similarity index 100% rename from graphics/battle_terrain/cave/palette.pal rename to graphics/battle_environment/cave/palette.pal diff --git a/graphics/battle_terrain/cave/tiles.png b/graphics/battle_environment/cave/tiles.png similarity index 100% rename from graphics/battle_terrain/cave/tiles.png rename to graphics/battle_environment/cave/tiles.png diff --git a/graphics/battle_terrain/long_grass/anim_map.bin b/graphics/battle_environment/long_grass/anim_map.bin similarity index 100% rename from graphics/battle_terrain/long_grass/anim_map.bin rename to graphics/battle_environment/long_grass/anim_map.bin diff --git a/graphics/battle_terrain/long_grass/anim_tiles.png b/graphics/battle_environment/long_grass/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/long_grass/anim_tiles.png rename to graphics/battle_environment/long_grass/anim_tiles.png diff --git a/graphics/battle_terrain/long_grass/map.bin b/graphics/battle_environment/long_grass/map.bin similarity index 100% rename from graphics/battle_terrain/long_grass/map.bin rename to graphics/battle_environment/long_grass/map.bin diff --git a/graphics/battle_terrain/long_grass/palette.pal b/graphics/battle_environment/long_grass/palette.pal similarity index 100% rename from graphics/battle_terrain/long_grass/palette.pal rename to graphics/battle_environment/long_grass/palette.pal diff --git a/graphics/battle_terrain/long_grass/tiles.png b/graphics/battle_environment/long_grass/tiles.png similarity index 100% rename from graphics/battle_terrain/long_grass/tiles.png rename to graphics/battle_environment/long_grass/tiles.png diff --git a/graphics/battle_terrain/plain/palette.pal b/graphics/battle_environment/plain/palette.pal similarity index 100% rename from graphics/battle_terrain/plain/palette.pal rename to graphics/battle_environment/plain/palette.pal diff --git a/graphics/battle_terrain/pond_water/anim_map.bin b/graphics/battle_environment/pond_water/anim_map.bin similarity index 100% rename from graphics/battle_terrain/pond_water/anim_map.bin rename to graphics/battle_environment/pond_water/anim_map.bin diff --git a/graphics/battle_terrain/pond_water/anim_tiles.png b/graphics/battle_environment/pond_water/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/pond_water/anim_tiles.png rename to graphics/battle_environment/pond_water/anim_tiles.png diff --git a/graphics/battle_terrain/pond_water/map.bin b/graphics/battle_environment/pond_water/map.bin similarity index 100% rename from graphics/battle_terrain/pond_water/map.bin rename to graphics/battle_environment/pond_water/map.bin diff --git a/graphics/battle_terrain/pond_water/palette.pal b/graphics/battle_environment/pond_water/palette.pal similarity index 100% rename from graphics/battle_terrain/pond_water/palette.pal rename to graphics/battle_environment/pond_water/palette.pal diff --git a/graphics/battle_terrain/pond_water/tiles.png b/graphics/battle_environment/pond_water/tiles.png similarity index 100% rename from graphics/battle_terrain/pond_water/tiles.png rename to graphics/battle_environment/pond_water/tiles.png diff --git a/graphics/battle_terrain/rock/anim_map.bin b/graphics/battle_environment/rock/anim_map.bin similarity index 100% rename from graphics/battle_terrain/rock/anim_map.bin rename to graphics/battle_environment/rock/anim_map.bin diff --git a/graphics/battle_terrain/rock/anim_tiles.png b/graphics/battle_environment/rock/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/rock/anim_tiles.png rename to graphics/battle_environment/rock/anim_tiles.png diff --git a/graphics/battle_terrain/rock/map.bin b/graphics/battle_environment/rock/map.bin similarity index 100% rename from graphics/battle_terrain/rock/map.bin rename to graphics/battle_environment/rock/map.bin diff --git a/graphics/battle_terrain/rock/palette.pal b/graphics/battle_environment/rock/palette.pal similarity index 100% rename from graphics/battle_terrain/rock/palette.pal rename to graphics/battle_environment/rock/palette.pal diff --git a/graphics/battle_terrain/rock/tiles.png b/graphics/battle_environment/rock/tiles.png similarity index 100% rename from graphics/battle_terrain/rock/tiles.png rename to graphics/battle_environment/rock/tiles.png diff --git a/graphics/battle_terrain/sand/anim_map.bin b/graphics/battle_environment/sand/anim_map.bin similarity index 100% rename from graphics/battle_terrain/sand/anim_map.bin rename to graphics/battle_environment/sand/anim_map.bin diff --git a/graphics/battle_terrain/sand/anim_tiles.png b/graphics/battle_environment/sand/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/sand/anim_tiles.png rename to graphics/battle_environment/sand/anim_tiles.png diff --git a/graphics/battle_terrain/sand/map.bin b/graphics/battle_environment/sand/map.bin similarity index 100% rename from graphics/battle_terrain/sand/map.bin rename to graphics/battle_environment/sand/map.bin diff --git a/graphics/battle_terrain/sand/palette.pal b/graphics/battle_environment/sand/palette.pal similarity index 100% rename from graphics/battle_terrain/sand/palette.pal rename to graphics/battle_environment/sand/palette.pal diff --git a/graphics/battle_terrain/sand/tiles.png b/graphics/battle_environment/sand/tiles.png similarity index 100% rename from graphics/battle_terrain/sand/tiles.png rename to graphics/battle_environment/sand/tiles.png diff --git a/graphics/battle_terrain/sky/anim_map.bin b/graphics/battle_environment/sky/anim_map.bin similarity index 100% rename from graphics/battle_terrain/sky/anim_map.bin rename to graphics/battle_environment/sky/anim_map.bin diff --git a/graphics/battle_terrain/sky/anim_tiles.png b/graphics/battle_environment/sky/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/sky/anim_tiles.png rename to graphics/battle_environment/sky/anim_tiles.png diff --git a/graphics/battle_terrain/sky/map.bin b/graphics/battle_environment/sky/map.bin similarity index 100% rename from graphics/battle_terrain/sky/map.bin rename to graphics/battle_environment/sky/map.bin diff --git a/graphics/battle_terrain/sky/palette.pal b/graphics/battle_environment/sky/palette.pal similarity index 100% rename from graphics/battle_terrain/sky/palette.pal rename to graphics/battle_environment/sky/palette.pal diff --git a/graphics/battle_terrain/sky/tiles.png b/graphics/battle_environment/sky/tiles.png similarity index 100% rename from graphics/battle_terrain/sky/tiles.png rename to graphics/battle_environment/sky/tiles.png diff --git a/graphics/battle_terrain/stadium/battle_frontier.pal b/graphics/battle_environment/stadium/battle_frontier.pal similarity index 100% rename from graphics/battle_terrain/stadium/battle_frontier.pal rename to graphics/battle_environment/stadium/battle_frontier.pal diff --git a/graphics/battle_terrain/stadium/map.bin b/graphics/battle_environment/stadium/map.bin similarity index 100% rename from graphics/battle_terrain/stadium/map.bin rename to graphics/battle_environment/stadium/map.bin diff --git a/graphics/battle_terrain/stadium/palette1.pal b/graphics/battle_environment/stadium/palette1.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette1.pal rename to graphics/battle_environment/stadium/palette1.pal diff --git a/graphics/battle_terrain/stadium/palette2.pal b/graphics/battle_environment/stadium/palette2.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette2.pal rename to graphics/battle_environment/stadium/palette2.pal diff --git a/graphics/battle_terrain/stadium/palette3.pal b/graphics/battle_environment/stadium/palette3.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette3.pal rename to graphics/battle_environment/stadium/palette3.pal diff --git a/graphics/battle_terrain/stadium/palette4.pal b/graphics/battle_environment/stadium/palette4.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette4.pal rename to graphics/battle_environment/stadium/palette4.pal diff --git a/graphics/battle_terrain/stadium/palette5.pal b/graphics/battle_environment/stadium/palette5.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette5.pal rename to graphics/battle_environment/stadium/palette5.pal diff --git a/graphics/battle_terrain/stadium/palette6.pal b/graphics/battle_environment/stadium/palette6.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette6.pal rename to graphics/battle_environment/stadium/palette6.pal diff --git a/graphics/battle_terrain/stadium/palette7.pal b/graphics/battle_environment/stadium/palette7.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette7.pal rename to graphics/battle_environment/stadium/palette7.pal diff --git a/graphics/battle_terrain/stadium/tiles.png b/graphics/battle_environment/stadium/tiles.png similarity index 100% rename from graphics/battle_terrain/stadium/tiles.png rename to graphics/battle_environment/stadium/tiles.png diff --git a/graphics/battle_terrain/tall_grass/anim_map.bin b/graphics/battle_environment/tall_grass/anim_map.bin similarity index 100% rename from graphics/battle_terrain/tall_grass/anim_map.bin rename to graphics/battle_environment/tall_grass/anim_map.bin diff --git a/graphics/battle_terrain/tall_grass/anim_tiles.png b/graphics/battle_environment/tall_grass/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/tall_grass/anim_tiles.png rename to graphics/battle_environment/tall_grass/anim_tiles.png diff --git a/graphics/battle_terrain/tall_grass/map.bin b/graphics/battle_environment/tall_grass/map.bin similarity index 100% rename from graphics/battle_terrain/tall_grass/map.bin rename to graphics/battle_environment/tall_grass/map.bin diff --git a/graphics/battle_terrain/tall_grass/palette.pal b/graphics/battle_environment/tall_grass/palette.pal similarity index 100% rename from graphics/battle_terrain/tall_grass/palette.pal rename to graphics/battle_environment/tall_grass/palette.pal diff --git a/graphics/battle_terrain/tall_grass/tiles.png b/graphics/battle_environment/tall_grass/tiles.png similarity index 100% rename from graphics/battle_terrain/tall_grass/tiles.png rename to graphics/battle_environment/tall_grass/tiles.png diff --git a/graphics/battle_terrain/underwater/anim_map.bin b/graphics/battle_environment/underwater/anim_map.bin similarity index 100% rename from graphics/battle_terrain/underwater/anim_map.bin rename to graphics/battle_environment/underwater/anim_map.bin diff --git a/graphics/battle_terrain/underwater/anim_tiles.png b/graphics/battle_environment/underwater/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/underwater/anim_tiles.png rename to graphics/battle_environment/underwater/anim_tiles.png diff --git a/graphics/battle_terrain/underwater/map.bin b/graphics/battle_environment/underwater/map.bin similarity index 100% rename from graphics/battle_terrain/underwater/map.bin rename to graphics/battle_environment/underwater/map.bin diff --git a/graphics/battle_terrain/underwater/palette.pal b/graphics/battle_environment/underwater/palette.pal similarity index 100% rename from graphics/battle_terrain/underwater/palette.pal rename to graphics/battle_environment/underwater/palette.pal diff --git a/graphics/battle_terrain/underwater/tiles.png b/graphics/battle_environment/underwater/tiles.png similarity index 100% rename from graphics/battle_terrain/underwater/tiles.png rename to graphics/battle_environment/underwater/tiles.png diff --git a/graphics/battle_terrain/water/anim_map.bin b/graphics/battle_environment/water/anim_map.bin similarity index 100% rename from graphics/battle_terrain/water/anim_map.bin rename to graphics/battle_environment/water/anim_map.bin diff --git a/graphics/battle_terrain/water/anim_tiles.png b/graphics/battle_environment/water/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/water/anim_tiles.png rename to graphics/battle_environment/water/anim_tiles.png diff --git a/graphics/battle_terrain/water/kyogre.pal b/graphics/battle_environment/water/kyogre.pal similarity index 100% rename from graphics/battle_terrain/water/kyogre.pal rename to graphics/battle_environment/water/kyogre.pal diff --git a/graphics/battle_terrain/water/map.bin b/graphics/battle_environment/water/map.bin similarity index 100% rename from graphics/battle_terrain/water/map.bin rename to graphics/battle_environment/water/map.bin diff --git a/graphics/battle_terrain/water/palette.pal b/graphics/battle_environment/water/palette.pal similarity index 100% rename from graphics/battle_terrain/water/palette.pal rename to graphics/battle_environment/water/palette.pal diff --git a/graphics/battle_terrain/water/tiles.png b/graphics/battle_environment/water/tiles.png similarity index 100% rename from graphics/battle_terrain/water/tiles.png rename to graphics/battle_environment/water/tiles.png diff --git a/include/battle.h b/include/battle.h index 6c4d780186..8031d808a7 100644 --- a/include/battle.h +++ b/include/battle.h @@ -626,7 +626,7 @@ extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT]; extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT]; extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT]; extern u32 gBattleTypeFlags; -extern u8 gBattleTerrain; +extern u8 gBattleEnvironment; extern u32 gUnusedFirstBattleVar1; extern u8 *gBattleAnimBgTileBuffer; extern u8 *gBattleAnimBgTilemapBuffer; diff --git a/include/battle_anim.h b/include/battle_anim.h index 455bf5f4cd..ffb63bde61 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -70,7 +70,7 @@ void ResetBattleAnimBg(bool8); // battle_intro.c void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 *tiles, u16 *tilemap, u16 tilesOffset); -void HandleIntroSlide(u8 terrainId); +void HandleIntroSlide(u8 environmentId); int GetAnimBgAttribute(u8 bgId, u8 attributeId); // battle_anim_mons.c diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 064c080f61..04cc613f85 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -233,7 +233,7 @@ void BtlController_EmitCantSwitch(u8 bufferId); void BtlController_EmitPlaySE(u8 bufferId, u16 songId); void BtlController_EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM); void BtlController_EmitFaintingCry(u8 bufferId); -void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId); +void BtlController_EmitIntroSlide(u8 bufferId, u8 environmentId); void BtlController_EmitIntroTrainerBallThrow(u8 bufferId); void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 flags); void BtlController_EmitHidePartyStatusSummary(u8 bufferId); diff --git a/include/battle_setup.h b/include/battle_setup.h index ee2837927b..41ab138115 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -27,7 +27,7 @@ void BattleSetup_StartLatiBattle(void); void BattleSetup_StartLegendaryBattle(void); void StartGroudonKyogreBattle(void); void StartRegiBattle(void); -u8 BattleSetup_GetTerrainId(void); +u8 BattleSetup_GetEnvironmentId(void); u8 GetSpecialBattleTransition(s32 id); void ChooseStarter(void); void ResetTrainerOpponentIds(void); diff --git a/include/constants/battle.h b/include/constants/battle.h index 50c93083f8..a64dd347bc 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -296,7 +296,7 @@ #define MOVE_EFFECT_AFFECTS_USER (1 << 6) // 64 #define MOVE_EFFECT_CERTAIN (1 << 7) // 128 -// Battle terrain defines for gBattleTerrain. +// Battle environment defines for gBattleEnvironment. #define BATTLE_TERRAIN_GRASS 0 #define BATTLE_TERRAIN_LONG_GRASS 1 #define BATTLE_TERRAIN_SAND 2 diff --git a/include/graphics.h b/include/graphics.h index 9e2fb79539..c69326c39d 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3215,72 +3215,72 @@ extern const u32 gBattleVSFrame_Tilemap[]; extern const u32 gMultiBattleIntroBg_Opponent_Tilemap[]; extern const u32 gMultiBattleIntroBg_Player_Tilemap[]; -// battle terrains -extern const u32 gBattleTerrainTiles_TallGrass[]; -extern const u32 gBattleTerrainTilemap_TallGrass[]; -extern const u32 gBattleTerrainAnimTiles_TallGrass[]; -extern const u32 gBattleTerrainAnimTilemap_TallGrass[]; -extern const u32 gBattleTerrainPalette_TallGrass[]; -extern const u32 gBattleTerrainTiles_LongGrass[]; -extern const u32 gBattleTerrainTilemap_LongGrass[]; -extern const u32 gBattleTerrainAnimTiles_LongGrass[]; -extern const u32 gBattleTerrainAnimTilemap_LongGrass[]; -extern const u32 gBattleTerrainPalette_LongGrass[]; -extern const u32 gBattleTerrainTiles_Sand[]; -extern const u32 gBattleTerrainTilemap_Sand[]; -extern const u32 gBattleTerrainAnimTiles_Sand[]; -extern const u32 gBattleTerrainAnimTilemap_Sand[]; -extern const u32 gBattleTerrainPalette_Sand[]; -extern const u32 gBattleTerrainTiles_Underwater[]; -extern const u32 gBattleTerrainTilemap_Underwater[]; -extern const u32 gBattleTerrainAnimTiles_Underwater[]; -extern const u32 gBattleTerrainAnimTilemap_Underwater[]; -extern const u32 gBattleTerrainPalette_Underwater[]; -extern const u32 gBattleTerrainTiles_Water[]; -extern const u32 gBattleTerrainTilemap_Water[]; -extern const u32 gBattleTerrainAnimTiles_Water[]; -extern const u32 gBattleTerrainAnimTilemap_Water[]; -extern const u32 gBattleTerrainPalette_Water[]; -extern const u32 gBattleTerrainTiles_PondWater[]; -extern const u32 gBattleTerrainTilemap_PondWater[]; -extern const u32 gBattleTerrainAnimTiles_PondWater[]; -extern const u32 gBattleTerrainAnimTilemap_PondWater[]; -extern const u32 gBattleTerrainPalette_PondWater[]; -extern const u32 gBattleTerrainTiles_Rock[]; -extern const u32 gBattleTerrainTilemap_Rock[]; -extern const u32 gBattleTerrainAnimTiles_Rock[]; -extern const u32 gBattleTerrainAnimTilemap_Rock[]; -extern const u32 gBattleTerrainPalette_Rock[]; -extern const u32 gBattleTerrainTiles_Cave[]; -extern const u32 gBattleTerrainTilemap_Cave[]; -extern const u32 gBattleTerrainAnimTiles_Cave[]; -extern const u32 gBattleTerrainAnimTilemap_Cave[]; -extern const u32 gBattleTerrainPalette_Cave[]; -extern const u32 gBattleTerrainTiles_Building[]; -extern const u32 gBattleTerrainTilemap_Building[]; -extern const u32 gBattleTerrainAnimTiles_Building[]; -extern const u32 gBattleTerrainAnimTilemap_Building[]; -extern const u32 gBattleTerrainPalette_Building[]; -extern const u32 gBattleTerrainPalette_Plain[]; -extern const u32 gBattleTerrainPalette_Frontier[]; -extern const u32 gBattleTerrainTiles_Stadium[]; -extern const u32 gBattleTerrainTilemap_Stadium[]; -extern const u32 gBattleTerrainTiles_Rayquaza[]; -extern const u32 gBattleTerrainTilemap_Rayquaza[]; -extern const u32 gBattleTerrainAnimTiles_Rayquaza[]; -extern const u32 gBattleTerrainAnimTilemap_Rayquaza[]; -extern const u32 gBattleTerrainPalette_Rayquaza[]; -extern const u32 gBattleTerrainPalette_Kyogre[]; -extern const u32 gBattleTerrainPalette_Groudon[]; -extern const u32 gBattleTerrainPalette_BuildingGym[]; -extern const u32 gBattleTerrainPalette_BuildingLeader[]; -extern const u32 gBattleTerrainPalette_StadiumAqua[]; -extern const u32 gBattleTerrainPalette_StadiumMagma[]; -extern const u32 gBattleTerrainPalette_StadiumSidney[]; -extern const u32 gBattleTerrainPalette_StadiumPhoebe[]; -extern const u32 gBattleTerrainPalette_StadiumGlacia[]; -extern const u32 gBattleTerrainPalette_StadiumDrake[]; -extern const u32 gBattleTerrainPalette_StadiumWallace[]; +// battle environments +extern const u32 gBattleEnvironmentTiles_TallGrass[]; +extern const u32 gBattleEnvironmentTilemap_TallGrass[]; +extern const u32 gBattleEnvironmentAnimTiles_TallGrass[]; +extern const u32 gBattleEnvironmentAnimTilemap_TallGrass[]; +extern const u32 gBattleEnvironmentPalette_TallGrass[]; +extern const u32 gBattleEnvironmentTiles_LongGrass[]; +extern const u32 gBattleEnvironmentTilemap_LongGrass[]; +extern const u32 gBattleEnvironmentAnimTiles_LongGrass[]; +extern const u32 gBattleEnvironmentAnimTilemap_LongGrass[]; +extern const u32 gBattleEnvironmentPalette_LongGrass[]; +extern const u32 gBattleEnvironmentTiles_Sand[]; +extern const u32 gBattleEnvironmentTilemap_Sand[]; +extern const u32 gBattleEnvironmentAnimTiles_Sand[]; +extern const u32 gBattleEnvironmentAnimTilemap_Sand[]; +extern const u32 gBattleEnvironmentPalette_Sand[]; +extern const u32 gBattleEnvironmentTiles_Underwater[]; +extern const u32 gBattleEnvironmentTilemap_Underwater[]; +extern const u32 gBattleEnvironmentAnimTiles_Underwater[]; +extern const u32 gBattleEnvironmentAnimTilemap_Underwater[]; +extern const u32 gBattleEnvironmentPalette_Underwater[]; +extern const u32 gBattleEnvironmentTiles_Water[]; +extern const u32 gBattleEnvironmentTilemap_Water[]; +extern const u32 gBattleEnvironmentAnimTiles_Water[]; +extern const u32 gBattleEnvironmentAnimTilemap_Water[]; +extern const u32 gBattleEnvironmentPalette_Water[]; +extern const u32 gBattleEnvironmentTiles_PondWater[]; +extern const u32 gBattleEnvironmentTilemap_PondWater[]; +extern const u32 gBattleEnvironmentAnimTiles_PondWater[]; +extern const u32 gBattleEnvironmentAnimTilemap_PondWater[]; +extern const u32 gBattleEnvironmentPalette_PondWater[]; +extern const u32 gBattleEnvironmentTiles_Rock[]; +extern const u32 gBattleEnvironmentTilemap_Rock[]; +extern const u32 gBattleEnvironmentAnimTiles_Rock[]; +extern const u32 gBattleEnvironmentAnimTilemap_Rock[]; +extern const u32 gBattleEnvironmentPalette_Rock[]; +extern const u32 gBattleEnvironmentTiles_Cave[]; +extern const u32 gBattleEnvironmentTilemap_Cave[]; +extern const u32 gBattleEnvironmentAnimTiles_Cave[]; +extern const u32 gBattleEnvironmentAnimTilemap_Cave[]; +extern const u32 gBattleEnvironmentPalette_Cave[]; +extern const u32 gBattleEnvironmentTiles_Building[]; +extern const u32 gBattleEnvironmentTilemap_Building[]; +extern const u32 gBattleEnvironmentAnimTiles_Building[]; +extern const u32 gBattleEnvironmentAnimTilemap_Building[]; +extern const u32 gBattleEnvironmentPalette_Building[]; +extern const u32 gBattleEnvironmentPalette_Plain[]; +extern const u32 gBattleEnvironmentPalette_Frontier[]; +extern const u32 gBattleEnvironmentTiles_Stadium[]; +extern const u32 gBattleEnvironmentTilemap_Stadium[]; +extern const u32 gBattleEnvironmentTiles_Rayquaza[]; +extern const u32 gBattleEnvironmentTilemap_Rayquaza[]; +extern const u32 gBattleEnvironmentAnimTiles_Rayquaza[]; +extern const u32 gBattleEnvironmentAnimTilemap_Rayquaza[]; +extern const u32 gBattleEnvironmentPalette_Rayquaza[]; +extern const u32 gBattleEnvironmentPalette_Kyogre[]; +extern const u32 gBattleEnvironmentPalette_Groudon[]; +extern const u32 gBattleEnvironmentPalette_BuildingGym[]; +extern const u32 gBattleEnvironmentPalette_BuildingLeader[]; +extern const u32 gBattleEnvironmentPalette_StadiumAqua[]; +extern const u32 gBattleEnvironmentPalette_StadiumMagma[]; +extern const u32 gBattleEnvironmentPalette_StadiumSidney[]; +extern const u32 gBattleEnvironmentPalette_StadiumPhoebe[]; +extern const u32 gBattleEnvironmentPalette_StadiumGlacia[]; +extern const u32 gBattleEnvironmentPalette_StadiumDrake[]; +extern const u32 gBattleEnvironmentPalette_StadiumWallace[]; // Pokédex extern const u32 gPokedexInterface_Gfx[]; diff --git a/src/battle_anim_ground.c b/src/battle_anim_ground.c index d6d8137bcd..d6234e5f96 100644 --- a/src/battle_anim_ground.c +++ b/src/battle_anim_ground.c @@ -22,7 +22,7 @@ static void AnimTask_DigEndBounceMovementSetInvisible(u8); static void AnimTask_DigSetVisibleUnderground(u8); static void AnimTask_DigRiseUpFromHole(u8); static void SetDigScanlineEffect(u8, s16, s16); -static void AnimTask_ShakeTerrain(u8); +static void AnimTask_ShakeEnvironment(u8); static void AnimTask_ShakeBattlers(u8); static void SetBattlersXOffsetForShake(struct Task *); static void WaitForFissureCompletion(u8); @@ -564,12 +564,12 @@ static void AnimDigDirtMound(struct Sprite *sprite) #define tMaxTime data[3] #define tbattlerSpriteIds(i) data[9 + (i)] #define tNumBattlers data[13] // AnimTask_ShakeBattlers -#define tInitialX data[13] // AnimTask_ShakeTerrain +#define tInitialX data[13] // AnimTask_ShakeEnvironment #define tHorizOffset data[14] #define tInitHorizOffset data[15] -// Shakes battler(s) or the battle terrain back and forth horizontally. Used by e.g. Earthquake, Eruption -// arg0: What to shake. 0-3 for any specific battler, MAX_BATTLERS_COUNT for all battlers, MAX_BATTLERS_COUNT + 1 for the terrain +// Shakes battler(s) or the battle environment back and forth horizontally. Used by e.g. Earthquake, Eruption +// arg0: What to shake. 0-3 for any specific battler, MAX_BATTLERS_COUNT for all battlers, MAX_BATTLERS_COUNT + 1 for the environment // arg1: Shake intensity, used to calculate horizontal pixel offset (if 0, use move power instead) // arg2: Length of time to shake for void AnimTask_HorizontalShake(u8 taskId) @@ -585,9 +585,9 @@ void AnimTask_HorizontalShake(u8 taskId) task->tMaxTime = gBattleAnimArgs[2]; switch (gBattleAnimArgs[0]) { - case MAX_BATTLERS_COUNT + 1: // Shake terrain + case MAX_BATTLERS_COUNT + 1: // Shake environment task->tInitialX = gBattle_BG3_X; - task->func = AnimTask_ShakeTerrain; + task->func = AnimTask_ShakeEnvironment; break; case MAX_BATTLERS_COUNT: // Shake all battlers task->tNumBattlers = 0; @@ -616,7 +616,7 @@ void AnimTask_HorizontalShake(u8 taskId) } } -static void AnimTask_ShakeTerrain(u8 taskId) +static void AnimTask_ShakeEnvironment(u8 taskId) { struct Task *task = &gTasks[taskId]; diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c index 94bbb6ee4e..72d8a0745d 100644 --- a/src/battle_anim_normal.c +++ b/src/battle_anim_normal.c @@ -13,9 +13,9 @@ static void AnimComplexPaletteBlend(struct Sprite *); static void AnimComplexPaletteBlend_Step1(struct Sprite *); static void AnimComplexPaletteBlend_Step2(struct Sprite *); static void AnimCirclingSparkle(struct Sprite *); -static void AnimShakeMonOrBattleTerrain(struct Sprite *); -static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *); -static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void); +static void AnimShakeMonOrBattleEnvironment(struct Sprite *); +static void AnimShakeMonOrBattleEnvironment_Step(struct Sprite *); +static void AnimShakeMonOrBattleEnvironment_UpdateCoordOffsetEnabled(void); static void AnimHitSplatBasic(struct Sprite *); static void AnimHitSplatPersistent(struct Sprite *); static void AnimHitSplatHandleInvert(struct Sprite *); @@ -33,7 +33,7 @@ static void BlendColorCycleByTag(u8, u8, u8); static void AnimTask_BlendColorCycleByTagLoop(u8); static void AnimTask_FlashAnimTagWithColor_Step1(u8); static void AnimTask_FlashAnimTagWithColor_Step2(u8); -static void AnimTask_ShakeBattleTerrain_Step(u8); +static void AnimTask_ShakeBattleEnvironment_Step(u8); static const union AnimCmd sAnim_ConfusionDuck_0[] = { @@ -119,7 +119,7 @@ static const struct SpriteTemplate sCirclingSparkleSpriteTemplate = .callback = AnimCirclingSparkle, }; -const struct SpriteTemplate gShakeMonOrTerrainSpriteTemplate = +const struct SpriteTemplate gShakeMonOrEnvironmentSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -127,7 +127,7 @@ const struct SpriteTemplate gShakeMonOrTerrainSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimShakeMonOrBattleTerrain, + .callback = AnimShakeMonOrBattleEnvironment, }; static const union AffineAnimCmd sAffineAnim_HitSplat_0[] = @@ -795,7 +795,7 @@ void AnimTask_TintPalettes(u8 taskId) #undef tColorG #undef tColorB -static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite) +static void AnimShakeMonOrBattleEnvironment(struct Sprite *sprite) { u16 var0; @@ -825,12 +825,12 @@ static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[3]; var0 = sprite->data[5] - 2; if (var0 < 2) - AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(); + AnimShakeMonOrBattleEnvironment_UpdateCoordOffsetEnabled(); - sprite->callback = AnimShakeMonOrBattleTerrain_Step; + sprite->callback = AnimShakeMonOrBattleEnvironment_Step; } -static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite) +static void AnimShakeMonOrBattleEnvironment_Step(struct Sprite *sprite) { u8 i; u16 var0; @@ -863,7 +863,7 @@ static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite) } } -static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void) +static void AnimShakeMonOrBattleEnvironment_UpdateCoordOffsetEnabled(void) { gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = FALSE; gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = FALSE; @@ -882,19 +882,19 @@ static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void) } } -// Task data for AnimTask_ShakeBattleTerrain +// Task data for AnimTask_ShakeBattleEnvironment #define tXOffset data[0] #define tYOffset data[1] #define tNumShakes data[2] #define tTimer data[3] #define tShakeDelay data[8] -// Can shake battle terrain back and forth on the X or down and back to original pos on Y (cant shake up from orig pos) +// Can shake battle environment back and forth on the X or down and back to original pos on Y (cant shake up from orig pos) // arg0: x offset of shake // arg1: y offset of shake // arg2: number of shakes // arg3: time between shakes -void AnimTask_ShakeBattleTerrain(u8 taskId) +void AnimTask_ShakeBattleEnvironment(u8 taskId) { gTasks[taskId].tXOffset = gBattleAnimArgs[0]; gTasks[taskId].tYOffset = gBattleAnimArgs[1]; @@ -903,11 +903,11 @@ void AnimTask_ShakeBattleTerrain(u8 taskId) gTasks[taskId].tShakeDelay = gBattleAnimArgs[3]; gBattle_BG3_X = gBattleAnimArgs[0]; gBattle_BG3_Y = gBattleAnimArgs[1]; - gTasks[taskId].func = AnimTask_ShakeBattleTerrain_Step; + gTasks[taskId].func = AnimTask_ShakeBattleEnvironment_Step; gTasks[taskId].func(taskId); } -static void AnimTask_ShakeBattleTerrain_Step(u8 taskId) +static void AnimTask_ShakeBattleEnvironment_Step(u8 taskId) { if (gTasks[taskId].tTimer == 0) { diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 18a599a4c1..5b50c43500 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -109,7 +109,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) void AnimTask_SetCamouflageBlend(u8 taskId) { u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); - switch (gBattleTerrain) + switch (gBattleEnvironment) { case BATTLE_TERRAIN_GRASS: gBattleAnimArgs[4] = RGB(12, 24, 2); @@ -937,9 +937,9 @@ static void UpdateMonScrollingBgMask(u8 taskId) } } -void AnimTask_GetBattleTerrain(u8 taskId) +void AnimTask_GetBattleEnvironment(u8 taskId) { - gBattleAnimArgs[0] = gBattleTerrain; + gBattleAnimArgs[0] = gBattleEnvironment; DestroyAnimVisualTask(taskId); } diff --git a/src/battle_bg.c b/src/battle_bg.c index 05073db96d..183e8f3b90 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -599,96 +599,96 @@ const struct WindowTemplate * const gBattleWindowTemplates[] = [B_WIN_TYPE_ARENA] = sBattleArenaWindowTemplates, }; -static const struct BattleBackground sBattleTerrainTable[] = +static const struct BattleBackground sBattleEnvironmentTable[] = { [BATTLE_TERRAIN_GRASS] = { - .tileset = gBattleTerrainTiles_TallGrass, - .tilemap = gBattleTerrainTilemap_TallGrass, - .entryTileset = gBattleTerrainAnimTiles_TallGrass, - .entryTilemap = gBattleTerrainAnimTilemap_TallGrass, - .palette = gBattleTerrainPalette_TallGrass, + .tileset = gBattleEnvironmentTiles_TallGrass, + .tilemap = gBattleEnvironmentTilemap_TallGrass, + .entryTileset = gBattleEnvironmentAnimTiles_TallGrass, + .entryTilemap = gBattleEnvironmentAnimTilemap_TallGrass, + .palette = gBattleEnvironmentPalette_TallGrass, }, [BATTLE_TERRAIN_LONG_GRASS] = { - .tileset = gBattleTerrainTiles_LongGrass, - .tilemap = gBattleTerrainTilemap_LongGrass, - .entryTileset = gBattleTerrainAnimTiles_LongGrass, - .entryTilemap = gBattleTerrainAnimTilemap_LongGrass, - .palette = gBattleTerrainPalette_LongGrass, + .tileset = gBattleEnvironmentTiles_LongGrass, + .tilemap = gBattleEnvironmentTilemap_LongGrass, + .entryTileset = gBattleEnvironmentAnimTiles_LongGrass, + .entryTilemap = gBattleEnvironmentAnimTilemap_LongGrass, + .palette = gBattleEnvironmentPalette_LongGrass, }, [BATTLE_TERRAIN_SAND] = { - .tileset = gBattleTerrainTiles_Sand, - .tilemap = gBattleTerrainTilemap_Sand, - .entryTileset = gBattleTerrainAnimTiles_Sand, - .entryTilemap = gBattleTerrainAnimTilemap_Sand, - .palette = gBattleTerrainPalette_Sand, + .tileset = gBattleEnvironmentTiles_Sand, + .tilemap = gBattleEnvironmentTilemap_Sand, + .entryTileset = gBattleEnvironmentAnimTiles_Sand, + .entryTilemap = gBattleEnvironmentAnimTilemap_Sand, + .palette = gBattleEnvironmentPalette_Sand, }, [BATTLE_TERRAIN_UNDERWATER] = { - .tileset = gBattleTerrainTiles_Underwater, - .tilemap = gBattleTerrainTilemap_Underwater, - .entryTileset = gBattleTerrainAnimTiles_Underwater, - .entryTilemap = gBattleTerrainAnimTilemap_Underwater, - .palette = gBattleTerrainPalette_Underwater, + .tileset = gBattleEnvironmentTiles_Underwater, + .tilemap = gBattleEnvironmentTilemap_Underwater, + .entryTileset = gBattleEnvironmentAnimTiles_Underwater, + .entryTilemap = gBattleEnvironmentAnimTilemap_Underwater, + .palette = gBattleEnvironmentPalette_Underwater, }, [BATTLE_TERRAIN_WATER] = { - .tileset = gBattleTerrainTiles_Water, - .tilemap = gBattleTerrainTilemap_Water, - .entryTileset = gBattleTerrainAnimTiles_Water, - .entryTilemap = gBattleTerrainAnimTilemap_Water, - .palette = gBattleTerrainPalette_Water, + .tileset = gBattleEnvironmentTiles_Water, + .tilemap = gBattleEnvironmentTilemap_Water, + .entryTileset = gBattleEnvironmentAnimTiles_Water, + .entryTilemap = gBattleEnvironmentAnimTilemap_Water, + .palette = gBattleEnvironmentPalette_Water, }, [BATTLE_TERRAIN_POND] = { - .tileset = gBattleTerrainTiles_PondWater, - .tilemap = gBattleTerrainTilemap_PondWater, - .entryTileset = gBattleTerrainAnimTiles_PondWater, - .entryTilemap = gBattleTerrainAnimTilemap_PondWater, - .palette = gBattleTerrainPalette_PondWater, + .tileset = gBattleEnvironmentTiles_PondWater, + .tilemap = gBattleEnvironmentTilemap_PondWater, + .entryTileset = gBattleEnvironmentAnimTiles_PondWater, + .entryTilemap = gBattleEnvironmentAnimTilemap_PondWater, + .palette = gBattleEnvironmentPalette_PondWater, }, [BATTLE_TERRAIN_MOUNTAIN] = { - .tileset = gBattleTerrainTiles_Rock, - .tilemap = gBattleTerrainTilemap_Rock, - .entryTileset = gBattleTerrainAnimTiles_Rock, - .entryTilemap = gBattleTerrainAnimTilemap_Rock, - .palette = gBattleTerrainPalette_Rock, + .tileset = gBattleEnvironmentTiles_Rock, + .tilemap = gBattleEnvironmentTilemap_Rock, + .entryTileset = gBattleEnvironmentAnimTiles_Rock, + .entryTilemap = gBattleEnvironmentAnimTilemap_Rock, + .palette = gBattleEnvironmentPalette_Rock, }, [BATTLE_TERRAIN_CAVE] = { - .tileset = gBattleTerrainTiles_Cave, - .tilemap = gBattleTerrainTilemap_Cave, - .entryTileset = gBattleTerrainAnimTiles_Cave, - .entryTilemap = gBattleTerrainAnimTilemap_Cave, - .palette = gBattleTerrainPalette_Cave, + .tileset = gBattleEnvironmentTiles_Cave, + .tilemap = gBattleEnvironmentTilemap_Cave, + .entryTileset = gBattleEnvironmentAnimTiles_Cave, + .entryTilemap = gBattleEnvironmentAnimTilemap_Cave, + .palette = gBattleEnvironmentPalette_Cave, }, [BATTLE_TERRAIN_BUILDING] = { - .tileset = gBattleTerrainTiles_Building, - .tilemap = gBattleTerrainTilemap_Building, - .entryTileset = gBattleTerrainAnimTiles_Building, - .entryTilemap = gBattleTerrainAnimTilemap_Building, - .palette = gBattleTerrainPalette_Building, + .tileset = gBattleEnvironmentTiles_Building, + .tilemap = gBattleEnvironmentTilemap_Building, + .entryTileset = gBattleEnvironmentAnimTiles_Building, + .entryTilemap = gBattleEnvironmentAnimTilemap_Building, + .palette = gBattleEnvironmentPalette_Building, }, [BATTLE_TERRAIN_PLAIN] = { - .tileset = gBattleTerrainTiles_Building, - .tilemap = gBattleTerrainTilemap_Building, - .entryTileset = gBattleTerrainAnimTiles_Building, - .entryTilemap = gBattleTerrainAnimTilemap_Building, - .palette = gBattleTerrainPalette_Plain, + .tileset = gBattleEnvironmentTiles_Building, + .tilemap = gBattleEnvironmentTilemap_Building, + .entryTileset = gBattleEnvironmentAnimTiles_Building, + .entryTilemap = gBattleEnvironmentAnimTilemap_Building, + .palette = gBattleEnvironmentPalette_Plain, }, }; @@ -761,27 +761,27 @@ void DrawMainBattleBackground(void) { if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK)) { - LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) { - 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); + LZDecompressVram(gBattleEnvironmentTiles_Cave, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Cave, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_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); + LZDecompressVram(gBattleEnvironmentTiles_Water, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Water, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_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); + LZDecompressVram(gBattleEnvironmentTiles_Rayquaza, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Rayquaza, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_Rayquaza, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else { @@ -790,16 +790,16 @@ void DrawMainBattleBackground(void) u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass; if (trainerClass == TRAINER_CLASS_LEADER) { - LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); return; } else if (trainerClass == TRAINER_CLASS_CHAMPION) { - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); return; } } @@ -808,49 +808,49 @@ void DrawMainBattleBackground(void) { default: case MAP_BATTLE_SCENE_NORMAL: - LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tileset, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tilemap, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(sBattleTerrainTable[gBattleTerrain].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tileset, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tilemap, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GYM: - LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_MAGMA: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_AQUA: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_SIDNEY: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_PHOEBE: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GLACIA: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_DRAKE: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_FRONTIER: - LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } } @@ -1144,8 +1144,8 @@ void DrawBattleEntryBackground(void) { if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || gPartnerTrainerId == TRAINER_STEVEN_PARTNER) { - LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28))); + LZDecompressVram(gBattleEnvironmentAnimTiles_Building, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleEnvironmentAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28))); } else { @@ -1161,18 +1161,18 @@ void DrawBattleEntryBackground(void) } else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) { - LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void *)(BG_SCREEN_ADDR(28))); + LZDecompressVram(gBattleEnvironmentAnimTiles_Cave, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleEnvironmentAnimTilemap_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))); + LZDecompressVram(gBattleEnvironmentAnimTiles_Underwater, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleEnvironmentAnimTilemap_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))); + LZDecompressVram(gBattleEnvironmentAnimTiles_Rayquaza, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleEnvironmentAnimTilemap_Rayquaza, (void *)(BG_SCREEN_ADDR(28))); } else { @@ -1181,27 +1181,27 @@ void DrawBattleEntryBackground(void) u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass; if (trainerClass == TRAINER_CLASS_LEADER) { - LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28))); + LZDecompressVram(gBattleEnvironmentAnimTiles_Building, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleEnvironmentAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28))); return; } else if (trainerClass == TRAINER_CLASS_CHAMPION) { - LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28))); + LZDecompressVram(gBattleEnvironmentAnimTiles_Building, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleEnvironmentAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28))); return; } } if (GetCurrentMapBattleScene() == MAP_BATTLE_SCENE_NORMAL) { - LZDecompressVram(sBattleTerrainTable[gBattleTerrain].entryTileset, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(sBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)(BG_SCREEN_ADDR(28))); + LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].entryTileset, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].entryTilemap, (void *)(BG_SCREEN_ADDR(28))); } else { - LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28))); + LZDecompressVram(gBattleEnvironmentAnimTiles_Building, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleEnvironmentAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28))); } } } @@ -1225,11 +1225,11 @@ bool8 LoadChosenBattleElement(u8 caseId) case 3: if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER)) { - LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); } else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) { - LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Cave, (void *)(BG_CHAR_ADDR(2))); } else { @@ -1238,12 +1238,12 @@ bool8 LoadChosenBattleElement(u8 caseId) u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass; if (trainerClass == TRAINER_CLASS_LEADER) { - LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); break; } else if (trainerClass == TRAINER_CLASS_CHAMPION) { - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); break; } } @@ -1252,31 +1252,31 @@ bool8 LoadChosenBattleElement(u8 caseId) { default: case MAP_BATTLE_SCENE_NORMAL: - LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tileset, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tileset, (void *)(BG_CHAR_ADDR(2))); break; case MAP_BATTLE_SCENE_GYM: - LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); break; case MAP_BATTLE_SCENE_MAGMA: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); break; case MAP_BATTLE_SCENE_AQUA: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); break; case MAP_BATTLE_SCENE_SIDNEY: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); break; case MAP_BATTLE_SCENE_PHOEBE: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); break; case MAP_BATTLE_SCENE_GLACIA: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); break; case MAP_BATTLE_SCENE_DRAKE: - LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2))); break; case MAP_BATTLE_SCENE_FRONTIER: - LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2))); break; } } @@ -1284,14 +1284,14 @@ bool8 LoadChosenBattleElement(u8 caseId) case 4: if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER)) { - LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); } else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) { if (gGameVersion == VERSION_RUBY) - LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Cave, (void *)(BG_SCREEN_ADDR(26))); else - LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Water, (void *)(BG_SCREEN_ADDR(26))); } else { @@ -1300,12 +1300,12 @@ bool8 LoadChosenBattleElement(u8 caseId) u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass; if (trainerClass == TRAINER_CLASS_LEADER) { - LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); break; } else if (trainerClass == TRAINER_CLASS_CHAMPION) { - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); break; } } @@ -1314,31 +1314,31 @@ bool8 LoadChosenBattleElement(u8 caseId) { default: case MAP_BATTLE_SCENE_NORMAL: - LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tilemap, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tilemap, (void *)(BG_SCREEN_ADDR(26))); break; case MAP_BATTLE_SCENE_GYM: - LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); break; case MAP_BATTLE_SCENE_MAGMA: - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); break; case MAP_BATTLE_SCENE_AQUA: - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); break; case MAP_BATTLE_SCENE_SIDNEY: - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); break; case MAP_BATTLE_SCENE_PHOEBE: - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); break; case MAP_BATTLE_SCENE_GLACIA: - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); break; case MAP_BATTLE_SCENE_DRAKE: - LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26))); break; case MAP_BATTLE_SCENE_FRONTIER: - LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); + LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); break; } } @@ -1346,14 +1346,14 @@ bool8 LoadChosenBattleElement(u8 caseId) case 5: if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER)) { - LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) { if (gGameVersion == VERSION_RUBY) - LoadCompressedPalette(gBattleTerrainPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); else - LoadCompressedPalette(gBattleTerrainPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } else { @@ -1362,12 +1362,12 @@ bool8 LoadChosenBattleElement(u8 caseId) u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass; if (trainerClass == TRAINER_CLASS_LEADER) { - LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } else if (trainerClass == TRAINER_CLASS_CHAMPION) { - LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } } @@ -1376,31 +1376,31 @@ bool8 LoadChosenBattleElement(u8 caseId) { default: case MAP_BATTLE_SCENE_NORMAL: - LoadCompressedPalette(sBattleTerrainTable[gBattleTerrain].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GYM: - LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_MAGMA: - LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_AQUA: - LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_SIDNEY: - LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_PHOEBE: - LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_GLACIA: - LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_DRAKE: - LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; case MAP_BATTLE_SCENE_FRONTIER: - LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); break; } } diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 2ba5d4329d..02276a7e14 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -1417,10 +1417,10 @@ void BtlController_EmitFaintingCry(u8 bufferId) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId) +void BtlController_EmitIntroSlide(u8 bufferId, u8 environmentId) { sBattleBuffersTransferData[0] = CONTROLLER_INTROSLIDE; - sBattleBuffersTransferData[1] = terrainId; + sBattleBuffersTransferData[1] = environmentId; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); } diff --git a/src/battle_intro.c b/src/battle_intro.c index 571c5e85a2..d31d3da398 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -100,9 +100,9 @@ int GetAnimBgAttribute(u8 bgId, u8 attributeId) } #define tState data[0] -#define tTerrain data[1] +#define tEnvironment data[1] -void HandleIntroSlide(u8 terrain) +void HandleIntroSlide(u8 environment) { u8 taskId; @@ -120,16 +120,16 @@ void HandleIntroSlide(u8 terrain) } else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) { - terrain = BATTLE_TERRAIN_UNDERWATER; + environment = BATTLE_TERRAIN_UNDERWATER; taskId = CreateTask(BattleIntroSlide2, 0); } else { - taskId = CreateTask(sBattleIntroSlideFuncs[terrain], 0); + taskId = CreateTask(sBattleIntroSlideFuncs[environment], 0); } gTasks[taskId].tState = 0; - gTasks[taskId].tTerrain = terrain; + gTasks[taskId].tEnvironment = environment; gTasks[taskId].data[2] = 0; gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; @@ -194,7 +194,7 @@ static void BattleIntroSlide1(u8 taskId) } else { - if (gTasks[taskId].tTerrain == BATTLE_TERRAIN_LONG_GRASS) + if (gTasks[taskId].tEnvironment == BATTLE_TERRAIN_LONG_GRASS) { if (gBattle_BG1_Y != (u16)(-80)) gBattle_BG1_Y -= 2; @@ -240,7 +240,7 @@ static void BattleIntroSlide2(u8 taskId) { int i; - switch (gTasks[taskId].tTerrain) + switch (gTasks[taskId].tEnvironment) { case BATTLE_TERRAIN_SAND: case BATTLE_TERRAIN_WATER: @@ -251,7 +251,7 @@ static void BattleIntroSlide2(u8 taskId) break; } - if (gTasks[taskId].tTerrain == BATTLE_TERRAIN_WATER) + if (gTasks[taskId].tEnvironment == BATTLE_TERRAIN_WATER) { gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8; if (gTasks[taskId].data[6] < 180) diff --git a/src/battle_main.c b/src/battle_main.c index c19089deb0..f964bbd458 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -144,7 +144,7 @@ EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT] = {0}; // it will instead overflow into useful data. EWRAM_DATA static u32 sFlickerArray[25] = {0}; EWRAM_DATA u32 gBattleTypeFlags = 0; -EWRAM_DATA u8 gBattleTerrain = 0; +EWRAM_DATA u8 gBattleEnvironment = 0; EWRAM_DATA u32 gUnusedFirstBattleVar1 = 0; // Never read EWRAM_DATA struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE] = {0}; EWRAM_DATA static struct MultiPartnerMenuPokemon* sMultiPartnerPartyBuffer = NULL; @@ -669,9 +669,9 @@ static void CB2_InitBattleInternal(void) gBattle_BG3_X = 0; gBattle_BG3_Y = 0; - gBattleTerrain = BattleSetup_GetTerrainId(); + gBattleEnvironment = BattleSetup_GetEnvironmentId(); if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) - gBattleTerrain = BATTLE_TERRAIN_BUILDING; + gBattleEnvironment = BATTLE_TERRAIN_BUILDING; InitBattleBgsVideo(); LoadBattleTextboxAndBackground(); @@ -3378,7 +3378,7 @@ static void BattleIntroPrepareBackgroundSlide(void) if (gBattleControllerExecFlags == 0) { gActiveBattler = GetBattlerAtPosition(0); - BtlController_EmitIntroSlide(BUFFER_A, gBattleTerrain); + BtlController_EmitIntroSlide(BUFFER_A, gBattleEnvironment); MarkBattlerForControllerExec(gActiveBattler); gBattleMainFunc = BattleIntroDrawTrainersOrMonsSprites; gBattleCommunication[MULTIUSE_STATE] = 0; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 49279bdb9c..976415c8b4 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -280,7 +280,7 @@ static void Cmd_sethail(void); static void Cmd_trymemento(void); static void Cmd_setforcedtarget(void); static void Cmd_setcharge(void); -static void Cmd_callterrainattack(void); +static void Cmd_callenvironmentattack(void); static void Cmd_cureifburnedparalysedorpoisoned(void); static void Cmd_settorment(void); static void Cmd_jumpifnodamage(void); @@ -311,7 +311,7 @@ static void Cmd_trycastformdatachange(void); static void Cmd_settypebasedhalvers(void); static void Cmd_setweatherballtype(void); static void Cmd_tryrecycleitem(void); -static void Cmd_settypetoterrain(void); +static void Cmd_settypetoenvironment(void); static void Cmd_pursuitdoubles(void); static void Cmd_snatchsetbattlers(void); static void Cmd_removelightscreenreflect(void); @@ -532,7 +532,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_trymemento, //0xC9 Cmd_setforcedtarget, //0xCA Cmd_setcharge, //0xCB - Cmd_callterrainattack, //0xCC + Cmd_callenvironmentattack, //0xCC Cmd_cureifburnedparalysedorpoisoned, //0xCD Cmd_settorment, //0xCE Cmd_jumpifnodamage, //0xCF @@ -563,7 +563,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_settypebasedhalvers, //0xE8 Cmd_setweatherballtype, //0xE9 Cmd_tryrecycleitem, //0xEA - Cmd_settypetoterrain, //0xEB + Cmd_settypetoenvironment, //0xEB Cmd_pursuitdoubles, //0xEC Cmd_snatchsetbattlers, //0xED Cmd_removelightscreenreflect, //0xEE @@ -823,7 +823,7 @@ static const u8 sPickupProbabilities[] = 30, 40, 50, 60, 70, 80, 90, 94, 98 }; -static const u8 sTerrainToType[] = +static const u8 sEnvironmentToType[] = { [BATTLE_TERRAIN_GRASS] = TYPE_GRASS, [BATTLE_TERRAIN_LONG_GRASS] = TYPE_GRASS, @@ -9033,10 +9033,10 @@ static void Cmd_setcharge(void) } // Nature Power -static void Cmd_callterrainattack(void) +static void Cmd_callenvironmentattack(void) { gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; - gCurrentMove = sNaturePowerMoves[gBattleTerrain]; + gCurrentMove = sNaturePowerMoves[gBattleEnvironment]; gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); gBattlescriptCurrInstr++; @@ -9545,7 +9545,7 @@ static void Cmd_jumpifhasnohp(void) static void Cmd_getsecretpowereffect(void) { - switch (gBattleTerrain) + switch (gBattleEnvironment) { case BATTLE_TERRAIN_GRASS: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_POISON; @@ -9755,12 +9755,12 @@ static void Cmd_tryrecycleitem(void) } } -static void Cmd_settypetoterrain(void) +static void Cmd_settypetoenvironment(void) { - if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, sTerrainToType[gBattleTerrain])) + if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, sEnvironmentToType[gBattleEnvironment])) { - SET_BATTLER_TYPE(gBattlerAttacker, sTerrainToType[gBattleTerrain]); - PREPARE_TYPE_BUFFER(gBattleTextBuff1, sTerrainToType[gBattleTerrain]); + SET_BATTLER_TYPE(gBattlerAttacker, sEnvironmentToType[gBattleEnvironment]); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, sEnvironmentToType[gBattleEnvironment]); gBattlescriptCurrInstr += 5; } diff --git a/src/battle_setup.c b/src/battle_setup.c index e87ce6dd27..63a3e9b585 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -632,7 +632,7 @@ static void CB2_EndScriptedWildBattle(void) } } -u8 BattleSetup_GetTerrainId(void) +u8 BattleSetup_GetEnvironmentId(void) { u16 tileBehavior; s16 x, y; diff --git a/src/data/graphics/battle_environment.h b/src/data/graphics/battle_environment.h new file mode 100644 index 0000000000..d1abc026de --- /dev/null +++ b/src/data/graphics/battle_environment.h @@ -0,0 +1,88 @@ +const u32 gBattleEnvironmentTiles_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/tiles.4bpp.lz"); +const u32 gBattleEnvironmentPalette_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/palette.gbapal.lz"); +const u32 gBattleEnvironmentTilemap_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/map.bin.lz"); + +const u32 gBattleEnvironmentTiles_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/tiles.4bpp.lz"); +const u32 gBattleEnvironmentPalette_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/palette.gbapal.lz"); +const u32 gBattleEnvironmentTilemap_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/map.bin.lz"); + +const u32 gBattleEnvironmentTiles_Sand[] = INCBIN_U32("graphics/battle_environment/sand/tiles.4bpp.lz"); +const u32 gBattleEnvironmentPalette_Sand[] = INCBIN_U32("graphics/battle_environment/sand/palette.gbapal.lz"); +const u32 gBattleEnvironmentTilemap_Sand[] = INCBIN_U32("graphics/battle_environment/sand/map.bin.lz"); + +const u32 gBattleEnvironmentTiles_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/tiles.4bpp.lz"); +const u32 gBattleEnvironmentPalette_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/palette.gbapal.lz"); +const u32 gBattleEnvironmentTilemap_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/map.bin.lz"); + +const u32 gBattleEnvironmentTiles_Water[] = INCBIN_U32("graphics/battle_environment/water/tiles.4bpp.lz"); +const u32 gBattleEnvironmentPalette_Water[] = INCBIN_U32("graphics/battle_environment/water/palette.gbapal.lz"); +const u32 gBattleEnvironmentTilemap_Water[] = INCBIN_U32("graphics/battle_environment/water/map.bin.lz"); + +const u32 gBattleEnvironmentTiles_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/tiles.4bpp.lz"); +const u32 gBattleEnvironmentPalette_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/palette.gbapal.lz"); +const u32 gBattleEnvironmentTilemap_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/map.bin.lz"); + +const u32 gBattleEnvironmentTiles_Rock[] = INCBIN_U32("graphics/battle_environment/rock/tiles.4bpp.lz"); +const u32 gBattleEnvironmentPalette_Rock[] = INCBIN_U32("graphics/battle_environment/rock/palette.gbapal.lz"); +const u32 gBattleEnvironmentTilemap_Rock[] = INCBIN_U32("graphics/battle_environment/rock/map.bin.lz"); + +const u32 gBattleEnvironmentTiles_Cave[] = INCBIN_U32("graphics/battle_environment/cave/tiles.4bpp.lz"); +const u32 gBattleEnvironmentPalette_Cave[] = INCBIN_U32("graphics/battle_environment/cave/palette.gbapal.lz"); +const u32 gBattleEnvironmentTilemap_Cave[] = INCBIN_U32("graphics/battle_environment/cave/map.bin.lz"); + +const u32 gBattleEnvironmentPalette_Plain[] = INCBIN_U32("graphics/battle_environment/plain/palette.gbapal.lz"); + +const u32 gBattleEnvironmentTiles_Building[] = INCBIN_U32("graphics/battle_environment/building/tiles.4bpp.lz"); +const u32 gBattleEnvironmentPalette_Frontier[] = INCBIN_U32("graphics/battle_environment/stadium/battle_frontier.gbapal.lz"); // this is also used for link battles +const u32 gBattleEnvironmentTilemap_Building[] = INCBIN_U32("graphics/battle_environment/building/map.bin.lz"); + +const u32 gBattleEnvironmentTiles_Stadium[] = INCBIN_U32("graphics/battle_environment/stadium/tiles.4bpp.lz"); +const u32 gBattleEnvironmentTilemap_Stadium[] = INCBIN_U32("graphics/battle_environment/stadium/map.bin.lz"); + +const u32 gBattleEnvironmentTiles_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/tiles.4bpp.lz"); +const u32 gBattleEnvironmentTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/map.bin.lz"); + +const u32 gBattleEnvironmentPalette_Building[] = INCBIN_U32("graphics/battle_environment/building/palette.gbapal.lz"); + +const u32 gBattleEnvironmentPalette_Kyogre[] = INCBIN_U32("graphics/battle_environment/water/kyogre.gbapal.lz"); +const u32 gBattleEnvironmentPalette_Groudon[] = INCBIN_U32("graphics/battle_environment/cave/groudon.gbapal.lz"); +const u32 gBattleEnvironmentPalette_BuildingGym[] = INCBIN_U32("graphics/battle_environment/building/palette2.gbapal.lz"); +const u32 gBattleEnvironmentPalette_BuildingLeader[] = INCBIN_U32("graphics/battle_environment/building/palette3.gbapal.lz"); +const u32 gBattleEnvironmentPalette_StadiumAqua[] = INCBIN_U32("graphics/battle_environment/stadium/palette1.gbapal.lz"); +const u32 gBattleEnvironmentPalette_StadiumMagma[] = INCBIN_U32("graphics/battle_environment/stadium/palette2.gbapal.lz"); +const u32 gBattleEnvironmentPalette_StadiumSidney[] = INCBIN_U32("graphics/battle_environment/stadium/palette3.gbapal.lz"); +const u32 gBattleEnvironmentPalette_StadiumPhoebe[] = INCBIN_U32("graphics/battle_environment/stadium/palette4.gbapal.lz"); +const u32 gBattleEnvironmentPalette_StadiumGlacia[] = INCBIN_U32("graphics/battle_environment/stadium/palette5.gbapal.lz"); +const u32 gBattleEnvironmentPalette_StadiumDrake[] = INCBIN_U32("graphics/battle_environment/stadium/palette6.gbapal.lz"); +const u32 gBattleEnvironmentPalette_StadiumWallace[] = INCBIN_U32("graphics/battle_environment/stadium/palette7.gbapal.lz"); +const u32 gBattleEnvironmentPalette_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/palette.gbapal.lz"); + +const u32 gBattleEnvironmentAnimTiles_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/anim_tiles.4bpp.lz"); +const u32 gBattleEnvironmentAnimTilemap_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/anim_map.bin.lz"); + +const u32 gBattleEnvironmentAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/anim_tiles.4bpp.lz"); +const u32 gBattleEnvironmentAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/anim_map.bin.lz"); + +const u32 gBattleEnvironmentAnimTiles_Sand[] = INCBIN_U32("graphics/battle_environment/sand/anim_tiles.4bpp.lz"); +const u32 gBattleEnvironmentAnimTilemap_Sand[] = INCBIN_U32("graphics/battle_environment/sand/anim_map.bin.lz"); + +const u32 gBattleEnvironmentAnimTiles_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/anim_tiles.4bpp.lz"); +const u32 gBattleEnvironmentAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/anim_map.bin.lz"); + +const u32 gBattleEnvironmentAnimTiles_Water[] = INCBIN_U32("graphics/battle_environment/water/anim_tiles.4bpp.lz"); +const u32 gBattleEnvironmentAnimTilemap_Water[] = INCBIN_U32("graphics/battle_environment/water/anim_map.bin.lz"); + +const u32 gBattleEnvironmentAnimTiles_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/anim_tiles.4bpp.lz"); +const u32 gBattleEnvironmentAnimTilemap_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/anim_map.bin.lz"); + +const u32 gBattleEnvironmentAnimTiles_Rock[] = INCBIN_U32("graphics/battle_environment/rock/anim_tiles.4bpp.lz"); +const u32 gBattleEnvironmentAnimTilemap_Rock[] = INCBIN_U32("graphics/battle_environment/rock/anim_map.bin.lz"); + +const u32 gBattleEnvironmentAnimTiles_Cave[] = INCBIN_U32("graphics/battle_environment/cave/anim_tiles.4bpp.lz"); +const u32 gBattleEnvironmentAnimTilemap_Cave[] = INCBIN_U32("graphics/battle_environment/cave/anim_map.bin.lz"); + +const u32 gBattleEnvironmentAnimTiles_Building[] = INCBIN_U32("graphics/battle_environment/building/anim_tiles.4bpp.lz"); +const u32 gBattleEnvironmentAnimTilemap_Building[] = INCBIN_U32("graphics/battle_environment/building/anim_map.bin.lz"); + +const u32 gBattleEnvironmentAnimTiles_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/anim_tiles.4bpp.lz"); +const u32 gBattleEnvironmentAnimTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/anim_map.bin.lz"); diff --git a/src/data/graphics/battle_terrain.h b/src/data/graphics/battle_terrain.h deleted file mode 100644 index e719fafe3c..0000000000 --- a/src/data/graphics/battle_terrain.h +++ /dev/null @@ -1,88 +0,0 @@ -const u32 gBattleTerrainTiles_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/tiles.4bpp.lz"); -const u32 gBattleTerrainPalette_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/palette.gbapal.lz"); -const u32 gBattleTerrainTilemap_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/map.bin.lz"); - -const u32 gBattleTerrainTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/tiles.4bpp.lz"); -const u32 gBattleTerrainPalette_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/palette.gbapal.lz"); -const u32 gBattleTerrainTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/map.bin.lz"); - -const u32 gBattleTerrainTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/tiles.4bpp.lz"); -const u32 gBattleTerrainPalette_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/palette.gbapal.lz"); -const u32 gBattleTerrainTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/map.bin.lz"); - -const u32 gBattleTerrainTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/tiles.4bpp.lz"); -const u32 gBattleTerrainPalette_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/palette.gbapal.lz"); -const u32 gBattleTerrainTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/map.bin.lz"); - -const u32 gBattleTerrainTiles_Water[] = INCBIN_U32("graphics/battle_terrain/water/tiles.4bpp.lz"); -const u32 gBattleTerrainPalette_Water[] = INCBIN_U32("graphics/battle_terrain/water/palette.gbapal.lz"); -const u32 gBattleTerrainTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/water/map.bin.lz"); - -const u32 gBattleTerrainTiles_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/tiles.4bpp.lz"); -const u32 gBattleTerrainPalette_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/palette.gbapal.lz"); -const u32 gBattleTerrainTilemap_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/map.bin.lz"); - -const u32 gBattleTerrainTiles_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/tiles.4bpp.lz"); -const u32 gBattleTerrainPalette_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/palette.gbapal.lz"); -const u32 gBattleTerrainTilemap_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/map.bin.lz"); - -const u32 gBattleTerrainTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/tiles.4bpp.lz"); -const u32 gBattleTerrainPalette_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/palette.gbapal.lz"); -const u32 gBattleTerrainTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/map.bin.lz"); - -const u32 gBattleTerrainPalette_Plain[] = INCBIN_U32("graphics/battle_terrain/plain/palette.gbapal.lz"); - -const u32 gBattleTerrainTiles_Building[] = INCBIN_U32("graphics/battle_terrain/building/tiles.4bpp.lz"); -const u32 gBattleTerrainPalette_Frontier[] = INCBIN_U32("graphics/battle_terrain/stadium/battle_frontier.gbapal.lz"); // this is also used for link battles -const u32 gBattleTerrainTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/building/map.bin.lz"); - -const u32 gBattleTerrainTiles_Stadium[] = INCBIN_U32("graphics/battle_terrain/stadium/tiles.4bpp.lz"); -const u32 gBattleTerrainTilemap_Stadium[] = INCBIN_U32("graphics/battle_terrain/stadium/map.bin.lz"); - -const u32 gBattleTerrainTiles_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/tiles.4bpp.lz"); -const u32 gBattleTerrainTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/map.bin.lz"); - -const u32 gBattleTerrainPalette_Building[] = INCBIN_U32("graphics/battle_terrain/building/palette.gbapal.lz"); - -const u32 gBattleTerrainPalette_Kyogre[] = INCBIN_U32("graphics/battle_terrain/water/kyogre.gbapal.lz"); -const u32 gBattleTerrainPalette_Groudon[] = INCBIN_U32("graphics/battle_terrain/cave/groudon.gbapal.lz"); -const u32 gBattleTerrainPalette_BuildingGym[] = INCBIN_U32("graphics/battle_terrain/building/palette2.gbapal.lz"); -const u32 gBattleTerrainPalette_BuildingLeader[] = INCBIN_U32("graphics/battle_terrain/building/palette3.gbapal.lz"); -const u32 gBattleTerrainPalette_StadiumAqua[] = INCBIN_U32("graphics/battle_terrain/stadium/palette1.gbapal.lz"); -const u32 gBattleTerrainPalette_StadiumMagma[] = INCBIN_U32("graphics/battle_terrain/stadium/palette2.gbapal.lz"); -const u32 gBattleTerrainPalette_StadiumSidney[] = INCBIN_U32("graphics/battle_terrain/stadium/palette3.gbapal.lz"); -const u32 gBattleTerrainPalette_StadiumPhoebe[] = INCBIN_U32("graphics/battle_terrain/stadium/palette4.gbapal.lz"); -const u32 gBattleTerrainPalette_StadiumGlacia[] = INCBIN_U32("graphics/battle_terrain/stadium/palette5.gbapal.lz"); -const u32 gBattleTerrainPalette_StadiumDrake[] = INCBIN_U32("graphics/battle_terrain/stadium/palette6.gbapal.lz"); -const u32 gBattleTerrainPalette_StadiumWallace[] = INCBIN_U32("graphics/battle_terrain/stadium/palette7.gbapal.lz"); -const u32 gBattleTerrainPalette_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/palette.gbapal.lz"); - -const u32 gBattleTerrainAnimTiles_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/anim_tiles.4bpp.lz"); -const u32 gBattleTerrainAnimTilemap_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/anim_map.bin.lz"); - -const u32 gBattleTerrainAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/anim_tiles.4bpp.lz"); -const u32 gBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/anim_map.bin.lz"); - -const u32 gBattleTerrainAnimTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/anim_tiles.4bpp.lz"); -const u32 gBattleTerrainAnimTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/anim_map.bin.lz"); - -const u32 gBattleTerrainAnimTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/anim_tiles.4bpp.lz"); -const u32 gBattleTerrainAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/anim_map.bin.lz"); - -const u32 gBattleTerrainAnimTiles_Water[] = INCBIN_U32("graphics/battle_terrain/water/anim_tiles.4bpp.lz"); -const u32 gBattleTerrainAnimTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/water/anim_map.bin.lz"); - -const u32 gBattleTerrainAnimTiles_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/anim_tiles.4bpp.lz"); -const u32 gBattleTerrainAnimTilemap_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/anim_map.bin.lz"); - -const u32 gBattleTerrainAnimTiles_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/anim_tiles.4bpp.lz"); -const u32 gBattleTerrainAnimTilemap_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/anim_map.bin.lz"); - -const u32 gBattleTerrainAnimTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/anim_tiles.4bpp.lz"); -const u32 gBattleTerrainAnimTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/anim_map.bin.lz"); - -const u32 gBattleTerrainAnimTiles_Building[] = INCBIN_U32("graphics/battle_terrain/building/anim_tiles.4bpp.lz"); -const u32 gBattleTerrainAnimTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/building/anim_map.bin.lz"); - -const u32 gBattleTerrainAnimTiles_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/anim_tiles.4bpp.lz"); -const u32 gBattleTerrainAnimTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/anim_map.bin.lz"); diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 133afe3b0d..e6cb2c914a 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -237,7 +237,7 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u gBattle_BG3_X = 256; gBattle_BG3_Y = 0; - gBattleTerrain = BATTLE_TERRAIN_PLAIN; + gBattleEnvironment = BATTLE_TERRAIN_PLAIN; InitBattleBgsVideo(); LoadBattleTextboxAndBackground(); @@ -343,7 +343,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) gBattle_BG3_X = 256; gBattle_BG3_Y = 0; - gBattleTerrain = BATTLE_TERRAIN_PLAIN; + gBattleEnvironment = BATTLE_TERRAIN_PLAIN; InitBattleBgsVideo(); LoadBattleTextboxAndBackground(); diff --git a/src/graphics.c b/src/graphics.c index 2612022695..22d390fa72 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -942,7 +942,7 @@ const u32 gBattleVSFrame_Pal[] = INCBIN_U32("graphics/battle_transitions/vs_fram const u32 gVsLettersGfx[] = INCBIN_U32("graphics/battle_transitions/vs.4bpp.lz"); -#include "data/graphics/battle_terrain.h" +#include "data/graphics/battle_environment.h" // Battle Dome const u32 gDomeTourneyTree_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_tree.4bpp.lz"); diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index a334038d8d..f274077554 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -760,7 +760,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) break; case 6: ResetTempTileDataBuffers(); - DecompressAndCopyTileDataToVram(1, gBattleTerrainTiles_Building, 0, 0, 0); + DecompressAndCopyTileDataToVram(1, gBattleEnvironmentTiles_Building, 0, 0, 0); sPokeblockFeed->loadGfxState++; break; case 7: @@ -771,7 +771,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) } break; case 8: - LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + LoadCompressedPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); sPokeblockFeed->loadGfxState = 0; return TRUE; } From 367f6dc8fd6d844b7f6e3b782a2918d0dccb5e9b Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Sat, 13 Jul 2024 18:01:54 +0200 Subject: [PATCH 02/14] Address concerns --- data/battle_anim_scripts.s | 54 ++++++++++++++--------------- include/constants/battle.h | 20 +++++------ src/battle_anim_ground.c | 14 ++++---- src/battle_anim_normal.c | 32 +++++++++--------- src/battle_anim_utility_funcs.c | 20 +++++------ src/battle_bg.c | 20 +++++------ src/battle_intro.c | 32 +++++++++--------- src/battle_main.c | 2 +- src/battle_script_commands.c | 60 ++++++++++++++++----------------- src/battle_setup.c | 36 ++++++++++---------- src/evolution_scene.c | 4 +-- 11 files changed, 147 insertions(+), 147 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 5fe714b58a..489bffb207 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -2097,7 +2097,7 @@ Move_MEAN_LOOK: Move_ROCK_THROW: loadspritegfx ANIM_TAG_ROCKS - createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_TARGET, 2, 6, 1, 15, 1 + createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_TARGET, 2, 6, 1, 15, 1 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 0, 1, 0, 0 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 6 @@ -2119,7 +2119,7 @@ Move_ROCK_THROW: Move_ROCK_SLIDE: loadspritegfx ANIM_TAG_ROCKS monbg ANIM_DEF_PARTNER - createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1 + createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -5, 1, -5, 1 playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 @@ -2909,7 +2909,7 @@ Move_BARRAGE: createvisualtask AnimTask_BarrageBall, 3 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 24 - createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 40, 1 + createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 40, 1 createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 0, 4, 20, 1 createvisualtask AnimTask_ShakeMon, 3, ANIM_DEF_PARTNER, 0, 4, 20, 1 loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 2 @@ -3660,7 +3660,7 @@ Move_SUPERPOWER: createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER delay 20 - createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 180, 1 + createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 180, 1 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_EARTHQUAKE, 0 delay 40 createsprite gSuperpowerRockSpriteTemplate, ANIM_ATTACKER, 41, 200, 96, 1, 120 @@ -5011,7 +5011,7 @@ SnoreEffect: playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, ANIM_ATTACKER, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 7, 1 - createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 14, 0, 0 + createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 14, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -42, -38, 24, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, -42, 24, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, -38, 24, 0, 0 @@ -6871,7 +6871,7 @@ Move_ANCIENT_POWER: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 10, 1 + createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 10, 1 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 20, 32, -48, 50, 2 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, -38, 25, 5 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 32, 32, -28, 40, 3 @@ -7292,14 +7292,14 @@ Move_METAL_CLAW: playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 - createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 + createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 delay 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 2 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 - createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 + createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 waitforvisualfinish end @@ -8515,7 +8515,7 @@ HyperVoiceEffect: createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 6, 1 - createvisualtask AnimTask_ShakeBattleEnvironment, 2, 1, 0, 6, 1 + createvisualtask AnimTask_ShakeBattlePlatforms, 2, 1, 0, 6, 1 createvisualtask SoundTask_WaitForCry, 5 return @@ -8637,7 +8637,7 @@ Move_DRAGON_CLAW: createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 - createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 + createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER delay 2 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER @@ -8650,7 +8650,7 @@ Move_DRAGON_CLAW: createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 - createsprite gShakeMonOrEnvironmentSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 + createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER delay 2 createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER @@ -9111,7 +9111,7 @@ Move_BLAST_BURN: createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 60, -30, 24, 0, 0, 0 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, 3, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 12, 0, 20, 1 - createvisualtask AnimTask_ShakeBattleEnvironment, 2, 2, 0, 10, 1 + createvisualtask AnimTask_ShakeBattlePlatforms, 2, 2, 0, 10, 1 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 96, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 48, 24, 0, 0, 0 @@ -9125,32 +9125,32 @@ Move_BLAST_BURN: Move_ROCK_TOMB: loadspritegfx ANIM_TAG_X_SIGN loadspritegfx ANIM_TAG_ROCKS - createvisualtask AnimTask_ShakeBattleEnvironment, 2, 2, 0, 10, 1 + createvisualtask AnimTask_ShakeBattlePlatforms, 2, 2, 0, 10, 1 waitforvisualfinish createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, 20, 12, 64, 114, 0 delay 8 - createvisualtask AnimTask_ShakeBattleEnvironment, 2, 0, 2, 3, 1 + createvisualtask AnimTask_ShakeBattlePlatforms, 2, 0, 2, 3, 1 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, -20, 12, 64, 98, 0 delay 8 - createvisualtask AnimTask_ShakeBattleEnvironment, 2, 0, 2, 3, 1 + createvisualtask AnimTask_ShakeBattlePlatforms, 2, 0, 2, 3, 1 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 66, 3, 6, 64, 82, 0 delay 8 - createvisualtask AnimTask_ShakeBattleEnvironment, 2, 0, 2, 3, 1 + createvisualtask AnimTask_ShakeBattlePlatforms, 2, 0, 2, 3, 1 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, -3, 13, 64, 66, 0 delay 8 - createvisualtask AnimTask_ShakeBattleEnvironment, 2, 0, 2, 3, 1 + createvisualtask AnimTask_ShakeBattlePlatforms, 2, 0, 2, 3, 1 playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 24 playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET createsprite gRedXSpriteTemplate, ANIM_TARGET, 5, ANIM_TARGET, 50 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 20, 1 - createvisualtask AnimTask_ShakeBattleEnvironment, 2, 2, 0, 10, 1 + createvisualtask AnimTask_ShakeBattlePlatforms, 2, 2, 0, 10, 1 waitforvisualfinish end @@ -9636,15 +9636,15 @@ Move_SKY_UPPERCUT: Move_SECRET_POWER: createvisualtask AnimTask_GetBattleEnvironment, 5 - jumpargeq 0, BATTLE_TERRAIN_GRASS, Move_NEEDLE_ARM - jumpargeq 0, BATTLE_TERRAIN_LONG_GRASS, Move_MAGICAL_LEAF - jumpargeq 0, BATTLE_TERRAIN_SAND, Move_MUD_SHOT - jumpargeq 0, BATTLE_TERRAIN_UNDERWATER, Move_WATERFALL - jumpargeq 0, BATTLE_TERRAIN_WATER, Move_SURF - jumpargeq 0, BATTLE_TERRAIN_POND, Move_BUBBLE_BEAM - jumpargeq 0, BATTLE_TERRAIN_MOUNTAIN, Move_ROCK_THROW - jumpargeq 0, BATTLE_TERRAIN_CAVE, Move_BITE - jumpargeq 0, BATTLE_TERRAIN_BUILDING, Move_STRENGTH + jumpargeq 0, BATTLE_ENVIRONMENT_GRASS, Move_NEEDLE_ARM + jumpargeq 0, BATTLE_ENVIRONMENT_LONG_GRASS, Move_MAGICAL_LEAF + jumpargeq 0, BATTLE_ENVIRONMENT_SAND, Move_MUD_SHOT + jumpargeq 0, BATTLE_ENVIRONMENT_UNDERWATER, Move_WATERFALL + jumpargeq 0, BATTLE_ENVIRONMENT_WATER, Move_SURF + jumpargeq 0, BATTLE_ENVIRONMENT_POND, Move_BUBBLE_BEAM + jumpargeq 0, BATTLE_ENVIRONMENT_MOUNTAIN, Move_ROCK_THROW + jumpargeq 0, BATTLE_ENVIRONMENT_CAVE, Move_BITE + jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, Move_STRENGTH goto Move_SLAM Move_TWISTER: diff --git a/include/constants/battle.h b/include/constants/battle.h index a64dd347bc..e00008de71 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -297,16 +297,16 @@ #define MOVE_EFFECT_CERTAIN (1 << 7) // 128 // Battle environment defines for gBattleEnvironment. -#define BATTLE_TERRAIN_GRASS 0 -#define BATTLE_TERRAIN_LONG_GRASS 1 -#define BATTLE_TERRAIN_SAND 2 -#define BATTLE_TERRAIN_UNDERWATER 3 -#define BATTLE_TERRAIN_WATER 4 -#define BATTLE_TERRAIN_POND 5 -#define BATTLE_TERRAIN_MOUNTAIN 6 -#define BATTLE_TERRAIN_CAVE 7 -#define BATTLE_TERRAIN_BUILDING 8 -#define BATTLE_TERRAIN_PLAIN 9 +#define BATTLE_ENVIRONMENT_GRASS 0 +#define BATTLE_ENVIRONMENT_LONG_GRASS 1 +#define BATTLE_ENVIRONMENT_SAND 2 +#define BATTLE_ENVIRONMENT_UNDERWATER 3 +#define BATTLE_ENVIRONMENT_WATER 4 +#define BATTLE_ENVIRONMENT_POND 5 +#define BATTLE_ENVIRONMENT_MOUNTAIN 6 +#define BATTLE_ENVIRONMENT_CAVE 7 +#define BATTLE_ENVIRONMENT_BUILDING 8 +#define BATTLE_ENVIRONMENT_PLAIN 9 #define B_WAIT_TIME_LONG 64 #define B_WAIT_TIME_MED 48 diff --git a/src/battle_anim_ground.c b/src/battle_anim_ground.c index d6234e5f96..b3591544ec 100644 --- a/src/battle_anim_ground.c +++ b/src/battle_anim_ground.c @@ -22,7 +22,7 @@ static void AnimTask_DigEndBounceMovementSetInvisible(u8); static void AnimTask_DigSetVisibleUnderground(u8); static void AnimTask_DigRiseUpFromHole(u8); static void SetDigScanlineEffect(u8, s16, s16); -static void AnimTask_ShakeEnvironment(u8); +static void AnimTask_ShakePlatforms(u8); static void AnimTask_ShakeBattlers(u8); static void SetBattlersXOffsetForShake(struct Task *); static void WaitForFissureCompletion(u8); @@ -564,12 +564,12 @@ static void AnimDigDirtMound(struct Sprite *sprite) #define tMaxTime data[3] #define tbattlerSpriteIds(i) data[9 + (i)] #define tNumBattlers data[13] // AnimTask_ShakeBattlers -#define tInitialX data[13] // AnimTask_ShakeEnvironment +#define tInitialX data[13] // AnimTask_ShakePlatforms #define tHorizOffset data[14] #define tInitHorizOffset data[15] -// Shakes battler(s) or the battle environment back and forth horizontally. Used by e.g. Earthquake, Eruption -// arg0: What to shake. 0-3 for any specific battler, MAX_BATTLERS_COUNT for all battlers, MAX_BATTLERS_COUNT + 1 for the environment +// Shakes battler(s) or the battle platforms back and forth horizontally. Used by e.g. Earthquake, Eruption +// arg0: What to shake. 0-3 for any specific battler, MAX_BATTLERS_COUNT for all battlers, MAX_BATTLERS_COUNT + 1 for the platforms // arg1: Shake intensity, used to calculate horizontal pixel offset (if 0, use move power instead) // arg2: Length of time to shake for void AnimTask_HorizontalShake(u8 taskId) @@ -585,9 +585,9 @@ void AnimTask_HorizontalShake(u8 taskId) task->tMaxTime = gBattleAnimArgs[2]; switch (gBattleAnimArgs[0]) { - case MAX_BATTLERS_COUNT + 1: // Shake environment + case MAX_BATTLERS_COUNT + 1: // Shake platforms task->tInitialX = gBattle_BG3_X; - task->func = AnimTask_ShakeEnvironment; + task->func = AnimTask_ShakePlatforms; break; case MAX_BATTLERS_COUNT: // Shake all battlers task->tNumBattlers = 0; @@ -616,7 +616,7 @@ void AnimTask_HorizontalShake(u8 taskId) } } -static void AnimTask_ShakeEnvironment(u8 taskId) +static void AnimTask_ShakePlatforms(u8 taskId) { struct Task *task = &gTasks[taskId]; diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c index 72d8a0745d..fa6bd69343 100644 --- a/src/battle_anim_normal.c +++ b/src/battle_anim_normal.c @@ -13,9 +13,9 @@ static void AnimComplexPaletteBlend(struct Sprite *); static void AnimComplexPaletteBlend_Step1(struct Sprite *); static void AnimComplexPaletteBlend_Step2(struct Sprite *); static void AnimCirclingSparkle(struct Sprite *); -static void AnimShakeMonOrBattleEnvironment(struct Sprite *); -static void AnimShakeMonOrBattleEnvironment_Step(struct Sprite *); -static void AnimShakeMonOrBattleEnvironment_UpdateCoordOffsetEnabled(void); +static void AnimShakeMonOrBattlePlatforms(struct Sprite *); +static void AnimShakeMonOrBattlePlatforms_Step(struct Sprite *); +static void AnimShakeMonOrBattlePlatforms_UpdateCoordOffsetEnabled(void); static void AnimHitSplatBasic(struct Sprite *); static void AnimHitSplatPersistent(struct Sprite *); static void AnimHitSplatHandleInvert(struct Sprite *); @@ -33,7 +33,7 @@ static void BlendColorCycleByTag(u8, u8, u8); static void AnimTask_BlendColorCycleByTagLoop(u8); static void AnimTask_FlashAnimTagWithColor_Step1(u8); static void AnimTask_FlashAnimTagWithColor_Step2(u8); -static void AnimTask_ShakeBattleEnvironment_Step(u8); +static void AnimTask_ShakeBattlePlatforms_Step(u8); static const union AnimCmd sAnim_ConfusionDuck_0[] = { @@ -119,7 +119,7 @@ static const struct SpriteTemplate sCirclingSparkleSpriteTemplate = .callback = AnimCirclingSparkle, }; -const struct SpriteTemplate gShakeMonOrEnvironmentSpriteTemplate = +const struct SpriteTemplate gShakeMonOrPlatformSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -127,7 +127,7 @@ const struct SpriteTemplate gShakeMonOrEnvironmentSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimShakeMonOrBattleEnvironment, + .callback = AnimShakeMonOrBattlePlatforms, }; static const union AffineAnimCmd sAffineAnim_HitSplat_0[] = @@ -795,7 +795,7 @@ void AnimTask_TintPalettes(u8 taskId) #undef tColorG #undef tColorB -static void AnimShakeMonOrBattleEnvironment(struct Sprite *sprite) +static void AnimShakeMonOrBattlePlatforms(struct Sprite *sprite) { u16 var0; @@ -825,12 +825,12 @@ static void AnimShakeMonOrBattleEnvironment(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[3]; var0 = sprite->data[5] - 2; if (var0 < 2) - AnimShakeMonOrBattleEnvironment_UpdateCoordOffsetEnabled(); + AnimShakeMonOrBattlePlatforms_UpdateCoordOffsetEnabled(); - sprite->callback = AnimShakeMonOrBattleEnvironment_Step; + sprite->callback = AnimShakeMonOrBattlePlatforms_Step; } -static void AnimShakeMonOrBattleEnvironment_Step(struct Sprite *sprite) +static void AnimShakeMonOrBattlePlatforms_Step(struct Sprite *sprite) { u8 i; u16 var0; @@ -863,7 +863,7 @@ static void AnimShakeMonOrBattleEnvironment_Step(struct Sprite *sprite) } } -static void AnimShakeMonOrBattleEnvironment_UpdateCoordOffsetEnabled(void) +static void AnimShakeMonOrBattlePlatforms_UpdateCoordOffsetEnabled(void) { gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = FALSE; gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = FALSE; @@ -882,19 +882,19 @@ static void AnimShakeMonOrBattleEnvironment_UpdateCoordOffsetEnabled(void) } } -// Task data for AnimTask_ShakeBattleEnvironment +// Task data for AnimTask_ShakeBattlePlatforms #define tXOffset data[0] #define tYOffset data[1] #define tNumShakes data[2] #define tTimer data[3] #define tShakeDelay data[8] -// Can shake battle environment back and forth on the X or down and back to original pos on Y (cant shake up from orig pos) +// Can shake battle platforms back and forth on the X or down and back to original pos on Y (cant shake up from orig pos) // arg0: x offset of shake // arg1: y offset of shake // arg2: number of shakes // arg3: time between shakes -void AnimTask_ShakeBattleEnvironment(u8 taskId) +void AnimTask_ShakeBattlePlatforms(u8 taskId) { gTasks[taskId].tXOffset = gBattleAnimArgs[0]; gTasks[taskId].tYOffset = gBattleAnimArgs[1]; @@ -903,11 +903,11 @@ void AnimTask_ShakeBattleEnvironment(u8 taskId) gTasks[taskId].tShakeDelay = gBattleAnimArgs[3]; gBattle_BG3_X = gBattleAnimArgs[0]; gBattle_BG3_Y = gBattleAnimArgs[1]; - gTasks[taskId].func = AnimTask_ShakeBattleEnvironment_Step; + gTasks[taskId].func = AnimTask_ShakeBattlePlatforms_Step; gTasks[taskId].func(taskId); } -static void AnimTask_ShakeBattleEnvironment_Step(u8 taskId) +static void AnimTask_ShakeBattlePlatforms_Step(u8 taskId) { if (gTasks[taskId].tTimer == 0) { diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 5b50c43500..b76c636f56 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -111,34 +111,34 @@ void AnimTask_SetCamouflageBlend(u8 taskId) u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); switch (gBattleEnvironment) { - case BATTLE_TERRAIN_GRASS: + case BATTLE_ENVIRONMENT_GRASS: gBattleAnimArgs[4] = RGB(12, 24, 2); break; - case BATTLE_TERRAIN_LONG_GRASS: + case BATTLE_ENVIRONMENT_LONG_GRASS: gBattleAnimArgs[4] = RGB(0, 15, 2); break; - case BATTLE_TERRAIN_SAND: + case BATTLE_ENVIRONMENT_SAND: gBattleAnimArgs[4] = RGB(30, 24, 11); break; - case BATTLE_TERRAIN_UNDERWATER: + case BATTLE_ENVIRONMENT_UNDERWATER: gBattleAnimArgs[4] = RGB(0, 0, 18); break; - case BATTLE_TERRAIN_WATER: + case BATTLE_ENVIRONMENT_WATER: gBattleAnimArgs[4] = RGB(11, 22, 31); break; - case BATTLE_TERRAIN_POND: + case BATTLE_ENVIRONMENT_POND: gBattleAnimArgs[4] = RGB(11, 22, 31); break; - case BATTLE_TERRAIN_MOUNTAIN: + case BATTLE_ENVIRONMENT_MOUNTAIN: gBattleAnimArgs[4] = RGB(22, 16, 10); break; - case BATTLE_TERRAIN_CAVE: + case BATTLE_ENVIRONMENT_CAVE: gBattleAnimArgs[4] = RGB(14, 9, 3); break; - case BATTLE_TERRAIN_BUILDING: + case BATTLE_ENVIRONMENT_BUILDING: gBattleAnimArgs[4] = RGB_WHITE; break; - case BATTLE_TERRAIN_PLAIN: + case BATTLE_ENVIRONMENT_PLAIN: gBattleAnimArgs[4] = RGB_WHITE; break; } diff --git a/src/battle_bg.c b/src/battle_bg.c index 183e8f3b90..c32f5ec623 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -601,7 +601,7 @@ const struct WindowTemplate * const gBattleWindowTemplates[] = static const struct BattleBackground sBattleEnvironmentTable[] = { - [BATTLE_TERRAIN_GRASS] = + [BATTLE_ENVIRONMENT_GRASS] = { .tileset = gBattleEnvironmentTiles_TallGrass, .tilemap = gBattleEnvironmentTilemap_TallGrass, @@ -610,7 +610,7 @@ static const struct BattleBackground sBattleEnvironmentTable[] = .palette = gBattleEnvironmentPalette_TallGrass, }, - [BATTLE_TERRAIN_LONG_GRASS] = + [BATTLE_ENVIRONMENT_LONG_GRASS] = { .tileset = gBattleEnvironmentTiles_LongGrass, .tilemap = gBattleEnvironmentTilemap_LongGrass, @@ -619,7 +619,7 @@ static const struct BattleBackground sBattleEnvironmentTable[] = .palette = gBattleEnvironmentPalette_LongGrass, }, - [BATTLE_TERRAIN_SAND] = + [BATTLE_ENVIRONMENT_SAND] = { .tileset = gBattleEnvironmentTiles_Sand, .tilemap = gBattleEnvironmentTilemap_Sand, @@ -628,7 +628,7 @@ static const struct BattleBackground sBattleEnvironmentTable[] = .palette = gBattleEnvironmentPalette_Sand, }, - [BATTLE_TERRAIN_UNDERWATER] = + [BATTLE_ENVIRONMENT_UNDERWATER] = { .tileset = gBattleEnvironmentTiles_Underwater, .tilemap = gBattleEnvironmentTilemap_Underwater, @@ -637,7 +637,7 @@ static const struct BattleBackground sBattleEnvironmentTable[] = .palette = gBattleEnvironmentPalette_Underwater, }, - [BATTLE_TERRAIN_WATER] = + [BATTLE_ENVIRONMENT_WATER] = { .tileset = gBattleEnvironmentTiles_Water, .tilemap = gBattleEnvironmentTilemap_Water, @@ -646,7 +646,7 @@ static const struct BattleBackground sBattleEnvironmentTable[] = .palette = gBattleEnvironmentPalette_Water, }, - [BATTLE_TERRAIN_POND] = + [BATTLE_ENVIRONMENT_POND] = { .tileset = gBattleEnvironmentTiles_PondWater, .tilemap = gBattleEnvironmentTilemap_PondWater, @@ -655,7 +655,7 @@ static const struct BattleBackground sBattleEnvironmentTable[] = .palette = gBattleEnvironmentPalette_PondWater, }, - [BATTLE_TERRAIN_MOUNTAIN] = + [BATTLE_ENVIRONMENT_MOUNTAIN] = { .tileset = gBattleEnvironmentTiles_Rock, .tilemap = gBattleEnvironmentTilemap_Rock, @@ -664,7 +664,7 @@ static const struct BattleBackground sBattleEnvironmentTable[] = .palette = gBattleEnvironmentPalette_Rock, }, - [BATTLE_TERRAIN_CAVE] = + [BATTLE_ENVIRONMENT_CAVE] = { .tileset = gBattleEnvironmentTiles_Cave, .tilemap = gBattleEnvironmentTilemap_Cave, @@ -673,7 +673,7 @@ static const struct BattleBackground sBattleEnvironmentTable[] = .palette = gBattleEnvironmentPalette_Cave, }, - [BATTLE_TERRAIN_BUILDING] = + [BATTLE_ENVIRONMENT_BUILDING] = { .tileset = gBattleEnvironmentTiles_Building, .tilemap = gBattleEnvironmentTilemap_Building, @@ -682,7 +682,7 @@ static const struct BattleBackground sBattleEnvironmentTable[] = .palette = gBattleEnvironmentPalette_Building, }, - [BATTLE_TERRAIN_PLAIN] = + [BATTLE_ENVIRONMENT_PLAIN] = { .tileset = gBattleEnvironmentTiles_Building, .tilemap = gBattleEnvironmentTilemap_Building, diff --git a/src/battle_intro.c b/src/battle_intro.c index d31d3da398..0a0226c608 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -24,16 +24,16 @@ static void BattleIntroSlidePartner(u8); static const TaskFunc sBattleIntroSlideFuncs[] = { - [BATTLE_TERRAIN_GRASS] = BattleIntroSlide1, - [BATTLE_TERRAIN_LONG_GRASS] = BattleIntroSlide1, - [BATTLE_TERRAIN_SAND] = BattleIntroSlide2, - [BATTLE_TERRAIN_UNDERWATER] = BattleIntroSlide2, - [BATTLE_TERRAIN_WATER] = BattleIntroSlide2, - [BATTLE_TERRAIN_POND] = BattleIntroSlide1, - [BATTLE_TERRAIN_MOUNTAIN] = BattleIntroSlide1, - [BATTLE_TERRAIN_CAVE] = BattleIntroSlide1, - [BATTLE_TERRAIN_BUILDING] = BattleIntroSlide3, - [BATTLE_TERRAIN_PLAIN] = BattleIntroSlide3, + [BATTLE_ENVIRONMENT_GRASS] = BattleIntroSlide1, + [BATTLE_ENVIRONMENT_LONG_GRASS] = BattleIntroSlide1, + [BATTLE_ENVIRONMENT_SAND] = BattleIntroSlide2, + [BATTLE_ENVIRONMENT_UNDERWATER] = BattleIntroSlide2, + [BATTLE_ENVIRONMENT_WATER] = BattleIntroSlide2, + [BATTLE_ENVIRONMENT_POND] = BattleIntroSlide1, + [BATTLE_ENVIRONMENT_MOUNTAIN] = BattleIntroSlide1, + [BATTLE_ENVIRONMENT_CAVE] = BattleIntroSlide1, + [BATTLE_ENVIRONMENT_BUILDING] = BattleIntroSlide3, + [BATTLE_ENVIRONMENT_PLAIN] = BattleIntroSlide3, }; void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value) @@ -120,7 +120,7 @@ void HandleIntroSlide(u8 environment) } else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) { - environment = BATTLE_TERRAIN_UNDERWATER; + environment = BATTLE_ENVIRONMENT_UNDERWATER; taskId = CreateTask(BattleIntroSlide2, 0); } else @@ -194,7 +194,7 @@ static void BattleIntroSlide1(u8 taskId) } else { - if (gTasks[taskId].tEnvironment == BATTLE_TERRAIN_LONG_GRASS) + if (gTasks[taskId].tEnvironment == BATTLE_ENVIRONMENT_LONG_GRASS) { if (gBattle_BG1_Y != (u16)(-80)) gBattle_BG1_Y -= 2; @@ -242,16 +242,16 @@ static void BattleIntroSlide2(u8 taskId) switch (gTasks[taskId].tEnvironment) { - case BATTLE_TERRAIN_SAND: - case BATTLE_TERRAIN_WATER: + case BATTLE_ENVIRONMENT_SAND: + case BATTLE_ENVIRONMENT_WATER: gBattle_BG1_X += 8; break; - case BATTLE_TERRAIN_UNDERWATER: + case BATTLE_ENVIRONMENT_UNDERWATER: gBattle_BG1_X += 6; break; } - if (gTasks[taskId].tEnvironment == BATTLE_TERRAIN_WATER) + if (gTasks[taskId].tEnvironment == BATTLE_ENVIRONMENT_WATER) { gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8; if (gTasks[taskId].data[6] < 180) diff --git a/src/battle_main.c b/src/battle_main.c index f964bbd458..b216316d4e 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -671,7 +671,7 @@ static void CB2_InitBattleInternal(void) gBattleEnvironment = BattleSetup_GetEnvironmentId(); if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) - gBattleEnvironment = BATTLE_TERRAIN_BUILDING; + gBattleEnvironment = BATTLE_ENVIRONMENT_BUILDING; InitBattleBgsVideo(); LoadBattleTextboxAndBackground(); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 976415c8b4..21b0af1c17 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -532,7 +532,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_trymemento, //0xC9 Cmd_setforcedtarget, //0xCA Cmd_setcharge, //0xCB - Cmd_callenvironmentattack, //0xCC + Cmd_callenvironmentattack, //0xCC Cmd_cureifburnedparalysedorpoisoned, //0xCD Cmd_settorment, //0xCE Cmd_jumpifnodamage, //0xCF @@ -563,7 +563,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_settypebasedhalvers, //0xE8 Cmd_setweatherballtype, //0xE9 Cmd_tryrecycleitem, //0xEA - Cmd_settypetoenvironment, //0xEB + Cmd_settypetoenvironment, //0xEB Cmd_pursuitdoubles, //0xEC Cmd_snatchsetbattlers, //0xED Cmd_removelightscreenreflect, //0xEE @@ -758,16 +758,16 @@ static const u8 sFlailHpScaleToPowerTable[] = static const u16 sNaturePowerMoves[] = { - [BATTLE_TERRAIN_GRASS] = MOVE_STUN_SPORE, - [BATTLE_TERRAIN_LONG_GRASS] = MOVE_RAZOR_LEAF, - [BATTLE_TERRAIN_SAND] = MOVE_EARTHQUAKE, - [BATTLE_TERRAIN_UNDERWATER] = MOVE_HYDRO_PUMP, - [BATTLE_TERRAIN_WATER] = MOVE_SURF, - [BATTLE_TERRAIN_POND] = MOVE_BUBBLE_BEAM, - [BATTLE_TERRAIN_MOUNTAIN] = MOVE_ROCK_SLIDE, - [BATTLE_TERRAIN_CAVE] = MOVE_SHADOW_BALL, - [BATTLE_TERRAIN_BUILDING] = MOVE_SWIFT, - [BATTLE_TERRAIN_PLAIN] = MOVE_SWIFT + [BATTLE_ENVIRONMENT_GRASS] = MOVE_STUN_SPORE, + [BATTLE_ENVIRONMENT_LONG_GRASS] = MOVE_RAZOR_LEAF, + [BATTLE_ENVIRONMENT_SAND] = MOVE_EARTHQUAKE, + [BATTLE_ENVIRONMENT_UNDERWATER] = MOVE_HYDRO_PUMP, + [BATTLE_ENVIRONMENT_WATER] = MOVE_SURF, + [BATTLE_ENVIRONMENT_POND] = MOVE_BUBBLE_BEAM, + [BATTLE_ENVIRONMENT_MOUNTAIN] = MOVE_ROCK_SLIDE, + [BATTLE_ENVIRONMENT_CAVE] = MOVE_SHADOW_BALL, + [BATTLE_ENVIRONMENT_BUILDING] = MOVE_SWIFT, + [BATTLE_ENVIRONMENT_PLAIN] = MOVE_SWIFT }; // format: min. weight (hectograms), base power @@ -825,16 +825,16 @@ static const u8 sPickupProbabilities[] = static const u8 sEnvironmentToType[] = { - [BATTLE_TERRAIN_GRASS] = TYPE_GRASS, - [BATTLE_TERRAIN_LONG_GRASS] = TYPE_GRASS, - [BATTLE_TERRAIN_SAND] = TYPE_GROUND, - [BATTLE_TERRAIN_UNDERWATER] = TYPE_WATER, - [BATTLE_TERRAIN_WATER] = TYPE_WATER, - [BATTLE_TERRAIN_POND] = TYPE_WATER, - [BATTLE_TERRAIN_MOUNTAIN] = TYPE_ROCK, - [BATTLE_TERRAIN_CAVE] = TYPE_ROCK, - [BATTLE_TERRAIN_BUILDING] = TYPE_NORMAL, - [BATTLE_TERRAIN_PLAIN] = TYPE_NORMAL, + [BATTLE_ENVIRONMENT_GRASS] = TYPE_GRASS, + [BATTLE_ENVIRONMENT_LONG_GRASS] = TYPE_GRASS, + [BATTLE_ENVIRONMENT_SAND] = TYPE_GROUND, + [BATTLE_ENVIRONMENT_UNDERWATER] = TYPE_WATER, + [BATTLE_ENVIRONMENT_WATER] = TYPE_WATER, + [BATTLE_ENVIRONMENT_POND] = TYPE_WATER, + [BATTLE_ENVIRONMENT_MOUNTAIN] = TYPE_ROCK, + [BATTLE_ENVIRONMENT_CAVE] = TYPE_ROCK, + [BATTLE_ENVIRONMENT_BUILDING] = TYPE_NORMAL, + [BATTLE_ENVIRONMENT_PLAIN] = TYPE_NORMAL, }; // - ITEM_ULTRA_BALL skips Master Ball and ITEM_NONE @@ -9547,28 +9547,28 @@ static void Cmd_getsecretpowereffect(void) { switch (gBattleEnvironment) { - case BATTLE_TERRAIN_GRASS: + case BATTLE_ENVIRONMENT_GRASS: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_POISON; break; - case BATTLE_TERRAIN_LONG_GRASS: + case BATTLE_ENVIRONMENT_LONG_GRASS: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SLEEP; break; - case BATTLE_TERRAIN_SAND: + case BATTLE_ENVIRONMENT_SAND: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_ACC_MINUS_1; break; - case BATTLE_TERRAIN_UNDERWATER: + case BATTLE_ENVIRONMENT_UNDERWATER: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_DEF_MINUS_1; break; - case BATTLE_TERRAIN_WATER: + case BATTLE_ENVIRONMENT_WATER: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_ATK_MINUS_1; break; - case BATTLE_TERRAIN_POND: + case BATTLE_ENVIRONMENT_POND: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SPD_MINUS_1; break; - case BATTLE_TERRAIN_MOUNTAIN: + case BATTLE_ENVIRONMENT_MOUNTAIN: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION; break; - case BATTLE_TERRAIN_CAVE: + case BATTLE_ENVIRONMENT_CAVE: gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH; break; default: diff --git a/src/battle_setup.c b/src/battle_setup.c index 63a3e9b585..77444d5f28 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -641,11 +641,11 @@ u8 BattleSetup_GetEnvironmentId(void) tileBehavior = MapGridGetMetatileBehaviorAt(x, y); if (MetatileBehavior_IsTallGrass(tileBehavior)) - return BATTLE_TERRAIN_GRASS; + return BATTLE_ENVIRONMENT_GRASS; if (MetatileBehavior_IsLongGrass(tileBehavior)) - return BATTLE_TERRAIN_LONG_GRASS; + return BATTLE_ENVIRONMENT_LONG_GRASS; if (MetatileBehavior_IsSandOrDeepSand(tileBehavior)) - return BATTLE_TERRAIN_SAND; + return BATTLE_ENVIRONMENT_SAND; switch (gMapHeader.mapType) { @@ -655,41 +655,41 @@ u8 BattleSetup_GetEnvironmentId(void) break; case MAP_TYPE_UNDERGROUND: if (MetatileBehavior_IsIndoorEncounter(tileBehavior)) - return BATTLE_TERRAIN_BUILDING; + return BATTLE_ENVIRONMENT_BUILDING; if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return BATTLE_TERRAIN_POND; - return BATTLE_TERRAIN_CAVE; + return BATTLE_ENVIRONMENT_POND; + return BATTLE_ENVIRONMENT_CAVE; case MAP_TYPE_INDOOR: case MAP_TYPE_SECRET_BASE: - return BATTLE_TERRAIN_BUILDING; + return BATTLE_ENVIRONMENT_BUILDING; case MAP_TYPE_UNDERWATER: - return BATTLE_TERRAIN_UNDERWATER; + return BATTLE_ENVIRONMENT_UNDERWATER; case MAP_TYPE_OCEAN_ROUTE: if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return BATTLE_TERRAIN_WATER; - return BATTLE_TERRAIN_PLAIN; + return BATTLE_ENVIRONMENT_WATER; + return BATTLE_ENVIRONMENT_PLAIN; } if (MetatileBehavior_IsDeepOrOceanWater(tileBehavior)) - return BATTLE_TERRAIN_WATER; + return BATTLE_ENVIRONMENT_WATER; if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) - return BATTLE_TERRAIN_POND; + return BATTLE_ENVIRONMENT_POND; if (MetatileBehavior_IsMountain(tileBehavior)) - return BATTLE_TERRAIN_MOUNTAIN; + return BATTLE_ENVIRONMENT_MOUNTAIN; if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) { // Is BRIDGE_TYPE_POND_*? if (MetatileBehavior_GetBridgeType(tileBehavior) != BRIDGE_TYPE_OCEAN) - return BATTLE_TERRAIN_POND; + return BATTLE_ENVIRONMENT_POND; if (MetatileBehavior_IsBridgeOverWater(tileBehavior) == TRUE) - return BATTLE_TERRAIN_WATER; + return BATTLE_ENVIRONMENT_WATER; } if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE113) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE113)) - return BATTLE_TERRAIN_SAND; + return BATTLE_ENVIRONMENT_SAND; if (GetSavedWeather() == WEATHER_SANDSTORM) - return BATTLE_TERRAIN_SAND; + return BATTLE_ENVIRONMENT_SAND; - return BATTLE_TERRAIN_PLAIN; + return BATTLE_ENVIRONMENT_PLAIN; } static u8 GetBattleTransitionTypeByMap(void) diff --git a/src/evolution_scene.c b/src/evolution_scene.c index e6cb2c914a..96249941e1 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -237,7 +237,7 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u gBattle_BG3_X = 256; gBattle_BG3_Y = 0; - gBattleEnvironment = BATTLE_TERRAIN_PLAIN; + gBattleEnvironment = BATTLE_ENVIRONMENT_PLAIN; InitBattleBgsVideo(); LoadBattleTextboxAndBackground(); @@ -343,7 +343,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) gBattle_BG3_X = 256; gBattle_BG3_Y = 0; - gBattleEnvironment = BATTLE_TERRAIN_PLAIN; + gBattleEnvironment = BATTLE_ENVIRONMENT_PLAIN; InitBattleBgsVideo(); LoadBattleTextboxAndBackground(); From f11bddf8548c2f47e2881f6211a24bc427a708b6 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 14 Apr 2025 02:12:45 -0400 Subject: [PATCH 03/14] Fixes for Mirage Tower graphics (#2120) * Add documentation for CreateCeilingCrumbleSprites * Combine mirage tower graphics * Add comment about mirage tower / player palette --- graphics/misc/mirage_tower.png | Bin 904 -> 935 bytes graphics_file_rules.mk | 3 +++ src/mirage_tower.c | 37 +++++++++++++++++++-------------- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/graphics/misc/mirage_tower.png b/graphics/misc/mirage_tower.png index c851953d2172e58c46a094437167f4e60ab5f26e..36890686f1fc679a536f214a90de530a57fbe92e 100644 GIT binary patch delta 866 zcmV-o1D*Vc2d4*+7Yb+u0{{R3Me%Mfks&{SGD$>1R7i=P)jxNeFc1K67CT=ri@XH$ zyx8q)v0ta!L$fyhBJPkqT|~M;2M#v7LnJn3snKWX-3jq0hM~Rpj0ryu-AOVDf-YvF ziQ8ZhA_N5(1*Bqd9demSj64D8$qewC1N=buv@q|3OgoU{Fw2LKc$mWk#F8qdg6IQ( zAY0%Jx|_2kw2>>w)t?{ z!NU%cao9qh_s3`fle3Lkp1qY+xSe5=VKa24Aqvw!x1$SC;~}6ovv-`oZUN z2jxXWQE06c=<))=*+Gm@Sz80pk>Hho;0tBcc*y`n2$j!pU_DrZ%t3r{V6B6)g|gNc zDDbLLQ0nRuWGe?a=mko=o4;y&)Q<+Vj;ztT`NFE?iXngQ!wYuqK_)b|)-*c)ff>JC zRZLHGt_1BTX` z>!pK<0+}GpXnEXTaJ#`82eG&Y00I!>uyy-v1oSm%edekn-k+(ZVxv9?cRx=(f@p!Z zQwK&P;A>`H({`d2j|{K6v4IwUxUJ__+r@@pu_oB8Exx%CV$5G`sGP-`N+JL_Q-jtF zAqs#82QY%07d(Y{?yCZ-f3c>uqa#kcFLx4XJ$L{<;(F)`e;+#pKY%+TSc00txD669 zSc`qkY;FAHy6HvW28F!>YH*G#$n|eHxF2pX-YTFS8@n+wI_Gj@EEn5<01x;{2e5Nv zyf*O4Ko8zD;nuvGfXd!>;2!0`;tGyt;0mrhy#L1W)or-qoQ(pOo5jls*rxvsN=$%u zzmE}6K=pf|^9J;ZruE&!!^7cl_{=W=4?Gu#J;npi48ke9_s~rVL3qBIg5ci4+P#w& z4n%PdZW=fqACJf5cLu>t+kMaQ;gQ1uz9i{?%bxy-l~P4fWDHB*)hHOs?UI7dTeu2@ s-&62u0>%>%#uI|&e*Ahcb$v4a0&$eUtkL6cy8r+H07*qoM6N<$fh($ delta 835 zcmV-J1HAmF2Z#rd7Ybkm0{{R3siN#dks&{S6G=otR7i=X)xCDwFcbh_7Rc*$5lg@) z3$&*-oJ@tGT}xkt4%yR1PB*)Quf0KrNZy>Kww|H)$MO%5Ha)%PV2nS@x{|KNXe2RK zO}rTmLe0PcMh3AOT!&Og8Y7JWdNKyQCV(I4o;FMSpyLkoWf-SJi2SoAZ~`|Cgqkvc zrG)4Mpc4<=g6`&48d^xx0Yopgi2l0;Cv?){CE)aBY&@VAvcV)qrUf&ck_Qi~bU5vB zY+w!15T1PtNYj2FZHo}1s0XH-#9vVgEkOFCfk~KZ?B#(5_=Lm60m@2!z`3e2EGY~F zCdc*o&JFY$^2$P%S!)c~yn<(a!w@2W6wcKEbVNuPK2eJrFO>iRLP0Hlw%|Ot9)y*E za{_tdA+K!(8D1?71GUUW+9Io2q5c&fwF;ng0dzk0)p!SIF12-=vih1 z52ZD+7D)B|+y+WOmG*G0qXwc_^#b2|0k{x<1A7tzE1bJIK3 zPzC~HS{|tdsRmjy+Gav^4l3c7K%Ii(7hxrJ)&~IT{2Y8%0pArnN;crm8&GmTPd$Qa zfy$`^DlmdcP31%@9+bT5SYQQzzc|ji>5^c&AXqN&0zruFr%Os_x}cPnbd&+QatML* z11uE}Uhx#-c{@PLf4ZQRqhsu#zaD)UtOs|%N539x1mA%i5olvt*9@hUN5D`Jj9p#& z$(8913MVV*PQlR%PH+V||0Rcv2XJEwR|cqJL+K--bI6Vfg0(md@PMCx7}M=wEqy!> zfF8VTLh9;OAdmWo7Vo}te0c@TFTo)ht>Q~CJN^NTItP^g7#6Z8O$8pYO0F8% z@9*~e{WpPI`Y+lryuafv5ZK7y+J=6F#+WS25;||LqhJ`Rl8nyj+HYUuz^wFnr<4Ey N002ovPDHLkV1hC+c>@3d diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index a87344e93c..05dfe5a2d5 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -315,6 +315,9 @@ graphics/pokenav/region_map/map.8bpp: %.8bpp: %.png $(MISCGFXDIR)/japanese_hof.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 29 -Wnum_tiles +$(MISCGFXDIR)/mirage_tower.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 73 -Wnum_tiles + $(BATINTGFXDIR)/textbox.gbapal: $(BATINTGFXDIR)/textbox_0.gbapal \ $(BATINTGFXDIR)/textbox_1.gbapal @cat $^ >$@ diff --git a/src/mirage_tower.c b/src/mirage_tower.c index b1e2e5003b..10871b5853 100644 --- a/src/mirage_tower.c +++ b/src/mirage_tower.c @@ -56,12 +56,9 @@ struct FallAnim_Fossil #define TAG_CEILING_CRUMBLE 4000 -#define MIRAGE_TOWER_GFX_LENGTH (sizeof(sBlankTile_Gfx) + sizeof(sMirageTower_Gfx)) +#define MIRAGE_TOWER_GFX_LENGTH (sizeof(sMirageTower_Gfx)) #define FOSSIL_DISINTEGRATE_LENGTH 0x100 -static const struct SpriteSheet sCeilingCrumbleSpriteSheets[]; -static const s16 sCeilingCrumblePositions[][3]; - static void PlayerDescendMirageTower(u8); static void DoScreenShake(u8); static void IncrementCeilingCrumbleFinishedCount(void); @@ -75,8 +72,7 @@ static void Task_FossilFallAndSink(u8); static void SpriteCB_FallingFossil(struct Sprite *); static void UpdateDisintegrationEffect(u8 *, u16, u8, u8, u8); -static const u8 ALIGNED(2) sBlankTile_Gfx[32] = {0}; -static const u8 sMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp"); +static const ALIGNED(2) u8 sMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp"); static const u16 sMirageTowerTilemap[] = INCBIN_U16("graphics/misc/mirage_tower.bin"); static const u16 sFossil_Pal[] = INCBIN_U16("graphics/object_events/pics/misc/fossil.gbapal"); // Unused static const u8 sFossil_Gfx[] = INCBIN_U8("graphics/object_events/pics/misc/fossil.4bpp"); // Duplicate of gObjectEventPic_Fossil @@ -445,38 +441,47 @@ static void FinishCeilingCrumbleTask(u8 taskId) ScriptContext_Enable(); } +#define sIndex data[0] +#define sYOffset data[1] + static void CreateCeilingCrumbleSprites(void) { u8 i; u8 spriteId; - for (i = 0; i < 8; i++) + for (i = 0; i < ARRAY_COUNT(sCeilingCrumblePositions); i++) { spriteId = CreateSprite(&sSpriteTemplate_CeilingCrumbleLarge, sCeilingCrumblePositions[i][0] + 120, sCeilingCrumblePositions[i][1], 8); gSprites[spriteId].oam.priority = 0; - gSprites[spriteId].oam.paletteNum = 0; - gSprites[spriteId].data[0] = i; + // These sprites use color index 11 from the player's sprite palette. This probably wasn't intentional. + // The palettes for Brendan and May have different shades of green at this index, so the color of these sprites changes + // depending on the player's gender (and neither shade of green particularly fits a crumbling yellow/brown ceiling). + gSprites[spriteId].oam.paletteNum = PALSLOT_PLAYER; + gSprites[spriteId].sIndex = i; } - for (i = 0; i < 8; i++) + for (i = 0; i < ARRAY_COUNT(sCeilingCrumblePositions); i++) { spriteId = CreateSprite(&sSpriteTemplate_CeilingCrumbleSmall, sCeilingCrumblePositions[i][0] + 115, sCeilingCrumblePositions[i][1] - 3, 8); gSprites[spriteId].oam.priority = 0; - gSprites[spriteId].oam.paletteNum = 0; - gSprites[spriteId].data[0] = i; + gSprites[spriteId].oam.paletteNum = PALSLOT_PLAYER; + gSprites[spriteId].sIndex = i; } } static void SpriteCB_CeilingCrumble(struct Sprite *sprite) { - sprite->data[1] += 2; - sprite->y2 = sprite->data[1] / 2; - if(((sprite->y) + (sprite->y2)) > sCeilingCrumblePositions[sprite->data[0]][2]) + sprite->sYOffset += 2; + sprite->y2 = sprite->sYOffset / 2; + if ((sprite->y + sprite->y2) > sCeilingCrumblePositions[sprite->sIndex][2]) { DestroySprite(sprite); IncrementCeilingCrumbleFinishedCount(); } } +#undef sIndex +#undef sYOffset + static void SetInvisibleMirageTowerMetatiles(void) { u8 i; @@ -543,7 +548,7 @@ static void InitMirageTowerShake(u8 taskId) gTasks[taskId].tState++; break; case 2: - CpuSet(sBlankTile_Gfx, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH / 2); + CpuSet(sMirageTower_Gfx, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH / 2); LoadBgTiles(0, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH, 0); gTasks[taskId].tState++; break; From dd70446db59ba0b09cc480218fd1a13f86b7c19c Mon Sep 17 00:00:00 2001 From: Estellar <137097857+estellarc@users.noreply.github.com> Date: Wed, 23 Apr 2025 18:46:11 -0400 Subject: [PATCH 04/14] Added constant in Birch speech dialogue --- src/main_menu.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/main_menu.c b/src/main_menu.c index 10b34728b3..9ee6e05b8f 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -527,6 +527,7 @@ enum }; #define MAIN_MENU_BORDER_TILE 0x1D5 +#define BIRCH_DLG_BASE_TILE_NUM 0xFC static void CB2_MainMenu(void) { @@ -1329,7 +1330,7 @@ static void Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome(u8 taskId) { InitWindows(sNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); - LoadMessageBoxGfx(0, 0xFC, BG_PLTT_ID(15)); + LoadMessageBoxGfx(0, BIRCH_DLG_BASE_TILE_NUM, BG_PLTT_ID(15)); NewGameBirchSpeech_ShowDialogueWindow(0, 1); PutWindowTilemap(0); CopyWindowToVram(0, COPYWIN_GFX); @@ -1855,7 +1856,7 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void) SetMainCallback2(CB2_MainMenu); InitWindows(sNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); - LoadMessageBoxGfx(0, 0xFC, BG_PLTT_ID(15)); + LoadMessageBoxGfx(0, BIRCH_DLG_BASE_TILE_NUM, BG_PLTT_ID(15)); PutWindowTilemap(0); CopyWindowToVram(0, COPYWIN_FULL); } @@ -2277,20 +2278,20 @@ static void NewGameBirchSpeech_ShowDialogueWindow(u8 windowId, u8 copyToVram) static void NewGameBirchSpeech_CreateDialogueWindowBorder(u8 bg, u8 x, u8 y, u8 width, u8 height, u8 palNum) { - FillBgTilemapBufferRect(bg, 0xFD, x-2, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0xFF, x-1, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0x100, x, y-1, width, 1, palNum); - FillBgTilemapBufferRect(bg, 0x101, x+width-1, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0x102, x+width, y-1, 1, 1, palNum); - FillBgTilemapBufferRect(bg, 0x103, x-2, y, 1, 5, palNum); - FillBgTilemapBufferRect(bg, 0x105, x-1, y, width+1, 5, palNum); - FillBgTilemapBufferRect(bg, 0x106, x+width, y, 1, 5, palNum); + FillBgTilemapBufferRect(bg, BIRCH_DLG_BASE_TILE_NUM + 1, x-2, y-1, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BIRCH_DLG_BASE_TILE_NUM + 3, x-1, y-1, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BIRCH_DLG_BASE_TILE_NUM + 4, x, y-1, width, 1, palNum); + FillBgTilemapBufferRect(bg, BIRCH_DLG_BASE_TILE_NUM + 5, x+width-1, y-1, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BIRCH_DLG_BASE_TILE_NUM + 6, x+width, y-1, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BIRCH_DLG_BASE_TILE_NUM + 7, x-2, y, 1, 5, palNum); + FillBgTilemapBufferRect(bg, BIRCH_DLG_BASE_TILE_NUM + 9, x-1, y, width+1, 5, palNum); + FillBgTilemapBufferRect(bg, BIRCH_DLG_BASE_TILE_NUM + 10, x+width, y, 1, 5, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0xFD), x-2, y+height, 1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0xFF), x-1, y+height, 1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x100), x, y+height, width-1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x101), x+width-1, y+height, 1, 1, palNum); - FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(0x102), x+width, y+height, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(BIRCH_DLG_BASE_TILE_NUM + 1), x-2, y+height, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(BIRCH_DLG_BASE_TILE_NUM + 3), x-1, y+height, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(BIRCH_DLG_BASE_TILE_NUM + 4), x, y+height, width-1, 1, palNum); + FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(BIRCH_DLG_BASE_TILE_NUM + 5), x+width-1, y+height, 1, 1, palNum); + FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(BIRCH_DLG_BASE_TILE_NUM + 6), x+width, y+height, 1, 1, palNum); } static void Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox(u8 taskId) From 1cd4d2396943b1176630e9c719501de841c72cfe Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sat, 26 Apr 2025 21:46:41 +0200 Subject: [PATCH 05/14] Fixes Z and Max moves dmg reduction against side protection (#6697) --- include/battle.h | 13 +++-- src/battle_script_commands.c | 2 +- test/battle/move_effect/protect.c | 81 ++++++++++++++++++++++++++----- 3 files changed, 77 insertions(+), 19 deletions(-) diff --git a/include/battle.h b/include/battle.h index 185e565ed2..86b71eb89f 100644 --- a/include/battle.h +++ b/include/battle.h @@ -906,10 +906,6 @@ static inline bool32 IsBattleMoveRecoil(u32 move) } #define IS_BATTLER_PROTECTED(battlerId)(gProtectStructs[battlerId].protected \ - || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_WIDE_GUARD \ - || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_QUICK_GUARD \ - || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_CRAFTY_SHIELD \ - || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_MAT_BLOCK \ || gProtectStructs[battlerId].spikyShielded \ || gProtectStructs[battlerId].kingsShielded \ || gProtectStructs[battlerId].banefulBunkered \ @@ -1294,5 +1290,12 @@ static inline bool32 IsBattlerInvalidForSpreadMove(u32 battlerAtk, u32 battlerDe || (battlerDef == BATTLE_PARTNER(battlerAtk) && (moveTarget == MOVE_TARGET_BOTH)); } -#endif // GUARD_BATTLE_H +static inline bool32 IsBattlerSideProtected(u32 battler) +{ + return gSideStatuses[GetBattlerSide(battler)] & (SIDE_STATUS_WIDE_GUARD + | SIDE_STATUS_QUICK_GUARD + | SIDE_STATUS_CRAFTY_SHIELD + | SIDE_STATUS_MAT_BLOCK); +} +#endif // GUARD_BATTLE_H diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 72e05cfb68..87cb89f58d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3893,7 +3893,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) } break; case MOVE_EFFECT_FEINT: - if (IS_BATTLER_PROTECTED(gBattlerTarget)) + if (IS_BATTLER_PROTECTED(gBattlerTarget) || IsBattlerSideProtected(gBattlerTarget)) { gProtectStructs[gBattlerTarget].protected = FALSE; gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~SIDE_STATUS_WIDE_GUARD; diff --git a/test/battle/move_effect/protect.c b/test/battle/move_effect/protect.c index 82a29ef81b..b0cd3e424a 100644 --- a/test/battle/move_effect/protect.c +++ b/test/battle/move_effect/protect.c @@ -20,7 +20,7 @@ ASSUMPTIONS ASSUME(!(MoveMakesContact(MOVE_WATER_GUN))); } -SINGLE_BATTLE_TEST("Protect, Detect, Spiky Shield, Baneful Bunker and Burning Bulwark protect from all moves") +SINGLE_BATTLE_TEST("Protect: Protect, Detect, Spiky Shield, Baneful Bunker and Burning Bulwark protect from all moves") { u32 j; static const u16 protectMoves[] = { @@ -59,7 +59,7 @@ SINGLE_BATTLE_TEST("Protect, Detect, Spiky Shield, Baneful Bunker and Burning Bu } } -SINGLE_BATTLE_TEST("King's Shield, Silk Trap and Obstruct protect from damaging moves and lower stats on contact") +SINGLE_BATTLE_TEST("Protect: King's Shield, Silk Trap and Obstruct protect from damaging moves and lower stats on contact") { u32 j; static const u16 protectMoves[][3] = @@ -125,7 +125,7 @@ SINGLE_BATTLE_TEST("King's Shield, Silk Trap and Obstruct protect from damaging } } -SINGLE_BATTLE_TEST("Spiky Shield does 1/8 dmg of max hp of attackers making contact and may faint them") +SINGLE_BATTLE_TEST("Protect: Spiky Shield does 1/8 dmg of max hp of attackers making contact and may faint them") { u16 usedMove = MOVE_NONE; u16 hp = 400, maxHp = 400; @@ -162,7 +162,7 @@ SINGLE_BATTLE_TEST("Spiky Shield does 1/8 dmg of max hp of attackers making cont } } -SINGLE_BATTLE_TEST("Baneful Bunker poisons pokemon for moves making contact") +SINGLE_BATTLE_TEST("Protect: Baneful Bunker poisons pokemon for moves making contact") { u16 usedMove = MOVE_NONE; @@ -194,7 +194,7 @@ SINGLE_BATTLE_TEST("Baneful Bunker poisons pokemon for moves making contact") } } -SINGLE_BATTLE_TEST("Burning Bulwark burns pokemon for moves making contact") +SINGLE_BATTLE_TEST("Protect: Burning Bulwark burns pokemon for moves making contact") { u16 usedMove = MOVE_NONE; @@ -226,7 +226,7 @@ SINGLE_BATTLE_TEST("Burning Bulwark burns pokemon for moves making contact") } } -SINGLE_BATTLE_TEST("Recoil damage is not applied if target was protected") +SINGLE_BATTLE_TEST("Protect: Recoil damage is not applied if target was protected") { u32 j, k; static const u16 protectMoves[] = { MOVE_PROTECT, MOVE_DETECT, MOVE_KINGS_SHIELD, MOVE_BANEFUL_BUNKER, MOVE_SILK_TRAP, MOVE_OBSTRUCT, MOVE_SPIKY_SHIELD }; @@ -269,7 +269,7 @@ SINGLE_BATTLE_TEST("Recoil damage is not applied if target was protected") } } -SINGLE_BATTLE_TEST("Multi-hit moves don't hit a protected target and fail only once") +SINGLE_BATTLE_TEST("Protect: Multi-hit moves don't hit a protected target and fail only once") { u16 move = MOVE_NONE; @@ -316,7 +316,7 @@ SINGLE_BATTLE_TEST("Multi-hit moves don't hit a protected target and fail only o } } -DOUBLE_BATTLE_TEST("Wide Guard protects self and ally from multi-target moves") +DOUBLE_BATTLE_TEST("Protect: Wide Guard protects self and ally from multi-target moves") { u16 move = MOVE_NONE; @@ -358,7 +358,7 @@ DOUBLE_BATTLE_TEST("Wide Guard protects self and ally from multi-target moves") } } -DOUBLE_BATTLE_TEST("Wide Guard can not fail on consecutive turns") +DOUBLE_BATTLE_TEST("Protect: Wide Guard can not fail on consecutive turns") { u8 turns; @@ -386,7 +386,7 @@ DOUBLE_BATTLE_TEST("Wide Guard can not fail on consecutive turns") } } -DOUBLE_BATTLE_TEST("Quick Guard protects self and ally from priority moves") +DOUBLE_BATTLE_TEST("Protect: Quick Guard protects self and ally from priority moves") { u16 move = MOVE_NONE; struct BattlePokemon *targetOpponent = NULL; @@ -421,7 +421,7 @@ DOUBLE_BATTLE_TEST("Quick Guard protects self and ally from priority moves") } } -DOUBLE_BATTLE_TEST("Quick Guard can not fail on consecutive turns") +DOUBLE_BATTLE_TEST("Protect: Quick Guard can not fail on consecutive turns") { u8 turns; @@ -446,7 +446,7 @@ DOUBLE_BATTLE_TEST("Quick Guard can not fail on consecutive turns") } } -DOUBLE_BATTLE_TEST("Crafty Shield protects self and ally from status moves") +DOUBLE_BATTLE_TEST("Protect: Crafty Shield protects self and ally from status moves") { u16 move = MOVE_NONE; struct BattlePokemon *targetOpponent = NULL; @@ -487,7 +487,7 @@ DOUBLE_BATTLE_TEST("Crafty Shield protects self and ally from status moves") } } -SINGLE_BATTLE_TEST("Protect does not block Confide or Decorate") +SINGLE_BATTLE_TEST("Protect: Protect does not block Confide or Decorate") { u32 move; PARAMETRIZE { move = MOVE_CONFIDE; } @@ -563,3 +563,58 @@ DOUBLE_BATTLE_TEST("Crafty Shield does not protect against moves that target all MESSAGE("The opposing Sunflora's Defense rose!"); } } + +SINGLE_BATTLE_TEST("Protect: Quick Guard, Wide Guard and Crafty Shield don't reduce Max Move demage", s16 damage) +{ + s16 dmg[2]; + u32 move; + + PARAMETRIZE { move = MOVE_WIDE_GUARD; } + PARAMETRIZE { move = MOVE_QUICK_GUARD; } + PARAMETRIZE { move = MOVE_CRAFTY_SHIELD; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, move); } + } SCENE { + HP_BAR(opponent, captureDamage: &dmg[0]); + HP_BAR(opponent, captureDamage: &dmg[1]); + } FINALLY { + EXPECT_EQ(dmg[0], dmg[1]); + } +} + +SINGLE_BATTLE_TEST("Protect: Quick Guard, Wide Guard and Crafty Shield don't reduce Z-Move demage", s16 damage) +{ + bool32 protected; + u32 move; + + PARAMETRIZE { protected = TRUE; move = MOVE_WIDE_GUARD; } + PARAMETRIZE { protected = FALSE; move = MOVE_WIDE_GUARD; } + + PARAMETRIZE { protected = TRUE; move = MOVE_QUICK_GUARD; } + PARAMETRIZE { protected = FALSE; move = MOVE_QUICK_GUARD; } + + PARAMETRIZE { protected = TRUE; move = MOVE_CRAFTY_SHIELD; } + PARAMETRIZE { protected = FALSE; move = MOVE_CRAFTY_SHIELD; } + + GIVEN { + ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (protected) + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); MOVE(opponent, move); } + else + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + EXPECT_EQ(results[2].damage, results[3].damage); + EXPECT_EQ(results[4].damage, results[5].damage); + } +} From fc872b481e77e07676e1d9021468c0016b52b9e1 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 27 Apr 2025 09:27:21 -0400 Subject: [PATCH 06/14] Fix `FORM_CHANGE_ITEM_HOLD` bug manifested during `givemon` (#6702) --- src/pokemon.c | 18 +++++++++++++++++- test/pokemon.c | 17 +++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/pokemon.c b/src/pokemon.c index f09dbacab5..300b57e81d 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -6559,7 +6559,23 @@ u32 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 case FORM_CHANGE_ITEM_HOLD: if ((heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) && (ability == formChanges[i].param2 || formChanges[i].param2 == ABILITY_NONE)) - targetSpecies = formChanges[i].targetSpecies; + { + // This is to prevent reverting to base form when giving the item to the corresponding form. + // Eg. Giving a Zap Plate to an Electric Arceus without an item (most likely to happen when using givemon) + bool32 currentItemForm = FALSE; + for (int j = 0; formChanges[j].method != FORM_CHANGE_TERMINATOR; j++) + { + if (species == formChanges[j].targetSpecies + && formChanges[j].param1 == heldItem + && formChanges[j].param1 != ITEM_NONE) + { + currentItemForm = TRUE; + break; + } + } + if (!currentItemForm) + targetSpecies = formChanges[i].targetSpecies; + } break; case FORM_CHANGE_ITEM_USE: if (arg == formChanges[i].param1) diff --git a/test/pokemon.c b/test/pokemon.c index 16aadee798..dbb88081cf 100644 --- a/test/pokemon.c +++ b/test/pokemon.c @@ -256,6 +256,23 @@ TEST("givemon respects perfectIVCount") } } +TEST("givemon respects FORM_CHANGE_ITEM_HOLD") +{ + ZeroPlayerPartyMons(); + + RUN_OVERWORLD_SCRIPT( + givemon SPECIES_ARCEUS_NORMAL, 100, item=ITEM_ZAP_PLATE; + givemon SPECIES_ARCEUS_GRASS, 100, item=ITEM_ZAP_PLATE; + givemon SPECIES_ARCEUS_ELECTRIC, 100, item=ITEM_ZAP_PLATE; + givemon SPECIES_GIRATINA_ORIGIN, 100, item=ITEM_POTION; + ); + + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_ARCEUS_ELECTRIC); + EXPECT_EQ(GetMonData(&gPlayerParty[1], MON_DATA_SPECIES), SPECIES_ARCEUS_ELECTRIC); + EXPECT_EQ(GetMonData(&gPlayerParty[2], MON_DATA_SPECIES), SPECIES_ARCEUS_ELECTRIC); + EXPECT_EQ(GetMonData(&gPlayerParty[3], MON_DATA_SPECIES), SPECIES_GIRATINA_ALTERED); +} + TEST("givemon [moves]") { ZeroPlayerPartyMons(); From 9c6fa4967186251188795a82abed7e29a286bbc4 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Mon, 28 Apr 2025 12:09:47 -0400 Subject: [PATCH 07/14] Use correct define for moves in test runner (#6711) --- test/test_runner_battle.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 806dcf1956..098c4f4a29 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -2373,7 +2373,7 @@ void ExpectMoves(u32 sourceLine, struct BattlePokemon *battler, bool32 notExpect s32 battlerId = battler - gBattleMons; u32 i; - for (i = 0; i < MAX_BATTLERS_COUNT; i++) + for (i = 0; i < MAX_MON_MOVES; i++) { if (moves.moves[i] != MOVE_NONE) { From afcba8d9cd08b27b3e92ceb97ad1199083e166c8 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Tue, 29 Apr 2025 23:25:56 +0200 Subject: [PATCH 08/14] Fixes Stomping Tantrum not doubling power if asleep or frozen (#6719) --- include/battle.h | 14 ++------ src/battle_main.c | 12 ++----- src/battle_script_commands.c | 2 +- src/battle_util.c | 39 +++++++++------------- test/battle/move_effect/stomping_tantrum.c | 2 +- 5 files changed, 23 insertions(+), 46 deletions(-) diff --git a/include/battle.h b/include/battle.h index 9e7c4945dc..4620112194 100644 --- a/include/battle.h +++ b/include/battle.h @@ -148,27 +148,19 @@ struct ProtectStruct u32 helpingHand:1; u32 bounceMove:1; u32 stealMove:1; - u32 prlzImmobility:1; + u32 nonVolatileStatusImmobility:1; u32 confusionSelfDmg:1; u32 targetAffected:1; u32 chargingTurn:1; u32 fleeType:2; // 0: Normal, 1: FLEE_ITEM, 2: FLEE_ABILITY - u32 usedImprisonedMove:1; - u32 loveImmobility:1; - u32 usedDisabledMove:1; - u32 usedTauntedMove:1; - u32 flag2Unknown:1; // Only set to 0 once. Checked in 'WasUnableToUseMove' function. - u32 flinchImmobility:1; + u32 unableToUseMove:1; // Not to be confused with HITMARKER_UNABLE_TO_USE_MOVE (It is questionable though if there is a difference. Needs further research) u32 notFirstStrike:1; u32 palaceUnableToUseMove:1; - u32 usedHealBlockedMove:1; - u32 usedGravityPreventedMove:1; u32 powderSelfDmg:1; - u32 usedThroatChopPreventedMove:1; u32 statRaised:1; u32 usedCustapBerry:1; // also quick claw u32 touchedProtectLike:1; - u32 unused:1; + u32 unused:9; // End of 32-bit bitfield u16 disableEjectPack:1; u16 statFell:1; diff --git a/src/battle_main.c b/src/battle_main.c index 93729410cd..c220b37c4b 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3283,21 +3283,13 @@ const u8* FaintClearSetData(u32 battler) gProtectStructs[battler].helpingHand = FALSE; gProtectStructs[battler].bounceMove = FALSE; gProtectStructs[battler].stealMove = FALSE; - gProtectStructs[battler].prlzImmobility = FALSE; + gProtectStructs[battler].nonVolatileStatusImmobility = FALSE; + gProtectStructs[battler].unableToUseMove = FALSE; gProtectStructs[battler].confusionSelfDmg = FALSE; gProtectStructs[battler].targetAffected = FALSE; gProtectStructs[battler].chargingTurn = FALSE; gProtectStructs[battler].fleeType = 0; - gProtectStructs[battler].usedImprisonedMove = FALSE; - gProtectStructs[battler].loveImmobility = FALSE; - gProtectStructs[battler].usedDisabledMove = FALSE; - gProtectStructs[battler].usedTauntedMove = FALSE; - gProtectStructs[battler].flag2Unknown = FALSE; - gProtectStructs[battler].flinchImmobility = FALSE; gProtectStructs[battler].notFirstStrike = FALSE; - gProtectStructs[battler].usedHealBlockedMove = FALSE; - gProtectStructs[battler].usedGravityPreventedMove = FALSE; - gProtectStructs[battler].usedThroatChopPreventedMove = FALSE; gProtectStructs[battler].statRaised = FALSE; gProtectStructs[battler].statFell = FALSE; gProtectStructs[battler].pranksterElevated = FALSE; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index dcf4dbb8cc..3704eb1b01 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6820,7 +6820,7 @@ static void Cmd_moveend(void) case MOVEEND_UPDATE_LAST_MOVES: if ((gBattleStruct->moveResultFlags[gBattlerTarget] & (MOVE_RESULT_FAILED | MOVE_RESULT_DOESNT_AFFECT_FOE)) || (gBattleMons[gBattlerAttacker].status2 & (STATUS2_FLINCHED)) - || gProtectStructs[gBattlerAttacker].prlzImmobility) + || gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility) gBattleStruct->battlerState[gBattlerAttacker].lastMoveFailed = TRUE; else gBattleStruct->battlerState[gBattlerAttacker].lastMoveFailed = FALSE; diff --git a/src/battle_util.c b/src/battle_util.c index 0093550a47..adc6ac182d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1081,21 +1081,12 @@ const u8* CancelMultiTurnMoves(u32 battler) bool32 WasUnableToUseMove(u32 battler) { - if (gProtectStructs[battler].prlzImmobility - || gProtectStructs[battler].usedImprisonedMove - || gProtectStructs[battler].loveImmobility - || gProtectStructs[battler].usedDisabledMove - || gProtectStructs[battler].usedTauntedMove - || gProtectStructs[battler].usedGravityPreventedMove - || gProtectStructs[battler].usedHealBlockedMove - || gProtectStructs[battler].flag2Unknown - || gProtectStructs[battler].flinchImmobility - || gProtectStructs[battler].confusionSelfDmg - || gProtectStructs[battler].powderSelfDmg - || gProtectStructs[battler].usedThroatChopPreventedMove) + if (gProtectStructs[battler].nonVolatileStatusImmobility + || gProtectStructs[battler].unableToUseMove + || gProtectStructs[battler].powderSelfDmg + || gProtectStructs[battler].confusionSelfDmg) return TRUE; - else - return FALSE; + return FALSE; } void PrepareStringBattle(u16 stringId, u32 battler) @@ -3223,6 +3214,7 @@ static void CancellerAsleep(u32 *effect) u32 moveEffect = GetMoveEffect(gChosenMove); if (moveEffect != EFFECT_SNORE && moveEffect != EFFECT_SLEEP_TALK) { + gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility = TRUE; gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; *effect = 2; @@ -3247,6 +3239,7 @@ static void CancellerFrozen(u32 *effect) { if (!RandomPercentage(RNG_FROZEN, 20)) { + gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility = TRUE; gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen; gHitMarker |= (HITMARKER_NO_ATTACKSTRING | HITMARKER_UNABLE_TO_USE_MOVE); } @@ -3335,7 +3328,7 @@ static void CancellerFlinch(u32 *effect) { if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FLINCHED) { - gProtectStructs[gBattlerAttacker].flinchImmobility = TRUE; + gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; @@ -3356,7 +3349,7 @@ static void CancellerInLove(u32 *effect) { BattleScriptPush(BattleScript_MoveUsedIsInLoveCantAttack); gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - gProtectStructs[gBattlerAttacker].loveImmobility = TRUE; + gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker); } gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; @@ -3368,7 +3361,7 @@ static void CancellerDisabled(u32 *effect) { if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].disabledMove == gCurrentMove && gDisableStructs[gBattlerAttacker].disabledMove != MOVE_NONE) { - gProtectStructs[gBattlerAttacker].usedDisabledMove = TRUE; + gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; gBattleScripting.battler = gBattlerAttacker; CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled; @@ -3381,7 +3374,7 @@ static void CancellerHealBlocked(u32 *effect) { if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK && IsHealBlockPreventingMove(gBattlerAttacker, gCurrentMove)) { - gProtectStructs[gBattlerAttacker].usedHealBlockedMove = TRUE; + gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; gBattleScripting.battler = gBattlerAttacker; CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedHealBlockPrevents; @@ -3394,7 +3387,7 @@ static void CancellerGravity(u32 *effect) { if (gFieldStatuses & STATUS_FIELD_GRAVITY && IsGravityPreventingMove(gCurrentMove)) { - gProtectStructs[gBattlerAttacker].usedGravityPreventedMove = TRUE; + gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; gBattleScripting.battler = gBattlerAttacker; CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedGravityPrevents; @@ -3407,7 +3400,7 @@ static void CancellerThroatChop(u32 *effect) { if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].throatChopTimer && IsSoundMove(gCurrentMove)) { - gProtectStructs[gBattlerAttacker].usedThroatChopPreventedMove = TRUE; + gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedIsThroatChopPrevented; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; @@ -3419,7 +3412,7 @@ static void CancellerTaunted(u32 *effect) { if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].tauntTimer && IsBattleMoveStatus(gCurrentMove)) { - gProtectStructs[gBattlerAttacker].usedTauntedMove = TRUE; + gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; @@ -3431,7 +3424,7 @@ static void CancellerImprisoned(u32 *effect) { if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove)) { - gProtectStructs[gBattlerAttacker].usedImprisonedMove = TRUE; + gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; @@ -3489,7 +3482,7 @@ static void CancellerParalysed(u32 *effect) && !(B_MAGIC_GUARD == GEN_4 && GetBattlerAbility(gBattlerAttacker) == ABILITY_MAGIC_GUARD) && !RandomPercentage(RNG_PARALYSIS, 75)) { - gProtectStructs[gBattlerAttacker].prlzImmobility = TRUE; + gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility = TRUE; // This is removed in FRLG and Emerald for some reason //CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed; diff --git a/test/battle/move_effect/stomping_tantrum.c b/test/battle/move_effect/stomping_tantrum.c index c759de38b1..18d8ffb7e9 100644 --- a/test/battle/move_effect/stomping_tantrum.c +++ b/test/battle/move_effect/stomping_tantrum.c @@ -90,7 +90,7 @@ SINGLE_BATTLE_TEST("Stomping Tatrum will not deal double damage if target protec } } -SINGLE_BATTLE_TEST("Stomping Tatrum will not deal double damage if it failed on the previous turn cause of Protect") +SINGLE_BATTLE_TEST("Stomping Tatrum will not deal double if it missed") { s16 damage[2]; GIVEN { From accb85554a70acf52677192cfe48532842964e89 Mon Sep 17 00:00:00 2001 From: Hedara Date: Wed, 30 Apr 2025 11:23:05 +0200 Subject: [PATCH 09/14] Expansion 1.11.2 Release --- .../ISSUE_TEMPLATE/01_battle_engine_bugs.yaml | 3 +- .../ISSUE_TEMPLATE/02_battle_ai_issues.yaml | 3 +- .github/ISSUE_TEMPLATE/04_other_errors.yaml | 3 +- README.md | 2 +- docs/SUMMARY.md | 1 + docs/changelogs/1.11.x/1.11.2.md | 143 ++++++++++++++++++ include/constants/expansion.h | 4 +- 7 files changed, 153 insertions(+), 6 deletions(-) create mode 100644 docs/changelogs/1.11.x/1.11.2.md diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index 7d3ad81846..d1ee2861af 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -23,9 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.11.1 (Latest release) + - 1.11.2 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.11.1 - 1.11.0 - 1.10.3 - 1.10.2 diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index 1fe3387f6b..79669a28dc 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -23,9 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.11.1 (Latest release) + - 1.11.2 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.11.1 - 1.11.0 - 1.10.3 - 1.10.2 diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index 0f37baf0fc..b8cd2c7cb5 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -23,9 +23,10 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.11.1 (Latest release) + - 1.11.2 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.11.1 - 1.11.0 - 1.10.3 - 1.10.2 diff --git a/README.md b/README.md index 75a63603a5..d863b9ce94 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ The main advantage of using vanilla pokeemerald as a base is being able to link If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect. You can phrase it as the following: ``` -Based off RHH's pokeemerald-expansion 1.11.1 https://github.com/rh-hideout/pokeemerald-expansion/ +Based off RHH's pokeemerald-expansion 1.11.2 https://github.com/rh-hideout/pokeemerald-expansion/ ``` #### Important: DO NOT use GitHub's "Download Zip" option. Using this option will not download the commit history required to update your expansion version or merge other feature branches. Instead, please read [this guide](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/The-Basics-of-GitHub) to learn how to fork the repository and clone locally from there. diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 3385b2123d..f8dcba34db 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -17,6 +17,7 @@ - [How to add new Trainer Slides](tutorials/how_to_new_trainer_slide.md) - [Changelog](./CHANGELOG.md) - [1.11.x]() + - [Version 1.11.2](changelogs/1.11.x/1.11.2.md) - [Version 1.11.1](changelogs/1.11.x/1.11.1.md) - [Version 1.11.0](changelogs/1.11.x/1.11.0.md) - [1.10.x]() diff --git a/docs/changelogs/1.11.x/1.11.2.md b/docs/changelogs/1.11.x/1.11.2.md new file mode 100644 index 0000000000..47d9b11b97 --- /dev/null +++ b/docs/changelogs/1.11.x/1.11.2.md @@ -0,0 +1,143 @@ +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.11.2 +`. +``` + + +## 🧬 General 🧬 +### Changed +* 1.11.1 Release by @hedara90 in [#6503](https://github.com/rh-hideout/pokeemerald-expansion/pull/6503) +* Add General Merge to label check by @hedara90 in [#6512](https://github.com/rh-hideout/pokeemerald-expansion/pull/6512) +* Added AI switch display to the battle debug by @hedara90 in [#6529](https://github.com/rh-hideout/pokeemerald-expansion/pull/6529) +* Consolidated "How to add Pokémon" tutorials by @AsparagusEduardo in [#6541](https://github.com/rh-hideout/pokeemerald-expansion/pull/6541) +* Fixed Behemoth Blade/Bash handler not using form change tables by @AsparagusEduardo in [#6558](https://github.com/rh-hideout/pokeemerald-expansion/pull/6558) +* Documentation by @hedara90 in [#6576](https://github.com/rh-hideout/pokeemerald-expansion/pull/6576) +* Corrected Dexnav config related comment by @LOuroboros in [#6610](https://github.com/rh-hideout/pokeemerald-expansion/pull/6610) +* Make generated files match the current formatting by @hedara90 in [#6636](https://github.com/rh-hideout/pokeemerald-expansion/pull/6636) + +### Fixed +* Mark RTC/Flash save hint string as used by @aronson in [#6507](https://github.com/rh-hideout/pokeemerald-expansion/pull/6507) +* Fix move names in learnset helper by @malad1211 in [#6510](https://github.com/rh-hideout/pokeemerald-expansion/pull/6510) +* Fix no eligible mons when only the partner wins in multi battle by @Bivurnum in [#6626](https://github.com/rh-hideout/pokeemerald-expansion/pull/6626) +* Fixed broken palette load for shiny followers in the sprite visualizer by @hedara90 in [#6683](https://github.com/rh-hideout/pokeemerald-expansion/pull/6683) +* Fix `FORM_CHANGE_ITEM_HOLD` bug manifested during `givemon` by @AsparagusEduardo in [#6702](https://github.com/rh-hideout/pokeemerald-expansion/pull/6702) + +## 🗺️ Overworld 🗺️ +### Fixed +* Added call to ItemId_GetDescription by @pkmnsnfrn in [#6582](https://github.com/rh-hideout/pokeemerald-expansion/pull/6582) + +## 🐉 Pokémon 🐉 +### Changed +* Add clarification for EVO_SCRIPT_TRIGGER_DMG by @Bassoonian in [#6579](https://github.com/rh-hideout/pokeemerald-expansion/pull/6579) + +### Fixed +* Capped Exp from Daycare to level cap by @hedara90 in [#6622](https://github.com/rh-hideout/pokeemerald-expansion/pull/6622) + +## ⚔️ Battle General ⚔️ +### Changed +* Fixes Thermal Exchange not curing existing burn by @PhallenTree in [#6545](https://github.com/rh-hideout/pokeemerald-expansion/pull/6545) +* Add clarification for underlying math in EV caps by @Bassoonian and @i0brendan0 in [#6580](https://github.com/rh-hideout/pokeemerald-expansion/pull/6580) +* Added missing `gMovesInfo` encapsulation by @AsparagusEduardo in [#6656](https://github.com/rh-hideout/pokeemerald-expansion/pull/6656) +* Remove misleading comment by @AlexOn1ine in [#6684](https://github.com/rh-hideout/pokeemerald-expansion/pull/6684) + +### Fixed +* Fixes Tera Type not being carried over to during form change / evolution by @AlexOn1ine in [#6502](https://github.com/rh-hideout/pokeemerald-expansion/pull/6502) +* Fixes Hone Claws checking the wrong stats for its stat change animation and Stockpile drops being stopped by stat reduction prevention effects by @PhallenTree in [#6522](https://github.com/rh-hideout/pokeemerald-expansion/pull/6522) +* Fixes Red Card against Dynamaxed mons by @AlexOn1ine in [#6526](https://github.com/rh-hideout/pokeemerald-expansion/pull/6526) +* Fixes transformed mon being able to use tera on Terapagos by @AlexOn1ine in [#6528](https://github.com/rh-hideout/pokeemerald-expansion/pull/6528) +* Fixes Will-O-Wisp not being blocked by Thermal Exchange by @AlexOn1ine in [#6534](https://github.com/rh-hideout/pokeemerald-expansion/pull/6534) +* Add hold effects for PLA Origin Trio items by @Bassoonian in [#6578](https://github.com/rh-hideout/pokeemerald-expansion/pull/6578) +* Ability imposter by @wiz1989 and @AlexOn1ine in [#6552](https://github.com/rh-hideout/pokeemerald-expansion/pull/6552) +* Fixes Dynamax reversion animation when fainting by @PhallenTree in [#6597](https://github.com/rh-hideout/pokeemerald-expansion/pull/6597) +* Fix potential compile error caused by sTeraIndicatorDataPtrs by @AlexOn1ine in [#6599](https://github.com/rh-hideout/pokeemerald-expansion/pull/6599) +* Revert wrongly done Embody Aspect fix by @AlexOn1ine in [#6607](https://github.com/rh-hideout/pokeemerald-expansion/pull/6607) +* Fixes wrong battler's Illusion wearing off when the Attacker faints and fixes Illusion tests by @PhallenTree in [#6596](https://github.com/rh-hideout/pokeemerald-expansion/pull/6596) +* Fixes Gulp Missile freezing the game if when attacker fainted by @AlexOn1ine in [#6639](https://github.com/rh-hideout/pokeemerald-expansion/pull/6639) +* Fixes Big Root Leech Seed heal amount by @AlexOn1ine in [#6638](https://github.com/rh-hideout/pokeemerald-expansion/pull/6638) +* Fix Mirror Armor and Obstruct interaction by @AlexOn1ine in [#6630](https://github.com/rh-hideout/pokeemerald-expansion/pull/6630) +* Fixes some restore issues by @AlexOn1ine in [#6629](https://github.com/rh-hideout/pokeemerald-expansion/pull/6629) +* Fixes Ally Switch cancelling partner's moves targeting that side of the field by @PhallenTree and @hedara90 made the Ally Switch test in #6646 in [#6647](https://github.com/rh-hideout/pokeemerald-expansion/pull/6647) +* Fixes commander activation on a fainted mon by @AlexOn1ine in [#6632](https://github.com/rh-hideout/pokeemerald-expansion/pull/6632) +* Fix captivate-oblivious interaction and related test by @cawtds in [#6653](https://github.com/rh-hideout/pokeemerald-expansion/pull/6653) +* Fix gBattlerTarget OOB for Gravity and Perish Song by @AlexOn1ine in [#6662](https://github.com/rh-hideout/pokeemerald-expansion/pull/6662) +* Fixes Intimidate / Eject Pack interaction by @AlexOn1ine in [#6645](https://github.com/rh-hideout/pokeemerald-expansion/pull/6645) +* Fixes Neutralizing Gas activating again after switch-in by @PhallenTree in [#6667](https://github.com/rh-hideout/pokeemerald-expansion/pull/6667) +* Fixes Bug Bite eaten berry not ignoring Unnerve by @AlexOn1ine in [#6666](https://github.com/rh-hideout/pokeemerald-expansion/pull/6666) +* Fixes Mirror Armor stat drops not being stopped by Substitute by @PhallenTree in [#6675](https://github.com/rh-hideout/pokeemerald-expansion/pull/6675) +* Fixes Magician Life Orb interaction by @AlexOn1ine in [#6676](https://github.com/rh-hideout/pokeemerald-expansion/pull/6676) +* Fixes Unburden doubling speed when affected by Neutralizing Gas by @PhallenTree in [#6691](https://github.com/rh-hideout/pokeemerald-expansion/pull/6691) +* Fix various Toxic Spikes interactions by @hedara90 in [#6690](https://github.com/rh-hideout/pokeemerald-expansion/pull/6690) +* Fixes Z and Max moves dmg reduction against side protection by @AlexOn1ine in [#6697](https://github.com/rh-hideout/pokeemerald-expansion/pull/6697) +* Fixes Stomping Tantrum not doubling power if asleep or frozen by @AlexOn1ine in [#6719](https://github.com/rh-hideout/pokeemerald-expansion/pull/6719) + +## 🤹 Moves 🤹 +### Fixed +* Gimmick Indicator refactor by @hedara90 in [#6553](https://github.com/rh-hideout/pokeemerald-expansion/pull/6553) + - This frees up a lot of VRAM in battles. +* Animation fixes from lucky adapted to expansion by @hedara90 and @/luckytyphlosion in [#6452](https://github.com/rh-hideout/pokeemerald-expansion/pull/6452) +* Fix Magma Storm getting stuck by @hedara90 in [#6605](https://github.com/rh-hideout/pokeemerald-expansion/pull/6605) +* Fix VRAM load for Black Hole Eclipse by @hedara90 in [#6635](https://github.com/rh-hideout/pokeemerald-expansion/pull/6635) +* Fixes some moves trying to load too much VRAM by @hedara90 in [#6633](https://github.com/rh-hideout/pokeemerald-expansion/pull/6633) + +## 🧶 Items 🧶 +### Fixed +* Fix using items to heal partner in battle by @hedara90 in [#6517](https://github.com/rh-hideout/pokeemerald-expansion/pull/6517) + +## 🤖 Battle AI 🤖 +### Changed +* Add AI thinking cycle count display to frame count by @aronson in [#6509](https://github.com/rh-hideout/pokeemerald-expansion/pull/6509) +* Remove redundant AI defines by @Bassoonian in [#6590](https://github.com/rh-hideout/pokeemerald-expansion/pull/6590) + +## 🧹 Other Cleanup 🧹 +* Added call to ItemId_GetDescription by @pkmnsnfrn in [#6582](https://github.com/rh-hideout/pokeemerald-expansion/pull/6582) +* Remove redundant AI defines by @Bassoonian in [#6590](https://github.com/rh-hideout/pokeemerald-expansion/pull/6590) +* Corrected Dexnav config related comment by @LOuroboros in [#6610](https://github.com/rh-hideout/pokeemerald-expansion/pull/6610) +* Added missing `gMovesInfo` encapsulation by @AsparagusEduardo in [#6656](https://github.com/rh-hideout/pokeemerald-expansion/pull/6656) +* Remove HitmarkerSwapAttackerTarget by @AlexOn1ine in [#6627](https://github.com/rh-hideout/pokeemerald-expansion/pull/6627) +* Remove misleading comment by @AlexOn1ine in [#6684](https://github.com/rh-hideout/pokeemerald-expansion/pull/6684) + +## 🧪 Test Runner 🧪 +### Changed +* Support make check on macOS by @aronson in [#6513](https://github.com/rh-hideout/pokeemerald-expansion/pull/6513) + - The new test runner binary will not support macOS versions older than 10.7 or 11 (for Intel and Apple Silicon respectively). + - macOS users running `make check` may need to confirm with an OS dialog they're willing to open `mgba-rom-test-mac` when run for the first time. + - macOS users running `make check` must have `stdbuf` installed through `brew`'s `coreutils` package. +* Thermal exchange tests by @hedara90 in [#6536](https://github.com/rh-hideout/pokeemerald-expansion/pull/6536) +* Air Balloon AI tests by @Pawkkie in [#6604](https://github.com/rh-hideout/pokeemerald-expansion/pull/6604) +* Big Root tests by @Bassoonian in [#6601](https://github.com/rh-hideout/pokeemerald-expansion/pull/6601) +* Test for Freeze vs Scald thaw by @AlexOn1ine in [#6658](https://github.com/rh-hideout/pokeemerald-expansion/pull/6658) +* Adds a whole bunch of new tests by @Bassoonian in [#6685](https://github.com/rh-hideout/pokeemerald-expansion/pull/6685) + +### Fixed +* Fixed Color Change test referring to the wrong mon by @hedara90 in [#6644](https://github.com/rh-hideout/pokeemerald-expansion/pull/6644) +* Fixed LGPE move test fail with `B_UPDATED_MOVE_DATA` to `GEN_7` by @AsparagusEduardo in [#6657](https://github.com/rh-hideout/pokeemerald-expansion/pull/6657) +* Use correct define for moves in test runner by @AsparagusEduardo in [#6711](https://github.com/rh-hideout/pokeemerald-expansion/pull/6711) + +## 📚 Documentation 📚 +* Consolidated "How to add Pokémon" tutorials by @AsparagusEduardo in [#6541](https://github.com/rh-hideout/pokeemerald-expansion/pull/6541) +* Documentation by @hedara90 in [#6576](https://github.com/rh-hideout/pokeemerald-expansion/pull/6576) +* Add clarification for underlying math in EV caps by @Bassoonian and @i0brendan0 in [#6580](https://github.com/rh-hideout/pokeemerald-expansion/pull/6580) +* Add clarification for EVO_SCRIPT_TRIGGER_DMG by @Bassoonian in [#6579](https://github.com/rh-hideout/pokeemerald-expansion/pull/6579) + +## 📦 Branch Synchronisation 📦 +### pret +* 11 of April in [#6575](https://github.com/rh-hideout/pokeemerald-expansion/pull/6575) + * Align gMPlayTrack_BGM by @DizzyEggg in [pret#2115](https://github.com/pret/pokeemerald/pull/2115) + * GENDER_COUNT in sPlayer/RivalAvatarGfxIds by @AsparagusEduardo in [pret#2117](https://github.com/pret/pokeemerald/pull/2117) + * Fixed init call when using AGBPrint as log handler by @pokemonmasteraaron in [pret#2119](https://github.com/pret/pokeemerald/pull/2119) + * Make linkDirection more robust to member reordering by @cawtds in [pret#2118](https://github.com/pret/pokeemerald/pull/2118) +* 29th of April 2025 in [#6722](https://github.com/rh-hideout/pokeemerald-expansion/pull/6722) + * Rename battle terrain to environment by @Bassoonian in [pret#2014](https://github.com/pret/pokeemerald/pull/2014) + * Fixes for Mirage Tower graphics by @GriffinRichards in [pret#2120](https://github.com/pret/pokeemerald/pull/2120) + * Missing constant in Birch speech dialogue by @estellarc in [pret#2123](https://github.com/pret/pokeemerald/pull/2123) + +## New Contributors +* @malad1211 made their first contribution in [#6510](https://github.com/rh-hideout/pokeemerald-expansion/pull/6510) + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.11.1...expansion/1.11.2 + + + + diff --git a/include/constants/expansion.h b/include/constants/expansion.h index 1935b81cd9..ccac2dad19 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -1,13 +1,13 @@ #ifndef GUARD_CONSTANTS_EXPANSION_H #define GUARD_CONSTANTS_EXPANSION_H -// Last version: 1.11.1 +// Last version: 1.11.2 #define EXPANSION_VERSION_MAJOR 1 #define EXPANSION_VERSION_MINOR 11 #define EXPANSION_VERSION_PATCH 2 // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes. -#define EXPANSION_TAGGED_RELEASE FALSE +#define EXPANSION_TAGGED_RELEASE TRUE #endif From f0ecbce9c7704d4cbe459e95bf97719e8d67aa89 Mon Sep 17 00:00:00 2001 From: Hedara Date: Wed, 30 Apr 2025 11:26:09 +0200 Subject: [PATCH 10/14] Start of 1.11.3 Cycle --- include/constants/expansion.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/constants/expansion.h b/include/constants/expansion.h index ccac2dad19..4c7540bc0d 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -4,10 +4,10 @@ // Last version: 1.11.2 #define EXPANSION_VERSION_MAJOR 1 #define EXPANSION_VERSION_MINOR 11 -#define EXPANSION_VERSION_PATCH 2 +#define EXPANSION_VERSION_PATCH 3 // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes. -#define EXPANSION_TAGGED_RELEASE TRUE +#define EXPANSION_TAGGED_RELEASE FALSE #endif From b451bc3606b01499303bce89e37723dfe1bd354c Mon Sep 17 00:00:00 2001 From: Cafe <46283144+Cafeei@users.noreply.github.com> Date: Wed, 30 Apr 2025 14:45:29 +0400 Subject: [PATCH 11/14] New Lurantis animation (#6725) --- graphics/pokemon/lurantis/anim_front.png | Bin 0 -> 1334 bytes graphics/pokemon/lurantis/front.png | Bin 790 -> 0 bytes src/data/graphics/pokemon.h | 2 +- src/data/pokemon/species_info/gen_7_families.h | 6 +++++- 4 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 graphics/pokemon/lurantis/anim_front.png delete mode 100644 graphics/pokemon/lurantis/front.png diff --git a/graphics/pokemon/lurantis/anim_front.png b/graphics/pokemon/lurantis/anim_front.png new file mode 100644 index 0000000000000000000000000000000000000000..4b34e5e7117fc15d9818fbfb3db421b40293a17c GIT binary patch literal 1334 zcmV-61Px#Fi=cXMF6nqcqlOVV0b7{K=`=GSiqRrh?o!%5I~SGO> z000000ELCkAOHXav`IukRA_wjZ1JFis-(OGkc44A)1b{WY0;G1)0$7zR;l+`YrLt820T6N21en(e6i@X} z^MIVQ={0@s02+jxKf+LoBD8>PGf<}#y1dpqKq+~n;1}l>f)U8&HvlCNh4$n6pB4gH z8anO(dQwWE{IG^!20%tBxY3uQCx-S@n7IUrpjM>BD*zTk(GgTnL~QyyfRsQcE>a;f zM5)lVg{Sn}1^}%!Sp&)B@byf}i*^gxHr2ZZ@)X$@{npydltk;2SIl{%;@_H#sX6WX zK(V3b4p73}GeJXvTF-z<{Yk+nRBHb^`AiM~GozeBnA30Lk^(q~FbNoSuQj6y;aLP! zsg?rJB49*ZQA;UlHHA?#y!6pnEaGuJFkaBbXcge61Be9hNMUgrq2VQyZ-g)lsGdOs z1i*Y8n$icqo&YuqjRye}MbLG`5->oJK%9VfOHh5i08(H8N=3URi~x85k_a7eL!f#D zAb^Gr(4(Sn^&^2w58w|#m;q4nhac?#umFw{v|2wAWF41N(KG@UK;n?F+0iLLB$>k- zxHWE?!5JVg=MMyV4a8mN8<>9sU<2w6z;uY! z#^3RG{2QaMpAQ-+rn7C)lLm^87z1rFK53wsUOE8kzMlpl=G*K)Pw&((`j-cgQhVax zrF|2-fq$?v(Ef_NTQld$!a^(!2$S=JSwP(T2OQjaFUjSVp#1|5ZvWlA-!>rJzEf#> zVJ^}?pp$vOYe2Ytm%f2s-}(nkiMx590;sTb`(G+H_3x&?anDL1lwtqHfcr1hZuM4# z)=EUz`c4pp%3(oG1JKXT&|zM@AH3IV@50ZGuQ<&7WdDHr z$vJ2Jdo%;)`UieCwB<#Or2!EJVOAed#pbAa$KeBK*0lqm?uJv+|MP^dFW54WQ_2MQ zJ4=A751r2>@&DyO+&l*^FJRMKGb^!lwWa~8XO>wcttWfBc{u9Z08G!~7sPzS+M4r# z>UvUu^u7c!03Qgw0s=r&K$JKd4)eSONFhiH9Jom$<4(LK^b%UvP5^{o@{eVKk$dT` z_!B^Gfj)HPJAJ6})W?vBJ`zk1UwXP_g;?Lv*CTHuyam*9tXyuI#WS1$Zo=OJ3TObr z0q`8A0M$?IzF&IelFB8Aw}2||4PUkfz>3h9Wp&~20RH09WoH1a2z_Cf5Z(c*z4&Z1 zaRuo9#_a!l8x;vBV@)jW8?Pd32xkA|TOW0`#{%GS8+?l;_W!MozS?6F%NiJF9z6tQ z%md`oej7qMRW8OifXg>Z2O#_gm>V6CuSHk}1g|1L2tjW{@G5?h!xu&1F9A%%4v;O{ sG9br&Cm`FWT|cdj7>@_zzupG;2d9rbbYMJb3IG5A07*qoM6N<$f@8T}8~^|S literal 0 HcmV?d00001 diff --git a/graphics/pokemon/lurantis/front.png b/graphics/pokemon/lurantis/front.png deleted file mode 100644 index f73999e0d1470085c0540f2bafe3e8efff58d20a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 790 zcmV+x1L^#UP)Px#1ZP1_K>z@;j|==^1poj5Fi=cXMF6nqcqlOVV0b7{K=`=GSiqRrh?o!%5I~S< zczAgD`1rWExWG72U>GO>000000ELCkAOHXW32;bRa{vGi!vFvd!vV){sAK>D0&ht~ zK~zY`#ndrt+dvcm;1eFSO2X7&chO<2p&lA+wM!SPhXr1PiC4QqS~SQs=)m?;TF9DC zC8O2QkP{iwC4(ksum_+2Q{SoSP)X-3g}y;2^uBxVbR38NQ|OvB^ZSWSNnXKP{*(d( zK<#zi!Lk+x(U5&Y$gEMF?|DS4jr)WQ+-hL=p8$zuV4&C&$V&Jp*)`-ul&5ab^UY;k*u>f{aVqDRCcuCgLv zw@L@5hqyxq8sv*WWozRA{SS{OG|}}|5$Jl|x%0^EP5?qiHxGp$V1zh_AAWLp%+80^ zU`V=*vF@t}{RJVc2+-o%r6V0gI>)9rV$0%YsC313++-;=FmAA$eQCE;zJaqyDL2Hh z+M!acMCS9=CV_$T3IK;0o9~ui0pOQBk^sKE&p|~2)XYJ!P6dc$zz@=VL{;Et4i@=X z1r)LT?Avag9I4Q1F{(>|A{N(LvTIoj(E&Fu7?CYfOtgXvPY&R_MNg=gOBvXG;^%`z z0$^gioAY>@RszLL1W>wx57a7OF$Mr@yHjvTp@g+56~JPi08T)g*y36lK!+T-T!3PU zmYE8`=KwY-Uh#dQL{lu`4@k;DVQ`RE0(2aAEs&?x4i z(Z)I0XW3spRQmA@p*Va35zPt!Za4sH=nGKOBSe=a5DBo&!C1W0!ohwk8u?qp18|09 z5pVGDIGAFmN6!F?{&gVq3t^k_ Ua7E Date: Wed, 30 Apr 2025 14:01:45 +0200 Subject: [PATCH 12/14] Updated label workflow (#6729) Co-authored-by: Hedara --- .github/workflows/labels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml index 018e923c40..aa53665e8f 100644 --- a/.github/workflows/labels.yml +++ b/.github/workflows/labels.yml @@ -2,7 +2,7 @@ name: Labels on: pull_request: - types: [opened, labeled, unlabeled] + types: [opened, synchronize, labeled, unlabeled] jobs: label: From d2a4b5ef8480a65c8e849c424c9fd593d0a8fda5 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Wed, 30 Apr 2025 17:18:52 -0400 Subject: [PATCH 13/14] Changed Tackle for Scratch in tests (#6730) --- include/test/battle.h | 18 +- test/battle/ability/aerilate.c | 8 +- test/battle/ability/aftermath.c | 6 +- test/battle/ability/analytic.c | 2 +- test/battle/ability/anger_shell.c | 12 +- test/battle/ability/battle_armor.c | 8 +- test/battle/ability/beads_of_ruin.c | 4 +- test/battle/ability/beast_boost.c | 2 +- test/battle/ability/berserk.c | 12 +- test/battle/ability/clear_body.c | 12 +- test/battle/ability/color_change.c | 6 +- test/battle/ability/commander.c | 28 +-- test/battle/ability/contrary.c | 24 +- test/battle/ability/cotton_down.c | 12 +- test/battle/ability/cud_chew.c | 6 +- test/battle/ability/cute_charm.c | 18 +- test/battle/ability/damp.c | 4 +- test/battle/ability/dancer.c | 20 +- test/battle/ability/defeatist.c | 6 +- test/battle/ability/defiant.c | 8 +- test/battle/ability/disguise.c | 4 +- test/battle/ability/download.c | 6 +- test/battle/ability/dragons_maw.c | 8 +- test/battle/ability/effect_spore.c | 16 +- test/battle/ability/electromorphosis.c | 14 +- test/battle/ability/flame_body.c | 8 +- test/battle/ability/flower_gift.c | 14 +- test/battle/ability/fluffy.c | 8 +- test/battle/ability/galvanize.c | 8 +- test/battle/ability/guard_dog.c | 2 +- test/battle/ability/gulp_missile.c | 22 +- test/battle/ability/harvest.c | 28 +-- test/battle/ability/hyper_cutter.c | 4 +- test/battle/ability/ice_face.c | 42 ++-- test/battle/ability/ice_scales.c | 6 +- test/battle/ability/illusion.c | 8 +- test/battle/ability/inner_focus.c | 8 +- test/battle/ability/intimidate.c | 18 +- test/battle/ability/keen_eye.c | 16 +- test/battle/ability/magician.c | 10 +- test/battle/ability/merciless.c | 4 +- test/battle/ability/minds_eye.c | 10 +- test/battle/ability/mirror_armor.c | 6 +- test/battle/ability/neuroforce.c | 6 +- test/battle/ability/neutralizing_gas.c | 24 +- test/battle/ability/opportunist.c | 14 +- test/battle/ability/own_tempo.c | 8 +- test/battle/ability/parental_bond.c | 12 +- test/battle/ability/pastel_veil.c | 4 +- test/battle/ability/pickup.c | 36 +-- test/battle/ability/pixilate.c | 8 +- test/battle/ability/poison_point.c | 8 +- test/battle/ability/poison_touch.c | 12 +- test/battle/ability/protean.c | 4 +- test/battle/ability/protosynthesis.c | 8 +- test/battle/ability/quark_drive.c | 8 +- test/battle/ability/quick_draw.c | 8 +- test/battle/ability/rattled.c | 10 +- test/battle/ability/refrigerate.c | 8 +- test/battle/ability/rivalry.c | 16 +- test/battle/ability/rocky_payload.c | 8 +- test/battle/ability/scrappy.c | 8 +- test/battle/ability/seed_sower.c | 4 +- test/battle/ability/shed_skin.c | 2 +- test/battle/ability/sheer_force.c | 14 +- test/battle/ability/shield_dust.c | 6 +- test/battle/ability/shields_down.c | 4 +- test/battle/ability/snow_cloak.c | 2 +- test/battle/ability/stamina.c | 8 +- test/battle/ability/stance_change.c | 2 +- test/battle/ability/static.c | 8 +- test/battle/ability/steelworker.c | 8 +- test/battle/ability/stench.c | 26 +- test/battle/ability/super_luck.c | 4 +- test/battle/ability/supreme_overlord.c | 12 +- test/battle/ability/sword_of_ruin.c | 14 +- test/battle/ability/tablets_of_ruin.c | 14 +- test/battle/ability/tangling_hair.c | 18 +- test/battle/ability/tera_shell.c | 12 +- test/battle/ability/thermal_exchange.c | 4 +- test/battle/ability/toxic_chain.c | 6 +- test/battle/ability/toxic_debris.c | 30 +-- test/battle/ability/transistor.c | 8 +- test/battle/ability/vessel_of_ruin.c | 4 +- test/battle/ability/weak_armor.c | 18 +- test/battle/ability/wind_power.c | 8 +- test/battle/ability/zen_mode.c | 4 +- test/battle/ability/zero_to_hero.c | 4 +- test/battle/ai/ai.c | 76 +++--- test/battle/ai/ai_check_viability.c | 2 +- test/battle/ai/ai_choice.c | 30 +-- test/battle/ai/ai_double_ace.c | 4 +- test/battle/ai/ai_flag_predict_switch.c | 2 +- test/battle/ai/ai_flag_risky.c | 16 +- test/battle/ai/ai_powerful_status.c | 18 +- test/battle/ai/ai_switching.c | 234 +++++++++--------- test/battle/exp.c | 20 +- test/battle/form_change/battle_switch.c | 4 +- test/battle/form_change/primal_reversion.c | 16 +- test/battle/gimmick/dynamax.c | 166 ++++++------- test/battle/gimmick/terastal.c | 20 +- test/battle/gimmick/zmove.c | 52 ++-- test/battle/hold_effect/air_balloon.c | 16 +- test/battle/hold_effect/attack_up.c | 4 +- test/battle/hold_effect/berserk_gene.c | 24 +- test/battle/hold_effect/clear_amulet.c | 8 +- test/battle/hold_effect/covert_cloak.c | 6 +- test/battle/hold_effect/critical_hit_up.c | 10 +- test/battle/hold_effect/custap_berry.c | 8 +- test/battle/hold_effect/defense_up.c | 4 +- test/battle/hold_effect/eject_button.c | 30 +-- test/battle/hold_effect/enigma_berry.c | 2 +- test/battle/hold_effect/gems.c | 12 +- test/battle/hold_effect/jaboca_berry.c | 8 +- test/battle/hold_effect/kee_berry.c | 18 +- test/battle/hold_effect/leek.c | 4 +- test/battle/hold_effect/luck_punch.c | 4 +- test/battle/hold_effect/maranga_berry.c | 6 +- test/battle/hold_effect/metronome.c | 30 +-- test/battle/hold_effect/micle_berry.c | 12 +- test/battle/hold_effect/mirror_herb.c | 16 +- test/battle/hold_effect/ogerpon_mask.c | 4 +- test/battle/hold_effect/protective_pads.c | 22 +- test/battle/hold_effect/quick_claw.c | 4 +- test/battle/hold_effect/red_card.c | 82 +++--- test/battle/hold_effect/restore_stats.c | 4 +- test/battle/hold_effect/rowap_berry.c | 10 +- test/battle/hold_effect/scope_lens.c | 4 +- test/battle/hold_effect/shell_bell.c | 8 +- test/battle/hold_effect/special_attack_up.c | 4 +- test/battle/hold_effect/special_defense_up.c | 4 +- test/battle/hold_effect/speed_up.c | 4 +- .../battle/item_effect/heal_and_cure_status.c | 2 +- test/battle/item_effect/increase_stat.c | 40 +-- test/battle/item_effect/restore_pp.c | 12 +- test/battle/item_effect/revive.c | 16 +- test/battle/move.c | 24 +- test/battle/move_effect/ally_switch.c | 14 +- test/battle/move_effect/attack_down.c | 6 +- test/battle/move_effect/attack_down_2.c | 6 +- test/battle/move_effect/attack_spatk_up.c | 6 +- test/battle/move_effect/attack_up.c | 6 +- test/battle/move_effect/attack_up_2.c | 6 +- test/battle/move_effect/attack_up_user_ally.c | 26 +- test/battle/move_effect/beak_blast.c | 16 +- test/battle/move_effect/belch.c | 8 +- test/battle/move_effect/belly_drum.c | 12 +- test/battle/move_effect/bide.c | 8 +- test/battle/move_effect/charge.c | 12 +- test/battle/move_effect/coaching.c | 4 +- test/battle/move_effect/defense_curl.c | 6 +- test/battle/move_effect/defense_down.c | 6 +- test/battle/move_effect/defense_down_2.c | 6 +- test/battle/move_effect/defense_up.c | 6 +- test/battle/move_effect/defense_up_2.c | 6 +- test/battle/move_effect/defense_up_3.c | 6 +- test/battle/move_effect/defog.c | 10 +- test/battle/move_effect/destiny_bond.c | 6 +- test/battle/move_effect/dragon_cheer.c | 12 +- test/battle/move_effect/dynamax_double_dmg.c | 2 +- test/battle/move_effect/electrify.c | 14 +- test/battle/move_effect/encore.c | 4 +- test/battle/move_effect/focus_energy.c | 4 +- test/battle/move_effect/focus_punch.c | 2 +- test/battle/move_effect/follow_me.c | 24 +- test/battle/move_effect/glaive_rush.c | 36 +-- test/battle/move_effect/haze.c | 6 +- test/battle/move_effect/instruct.c | 72 +++--- test/battle/move_effect/ion_deluge.c | 8 +- test/battle/move_effect/laser_focus.c | 4 +- test/battle/move_effect/last_resort.c | 18 +- test/battle/move_effect/lucky_chant.c | 4 +- test/battle/move_effect/mirror_move.c | 12 +- test/battle/move_effect/powder.c | 4 +- test/battle/move_effect/protect.c | 70 +++--- test/battle/move_effect/pursuit.c | 2 +- test/battle/move_effect/rage_fist.c | 32 +-- test/battle/move_effect/reflect.c | 32 +-- test/battle/move_effect/reflect_type.c | 2 +- test/battle/move_effect/retaliate.c | 4 +- test/battle/move_effect/revelation_dance.c | 2 +- test/battle/move_effect/revival_blessing.c | 4 +- test/battle/move_effect/shed_tail.c | 6 +- test/battle/move_effect/shell_trap.c | 36 +-- test/battle/move_effect/sleep_talk.c | 18 +- test/battle/move_effect/speed_swap.c | 16 +- test/battle/move_effect/spicy_extract.c | 14 +- test/battle/move_effect/stealth_rock.c | 4 +- test/battle/move_effect/stockpile.c | 16 +- test/battle/move_effect/sucker_punch.c | 6 +- test/battle/move_effect/tidy_up.c | 4 +- test/battle/move_effect/upper_hand.c | 2 +- test/battle/move_effect_secondary/flinch.c | 4 +- .../battle/move_effect_secondary/ion_deluge.c | 34 +-- .../battle/move_effect_secondary/syrup_bomb.c | 4 +- .../move_effects_combined/triple_arrows.c | 4 +- test/battle/move_flags/recoil.c | 4 +- test/battle/sleep_clause.c | 40 +-- test/battle/status1/burn.c | 4 +- test/battle/status2/confusion.c | 10 +- test/battle/trainer_slides.c | 8 +- test/battle/weather/snow.c | 4 +- test/pokemon.c | 12 +- 203 files changed, 1437 insertions(+), 1435 deletions(-) diff --git a/include/test/battle.h b/include/test/battle.h index 1c044fd6e2..b524b47a7b 100644 --- a/include/test/battle.h +++ b/include/test/battle.h @@ -114,12 +114,12 @@ * not paralyzed without specifying the exact outputs which led to that. * * As a final example, to test that Meditate works you might: - * 1. Put a Wobbuffet that knows Meditate and Tackle in your party. + * 1. Put a Wobbuffet that knows Meditate and Scratch in your party. * 2. Battle a wild Wobbuffet. - * 3. Use Tackle and note the amount the HP bar reduced. + * 3. Use Scratch and note the amount the HP bar reduced. * 4. Battle a wild Wobbuffet. * 5. Use Meditate and that the stat change animation and message play. - * 6. Use Tackle and check that the HP bar reduced by more than in 3. + * 6. Use Scratch and check that the HP bar reduced by more than in 3. * * This can be translated to an automated test as follows: * @@ -129,19 +129,19 @@ * PARAMETRIZE { raiseAttack = FALSE; } * PARAMETRIZE { raiseAttack = TRUE; } * GIVEN { - * ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + * ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); * PLAYER(SPECIES_WOBBUFFET); * OPPONENT(SPECIES_WOBBUFFET); * } WHEN { * if (raiseAttack) TURN { MOVE(player, MOVE_MEDITATE); } // 5. - * TURN { MOVE(player, MOVE_TACKLE); } // 3 & 6. + * TURN { MOVE(player, MOVE_SCRATCH); } // 3 & 6. * } SCENE { * if (raiseAttack) { * ANIMATION(ANIM_TYPE_MOVE, MOVE_MEDITATE, player); * ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); // 5. * MESSAGE("Wobbuffet's attack rose!"); // 5. * } - * ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + * ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); * HP_BAR(opponent, captureDamage: &results[i].damage); // 3 & 6. * } FINALLY { * EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); // 6. @@ -344,7 +344,7 @@ * battles to choose the target (when necessary), and allowed: FALSE is * used to reject an illegal move e.g. a Disabled one. WITH_RNG allows * the move to specify an explicit outcome for an RNG tag. - * MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); + * MOVE(playerLeft, MOVE_SCRATCH, target: opponentRight); * If the battler does not have an explicit Moves specified the moveset * will be populated based on the MOVEs it uses. * @@ -372,7 +372,7 @@ * ID must be specified, and party index and move slot if applicable, e.g: * USE_ITEM(player, ITEM_X_ATTACK); * USE_ITEM(player, ITEM_POTION, partyIndex: 0); - * USE_ITEM(player, ITEM_LEPPA_BERRY, partyIndex: 0, move: MOVE_TACKLE); + * USE_ITEM(player, ITEM_LEPPA_BERRY, partyIndex: 0, move: MOVE_SCRATCH); * * SCENE * Contains an abridged description of the UI during the THEN. The order @@ -389,7 +389,7 @@ * ANIMATION(type, animId, [battler], [target:]) * Causes the test to fail if the animation does not play. A common use * of this command is to check if a move was successful, e.g.: - * ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + * ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); * target can only be specified for ANIM_TYPE_MOVE. * * EXPERIENCE_BAR(battler, [exp: | captureGainedExp:]) diff --git a/test/battle/ability/aerilate.c b/test/battle/ability/aerilate.c index efd6776d9b..7430d0ce3e 100644 --- a/test/battle/ability/aerilate.c +++ b/test/battle/ability/aerilate.c @@ -3,8 +3,8 @@ ASSUMPTIONS { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); } SINGLE_BATTLE_TEST("Aerilate turns a Normal-type move into Flying-type move") @@ -13,10 +13,10 @@ SINGLE_BATTLE_TEST("Aerilate turns a Normal-type move into Flying-type move") PLAYER(SPECIES_MEGANIUM); OPPONENT(SPECIES_SALAMENCE) { Item(ITEM_SALAMENCITE); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE, gimmick: GIMMICK_MEGA); } + TURN { MOVE(opponent, MOVE_SCRATCH, gimmick: GIMMICK_MEGA); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("It's super effective!"); } } diff --git a/test/battle/ability/aftermath.c b/test/battle/ability/aftermath.c index 10405edad6..16ffad7adb 100644 --- a/test/battle/ability/aftermath.c +++ b/test/battle/ability/aftermath.c @@ -9,10 +9,10 @@ SINGLE_BATTLE_TEST("Aftermath damages the attacker by 1/4th of its max HP if fai PLAYER(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN {MOVE(opponent, MOVE_TACKLE);} + TURN {MOVE(opponent, MOVE_SCRATCH);} } SCENE { - MESSAGE("The opposing Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("The opposing Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("Voltorb fainted!"); ABILITY_POPUP(player, ABILITY_AFTERMATH); HP_BAR(opponent, captureDamage: &aftermathDamage); diff --git a/test/battle/ability/analytic.c b/test/battle/ability/analytic.c index 526e0983f4..5e50c24d59 100644 --- a/test/battle/ability/analytic.c +++ b/test/battle/ability/analytic.c @@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Analytic increases the power of moves by 30% if it's the las PLAYER(SPECIES_MAGNEMITE) { Ability(ABILITY_ANALYTIC); Speed(speed); } OPPONENT(SPECIES_WOBBUFFET) { Speed(2); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { diff --git a/test/battle/ability/anger_shell.c b/test/battle/ability/anger_shell.c index 0dde568ca0..875088c945 100644 --- a/test/battle/ability/anger_shell.c +++ b/test/battle/ability/anger_shell.c @@ -14,13 +14,13 @@ SINGLE_BATTLE_TEST("Anger Shell activates only if the target had more than 50% o PARAMETRIZE { hp = 254; activates = TRUE; } GIVEN { - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); PLAYER(SPECIES_KLAWF) { Ability(ABILITY_ANGER_SHELL); MaxHP(maxHp); HP(hp); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); if (activates) { ABILITY_POPUP(player, ABILITY_ANGER_SHELL); } else { @@ -41,13 +41,13 @@ SINGLE_BATTLE_TEST("Anger Shell lowers Def/Sp.Def by 1 and raises Atk/Sp.Atk/Spd { u16 maxHp = 500; GIVEN { - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); PLAYER(SPECIES_KLAWF) { Ability(ABILITY_ANGER_SHELL); MaxHP(maxHp); HP(maxHp / 2 + 1); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(player, ABILITY_ANGER_SHELL); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Klawf's Defense fell!"); diff --git a/test/battle/ability/battle_armor.c b/test/battle/ability/battle_armor.c index 9424d57e59..b5e28c5a0d 100644 --- a/test/battle/ability/battle_armor.c +++ b/test/battle/ability/battle_armor.c @@ -13,9 +13,9 @@ SINGLE_BATTLE_TEST("Battle Armor and Shell Armor block critical hits") PLAYER(SPECIES_WOBBUFFET); OPPONENT(species) { Ability(ability); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE, criticalHit: TRUE); } + TURN { MOVE(player, MOVE_SCRATCH, criticalHit: TRUE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); NOT MESSAGE("A critical hit!"); } } @@ -41,9 +41,9 @@ SINGLE_BATTLE_TEST("Mold Breaker, Teravolt and Turboblaze ignore Battle Armor an PLAYER(species1) { Ability(ability1); } OPPONENT(species2) { Ability(ability2); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE, criticalHit: TRUE); } + TURN { MOVE(player, MOVE_SCRATCH, criticalHit: TRUE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); MESSAGE("A critical hit!"); } } diff --git a/test/battle/ability/beads_of_ruin.c b/test/battle/ability/beads_of_ruin.c index 63b07d7c8a..cfcfb17467 100644 --- a/test/battle/ability/beads_of_ruin.c +++ b/test/battle/ability/beads_of_ruin.c @@ -40,7 +40,7 @@ SINGLE_BATTLE_TEST("Beads of Ruin's message displays correctly after all battler OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_RUINATION); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_RUINATION); } } SCENE { HP_BAR(opponent, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, opponent); @@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Beads of Ruin's message displays correctly after all battler OPPONENT(SPECIES_CHI_YU); } WHEN { TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_RUINATION); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_RUINATION); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); diff --git a/test/battle/ability/beast_boost.c b/test/battle/ability/beast_boost.c index fde1683104..8ce0c55b9e 100644 --- a/test/battle/ability/beast_boost.c +++ b/test/battle/ability/beast_boost.c @@ -14,7 +14,7 @@ SINGLE_BATTLE_TEST("Beast Boost boosts the most proficient stat when knocking ou OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(1); } OPPONENT(SPECIES_WOBBUFFET) { Speed(1); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); SEND_OUT(opponent, 1); } } SCENE { ABILITY_POPUP(player, ABILITY_BEAST_BOOST); switch(i) { diff --git a/test/battle/ability/berserk.c b/test/battle/ability/berserk.c index c96bb260f8..e4d625ebc5 100644 --- a/test/battle/ability/berserk.c +++ b/test/battle/ability/berserk.c @@ -14,13 +14,13 @@ SINGLE_BATTLE_TEST("Berserk activates only if the target had more than 50% of it PARAMETRIZE { hp = 254; activates = TRUE; } GIVEN { - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); PLAYER(SPECIES_DRAMPA) { Ability(ABILITY_BERSERK); MaxHP(maxHp); HP(hp); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); if (activates) { ABILITY_POPUP(player, ABILITY_BERSERK); } else { @@ -37,13 +37,13 @@ SINGLE_BATTLE_TEST("Berserk raises Sp.Atk by 1") { u16 maxHp = 500; GIVEN { - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); PLAYER(SPECIES_DRAMPA) { Ability(ABILITY_BERSERK); MaxHP(maxHp); HP(maxHp / 2 + 1); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(player, ABILITY_BERSERK); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Drampa's Sp. Atk rose!"); diff --git a/test/battle/ability/clear_body.c b/test/battle/ability/clear_body.c index 4b9273edc1..46185791a3 100644 --- a/test/battle/ability/clear_body.c +++ b/test/battle/ability/clear_body.c @@ -15,8 +15,8 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke prevent intimid PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }; OPPONENT(species) { Ability(ability); }; } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(player, captureDamage: &turnOneHit); @@ -284,11 +284,11 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent A PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; burned = FALSE; } PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; burned = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET) OPPONENT(species) { Ability(ability); if (burned) Status1(STATUS1_BURN); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { NOT ABILITY_POPUP(opponent, ability); HP_BAR(player, captureDamage: &results[i].damage); @@ -437,11 +437,11 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke protect from Pr PLAYER(species) { Ability(ability); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, move); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, move); MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); NONE_OF { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); if (move == MOVE_KINGS_SHIELD) { MESSAGE("Wobbuffet's Attack fell!"); } else if (move == MOVE_SILK_TRAP) { diff --git a/test/battle/ability/color_change.c b/test/battle/ability/color_change.c index 42932a7d58..b6af05fdbe 100644 --- a/test/battle/ability/color_change.c +++ b/test/battle/ability/color_change.c @@ -21,13 +21,13 @@ SINGLE_BATTLE_TEST("Color Change does not change the type when hit by a move tha { GIVEN { ASSUME(gSpeciesInfo[SPECIES_KECLEON].types[0] == TYPE_NORMAL || gSpeciesInfo[SPECIES_KECLEON].types[1] == TYPE_NORMAL); - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_KECLEON) { Ability(ABILITY_COLOR_CHANGE); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); NONE_OF { ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE); MESSAGE("The opposing Kecleon's Color Change made it the Normal type!"); diff --git a/test/battle/ability/commander.c b/test/battle/ability/commander.c index a50eba7b8c..c64590a3a3 100644 --- a/test/battle/ability/commander.c +++ b/test/battle/ability/commander.c @@ -46,11 +46,11 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri avoids moves targetted towards it") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(opponentRight, MOVE_POUND, target: playerRight); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(opponentRight, MOVE_POUND, target: playerRight); } } SCENE { ABILITY_POPUP(playerLeft, ABILITY_COMMANDER); MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); MESSAGE("The opposing Wobbuffet's attack missed!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, opponentRight); } @@ -99,11 +99,11 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri still avoids moves even when the attacke OPPONENT(SPECIES_MACHAMP) { Ability(ABILITY_NO_GUARD); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); } } SCENE { ABILITY_POPUP(playerLeft, ABILITY_COMMANDER); MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); MESSAGE("The opposing Machamp's attack missed!"); } } @@ -160,7 +160,7 @@ DOUBLE_BATTLE_TEST("Commander prevents Red Card from working while Commander is OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); } } SCENE { ABILITY_POPUP(playerLeft, ABILITY_COMMANDER); MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!"); @@ -315,10 +315,10 @@ DOUBLE_BATTLE_TEST("Commander Attacker is kept (Dondozo Left Slot)") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentRight, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(opponentRight, MOVE_SCRATCH, target: opponentLeft); } TURN { SWITCH(playerLeft, 2); MOVE(opponentLeft, MOVE_SURF); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); ABILITY_POPUP(playerRight, ABILITY_COMMANDER); MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, opponentLeft); @@ -338,10 +338,10 @@ DOUBLE_BATTLE_TEST("Commander Attacker is kept (Dondozo Right Slot)") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentRight, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(opponentRight, MOVE_SCRATCH, target: opponentLeft); } TURN { SWITCH(playerRight, 2); MOVE(opponentLeft, MOVE_SURF); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); ABILITY_POPUP(playerLeft, ABILITY_COMMANDER); MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!"); MESSAGE("The opposing Wobbuffet's attack missed!"); @@ -362,16 +362,16 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri does not attack if Dondozo faints the sa } WHEN { TURN { SWITCH(playerLeft, 2); - MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); - MOVE(opponentRight, MOVE_TACKLE, target: playerRight); + MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); + MOVE(opponentRight, MOVE_SCRATCH, target: playerRight); MOVE(playerRight, MOVE_CELEBRATE); SEND_OUT(playerLeft, 0); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); HP_BAR(playerLeft); MESSAGE("Dondozo fainted!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); HP_BAR(playerRight); NOT MESSAGE("Tatsugiri used Celebrate!"); } @@ -432,7 +432,7 @@ DOUBLE_BATTLE_TEST("Commander will not activate if Dondozo fainted right before OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentRight, MOVE_TACKLE, target: playerRight); MOVE(playerLeft, MOVE_SHED_TAIL); SEND_OUT(playerLeft, 2); SEND_OUT(playerRight, 3); } + TURN { MOVE(opponentRight, MOVE_SCRATCH, target: playerRight); MOVE(playerLeft, MOVE_SHED_TAIL); SEND_OUT(playerLeft, 2); SEND_OUT(playerRight, 3); } } SCENE { NOT ABILITY_POPUP(playerLeft, ABILITY_COMMANDER); } diff --git a/test/battle/ability/contrary.c b/test/battle/ability/contrary.c index 3c9c3e6dff..e174427406 100644 --- a/test/battle/ability/contrary.c +++ b/test/battle/ability/contrary.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); } SINGLE_BATTLE_TEST("Contrary raises Attack when Intimidated in a single battle", s16 damage) @@ -15,7 +15,7 @@ SINGLE_BATTLE_TEST("Contrary raises Attack when Intimidated in a single battle", PLAYER(SPECIES_MIGHTYENA) { Ability(ABILITY_INTIMIDATE); } OPPONENT(SPECIES_SPINDA) { Ability(ability); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, ABILITY_INTIMIDATE); if (ability == ABILITY_CONTRARY) { @@ -45,7 +45,7 @@ DOUBLE_BATTLE_TEST("Contrary raises Attack when Intimidated in a double battle", OPPONENT(SPECIES_SPINDA) { Ability(abilityLeft); } OPPONENT(SPECIES_SPINDA) { Ability(abilityRight); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(opponentRight, MOVE_TACKLE, target: playerRight); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(opponentRight, MOVE_SCRATCH, target: playerRight); } } SCENE { ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); if (abilityLeft == ABILITY_CONTRARY) { @@ -130,11 +130,11 @@ SINGLE_BATTLE_TEST("Contrary lowers a stat after using a move which would normal PLAYER(SPECIES_WOBBUFFET) { Defense(102); } OPPONENT(SPECIES_SPINDA) { Ability(ability); Attack(100); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(opponent, MOVE_SWORDS_DANCE); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - MESSAGE("The opposing Spinda used Tackle!"); + MESSAGE("The opposing Spinda used Scratch!"); HP_BAR(player, captureDamage: &results[i].damageBefore); //MESSAGE("The opposing Spinda used Swords Dance!"); @@ -148,7 +148,7 @@ SINGLE_BATTLE_TEST("Contrary lowers a stat after using a move which would normal MESSAGE("The opposing Spinda's Attack sharply rose!"); } - // MESSAGE("The opposing Spinda used Tackle!"); + // MESSAGE("The opposing Spinda used Scratch!"); HP_BAR(player, captureDamage: &results[i].damageAfter); } FINALLY { @@ -167,7 +167,7 @@ SINGLE_BATTLE_TEST("Contrary raises a stat after using a move which would normal PLAYER(SPECIES_WOBBUFFET) { Speed(3); } OPPONENT(SPECIES_SPINDA) { Ability(ability); Speed(2); } } WHEN { - TURN { MOVE(player, MOVE_GROWL); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_GROWL); MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet used Growl!"); if (ability == ABILITY_CONTRARY) { @@ -180,7 +180,7 @@ SINGLE_BATTLE_TEST("Contrary raises a stat after using a move which would normal MESSAGE("The opposing Spinda's Attack fell!"); } - MESSAGE("The opposing Spinda used Tackle!"); + MESSAGE("The opposing Spinda used Scratch!"); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { @@ -198,11 +198,11 @@ SINGLE_BATTLE_TEST("Contrary lowers a stat after using a move which would normal PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SPINDA) { Ability(ability); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(opponent, MOVE_BELLY_DRUM); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - MESSAGE("The opposing Spinda used Tackle!"); + MESSAGE("The opposing Spinda used Scratch!"); HP_BAR(player, captureDamage: &results[i].damageBefore); if (ability == ABILITY_CONTRARY) { diff --git a/test/battle/ability/cotton_down.c b/test/battle/ability/cotton_down.c index 02a0f18f63..0dd02c42d9 100644 --- a/test/battle/ability/cotton_down.c +++ b/test/battle/ability/cotton_down.c @@ -7,9 +7,9 @@ SINGLE_BATTLE_TEST("Cotton Down drops speed by one of opposing battler if hit by PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_ELDEGOSS) { Ability(ABILITY_COTTON_DOWN); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ABILITY_POPUP(opponent, ABILITY_COTTON_DOWN); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Speed fell!"); @@ -46,9 +46,9 @@ DOUBLE_BATTLE_TEST("Cotton Down drops speed by one of all other battlers on the OPPONENT(SPECIES_ELDEGOSS) { Ability(ABILITY_COTTON_DOWN); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); ABILITY_POPUP(opponentLeft, ABILITY_COTTON_DOWN); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); MESSAGE("Wobbuffet's Speed fell!"); @@ -71,9 +71,9 @@ DOUBLE_BATTLE_TEST("Cotton Down correctly gets blocked by stat reduction prevent OPPONENT(SPECIES_ELDEGOSS) { Ability(ABILITY_COTTON_DOWN); } OPPONENT(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); ABILITY_POPUP(opponentLeft, ABILITY_COTTON_DOWN); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); diff --git a/test/battle/ability/cud_chew.c b/test/battle/ability/cud_chew.c index 9ac5593474..486e2e9dac 100644 --- a/test/battle/ability/cud_chew.c +++ b/test/battle/ability/cud_chew.c @@ -5,14 +5,14 @@ SINGLE_BATTLE_TEST("Cud Chew will activate Kee Berry effect again on the next tu { GIVEN { ASSUME(gItemsInfo[ITEM_KEE_BERRY].holdEffect == HOLD_EFFECT_KEE_BERRY); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_TAUROS_PALDEA_COMBAT) { Ability(ABILITY_CUD_CHEW); Item(ITEM_KEE_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_CELEBRATE);} } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); diff --git a/test/battle/ability/cute_charm.c b/test/battle/ability/cute_charm.c index 55e64b3226..0bba66b8ac 100644 --- a/test/battle/ability/cute_charm.c +++ b/test/battle/ability/cute_charm.c @@ -4,10 +4,10 @@ SINGLE_BATTLE_TEST("Cute Charm inflicts infatuation on contact") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(!MoveMakesContact(MOVE_SWIFT)); PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); } OPPONENT(SPECIES_CLEFAIRY) { Gender(MON_FEMALE); Ability(ABILITY_CUTE_CHARM); } @@ -37,12 +37,12 @@ SINGLE_BATTLE_TEST("Cute Charm cannot infatuate same gender") PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); } OPPONENT(SPECIES_CLEFAIRY) { Gender(MON_MALE); Ability(ABILITY_CUTE_CHARM); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); NOT ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); } } @@ -51,12 +51,12 @@ SINGLE_BATTLE_TEST("Cute Charm triggers 30% of the time") PASSES_RANDOMLY(3, 10, RNG_CUTE_CHARM); GIVEN { ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); } OPPONENT(SPECIES_CLEFAIRY) { Gender(MON_FEMALE); Ability(ABILITY_CUTE_CHARM); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player); diff --git a/test/battle/ability/damp.c b/test/battle/ability/damp.c index 1088a7a17e..030e698d8e 100644 --- a/test/battle/ability/damp.c +++ b/test/battle/ability/damp.c @@ -60,12 +60,12 @@ SINGLE_BATTLE_TEST("Damp prevents explosion-like moves from self") SINGLE_BATTLE_TEST("Damp prevents damage from Aftermath") { GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_PARAS) { Ability(ABILITY_DAMP); } OPPONENT(SPECIES_VOLTORB) { Ability(ABILITY_AFTERMATH); HP(1); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); SEND_OUT(opponent, 1); } } SCENE { ABILITY_POPUP(opponent, ABILITY_AFTERMATH); ABILITY_POPUP(player, ABILITY_DAMP); diff --git a/test/battle/ability/dancer.c b/test/battle/ability/dancer.c index de33121e13..b456d9d79a 100644 --- a/test/battle/ability/dancer.c +++ b/test/battle/ability/dancer.c @@ -201,16 +201,16 @@ DOUBLE_BATTLE_TEST("Dancer-called move doesn't update move to be Instructed") { GIVEN { ASSUME(IsDanceMove(MOVE_DRAGON_DANCE)); - ASSUME(!IsMoveInstructBanned(MOVE_TACKLE)); + ASSUME(!IsMoveInstructBanned(MOVE_SCRATCH)); ASSUME(GetMoveEffect(MOVE_INSTRUCT) == EFFECT_INSTRUCT); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_ORICORIO); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(playerRight, MOVE_DRAGON_DANCE); MOVE(opponentRight, MOVE_INSTRUCT, target: opponentLeft); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(playerRight, MOVE_DRAGON_DANCE); MOVE(opponentRight, MOVE_INSTRUCT, target: opponentLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DANCE, playerRight); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); ABILITY_POPUP(opponentLeft, ABILITY_DANCER); @@ -221,7 +221,7 @@ DOUBLE_BATTLE_TEST("Dancer-called move doesn't update move to be Instructed") ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DANCE, opponentLeft); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); } } @@ -311,9 +311,9 @@ DOUBLE_BATTLE_TEST("Dancer correctly restores move targets") OPPONENT(SPECIES_ORICORIO) { Speed(5); } } WHEN { TURN { MOVE(playerLeft, MOVE_REVELATION_DANCE, target: opponentLeft); - MOVE(opponentRight, MOVE_TACKLE, target: playerRight); - MOVE(playerRight, MOVE_TACKLE, target: opponentRight); - MOVE(opponentLeft, MOVE_TACKLE, target: playerRight); } + MOVE(opponentRight, MOVE_SCRATCH, target: playerRight); + MOVE(playerRight, MOVE_SCRATCH, target: opponentRight); + MOVE(opponentLeft, MOVE_SCRATCH, target: playerRight); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_REVELATION_DANCE, playerLeft); HP_BAR(opponentLeft); @@ -326,11 +326,11 @@ DOUBLE_BATTLE_TEST("Dancer correctly restores move targets") ABILITY_POPUP(opponentRight, ABILITY_DANCER); ANIMATION(ANIM_TYPE_MOVE, MOVE_REVELATION_DANCE, opponentRight); HP_BAR(playerLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); HP_BAR(playerRight); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); HP_BAR(opponentRight); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); HP_BAR(playerRight); } } diff --git a/test/battle/ability/defeatist.c b/test/battle/ability/defeatist.c index 18d8186a50..16f7c406ee 100644 --- a/test/battle/ability/defeatist.c +++ b/test/battle/ability/defeatist.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_ECHOED_VOICE) == DAMAGE_CATEGORY_SPECIAL); } @@ -16,9 +16,9 @@ SINGLE_BATTLE_TEST("Defeatist halves Attack when HP <= 50%", s16 damage) PLAYER(SPECIES_ARCHEN) { Ability(ABILITY_DEFEATIST); HP(hp), MaxHP(400);} OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); } FINALLY { diff --git a/test/battle/ability/defiant.c b/test/battle/ability/defiant.c index b1bd102453..5ec4ebb093 100644 --- a/test/battle/ability/defiant.c +++ b/test/battle/ability/defiant.c @@ -16,7 +16,7 @@ DOUBLE_BATTLE_TEST("Defiant sharply raises player's Attack after Intimidate") OPPONENT(SPECIES_GYARADOS) { Ability(ABILITY_INTIMIDATE); } OPPONENT(SPECIES_ARBOK) { Ability(ABILITY_INTIMIDATE); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target:opponentLeft); MOVE(playerRight, MOVE_TACKLE, target:opponentRight); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target:opponentLeft); MOVE(playerRight, MOVE_SCRATCH, target:opponentRight); } } SCENE { //1st mon Intimidate ABILITY_POPUP(opponentLeft, ABILITY_INTIMIDATE); @@ -74,7 +74,7 @@ DOUBLE_BATTLE_TEST("Defiant sharply raises opponent's Attack after Intimidate") PLAYER(SPECIES_GYARADOS) { Ability(ABILITY_INTIMIDATE); } PLAYER(SPECIES_ARBOK) { Ability(ABILITY_INTIMIDATE); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target:playerLeft); MOVE(opponentRight, MOVE_TACKLE, target:playerRight); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target:playerLeft); MOVE(opponentRight, MOVE_SCRATCH, target:playerRight); } } SCENE { //1st mon Intimidate ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); @@ -207,9 +207,9 @@ DOUBLE_BATTLE_TEST("Defiant is activated by Cotton Down for non-ally pokemon") OPPONENT(SPECIES_ELDEGOSS) { Ability(ABILITY_COTTON_DOWN); } OPPONENT(SPECIES_MANKEY) { Ability(ABILITY_DEFIANT); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); ABILITY_POPUP(opponentLeft, ABILITY_COTTON_DOWN); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); diff --git a/test/battle/ability/disguise.c b/test/battle/ability/disguise.c index b1d854f0cf..ef00c1fe93 100644 --- a/test/battle/ability/disguise.c +++ b/test/battle/ability/disguise.c @@ -143,12 +143,12 @@ SINGLE_BATTLE_TEST("Disguised Mimikyu's types revert back to Ghost/Fairy when Di OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SOAK); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(opponent, MOVE_SHADOW_CLAW); } } SCENE { MESSAGE("The opposing Wobbuffet used Soak!"); MESSAGE("Mimikyu transformed into the Water type!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); ABILITY_POPUP(player, ABILITY_DISGUISE); MESSAGE("The opposing Wobbuffet used Shadow Claw!"); MESSAGE("It's super effective!"); diff --git a/test/battle/ability/download.c b/test/battle/ability/download.c index eec380e421..7219e32329 100644 --- a/test/battle/ability/download.c +++ b/test/battle/ability/download.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_TRI_ATTACK) == DAMAGE_CATEGORY_SPECIAL); } @@ -16,7 +16,7 @@ SINGLE_BATTLE_TEST("Download raises Attack if player has lower Def than Sp. Def" PLAYER(SPECIES_WOBBUFFET) { Defense(100); SpDefense(200); } OPPONENT(SPECIES_PORYGON) { Ability(ability); Attack(100); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (ability == ABILITY_DOWNLOAD) { @@ -67,7 +67,7 @@ SINGLE_BATTLE_TEST("Download doesn't activate if target hasn't been sent out yet OPPONENT(SPECIES_PORYGON2) { Ability(ability); Defense(100); SpDefense(200); Speed(200); } } WHEN { TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TRI_ATTACK); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_TRI_ATTACK); } } SCENE { HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); diff --git a/test/battle/ability/dragons_maw.c b/test/battle/ability/dragons_maw.c index d7e1ebd793..64280cfb5a 100644 --- a/test/battle/ability/dragons_maw.c +++ b/test/battle/ability/dragons_maw.c @@ -6,15 +6,15 @@ SINGLE_BATTLE_TEST("Dragon's Maw increases Dragon-type move damage", s16 damage) u32 move; u16 ability; - PARAMETRIZE { move = MOVE_TACKLE; ability = ABILITY_KLUTZ; } - PARAMETRIZE { move = MOVE_TACKLE; ability = ABILITY_DRAGONS_MAW; } + PARAMETRIZE { move = MOVE_SCRATCH; ability = ABILITY_KLUTZ; } + PARAMETRIZE { move = MOVE_SCRATCH; ability = ABILITY_DRAGONS_MAW; } PARAMETRIZE { move = MOVE_DRAGON_CLAW; ability = ABILITY_KLUTZ; } PARAMETRIZE { move = MOVE_DRAGON_CLAW; ability = ABILITY_DRAGONS_MAW; } PARAMETRIZE { move = MOVE_DRAGON_BREATH; ability = ABILITY_KLUTZ; } PARAMETRIZE { move = MOVE_DRAGON_BREATH; ability = ABILITY_DRAGONS_MAW; } GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) != TYPE_DRAGON); + ASSUME(GetMoveType(MOVE_SCRATCH) != TYPE_DRAGON); ASSUME(GetMoveType(MOVE_DRAGON_CLAW) == TYPE_DRAGON); ASSUME(GetMoveType(MOVE_DRAGON_BREATH) == TYPE_DRAGON); ASSUME(GetMoveCategory(MOVE_DRAGON_CLAW) == DAMAGE_CATEGORY_PHYSICAL); @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Dragon's Maw increases Dragon-type move damage", s16 damage) } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { - EXPECT_EQ(results[0].damage, results[1].damage); // Tackle should be unaffected + EXPECT_EQ(results[0].damage, results[1].damage); // Scratch should be unaffected EXPECT_MUL_EQ(results[2].damage, Q_4_12(1.5), results[3].damage); // Dragon Claw should be affected EXPECT_MUL_EQ(results[4].damage, Q_4_12(1.5), results[5].damage); // Dragon Breath should be affected } diff --git a/test/battle/ability/effect_spore.c b/test/battle/ability/effect_spore.c index 06ac84f39a..57f5399b53 100644 --- a/test/battle/ability/effect_spore.c +++ b/test/battle/ability/effect_spore.c @@ -5,10 +5,10 @@ SINGLE_BATTLE_TEST("Effect Spore only inflicts status on contact") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(!MoveMakesContact(MOVE_SWIFT)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } @@ -37,11 +37,11 @@ SINGLE_BATTLE_TEST("Effect Spore causes poison 9% of the time") PASSES_RANDOMLY(9, 100, RNG_EFFECT_SPORE); GIVEN { ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN {} } SCENE { ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE); @@ -56,11 +56,11 @@ SINGLE_BATTLE_TEST("Effect Spore causes paralysis 10% of the time") PASSES_RANDOMLY(10, 100, RNG_EFFECT_SPORE); GIVEN { ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN {} } SCENE { ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE); @@ -75,11 +75,11 @@ SINGLE_BATTLE_TEST("Effect Spore causes sleep 11% of the time") PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE); GIVEN { ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN {} } SCENE { ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE); diff --git a/test/battle/ability/electromorphosis.c b/test/battle/ability/electromorphosis.c index 38a61f4c29..92fe09358e 100644 --- a/test/battle/ability/electromorphosis.c +++ b/test/battle/ability/electromorphosis.c @@ -6,14 +6,14 @@ SINGLE_BATTLE_TEST("Electromorphosis sets up Charge when hit by any move") s16 dmgBefore, dmgAfter; u16 move; - PARAMETRIZE {move = MOVE_TACKLE; } + PARAMETRIZE {move = MOVE_SCRATCH; } PARAMETRIZE {move = MOVE_GUST; } GIVEN { - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); ASSUME(!IsBattleMoveStatus(MOVE_GUST)); ASSUME(GetMoveCategory(MOVE_GUST) == DAMAGE_CATEGORY_SPECIAL); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(!IsBattleMoveStatus(MOVE_THUNDER_SHOCK)); ASSUME(GetMoveType(MOVE_THUNDER_SHOCK) == TYPE_ELECTRIC); @@ -30,8 +30,8 @@ SINGLE_BATTLE_TEST("Electromorphosis sets up Charge when hit by any move") ANIMATION(ANIM_TYPE_MOVE, move, opponent); HP_BAR(player); ABILITY_POPUP(player, ABILITY_ELECTROMORPHOSIS); - if (move == MOVE_TACKLE) { - MESSAGE("Being hit by Tackle charged Bellibolt with power!"); + if (move == MOVE_SCRATCH) { + MESSAGE("Being hit by Scratch charged Bellibolt with power!"); } else { MESSAGE("Being hit by Gust charged Bellibolt with power!"); @@ -43,8 +43,8 @@ SINGLE_BATTLE_TEST("Electromorphosis sets up Charge when hit by any move") ANIMATION(ANIM_TYPE_MOVE, move, opponent); HP_BAR(player); ABILITY_POPUP(player, ABILITY_ELECTROMORPHOSIS); - if (move == MOVE_TACKLE) { - MESSAGE("Being hit by Tackle charged Bellibolt with power!"); + if (move == MOVE_SCRATCH) { + MESSAGE("Being hit by Scratch charged Bellibolt with power!"); } else { MESSAGE("Being hit by Gust charged Bellibolt with power!"); diff --git a/test/battle/ability/flame_body.c b/test/battle/ability/flame_body.c index 95afa862c1..6120af0c20 100644 --- a/test/battle/ability/flame_body.c +++ b/test/battle/ability/flame_body.c @@ -4,10 +4,10 @@ SINGLE_BATTLE_TEST("Flame Body inflicts burn on contact") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(!MoveMakesContact(MOVE_SWIFT)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_MAGMAR) { Ability(ABILITY_FLAME_BODY); } @@ -35,11 +35,11 @@ SINGLE_BATTLE_TEST("Flame Body triggers 30% of the time") PASSES_RANDOMLY(3, 10, RNG_FLAME_BODY); GIVEN { ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_MAGMAR) { Ability(ABILITY_FLAME_BODY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(opponent, ABILITY_FLAME_BODY); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player); diff --git a/test/battle/ability/flower_gift.c b/test/battle/ability/flower_gift.c index 4f09e84a9a..8f897e4668 100644 --- a/test/battle/ability/flower_gift.c +++ b/test/battle/ability/flower_gift.c @@ -96,7 +96,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies b PARAMETRIZE { sunny = FALSE; } PARAMETRIZE { sunny = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -104,8 +104,8 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies b } WHEN { if (sunny) TURN { MOVE(playerLeft, MOVE_SUNNY_DAY); } - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); - MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); + MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); } } SCENE { // sun activates if (sunny) { @@ -113,11 +113,11 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies b ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, playerLeft); MESSAGE("Cherrim transformed!"); } - // player uses Tackle - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + // player uses Scratch + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(opponentLeft, captureDamage: &results[i].damageL); - // partner uses Tackle - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + // partner uses Scratch + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); HP_BAR(opponentLeft, captureDamage: &results[i].damageR); } FINALLY { EXPECT_MUL_EQ(results[0].damageL, UQ_4_12(1.5), results[1].damageL); diff --git a/test/battle/ability/fluffy.c b/test/battle/ability/fluffy.c index 5c51ec2627..4b8ef60396 100644 --- a/test/battle/ability/fluffy.c +++ b/test/battle/ability/fluffy.c @@ -3,9 +3,9 @@ ASSUMPTIONS { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(GetMoveType(MOVE_EMBER) == TYPE_FIRE); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(MoveMakesContact(MOVE_FIRE_PUNCH)); ASSUME(GetMoveType(MOVE_FIRE_PUNCH) == TYPE_FIRE); } @@ -19,9 +19,9 @@ SINGLE_BATTLE_TEST("Fluffy halves damage taken from moves that make direct conta PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_STUFFUL) { Ability(ability); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, UQ_4_12(0.5), results[1].damage); diff --git a/test/battle/ability/galvanize.c b/test/battle/ability/galvanize.c index 6de5675b6a..33a2fe28f7 100644 --- a/test/battle/ability/galvanize.c +++ b/test/battle/ability/galvanize.c @@ -3,8 +3,8 @@ ASSUMPTIONS { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); } SINGLE_BATTLE_TEST("Galvanize turns a normal type move into Electric") @@ -13,9 +13,9 @@ SINGLE_BATTLE_TEST("Galvanize turns a normal type move into Electric") PLAYER(SPECIES_KRABBY); OPPONENT(SPECIES_GEODUDE_ALOLA) { Ability(ABILITY_GALVANIZE); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("It's super effective!"); } } diff --git a/test/battle/ability/guard_dog.c b/test/battle/ability/guard_dog.c index c4b44417af..4327140d68 100644 --- a/test/battle/ability/guard_dog.c +++ b/test/battle/ability/guard_dog.c @@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Guard Dog raises Attack when intimidated", s16 damage) OPPONENT(SPECIES_ARBOK) { Ability(ability); } } WHEN { TURN { SWITCH(opponent, 1); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (ability == ABILITY_INTIMIDATE) { diff --git a/test/battle/ability/gulp_missile.c b/test/battle/ability/gulp_missile.c index 76d66c4fb8..fe1bc718fd 100644 --- a/test/battle/ability/gulp_missile.c +++ b/test/battle/ability/gulp_missile.c @@ -79,12 +79,12 @@ SINGLE_BATTLE_TEST("(Gulp Missile) Transformed Cramorant deal 1/4 of damage oppo PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); HP_BAR(opponent); ABILITY_POPUP(player, ABILITY_GULP_MISSILE); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); ABILITY_POPUP(player, ABILITY_GULP_MISSILE); HP_BAR(opponent, captureDamage: &gulpMissileDamage); @@ -102,12 +102,12 @@ SINGLE_BATTLE_TEST("(Gulp Missile) Cramorant in Gorging paralyzes the target if PLAYER(SPECIES_CRAMORANT) { HP(120); MaxHP(250); Ability(ABILITY_GULP_MISSILE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); HP_BAR(opponent); ABILITY_POPUP(player, ABILITY_GULP_MISSILE); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); ABILITY_POPUP(player, ABILITY_GULP_MISSILE); HP_BAR(opponent); @@ -123,12 +123,12 @@ SINGLE_BATTLE_TEST("(Gulp Missile) triggers even if the user is fainted by oppos PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); HP_BAR(opponent); ABILITY_POPUP(player, ABILITY_GULP_MISSILE); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); STATUS_ICON(opponent, paralysis: TRUE); @@ -145,12 +145,12 @@ SINGLE_BATTLE_TEST("(Gulp Missile) Transformed Cramorant Gulping lowers defense PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); } OPPONENT(species) { Ability(ability); } } WHEN { - TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); HP_BAR(opponent); ABILITY_POPUP(player, ABILITY_GULP_MISSILE); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); ABILITY_POPUP(player, ABILITY_GULP_MISSILE); ABILITY_POPUP(opponent, ability); @@ -167,16 +167,16 @@ SINGLE_BATTLE_TEST("(Gulp Missile) Transformed Cramorant Gulping lowers defense PARAMETRIZE { ability = ABILITY_INFILTRATOR; } PARAMETRIZE { ability = ABILITY_CLEAR_BODY; } GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); Item(ITEM_ROCKY_HELMET); } OPPONENT(SPECIES_DRAGAPULT) { Ability(ability); } } WHEN { - TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); HP_BAR(opponent); ABILITY_POPUP(player, ABILITY_GULP_MISSILE); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); ABILITY_POPUP(player, ABILITY_GULP_MISSILE); HP_BAR(opponent); diff --git a/test/battle/ability/harvest.c b/test/battle/ability/harvest.c index 92e7517df5..8b9a445a0a 100644 --- a/test/battle/ability/harvest.c +++ b/test/battle/ability/harvest.c @@ -15,9 +15,9 @@ SINGLE_BATTLE_TEST("Harvest has a 50% chance to restore a Berry at the end of th PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_EXEGGUTOR) { Ability(ABILITY_HARVEST); MaxHP(500); HP(251); Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ABILITY_POPUP(opponent, ABILITY_HARVEST); } THEN { EXPECT_EQ(opponent->item, ITEM_SITRUS_BERRY); @@ -31,9 +31,9 @@ SINGLE_BATTLE_TEST("Harvest always restores a Berry in Sunlight") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_EXEGGUTOR) { Ability(ABILITY_HARVEST); MaxHP(500); HP(251); Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SUNNY_DAY); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, opponent); ABILITY_POPUP(opponent, ABILITY_HARVEST); } THEN { @@ -48,9 +48,9 @@ SINGLE_BATTLE_TEST("Harvest doesn't always restore a Berry if Cloud Nine/Air Loc PLAYER(SPECIES_GOLDUCK) { Ability(ABILITY_CLOUD_NINE); } OPPONENT(SPECIES_EXEGGUTOR) { Ability(ABILITY_HARVEST); MaxHP(500); HP(251); Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SUNNY_DAY); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, opponent); NOT ABILITY_POPUP(opponent, ABILITY_HARVEST); } THEN { @@ -66,10 +66,10 @@ SINGLE_BATTLE_TEST("Harvest restores a Berry even after being switched out and b OPPONENT(SPECIES_EXEGGUTOR) { Ability(ABILITY_HARVEST); MaxHP(500); HP(251); Item(ITEM_SITRUS_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_PARTING_SHOT); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_PARTING_SHOT); SEND_OUT(opponent, 1); } TURN { MOVE(player, MOVE_SUNNY_DAY); MOVE(opponent, MOVE_PARTING_SHOT); SEND_OUT(opponent, 0); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, player); ABILITY_POPUP(opponent, ABILITY_HARVEST); } THEN { @@ -173,9 +173,9 @@ SINGLE_BATTLE_TEST("Harvest doesn't restore a Berry that's collected via Pickup" PLAYER(SPECIES_ZIGZAGOON) { Speed(50); Ability(ABILITY_PICKUP); } OPPONENT(SPECIES_EXEGGUTOR) { Speed(10); Ability(ABILITY_HARVEST); MaxHP(500); HP(251); Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_SUNNY_DAY); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SUNNY_DAY); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, opponent); ABILITY_POPUP(player, ABILITY_PICKUP); MESSAGE("Zigzagoon found one Sitrus Berry!"); @@ -230,10 +230,10 @@ SINGLE_BATTLE_TEST("Harvest can restore a Berry that was transferred from anothe PLAYER(SPECIES_TORKOAL) { Ability(ABILITY_DROUGHT); Item(ITEM_SITRUS_BERRY); } OPPONENT(SPECIES_EXEGGUTOR) { Ability(ABILITY_HARVEST); HP(100); MaxHP(500); } } WHEN { - TURN { MOVE(opponent, MOVE_TRICK); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_TRICK); MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); ABILITY_POPUP(opponent, ABILITY_HARVEST); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); @@ -250,11 +250,11 @@ SINGLE_BATTLE_TEST("Harvest can only restore the newest berry consumed that was PLAYER(SPECIES_TORKOAL) { Ability(ABILITY_DROUGHT); Item(ITEM_SITRUS_BERRY); } OPPONENT(SPECIES_EXEGGUTOR) { Ability(ABILITY_HARVEST); HP(100); MaxHP(500); Item(ITEM_APICOT_BERRY); } } WHEN { - TURN { MOVE(opponent, MOVE_TRICK); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_TRICK); MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); ABILITY_POPUP(opponent, ABILITY_HARVEST); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index 1dc434173a..696c2e136b 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -11,8 +11,8 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents intimidate") PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); } OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(player, captureDamage: &turnOneHit); diff --git a/test/battle/ability/ice_face.c b/test/battle/ability/ice_face.c index a462b80265..c3df84baeb 100644 --- a/test/battle/ability/ice_face.c +++ b/test/battle/ability/ice_face.c @@ -4,11 +4,11 @@ SINGLE_BATTLE_TEST("Ice Face blocks physical moves, changing Eiscue into its Noice Face form") { GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_EISCUE); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, ABILITY_ICE_FACE); MESSAGE("Eiscue transformed!"); @@ -18,7 +18,7 @@ SINGLE_BATTLE_TEST("Ice Face blocks physical moves, changing Eiscue into its Noi SINGLE_BATTLE_TEST("Ice Face does not block special moves, Eiscue stays in Ice Face form") { GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_EMBER) == DAMAGE_CATEGORY_SPECIAL); PLAYER(SPECIES_EISCUE); OPPONENT(SPECIES_WOBBUFFET); @@ -35,15 +35,15 @@ SINGLE_BATTLE_TEST("Ice Face is restored if hail or snow begins while Noice Face PARAMETRIZE { move = MOVE_SNOWSCAPE; } PARAMETRIZE { move = MOVE_HAIL; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveEffect(MOVE_SNOWSCAPE) == EFFECT_SNOWSCAPE); ASSUME(GetMoveEffect(MOVE_HAIL) == EFFECT_HAIL); PLAYER(SPECIES_EISCUE); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(opponent, move); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, ABILITY_ICE_FACE); MESSAGE("Eiscue transformed!"); @@ -60,16 +60,16 @@ SINGLE_BATTLE_TEST("Ice Face is restored if Noice Face Eiscue is sent in while h PARAMETRIZE { move = MOVE_SNOWSCAPE; } PARAMETRIZE { move = MOVE_HAIL; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveEffect(MOVE_SNOWSCAPE) == EFFECT_SNOWSCAPE); ASSUME(GetMoveEffect(MOVE_HAIL) == EFFECT_HAIL); PLAYER(SPECIES_EISCUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_SCRATCH); } TURN { SWITCH(player, 1); MOVE(opponent, move); } - TURN { SWITCH(player, 0); MOVE(opponent, MOVE_TACKLE); } + TURN { SWITCH(player, 0); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, ABILITY_ICE_FACE); MESSAGE("Eiscue transformed!"); @@ -86,14 +86,14 @@ SINGLE_BATTLE_TEST("Ice Face is not restored if Eiscue changes into Noice Face f PARAMETRIZE { move = MOVE_SNOWSCAPE; } PARAMETRIZE { move = MOVE_HAIL; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveEffect(MOVE_SNOWSCAPE) == EFFECT_SNOWSCAPE); ASSUME(GetMoveEffect(MOVE_HAIL) == EFFECT_HAIL); PLAYER(SPECIES_EISCUE) { HP(1); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, move); MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, move); MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, ABILITY_ICE_FACE); MESSAGE("Eiscue transformed!"); @@ -105,14 +105,14 @@ SINGLE_BATTLE_TEST("Ice Face is not restored if Eiscue changes into Noice Face f SINGLE_BATTLE_TEST("Ice Face form change persists after switching out") { GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_EISCUE) { HP(1); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { SWITCH(player, 1); MOVE(opponent, MOVE_CELEBRATE); } - TURN { SWITCH(player, 0); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { SWITCH(player, 0); MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } } SCENE { ABILITY_POPUP(player, ABILITY_ICE_FACE); MESSAGE("Eiscue transformed!"); @@ -123,12 +123,12 @@ SINGLE_BATTLE_TEST("Ice Face form change persists after switching out") SINGLE_BATTLE_TEST("Ice Face doesn't transform Eiscue if Cloud Nine/Air Lock is on the field") { GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_EISCUE) { HP(1); } OPPONENT(SPECIES_RAYQUAZA) { Ability(ABILITY_AIR_LOCK); } } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_SNOWSCAPE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SNOWSCAPE); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, ABILITY_ICE_FACE); MESSAGE("Eiscue transformed!"); @@ -142,15 +142,15 @@ SINGLE_BATTLE_TEST("Ice Face is not restored if hail or snow and Eiscue are alre PARAMETRIZE { move = MOVE_SNOWSCAPE; } PARAMETRIZE { move = MOVE_HAIL; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveEffect(MOVE_SNOWSCAPE) == EFFECT_SNOWSCAPE); ASSUME(GetMoveEffect(MOVE_HAIL) == EFFECT_HAIL); PLAYER(SPECIES_EISCUE); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, move); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, move); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { SWITCH(opponent, 1); } } SCENE { ABILITY_POPUP(player, ABILITY_ICE_FACE); diff --git a/test/battle/ability/ice_scales.c b/test/battle/ability/ice_scales.c index 37c5aa0944..0d49bb4996 100644 --- a/test/battle/ability/ice_scales.c +++ b/test/battle/ability/ice_scales.c @@ -9,13 +9,13 @@ SINGLE_BATTLE_TEST("Ice Scales halves the damage from special moves", s16 damage PARAMETRIZE { ability = ABILITY_ICE_SCALES; move = MOVE_PSYCHIC; } PARAMETRIZE { ability = ABILITY_SHIELD_DUST; move = MOVE_PSYSHOCK; } PARAMETRIZE { ability = ABILITY_ICE_SCALES; move = MOVE_PSYSHOCK; } - PARAMETRIZE { ability = ABILITY_SHIELD_DUST; move = MOVE_TACKLE; } - PARAMETRIZE { ability = ABILITY_ICE_SCALES; move = MOVE_TACKLE; } + PARAMETRIZE { ability = ABILITY_SHIELD_DUST; move = MOVE_SCRATCH; } + PARAMETRIZE { ability = ABILITY_ICE_SCALES; move = MOVE_SCRATCH; } GIVEN { ASSUME(GetMoveCategory(MOVE_PSYCHIC) == DAMAGE_CATEGORY_SPECIAL); ASSUME(GetMoveCategory(MOVE_PSYSHOCK) == DAMAGE_CATEGORY_SPECIAL); ASSUME(GetMoveEffect(MOVE_PSYSHOCK) == EFFECT_PSYSHOCK); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_FROSMOTH) { Ability(ability); } } WHEN { diff --git a/test/battle/ability/illusion.c b/test/battle/ability/illusion.c index 8afe89817d..c76b4f307e 100644 --- a/test/battle/ability/illusion.c +++ b/test/battle/ability/illusion.c @@ -13,13 +13,13 @@ SINGLE_BATTLE_TEST("Illusion can only imitate Normal Form terapagos") // Switch to Terapagos which enters Terastal Form TURN { SWITCH(player, 1); } // Switch back to Zoroark, should not be Terastal Terapagos - TURN { SWITCH(player, 0); MOVE(opponent, MOVE_TACKLE);} + TURN { SWITCH(player, 0); MOVE(opponent, MOVE_SCRATCH);} // Switch back to Terapagos TURN { SWITCH(player, 1); } // Terapagos Stellar, Zoroark gets Roared in, should not be Stellar Terapagos TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_ROAR); } // Reveal the Zoroark - TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_SCRATCH); } } } @@ -30,9 +30,9 @@ SINGLE_BATTLE_TEST("Illusion breaks if the target faints") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, player); MESSAGE("Zoroark's illusion wore off!"); diff --git a/test/battle/ability/inner_focus.c b/test/battle/ability/inner_focus.c index 509b46d176..e6370f019a 100644 --- a/test/battle/ability/inner_focus.c +++ b/test/battle/ability/inner_focus.c @@ -12,8 +12,8 @@ SINGLE_BATTLE_TEST("Inner Focus prevents intimidate") PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }; OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); }; } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(player, captureDamage: &turnOneHit); @@ -34,12 +34,12 @@ SINGLE_BATTLE_TEST("Inner Focus prevents flinching") OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); }; } WHEN { TURN { MOVE(player, MOVE_FAKE_OUT); - MOVE(opponent, MOVE_TACKLE); + MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_FAKE_OUT, player); NONE_OF { MESSAGE("The opposing Zubat flinched and couldn't move!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } diff --git a/test/battle/ability/intimidate.c b/test/battle/ability/intimidate.c index e5571b23fc..cefda4d1b8 100644 --- a/test/battle/ability/intimidate.c +++ b/test/battle/ability/intimidate.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); } SINGLE_BATTLE_TEST("Intimidate (opponent) lowers player's attack after switch out", s16 damage) @@ -17,7 +17,7 @@ SINGLE_BATTLE_TEST("Intimidate (opponent) lowers player's attack after switch ou OPPONENT(SPECIES_ARBOK) { Ability(ability); } } WHEN { TURN { SWITCH(opponent, 1); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (ability == ABILITY_INTIMIDATE) { @@ -41,8 +41,8 @@ SINGLE_BATTLE_TEST("Intimidate (opponent) lowers player's attack after KO", s16 OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(1); } OPPONENT(SPECIES_ARBOK) { Ability(ability); Speed(1); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { HP_BAR(opponent); if (ability == ABILITY_INTIMIDATE) @@ -110,11 +110,11 @@ SINGLE_BATTLE_TEST("Intimidate and Eject Button don't force the opponent to Atta ASSUME(gItemsInfo[ITEM_EJECT_BUTTON].holdEffect == HOLD_EFFECT_EJECT_BUTTON); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); } - OPPONENT(SPECIES_HITMONTOP) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_HITMONTOP) { Moves(MOVE_SCRATCH); } } WHEN { TURN { MOVE(player, MOVE_QUICK_ATTACK); - MOVE(opponent, MOVE_TACKLE); + MOVE(opponent, MOVE_SCRATCH); SEND_OUT(opponent, 1); } } SCENE { @@ -125,8 +125,8 @@ SINGLE_BATTLE_TEST("Intimidate and Eject Button don't force the opponent to Atta ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); MESSAGE("The opposing Hitmontop's Intimidate cuts Wobbuffet's Attack!"); NONE_OF { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); - MESSAGE("The opposing Hitmontop used Tackle!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); + MESSAGE("The opposing Hitmontop used Scratch!"); } } } @@ -295,7 +295,7 @@ SINGLE_BATTLE_TEST("Intimidate activates when it's no longer affected by Neutral SINGLE_BATTLE_TEST("Intimidate activates when it's no longer affected by Neutralizing Gas - opponent caused switches") { u32 move, item; - PARAMETRIZE { move = MOVE_TACKLE; item = ITEM_EJECT_BUTTON; } + PARAMETRIZE { move = MOVE_SCRATCH; item = ITEM_EJECT_BUTTON; } PARAMETRIZE { move = MOVE_GROWL; item = ITEM_EJECT_PACK; } PARAMETRIZE { move = MOVE_ROAR; item = ITEM_NONE; } PARAMETRIZE { move = MOVE_DRAGON_TAIL; item = ITEM_NONE; } diff --git a/test/battle/ability/keen_eye.c b/test/battle/ability/keen_eye.c index f6a5fbc38a..6874e5a6bf 100644 --- a/test/battle/ability/keen_eye.c +++ b/test/battle/ability/keen_eye.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveAccuracy(MOVE_TACKLE) == 100); + ASSUME(GetMoveAccuracy(MOVE_SCRATCH) == 100); ASSUME(GetMoveEffect(MOVE_SAND_ATTACK) == EFFECT_ACCURACY_DOWN); ASSUME(B_ILLUMINATE_EFFECT >= GEN_9); } @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye prevent accuracy stag PLAYER(SPECIES_WOBBUFFET); OPPONENT(species) { Ability(ability); } } WHEN { - TURN { MOVE(player, MOVE_SAND_ATTACK); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SAND_ATTACK); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(opponent, ability); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); @@ -32,7 +32,7 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye prevent accuracy stag MESSAGE("The opposing Staryu's Illuminate prevents accuracy loss!"); else MESSAGE("The opposing Ursaluna's Mind's Eye prevents accuracy loss!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } @@ -51,11 +51,11 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye ignore target's evasi PLAYER(SPECIES_WOBBUFFET); OPPONENT(species) { Ability(ability); } } WHEN { - TURN { MOVE(player, MOVE_DOUBLE_TEAM); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_DOUBLE_TEAM); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_TEAM, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } @@ -78,17 +78,17 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye are ignored by Mold B PARAMETRIZE { speciesOpponent = SPECIES_URSALUNA_BLOODMOON; abilityOpponent = ABILITY_MINDS_EYE; } } - PASSES_RANDOMLY(GetMoveAccuracy(MOVE_TACKLE) * 3 / 4, 100, RNG_ACCURACY); + PASSES_RANDOMLY(GetMoveAccuracy(MOVE_SCRATCH) * 3 / 4, 100, RNG_ACCURACY); GIVEN { PLAYER(speciesPlayer) { Ability(abilityPlayer); } OPPONENT(speciesOpponent) { Ability(abilityOpponent); } } WHEN { - TURN { MOVE(player, MOVE_SAND_ATTACK); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SAND_ATTACK); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, abilityPlayer); ANIMATION(ANIM_TYPE_MOVE, MOVE_SAND_ATTACK, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } diff --git a/test/battle/ability/magician.c b/test/battle/ability/magician.c index d12fe920b8..9e80120025 100644 --- a/test/battle/ability/magician.c +++ b/test/battle/ability/magician.c @@ -5,21 +5,21 @@ SINGLE_BATTLE_TEST("Magician gets self-damage recoil after stealing Life Orb") { GIVEN { ASSUME(gItemsInfo[ITEM_LIFE_ORB].holdEffect == HOLD_EFFECT_LIFE_ORB); - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); PLAYER(SPECIES_DELPHOX) { Ability(ABILITY_MAGICIAN); Item(ITEM_NONE); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIFE_ORB); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { // 1st turn - MESSAGE("Delphox used Tackle!"); + MESSAGE("Delphox used Scratch!"); ABILITY_POPUP(player, ABILITY_MAGICIAN); MESSAGE("Delphox stole the opposing Wobbuffet's Life Orb!"); HP_BAR(player); MESSAGE("Delphox was hurt by the Life Orb!"); // 2nd turn - Life Orb recoil happens now - MESSAGE("Delphox used Tackle!"); + MESSAGE("Delphox used Scratch!"); HP_BAR(player); MESSAGE("Delphox was hurt by the Life Orb!"); } diff --git a/test/battle/ability/merciless.c b/test/battle/ability/merciless.c index f9337fb820..1502b709c5 100644 --- a/test/battle/ability/merciless.c +++ b/test/battle/ability/merciless.c @@ -7,9 +7,9 @@ SINGLE_BATTLE_TEST("Merciless causes a move to result in a critical hit if the t PLAYER(SPECIES_MAREANIE) { Ability(ABILITY_MERCILESS); } OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); MESSAGE("A critical hit!"); } } diff --git a/test/battle/ability/minds_eye.c b/test/battle/ability/minds_eye.c index 59c81746c7..eac71e7740 100644 --- a/test/battle/ability/minds_eye.c +++ b/test/battle/ability/minds_eye.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Mind's Eye allows to hit Ghost-type Pokémon with Normal- and Fighting-type moves") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_KARATE_CHOP; } GIVEN { @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Mind's Eye allows to hit Ghost-type Pokémon with Normal- an SINGLE_BATTLE_TEST("Mind's Eye doesn't bypass a Ghost-type's Wonder Guard") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_KARATE_CHOP; } GIVEN { @@ -59,13 +59,13 @@ AI_SINGLE_BATTLE_TEST("AI doesn't use accuracy-lowering moves if it knows that t PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_MINDS_EYE); } OPPONENT(SPECIES_BASCULEGION) { Moves(MOVE_CELEBRATE, moveAI); Ability(abilityAI); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); + TURN { MOVE(player, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); if (abilityAI == ABILITY_MOLD_BREAKER) { SCORE_GT(opponent, moveAI, MOVE_CELEBRATE); } else { SCORE_EQ(opponent, moveAI, MOVE_CELEBRATE); } } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); if (abilityAI == ABILITY_MOLD_BREAKER) { ANIMATION(ANIM_TYPE_MOVE, moveAI, opponent); } } } diff --git a/test/battle/ability/mirror_armor.c b/test/battle/ability/mirror_armor.c index 97e7616c94..66d7ad5284 100644 --- a/test/battle/ability/mirror_armor.c +++ b/test/battle/ability/mirror_armor.c @@ -200,9 +200,9 @@ SINGLE_BATTLE_TEST("Mirror Armor reflects Tangling Hair speed drop") PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); } OPPONENT(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(player, ABILITY_TANGLING_HAIR); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); ABILITY_POPUP(opponent, ABILITY_MIRROR_ARMOR); @@ -216,7 +216,7 @@ SINGLE_BATTLE_TEST("Mirror Armor reflects Obstruct defense drop") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); } } WHEN { - TURN { MOVE(player, MOVE_OBSTRUCT); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_OBSTRUCT); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_OBSTRUCT, player); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); diff --git a/test/battle/ability/neuroforce.c b/test/battle/ability/neuroforce.c index bd40982d02..bd581b9b7d 100644 --- a/test/battle/ability/neuroforce.c +++ b/test/battle/ability/neuroforce.c @@ -7,11 +7,11 @@ SINGLE_BATTLE_TEST("Neuroforce increases the strength of super-effective moves b u16 ability; PARAMETRIZE { ability = ABILITY_NEUROFORCE; move = MOVE_SHADOW_BALL; } PARAMETRIZE { ability = ABILITY_KLUTZ; move = MOVE_SHADOW_BALL; } - PARAMETRIZE { ability = ABILITY_NEUROFORCE; move = MOVE_TACKLE; } - PARAMETRIZE { ability = ABILITY_KLUTZ; move = MOVE_TACKLE; } + PARAMETRIZE { ability = ABILITY_NEUROFORCE; move = MOVE_SCRATCH; } + PARAMETRIZE { ability = ABILITY_KLUTZ; move = MOVE_SCRATCH; } GIVEN { ASSUME(GetMoveType(MOVE_SHADOW_BALL) == TYPE_GHOST); - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); PLAYER(SPECIES_NECROZMA_ULTRA) { Ability(ability); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/ability/neutralizing_gas.c b/test/battle/ability/neutralizing_gas.c index ae11c458f7..6338bfbeca 100644 --- a/test/battle/ability/neutralizing_gas.c +++ b/test/battle/ability/neutralizing_gas.c @@ -87,13 +87,13 @@ SINGLE_BATTLE_TEST("Neutralizing Gas ignores multipliers from attacker's ability PARAMETRIZE { ability = ABILITY_NEUTRALIZING_GAS; } PARAMETRIZE { ability = ABILITY_LEVITATE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WEEZING) { Ability(ability); } OPPONENT(SPECIES_AZUMARILL) { Ability(ABILITY_HUGE_POWER); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); @@ -106,14 +106,14 @@ SINGLE_BATTLE_TEST("Neutralizing Gas ignores multipliers from target's ability", PARAMETRIZE { ability = ABILITY_NEUTRALIZING_GAS; } PARAMETRIZE { ability = ABILITY_LEVITATE; } GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE) == TRUE); - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(MoveMakesContact(MOVE_SCRATCH) == TRUE); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); PLAYER(SPECIES_WEEZING) { Ability(ability); } OPPONENT(SPECIES_BEWEAR) { Ability(ABILITY_FLUFFY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); @@ -131,9 +131,9 @@ DOUBLE_BATTLE_TEST("Neutralizing Gas ignores multipliers from target's ally's ab OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_TELEPATHY); } OPPONENT(SPECIES_CLEFAIRY) { Ability(ABILITY_FRIEND_GUARD); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(opponentLeft, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.75), results[1].damage); @@ -146,15 +146,15 @@ DOUBLE_BATTLE_TEST("Neutralizing Gas ignores multipliers from ally's ability", s PARAMETRIZE { ability = ABILITY_NEUTRALIZING_GAS; } PARAMETRIZE { ability = ABILITY_LEVITATE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WEEZING) { Ability(ability); } PLAYER(SPECIES_WO_CHIEN) { Ability(ABILITY_TABLETS_OF_RUIN); } OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_TELEPATHY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(opponentLeft, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.75), results[1].damage); diff --git a/test/battle/ability/opportunist.c b/test/battle/ability/opportunist.c index 2abd483466..d48b7c1eeb 100644 --- a/test/battle/ability/opportunist.c +++ b/test/battle/ability/opportunist.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); } SINGLE_BATTLE_TEST("Opportunist only copies foe's positive stat changes in a turn", s16 damage) @@ -16,15 +16,15 @@ SINGLE_BATTLE_TEST("Opportunist only copies foe's positive stat changes in a tur OPPONENT(SPECIES_ESPATHRA) { Speed(5); Ability(ability); } } WHEN { TURN { MOVE(player, MOVE_SHELL_SMASH); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (ability == ABILITY_FRISK) { ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_SMASH, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } else { ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_SMASH, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } } FINALLY { @@ -55,7 +55,7 @@ DOUBLE_BATTLE_TEST("Opportunist raises Attack only once when partner has Intimid OPPONENT(SPECIES_SPINDA) { Ability(abilityLeft); } OPPONENT(SPECIES_SPINDA) { Ability(abilityRight); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(opponentRight, MOVE_TACKLE, target: playerRight); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(opponentRight, MOVE_SCRATCH, target: playerRight); } } SCENE { ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); if (abilityLeft == ABILITY_CONTRARY) { @@ -267,9 +267,9 @@ SINGLE_BATTLE_TEST("Opportunist copies the stat increase from the incoming mon") OPPONENT(SPECIES_WOBBUFFET) { HP(1); } OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); SEND_OUT(opponent, 1); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD); ABILITY_POPUP(player, ABILITY_OPPORTUNIST); } THEN { diff --git a/test/battle/ability/own_tempo.c b/test/battle/ability/own_tempo.c index a061f820ba..ef358a172e 100644 --- a/test/battle/ability/own_tempo.c +++ b/test/battle/ability/own_tempo.c @@ -99,7 +99,7 @@ SINGLE_BATTLE_TEST("Own Tempo cures confusion if it's obtained via Skill Swap") } WHEN { TURN { MOVE(player, MOVE_CONFUSE_RAY); } TURN { MOVE(player, MOVE_SKILL_SWAP); - MOVE(opponent, MOVE_TACKLE); + MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player); @@ -107,7 +107,7 @@ SINGLE_BATTLE_TEST("Own Tempo cures confusion if it's obtained via Skill Swap") ANIMATION(ANIM_TYPE_MOVE, MOVE_SKILL_SWAP, player); ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO); MESSAGE("The opposing Wobbuffet's Own Tempo cured its confusion problem!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } @@ -118,10 +118,10 @@ SINGLE_BATTLE_TEST("Own Tempo prevents confusion from items") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); Item(ITEM_BERSERK_GENE); }; } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } diff --git a/test/battle/ability/parental_bond.c b/test/battle/ability/parental_bond.c index 9bd6570490..ef97341aa9 100644 --- a/test/battle/ability/parental_bond.c +++ b/test/battle/ability/parental_bond.c @@ -1,21 +1,21 @@ #include "global.h" #include "test/battle.h" -SINGLE_BATTLE_TEST("Parental Bond converts Tackle into a two-strike move") +SINGLE_BATTLE_TEST("Parental Bond converts Scratch into a two-strike move") { GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) != DAMAGE_CATEGORY_STATUS); - ASSUME(GetMoveStrikeCount(MOVE_TACKLE) < 2); - ASSUME(GetMoveEffect(MOVE_TACKLE) == EFFECT_HIT); + ASSUME(GetMoveCategory(MOVE_SCRATCH) != DAMAGE_CATEGORY_STATUS); + ASSUME(GetMoveStrikeCount(MOVE_SCRATCH) < 2); + ASSUME(GetMoveEffect(MOVE_SCRATCH) == EFFECT_HIT); PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_MEGA); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_MEGA); 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); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent); HP_BAR(opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); diff --git a/test/battle/ability/pastel_veil.c b/test/battle/ability/pastel_veil.c index 5f6fa6b058..a97592fdb2 100644 --- a/test/battle/ability/pastel_veil.c +++ b/test/battle/ability/pastel_veil.c @@ -38,14 +38,14 @@ SINGLE_BATTLE_TEST("Pastel Veil immediately cures Mold Breaker poison") PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } OPPONENT(SPECIES_PONYTA_GALAR) { Ability(ABILITY_PASTEL_VEIL); } } WHEN { - TURN { MOVE(player, MOVE_TOXIC); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_TOXIC); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); STATUS_ICON(opponent, badPoison: TRUE); ABILITY_POPUP(opponent, ABILITY_PASTEL_VEIL); MESSAGE("The opposing Ponyta's Pastel Veil cured its poison problem!"); STATUS_ICON(opponent, none: TRUE); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } diff --git a/test/battle/ability/pickup.c b/test/battle/ability/pickup.c index 22db259399..2ed7765dfa 100644 --- a/test/battle/ability/pickup.c +++ b/test/battle/ability/pickup.c @@ -13,9 +13,9 @@ SINGLE_BATTLE_TEST("Pickup grants an item used by another Pokémon") PLAYER(SPECIES_ZIGZAGOON) { Ability(ABILITY_PICKUP); } OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); HP(51); Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ABILITY_POPUP(player, ABILITY_PICKUP); MESSAGE("Zigzagoon found one Sitrus Berry!"); } THEN { @@ -30,9 +30,9 @@ WILD_BATTLE_TEST("Pickup grants an item used by itself in wild battles (Gen 9)") PLAYER(SPECIES_ZIGZAGOON) { Ability(ABILITY_PICKUP); MaxHP(100); HP(51); Item(ITEM_SITRUS_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(player, ABILITY_PICKUP); MESSAGE("Zigzagoon found one Sitrus Berry!"); } THEN { @@ -46,9 +46,9 @@ SINGLE_BATTLE_TEST("Pickup doesn't grant the user their item outside wild battle PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_ZIGZAGOON) { Ability(ABILITY_PICKUP); MaxHP(500); HP(251); Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); NONE_OF { ABILITY_POPUP(opponent, ABILITY_PICKUP); MESSAGE("Zigzagoon found one Sitrus Berry!"); @@ -65,9 +65,9 @@ SINGLE_BATTLE_TEST("Pickup doesn't grant another Pokémon's popped Air Balloon") PLAYER(SPECIES_ZIGZAGOON) { Ability(ABILITY_PICKUP); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); NONE_OF { ABILITY_POPUP(player, ABILITY_PICKUP); MESSAGE("Zigzagoon found one Air Balloon!"); @@ -84,10 +84,10 @@ SINGLE_BATTLE_TEST("Pickup doesn't grant an item not used that turn") PLAYER(SPECIES_ZIGZAGOON) { Ability(ABILITY_PICKUP); } OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); HP(51); Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN { SWITCH(player, 1); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); NONE_OF { ABILITY_POPUP(player, ABILITY_PICKUP); @@ -105,9 +105,9 @@ SINGLE_BATTLE_TEST("Pickup doesn't grant an item after its holder faints") OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); HP(51); Item(ITEM_SITRUS_BERRY); } OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); HP(51); Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_MEMENTO); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_MEMENTO); SEND_OUT(opponent, 1); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); NONE_OF { ABILITY_POPUP(player, ABILITY_PICKUP); MESSAGE("Zigzagoon found one Sitrus Berry!"); @@ -126,10 +126,10 @@ SINGLE_BATTLE_TEST("Pickup doesn't grant an used item if holder is replaced") OPPONENT(SPECIES_WOBBUFFET) { MaxHP(300); HP(151); Item(ITEM_SITRUS_BERRY); } OPPONENT(SPECIES_WOBBUFFET) { MaxHP(300); HP(151); Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_PARTING_SHOT); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_PARTING_SHOT); SEND_OUT(opponent, 1); } TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); MOVE(opponent, MOVE_PARTING_SHOT); SEND_OUT(opponent, 0); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_PARTING_SHOT, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_PARTING_SHOT, opponent); @@ -206,9 +206,9 @@ SINGLE_BATTLE_TEST("Pickup doesn't grant an used item if its user already restor PLAYER(SPECIES_ZIGZAGOON) { Ability(ABILITY_PICKUP); } OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); HP(51); Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_RECYCLE); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_RECYCLE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_RECYCLE, opponent); NONE_OF { ABILITY_POPUP(player, ABILITY_PICKUP); @@ -261,9 +261,9 @@ DOUBLE_BATTLE_TEST("Pickup triggers based on Speed order") OPPONENT(SPECIES_WOBBUFFET) { Speed(3); MaxHP(100); HP(51); Item(ITEM_SITRUS_BERRY); } OPPONENT(SPECIES_ZIGZAGOON) { Speed(50); Ability(ABILITY_PICKUP); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); ABILITY_POPUP(opponentRight, ABILITY_PICKUP); NOT ABILITY_POPUP(playerLeft, ABILITY_PICKUP); } THEN { diff --git a/test/battle/ability/pixilate.c b/test/battle/ability/pixilate.c index 44289769a6..4dd16b4abe 100644 --- a/test/battle/ability/pixilate.c +++ b/test/battle/ability/pixilate.c @@ -3,8 +3,8 @@ ASSUMPTIONS { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); } SINGLE_BATTLE_TEST("Pixilate turns a Normal-type move into a Fairy-type move") @@ -13,10 +13,10 @@ SINGLE_BATTLE_TEST("Pixilate turns a Normal-type move into a Fairy-type move") PLAYER(SPECIES_DRAGONITE); OPPONENT(SPECIES_ALTARIA) { Item(ITEM_ALTARIANITE); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE, gimmick: GIMMICK_MEGA); } + TURN { MOVE(opponent, MOVE_SCRATCH, gimmick: GIMMICK_MEGA); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("It's super effective!"); } } diff --git a/test/battle/ability/poison_point.c b/test/battle/ability/poison_point.c index 635698379c..1ff89192a6 100644 --- a/test/battle/ability/poison_point.c +++ b/test/battle/ability/poison_point.c @@ -4,10 +4,10 @@ SINGLE_BATTLE_TEST("Poison Point inflicts poison on contact") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(!MoveMakesContact(MOVE_SWIFT)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_NIDORAN_M) { Ability(ABILITY_POISON_POINT); } @@ -36,11 +36,11 @@ SINGLE_BATTLE_TEST("Poison Point triggers 30% of the time") PASSES_RANDOMLY(3, 10, RNG_POISON_POINT); GIVEN { ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_NIDORAN_M) { Ability(ABILITY_POISON_POINT); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN {} } SCENE { ABILITY_POPUP(opponent, ABILITY_POISON_POINT); diff --git a/test/battle/ability/poison_touch.c b/test/battle/ability/poison_touch.c index 530d361794..6678394e6f 100644 --- a/test/battle/ability/poison_touch.c +++ b/test/battle/ability/poison_touch.c @@ -5,14 +5,14 @@ SINGLE_BATTLE_TEST("Poison Touch has a 30% chance to poison when attacking with { PASSES_RANDOMLY(3, 10, RNG_POISON_TOUCH); GIVEN { - ASSUME(GetMovePower(MOVE_TACKLE) > 0); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_GRIMER) { Ability(ABILITY_POISON_TOUCH); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ABILITY_POPUP(player, ABILITY_POISON_TOUCH); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); MESSAGE("The opposing Wobbuffet was poisoned by Grimer's Poison Touch!"); @@ -24,10 +24,10 @@ SINGLE_BATTLE_TEST("Poison Touch only applies when using contact moves") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(!MoveMakesContact(MOVE_SWIFT)); PLAYER(SPECIES_GRIMER) { Ability(ABILITY_POISON_TOUCH); } OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/ability/protean.c b/test/battle/ability/protean.c index 93162f7398..88144670a1 100644 --- a/test/battle/ability/protean.c +++ b/test/battle/ability/protean.c @@ -14,7 +14,7 @@ SINGLE_BATTLE_TEST("Protean changes the type of the user only once per switch in OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_WATER_GUN); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { SWITCH(opponent, 1); } TURN { SWITCH(opponent, 0); } TURN { MOVE(opponent, MOVE_WATER_GUN); } @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Protean changes the type of the user only once per switch in ABILITY_POPUP(opponent, ABILITY_PROTEAN); MESSAGE("The opposing Kecleon transformed into the Normal type!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(opponent, ABILITY_PROTEAN); MESSAGE("The opposing Kecleon transformed into the Water type!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent); diff --git a/test/battle/ability/protosynthesis.c b/test/battle/ability/protosynthesis.c index 5a468893e5..d895879c60 100644 --- a/test/battle/ability/protosynthesis.c +++ b/test/battle/ability/protosynthesis.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_ROUND) == DAMAGE_CATEGORY_SPECIAL); } @@ -28,10 +28,10 @@ SINGLE_BATTLE_TEST("Protosynthesis boosts either Attack or Special Attack, not b u32 move; s16 damage[2]; - PARAMETRIZE { species = SPECIES_ROARING_MOON; move = MOVE_TACKLE; } + PARAMETRIZE { species = SPECIES_ROARING_MOON; move = MOVE_SCRATCH; } PARAMETRIZE { species = SPECIES_ROARING_MOON; move = MOVE_ROUND; } - PARAMETRIZE { species = SPECIES_WALKING_WAKE; move = MOVE_TACKLE; } + PARAMETRIZE { species = SPECIES_WALKING_WAKE; move = MOVE_SCRATCH; } PARAMETRIZE { species = SPECIES_WALKING_WAKE; move = MOVE_ROUND; } GIVEN { @@ -47,7 +47,7 @@ SINGLE_BATTLE_TEST("Protosynthesis boosts either Attack or Special Attack, not b ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { - if ((move == MOVE_TACKLE && species == SPECIES_ROARING_MOON) || (move == MOVE_ROUND && species == SPECIES_WALKING_WAKE)) + if ((move == MOVE_SCRATCH && species == SPECIES_ROARING_MOON) || (move == MOVE_ROUND && species == SPECIES_WALKING_WAKE)) EXPECT_MUL_EQ(damage[0], Q_4_12(1.3), damage[1]); else EXPECT_EQ(damage[0], damage[1]); diff --git a/test/battle/ability/quark_drive.c b/test/battle/ability/quark_drive.c index edefdc1305..e4850e7001 100644 --- a/test/battle/ability/quark_drive.c +++ b/test/battle/ability/quark_drive.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_ROUND) == DAMAGE_CATEGORY_SPECIAL); } @@ -28,10 +28,10 @@ SINGLE_BATTLE_TEST("Quark Drive boosts either Attack or Special Attack, not both u32 move; s16 damage[2]; - PARAMETRIZE { species = SPECIES_IRON_VALIANT; move = MOVE_TACKLE; } + PARAMETRIZE { species = SPECIES_IRON_VALIANT; move = MOVE_SCRATCH; } PARAMETRIZE { species = SPECIES_IRON_VALIANT; move = MOVE_ROUND; } - PARAMETRIZE { species = SPECIES_IRON_MOTH; move = MOVE_TACKLE; } + PARAMETRIZE { species = SPECIES_IRON_MOTH; move = MOVE_SCRATCH; } PARAMETRIZE { species = SPECIES_IRON_MOTH; move = MOVE_ROUND; } GIVEN { @@ -47,7 +47,7 @@ SINGLE_BATTLE_TEST("Quark Drive boosts either Attack or Special Attack, not both ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { - if ((move == MOVE_TACKLE && species == SPECIES_IRON_VALIANT) || (move == MOVE_ROUND && species == SPECIES_IRON_MOTH)) + if ((move == MOVE_SCRATCH && species == SPECIES_IRON_VALIANT) || (move == MOVE_ROUND && species == SPECIES_IRON_MOTH)) EXPECT_MUL_EQ(damage[0], Q_4_12(1.3), damage[1]); else EXPECT_EQ(damage[0], damage[1]); diff --git a/test/battle/ability/quick_draw.c b/test/battle/ability/quick_draw.c index ef15801bff..aeb711b86b 100644 --- a/test/battle/ability/quick_draw.c +++ b/test/battle/ability/quick_draw.c @@ -8,10 +8,10 @@ SINGLE_BATTLE_TEST("Quick Draw has a 30% chance of going first") PLAYER(SPECIES_SLOWBRO_GALAR) { Ability(ABILITY_QUICK_DRAW); Speed(1); } OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, ABILITY_QUICK_DRAW); - MESSAGE("Slowbro used Tackle!"); + MESSAGE("Slowbro used Scratch!"); MESSAGE("The opposing Wobbuffet used Celebrate!"); } } @@ -23,10 +23,10 @@ SINGLE_BATTLE_TEST("Quick Draw does not activate 70% of the time") PLAYER(SPECIES_SLOWBRO_GALAR) { Ability(ABILITY_QUICK_DRAW); Speed(1); } OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_SCRATCH); } } SCENE { NOT ABILITY_POPUP(player, ABILITY_QUICK_DRAW); MESSAGE("The opposing Wobbuffet used Celebrate!"); - MESSAGE("Slowbro used Tackle!"); + MESSAGE("Slowbro used Scratch!"); } } diff --git a/test/battle/ability/rattled.c b/test/battle/ability/rattled.c index 465a688951..d957dec66a 100644 --- a/test/battle/ability/rattled.c +++ b/test/battle/ability/rattled.c @@ -9,8 +9,8 @@ ASSUMPTIONS ASSUME(!IsBattleMoveStatus(MOVE_FEINT_ATTACK)); ASSUME(GetMoveType(MOVE_SHADOW_PUNCH) == TYPE_GHOST); ASSUME(!IsBattleMoveStatus(MOVE_SHADOW_PUNCH)); - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); } SINGLE_BATTLE_TEST("Rattled boosts speed by 1 when hit by Bug, Dark or Ghost type move") @@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("Rattled boosts speed by 1 when hit by Bug, Dark or Ghost typ PARAMETRIZE { move = MOVE_FURY_CUTTER; } PARAMETRIZE { move = MOVE_FEINT_ATTACK; } PARAMETRIZE { move = MOVE_SHADOW_PUNCH; } - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } GIVEN { PLAYER(SPECIES_WOBBUFFET) {Speed(42) ;} OPPONENT(SPECIES_SUDOWOODO) {Speed(40); Ability(ABILITY_RATTLED);} @@ -29,14 +29,14 @@ SINGLE_BATTLE_TEST("Rattled boosts speed by 1 when hit by Bug, Dark or Ghost typ } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - if (move != MOVE_TACKLE) { + if (move != MOVE_SCRATCH) { ABILITY_POPUP(opponent, ABILITY_RATTLED); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("The opposing Sudowoodo's Speed rose!"); } MESSAGE("The opposing Sudowoodo used Celebrate!"); // Sudowoodo is now faster - if (move != MOVE_TACKLE){ + if (move != MOVE_SCRATCH){ MESSAGE("The opposing Sudowoodo used Celebrate!"); ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); diff --git a/test/battle/ability/refrigerate.c b/test/battle/ability/refrigerate.c index b3f7b59a9e..9ee9744ba0 100644 --- a/test/battle/ability/refrigerate.c +++ b/test/battle/ability/refrigerate.c @@ -3,8 +3,8 @@ ASSUMPTIONS { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); } SINGLE_BATTLE_TEST("Refrigerate turns a Normal-type move into a Ice-type move") @@ -13,9 +13,9 @@ SINGLE_BATTLE_TEST("Refrigerate turns a Normal-type move into a Ice-type move") PLAYER(SPECIES_MEGANIUM); OPPONENT(SPECIES_AMAURA) { Ability(ABILITY_REFRIGERATE); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("It's super effective!"); } } diff --git a/test/battle/ability/rivalry.c b/test/battle/ability/rivalry.c index a7f4216ce0..85d10a5b3b 100644 --- a/test/battle/ability/rivalry.c +++ b/test/battle/ability/rivalry.c @@ -20,9 +20,9 @@ SINGLE_BATTLE_TEST("Rivalry increases power by x1.25 towards Pokémon of the sam PLAYER(species) { Ability(ability); } OPPONENT(species); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.25), results[1].damage); @@ -42,9 +42,9 @@ SINGLE_BATTLE_TEST("Rivalry decreases power by x0.75 towards Pokémon of differe PLAYER(species1) { Ability(ability); } OPPONENT(species2); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.75), results[1].damage); @@ -65,9 +65,9 @@ SINGLE_BATTLE_TEST("Rivalry doesn't modify power if the attacker is genderless", PLAYER(SPECIES_PORYGON) { Ability(ABILITY_TRACE); } // No genderless mon naturally gets Rivalry OPPONENT(species) { Ability(ability); }; } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT(results[0].damage == results[1].damage); @@ -88,9 +88,9 @@ SINGLE_BATTLE_TEST("Rivalry doesn't modify power if the target is genderless", s PLAYER(species) { Ability(ability); }; OPPONENT(SPECIES_PORYGON); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT(results[0].damage == results[1].damage); diff --git a/test/battle/ability/rocky_payload.c b/test/battle/ability/rocky_payload.c index 6756b98b8b..a185efb4f9 100644 --- a/test/battle/ability/rocky_payload.c +++ b/test/battle/ability/rocky_payload.c @@ -6,15 +6,15 @@ SINGLE_BATTLE_TEST("Rocky Payload increases Rock-type move damage", s16 damage) u32 move; u16 ability; - PARAMETRIZE { move = MOVE_TACKLE; ability = ABILITY_BIG_PECKS; } - PARAMETRIZE { move = MOVE_TACKLE; ability = ABILITY_ROCKY_PAYLOAD; } + PARAMETRIZE { move = MOVE_SCRATCH; ability = ABILITY_BIG_PECKS; } + PARAMETRIZE { move = MOVE_SCRATCH; ability = ABILITY_ROCKY_PAYLOAD; } PARAMETRIZE { move = MOVE_ROCK_THROW; ability = ABILITY_BIG_PECKS; } PARAMETRIZE { move = MOVE_ROCK_THROW; ability = ABILITY_ROCKY_PAYLOAD; } PARAMETRIZE { move = MOVE_POWER_GEM; ability = ABILITY_BIG_PECKS; } PARAMETRIZE { move = MOVE_POWER_GEM; ability = ABILITY_ROCKY_PAYLOAD; } GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) != TYPE_ROCK); + ASSUME(GetMoveType(MOVE_SCRATCH) != TYPE_ROCK); ASSUME(GetMoveType(MOVE_ROCK_THROW) == TYPE_ROCK); ASSUME(GetMoveType(MOVE_POWER_GEM) == TYPE_ROCK); ASSUME(GetMoveCategory(MOVE_ROCK_THROW) == DAMAGE_CATEGORY_PHYSICAL); @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Rocky Payload increases Rock-type move damage", s16 damage) } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { - EXPECT_EQ(results[0].damage, results[1].damage); // Tackle should be unaffected + EXPECT_EQ(results[0].damage, results[1].damage); // Scratch should be unaffected EXPECT_MUL_EQ(results[2].damage, Q_4_12(1.5), results[3].damage); // Rock Throw should be affected EXPECT_MUL_EQ(results[4].damage, Q_4_12(1.5), results[5].damage); // Power Gem should be affected } diff --git a/test/battle/ability/scrappy.c b/test/battle/ability/scrappy.c index 26a135860c..919ee486b9 100644 --- a/test/battle/ability/scrappy.c +++ b/test/battle/ability/scrappy.c @@ -12,8 +12,8 @@ SINGLE_BATTLE_TEST("Scrappy prevents intimidate") PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }; OPPONENT(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); }; } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(player, captureDamage: &turnOneHit); @@ -30,7 +30,7 @@ SINGLE_BATTLE_TEST("Scrappy prevents intimidate") SINGLE_BATTLE_TEST("Scrappy allows to hit Ghost-type Pokémon with Normal- and Fighting-type moves") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_KARATE_CHOP; } GIVEN { @@ -47,7 +47,7 @@ SINGLE_BATTLE_TEST("Scrappy allows to hit Ghost-type Pokémon with Normal- and F SINGLE_BATTLE_TEST("Scrappy doesn't bypass a Ghost-type's Wonder Guard") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_KARATE_CHOP; } GIVEN { diff --git a/test/battle/ability/seed_sower.c b/test/battle/ability/seed_sower.c index ad4beea515..5785d4684a 100644 --- a/test/battle/ability/seed_sower.c +++ b/test/battle/ability/seed_sower.c @@ -7,9 +7,9 @@ SINGLE_BATTLE_TEST("Seed Sower sets up Grassy Terrain when hit by an attack") PLAYER(SPECIES_ARBOLIVA) { Ability(ABILITY_SEED_SOWER); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); HP_BAR(player); ABILITY_POPUP(player); MESSAGE("Grass grew to cover the battlefield!"); diff --git a/test/battle/ability/shed_skin.c b/test/battle/ability/shed_skin.c index 2df293ecb4..60554f921e 100644 --- a/test/battle/ability/shed_skin.c +++ b/test/battle/ability/shed_skin.c @@ -8,7 +8,7 @@ SINGLE_BATTLE_TEST("Shed Skin triggers 33% of the time") else PASSES_RANDOMLY(33, 100, RNG_SHED_SKIN); GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_ARBOK) { Status1(STATUS1_POISON); Ability(ABILITY_SHED_SKIN); } } WHEN { diff --git a/test/battle/ability/sheer_force.c b/test/battle/ability/sheer_force.c index 7624dee9cb..23743eebe8 100644 --- a/test/battle/ability/sheer_force.c +++ b/test/battle/ability/sheer_force.c @@ -186,7 +186,7 @@ SINGLE_BATTLE_TEST("Sheer Force doesn't boost Shell Trap", s16 damage) PLAYER(SPECIES_TAUROS) { Ability(ability); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_SHELL_TRAP); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SHELL_TRAP); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { @@ -339,7 +339,7 @@ SINGLE_BATTLE_TEST("Sheer Force doesn't boost Comeuppance", s16 damage) PLAYER(SPECIES_TAUROS) { Ability(ability); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_COMEUPPANCE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_COMEUPPANCE); } } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { @@ -616,8 +616,10 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to s16 damage1, damage2; u32 move = 0; for (u32 j = 1; j < MOVES_COUNT; j += 4) + { if (GetMoveCategory(j) != DAMAGE_CATEGORY_STATUS && !IgnoreMoveForSheerForceBoost(j)) PARAMETRIZE { move = j; } + } GIVEN { PLAYER(SPECIES_STEELIX) { Ability(ABILITY_SHEER_FORCE); Item(ITEM_BLUK_BERRY); } PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_TELEPATHY); Level(100); Item(ITEM_BLUK_BERRY); } @@ -636,7 +638,7 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to else if (move == MOVE_MIRROR_COAT || move == MOVE_METAL_BURST) TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } else if (move == MOVE_SUCKER_PUNCH || move == MOVE_THUNDERCLAP) - TURN { MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } + TURN { MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } else if (move == MOVE_DREAM_EATER) { TURN { MOVE(playerLeft, MOVE_HYPNOSIS, target: opponentRight); MOVE(opponentLeft, MOVE_HYPNOSIS, target: playerRight); } @@ -714,7 +716,7 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to else if (move == MOVE_MIRROR_COAT || move == MOVE_METAL_BURST) TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } else if (move == MOVE_SUCKER_PUNCH || move == MOVE_THUNDERCLAP) - TURN { MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } + TURN { MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } else if (move == MOVE_DREAM_EATER) { TURN { MOVE(playerLeft, MOVE_HYPNOSIS, target: opponentRight); MOVE(opponentLeft, MOVE_HYPNOSIS, target: playerRight); } @@ -792,7 +794,7 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to else if (move == MOVE_MIRROR_COAT || move == MOVE_METAL_BURST) TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } else if (move == MOVE_SUCKER_PUNCH || move == MOVE_THUNDERCLAP) - TURN { MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } + TURN { MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } else if (move == MOVE_DREAM_EATER) { TURN { MOVE(playerLeft, MOVE_HYPNOSIS, target: opponentRight); MOVE(opponentLeft, MOVE_HYPNOSIS, target: playerRight); } @@ -872,7 +874,7 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to else if (move == MOVE_MIRROR_COAT || move == MOVE_METAL_BURST) TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } else if (move == MOVE_SUCKER_PUNCH || move == MOVE_THUNDERCLAP) - TURN { MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } + TURN { MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); MOVE(playerLeft, move, target: opponentRight); MOVE(opponentLeft, move, target: playerRight); } else if (move == MOVE_DREAM_EATER) { TURN { MOVE(playerLeft, MOVE_HYPNOSIS, target: opponentRight); MOVE(opponentLeft, MOVE_HYPNOSIS, target: playerRight); } diff --git a/test/battle/ability/shield_dust.c b/test/battle/ability/shield_dust.c index 59f5b1162c..a2c0b16030 100644 --- a/test/battle/ability/shield_dust.c +++ b/test/battle/ability/shield_dust.c @@ -125,7 +125,7 @@ DOUBLE_BATTLE_TEST("Shield Dust does or does not block Sparkling Aria depending { u32 moveToUse; PARAMETRIZE { moveToUse = MOVE_FINAL_GAMBIT; } - PARAMETRIZE { moveToUse = MOVE_TACKLE; } + PARAMETRIZE { moveToUse = MOVE_SCRATCH; } GIVEN { PLAYER(SPECIES_WYNAUT); PLAYER(SPECIES_WOBBUFFET); @@ -135,7 +135,7 @@ DOUBLE_BATTLE_TEST("Shield Dust does or does not block Sparkling Aria depending TURN { MOVE(playerRight, moveToUse, target: opponentRight); MOVE(playerLeft, MOVE_SPARKLING_ARIA); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SPARKLING_ARIA, playerLeft); - if (moveToUse == MOVE_TACKLE) { + if (moveToUse == MOVE_SCRATCH) { MESSAGE("The opposing Vivillon's burn was cured!"); STATUS_ICON(opponentLeft, none: TRUE); } else { @@ -183,7 +183,7 @@ SINGLE_BATTLE_TEST("Shield Dust does not prevent ability stat changes") PLAYER(SPECIES_VIVILLON) { Ability(ABILITY_SHIELD_DUST); } OPPONENT(SPECIES_ELDEGOSS) { Ability(ABILITY_COTTON_DOWN); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { MESSAGE("Vivillon's Speed fell!"); } diff --git a/test/battle/ability/shields_down.c b/test/battle/ability/shields_down.c index d0149e13f9..f9def2991d 100644 --- a/test/battle/ability/shields_down.c +++ b/test/battle/ability/shields_down.c @@ -8,7 +8,7 @@ SINGLE_BATTLE_TEST("Minior Meteor transforms into Minior Core on switch-in if it OPPONENT(SPECIES_WOBBUFFET) { HP(1); } OPPONENT(SPECIES_MINIOR_METEOR) { Ability(ABILITY_SHIELDS_DOWN); HP(1); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); SEND_OUT(opponent, 1); } } SCENE { ABILITY_POPUP(opponent, ABILITY_SHIELDS_DOWN); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, opponent); @@ -24,7 +24,7 @@ SINGLE_BATTLE_TEST("Minior Core transforms into Minior Meteor on switch-in if it OPPONENT(SPECIES_WOBBUFFET) { HP(1); } OPPONENT(SPECIES_MINIOR_CORE) { Ability(ABILITY_SHIELDS_DOWN); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); SEND_OUT(opponent, 1); } } SCENE { ABILITY_POPUP(opponent, ABILITY_SHIELDS_DOWN); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, opponent); diff --git a/test/battle/ability/snow_cloak.c b/test/battle/ability/snow_cloak.c index fe0adeaff9..5169ecd2ae 100644 --- a/test/battle/ability/snow_cloak.c +++ b/test/battle/ability/snow_cloak.c @@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Snow Cloak doesn't increase evasion if Cloud Nine/Air Lock i PLAYER(SPECIES_GLACEON) { Ability(ABILITY_SNOW_CLOAK); } OPPONENT(SPECIES_GOLDUCK) { Ability(ABILITY_CLOUD_NINE); } } WHEN { - TURN { MOVE(player, MOVE_HAIL); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_HAIL); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(player); } diff --git a/test/battle/ability/stamina.c b/test/battle/ability/stamina.c index 172154cc85..e9823b7068 100644 --- a/test/battle/ability/stamina.c +++ b/test/battle/ability/stamina.c @@ -20,14 +20,14 @@ SINGLE_BATTLE_TEST("Stamina raises Defense by 1 when hit by a move") s16 turnOneHit, turnTwoHit; u16 move; - PARAMETRIZE {move = MOVE_TACKLE; } + PARAMETRIZE {move = MOVE_SCRATCH; } PARAMETRIZE {move = MOVE_GUST; } GIVEN { - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); ASSUME(!IsBattleMoveStatus(MOVE_GUST)); ASSUME(GetMoveCategory(MOVE_GUST) == DAMAGE_CATEGORY_SPECIAL); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_STAMINA); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -38,7 +38,7 @@ SINGLE_BATTLE_TEST("Stamina raises Defense by 1 when hit by a move") STAMINA_HIT(opponent, player, move, "Wobbuffet's Defense rose!", turnTwoHit); } THEN { - if (move == MOVE_TACKLE) { + if (move == MOVE_SCRATCH) { EXPECT_MUL_EQ(turnTwoHit, Q_4_12(1.5), turnOneHit); } else { diff --git a/test/battle/ability/stance_change.c b/test/battle/ability/stance_change.c index c2325ec768..0c82c93177 100644 --- a/test/battle/ability/stance_change.c +++ b/test/battle/ability/stance_change.c @@ -5,7 +5,7 @@ SINGLE_BATTLE_TEST("Stance Change changes Aegislash from Shield to Blade when using a damaging move") { u16 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_SWIFT; } PARAMETRIZE { move = MOVE_GROWL; } GIVEN { diff --git a/test/battle/ability/static.c b/test/battle/ability/static.c index 8d5a27c6b5..b4290f8a5d 100644 --- a/test/battle/ability/static.c +++ b/test/battle/ability/static.c @@ -4,10 +4,10 @@ SINGLE_BATTLE_TEST("Static inflicts paralysis on contact") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(!MoveMakesContact(MOVE_SWIFT)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); } @@ -35,11 +35,11 @@ SINGLE_BATTLE_TEST("Static triggers 30% of the time") PASSES_RANDOMLY(3, 10, RNG_STATIC); GIVEN { ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(opponent, ABILITY_STATIC); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); diff --git a/test/battle/ability/steelworker.c b/test/battle/ability/steelworker.c index 23d4be2917..eaf36165f6 100644 --- a/test/battle/ability/steelworker.c +++ b/test/battle/ability/steelworker.c @@ -6,15 +6,15 @@ SINGLE_BATTLE_TEST("Steelworker increases Steel-type move damage", s16 damage) u32 move; u16 ability; - PARAMETRIZE { move = MOVE_TACKLE; ability = ABILITY_KLUTZ; } - PARAMETRIZE { move = MOVE_TACKLE; ability = ABILITY_STEELWORKER; } + PARAMETRIZE { move = MOVE_SCRATCH; ability = ABILITY_KLUTZ; } + PARAMETRIZE { move = MOVE_SCRATCH; ability = ABILITY_STEELWORKER; } PARAMETRIZE { move = MOVE_ANCHOR_SHOT; ability = ABILITY_KLUTZ; } PARAMETRIZE { move = MOVE_ANCHOR_SHOT; ability = ABILITY_STEELWORKER; } PARAMETRIZE { move = MOVE_FLASH_CANNON; ability = ABILITY_KLUTZ; } PARAMETRIZE { move = MOVE_FLASH_CANNON; ability = ABILITY_STEELWORKER; } GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) != TYPE_STEEL); + ASSUME(GetMoveType(MOVE_SCRATCH) != TYPE_STEEL); ASSUME(GetMoveType(MOVE_ANCHOR_SHOT) == TYPE_STEEL); ASSUME(GetMoveType(MOVE_FLASH_CANNON) == TYPE_STEEL); ASSUME(GetMoveCategory(MOVE_ANCHOR_SHOT) == DAMAGE_CATEGORY_PHYSICAL); @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Steelworker increases Steel-type move damage", s16 damage) } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { - EXPECT_EQ(results[0].damage, results[1].damage); // Tackle should be unaffected + EXPECT_EQ(results[0].damage, results[1].damage); // Scratch should be unaffected EXPECT_MUL_EQ(results[2].damage, Q_4_12(1.5), results[3].damage); // Anchor Shot should be affected EXPECT_MUL_EQ(results[4].damage, Q_4_12(1.5), results[5].damage); // Flash Cannon should be affected } diff --git a/test/battle/ability/stench.c b/test/battle/ability/stench.c index f1484de6c9..84cbf20f64 100644 --- a/test/battle/ability/stench.c +++ b/test/battle/ability/stench.c @@ -5,11 +5,11 @@ SINGLE_BATTLE_TEST("Stench has a 10% chance to flinch") { PASSES_RANDOMLY(1, 10, RNG_STENCH); GIVEN { - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); PLAYER(SPECIES_GRIMER) { Ability(ABILITY_STENCH); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("The opposing Wobbuffet flinched and couldn't move!"); } @@ -20,12 +20,12 @@ SINGLE_BATTLE_TEST("Stench does not stack with King's Rock") PASSES_RANDOMLY(1, 10, RNG_STENCH); GIVEN { ASSUME(gItemsInfo[ITEM_KINGS_ROCK].holdEffect == HOLD_EFFECT_FLINCH); - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); PLAYER(SPECIES_GRIMER) { Ability(ABILITY_STENCH); Item(ITEM_KINGS_ROCK); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("The opposing Wobbuffet flinched and couldn't move!"); } @@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Stench does not stack with King's Rock") DOUBLE_BATTLE_TEST("Stench only triggers if target takes damage") { GIVEN { - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); ASSUME(MoveHasAdditionalEffectWithChance(MOVE_FAKE_OUT, MOVE_EFFECT_FLINCH, 100)); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); @@ -43,12 +43,12 @@ DOUBLE_BATTLE_TEST("Stench only triggers if target takes damage") } WHEN { TURN { MOVE(playerLeft, MOVE_FAKE_OUT, target: opponentLeft); - MOVE(opponentLeft, MOVE_TACKLE, WITH_RNG(RNG_STENCH, TRUE), target: playerRight); - MOVE(playerRight, MOVE_TACKLE, target: opponentRight); + MOVE(opponentLeft, MOVE_SCRATCH, WITH_RNG(RNG_STENCH, TRUE), target: playerRight); + MOVE(playerRight, MOVE_SCRATCH, target: opponentRight); } TURN { MOVE(opponentLeft, MOVE_SCARY_FACE, WITH_RNG(RNG_STENCH, TRUE), target: playerRight); - MOVE(playerRight, MOVE_TACKLE, target: opponentRight); + MOVE(playerRight, MOVE_SCRATCH, target: opponentRight); } } SCENE { NONE_OF { MESSAGE("Wynaut flinched and couldn't move!"); } @@ -58,7 +58,7 @@ DOUBLE_BATTLE_TEST("Stench only triggers if target takes damage") DOUBLE_BATTLE_TEST("Stench doesn't trigger if partner uses a move") { GIVEN { - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); ASSUME(MoveHasAdditionalEffectWithChance(MOVE_FAKE_OUT, MOVE_EFFECT_FLINCH, 100)); PLAYER(SPECIES_WOBBUFFET) { Speed(20); } PLAYER(SPECIES_WYNAUT) { Speed(10); } @@ -67,15 +67,15 @@ DOUBLE_BATTLE_TEST("Stench doesn't trigger if partner uses a move") } WHEN { TURN { MOVE(playerLeft, MOVE_FAKE_OUT, target: opponentLeft); - MOVE(opponentRight, MOVE_TACKLE, target: playerRight); - MOVE(playerRight, MOVE_TACKLE, target: opponentRight); + MOVE(opponentRight, MOVE_SCRATCH, target: playerRight); + MOVE(playerRight, MOVE_SCRATCH, target: opponentRight); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_FAKE_OUT, playerLeft); MESSAGE("The opposing Grimer flinched and couldn't move!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); NOT MESSAGE("Wynaut flinched and couldn't move!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); } } diff --git a/test/battle/ability/super_luck.c b/test/battle/ability/super_luck.c index 39fd20ce16..faaf366747 100644 --- a/test/battle/ability/super_luck.c +++ b/test/battle/ability/super_luck.c @@ -15,9 +15,9 @@ SINGLE_BATTLE_TEST("Super Luck increases the critical hit ratio by 1 stage") PLAYER(SPECIES_TOGEPI) { Ability(ABILITY_SUPER_LUCK); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); MESSAGE("A critical hit!"); } } diff --git a/test/battle/ability/supreme_overlord.c b/test/battle/ability/supreme_overlord.c index eec81e89ed..759202cc1b 100644 --- a/test/battle/ability/supreme_overlord.c +++ b/test/battle/ability/supreme_overlord.c @@ -19,13 +19,13 @@ DOUBLE_BATTLE_TEST("Supreme Overlord boosts Attack by an additive 10% per fainte TURN { MOVE(playerRight, MOVE_MEMENTO, target: opponentRight); SEND_OUT(playerRight, 2); } if (switchMon) TURN { SWITCH(playerLeft, 0); } - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } } SCENE { if (switchMon) { ABILITY_POPUP(playerLeft, ABILITY_SUPREME_OVERLORD); MESSAGE("Kingambit gained strength from the fallen!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(opponentLeft, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.1), results[1].damage); @@ -53,11 +53,11 @@ DOUBLE_BATTLE_TEST("Supreme Overlord's boost caps at a 1.5x multipler", s16 dama if (faintCount == 6) TURN { MOVE(playerLeft, MOVE_MEMENTO, target: opponentRight); SEND_OUT(playerLeft, 0); USE_ITEM(playerRight, ITEM_REVIVE, 0); } TURN { SWITCH(playerRight, 3); } - TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); } } SCENE { ABILITY_POPUP(playerRight, ABILITY_SUPREME_OVERLORD); MESSAGE("Kingambit gained strength from the fallen!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); HP_BAR(opponentLeft, captureDamage: &results[i].damage); } FINALLY { EXPECT_EQ(results[0].damage, results[1].damage); @@ -79,13 +79,13 @@ SINGLE_BATTLE_TEST("Supreme Overlord does not boost attack if party members are PLAYER(SPECIES_PAWNIARD) { HP(fainted ? 0 : 1); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, target: opponent); } + TURN { MOVE(player, MOVE_SCRATCH, target: opponent); } } SCENE { NONE_OF { ABILITY_POPUP(player, ABILITY_SUPREME_OVERLORD); MESSAGE("Kingambit gained strength from the fallen!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_EQ(results[0].damage, results[1].damage); diff --git a/test/battle/ability/sword_of_ruin.c b/test/battle/ability/sword_of_ruin.c index 9501322ab7..395cd3fd68 100644 --- a/test/battle/ability/sword_of_ruin.c +++ b/test/battle/ability/sword_of_ruin.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveEffect(MOVE_ROLE_PLAY) == EFFECT_ROLE_PLAY); } @@ -15,15 +15,15 @@ SINGLE_BATTLE_TEST("Sword of Ruin reduces Defense if opposing mon's ability does PLAYER(SPECIES_CHIEN_PAO) { Ability(ABILITY_SWORD_OF_RUIN); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_ROLE_PLAY); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_ROLE_PLAY); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, ABILITY_SWORD_OF_RUIN); MESSAGE("Chien-Pao's Sword of Ruin weakened the Defense of all surrounding Pokémon!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &damage[0]); ANIMATION(ANIM_TYPE_MOVE, MOVE_ROLE_PLAY, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { EXPECT_MUL_EQ(damage[1], Q_4_12(1.33), damage[0]); @@ -40,7 +40,7 @@ SINGLE_BATTLE_TEST("Sword of Ruin's message displays correctly after all battler OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_RUINATION); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_RUINATION); } } SCENE { HP_BAR(opponent, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, opponent); @@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Sword of Ruin's message displays correctly after all battler OPPONENT(SPECIES_CHIEN_PAO); } WHEN { TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_RUINATION); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_RUINATION); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); diff --git a/test/battle/ability/tablets_of_ruin.c b/test/battle/ability/tablets_of_ruin.c index 976f929bbe..0b58edc793 100644 --- a/test/battle/ability/tablets_of_ruin.c +++ b/test/battle/ability/tablets_of_ruin.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveEffect(MOVE_ENTRAINMENT) == EFFECT_ENTRAINMENT); } @@ -15,15 +15,15 @@ SINGLE_BATTLE_TEST("Tablets of Ruin reduces Attack if opposing mon's ability doe PLAYER(SPECIES_WO_CHIEN) { Ability(ABILITY_TABLETS_OF_RUIN); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_ENTRAINMENT); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_ENTRAINMENT); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, ABILITY_TABLETS_OF_RUIN); MESSAGE("Wo-Chien's Tablets of Ruin weakened the Attack of all surrounding Pokémon!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage[0]); ANIMATION(ANIM_TYPE_MOVE, MOVE_ENTRAINMENT, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage[1]); } THEN { EXPECT_MUL_EQ(damage[0], Q_4_12(1.33), damage[1]); @@ -40,7 +40,7 @@ SINGLE_BATTLE_TEST("Tablets of Ruin's message displays correctly after all battl OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_RUINATION); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_RUINATION); } } SCENE { HP_BAR(opponent, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, opponent); @@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Tablets of Ruin's message displays correctly after all battl OPPONENT(SPECIES_WO_CHIEN); } WHEN { TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_RUINATION); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_RUINATION); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); diff --git a/test/battle/ability/tangling_hair.c b/test/battle/ability/tangling_hair.c index 45f6282fb8..36b14c5f47 100644 --- a/test/battle/ability/tangling_hair.c +++ b/test/battle/ability/tangling_hair.c @@ -3,9 +3,9 @@ ASSUMPTIONS { - ASSUME(GetMoveEffect(MOVE_TACKLE) == EFFECT_HIT); - ASSUME(GetMovePower(MOVE_TACKLE) > 0); - ASSUME(MoveMakesContact(MOVE_TACKLE) == TRUE); + ASSUME(GetMoveEffect(MOVE_SCRATCH) == EFFECT_HIT); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); + ASSUME(MoveMakesContact(MOVE_SCRATCH) == TRUE); } @@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Tangling Hair drops opposing mon's speed if ability user got { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { @@ -24,7 +24,7 @@ SINGLE_BATTLE_TEST("Tangling Hair drops opposing mon's speed if ability user got TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_TACKLE) { + if (move == MOVE_SCRATCH) { ABILITY_POPUP(player, ABILITY_TANGLING_HAIR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("The opposing Wynaut's Speed fell!"); @@ -39,9 +39,9 @@ SINGLE_BATTLE_TEST("Tangling Hair does not cause Rocky Helmet miss activation") PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); Item(ITEM_ROCKY_HELMET); } OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(player, ABILITY_TANGLING_HAIR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("The opposing Wynaut's Speed fell!"); @@ -56,9 +56,9 @@ SINGLE_BATTLE_TEST("Tangling Hair Speed stat drop triggers defiant and keeps ori PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); Item(ITEM_ROCKY_HELMET); } OPPONENT(SPECIES_PAWNIARD) { Ability(ABILITY_DEFIANT); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(player, ABILITY_TANGLING_HAIR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("The opposing Pawniard's Speed fell!"); diff --git a/test/battle/ability/tera_shell.c b/test/battle/ability/tera_shell.c index 63dda3207a..55a6c3d626 100644 --- a/test/battle/ability/tera_shell.c +++ b/test/battle/ability/tera_shell.c @@ -10,13 +10,13 @@ SINGLE_BATTLE_TEST("Tera Shell makes all moves against Terapagos not very effect PLAYER(SPECIES_TERAPAGOS_TERASTAL) { Ability(ABILITY_TERA_SHELL); HP(hp); MaxHP(100);} OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (hp == 100) { - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); ABILITY_POPUP(player, ABILITY_TERA_SHELL); MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); MESSAGE("It's not very effective…"); } @@ -63,14 +63,14 @@ DOUBLE_BATTLE_TEST("Tera Shell only makes the first hit of a double battle turn OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); } } SCENE { ABILITY_POPUP(playerLeft, ABILITY_TERA_SHELL); MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); HP_BAR(playerLeft, captureDamage: &firstHit); MESSAGE("It's not very effective…"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); HP_BAR(playerLeft, captureDamage: &secondHit); NOT MESSAGE("It's not very effective…"); } THEN { diff --git a/test/battle/ability/thermal_exchange.c b/test/battle/ability/thermal_exchange.c index 7484fa207c..90cf395f30 100644 --- a/test/battle/ability/thermal_exchange.c +++ b/test/battle/ability/thermal_exchange.c @@ -24,9 +24,9 @@ SINGLE_BATTLE_TEST("Thermal Exchange prevents the user from getting burned when PLAYER(SPECIES_BAXCALIBUR) { Ability(ABILITY_THERMAL_EXCHANGE); } OPPONENT(SPECIES_PONYTA) { Ability(ABILITY_FLAME_BODY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); NONE_OF { ABILITY_POPUP(opponent, ABILITY_FLAME_BODY); STATUS_ICON(player, burn: TRUE); diff --git a/test/battle/ability/toxic_chain.c b/test/battle/ability/toxic_chain.c index 97c3fdf4f9..b93af761cf 100644 --- a/test/battle/ability/toxic_chain.c +++ b/test/battle/ability/toxic_chain.c @@ -5,12 +5,12 @@ SINGLE_BATTLE_TEST("Toxic Chain inflicts bad poison when attacking") { PASSES_RANDOMLY(3, 10, RNG_TOXIC_CHAIN); GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) != DAMAGE_CATEGORY_STATUS); - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMoveCategory(MOVE_SCRATCH) != DAMAGE_CATEGORY_STATUS); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); PLAYER(SPECIES_OKIDOGI) { Ability(ABILITY_TOXIC_CHAIN); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ABILITY_POPUP(player, ABILITY_TOXIC_CHAIN); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); diff --git a/test/battle/ability/toxic_debris.c b/test/battle/ability/toxic_debris.c index b3b9dbbb2e..61e128e985 100644 --- a/test/battle/ability/toxic_debris.c +++ b/test/battle/ability/toxic_debris.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_SWIFT) == DAMAGE_CATEGORY_SPECIAL); } @@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Toxic Debris sets Toxic Spikes on the opposing side if hit b { u32 move; - PARAMETRIZE { move = MOVE_TACKLE;} + PARAMETRIZE { move = MOVE_SCRATCH;} PARAMETRIZE { move = MOVE_SWIFT;} GIVEN { @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Toxic Debris sets Toxic Spikes on the opposing side if hit b } WHEN { TURN { MOVE(opponent, move); } } SCENE { - if (move == MOVE_TACKLE) { + if (move == MOVE_SCRATCH) { ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison spikes were scattered on the ground all around the opposing team!"); } else { @@ -38,17 +38,17 @@ SINGLE_BATTLE_TEST("Toxic Debris does not activate if two layers of Toxic Spikes PLAYER(SPECIES_GLIMMORA) { Ability(ABILITY_TOXIC_DEBRIS); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison spikes were scattered on the ground all around the opposing team!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison spikes were scattered on the ground all around the opposing team!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); NONE_OF { ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison spikes were scattered on the ground all around the opposing team!"); @@ -63,10 +63,10 @@ SINGLE_BATTLE_TEST("If a Substitute is hit, Toxic Debris does not set Toxic Spik OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SUBSTITUTE); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); NONE_OF { ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison spikes were scattered on the ground all around the opposing team!"); @@ -97,9 +97,9 @@ SINGLE_BATTLE_TEST("Toxic Debris activates if user faints after physical hit") PLAYER(SPECIES_GLIMMORA) { HP(1); Ability(ABILITY_TOXIC_DEBRIS); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("Glimmora fainted!"); ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison spikes were scattered on the ground all around the opposing team!"); @@ -112,9 +112,9 @@ SINGLE_BATTLE_TEST("Air Balloon is popped after Toxic Debris activates") PLAYER(SPECIES_GLIMMORA) { Ability(ABILITY_TOXIC_DEBRIS); Item(ITEM_AIR_BALLOON); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS); MESSAGE("Poison spikes were scattered on the ground all around the opposing team!"); MESSAGE("Glimmora's Air Balloon popped!"); diff --git a/test/battle/ability/transistor.c b/test/battle/ability/transistor.c index eb3c015af7..8b8f098d52 100644 --- a/test/battle/ability/transistor.c +++ b/test/battle/ability/transistor.c @@ -9,15 +9,15 @@ SINGLE_BATTLE_TEST("Transistor increases Electric-type attack / special attack", u32 move; u16 ability; - PARAMETRIZE { move = MOVE_TACKLE; ability = ABILITY_KLUTZ; } - PARAMETRIZE { move = MOVE_TACKLE; ability = ABILITY_TRANSISTOR; } + PARAMETRIZE { move = MOVE_SCRATCH; ability = ABILITY_KLUTZ; } + PARAMETRIZE { move = MOVE_SCRATCH; ability = ABILITY_TRANSISTOR; } PARAMETRIZE { move = MOVE_WILD_CHARGE; ability = ABILITY_KLUTZ; } PARAMETRIZE { move = MOVE_WILD_CHARGE; ability = ABILITY_TRANSISTOR; } PARAMETRIZE { move = MOVE_THUNDER_SHOCK; ability = ABILITY_KLUTZ; } PARAMETRIZE { move = MOVE_THUNDER_SHOCK; ability = ABILITY_TRANSISTOR; } GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) != TYPE_ELECTRIC); + ASSUME(GetMoveType(MOVE_SCRATCH) != TYPE_ELECTRIC); ASSUME(GetMoveType(MOVE_WILD_CHARGE) == TYPE_ELECTRIC); ASSUME(GetMoveType(MOVE_THUNDER_SHOCK) == TYPE_ELECTRIC); ASSUME(GetMoveCategory(MOVE_WILD_CHARGE) == DAMAGE_CATEGORY_PHYSICAL); @@ -29,7 +29,7 @@ SINGLE_BATTLE_TEST("Transistor increases Electric-type attack / special attack", } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { - EXPECT_EQ(results[0].damage, results[1].damage); // Tackle should be unaffected + EXPECT_EQ(results[0].damage, results[1].damage); // Scratch should be unaffected EXPECT_LT(results[2].damage, results[3].damage); // cannot test exact factor because ATK / SPATK introduces inaccuracies EXPECT_LT(results[4].damage, results[5].damage); diff --git a/test/battle/ability/vessel_of_ruin.c b/test/battle/ability/vessel_of_ruin.c index 4d159c0b0e..30c7520c36 100644 --- a/test/battle/ability/vessel_of_ruin.c +++ b/test/battle/ability/vessel_of_ruin.c @@ -40,7 +40,7 @@ SINGLE_BATTLE_TEST("Vessel of Ruin's message displays correctly after all battle OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_RUINATION); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_RUINATION); } } SCENE { HP_BAR(opponent, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, opponent); @@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Vessel of Ruin's message displays correctly after all battle OPPONENT(SPECIES_TING_LU); } WHEN { TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_RUINATION); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_RUINATION); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); diff --git a/test/battle/ability/weak_armor.c b/test/battle/ability/weak_armor.c index 12e9ef3bcc..6d661dfa7c 100644 --- a/test/battle/ability/weak_armor.c +++ b/test/battle/ability/weak_armor.c @@ -3,10 +3,10 @@ ASSUMPTIONS { - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); ASSUME(!IsBattleMoveStatus(MOVE_GUST)); ASSUME(GetMoveCategory(MOVE_GUST) == DAMAGE_CATEGORY_SPECIAL); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(B_WEAK_ARMOR_SPEED >= GEN_7); } @@ -14,7 +14,7 @@ SINGLE_BATTLE_TEST("Weak Armor lowers Defense by 1 and boosts Speed by 2 when hi { u16 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_GUST; } GIVEN { @@ -25,7 +25,7 @@ SINGLE_BATTLE_TEST("Weak Armor lowers Defense by 1 and boosts Speed by 2 when hi } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); HP_BAR(player); - if (move == MOVE_TACKLE) { + if (move == MOVE_SCRATCH) { ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Slugma's Weak Armor lowered its Defense!"); @@ -39,7 +39,7 @@ SINGLE_BATTLE_TEST("Weak Armor lowers Defense by 1 and boosts Speed by 2 when hi } } } THEN { - if (move == MOVE_TACKLE) { + if (move == MOVE_SCRATCH) { EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE - 1); EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 2); } @@ -86,9 +86,9 @@ SINGLE_BATTLE_TEST("Weak Armor still lowers boosts Speed if Defense can't go any TURN { MOVE(opponent, MOVE_SCREECH); } TURN { MOVE(opponent, MOVE_SCREECH); } TURN { MOVE(opponent, MOVE_SCREECH); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); NONE_OF { @@ -113,9 +113,9 @@ SINGLE_BATTLE_TEST("Weak Armor still lowers Defense if Speed can't go any higher TURN { MOVE(player, MOVE_AGILITY); } TURN { MOVE(player, MOVE_AGILITY); } TURN { MOVE(player, MOVE_AGILITY); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); diff --git a/test/battle/ability/wind_power.c b/test/battle/ability/wind_power.c index fd4a4b95f5..279d51f623 100644 --- a/test/battle/ability/wind_power.c +++ b/test/battle/ability/wind_power.c @@ -5,14 +5,14 @@ ASSUMPTIONS { ASSUME(!IsBattleMoveStatus(MOVE_THUNDERBOLT)); ASSUME(GetMoveType(MOVE_THUNDERBOLT) == TYPE_ELECTRIC); - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); ASSUME(!IsBattleMoveStatus(MOVE_AIR_CUTTER)); ASSUME(GetMoveTarget(MOVE_AIR_CUTTER) == MOVE_TARGET_BOTH); ASSUME(IsWindMove(MOVE_AIR_CUTTER)); ASSUME(!IsBattleMoveStatus(MOVE_PETAL_BLIZZARD)); ASSUME(GetMoveTarget(MOVE_PETAL_BLIZZARD) == MOVE_TARGET_FOES_AND_ALLY); ASSUME(IsWindMove(MOVE_PETAL_BLIZZARD)); - ASSUME(!IsWindMove(MOVE_TACKLE)); + ASSUME(!IsWindMove(MOVE_SCRATCH)); } SINGLE_BATTLE_TEST("Wind Power sets up Charge for player when hit by a wind move") @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for player when hit by a wind move s16 dmgBefore, dmgAfter; u16 move; - PARAMETRIZE {move = MOVE_TACKLE; } + PARAMETRIZE {move = MOVE_SCRATCH; } PARAMETRIZE {move = MOVE_AIR_CUTTER; } GIVEN { @@ -65,7 +65,7 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for opponent when hit by a wind mo s16 dmgBefore, dmgAfter; u16 move; - PARAMETRIZE {move = MOVE_TACKLE; } + PARAMETRIZE {move = MOVE_SCRATCH; } PARAMETRIZE {move = MOVE_AIR_CUTTER; } GIVEN { diff --git a/test/battle/ability/zen_mode.c b/test/battle/ability/zen_mode.c index 6dae38e0fe..a3e82a2b2b 100644 --- a/test/battle/ability/zen_mode.c +++ b/test/battle/ability/zen_mode.c @@ -17,10 +17,10 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Darmanitan used Celebrate!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); HP_BAR(player); ABILITY_POPUP(player, ABILITY_ZEN_MODE); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); diff --git a/test/battle/ability/zero_to_hero.c b/test/battle/ability/zero_to_hero.c index 195bb44289..dcac9b8540 100644 --- a/test/battle/ability/zero_to_hero.c +++ b/test/battle/ability/zero_to_hero.c @@ -147,7 +147,7 @@ SINGLE_BATTLE_TEST("Zero to Hero's message displays correctly after all battlers } WHEN { TURN { MOVE(player, MOVE_FLIP_TURN); SEND_OUT(player, 1); } TURN { MOVE(opponent, MOVE_EXPLOSION); SEND_OUT(player, 0); SEND_OUT(opponent, 1); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(opponent, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, opponent); @@ -170,7 +170,7 @@ SINGLE_BATTLE_TEST("Zero to Hero's message displays correctly after all battlers } WHEN { TURN { MOVE(opponent, MOVE_FLIP_TURN); SEND_OUT(opponent, 1); } TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 0); } - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_SCRATCH); } } SCENE { HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); diff --git a/test/battle/ai/ai.c b/test/battle/ai/ai.c index 6f56e608b3..a23052b25c 100644 --- a/test/battle/ai/ai.c +++ b/test/battle/ai/ai.c @@ -58,18 +58,18 @@ AI_SINGLE_BATTLE_TEST("AI prefers moves with better accuracy, but only if they b expectedMove2 = MOVE_NONE; // Here it's a simple test, both Slam and Strength deal the same damage, but Strength always hits, whereas Slam often misses. - PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_TACKLE; hp = 490; expectedMove = MOVE_STRENGTH; turns = 4; } - PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 365; expectedMove = MOVE_STRENGTH; turns = 3; } - PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 245; expectedMove = MOVE_STRENGTH; turns = 2; } - PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 125; expectedMove = MOVE_STRENGTH; turns = 1; } + PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_SCRATCH; hp = 490; expectedMove = MOVE_STRENGTH; turns = 4; } + PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_SCRATCH; hp = 365; expectedMove = MOVE_STRENGTH; turns = 3; } + PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_SCRATCH; hp = 245; expectedMove = MOVE_STRENGTH; turns = 2; } + PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_SCRATCH; hp = 125; expectedMove = MOVE_STRENGTH; turns = 1; } // Mega Kick deals more damage, but can miss more often. Here, AI should choose Mega Kick if it can faint target in less number of turns than Strength. Otherwise, it should use Strength. - PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 170; expectedMove = MOVE_MEGA_KICK; turns = 1; } - PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 245; expectedMove = MOVE_STRENGTH; turns = 2; } + PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_SCRATCH; hp = 170; expectedMove = MOVE_MEGA_KICK; turns = 1; } + PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_SCRATCH; hp = 245; expectedMove = MOVE_STRENGTH; turns = 2; } // Swift always hits and Guts has accuracy of 100%. Hustle lowers accuracy of all physical moves. - PARAMETRIZE { abilityAtk = ABILITY_HUSTLE; move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 5; expectedMove = MOVE_SWIFT; turns = 1; } - PARAMETRIZE { abilityAtk = ABILITY_HUSTLE; move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_GUST; move4 = MOVE_TACKLE; hp = 5; expectedMove = MOVE_GUST; turns = 1; } - // Mega Kick and Slam both have lower accuracy. Gust and Tackle both have 100, so AI can choose either of them. - PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_SLAM; move3 = MOVE_TACKLE; move4 = MOVE_GUST; hp = 5; expectedMove = MOVE_GUST; expectedMove2 = MOVE_TACKLE; turns = 1; } + PARAMETRIZE { abilityAtk = ABILITY_HUSTLE; move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_SCRATCH; hp = 5; expectedMove = MOVE_SWIFT; turns = 1; } + PARAMETRIZE { abilityAtk = ABILITY_HUSTLE; move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_GUST; move4 = MOVE_SCRATCH; hp = 5; expectedMove = MOVE_GUST; turns = 1; } + // Mega Kick and Slam both have lower accuracy. Gust and Scratch both have 100, so AI can choose either of them. + PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_SLAM; move3 = MOVE_SCRATCH; move4 = MOVE_GUST; hp = 5; expectedMove = MOVE_GUST; expectedMove2 = MOVE_SCRATCH; turns = 1; } // All moves hit with No guard ability PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_GUST; hp = 5; expectedMove = MOVE_MEGA_KICK; expectedMove2 = MOVE_GUST; turns = 1; } // Tests to compare move that always hits and a beneficial effect. A move with higher acc should be chosen in this case. @@ -85,14 +85,14 @@ AI_SINGLE_BATTLE_TEST("AI prefers moves with better accuracy, but only if they b ASSUME(GetMovePower(MOVE_MEGA_KICK) > GetMovePower(MOVE_STRENGTH)); ASSUME(GetMoveAccuracy(MOVE_SLAM) < GetMoveAccuracy(MOVE_STRENGTH)); ASSUME(GetMoveAccuracy(MOVE_MEGA_KICK) < GetMoveAccuracy(MOVE_STRENGTH)); - ASSUME(GetMoveAccuracy(MOVE_TACKLE) == 100); + ASSUME(GetMoveAccuracy(MOVE_SCRATCH) == 100); ASSUME(GetMoveAccuracy(MOVE_GUST) == 100); ASSUME(GetMoveAccuracy(MOVE_SHOCK_WAVE) == 0); ASSUME(GetMoveAccuracy(MOVE_THUNDERBOLT) == 100); ASSUME(GetMoveAccuracy(MOVE_ICY_WIND) != 100); ASSUME(GetMoveCategory(MOVE_SLAM) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_STRENGTH) == DAMAGE_CATEGORY_PHYSICAL); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_MEGA_KICK) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_SWIFT) == DAMAGE_CATEGORY_SPECIAL); ASSUME(GetMoveCategory(MOVE_SHOCK_WAVE) == DAMAGE_CATEGORY_SPECIAL); @@ -359,7 +359,7 @@ AI_SINGLE_BATTLE_TEST("AI won't use ground type attacks against flying type Poke AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_CROBAT); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_NIDOQUEEN) { Moves(MOVE_EARTHQUAKE, MOVE_TACKLE, MOVE_POISON_STING, MOVE_GUST); } + OPPONENT(SPECIES_NIDOQUEEN) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH, MOVE_POISON_STING, MOVE_GUST); } } WHEN { TURN { NOT_EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } TURN { MOVE(player, MOVE_GRAVITY); NOT_EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } @@ -388,7 +388,7 @@ AI_DOUBLE_BATTLE_TEST("AI won't use a Weather changing move if partner already c PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Moves(weatherMoveLeft); } - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, weatherMoveRight); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, weatherMoveRight); } } WHEN { TURN { NOT_EXPECT_MOVE(opponentRight, weatherMoveRight); SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerLeft); @@ -410,7 +410,7 @@ AI_DOUBLE_BATTLE_TEST("AI will not use Helping Hand if partner does not have any AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND, MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND, MOVE_SCRATCH); } OPPONENT(SPECIES_WOBBUFFET) { Moves(move1, move2, move3, move4); } } WHEN { TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND); @@ -440,7 +440,7 @@ AI_DOUBLE_BATTLE_TEST("AI will not use a status move if partner already chose He PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND); } - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, statusMove); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, statusMove); } } WHEN { TURN { NOT_EXPECT_MOVE(opponentRight, statusMove); SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerLeft); @@ -654,13 +654,13 @@ AI_DOUBLE_BATTLE_TEST("AI will not choose Earthquake if it damages the partner") AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_PHANPY) { Moves(MOVE_EARTHQUAKE, MOVE_TACKLE); } + OPPONENT(SPECIES_PHANPY) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } OPPONENT(species) { Moves(MOVE_CELEBRATE); } } WHEN { if (species == SPECIES_CHARIZARD) TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } else - TURN { EXPECT_MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); } + TURN { EXPECT_MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); } } } @@ -671,10 +671,10 @@ AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if partner is not alive") AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } OPPONENT(SPECIES_PIKACHU) { HP(1); Moves(MOVE_CELEBRATE); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentRight); } TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } } } @@ -686,7 +686,7 @@ AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if it kill an opposing mon and AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET) { HP(1); } - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); } OPPONENT(SPECIES_PARAS) { Moves(MOVE_CELEBRATE); } } WHEN { TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); } @@ -704,13 +704,13 @@ AI_DOUBLE_BATTLE_TEST("AI will the see a corresponding absorbing ability on part AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_DISCHARGE, MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_DISCHARGE, MOVE_SCRATCH); } OPPONENT(SPECIES_PIKACHU) { HP(1); Ability(ability); Moves(MOVE_CELEBRATE); } } WHEN { if (ability == ABILITY_LIGHTNING_ROD) TURN { EXPECT_MOVE(opponentLeft, MOVE_DISCHARGE); } else - TURN { EXPECT_MOVE(opponentLeft, MOVE_TACKLE); } + TURN { EXPECT_MOVE(opponentLeft, MOVE_SCRATCH); } } } @@ -825,7 +825,7 @@ AI_SINGLE_BATTLE_TEST("AI stays choice locked into moves in spite of the player' AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET); PLAYER(playerMon) { Ability(ability); } - OPPONENT(SPECIES_SMEARGLE) { Item(ITEM_CHOICE_BAND); Moves(aiMove, MOVE_TACKLE); } + OPPONENT(SPECIES_SMEARGLE) { Item(ITEM_CHOICE_BAND); Moves(aiMove, MOVE_SCRATCH); } } WHEN { TURN { SWITCH(player, 1); EXPECT_MOVE(opponent, aiMove); } TURN { EXPECT_MOVE(opponent, aiMove); } @@ -839,10 +839,10 @@ AI_SINGLE_BATTLE_TEST("AI won't use Sucker Punch if it expects a move of the sam ASSUME(GetMovePriority(MOVE_SUCKER_PUNCH) == 1); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET) { Speed(300); Moves(MOVE_QUICK_ATTACK); } - OPPONENT(SPECIES_WOBBUFFET) { Speed(100); Moves(MOVE_SUCKER_PUNCH, MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); Moves(MOVE_SUCKER_PUNCH, MOVE_SCRATCH); } } WHEN { TURN { MOVE(player, MOVE_QUICK_ATTACK); EXPECT_MOVE(opponent, MOVE_SUCKER_PUNCH); } - TURN { MOVE(player, MOVE_QUICK_ATTACK); EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_QUICK_ATTACK); EXPECT_MOVE(opponent, MOVE_SCRATCH); } } } @@ -852,11 +852,11 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI considers Focus Sash when det ASSUME(gItemsInfo[ITEM_FOCUS_SASH].holdEffect == HOLD_EFFECT_FOCUS_SASH); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_SMART_SWITCHING | AI_FLAG_OMNISCIENT); PLAYER(SPECIES_BEAUTIFLY) { Speed(10); Moves(MOVE_AIR_SLASH); } - OPPONENT(SPECIES_CACNEA) { Speed(1); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_CACNEA) { Speed(1); Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_COMBUSKEN) { Speed(1); Moves(MOVE_FLAMETHROWER); Item(ITEM_FOCUS_SASH); } OPPONENT(SPECIES_CROBAT) { Speed(11); Moves(MOVE_SLUDGE); } } WHEN { - TURN { MOVE(player, MOVE_AIR_SLASH); EXPECT_MOVE(opponent, MOVE_TACKLE); EXPECT_SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_AIR_SLASH); EXPECT_MOVE(opponent, MOVE_SCRATCH); EXPECT_SEND_OUT(opponent, 1); } TURN { MOVE(player, MOVE_AIR_SLASH); EXPECT_MOVE(opponent, MOVE_FLAMETHROWER); } } } @@ -867,11 +867,11 @@ AI_SINGLE_BATTLE_TEST("AI sees popped Air Balloon") ASSUME(ItemId_GetHoldEffect(ITEM_AIR_BALLOON) == HOLD_EFFECT_AIR_BALLOON); ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT); - PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_GEODUDE) { Moves(MOVE_TACKLE, MOVE_EARTHQUAKE); } + PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_GEODUDE) { Moves(MOVE_SCRATCH, MOVE_EARTHQUAKE); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } } } @@ -881,13 +881,13 @@ AI_SINGLE_BATTLE_TEST("AI sees popped Air Balloon after Air Balloon mon switches ASSUME(ItemId_GetHoldEffect(ITEM_AIR_BALLOON) == HOLD_EFFECT_AIR_BALLOON); ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT); - PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_TACKLE); } - PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_GEODUDE) { Moves(MOVE_TACKLE, MOVE_EARTHQUAKE); } + PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_SCRATCH); } + PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_GEODUDE) { Moves(MOVE_SCRATCH, MOVE_EARTHQUAKE); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_SCRATCH); } TURN { SWITCH(player, 1); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } - TURN { SWITCH(player, 0); EXPECT_MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); SEND_OUT(player, 1); } + TURN { SWITCH(player, 0); EXPECT_MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); SEND_OUT(player, 1); } } } diff --git a/test/battle/ai/ai_check_viability.c b/test/battle/ai/ai_check_viability.c index 0e9377fdea..2f30c3df3a 100644 --- a/test/battle/ai/ai_check_viability.c +++ b/test/battle/ai/ai_check_viability.c @@ -138,7 +138,7 @@ AI_SINGLE_BATTLE_TEST("AI sees increased base power of Spit Up") ASSUME(GetMoveEffect(MOVE_SPIT_UP) == EFFECT_SPIT_UP); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET) { HP(43); } - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_STOCKPILE, MOVE_SPIT_UP, MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_STOCKPILE, MOVE_SPIT_UP, MOVE_SCRATCH); } } WHEN { TURN { EXPECT_MOVE(opponent, MOVE_STOCKPILE); } TURN { EXPECT_MOVE(opponent, MOVE_SPIT_UP); } diff --git a/test/battle/ai/ai_choice.c b/test/battle/ai/ai_choice.c index b19af6a073..4fae4debba 100644 --- a/test/battle/ai/ai_choice.c +++ b/test/battle/ai/ai_choice.c @@ -31,12 +31,12 @@ AI_SINGLE_BATTLE_TEST("Choiced Pokémon switch out after using a status move onc ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_RHYDON) - OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_TACKLE); Item(heldItem); Ability(ability); } + OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_SCRATCH); Item(heldItem); Ability(ability); } OPPONENT(SPECIES_SWAMPERT) { Moves(MOVE_WATERFALL); } } WHEN { TURN { EXPECT_MOVE(opponent, MOVE_YAWN); } if (ability == ABILITY_KLUTZ) { // Klutz ignores item - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); } } else { TURN { EXPECT_SWITCH(opponent, 1); } @@ -49,12 +49,12 @@ AI_SINGLE_BATTLE_TEST("Choiced Pokémon only consider their own status moves whe GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY | AI_FLAG_SMART_SWITCHING | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_MON_CHOICES); - PLAYER(SPECIES_ZIGZAGOON) { Speed(4); Moves(MOVE_TAIL_WHIP, MOVE_TACKLE); } - OPPONENT(SPECIES_ZIGZAGOON) { Speed(5); Moves(MOVE_TACKLE); Item(ITEM_CHOICE_BAND); } - OPPONENT(SPECIES_ZIGZAGOON) { Speed(5); Moves(MOVE_TACKLE); } + PLAYER(SPECIES_ZIGZAGOON) { Speed(4); Moves(MOVE_TAIL_WHIP, MOVE_SCRATCH); } + OPPONENT(SPECIES_ZIGZAGOON) { Speed(5); Moves(MOVE_SCRATCH); Item(ITEM_CHOICE_BAND); } + OPPONENT(SPECIES_ZIGZAGOON) { Speed(5); Moves(MOVE_SCRATCH); } } WHEN { - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TAIL_WHIP); } - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TAIL_WHIP); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_TAIL_WHIP); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_TAIL_WHIP); } } } @@ -79,14 +79,14 @@ AI_SINGLE_BATTLE_TEST("Choiced Pokémon won't use stat boosting moves") ASSUME(GetMoveTarget(MOVE_SWORDS_DANCE) == MOVE_TARGET_USER); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_RHYDON) - OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_SWORDS_DANCE, MOVE_TACKLE); Item(heldItem); Ability(ability); } + OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_SWORDS_DANCE, MOVE_SCRATCH); Item(heldItem); Ability(ability); } OPPONENT(SPECIES_SWAMPERT) { Moves(MOVE_WATERFALL); } } WHEN { if (ability == ABILITY_KLUTZ) { // Klutz ignores item TURN { EXPECT_MOVE(opponent, MOVE_SWORDS_DANCE); } } else { - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); } } } } @@ -114,14 +114,14 @@ AI_SINGLE_BATTLE_TEST("Choiced Pokémon won't use status move if they are the on ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_RHYDON) - OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_TACKLE); Item(heldItem); Ability(ability); } + OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_SCRATCH); Item(heldItem); Ability(ability); } OPPONENT(SPECIES_SWAMPERT) { HP(isAlive); Moves(MOVE_WATERFALL); } } WHEN { if (isAlive == 1 || ability == ABILITY_KLUTZ) { TURN { EXPECT_MOVE(opponent, MOVE_YAWN); } } else { - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); } } } } @@ -149,14 +149,14 @@ AI_SINGLE_BATTLE_TEST("Choiced Pokémon won't use status move if they don't have ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_RHYDON) - OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_TACKLE); Item(heldItem); Ability(ability); } + OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_SCRATCH); Item(heldItem); Ability(ability); } OPPONENT(species) { Moves(move); } } WHEN { if (species == SPECIES_SWAMPERT || ability == ABILITY_KLUTZ) { TURN { EXPECT_MOVE(opponent, MOVE_YAWN); } } else { - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); } } } } @@ -184,14 +184,14 @@ AI_SINGLE_BATTLE_TEST("Choiced Pokémon won't use status move if they are trappe ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(species) { Ability(playerAbility); } - OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_TACKLE); Item(heldItem); Ability(aiAbility); } + OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_SCRATCH); Item(heldItem); Ability(aiAbility); } OPPONENT(SPECIES_SWAMPERT) { Moves(MOVE_WATERFALL); } } WHEN { if (playerAbility != ABILITY_ARENA_TRAP || aiAbility == ABILITY_KLUTZ) { TURN { EXPECT_MOVE(opponent, MOVE_YAWN); } } else { - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); } } } } diff --git a/test/battle/ai/ai_double_ace.c b/test/battle/ai/ai_double_ace.c index 5e49c0d6e1..ce8c484b4a 100644 --- a/test/battle/ai/ai_double_ace.c +++ b/test/battle/ai/ai_double_ace.c @@ -82,8 +82,8 @@ AI_DOUBLE_BATTLE_TEST("AI_FLAG_DOUBLE_ACE_POKEMON: Ace mons won't be switched in PLAYER(SPECIES_GENGAR) { Level(10); } PLAYER(SPECIES_GENGAR) { Level(10); } - OPPONENT(SPECIES_RATTATA) { Moves(MOVE_TACKLE); Level(10); } - OPPONENT(SPECIES_PSYDUCK) { Moves(MOVE_TACKLE); Level(10); } + OPPONENT(SPECIES_RATTATA) { Moves(MOVE_SCRATCH); Level(10); } + OPPONENT(SPECIES_PSYDUCK) { Moves(MOVE_SCRATCH); Level(10); } OPPONENT(SPECIES_ABRA) { Moves(MOVE_ABSORB); Level(20); } diff --git a/test/battle/ai/ai_flag_predict_switch.c b/test/battle/ai/ai_flag_predict_switch.c index 132ddf4175..b64dea488c 100644 --- a/test/battle/ai/ai_flag_predict_switch.c +++ b/test/battle/ai/ai_flag_predict_switch.c @@ -61,7 +61,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_PREDICT_SWITCH: Considers ShouldSwitch and GetMos GIVEN { ASSUME(B_POWDER_GRASS >= GEN_6); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_PREDICT_SWITCH | AI_FLAG_PREDICT_INCOMING_MON); - PLAYER(SPECIES_SKARMORY) { Moves(MOVE_TACKLE); } + PLAYER(SPECIES_SKARMORY) { Moves(MOVE_SCRATCH); } PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_ARENA_TRAP); Moves(MOVE_ACROBATICS); } OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); Moves(MOVE_HEADBUTT, MOVE_THUNDERPUNCH); } OPPONENT(SPECIES_BRELOOM); diff --git a/test/battle/ai/ai_flag_risky.c b/test/battle/ai/ai_flag_risky.c index b725b0f444..5a2e224d48 100644 --- a/test/battle/ai/ai_flag_risky.c +++ b/test/battle/ai/ai_flag_risky.c @@ -14,9 +14,9 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_RISKY: AI will blindly Mirror Coat against specia ASSUME(gSpeciesInfo[SPECIES_GROVYLE].baseAttack == 65); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiRiskyFlag); PLAYER(SPECIES_GROVYLE) { Level(20); Moves(MOVE_ENERGY_BALL); } - OPPONENT(SPECIES_CASTFORM) { Level(20); Moves(MOVE_TACKLE, MOVE_MIRROR_COAT); } + OPPONENT(SPECIES_CASTFORM) { Level(20); Moves(MOVE_SCRATCH, MOVE_MIRROR_COAT); } } WHEN { - TURN { MOVE(player, MOVE_ENERGY_BALL) ; EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_MIRROR_COAT : MOVE_TACKLE); } + TURN { MOVE(player, MOVE_ENERGY_BALL) ; EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_MIRROR_COAT : MOVE_SCRATCH); } } } @@ -33,9 +33,9 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_RISKY: AI will blindly Counter against physical a ASSUME(gSpeciesInfo[SPECIES_MARSHTOMP].baseSpAttack == 60); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiRiskyFlag); PLAYER(SPECIES_MARSHTOMP) { Level(20); Moves(MOVE_WATERFALL); } - OPPONENT(SPECIES_CASTFORM) { Level(20); Moves(MOVE_TACKLE, MOVE_COUNTER); } + OPPONENT(SPECIES_CASTFORM) { Level(20); Moves(MOVE_SCRATCH, MOVE_COUNTER); } } WHEN { - TURN { MOVE(player, MOVE_WATERFALL) ; EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_COUNTER : MOVE_TACKLE); } + TURN { MOVE(player, MOVE_WATERFALL) ; EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_COUNTER : MOVE_SCRATCH); } } } @@ -50,9 +50,9 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_RISKY: AI will prioritize Revenge if slower") ASSUME(GetMoveEffect(MOVE_REVENGE) == EFFECT_REVENGE); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiRiskyFlag); PLAYER(SPECIES_GROVYLE) { Level(20); Speed(4); Moves(MOVE_ENERGY_BALL); } - OPPONENT(SPECIES_CASTFORM) { Level(19); Speed(3); Moves(MOVE_TACKLE, MOVE_REVENGE); } + OPPONENT(SPECIES_CASTFORM) { Level(19); Speed(3); Moves(MOVE_SCRATCH, MOVE_REVENGE); } } WHEN { - TURN { MOVE(player, MOVE_ENERGY_BALL) ; EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_REVENGE : MOVE_TACKLE); } + TURN { MOVE(player, MOVE_ENERGY_BALL) ; EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_REVENGE : MOVE_SCRATCH); } } } @@ -84,9 +84,9 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_RISKY | AI_FLAG_PREFER_HIGHEST_DAMAGE_MOVE: AI pr GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiRiskyFlag); - PLAYER(SPECIES_PSYDUCK) { Level(5); Moves(MOVE_TACKLE); } + PLAYER(SPECIES_PSYDUCK) { Level(5); Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_CASTFORM) { Level(20); Moves(MOVE_THUNDER, MOVE_THUNDERBOLT); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_THUNDER : MOVE_THUNDERBOLT); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_THUNDER : MOVE_THUNDERBOLT); } } } diff --git a/test/battle/ai/ai_powerful_status.c b/test/battle/ai/ai_powerful_status.c index 414ba7329a..c504a74b80 100644 --- a/test/battle/ai/ai_powerful_status.c +++ b/test/battle/ai/ai_powerful_status.c @@ -6,14 +6,14 @@ AI_SINGLE_BATTLE_TEST("AI prefers to set up a powerful Status over fainting a ta { GIVEN { ASSUME(GetMoveEffect(MOVE_TRICK_ROOM) == EFFECT_TRICK_ROOM); - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_POWERFUL_STATUS); PLAYER(SPECIES_WOBBUFFET) { HP(1); } PLAYER(SPECIES_WYNAUT); - OPPONENT(SPECIES_DUSCLOPS) { Moves(MOVE_TRICK_ROOM, MOVE_TACKLE); } + OPPONENT(SPECIES_DUSCLOPS) { Moves(MOVE_TRICK_ROOM, MOVE_SCRATCH); } } WHEN { TURN { EXPECT_MOVE(opponent, MOVE_TRICK_ROOM); } - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } } SCENE { MESSAGE("Wobbuffet fainted!"); } @@ -24,14 +24,14 @@ AI_SINGLE_BATTLE_TEST("AI will try to do damage on target instead of setting up GIVEN { ASSUME(GetMoveEffect(MOVE_RAPID_SPIN) == EFFECT_RAPID_SPIN); ASSUME(GetMoveEffect(MOVE_STEALTH_ROCK) == EFFECT_STEALTH_ROCK); - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_POWERFUL_STATUS | AI_FLAG_OMNISCIENT); PLAYER(SPECIES_WOBBUFFET) { HP(1); Moves(MOVE_RAPID_SPIN, MOVE_DEFOG, MOVE_CELEBRATE); } PLAYER(SPECIES_WYNAUT); - OPPONENT(SPECIES_GLIGAR) { Moves(MOVE_STEALTH_ROCK, MOVE_TACKLE); } + OPPONENT(SPECIES_GLIGAR) { Moves(MOVE_STEALTH_ROCK, MOVE_SCRATCH); } OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } } SCENE { MESSAGE("Wobbuffet fainted!"); } @@ -41,14 +41,14 @@ AI_SINGLE_BATTLE_TEST("AI will not set up Rain if it is already raining") { GIVEN { ASSUME(GetMoveEffect(MOVE_RAIN_DANCE) == EFFECT_RAIN_DANCE); - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_POWERFUL_STATUS); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_RAIN_DANCE, MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_RAIN_DANCE, MOVE_SCRATCH); } OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { EXPECT_MOVE(opponent, MOVE_RAIN_DANCE); } - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); } } } diff --git a/test/battle/ai/ai_switching.c b/test/battle/ai/ai_switching.c index 5d7a61473a..6f0fb7920c 100644 --- a/test/battle/ai/ai_switching.c +++ b/test/battle/ai/ai_switching.c @@ -7,7 +7,7 @@ AI_SINGLE_BATTLE_TEST("AI gets baited by Protect Switch tactics") // This behavi AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_STUNFISK); PLAYER(SPECIES_PELIPPER); - OPPONENT(SPECIES_DARKRAI) { Moves(MOVE_TACKLE, MOVE_PECK, MOVE_EARTHQUAKE, MOVE_THUNDERBOLT); } + OPPONENT(SPECIES_DARKRAI) { Moves(MOVE_SCRATCH, MOVE_PECK, MOVE_EARTHQUAKE, MOVE_THUNDERBOLT); } OPPONENT(SPECIES_SCIZOR) { Moves(MOVE_HYPER_BEAM, MOVE_FACADE, MOVE_GIGA_IMPACT, MOVE_EXTREME_SPEED); } } WHEN { @@ -28,8 +28,8 @@ AI_SINGLE_BATTLE_TEST("AI switches if Perish Song is about to kill") GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) {Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_CROBAT) {Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) {Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_CROBAT) {Moves(MOVE_SCRATCH); } } WHEN { TURN { MOVE(player, MOVE_PERISH_SONG); } TURN { ; } @@ -76,7 +76,7 @@ AI_SINGLE_BATTLE_TEST("AI will switch out if it has no move that affects the pla AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_RATTATA); OPPONENT(SPECIES_GENGAR) { Moves(MOVE_SHADOW_BALL); } - OPPONENT(SPECIES_RATTATA) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_RATTATA) { Moves(MOVE_SCRATCH); } } WHEN { TURN { EXPECT_SWITCH(opponent, 1); } } @@ -90,9 +90,9 @@ AI_DOUBLE_BATTLE_TEST("AI will not try to switch for the same pokemon for 2 spot PLAYER(SPECIES_SHEDINJA); PLAYER(SPECIES_SHEDINJA); // No moves to damage player. - OPPONENT(SPECIES_LINOONE) { Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_LINOONE) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_LINOONE) { Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_LINOONE) { Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_GENGAR) { Moves(MOVE_SHADOW_BALL); } } WHEN { TURN { EXPECT_SWITCH(opponentLeft, 3); }; @@ -140,11 +140,11 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Eject Button will send out Ace PARAMETRIZE { aiSmartMonChoicesFlag = AI_FLAG_SMART_MON_CHOICES; } GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartMonChoicesFlag | AI_FLAG_ACE_POKEMON); - PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } + PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_ZIGZAGOON) { Item(ITEM_EJECT_BUTTON); }; OPPONENT(SPECIES_LINOONE); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); EXPECT_SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_SCRATCH); EXPECT_SEND_OUT(opponent, 1); } } } @@ -155,12 +155,12 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Eject Pack will send out Ace M PARAMETRIZE { aiSmartMonChoicesFlag = AI_FLAG_SMART_MON_CHOICES; } GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartMonChoicesFlag | AI_FLAG_ACE_POKEMON); - PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } - PLAYER(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_ZIGZAGOON) { Item(ITEM_EJECT_PACK); Moves(MOVE_TACKLE); } + PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } + PLAYER(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_ZIGZAGOON) { Item(ITEM_EJECT_PACK); Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_LINOONE) { Moves(MOVE_HEADBUTT); } } WHEN { - TURN { SWITCH(player, 1); EXPECT_MOVE(opponent, MOVE_TACKLE); EXPECT_SEND_OUT(opponent, 1); } + TURN { SWITCH(player, 1); EXPECT_MOVE(opponent, MOVE_SCRATCH); EXPECT_SEND_OUT(opponent, 1); } } } @@ -169,7 +169,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculati { GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); - PLAYER(SPECIES_VENUSAUR) { Level(30); Moves(MOVE_TACKLE); } + PLAYER(SPECIES_VENUSAUR) { Level(30); Moves(MOVE_SCRATCH); } // Opponent party courtesy of Skolgrahd, who triggered the bug in the first place OPPONENT(SPECIES_PIKACHU) { Level(100); Moves(MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } OPPONENT(SPECIES_NINETALES_ALOLA) { Level(100); Moves(MOVE_AURORA_VEIL, MOVE_BLIZZARD, MOVE_MOONBLAST, MOVE_DISABLE); } @@ -178,7 +178,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculati OPPONENT(SPECIES_TYPHLOSION) { Level(100); Moves(MOVE_ERUPTION, MOVE_HEAT_WAVE, MOVE_FOCUS_BLAST, MOVE_EXTRASENSORY); } OPPONENT(SPECIES_UMBREON) { Level(100); Item(ITEM_LEFTOVERS); Moves(MOVE_FOUL_PLAY, MOVE_SNARL, MOVE_HELPING_HAND, MOVE_THUNDER_WAVE); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVES(opponent, MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVES(opponent, MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } } SCENE { MESSAGE("Venusaur fainted!"); } @@ -191,11 +191,11 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculati AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); PLAYER(SPECIES_BULBASAUR) { Level(5); Moves(MOVE_SWORDS_DANCE, MOVE_WHIRLWIND, MOVE_SAND_ATTACK, MOVE_TAIL_WHIP); } // Scenario courtesy of Duke, who triggered the bug in the first place - OPPONENT(SPECIES_GEODUDE) { Level(100); Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_GEODUDE) { Level(100); Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_NOSEPASS) { Level(100); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_GEODUDE) { Level(100); Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_GEODUDE) { Level(100); Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_NOSEPASS) { Level(100); Moves(MOVE_SCRATCH); } } WHEN { - TURN { MOVE(player, MOVE_SWORDS_DANCE); EXPECT_MOVES(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SWORDS_DANCE); EXPECT_MOVES(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Bulbasaur fainted!"); } @@ -262,7 +262,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI considers hazard damage whe GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartSwitchFlags); PLAYER(SPECIES_MEGANIUM) { Speed(100); SpDefense(328); SpAttack(265); Moves(MOVE_STEALTH_ROCK, MOVE_SURF); } // Meganium does ~56% minimum ~66% maximum, enough to KO Charizard after rocks and never KO Typhlosion after rocks - OPPONENT(SPECIES_PONYTA) { Level(5); Speed(5); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_PONYTA) { Level(5); Speed(5); Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_CHARIZARD) { Speed(200); Moves(MOVE_FLAMETHROWER); SpAttack(317); SpDefense(207); MaxHP(297); } // Outspeends and 2HKOs Meganium OPPONENT(SPECIES_TYPHLOSION) { Speed(200); Moves(MOVE_FLAMETHROWER); SpAttack(317); SpDefense(207); MaxHP(297); } // Outspeends and 2HKOs Meganium } WHEN { @@ -278,10 +278,10 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize u32 move2; u32 expectedIndex; - PARAMETRIZE { expectedIndex = 3; move1 = MOVE_TACKLE; move2 = MOVE_TACKLE; aiSmartSwitchFlags = 0; } // When not smart, AI will only switch in a defensive mon if it has a SE move, otherwise will just default to damage - PARAMETRIZE { expectedIndex = 1; move1 = MOVE_GIGA_DRAIN; move2 = MOVE_TACKLE; aiSmartSwitchFlags = 0; } - PARAMETRIZE { expectedIndex = 2; move1 = MOVE_TACKLE; move2 = MOVE_TACKLE; aiSmartSwitchFlags = AI_FLAG_SMART_MON_CHOICES; } // When smart, AI will prioritize SE move, but still switch in good type matchup without SE move - PARAMETRIZE { expectedIndex = 1; move1 = MOVE_GIGA_DRAIN; move2 = MOVE_TACKLE; aiSmartSwitchFlags = AI_FLAG_SMART_MON_CHOICES; } + PARAMETRIZE { expectedIndex = 3; move1 = MOVE_SCRATCH; move2 = MOVE_SCRATCH; aiSmartSwitchFlags = 0; } // When not smart, AI will only switch in a defensive mon if it has a SE move, otherwise will just default to damage + PARAMETRIZE { expectedIndex = 1; move1 = MOVE_GIGA_DRAIN; move2 = MOVE_SCRATCH; aiSmartSwitchFlags = 0; } + PARAMETRIZE { expectedIndex = 2; move1 = MOVE_SCRATCH; move2 = MOVE_SCRATCH; aiSmartSwitchFlags = AI_FLAG_SMART_MON_CHOICES; } // When smart, AI will prioritize SE move, but still switch in good type matchup without SE move + PARAMETRIZE { expectedIndex = 1; move1 = MOVE_GIGA_DRAIN; move2 = MOVE_SCRATCH; aiSmartSwitchFlags = AI_FLAG_SMART_MON_CHOICES; } GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartSwitchFlags); @@ -329,7 +329,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize ASSUME(GetMoveEffect(MOVE_FALSE_SWIPE) == EFFECT_FALSE_SWIPE); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_FALSE_SWIPE, MOVE_BOOMBURST); Speed(5); SpAttack(50); } - OPPONENT(SPECIES_PONYTA) { Level(1); Item(ITEM_EJECT_BUTTON); Moves(MOVE_TACKLE); Speed(4); } // Forces switchout + OPPONENT(SPECIES_PONYTA) { Level(1); Item(ITEM_EJECT_BUTTON); Moves(MOVE_SCRATCH); Speed(4); } // Forces switchout OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_IRON_HEAD); Speed(4); SpDefense(50); } OPPONENT(SPECIES_ELECTRODE) { Level(30); Ability(ABILITY_STATIC); Moves(MOVE_CHARGE_BEAM); Speed(6); SpDefense(53); } } WHEN { @@ -344,7 +344,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize ASSUME(GetMoveEffect(MOVE_GROWL) == EFFECT_ATTACK_DOWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_GROWL, MOVE_BOOMBURST); Speed(5); SpAttack(50); } - OPPONENT(SPECIES_PONYTA) { Level(1); Item(ITEM_EJECT_PACK); Moves(MOVE_TACKLE); Speed(4); } // Forces switchout + OPPONENT(SPECIES_PONYTA) { Level(1); Item(ITEM_EJECT_PACK); Moves(MOVE_SCRATCH); Speed(4); } // Forces switchout OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_IRON_HEAD); Speed(4); SpDefense(50); } OPPONENT(SPECIES_ELECTRODE) { Level(30); Ability(ABILITY_STATIC); Moves(MOVE_CHARGE_BEAM); Speed(6); SpDefense(53); } } WHEN { @@ -387,7 +387,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Post-KO switches prioritize of GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_WING_ATTACK, MOVE_BOOMBURST); Speed(5); } - OPPONENT(SPECIES_PONYTA) { Level(1); Moves(MOVE_TACKLE); Speed(4); } + OPPONENT(SPECIES_PONYTA) { Level(1); Moves(MOVE_SCRATCH); Speed(4); } OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_IRON_HEAD); Speed(4); } // Mid battle, AI sends out Aron OPPONENT(SPECIES_ELECTRODE) { Level(30); Ability(ABILITY_STATIC); Moves(MOVE_CHARGE_BEAM); Speed(6); } } WHEN { @@ -415,12 +415,12 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI switches out after sufficient { GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_HITMONTOP) { Level(30); Moves(MOVE_CHARM, MOVE_TACKLE); Ability(ABILITY_INTIMIDATE); Speed(5); } - OPPONENT(SPECIES_GRIMER) { Level(30); Moves(MOVE_TACKLE); Speed(4); } + PLAYER(SPECIES_HITMONTOP) { Level(30); Moves(MOVE_CHARM, MOVE_SCRATCH); Ability(ABILITY_INTIMIDATE); Speed(5); } + OPPONENT(SPECIES_GRIMER) { Level(30); Moves(MOVE_SCRATCH); Speed(4); } OPPONENT(SPECIES_PONYTA) { Level(30); Moves(MOVE_HEADBUTT); Speed(4); } } WHEN { TURN { MOVE(player, MOVE_CHARM); } - TURN { MOVE(player, MOVE_TACKLE); EXPECT_SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_SWITCH(opponent, 1); } } } @@ -428,17 +428,17 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not switch out if Pokemo { u32 move1; - PARAMETRIZE { move1 = MOVE_TACKLE; } + PARAMETRIZE { move1 = MOVE_SCRATCH; } PARAMETRIZE { move1 = MOVE_RAPID_SPIN; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_RAPID_SPIN) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_EARTHQUAKE) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_HEADBUTT) == DAMAGE_CATEGORY_PHYSICAL); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_HITMONTOP) { Level(30); Moves(MOVE_CHARM, MOVE_TACKLE, MOVE_STEALTH_ROCK, MOVE_EARTHQUAKE); Ability(ABILITY_INTIMIDATE); Speed(5); } - OPPONENT(SPECIES_GRIMER) { Level(30); Moves(MOVE_TACKLE); Item(ITEM_FOCUS_SASH); Speed(4); } + PLAYER(SPECIES_HITMONTOP) { Level(30); Moves(MOVE_CHARM, MOVE_SCRATCH, MOVE_STEALTH_ROCK, MOVE_EARTHQUAKE); Ability(ABILITY_INTIMIDATE); Speed(5); } + OPPONENT(SPECIES_GRIMER) { Level(30); Moves(MOVE_SCRATCH); Item(ITEM_FOCUS_SASH); Speed(4); } OPPONENT(SPECIES_PONYTA) { Level(30); Moves(MOVE_HEADBUTT, move1); Speed(4); } } WHEN { TURN { MOVE(player, MOVE_STEALTH_ROCK); } @@ -448,8 +448,8 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not switch out if Pokemo MOVE(player, MOVE_CHARM); if (move1 == MOVE_RAPID_SPIN) EXPECT_SWITCH(opponent, 1); - else if (move1 == MOVE_TACKLE) - EXPECT_MOVE(opponent, MOVE_TACKLE); + else if (move1 == MOVE_SCRATCH) + EXPECT_MOVE(opponent, MOVE_SCRATCH); } } } @@ -486,7 +486,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI will switch in trapping mon GIVEN { ASSUME(gSpeciesInfo[SPECIES_MAWILE].types[0] == TYPE_STEEL); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartMonChoicesFlag); - PLAYER(SPECIES_MAWILE) { Speed(2); Moves(MOVE_PROTECT, MOVE_TACKLE); } + PLAYER(SPECIES_MAWILE) { Speed(2); Moves(MOVE_PROTECT, MOVE_SCRATCH); } PLAYER(SPECIES_WOBBUFFET) { Speed(1); } OPPONENT(SPECIES_SNORLAX) { Speed(3); Moves(MOVE_SELF_DESTRUCT); } OPPONENT(SPECIES_MAGNEZONE) { Speed(1); Ability(ABILITY_MAGNET_PULL); Moves(MOVE_SHOCK_WAVE); } @@ -507,7 +507,7 @@ AI_SINGLE_BATTLE_TEST("AI won't use trapping behaviour if player only has 1 mon GIVEN { ASSUME(gSpeciesInfo[SPECIES_MAWILE].types[0] == TYPE_STEEL); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartMonChoicesFlag); - PLAYER(SPECIES_MAWILE) { Speed(2); Moves(MOVE_PROTECT, MOVE_TACKLE); } + PLAYER(SPECIES_MAWILE) { Speed(2); Moves(MOVE_PROTECT, MOVE_SCRATCH); } OPPONENT(SPECIES_SNORLAX) { Speed(3); Moves(MOVE_SELF_DESTRUCT); } OPPONENT(SPECIES_MAGNEZONE) { Speed(1); Ability(ABILITY_MAGNET_PULL); Moves(MOVE_SHOCK_WAVE); } OPPONENT(SPECIES_MEGANIUM) { Speed(3); Moves(MOVE_EARTH_POWER); } @@ -558,14 +558,14 @@ AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch out if it can't deal damage to ASSUME(gSpeciesInfo[SPECIES_SHEDINJA].abilities[0] == ABILITY_WONDER_GUARD); ASSUME(gSpeciesInfo[SPECIES_SHEDINJA].abilities[1] == ABILITY_NONE); ASSUME(gSpeciesInfo[SPECIES_SHEDINJA].abilities[2] == ABILITY_NONE); - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); ASSUME(GetMoveType(MOVE_SHADOW_BALL) == TYPE_GHOST); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_SHEDINJA) { Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } + PLAYER(SPECIES_SHEDINJA) { Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SHADOW_BALL); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE) ; EXPECT_SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH) ; EXPECT_SWITCH(opponent, 1); } } } @@ -578,14 +578,14 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it can't d ASSUME(gSpeciesInfo[SPECIES_SHEDINJA].abilities[0] == ABILITY_WONDER_GUARD); ASSUME(gSpeciesInfo[SPECIES_SHEDINJA].abilities[1] == ABILITY_NONE); ASSUME(gSpeciesInfo[SPECIES_SHEDINJA].abilities[2] == ABILITY_NONE); - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); ASSUME(GetMoveType(MOVE_SHADOW_BALL) == TYPE_GHOST); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_SHEDINJA) { Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } + PLAYER(SPECIES_SHEDINJA) { Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SHADOW_BALL); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE) ; EXPECT_SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH) ; EXPECT_SWITCH(opponent, 1); } } } @@ -598,12 +598,12 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee GIVEN { ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE, MOVE_CELEBRATE, MOVE_TOXIC, MOVE_AURA_SPHERE); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } + PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH, MOVE_CELEBRATE, MOVE_TOXIC, MOVE_AURA_SPHERE); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } OPPONENT(species) { Moves(MOVE_ROCK_SMASH); } } WHEN { - TURN { MOVE(player, MOVE_TOXIC); EXPECT_MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_AURA_SPHERE); EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_TOXIC); EXPECT_MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_AURA_SPHERE); EXPECT_MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_AURA_SPHERE); EXPECT_SWITCH(opponent, 1); } } } @@ -646,10 +646,10 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee ASSUME(GetMoveEffect(MOVE_LEECH_SEED) == EFFECT_LEECH_SEED); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_WHIMSICOTT) { Moves(MOVE_LEECH_SEED); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } } WHEN { - TURN { MOVE(player, MOVE_LEECH_SEED) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_LEECH_SEED) ; EXPECT_MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_LEECH_SEED); EXPECT_SWITCH(opponent, 1); } } } @@ -661,10 +661,10 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee ASSUME(GetMoveEffect(MOVE_ATTRACT) == EFFECT_ATTRACT); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_LUVDISC) { Moves(MOVE_ATTRACT); Gender(MON_FEMALE); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); Gender(MON_MALE); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); Gender(MON_MALE); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); Gender(MON_MALE); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); Gender(MON_MALE); } } WHEN { - TURN { MOVE(player, MOVE_ATTRACT) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_ATTRACT) ; EXPECT_MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_ATTRACT) ; EXPECT_SWITCH(opponent, 1); } } } @@ -678,15 +678,15 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee GIVEN { ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE, MOVE_YAWN); } - OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE); HP(hp); MaxHP(30); } + PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_SCRATCH, MOVE_YAWN); } + OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_SCRATCH); HP(hp); MaxHP(30); } OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_HEADBUTT); } } WHEN { - TURN { MOVE(player, MOVE_YAWN) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_YAWN) ; EXPECT_MOVE(opponent, MOVE_SCRATCH); } if (hp == 30) TURN { MOVE(player, MOVE_YAWN) ; EXPECT_SWITCH(opponent, 1); } else - TURN { MOVE(player, MOVE_YAWN) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_YAWN) ; EXPECT_MOVE(opponent, MOVE_SCRATCH); } } } @@ -698,12 +698,12 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not switch out if it has GIVEN { ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE, MOVE_YAWN); } - OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE); HP(hp); MaxHP(30); } + PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_SCRATCH, MOVE_YAWN); } + OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_SCRATCH); HP(hp); MaxHP(30); } OPPONENT(SPECIES_SLAKOTH) { Level(1); Moves(MOVE_HEADBUTT); } } WHEN { - TURN { MOVE(player, MOVE_YAWN) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_YAWN) ; EXPECT_MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH) ; EXPECT_MOVE(opponent, MOVE_SCRATCH); } } } @@ -716,18 +716,18 @@ AI_DOUBLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee GIVEN { ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE, MOVE_CELEBRATE, MOVE_YAWN); } - PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE, MOVE_CELEBRATE, MOVE_YAWN); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); HP(hp); MaxHP(30); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } + PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_SCRATCH, MOVE_CELEBRATE, MOVE_YAWN); } + PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_SCRATCH, MOVE_CELEBRATE, MOVE_YAWN); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); HP(hp); MaxHP(30); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } } WHEN { TURN { MOVE(playerLeft, MOVE_YAWN, target: opponentLeft); MOVE(playerRight, MOVE_CELEBRATE, target: opponentLeft); } if (hp == 30) TURN { MOVE(playerLeft, MOVE_YAWN, target: opponentLeft); MOVE(playerRight, MOVE_CELEBRATE, target: opponentLeft); EXPECT_SWITCH(opponentLeft, 2); } else - TURN { MOVE(playerLeft, MOVE_YAWN, target: opponentLeft); MOVE(playerRight, MOVE_CELEBRATE, target: opponentLeft); EXPECT_MOVE(opponentLeft, MOVE_TACKLE); } + TURN { MOVE(playerLeft, MOVE_YAWN, target: opponentLeft); MOVE(playerRight, MOVE_CELEBRATE, target: opponentLeft); EXPECT_MOVE(opponentLeft, MOVE_SCRATCH); } } } @@ -738,10 +738,10 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if player's m ASSUME(GetMoveType(MOVE_DIVE) == TYPE_WATER); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_LUVDISC) { Moves(MOVE_DIVE); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_MANTINE) { Moves(MOVE_TACKLE); Ability(ABILITY_WATER_ABSORB); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_MANTINE) { Moves(MOVE_SCRATCH); Ability(ABILITY_WATER_ABSORB); } } WHEN { - TURN { MOVE(player, MOVE_DIVE) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_DIVE) ; EXPECT_MOVE(opponent, MOVE_SCRATCH); } TURN { SKIP_TURN(player); EXPECT_SWITCH(opponent, 1); } } } @@ -754,7 +754,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has an AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_LUVDISC) { Moves(MOVE_WATER_GUN); } OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SHOCK_WAVE); } - OPPONENT(SPECIES_MANTINE) { Moves(MOVE_TACKLE); Ability(ABILITY_WATER_ABSORB); } + OPPONENT(SPECIES_MANTINE) { Moves(MOVE_SCRATCH); Ability(ABILITY_WATER_ABSORB); } } WHEN { TURN { MOVE(player, MOVE_WATER_GUN) ; EXPECT_MOVE(opponent, MOVE_SHOCK_WAVE); } TURN { MOVE(player, MOVE_WATER_GUN) ; EXPECT_SWITCH(opponent, 1); } @@ -768,10 +768,10 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if player's m ASSUME(GetMoveType(MOVE_SOLAR_BEAM) == TYPE_GRASS); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_BELLOSSOM) { Moves(MOVE_SOLAR_BEAM, MOVE_THUNDERBOLT); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_AZUMARILL) { Moves(MOVE_PLAY_ROUGH); Ability(ABILITY_SAP_SIPPER); } } WHEN { - TURN { MOVE(player, MOVE_SOLAR_BEAM) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SOLAR_BEAM) ; EXPECT_MOVE(opponent, MOVE_SCRATCH); } TURN { SKIP_TURN(player); EXPECT_SWITCH(opponent, 1); } } } @@ -783,10 +783,10 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if player's m ASSUME(GetMoveType(MOVE_DIG) == TYPE_GROUND); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_SANDSHREW) { Moves(MOVE_DIG); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_SWELLOW) { Moves(MOVE_WING_ATTACK); } } WHEN { - TURN { MOVE(player, MOVE_DIG) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_DIG) ; EXPECT_MOVE(opponent, MOVE_SCRATCH); } TURN { SKIP_TURN(player); EXPECT_SWITCH(opponent, 1); } } } @@ -798,10 +798,10 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if player's m ASSUME(GetMoveType(MOVE_DIG) == TYPE_GROUND); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_SANDSHREW) { Moves(MOVE_DIG); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_BRONZONG) { Moves(MOVE_PSYCHIC); Ability(ABILITY_LEVITATE); } } WHEN { - TURN { MOVE(player, MOVE_DIG) ; EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_DIG) ; EXPECT_MOVE(opponent, MOVE_SCRATCH); } TURN { SKIP_TURN(player); EXPECT_SWITCH(opponent, 1); } } } @@ -826,10 +826,10 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has an ASSUME(GetMoveType(MOVE_WATER_GUN) == TYPE_WATER); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); PLAYER(SPECIES_ZIGZAGOON) { Moves(move); } - OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } - OPPONENT(aiMon) { Moves(MOVE_TACKLE); Ability(absorbingAbility); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } + OPPONENT(aiMon) { Moves(MOVE_SCRATCH); Ability(absorbingAbility); } } WHEN { - TURN { MOVE(player, move); EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, move); EXPECT_MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(player, move); EXPECT_SWITCH(opponent, 1); } } } @@ -858,12 +858,12 @@ AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch out if badly statused with >= 5 PASSES_RANDOMLY(SHOULD_SWITCH_NATURAL_CURE_STRONG_PERCENTAGE, 100, RNG_AI_SWITCH_NATURAL_CURE); GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_ODDISH) { Moves(MOVE_TOXIC, MOVE_TACKLE); } - OPPONENT(SPECIES_SWABLU) { Ability(ABILITY_NATURAL_CURE); Moves(MOVE_TACKLE, MOVE_PECK); } - OPPONENT(SPECIES_SWABLU) { Ability(ABILITY_NATURAL_CURE); Moves(MOVE_TACKLE); } + PLAYER(SPECIES_ODDISH) { Moves(MOVE_TOXIC, MOVE_SCRATCH); } + OPPONENT(SPECIES_SWABLU) { Ability(ABILITY_NATURAL_CURE); Moves(MOVE_SCRATCH, MOVE_PECK); } + OPPONENT(SPECIES_SWABLU) { Ability(ABILITY_NATURAL_CURE); Moves(MOVE_SCRATCH); } } WHEN { TURN { MOVE(player, MOVE_TOXIC); EXPECT_MOVE(opponent, MOVE_PECK); } - TURN { MOVE(player, MOVE_TACKLE); EXPECT_SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_SWITCH(opponent, 1); } } } @@ -872,11 +872,11 @@ AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch out if it has <= 66% HP remaini PASSES_RANDOMLY(SHOULD_SWITCH_REGENERATOR_PERCENTAGE, 100, RNG_AI_SWITCH_REGENERATOR); GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_SLOWBRO) { MaxHP(100); HP(65); Ability(ABILITY_REGENERATOR); Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_SLOWBRO) { Ability(ABILITY_REGENERATOR); Moves(MOVE_TACKLE); } + PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_SLOWBRO) { MaxHP(100); HP(65); Ability(ABILITY_REGENERATOR); Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_SLOWBRO) { Ability(ABILITY_REGENERATOR); Moves(MOVE_SCRATCH); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); EXPECT_SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_SWITCH(opponent, 1); } } } @@ -886,8 +886,8 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee GIVEN { ASSUME(GetMoveEffect(MOVE_ENCORE) == EFFECT_ENCORE); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_AZURILL) { Moves(MOVE_TACKLE, MOVE_ENCORE); } - OPPONENT(SPECIES_ODDISH) { Moves(MOVE_TOXIC, MOVE_SWEET_SCENT, MOVE_INGRAIN, MOVE_TACKLE); } + PLAYER(SPECIES_AZURILL) { Moves(MOVE_SCRATCH, MOVE_ENCORE); } + OPPONENT(SPECIES_ODDISH) { Moves(MOVE_TOXIC, MOVE_SWEET_SCENT, MOVE_INGRAIN, MOVE_SCRATCH); } OPPONENT(SPECIES_ARON) { Moves(MOVE_METAL_CLAW); } } WHEN { TURN { EXPECT_MOVE(opponent, MOVE_TOXIC); MOVE(player, MOVE_ENCORE); } @@ -900,12 +900,12 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will stay in if Encore'd into GIVEN { ASSUME(GetMoveEffect(MOVE_ENCORE) == EFFECT_ENCORE); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_AZURILL) { Moves(MOVE_TACKLE, MOVE_ENCORE); } + PLAYER(SPECIES_AZURILL) { Moves(MOVE_SCRATCH, MOVE_ENCORE); } OPPONENT(SPECIES_ODDISH) { Moves(MOVE_ACID); } OPPONENT(SPECIES_ARON) { Moves(MOVE_METAL_CLAW); } } WHEN { TURN { EXPECT_MOVE(opponent, MOVE_ACID); MOVE(player, MOVE_ENCORE); } - TURN { EXPECT_MOVE(opponent, MOVE_ACID); MOVE(player, MOVE_TACKLE); } + TURN { EXPECT_MOVE(opponent, MOVE_ACID); MOVE(player, MOVE_SCRATCH); } } } @@ -916,12 +916,12 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if Encore'd i GIVEN { ASSUME(GetMoveEffect(MOVE_ENCORE) == EFFECT_ENCORE); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_AZURILL) { Moves(MOVE_TACKLE, MOVE_ENCORE); } - OPPONENT(SPECIES_ODDISH) { Moves(MOVE_TACKLE); } + PLAYER(SPECIES_AZURILL) { Moves(MOVE_SCRATCH, MOVE_ENCORE); } + OPPONENT(SPECIES_ODDISH) { Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_ARON) { Moves(MOVE_METAL_CLAW); } } WHEN { - TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_ENCORE); } - TURN { MOVE(player, MOVE_TACKLE); EXPECT_SWITCH(opponent, 1); } + TURN { EXPECT_MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_ENCORE); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_SWITCH(opponent, 1); } } } @@ -930,12 +930,12 @@ AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch out if mon has Truant and oppon PASSES_RANDOMLY(SHOULD_SWITCH_TRUANT_PERCENTAGE, 100, RNG_AI_SWITCH_TRUANT); GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT); - PLAYER(SPECIES_ARON) { Moves(MOVE_TACKLE, MOVE_PROTECT); } + PLAYER(SPECIES_ARON) { Moves(MOVE_SCRATCH, MOVE_PROTECT); } OPPONENT(SPECIES_SLAKING) { Ability(ABILITY_TRUANT); Moves(MOVE_BRICK_BREAK); } - OPPONENT(SPECIES_ARON) { Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_ARON) { Moves(MOVE_SCRATCH); } } WHEN { TURN { EXPECT_MOVE(opponent, MOVE_BRICK_BREAK); MOVE(player, MOVE_PROTECT); } - TURN { EXPECT_SWITCH(opponent, 1); MOVE(player, MOVE_TACKLE); } + TURN { EXPECT_SWITCH(opponent, 1); MOVE(player, MOVE_SCRATCH); } } } @@ -946,7 +946,7 @@ AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch out if mon has Truant and oppon AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT); PLAYER(SPECIES_SWELLOW) { Speed(5); Moves(MOVE_FLY); } OPPONENT(SPECIES_SLAKING) { Speed(4); Ability(ABILITY_TRUANT); Moves(MOVE_ROCK_SLIDE); } - OPPONENT(SPECIES_ARON) { Speed(4); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_ARON) { Speed(4); Moves(MOVE_SCRATCH); } } WHEN { TURN { MOVE(player, MOVE_FLY); EXPECT_MOVE(opponent, MOVE_ROCK_SLIDE); } TURN { SKIP_TURN(player); EXPECT_SWITCH(opponent, 1); } @@ -965,12 +965,12 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if main attac ASSUME(GetMoveEffect(MOVE_CHARM) == EFFECT_ATTACK_DOWN_2); ASSUME(GetMoveEffect(MOVE_EERIE_IMPULSE) == EFFECT_SPECIAL_ATTACK_DOWN_2); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_ARON) { Moves(move, MOVE_TACKLE); } + PLAYER(SPECIES_ARON) { Moves(move, MOVE_SCRATCH); } OPPONENT(aiSpecies) { Moves(aiMove); } OPPONENT(SPECIES_MILOTIC) { Moves(MOVE_SURF); } } WHEN { TURN { MOVE(player, move); EXPECT_MOVE(opponent, aiMove); } - TURN { MOVE(player, MOVE_TACKLE); EXPECT_SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_SWITCH(opponent, 1); } } } @@ -986,13 +986,13 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if main attac ASSUME(GetMoveEffect(MOVE_CHARM) == EFFECT_ATTACK_DOWN_2); ASSUME(GetMoveEffect(MOVE_EERIE_IMPULSE) == EFFECT_SPECIAL_ATTACK_DOWN_2); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_ARON) { Moves(move, move2, MOVE_TACKLE); } + PLAYER(SPECIES_ARON) { Moves(move, move2, MOVE_SCRATCH); } OPPONENT(aiSpecies) { Moves(aiMove); } OPPONENT(SPECIES_MILOTIC) { Moves(MOVE_SURF); } } WHEN { TURN { MOVE(player, move); EXPECT_MOVE(opponent, aiMove); } TURN { MOVE(player, move2); EXPECT_MOVE(opponent, aiMove); } - TURN { MOVE(player, MOVE_TACKLE); EXPECT_SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_SWITCH(opponent, 1); } } } @@ -1005,12 +1005,12 @@ AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch into mon with good type matchup PASSES_RANDOMLY(odds, 100, RNG_AI_SWITCH_SE_DEFENSIVE); GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_MUNNA) { Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_MUNNA) { Moves(MOVE_TACKLE); } + PLAYER(SPECIES_MUNNA) { Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_MUNNA) { Moves(MOVE_SCRATCH); } OPPONENT(species) { Moves(move); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); EXPECT_SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_SWITCH(opponent, 1); } } } @@ -1036,15 +1036,15 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI won't switch out if Yawn'd wi GIVEN { ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | aceFlag | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_SMART_SWITCHING); - PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE, MOVE_YAWN); } - OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_TACKLE); } + PLAYER(SPECIES_SLAKOTH) { Moves(MOVE_SCRATCH, MOVE_YAWN); } + OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_SLAKOTH) { Moves(MOVE_HEADBUTT); } } WHEN { - TURN { MOVE(player, MOVE_YAWN); EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_YAWN); EXPECT_MOVE(opponent, MOVE_SCRATCH); } if (aceFlag) - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_SCRATCH); } else - TURN { MOVE(player, MOVE_TACKLE); EXPECT_SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_SWITCH(opponent, 1); } } } diff --git a/test/battle/exp.c b/test/battle/exp.c index 7e232f5482..12c9c1e9bd 100644 --- a/test/battle/exp.c +++ b/test/battle/exp.c @@ -37,9 +37,9 @@ WILD_BATTLE_TEST("Higher leveled Pokemon give more exp", s32 exp) PLAYER(SPECIES_WOBBUFFET) { Level(20); } OPPONENT(SPECIES_CATERPIE) { Level(level); HP(1); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("The wild Caterpie fainted!"); EXPERIENCE_BAR(player, captureGainedExp: &results[i].exp); } FINALLY { @@ -58,9 +58,9 @@ WILD_BATTLE_TEST("Lucky Egg boosts gained exp points by 50%", s32 exp) PLAYER(SPECIES_WOBBUFFET) { Level(20); Item(item); } OPPONENT(SPECIES_CATERPIE) { Level(10); HP(1); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("The wild Caterpie fainted!"); EXPERIENCE_BAR(player, captureGainedExp: &results[i].exp); } FINALLY { @@ -81,9 +81,9 @@ WILD_BATTLE_TEST("Exp is scaled to player and opponent's levels", s32 exp) PLAYER(SPECIES_WOBBUFFET) { Level(level); } OPPONENT(SPECIES_CATERPIE) { Level(5); HP(1); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("The wild Caterpie fainted!"); EXPERIENCE_BAR(player, captureGainedExp: &results[i].exp); } FINALLY { @@ -105,9 +105,9 @@ WILD_BATTLE_TEST("Large exp gains are supported", s32 exp) // #1455 PLAYER(SPECIES_WOBBUFFET) { Level(1); Item(ITEM_LUCKY_EGG); OTName("Test"); } // OT Name is different so it gets more exp as a traded mon OPPONENT(SPECIES_BLISSEY) { Level(level); HP(1); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("The wild Blissey fainted!"); EXPERIENCE_BAR(player, captureGainedExp: &results[i].exp); } THEN { @@ -133,9 +133,9 @@ WILD_BATTLE_TEST("Exp Share(held) gives Experience to mons which did not partici PLAYER(SPECIES_WYNAUT) { Level(40); Item(item); } OPPONENT(SPECIES_CATERPIE) { Level(10); HP(1); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("The wild Caterpie fainted!"); // This message should appear only for gen6> exp share. NOT MESSAGE("The rest of your team gained EXP. Points thanks to the Exp. Share!"); diff --git a/test/battle/form_change/battle_switch.c b/test/battle/form_change/battle_switch.c index ca7eafd8bf..92e943d033 100644 --- a/test/battle/form_change/battle_switch.c +++ b/test/battle/form_change/battle_switch.c @@ -8,13 +8,13 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon switching out") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN { SWITCH(player, 1); } TURN { SWITCH(player, 0); } } SCENE { ABILITY_POPUP(player, ABILITY_STANCE_CHANGE); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); - MESSAGE("Aegislash used Tackle!"); + MESSAGE("Aegislash used Scratch!"); MESSAGE("The opposing Wobbuffet used Celebrate!"); } THEN { EXPECT_EQ(player->species, SPECIES_AEGISLASH_SHIELD); diff --git a/test/battle/form_change/primal_reversion.c b/test/battle/form_change/primal_reversion.c index d7d956d64b..7ae591f27b 100644 --- a/test/battle/form_change/primal_reversion.c +++ b/test/battle/form_change/primal_reversion.c @@ -120,13 +120,13 @@ DOUBLE_BATTLE_TEST("Primal reversion's order is determined by Speed - player fas SINGLE_BATTLE_TEST("Primal reversion happens after a mon is sent out after a mon is fainted") { GIVEN { - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET) {HP(1); } PLAYER(SPECIES_GROUDON) { Item(ITEM_RED_ORB); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet fainted!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_PRIMAL_REVERSION, player); @@ -156,14 +156,14 @@ SINGLE_BATTLE_TEST("Primal reversion happens after a mon is switched in") SINGLE_BATTLE_TEST("Primal reversion happens after a switch-in caused by Eject Button") { GIVEN { - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); ASSUME(gItemsInfo[ITEM_EJECT_BUTTON].holdEffect == HOLD_EFFECT_EJECT_BUTTON); PLAYER(SPECIES_WOBBUFFET) {Item(ITEM_EJECT_BUTTON); } PLAYER(SPECIES_GROUDON) { Item(ITEM_RED_ORB); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet is switched out with the Eject Button!"); SEND_IN_MESSAGE("Groudon"); @@ -177,13 +177,13 @@ SINGLE_BATTLE_TEST("Primal reversion happens after a switch-in caused by Eject B SINGLE_BATTLE_TEST("Primal reversion happens after a switch-in caused by Red Card") { GIVEN { - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); ASSUME(gItemsInfo[ITEM_RED_CARD].holdEffect == HOLD_EFFECT_RED_CARD); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_GROUDON) { Item(ITEM_RED_ORB); } OPPONENT(SPECIES_WOBBUFFET) {Item(ITEM_RED_CARD); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { MESSAGE("The opposing Wobbuffet held up its Red Card against Wobbuffet!"); MESSAGE("Groudon was dragged out!"); diff --git a/test/battle/gimmick/dynamax.c b/test/battle/gimmick/dynamax.c index abe5ee2814..e8c4c63a10 100644 --- a/test/battle/gimmick/dynamax.c +++ b/test/battle/gimmick/dynamax.c @@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamax increases HP and max HP by 1.5x", u16 hp) PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: dynamax); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: dynamax); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { if (dynamax) { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); @@ -44,7 +44,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamax Level increases HP and max HP multipliers b PLAYER(SPECIES_WOBBUFFET) { DynamaxLevel(level); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: dynamax); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: dynamax); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { if (dynamax) { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); @@ -77,13 +77,13 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamax expires when fainted") PLAYER(SPECIES_WOBBUFFET) { HP(1); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: dynamax); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: dynamax); MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (dynamax) MESSAGE("Wobbuffet used Max Strike!"); else - MESSAGE("Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); if (dynamax) // Expect to have visual reversion when fainting. ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); @@ -100,16 +100,16 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamax expires after three turns", u16 hp) PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: dynamax); } // 1st max move - TURN { MOVE(player, MOVE_TACKLE); } // 2nd max move - TURN { MOVE(player, MOVE_TACKLE); } // 3rd max move + TURN { MOVE(player, MOVE_SCRATCH, gimmick: dynamax); } // 1st max move + TURN { MOVE(player, MOVE_SCRATCH); } // 2nd max move + TURN { MOVE(player, MOVE_SCRATCH); } // 3rd max move } SCENE { int j; for (j = 0; j < DYNAMAX_TURNS_COUNT; ++j) { if (dynamax) MESSAGE("Wobbuffet used Max Strike!"); else - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("The opposing Wobbuffet used Celebrate!"); } if (dynamax) // Expect to have visual reversion at the end. @@ -143,12 +143,12 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamax expires after three turns and correctly con OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE, gimmick: dynamax); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SCRATCH, WITH_RNG(RNG_DAMAGE_MODIFIER, 24)); } TURN { } } SCENE { if (dynamax) ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); if (dynamax) HP_BAR(player, captureHP: &capturedHP); else @@ -171,7 +171,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon cannot be flinched") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_FAKE_OUT); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(opponent, MOVE_FAKE_OUT); MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("The opposing Wobbuffet used Fake Out!"); NONE_OF { MESSAGE("Wobbuffet flinched and couldn't move!"); } @@ -186,7 +186,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon cannot be hit by weight-based mov PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_HEAVY_SLAM); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_HEAVY_SLAM); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("The opposing Wobbuffet used Heavy Slam!"); @@ -202,7 +202,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon cannot be hit by OHKO moves") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_MACHAMP) { Ability(ABILITY_NO_GUARD); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_FISSURE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_FISSURE); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("The opposing Machamp used Fissure!"); @@ -217,11 +217,11 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon are affected by Grudge") PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_GRUDGE); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(opponent, MOVE_GRUDGE); MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("The opposing Wobbuffet used Grudge!"); MESSAGE("Wobbuffet used Max Strike!"); - MESSAGE("Wobbuffet's Tackle lost all its PP due to the grudge!"); + MESSAGE("Wobbuffet's Scratch lost all its PP due to the grudge!"); MESSAGE("The opposing Wobbuffet fainted!"); } } @@ -235,8 +235,8 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon are not affected by phazing moves PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } - TURN { MOVE(opponent, MOVE_WHIRLWIND); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(opponent, MOVE_WHIRLWIND); MOVE(player, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("The opposing Wobbuffet used Dragon Tail!"); @@ -256,7 +256,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon are not affected by phazing moves PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); SEND_OUT(player, 1); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("The opposing Wobbuffet used Dragon Tail!"); @@ -274,10 +274,10 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon can be switched out by Eject Butt PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet is switched out with the Eject Button!"); } THEN { @@ -291,7 +291,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon cannot have their ability swapped PLAYER(SPECIES_MILTANK) { Ability(ABILITY_SCRAPPY); } OPPONENT(SPECIES_RUNERIGUS) { Ability(ABILITY_WANDERING_SPIRIT); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SKILL_SWAP); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SKILL_SWAP); } } SCENE { MESSAGE("Miltank used Max Strike!"); MESSAGE("The opposing Runerigus used Skill Swap!"); @@ -307,7 +307,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon can have their ability changed or PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SHADOW_TAG); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SIMPLE_BEAM); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SIMPLE_BEAM); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("The opposing Wobbuffet used Simple Beam!"); @@ -324,7 +324,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon's Max Moves cannot be disabled") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_DISABLE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_DISABLE); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("The opposing Wobbuffet used Disable!"); @@ -339,16 +339,16 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon can have base moves disabled on t 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, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_DISABLE); MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } TURN {} TURN {} - TURN { MOVE(player, MOVE_TACKLE, allowed: FALSE); MOVE(player, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_SCRATCH, allowed: FALSE); MOVE(player, MOVE_CELEBRATE); } } SCENE { MESSAGE("The opposing Wobbuffet used Celebrate!"); - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("The opposing Wobbuffet used Disable!"); - MESSAGE("Wobbuffet's Tackle was disabled!"); + MESSAGE("Wobbuffet's Scratch was disabled!"); MESSAGE("Wobbuffet used Max Strike!"); } } @@ -359,7 +359,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon are immune to Torment") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_TORMENT); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_TORMENT); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("The opposing Wobbuffet used Torment!"); @@ -374,7 +374,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon are not immune to Knock Off") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_POTION); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_KNOCK_OFF); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_KNOCK_OFF); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("The opposing Wobbuffet used Knock Off!"); @@ -391,12 +391,12 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon lose their substitutes") OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_CELEBRATE); } - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet used Substitute!"); MESSAGE("Wobbuffet put in a substitute!"); MESSAGE("Wobbuffet used Max Strike!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); HP_BAR(player); } } @@ -409,10 +409,10 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon that changes forms does not gain OPPONENT(SPECIES_CATERPIE) { HP(1); Speed(1000); } OPPONENT(SPECIES_WOBBUFFET) { Speed(10); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); SEND_OUT(opponent, 1); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); SEND_OUT(opponent, 1); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureHP: &capturedHP); ANIMATION(ANIM_TYPE_MOVE, MOVE_MAX_STRIKE, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); @@ -432,7 +432,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon that changes forms does not gain PLAYER(species) { Ability(ABILITY_POWER_CONSTRUCT); HP(hp); MaxHP(maxHP); DynamaxLevel(0); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_MAX_STRIKE, player); @@ -452,9 +452,9 @@ SINGLE_BATTLE_TEST("Dynamax: Max Moves deal 1/4 damage through protect", s16 dam OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (protected) - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_PROTECT); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_PROTECT); } else - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { @@ -468,7 +468,7 @@ SINGLE_BATTLE_TEST("Dynamax: Max Moves don't bypass Max Guard") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_PROTECT, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_PROTECT, gimmick: GIMMICK_DYNAMAX); } } SCENE { NONE_OF { HP_BAR(opponent); } } @@ -484,13 +484,13 @@ DOUBLE_BATTLE_TEST("Dynamax: Feint bypasses Max Guard but doesn't break it") } WHEN { TURN { MOVE(playerLeft, MOVE_PROTECT, gimmick: GIMMICK_DYNAMAX); MOVE(opponentLeft, MOVE_FEINT, target: playerLeft); - MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); } } SCENE { MESSAGE("Wobbuffet used Max Guard!"); MESSAGE("The opposing Wobbuffet used Feint!"); HP_BAR(playerLeft); - MESSAGE("The opposing Wynaut used Tackle!"); + MESSAGE("The opposing Wynaut used Scratch!"); NONE_OF { HP_BAR(playerLeft); } } } @@ -503,7 +503,7 @@ DOUBLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon are immune to Instruct") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX, target: opponentLeft); + TURN { MOVE(playerLeft, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX, target: opponentLeft); MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); } } SCENE { @@ -523,7 +523,7 @@ SINGLE_BATTLE_TEST("Dynamax: Pokemon with Gigantamax forms change upon Dynamaxin PLAYER(SPECIES_VENUSAUR) { GigantamaxFactor(gigantamaxFactor); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } THEN { EXPECT_EQ(player->species, species); } @@ -536,7 +536,7 @@ SINGLE_BATTLE_TEST("Dynamax: Pokemon with Gigantamax forms revert upon switching PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } TURN { SWITCH(player, 1); } TURN { SWITCH(player, 0); } } THEN { @@ -554,7 +554,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon are not affected by Choice items" PLAYER(SPECIES_WOBBUFFET) { Item(item); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } TURN { MOVE(player, MOVE_ARM_THRUST); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); @@ -572,8 +572,8 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon cannot use Max Guard while holdin PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ASSAULT_VEST); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } - TURN { MOVE(player, MOVE_PROTECT, allowed: FALSE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_PROTECT, allowed: FALSE); MOVE(player, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Wobbuffet used Max Strike!"); @@ -596,7 +596,7 @@ SINGLE_BATTLE_TEST("Dynamax: Endeavor uses a Pokemon's non-Dynamax HP", s16 dama PLAYER(SPECIES_WOBBUFFET) { Speed(50); } OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_ENDEAVOR); MOVE(player, MOVE_TACKLE, gimmick: dynamax); } + TURN { MOVE(opponent, MOVE_ENDEAVOR); MOVE(player, MOVE_SCRATCH, gimmick: dynamax); } } SCENE { MESSAGE("The opposing Wobbuffet used Endeavor!"); HP_BAR(player, captureDamage: &results[i].damage); @@ -615,7 +615,7 @@ SINGLE_BATTLE_TEST("Dynamax: Super Fang uses a Pokemon's non-Dynamax HP", s16 da PLAYER(SPECIES_WOBBUFFET) { Speed(50); } OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_SUPER_FANG); MOVE(player, MOVE_TACKLE, gimmick: dynamax); } + TURN { MOVE(opponent, MOVE_SUPER_FANG); MOVE(player, MOVE_SCRATCH, gimmick: dynamax); } } SCENE { MESSAGE("The opposing Wobbuffet used Super Fang!"); HP_BAR(player, captureDamage: &results[i].damage); @@ -634,7 +634,7 @@ SINGLE_BATTLE_TEST("Dynamax: Pain Split uses a Pokemon's non-Dynamax HP", s16 da PLAYER(SPECIES_WOBBUFFET) { Speed(50); } OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_PAIN_SPLIT); MOVE(player, MOVE_TACKLE, gimmick: dynamax); } + TURN { MOVE(opponent, MOVE_PAIN_SPLIT); MOVE(player, MOVE_SCRATCH, gimmick: dynamax); } } SCENE { MESSAGE("The opposing Wobbuffet used Pain Split!"); HP_BAR(player, captureDamage: &results[i].damage); @@ -654,7 +654,7 @@ SINGLE_BATTLE_TEST("Dynamax: Sitrus Berries heal based on a Pokemon's non-Dynama PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SITRUS_BERRY); } } WHEN { - TURN { MOVE(opponent, MOVE_FLING); MOVE(player, MOVE_TACKLE, gimmick: dynamax); } + TURN { MOVE(opponent, MOVE_FLING); MOVE(player, MOVE_SCRATCH, gimmick: dynamax); } } SCENE { MESSAGE("Wobbuffet restored its health using its Sitrus Berry!"); HP_BAR(player, captureDamage: &results[i].damage); @@ -673,7 +673,7 @@ SINGLE_BATTLE_TEST("Dynamax: Heal Pulse heals based on a Pokemon's non-Dynamax H 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, gimmick: dynamax); } + TURN { MOVE(opponent, MOVE_HEAL_PULSE); MOVE(player, MOVE_SCRATCH, gimmick: dynamax); } } SCENE { MESSAGE("The opposing Wobbuffet used Heal Pulse!"); HP_BAR(player, captureDamage: &results[i].damage); @@ -686,16 +686,16 @@ SINGLE_BATTLE_TEST("Dynamax: Heal Pulse heals based on a Pokemon's non-Dynamax H SINGLE_BATTLE_TEST("Dynamax: Max Strike lowers single opponent's speed") { GIVEN { - // Fails?: ASSUME(GetMaxMove(B_POSITION_PLAYER_LEFT, MOVE_TACKLE) == MOVE_MAX_STRIKE); + // Fails?: ASSUME(GetMaxMove(B_POSITION_PLAYER_LEFT, MOVE_SCRATCH) == MOVE_MAX_STRIKE); ASSUME(MoveHasAdditionalEffect(MOVE_MAX_STRIKE, MOVE_EFFECT_LOWER_SPEED_SIDE)); OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } PLAYER(SPECIES_WOBBUFFET) { Speed(80); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SCRATCH); } } SCENE { // turn 1 - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); MESSAGE("Wobbuffet used Max Strike!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("The opposing Wobbuffet's Speed fell!"); @@ -703,7 +703,7 @@ SINGLE_BATTLE_TEST("Dynamax: Max Strike lowers single opponent's speed") MESSAGE("Wobbuffet used Max Strike!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("The opposing Wobbuffet's Speed fell!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } @@ -717,16 +717,16 @@ DOUBLE_BATTLE_TEST("Dynamax: Max Strike lowers both opponents' speed") OPPONENT(SPECIES_WOBBUFFET) {Speed(100); } OPPONENT(SPECIES_WOBBUFFET) { Speed(99); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); \ - 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); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); \ + MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); \ + MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); \ + MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); \ + MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); } } SCENE { // turn 1 - MESSAGE("The opposing Wobbuffet used Tackle!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); MESSAGE("Wobbuffet used Max Strike!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); MESSAGE("The opposing Wobbuffet's Speed fell!"); @@ -738,8 +738,8 @@ DOUBLE_BATTLE_TEST("Dynamax: Max Strike lowers both opponents' speed") MESSAGE("The opposing Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); MESSAGE("The opposing Wobbuffet's Speed fell!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); } } @@ -750,16 +750,16 @@ DOUBLE_BATTLE_TEST("Dynamax: Max Knuckle raises both allies' attack") GIVEN { ASSUME(MoveHasAdditionalEffect(MOVE_MAX_KNUCKLE, MOVE_EFFECT_RAISE_TEAM_ATTACK)); ASSUME(GetMoveCategory(MOVE_CLOSE_COMBAT) == DAMAGE_CATEGORY_PHYSICAL); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); \ - MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } + MOVE(playerRight, MOVE_SCRATCH, target: opponentRight); } TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft); \ - MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } + MOVE(playerRight, MOVE_SCRATCH, target: opponentRight); } } SCENE { // turn 1 MESSAGE("Wobbuffet used Max Knuckle!"); @@ -768,7 +768,7 @@ DOUBLE_BATTLE_TEST("Dynamax: Max Knuckle raises both allies' attack") MESSAGE("Wobbuffet's Attack rose!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); MESSAGE("Wynaut's Attack rose!"); - MESSAGE("Wynaut used Tackle!"); + MESSAGE("Wynaut used Scratch!"); HP_BAR(opponentRight, captureDamage: &damage[1]); MESSAGE("The opposing Wobbuffet used Celebrate!"); MESSAGE("The opposing Wynaut used Celebrate!"); @@ -779,7 +779,7 @@ DOUBLE_BATTLE_TEST("Dynamax: Max Knuckle raises both allies' attack") MESSAGE("Wobbuffet's Attack rose!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); MESSAGE("Wynaut's Attack rose!"); - MESSAGE("Wynaut used Tackle!"); + MESSAGE("Wynaut used Scratch!"); HP_BAR(opponentRight, captureDamage: &damage[3]); } THEN { EXPECT_GT(damage[2], damage[0]); @@ -1136,7 +1136,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Gold Rush confuses both opponents and generat OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Meowth used G-Max Gold Rush!"); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentLeft); @@ -1175,7 +1175,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Cuddle infatuates both opponents, if possible OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Eevee used G-Max Cuddle!"); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, opponentLeft); @@ -1319,7 +1319,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Replenish recycles allies' berries 50\% of th MOVE(playerRight, MOVE_STUFF_CHEEKS); \ MOVE(opponentLeft, MOVE_STUFF_CHEEKS); \ MOVE(opponentRight, MOVE_STUFF_CHEEKS); } - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { // turn 1 MESSAGE("Using Apicot Berry, the Sp. Def of Snorlax rose!"); @@ -1446,7 +1446,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Chi Strike boosts allies' crit chance by 1 st 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); } + TURN { MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); } } SCENE { // turn 1 - 3 for (j = 0; j < 3; ++j) { @@ -1457,7 +1457,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Chi Strike boosts allies' crit chance by 1 st MESSAGE("Machop is getting pumped!"); } // turn 4 - MESSAGE("Machop used Tackle!"); // Machop is at +5 crit stages + MESSAGE("Machop used Scratch!"); // Machop is at +5 crit stages MESSAGE("A critical hit!"); } } @@ -1539,7 +1539,7 @@ SINGLE_BATTLE_TEST("Dynamax: Max Moves don't execute effects on fainted battlers PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { HP(1); }; } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); MESSAGE("Wobbuffet used Max Strike!"); @@ -1570,7 +1570,7 @@ SINGLE_BATTLE_TEST("Dynamax: Max Attacks prints a message when hitting into Max PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_GROWL, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_GROWL, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Wobbuffet used Max Guard!"); MESSAGE("The opposing Wobbuffet used Max Strike!"); @@ -1621,11 +1621,11 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamax is reverted before switch out") PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } TURN { SWITCH(player, 0); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); } } @@ -1636,7 +1636,7 @@ SINGLE_BATTLE_TEST("Dynamax: Destiny Bond fails if a dynamaxed battler is presen PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_DESTINY_BOND); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(opponent, MOVE_DESTINY_BOND); MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("The move was blocked by the power of Dynamax!"); } diff --git a/test/battle/gimmick/terastal.c b/test/battle/gimmick/terastal.c index 7ea75c3e4a..a021fbf343 100644 --- a/test/battle/gimmick/terastal.c +++ b/test/battle/gimmick/terastal.c @@ -346,7 +346,7 @@ SINGLE_BATTLE_TEST("(TERA) Conversion2 fails if used by a Terastallized Pokemon" PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_PSYCHIC); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_CONVERSION_2, gimmick: GIMMICK_TERA); } } SCENE { MESSAGE("Wobbuffet used Conversion 2!"); @@ -362,13 +362,13 @@ SINGLE_BATTLE_TEST("(TERA) Reflect Type copies a Terastallized Pokemon's Tera Ty } WHEN { TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } TURN { MOVE(opponent, MOVE_REFLECT_TYPE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { // turn 2 MESSAGE("The opposing Wobbuffet used Reflect Type!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT_TYPE, opponent); // turn 3 - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("It doesn't affect the opposing Wobbuffet…"); NOT { HP_BAR(opponent); } } @@ -455,19 +455,19 @@ SINGLE_BATTLE_TEST("(TERA) Transform does not copy the target's Tera Type, and i { KNOWN_FAILING; // Transform seems to be bugged in tests. GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE, MOVE_TACKLE, MOVE_EARTHQUAKE); TeraType(TYPE_GHOST); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE, MOVE_SCRATCH, MOVE_EARTHQUAKE); TeraType(TYPE_GHOST); } OPPONENT(SPECIES_DITTO) { TeraType(TYPE_FLYING); } } WHEN { TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_TRANSFORM); } TURN { MOVE(player, MOVE_EARTHQUAKE); } - // TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE, target: player, gimmick: GIMMICK_TERA); } + // TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SCRATCH, target: player, gimmick: GIMMICK_TERA); } } SCENE { // turn 2 MESSAGE("Wobbuffet used Earthquake!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, player); HP_BAR(opponent); // turn 3 - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("It doesn't affect Ditto…"); NOT { HP_BAR(opponent); } } @@ -501,13 +501,13 @@ SINGLE_BATTLE_TEST("(TERA) Reflect Type copies a Stellar-type Pokemon's base typ } WHEN { TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } TURN { MOVE(opponent, MOVE_REFLECT_TYPE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { // turn 2 MESSAGE("The opposing Wobbuffet used Reflect Type!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT_TYPE, opponent); // turn 3 - MESSAGE("Banette used Tackle!"); + MESSAGE("Banette used Scratch!"); MESSAGE("It doesn't affect the opposing Wobbuffet…"); NOT { HP_BAR(opponent); } } @@ -747,10 +747,10 @@ SINGLE_BATTLE_TEST("(TERA) Terapagos retains the Stellar type boost at all times { s16 damage[2]; u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_MACH_PUNCH; } GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); ASSUME(GetMoveType(MOVE_MACH_PUNCH) != TYPE_NORMAL); PLAYER(SPECIES_TERAPAGOS); OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/gimmick/zmove.c b/test/battle/gimmick/zmove.c index 4ab84eb389..fd5635d3fc 100644 --- a/test/battle/gimmick/zmove.c +++ b/test/battle/gimmick/zmove.c @@ -10,10 +10,10 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves do not retain priority") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_QUICK_ATTACK, gimmick: GIMMICK_Z_MOVE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); } @@ -22,12 +22,12 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves do not retain priority") SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves are not affected by -ate abilities") { GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); ASSUME(gSpeciesInfo[SPECIES_SWELLOW].types[1] == TYPE_FLYING); PLAYER(SPECIES_AURORUS) { Ability(ABILITY_REFRIGERATE); Item(ITEM_NORMALIUM_Z); } OPPONENT(SPECIES_SWELLOW); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_Z_MOVE); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); @@ -38,12 +38,12 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves are not affected by -ate abilities") SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves are affected by Ion Deluge") { GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); ASSUME(GetMoveEffect(MOVE_ION_DELUGE) == EFFECT_ION_DELUGE); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } OPPONENT(SPECIES_SWELLOW); } WHEN { - TURN { MOVE(opponent, MOVE_ION_DELUGE); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(opponent, MOVE_ION_DELUGE); MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_Z_MOVE); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); @@ -57,15 +57,15 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves deal 1/4 damage through protect", s16 damag PARAMETRIZE { protected = TRUE; } PARAMETRIZE { protected = FALSE; } GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); ASSUME(GetMoveEffect(MOVE_PROTECT) == EFFECT_PROTECT); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (protected) - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); MOVE(opponent, MOVE_PROTECT); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_Z_MOVE); MOVE(opponent, MOVE_PROTECT); } else - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_Z_MOVE); } } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { @@ -124,11 +124,11 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Z_EFFECT_BOOST_CRITS raises a battler's critical hi OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_FORESIGHT, gimmick: GIMMICK_Z_MOVE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_FORESIGHT, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); MESSAGE("A critical hit!"); } } @@ -144,11 +144,11 @@ DOUBLE_BATTLE_TEST("(Z-MOVE) Z_EFFECT_FOLLOW_ME redirects attacks to the user") OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { MOVE(playerLeft, MOVE_DESTINY_BOND, gimmick: GIMMICK_Z_MOVE); - MOVE(opponentLeft, MOVE_TACKLE, target: playerRight); } + MOVE(opponentLeft, MOVE_SCRATCH, target: playerRight); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, playerLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_DESTINY_BOND, playerLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); NOT { HP_BAR(playerRight); } HP_BAR(playerLeft); } @@ -223,15 +223,15 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Z-Mirror Move raises the user's attack by two stage PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_FLYINIUM_Z); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_MIRROR_MOVE, gimmick: GIMMICK_Z_MOVE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_MIRROR_MOVE, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); // extra turn to make sure that everything resets properly - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); } THEN { EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); } @@ -264,9 +264,9 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Z-Copycat raises the user's accuracy by one stage a PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_COPYCAT, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_COPYCAT, gimmick: GIMMICK_Z_MOVE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); @@ -287,9 +287,9 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Z-Me First raises the user's speed by two stages an OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (meFirst) - TURN { MOVE(player, MOVE_ME_FIRST, gimmick: GIMMICK_Z_MOVE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_ME_FIRST, gimmick: GIMMICK_Z_MOVE); MOVE(opponent, MOVE_SCRATCH); } else - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_Z_MOVE); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); if (meFirst) @@ -455,13 +455,13 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Powder blocks Fire type Z-Moves but not boosts gran DOUBLE_BATTLE_TEST("(Z-MOVE) Instruct fails if the target last used a Z-Move") { GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_Z_MOVE); + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft, gimmick: GIMMICK_Z_MOVE); MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, playerLeft); @@ -474,13 +474,13 @@ DOUBLE_BATTLE_TEST("(Z-MOVE) Instruct fails if the target last used a Z-Move") DOUBLE_BATTLE_TEST("(Z-MOVE) Dancer does not use a Z-Move if the battler has used a Z-Move the same turn") { GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_DANCER); Item(ITEM_NORMALIUM_Z); } PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_Z_MOVE); + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft, gimmick: GIMMICK_Z_MOVE); MOVE(playerRight, MOVE_FIERY_DANCE, target: opponentRight); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, playerLeft); @@ -502,7 +502,7 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Light That Burns the Sky uses the battler's highest PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); } OPPONENT(SPECIES_WOBBUFFET) { HP(1000); MaxHP(1000); }; // hits hard lol } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_ULTRA_BURST); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_ULTRA_BURST); } if (useSwordsDance) TURN { MOVE(player, MOVE_SWORDS_DANCE); } TURN { MOVE(player, MOVE_PHOTON_GEYSER, gimmick: GIMMICK_Z_MOVE); } diff --git a/test/battle/hold_effect/air_balloon.c b/test/battle/hold_effect/air_balloon.c index cb06743e4c..17872d89b8 100644 --- a/test/battle/hold_effect/air_balloon.c +++ b/test/battle/hold_effect/air_balloon.c @@ -5,7 +5,7 @@ ASSUMPTIONS { ASSUME(gItemsInfo[ITEM_AIR_BALLOON].holdEffect == HOLD_EFFECT_AIR_BALLOON); ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); - ASSUME(GetMoveType(MOVE_TACKLE) != TYPE_GROUND); + ASSUME(GetMoveType(MOVE_SCRATCH) != TYPE_GROUND); ASSUME(GetMoveEffect(MOVE_RECYCLE) == EFFECT_RECYCLE); } @@ -30,10 +30,10 @@ SINGLE_BATTLE_TEST("Air Balloon pops when the holder is hit by a move that is no PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); MESSAGE("Wobbuffet's Air Balloon popped!"); } } @@ -44,11 +44,11 @@ SINGLE_BATTLE_TEST("Air Balloon no longer prevents the holder from taking damage PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(opponent, MOVE_EARTHQUAKE); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); MESSAGE("Wobbuffet's Air Balloon popped!"); MESSAGE("The opposing Wobbuffet used Earthquake!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); @@ -63,12 +63,12 @@ SINGLE_BATTLE_TEST("Air Balloon can not be restored with Recycle after it has be OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { - MOVE(opponent, MOVE_TACKLE); + MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_RECYCLE); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); MESSAGE("Wobbuffet's Air Balloon popped!"); MESSAGE("Wobbuffet used Recycle!"); MESSAGE("But it failed!"); @@ -94,7 +94,7 @@ SINGLE_BATTLE_TEST("Air Balloon pops before it can be stolen with Magician") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_DELPHOX) { Ability(ABILITY_MAGICIAN); }; } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); MESSAGE("Wobbuffet's Air Balloon popped!"); diff --git a/test/battle/hold_effect/attack_up.c b/test/battle/hold_effect/attack_up.c index 63203e588a..2030faf782 100644 --- a/test/battle/hold_effect/attack_up.c +++ b/test/battle/hold_effect/attack_up.c @@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Liechi Berry raises the holder's Attack by one stage when HP { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_DRAGON_RAGE; } GIVEN { @@ -22,7 +22,7 @@ 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) { + if (move == MOVE_SCRATCH) { NONE_OF { 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/berserk_gene.c b/test/battle/hold_effect/berserk_gene.c index 1ff601fc83..164830ad52 100644 --- a/test/battle/hold_effect/berserk_gene.c +++ b/test/battle/hold_effect/berserk_gene.c @@ -12,11 +12,11 @@ SINGLE_BATTLE_TEST("Berserk Gene sharply raises attack at the start of a single PARAMETRIZE { item = ITEM_NONE; } PARAMETRIZE { item = ITEM_BERSERK_GENE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, WITH_RNG(RNG_CONFUSION, FALSE)); } + TURN { MOVE(player, MOVE_SCRATCH, WITH_RNG(RNG_CONFUSION, FALSE)); } } SCENE { if (item == ITEM_BERSERK_GENE) { @@ -37,13 +37,13 @@ DOUBLE_BATTLE_TEST("Berserk Gene sharply raises attack at the start of a double PARAMETRIZE { item = ITEM_NONE; } PARAMETRIZE { item = ITEM_BERSERK_GENE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WYNAUT); PLAYER(SPECIES_WOBBUFFET) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerRight, MOVE_TACKLE, target:opponentLeft, WITH_RNG(RNG_CONFUSION, FALSE)); } + TURN { MOVE(playerRight, MOVE_SCRATCH, target:opponentLeft, WITH_RNG(RNG_CONFUSION, FALSE)); } } SCENE { if (item == ITEM_BERSERK_GENE) { @@ -64,13 +64,13 @@ SINGLE_BATTLE_TEST("Berserk Gene activates on switch in", s16 damage) PARAMETRIZE { item = ITEM_NONE; } PARAMETRIZE { item = ITEM_BERSERK_GENE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WYNAUT); PLAYER(SPECIES_WOBBUFFET) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { SWITCH(player, 1); } - TURN { MOVE(player, MOVE_TACKLE, WITH_RNG(RNG_CONFUSION, FALSE)); } + TURN { MOVE(player, MOVE_SCRATCH, WITH_RNG(RNG_CONFUSION, FALSE)); } } SCENE { if (item == ITEM_BERSERK_GENE) { @@ -91,12 +91,12 @@ SINGLE_BATTLE_TEST("Berserk Gene does not confuse a Pokemon with Own Tempo but s PARAMETRIZE { item = ITEM_NONE; } PARAMETRIZE { item = ITEM_BERSERK_GENE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_SLOWBRO) { Ability(ABILITY_OWN_TEMPO); Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { - MOVE(player, MOVE_TACKLE); + MOVE(player, MOVE_SCRATCH); } } SCENE { if (item == ITEM_BERSERK_GENE) @@ -122,7 +122,7 @@ DOUBLE_BATTLE_TEST("Berserk Gene does not confuse a Pokemon with Own Tempo but s PARAMETRIZE { item = ITEM_BERSERK_GENE; positionLeft = TRUE; } PARAMETRIZE { item = ITEM_BERSERK_GENE; positionLeft = FALSE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); if (positionLeft) { PLAYER(SPECIES_SLOWBRO) { Ability(ABILITY_OWN_TEMPO); Item(item); } PLAYER(SPECIES_WOBBUFFET); @@ -134,7 +134,7 @@ DOUBLE_BATTLE_TEST("Berserk Gene does not confuse a Pokemon with Own Tempo but s OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { - MOVE((positionLeft != 0) ? playerLeft : playerRight, MOVE_TACKLE, target: opponentLeft); + MOVE((positionLeft != 0) ? playerLeft : playerRight, MOVE_SCRATCH, target: opponentLeft); } } SCENE { if (item == ITEM_BERSERK_GENE) @@ -156,12 +156,12 @@ DOUBLE_BATTLE_TEST("Berserk Gene does not confuse a Pokemon with Own Tempo but s SINGLE_BATTLE_TEST("Berserk Gene does not confuse on Misty Terrain but still raises attack sharply") { GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_TAPU_FINI) { Ability(ABILITY_MISTY_SURGE); Item(ITEM_BERSERK_GENE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { - MOVE(player, MOVE_TACKLE); + MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); diff --git a/test/battle/hold_effect/clear_amulet.c b/test/battle/hold_effect/clear_amulet.c index bbe58f164b..5c69655dc1 100644 --- a/test/battle/hold_effect/clear_amulet.c +++ b/test/battle/hold_effect/clear_amulet.c @@ -16,8 +16,8 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents Intimidate") PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }; OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); }; } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); } } SCENE { HP_BAR(player, captureDamage: &turnOneHit); ABILITY_POPUP(player, ABILITY_INTIMIDATE); @@ -104,11 +104,11 @@ SINGLE_BATTLE_TEST("Clear Amulet protects from Protect's secondary effects") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, move); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, move); MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); NONE_OF { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); if (move == MOVE_KINGS_SHIELD) { MESSAGE("Wobbuffet's Attack fell!"); } else if (move == MOVE_SILK_TRAP) { diff --git a/test/battle/hold_effect/covert_cloak.c b/test/battle/hold_effect/covert_cloak.c index 583a250bcd..47c5f3f358 100644 --- a/test/battle/hold_effect/covert_cloak.c +++ b/test/battle/hold_effect/covert_cloak.c @@ -128,7 +128,7 @@ DOUBLE_BATTLE_TEST("Covert Cloak does or does not block Sparkling Aria depending { u32 moveToUse; PARAMETRIZE { moveToUse = MOVE_FINAL_GAMBIT; } - PARAMETRIZE { moveToUse = MOVE_TACKLE; } + PARAMETRIZE { moveToUse = MOVE_SCRATCH; } GIVEN { PLAYER(SPECIES_WYNAUT); PLAYER(SPECIES_WOBBUFFET); @@ -138,7 +138,7 @@ DOUBLE_BATTLE_TEST("Covert Cloak does or does not block Sparkling Aria depending TURN { MOVE(playerRight, moveToUse, target: opponentRight); MOVE(playerLeft, MOVE_SPARKLING_ARIA); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SPARKLING_ARIA, playerLeft); - if (moveToUse == MOVE_TACKLE) { + if (moveToUse == MOVE_SCRATCH) { MESSAGE("The opposing Wobbuffet's burn was cured!"); STATUS_ICON(opponentLeft, none: TRUE); } else { @@ -197,7 +197,7 @@ SINGLE_BATTLE_TEST("Covert Cloak does not prevent ability stat changes") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_COVERT_CLOAK); } OPPONENT(SPECIES_ELDEGOSS) { Ability(ABILITY_COTTON_DOWN); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet's Speed fell!"); } diff --git a/test/battle/hold_effect/critical_hit_up.c b/test/battle/hold_effect/critical_hit_up.c index 3ea7ef52e7..e571d39247 100644 --- a/test/battle/hold_effect/critical_hit_up.c +++ b/test/battle/hold_effect/critical_hit_up.c @@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by two s { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_DRAGON_RAGE; } GIVEN { @@ -22,7 +22,7 @@ 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) { + if (move == MOVE_SCRATCH) { NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet used the Lansat Berry to get pumped!"); @@ -58,16 +58,16 @@ SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by 2 sta PASSES_RANDOMLY(1, chance, RNG_CRITICAL_HIT); GIVEN { WITH_CONFIG(GEN_CONFIG_CRIT_CHANCE, genConfig); - ASSUME(GetMoveCriticalHitStage(MOVE_TACKLE) == 0); + ASSUME(GetMoveCriticalHitStage(MOVE_SCRATCH) == 0); PLAYER(SPECIES_WOBBUFFET) { MaxHP(160); HP(80); Item(ITEM_LANSAT_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_DRAGON_RAGE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_DRAGON_RAGE); MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_RAGE, opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet used the Lansat Berry to get pumped!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); MESSAGE("A critical hit!"); } } diff --git a/test/battle/hold_effect/custap_berry.c b/test/battle/hold_effect/custap_berry.c index 6e7b210e8d..4774b92439 100644 --- a/test/battle/hold_effect/custap_berry.c +++ b/test/battle/hold_effect/custap_berry.c @@ -12,11 +12,11 @@ SINGLE_BATTLE_TEST("Custap Berry allows the holder to move first in its priority PLAYER(SPECIES_WOBBUFFET) { Speed(1); MaxHP(160); HP(40); Item(ITEM_CUSTAP_BERRY); } OPPONENT(SPECIES_WOBBUFFET) { Speed(2); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet can act faster than normal, thanks to its Custap Berry!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); } } @@ -27,11 +27,11 @@ SINGLE_BATTLE_TEST("Custap Berry allows the holder to move first in its priority PLAYER(SPECIES_BELLSPROUT) { Speed(1); MaxHP(160); HP(80); Ability(ABILITY_GLUTTONY); Item(ITEM_CUSTAP_BERRY); } OPPONENT(SPECIES_WOBBUFFET) { Speed(2); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Bellsprout can act faster than normal, thanks to its Custap Berry!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); } } diff --git a/test/battle/hold_effect/defense_up.c b/test/battle/hold_effect/defense_up.c index 1812b96d33..cf1ea04b40 100644 --- a/test/battle/hold_effect/defense_up.c +++ b/test/battle/hold_effect/defense_up.c @@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Ganlon Berry raises the holder's Defense by one stage when H { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_DRAGON_RAGE; } GIVEN { @@ -22,7 +22,7 @@ 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) { + if (move == MOVE_SCRATCH) { NONE_OF { 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/eject_button.c b/test/battle/hold_effect/eject_button.c index cd003c45c0..9dd73833a5 100644 --- a/test/battle/hold_effect/eject_button.c +++ b/test/battle/hold_effect/eject_button.c @@ -15,7 +15,7 @@ SINGLE_BATTLE_TEST("Eject Button is not triggered when there is nothing to switc } WHEN { TURN { MOVE(player, MOVE_QUICK_ATTACK); - MOVE(opponent, MOVE_TACKLE); + MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); @@ -23,7 +23,7 @@ SINGLE_BATTLE_TEST("Eject Button is not triggered when there is nothing to switc ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); MESSAGE("The opposing Wobbuffet is switched out with the Eject Button!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } @@ -36,7 +36,7 @@ SINGLE_BATTLE_TEST("Eject Button is not activated by a Sheer Force boosted move" } WHEN { TURN { MOVE(player, MOVE_FLAMETHROWER); - MOVE(opponent, MOVE_TACKLE); + MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_FLAMETHROWER, player); @@ -44,7 +44,7 @@ SINGLE_BATTLE_TEST("Eject Button is not activated by a Sheer Force boosted move" ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); MESSAGE("The opposing Wobbuffet is switched out with the Eject Button!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } @@ -57,12 +57,12 @@ SINGLE_BATTLE_TEST("Eject Button will not activate under Substitute") } WHEN { TURN { MOVE(opponent, MOVE_SUBSTITUTE); - MOVE(player, MOVE_TACKLE); + MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, opponent); MESSAGE("The opposing Raichu put in a substitute!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); MESSAGE("The substitute took damage for the opposing Raichu!"); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); @@ -79,11 +79,11 @@ SINGLE_BATTLE_TEST("Eject Button is not blocked by trapping abilities or moves") OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { - MOVE(player, MOVE_TACKLE); + MOVE(player, MOVE_SCRATCH); SEND_OUT(opponent, 1); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); MESSAGE("The opposing Wobbuffet is switched out with the Eject Button!"); MESSAGE("2 sent out Wobbuffet!"); @@ -99,7 +99,7 @@ SINGLE_BATTLE_TEST("Eject Button is not triggered after the mon loses Eject Butt } WHEN { TURN { MOVE(player, MOVE_KNOCK_OFF); - MOVE(opponent, MOVE_TACKLE); + MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); @@ -107,7 +107,7 @@ SINGLE_BATTLE_TEST("Eject Button is not triggered after the mon loses Eject Butt ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); MESSAGE("The opposing Wobbuffet is switched out with the Eject Button!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } @@ -120,14 +120,14 @@ SINGLE_BATTLE_TEST("Eject Button is not triggered after given to player by Picke OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { - MOVE(player, MOVE_TACKLE); - MOVE(opponent, MOVE_TACKLE); + MOVE(player, MOVE_SCRATCH); + MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ABILITY_POPUP(opponent, ABILITY_PICKPOCKET); MESSAGE("The opposing Sneasel stole Regieleki's Eject Button!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } @@ -140,7 +140,7 @@ SINGLE_BATTLE_TEST("Eject Button has no chance to activate after Dragon Tail") } WHEN { TURN { MOVE(player, MOVE_DRAGON_TAIL); - MOVE(opponent, MOVE_TACKLE); + MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_TAIL, player); diff --git a/test/battle/hold_effect/enigma_berry.c b/test/battle/hold_effect/enigma_berry.c index 762774f25d..d1f897277c 100644 --- a/test/battle/hold_effect/enigma_berry.c +++ b/test/battle/hold_effect/enigma_berry.c @@ -67,7 +67,7 @@ DOUBLE_BATTLE_TEST("Enigma Berry doesn't trigger if partner was hit") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT) { Item(ITEM_ENIGMA_BERRY); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } } SCENE { NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentRight); } THEN { diff --git a/test/battle/hold_effect/gems.c b/test/battle/hold_effect/gems.c index 36a843bbfa..52c85d7fb5 100644 --- a/test/battle/hold_effect/gems.c +++ b/test/battle/hold_effect/gems.c @@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Gem is consumed when it corresponds to the type of a move") OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_EMBER); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Gem is consumed when it corresponds to the type of a move") ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("The Normal Gem strengthened Wobbuffet's power!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); } } @@ -36,14 +36,14 @@ SINGLE_BATTLE_TEST("Gem boost is only applied once") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMAL_GEM); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("The Normal Gem strengthened Wobbuffet's power!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &boostedHit); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &normalHit); } THEN { EXPECT_MUL_EQ(normalHit, Q_4_12(1.3), boostedHit); diff --git a/test/battle/hold_effect/jaboca_berry.c b/test/battle/hold_effect/jaboca_berry.c index e446c4253d..2eb10df77a 100644 --- a/test/battle/hold_effect/jaboca_berry.c +++ b/test/battle/hold_effect/jaboca_berry.c @@ -4,7 +4,7 @@ ASSUMPTIONS { ASSUME(gItemsInfo[ITEM_JABOCA_BERRY].holdEffect == HOLD_EFFECT_JABOCA_BERRY); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); } SINGLE_BATTLE_TEST("Jaboca Berry causes the attacker to lose 1/8 of its max HP if a physical move was used") @@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Jaboca Berry causes the attacker to lose 1/8 of its max HP i u16 move; PARAMETRIZE { move = MOVE_SWIFT; } - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } GIVEN { ASSUME(GetMoveCategory(MOVE_SWIFT) == DAMAGE_CATEGORY_SPECIAL); @@ -24,7 +24,7 @@ SINGLE_BATTLE_TEST("Jaboca Berry causes the attacker to lose 1/8 of its max HP i } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - if (move == MOVE_TACKLE) { + if (move == MOVE_SCRATCH) { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); HP_BAR(player, captureDamage: &damage); MESSAGE("Wobbuffet was hurt by the opposing Wobbuffet's Jaboca Berry!"); @@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Jaboca Berry causes the attacker to lose 1/8 of its max HP i } } } THEN { - if (move == MOVE_TACKLE) + if (move == MOVE_SCRATCH) EXPECT_EQ(player->maxHP / 8, damage); } } diff --git a/test/battle/hold_effect/kee_berry.c b/test/battle/hold_effect/kee_berry.c index 33de8ee004..c63da86841 100644 --- a/test/battle/hold_effect/kee_berry.c +++ b/test/battle/hold_effect/kee_berry.c @@ -4,7 +4,7 @@ ASSUMPTIONS { ASSUME(gItemsInfo[ITEM_KEE_BERRY].holdEffect == HOLD_EFFECT_KEE_BERRY); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); } SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by one stage when hit by a physical move") @@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by one stage when hit u16 move; PARAMETRIZE { move = MOVE_SWIFT; } - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } GIVEN { ASSUME(GetMoveCategory(MOVE_SWIFT) == DAMAGE_CATEGORY_SPECIAL); @@ -23,7 +23,7 @@ SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by one stage when hit } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent); - if (move == MOVE_TACKLE) { + if (move == MOVE_SCRATCH) { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); MESSAGE("Using Kee Berry, the Defense of the opposing Wobbuffet rose!"); } else { @@ -33,7 +33,7 @@ SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by one stage when hit } } } THEN { - if (move == MOVE_TACKLE) + if (move == MOVE_SCRATCH) EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); } } @@ -44,9 +44,9 @@ SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by two stages with Rip PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_APPLIN) { Item(ITEM_KEE_BERRY); Ability(ABILITY_RIPEN); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); MESSAGE("Using Kee Berry, the Defense of the opposing Applin sharply rose!"); @@ -61,9 +61,9 @@ SINGLE_BATTLE_TEST("Kee Berry doesn't trigger if the item hold user used a physi PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_KEE_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); @@ -82,7 +82,7 @@ DOUBLE_BATTLE_TEST("Kee Berry doesn't trigger if partner was hit") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT) { Item(ITEM_KEE_BERRY); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } } SCENE { NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentRight); } THEN { diff --git a/test/battle/hold_effect/leek.c b/test/battle/hold_effect/leek.c index 57cc9f1697..7ff6610279 100644 --- a/test/battle/hold_effect/leek.c +++ b/test/battle/hold_effect/leek.c @@ -28,9 +28,9 @@ SINGLE_BATTLE_TEST("Leek increases critical hit ratio by 2 stages for the Farfet PLAYER(SPECIES_WOBBUFFET); OPPONENT(species) { Item(ITEM_LEEK); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("A critical hit!"); } } diff --git a/test/battle/hold_effect/luck_punch.c b/test/battle/hold_effect/luck_punch.c index 056723eb36..02faaed6a8 100644 --- a/test/battle/hold_effect/luck_punch.c +++ b/test/battle/hold_effect/luck_punch.c @@ -17,9 +17,9 @@ SINGLE_BATTLE_TEST("Lucky Punch increases critical hit ratio by 2 stages for Cha PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_CHANSEY) { Item(ITEM_LUCKY_PUNCH); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("A critical hit!"); } } diff --git a/test/battle/hold_effect/maranga_berry.c b/test/battle/hold_effect/maranga_berry.c index eeb1aacf94..22b72ba201 100644 --- a/test/battle/hold_effect/maranga_berry.c +++ b/test/battle/hold_effect/maranga_berry.c @@ -9,10 +9,10 @@ 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_SCRATCH; } PARAMETRIZE { move = MOVE_SWIFT; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_SWIFT) == DAMAGE_CATEGORY_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_MARANGA_BERRY); } @@ -82,7 +82,7 @@ DOUBLE_BATTLE_TEST("Maranga Berry doesn't trigger if partner was hit") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT) { Item(ITEM_MARANGA_BERRY); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } } SCENE { NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentRight); } THEN { diff --git a/test/battle/hold_effect/metronome.c b/test/battle/hold_effect/metronome.c index f1d756b3a7..e7037db8d0 100644 --- a/test/battle/hold_effect/metronome.c +++ b/test/battle/hold_effect/metronome.c @@ -27,11 +27,11 @@ SINGLE_BATTLE_TEST("Metronome Item gradually boosts power of consecutively used OPPONENT(SPECIES_WOBBUFFET); } WHEN { for (j = 0; j < METRONOME_TURNS; ++j) { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } } SCENE { for (j = 0; j < METRONOME_TURNS; ++j) { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &damage[j]); } } THEN { @@ -48,16 +48,16 @@ SINGLE_BATTLE_TEST("Metronome Item's boost is reset if the attacker uses a diffe PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_METRONOME); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_QUICK_ATTACK); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &damage[0]); ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { EXPECT_EQ(damage[0], damage[1]); @@ -71,14 +71,14 @@ SINGLE_BATTLE_TEST("Metronome Item's boost is reset if the move fails") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_METRONOME); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &damage[0]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { EXPECT_EQ(damage[0], damage[1]); @@ -92,13 +92,13 @@ SINGLE_BATTLE_TEST("Metronome Item counts called moves instead of the calling mo PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_METRONOME); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_METRONOME, WITH_RNG(RNG_METRONOME, MOVE_TACKLE)); } - TURN { MOVE(player, MOVE_METRONOME, WITH_RNG(RNG_METRONOME, MOVE_TACKLE)); } + TURN { MOVE(player, MOVE_METRONOME, WITH_RNG(RNG_METRONOME, MOVE_SCRATCH)); } + TURN { MOVE(player, MOVE_METRONOME, WITH_RNG(RNG_METRONOME, MOVE_SCRATCH)); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &damage[0]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { EXPECT_MUL_EQ(damage[0], UQ_4_12(1.2), damage[1]); diff --git a/test/battle/hold_effect/micle_berry.c b/test/battle/hold_effect/micle_berry.c index 818eae09a6..47e0b8e53b 100644 --- a/test/battle/hold_effect/micle_berry.c +++ b/test/battle/hold_effect/micle_berry.c @@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Micle Berry raises the holder's accuracy by 1.2 when HP drop { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_DRAGON_RAGE; } GIVEN { @@ -22,7 +22,7 @@ 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) { + if (move == MOVE_SCRATCH) { NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet boosted the accuracy of its next move using Micle Berry!"); @@ -73,10 +73,10 @@ SINGLE_BATTLE_TEST("Micle Berry increases the accuracy of the next used move acr PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(26); Item(ITEM_MICLE_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_ROCK_SLIDE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_ROCK_SLIDE, player); } @@ -90,9 +90,9 @@ SINGLE_BATTLE_TEST("Micle Berry increases the accuracy of the next used move the PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(26); Item(ITEM_MICLE_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_ROCK_SLIDE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_ROCK_SLIDE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_ROCK_SLIDE, player); } diff --git a/test/battle/hold_effect/mirror_herb.c b/test/battle/hold_effect/mirror_herb.c index 68294bee43..6618d41950 100644 --- a/test/battle/hold_effect/mirror_herb.c +++ b/test/battle/hold_effect/mirror_herb.c @@ -12,21 +12,21 @@ SINGLE_BATTLE_TEST("Mirror Herb copies all of foe's positive stat changes in a t PARAMETRIZE { item = ITEM_NONE; } PARAMETRIZE { item = ITEM_MIRROR_HERB; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET) { Speed(4); } OPPONENT(SPECIES_WOBBUFFET) { Speed(5); Item(item); } } WHEN { TURN { MOVE(player, MOVE_DRAGON_DANCE); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (item == ITEM_NONE) { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } else { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); } } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); @@ -57,9 +57,9 @@ DOUBLE_BATTLE_TEST("Mirror Herb does not trigger for Ally's Soul Heart's stat ra OPPONENT(SPECIES_WOBBUFFET) { HP(1); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerRight, MOVE_TACKLE, target:opponentLeft); } + TURN { MOVE(playerRight, MOVE_SCRATCH, target:opponentLeft); } } SCENE { - MESSAGE("Wynaut used Tackle!"); + MESSAGE("Wynaut used Scratch!"); MESSAGE("The opposing Wobbuffet fainted!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); NONE_OF { diff --git a/test/battle/hold_effect/ogerpon_mask.c b/test/battle/hold_effect/ogerpon_mask.c index 919151684a..d1353d090f 100644 --- a/test/battle/hold_effect/ogerpon_mask.c +++ b/test/battle/hold_effect/ogerpon_mask.c @@ -21,11 +21,11 @@ SINGLE_BATTLE_TEST("Ogerpon Masks increase the base power of moves by 20%", s16 PARAMETRIZE { species = SPECIES_OGERPON_CORNERSTONE; item = ITEM_HEARTHFLAME_MASK; } GIVEN { - ASSUME(GetMovePower(MOVE_TACKLE) > 0); + ASSUME(GetMovePower(MOVE_SCRATCH) > 0); PLAYER(species) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { diff --git a/test/battle/hold_effect/protective_pads.c b/test/battle/hold_effect/protective_pads.c index 8bd206c6a3..e04f30ac9b 100644 --- a/test/battle/hold_effect/protective_pads.c +++ b/test/battle/hold_effect/protective_pads.c @@ -4,7 +4,7 @@ ASSUMPTIONS { ASSUME(gItemsInfo[ITEM_PROTECTIVE_PADS].holdEffect == HOLD_EFFECT_PROTECTIVE_PADS); - ASSUME(MoveMakesContact(MOVE_TACKLE) == TRUE); + ASSUME(MoveMakesContact(MOVE_SCRATCH) == TRUE); } SINGLE_BATTLE_TEST("Protective Pads protected moves still make direct contact", s16 damage) @@ -16,9 +16,9 @@ SINGLE_BATTLE_TEST("Protective Pads protected moves still make direct contact", PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PROTECTIVE_PADS); } OPPONENT(SPECIES_STUFFUL) { Ability(ability); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, UQ_4_12(0.5), results[1].damage); @@ -34,9 +34,9 @@ SINGLE_BATTLE_TEST("Protective Pads doesn't reduce tough claws damage", s16 dama PLAYER(SPECIES_BINACLE) { Ability(ABILITY_TOUGH_CLAWS); Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Binacle used Tackle!"); + MESSAGE("Binacle used Scratch!"); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_EQ(results[0].damage, results[1].damage); @@ -49,10 +49,10 @@ SINGLE_BATTLE_TEST("Protective Pads doesn't invalid unseen fist") PLAYER(SPECIES_URSHIFU_RAPID_STRIKE) { Ability(ABILITY_UNSEEN_FIST); Item(ITEM_PROTECTIVE_PADS); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent); } } @@ -63,9 +63,9 @@ SINGLE_BATTLE_TEST("Protective Pads protects from Rocly Helmet Damage") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PROTECTIVE_PADS); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ROCKY_HELMET); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent); NONE_OF { HP_BAR(player); @@ -89,11 +89,11 @@ SINGLE_BATTLE_TEST("Protective Pads protects from Protect's secondary effects") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PROTECTIVE_PADS); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, move); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, move); MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); NONE_OF { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); if (move == MOVE_SPIKY_SHIELD) { HP_BAR(player); } else if (move == MOVE_BANEFUL_BUNKER) { diff --git a/test/battle/hold_effect/quick_claw.c b/test/battle/hold_effect/quick_claw.c index a436b572cb..dfbdb245b9 100644 --- a/test/battle/hold_effect/quick_claw.c +++ b/test/battle/hold_effect/quick_claw.c @@ -14,9 +14,9 @@ SINGLE_BATTLE_TEST("Quick Claw activates 20% of the time") PLAYER(SPECIES_WOBBUFFET) { Speed(1); Item(ITEM_QUICK_CLAW); } OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("The opposing Wobbuffet used Celebrate!"); } } diff --git a/test/battle/hold_effect/red_card.c b/test/battle/hold_effect/red_card.c index e7a32e3534..f71ba51330 100644 --- a/test/battle/hold_effect/red_card.c +++ b/test/battle/hold_effect/red_card.c @@ -16,9 +16,9 @@ SINGLE_BATTLE_TEST("Red Card switches the attacker with a random non-fainted rep OPPONENT(SPECIES_CHARMANDER); OPPONENT(SPECIES_SQUIRTLE) { HP(0); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet held up its Red Card against the opposing Wobbuffet!"); MESSAGE("The opposing Bulbasaur was dragged out!"); @@ -39,9 +39,9 @@ DOUBLE_BATTLE_TEST("Red Card switches the target with a random non-battler, non- OPPONENT(SPECIES_CHARMANDER); OPPONENT(SPECIES_SQUIRTLE) { HP(0); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); MESSAGE("Wobbuffet held up its Red Card against the opposing Wobbuffet!"); MESSAGE("The opposing Bulbasaur was dragged out!"); @@ -58,9 +58,9 @@ SINGLE_BATTLE_TEST("Red Card does not activate if holder faints") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet held up its Red Card against the opposing Wobbuffet!"); @@ -77,9 +77,9 @@ SINGLE_BATTLE_TEST("Red Card does not activate if target is behind a Substitute" OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet held up its Red Card against the opposing Wobbuffet!"); @@ -114,9 +114,9 @@ SINGLE_BATTLE_TEST("Red Card does not activate if no replacements") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet held up its Red Card against the opposing Wobbuffet!"); @@ -133,9 +133,9 @@ SINGLE_BATTLE_TEST("Red Card does not activate if replacements fainted") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT) { HP(0); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet held up its Red Card against the opposing Wobbuffet!"); @@ -206,9 +206,9 @@ SINGLE_BATTLE_TEST("Red Card does not activate if stolen by Magician") OPPONENT(SPECIES_FENNEKIN) { Ability(ABILITY_MAGICIAN); Item(item); } OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); if (activate) { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet held up its Red Card against the opposing Fennekin!"); @@ -234,7 +234,7 @@ DOUBLE_BATTLE_TEST("Red Card activates for only the fastest target") } WHEN { TURN { MOVE(opponentLeft, MOVE_ROCK_SLIDE); - MOVE(opponentRight, MOVE_TACKLE, target: playerRight); + MOVE(opponentRight, MOVE_SCRATCH, target: playerRight); } } SCENE { // Fastest target's Red Card activates. @@ -244,7 +244,7 @@ DOUBLE_BATTLE_TEST("Red Card activates for only the fastest target") MESSAGE("The opposing Unown was dragged out!"); // Slower target's Red Card still able to activate on other battler. - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerRight); MESSAGE("Wynaut held up its Red Card against the opposing Wynaut!"); MESSAGE("The opposing Wobbuffet was dragged out!"); @@ -265,18 +265,18 @@ DOUBLE_BATTLE_TEST("Red Card activates but fails if the attacker is rooted") } WHEN { TURN { MOVE(opponentLeft, MOVE_INGRAIN); } TURN { - MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); - MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); + MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); MESSAGE("Wobbuffet held up its Red Card against the opposing Wobbuffet!"); MESSAGE("The opposing Wobbuffet anchored itself with its roots!"); NOT MESSAGE("The opposing Unown was dragged out!"); // Red Card already consumed so cannot activate. - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); MESSAGE("Wobbuffet held up its Red Card against the opposing Wynaut!"); @@ -294,18 +294,18 @@ DOUBLE_BATTLE_TEST("Red Card activates but fails if the attacker has Suction Cup OPPONENT(SPECIES_UNOWN); } WHEN { TURN { - MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); - MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); + MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); MESSAGE("Wobbuffet held up its Red Card against the opposing Octillery!"); MESSAGE("The opposing Octillery anchors itself with Suction Cups!"); NOT MESSAGE("The opposing Unown was dragged out!"); // Red Card already consumed so cannot activate. - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); MESSAGE("Wobbuffet held up its Red Card against the opposing Wynaut!"); @@ -323,17 +323,17 @@ DOUBLE_BATTLE_TEST("Red Card activates but fails if the attacker has Guard Dog") OPPONENT(SPECIES_UNOWN); } WHEN { TURN { - MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); - MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); + MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); MESSAGE("Wobbuffet held up its Red Card against the opposing Okidogi!"); NOT MESSAGE("The opposing Unown was dragged out!"); // Red Card already consumed so cannot activate. - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); MESSAGE("Wobbuffet held up its Red Card against the opposing Wynaut!"); @@ -387,7 +387,7 @@ SINGLE_BATTLE_TEST("Red Card does not activate if attacker's Sheer Force applied { u32 move; bool32 activate; - PARAMETRIZE { move = MOVE_TACKLE; activate = TRUE; } + PARAMETRIZE { move = MOVE_SCRATCH; activate = TRUE; } PARAMETRIZE { move = MOVE_STOMP; activate = FALSE; } GIVEN { @@ -415,17 +415,17 @@ SINGLE_BATTLE_TEST("Red Card is consumed after dragged out replacement has its S GIVEN { ASSUME(GetMoveEffect(MOVE_STICKY_WEB) == EFFECT_STICKY_WEB); PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WYNAUT) { Moves(MOVE_TACKLE); } + PLAYER(SPECIES_WYNAUT) { Moves(MOVE_SCRATCH); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } } WHEN { TURN { MOVE(opponent, MOVE_STICKY_WEB); } - TURN { MOVE(player, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { // 1st turn Sticky Web ANIMATION(ANIM_TYPE_MOVE, MOVE_STICKY_WEB, opponent); // 2nd turn Red Card activation - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); MESSAGE("The opposing Wobbuffet held up its Red Card against Wobbuffet!"); MESSAGE("Wynaut was dragged out!"); @@ -449,9 +449,9 @@ SINGLE_BATTLE_TEST("Red Card does not cause the dragged out mon to lose hp due t PLAYER(SPECIES_WYNAUT) { Item(ITEM_LIFE_ORB); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); MESSAGE("The opposing Wobbuffet held up its Red Card against Wobbuffet!"); MESSAGE("Wynaut was dragged out!"); @@ -467,10 +467,10 @@ SINGLE_BATTLE_TEST("Red Card does not activate if holder is switched in mid-turn OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(player, MOVE_ENDURE); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(player, MOVE_ENDURE); MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_ENDURE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet is switched out with the Eject Button!"); NONE_OF { @@ -505,8 +505,8 @@ SINGLE_BATTLE_TEST("Red Card activates and is consumed but fails if the attacker OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } } WHEN { TURN { - MOVE(opponent, MOVE_TACKLE); - MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); + MOVE(opponent, MOVE_SCRATCH); + MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); @@ -526,7 +526,7 @@ SINGLE_BATTLE_TEST("Red Card activates before Eject Pack") OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(player, MOVE_OVERHEAT); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_OVERHEAT); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_OVERHEAT, player); NONE_OF { @@ -535,7 +535,7 @@ SINGLE_BATTLE_TEST("Red Card activates before Eject Pack") } ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); MESSAGE("The opposing Wobbuffet held up its Red Card against Wobbuffet!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } diff --git a/test/battle/hold_effect/restore_stats.c b/test/battle/hold_effect/restore_stats.c index 192ad2f65e..e7f020910f 100644 --- a/test/battle/hold_effect/restore_stats.c +++ b/test/battle/hold_effect/restore_stats.c @@ -166,9 +166,9 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if Magician steals it" PLAYER(SPECIES_SLUGMA) { Ability(ABILITY_WEAK_ARMOR); Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_FENNEKIN) { Ability(ABILITY_MAGICIAN); } } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Slugma's Weak Armor lowered its Defense!"); diff --git a/test/battle/hold_effect/rowap_berry.c b/test/battle/hold_effect/rowap_berry.c index 2ad8b9d300..0604fefcb7 100644 --- a/test/battle/hold_effect/rowap_berry.c +++ b/test/battle/hold_effect/rowap_berry.c @@ -12,11 +12,11 @@ SINGLE_BATTLE_TEST("Rowap Berry causes the attacker to lose 1/8 of its max HP if u16 move; PARAMETRIZE { move = MOVE_SWIFT; } - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } GIVEN { ASSUME(GetMoveCategory(MOVE_SWIFT) == DAMAGE_CATEGORY_SPECIAL); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ROWAP_BERRY); } } WHEN { @@ -43,13 +43,13 @@ SINGLE_BATTLE_TEST("Rowap Berry causes the attacker to lose 1/8 of its max HP if SINGLE_BATTLE_TEST("Rowap Berry is not triggered by a physical move") { GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ROWAP_BERRY); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); diff --git a/test/battle/hold_effect/scope_lens.c b/test/battle/hold_effect/scope_lens.c index 6914025ce7..f5b616ecea 100644 --- a/test/battle/hold_effect/scope_lens.c +++ b/test/battle/hold_effect/scope_lens.c @@ -15,9 +15,9 @@ SINGLE_BATTLE_TEST("Scope Lens increases the critical hit ratio by 1 stage") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_SCOPE_LENS); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); MESSAGE("A critical hit!"); } } diff --git a/test/battle/hold_effect/shell_bell.c b/test/battle/hold_effect/shell_bell.c index 8e91011865..33fbc0558b 100644 --- a/test/battle/hold_effect/shell_bell.c +++ b/test/battle/hold_effect/shell_bell.c @@ -54,10 +54,10 @@ SINGLE_BATTLE_TEST("Shell Bell activates if it hits a Substitute") PLAYER(SPECIES_WOBBUFFET) { HP(1); Item(ITEM_SHELL_BELL); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); // HP_BAR(opponent); // When you hit a sub the hp bar check doesn't work. Not sure if this is a bug ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); HP_BAR(player); @@ -86,9 +86,9 @@ SINGLE_BATTLE_TEST("Shell Bell activates after Rough Skin") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_SHELL_BELL); } OPPONENT(SPECIES_GIBLE) { Ability(ABILITY_ROUGH_SKIN); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent); HP_BAR(player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); diff --git a/test/battle/hold_effect/special_attack_up.c b/test/battle/hold_effect/special_attack_up.c index 0199bab83c..148b7abf1b 100644 --- a/test/battle/hold_effect/special_attack_up.c +++ b/test/battle/hold_effect/special_attack_up.c @@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Petaya Berry raises the holder's Sp. Atk by one stage when H { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_DRAGON_RAGE; } GIVEN { @@ -22,7 +22,7 @@ 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) { + if (move == MOVE_SCRATCH) { NONE_OF { 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 e075d05c49..266f954503 100644 --- a/test/battle/hold_effect/special_defense_up.c +++ b/test/battle/hold_effect/special_defense_up.c @@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Apicot Berry raises the holder's Sp. Def by one stage when H { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_DRAGON_RAGE; } GIVEN { @@ -22,7 +22,7 @@ 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) { + if (move == MOVE_SCRATCH) { NONE_OF { 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 f31ee7e924..7fb24295d4 100644 --- a/test/battle/hold_effect/speed_up.c +++ b/test/battle/hold_effect/speed_up.c @@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Salac Berry raises the holder's Speed by one stage when HP d { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_DRAGON_RAGE; } GIVEN { @@ -22,7 +22,7 @@ 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) { + if (move == MOVE_SCRATCH) { NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Using Salac Berry, the Speed of Wobbuffet rose!"); diff --git a/test/battle/item_effect/heal_and_cure_status.c b/test/battle/item_effect/heal_and_cure_status.c index db15fbde84..99507df3cd 100644 --- a/test/battle/item_effect/heal_and_cure_status.c +++ b/test/battle/item_effect/heal_and_cure_status.c @@ -116,7 +116,7 @@ SINGLE_BATTLE_TEST("Full Restore restores a battler's HP and cures confusion") } WHEN { TURN{ MOVE(opponent, MOVE_CONFUSE_RAY); } TURN{ USE_ITEM(player, ITEM_FULL_RESTORE, partyIndex: 0); } - TURN{ MOVE(player, MOVE_TACKLE); } + TURN{ MOVE(player, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet had its HP restored."); NONE_OF { MESSAGE("Wobbuffet is confused!"); } diff --git a/test/battle/item_effect/increase_stat.c b/test/battle/item_effect/increase_stat.c index 2b9486e3a6..3f162ea828 100644 --- a/test/battle/item_effect/increase_stat.c +++ b/test/battle/item_effect/increase_stat.c @@ -8,14 +8,14 @@ SINGLE_BATTLE_TEST("X Attack sharply raises battler's Attack stat", s16 damage) PARAMETRIZE { useItem = TRUE; } GIVEN { ASSUME(gItemsInfo[ITEM_X_ATTACK].battleUsage == EFFECT_ITEM_INCREASE_STAT); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (useItem) TURN { USE_ITEM(player, ITEM_X_ATTACK); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { if (B_X_ITEMS_BUFF >= GEN_7) @@ -32,14 +32,14 @@ SINGLE_BATTLE_TEST("X Defense sharply raises battler's Defense stat", s16 damage PARAMETRIZE { useItem = TRUE; } GIVEN { ASSUME(gItemsInfo[ITEM_X_DEFENSE].battleUsage == EFFECT_ITEM_INCREASE_STAT); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (useItem) TURN { USE_ITEM(player, ITEM_X_DEFENSE); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { if (B_X_ITEMS_BUFF >= GEN_7) @@ -116,17 +116,17 @@ SINGLE_BATTLE_TEST("X Speed sharply raises battler's Speed stat", s16 damage) } } WHEN { if (useItem) TURN { USE_ITEM(player, ITEM_X_SPEED); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (useItem) { - MESSAGE("Wobbuffet used Tackle!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); } else { - MESSAGE("The opposing Wobbuffet used Tackle!"); - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); + MESSAGE("Wobbuffet used Scratch!"); } } } @@ -163,9 +163,9 @@ SINGLE_BATTLE_TEST("Max Mushrooms raises battler's Attack stat", s16 damage) OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (useItem) TURN { USE_ITEM(player, ITEM_MAX_MUSHROOMS); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); @@ -183,9 +183,9 @@ SINGLE_BATTLE_TEST("Max Mushrooms raises battler's Defense stat", s16 damage) OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (useItem) TURN { USE_ITEM(player, ITEM_MAX_MUSHROOMS); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.66), results[1].damage); @@ -243,17 +243,17 @@ SINGLE_BATTLE_TEST("Max Mushrooms raises battler's Speed stat", s16 damage) OPPONENT(SPECIES_WOBBUFFET) { Speed(5); } } WHEN { if (useItem) TURN { USE_ITEM(player, ITEM_MAX_MUSHROOMS); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (useItem) { - MESSAGE("Wobbuffet used Tackle!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); } else { - MESSAGE("The opposing Wobbuffet used Tackle!"); - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("The opposing Wobbuffet used Scratch!"); + MESSAGE("Wobbuffet used Scratch!"); } } } diff --git a/test/battle/item_effect/restore_pp.c b/test/battle/item_effect/restore_pp.c index 5f2a50cd52..f586c584f1 100644 --- a/test/battle/item_effect/restore_pp.c +++ b/test/battle/item_effect/restore_pp.c @@ -6,10 +6,10 @@ SINGLE_BATTLE_TEST("Ether restores the PP of one of a battler's moves by 10 ") GIVEN { ASSUME(gItemsInfo[ITEM_ETHER].battleUsage == EFFECT_ITEM_RESTORE_PP); ASSUME(gItemsInfo[ITEM_ETHER].type == ITEM_USE_PARTY_MENU_MOVES); - PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TACKLE, 0}, {MOVE_CONFUSION, 20}); } + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SCRATCH, 0}, {MOVE_CONFUSION, 20}); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { USE_ITEM(player, ITEM_ETHER, partyIndex: 0, move: MOVE_TACKLE); } + TURN { USE_ITEM(player, ITEM_ETHER, partyIndex: 0, move: MOVE_SCRATCH); } } THEN { EXPECT_EQ(player->pp[0], 10); EXPECT_EQ(player->pp[1], 20); @@ -21,10 +21,10 @@ SINGLE_BATTLE_TEST("Max Ether restores the PP of one of a battler's moves fully" GIVEN { ASSUME(gItemsInfo[ITEM_MAX_ETHER].battleUsage == EFFECT_ITEM_RESTORE_PP); ASSUME(gItemsInfo[ITEM_MAX_ETHER].type == ITEM_USE_PARTY_MENU_MOVES); - PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TACKLE, 0}, {MOVE_CONFUSION, 20}); } + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SCRATCH, 0}, {MOVE_CONFUSION, 20}); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { USE_ITEM(player, ITEM_MAX_ETHER, partyIndex: 0, move: MOVE_TACKLE); } + TURN { USE_ITEM(player, ITEM_MAX_ETHER, partyIndex: 0, move: MOVE_SCRATCH); } } THEN { EXPECT_EQ(player->pp[0], 35); EXPECT_EQ(player->pp[1], 20); @@ -36,7 +36,7 @@ SINGLE_BATTLE_TEST("Elixir restores the PP of all of a battler's moves by 10") GIVEN { ASSUME(gItemsInfo[ITEM_ELIXIR].battleUsage == EFFECT_ITEM_RESTORE_PP); ASSUME(gItemsInfo[ITEM_ELIXIR].type == ITEM_USE_PARTY_MENU); - PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TACKLE, 0}, {MOVE_CONFUSION, 0}, {MOVE_SCRATCH, 0}, {MOVE_GROWL, 0}); } + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SCRATCH, 0}, {MOVE_CONFUSION, 0}, {MOVE_SCRATCH, 0}, {MOVE_GROWL, 0}); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { USE_ITEM(player, ITEM_ELIXIR, partyIndex: 0); } @@ -53,7 +53,7 @@ SINGLE_BATTLE_TEST("Max Elixir restores the PP of all of a battler's moves fully GIVEN { ASSUME(gItemsInfo[ITEM_MAX_ELIXIR].battleUsage == EFFECT_ITEM_RESTORE_PP); ASSUME(gItemsInfo[ITEM_MAX_ELIXIR].type == ITEM_USE_PARTY_MENU); - PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TACKLE, 0}, {MOVE_CONFUSION, 0}, {MOVE_SCRATCH, 0}, {MOVE_GROWL, 0}); } + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SCRATCH, 0}, {MOVE_CONFUSION, 0}, {MOVE_SCRATCH, 0}, {MOVE_GROWL, 0}); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { USE_ITEM(player, ITEM_MAX_ELIXIR, partyIndex: 0); } diff --git a/test/battle/item_effect/revive.c b/test/battle/item_effect/revive.c index 31d29cd599..9ff693fc30 100644 --- a/test/battle/item_effect/revive.c +++ b/test/battle/item_effect/revive.c @@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Revive restores a fainted battler's HP to half") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } TURN { USE_ITEM(player, ITEM_REVIVE, partyIndex: 0); } TURN { SWITCH(player, 0); } } SCENE { @@ -27,7 +27,7 @@ SINGLE_BATTLE_TEST("Max Revive restores a fainted battler's HP fully") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } TURN { USE_ITEM(player, ITEM_MAX_REVIVE, partyIndex: 0); } TURN { SWITCH(player, 0); } } SCENE { @@ -45,7 +45,7 @@ SINGLE_BATTLE_TEST("Revival Herb restores a fainted battler's HP fully") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } TURN { USE_ITEM(player, ITEM_REVIVAL_HERB, partyIndex: 0); } TURN { SWITCH(player, 0); } } SCENE { @@ -63,7 +63,7 @@ SINGLE_BATTLE_TEST("Max Honey restores a fainted battler's HP fully") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } TURN { USE_ITEM(player, ITEM_MAX_HONEY, partyIndex: 0); } TURN { SWITCH(player, 0); } } SCENE { @@ -80,14 +80,14 @@ DOUBLE_BATTLE_TEST("Revive works for a partner in a double battle") ASSUME(gItemsInfo[ITEM_REVIVE].battleUsage == EFFECT_ITEM_REVIVE); PLAYER(SPECIES_WYNAUT) { HP(1); MaxHP(200); Moves(MOVE_IRON_DEFENSE, MOVE_CELEBRATE); Speed(5); } PLAYER(SPECIES_WOBBUFFET) { HP(1); Speed(4); } - OPPONENT(SPECIES_ABRA) { Speed(3); Moves(MOVE_TACKLE, MOVE_PSYCHIC, MOVE_CELEBRATE); } - OPPONENT(SPECIES_KADABRA) { Speed(2); Moves(MOVE_TACKLE, MOVE_PSYCHIC, MOVE_CELEBRATE, MOVE_EXPLOSION); } + OPPONENT(SPECIES_ABRA) { Speed(3); Moves(MOVE_SCRATCH, MOVE_PSYCHIC, MOVE_CELEBRATE); } + OPPONENT(SPECIES_KADABRA) { Speed(2); Moves(MOVE_SCRATCH, MOVE_PSYCHIC, MOVE_CELEBRATE, MOVE_EXPLOSION); } } WHEN { TURN { MOVE(opponentRight, MOVE_PSYCHIC, target:playerLeft); MOVE(playerLeft, MOVE_CELEBRATE); } // Wynaut faints TURN { USE_ITEM(playerRight, ITEM_REVIVE, partyIndex: 0); MOVE(opponentRight, MOVE_PSYCHIC, target:playerRight); } // Wynaut gets revived, Wobb faints // Wynaut is functionally back - TURN { MOVE(opponentLeft, MOVE_TACKLE, target:playerLeft); } - TURN { MOVE(opponentRight, MOVE_TACKLE, target:playerLeft); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target:playerLeft); } + TURN { MOVE(opponentRight, MOVE_SCRATCH, target:playerLeft); } TURN { MOVE(opponentRight, MOVE_EXPLOSION); } // Everyone dies, the test can finish. } SCENE { MESSAGE("Wynaut fainted!"); diff --git a/test/battle/move.c b/test/battle/move.c index 6286b48c42..541dc3812c 100644 --- a/test/battle/move.c +++ b/test/battle/move.c @@ -42,14 +42,14 @@ SINGLE_BATTLE_TEST("AdditionalEffect.chance controls the proportion of secondary SINGLE_BATTLE_TEST("Turn order is determined by priority") { GIVEN { - ASSUME(GetMovePriority(MOVE_QUICK_ATTACK) > GetMovePriority(MOVE_TACKLE)); + ASSUME(GetMovePriority(MOVE_QUICK_ATTACK) > GetMovePriority(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_QUICK_ATTACK); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_QUICK_ATTACK); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } @@ -205,10 +205,10 @@ DOUBLE_BATTLE_TEST("Moves fail if they target the partner but they faint before OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerRight); MOVE(playerLeft, MOVE_TACKLE, target: playerRight); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerRight); MOVE(playerLeft, MOVE_SCRATCH, target: playerRight); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); } } @@ -220,9 +220,9 @@ DOUBLE_BATTLE_TEST("Moves do not fail if an alive partner is the target") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: playerRight); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: playerRight); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); } } @@ -239,13 +239,13 @@ DOUBLE_BATTLE_TEST("Moves fail if they target into a pokemon that was fainted by } WHEN { TURN { MOVE(playerLeft, MOVE_HYPER_VOICE); - MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); + MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); SEND_OUT(opponentLeft, 2); SEND_OUT(opponentRight, 3); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, playerLeft); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); } } @@ -258,9 +258,9 @@ DOUBLE_BATTLE_TEST("Moves that target the field are not going to fail if one mon OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerRight); MOVE(playerLeft, MOVE_SURF); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerRight); MOVE(playerLeft, MOVE_SURF); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, playerLeft); } } diff --git a/test/battle/move_effect/ally_switch.c b/test/battle/move_effect/ally_switch.c index ba2ac1a053..1c28e51a9b 100644 --- a/test/battle/move_effect/ally_switch.c +++ b/test/battle/move_effect/ally_switch.c @@ -28,7 +28,7 @@ DOUBLE_BATTLE_TEST("Ally Switch fails if there is no partner") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target:playerRight); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target:playerRight); } TURN { MOVE(playerLeft, MOVE_ALLY_SWITCH); } } SCENE { MESSAGE("Wobbuffet fainted!"); @@ -103,14 +103,14 @@ DOUBLE_BATTLE_TEST("Ally Switch does not redirect moves done by pokemon with Sta OPPONENT(SPECIES_KADABRA) { Ability(ability); } OPPONENT(SPECIES_ABRA); } WHEN { - TURN { MOVE(playerLeft, MOVE_ALLY_SWITCH); MOVE(opponentLeft, MOVE_TACKLE, target:playerRight); } // Kadabra targets playerRight Wynaut. + TURN { MOVE(playerLeft, MOVE_ALLY_SWITCH); MOVE(opponentLeft, MOVE_SCRATCH, target:playerRight); } // Kadabra targets playerRight Wynaut. } SCENE { MESSAGE("Wobbuffet used Ally Switch!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_ALLY_SWITCH, playerLeft); MESSAGE("Wobbuffet and Wynaut switched places!"); - MESSAGE("The opposing Kadabra used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + MESSAGE("The opposing Kadabra used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); HP_BAR((ability == ABILITY_STALWART || ability == ABILITY_PROPELLER_TAIL) ? playerLeft : playerRight); } } @@ -120,14 +120,14 @@ DOUBLE_BATTLE_TEST("Ally Switch has no effect on partner's chosen move") u16 chosenMove; struct BattlePokemon *chosenTarget = NULL; - PARAMETRIZE { chosenMove = MOVE_TACKLE; chosenTarget = opponentLeft; } - PARAMETRIZE { chosenMove = MOVE_TACKLE; chosenTarget = opponentRight; } + PARAMETRIZE { chosenMove = MOVE_SCRATCH; chosenTarget = opponentLeft; } + PARAMETRIZE { chosenMove = MOVE_SCRATCH; chosenTarget = opponentRight; } PARAMETRIZE { chosenMove = MOVE_POUND; chosenTarget = opponentLeft; } PARAMETRIZE { chosenMove = MOVE_POUND; chosenTarget = opponentRight; } GIVEN { PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WYNAUT) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_CELEBRATE, MOVE_SCRATCH); } + PLAYER(SPECIES_WYNAUT) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE, MOVE_SCRATCH); } OPPONENT(SPECIES_KADABRA); OPPONENT(SPECIES_ABRA); } WHEN { diff --git a/test/battle/move_effect/attack_down.c b/test/battle/move_effect/attack_down.c index eb562c0c6a..0d79d638be 100644 --- a/test/battle/move_effect/attack_down.c +++ b/test/battle/move_effect/attack_down.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Growl lowers Attack by 1 stage", s16 damage) PARAMETRIZE { lowerAttack = FALSE; } PARAMETRIZE { lowerAttack = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (lowerAttack) TURN { MOVE(player, MOVE_GROWL); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (lowerAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("The opposing Wobbuffet's Attack fell!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.5), results[0].damage); diff --git a/test/battle/move_effect/attack_down_2.c b/test/battle/move_effect/attack_down_2.c index 896bbf947c..c396d4974e 100644 --- a/test/battle/move_effect/attack_down_2.c +++ b/test/battle/move_effect/attack_down_2.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Charm lowers Attack by 2 stages", s16 damage) PARAMETRIZE { lowerAttack = FALSE; } PARAMETRIZE { lowerAttack = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (lowerAttack) TURN { MOVE(player, MOVE_CHARM); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (lowerAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_CHARM, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("The opposing Wobbuffet's Attack harshly fell!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[1].damage, Q_4_12(2.0), results[0].damage); diff --git a/test/battle/move_effect/attack_spatk_up.c b/test/battle/move_effect/attack_spatk_up.c index 671ed667a6..bf8c5d4a2e 100644 --- a/test/battle/move_effect/attack_spatk_up.c +++ b/test/battle/move_effect/attack_spatk_up.c @@ -11,12 +11,12 @@ SINGLE_BATTLE_TEST("Work Up raises Attack and Sp. Attack by 1 stage each", s16 d { bool32 raiseStats; u32 move; - PARAMETRIZE { raiseStats = FALSE; move = MOVE_TACKLE; } - PARAMETRIZE { raiseStats = TRUE; move = MOVE_TACKLE; } + PARAMETRIZE { raiseStats = FALSE; move = MOVE_SCRATCH; } + PARAMETRIZE { raiseStats = TRUE; move = MOVE_SCRATCH; } PARAMETRIZE { raiseStats = FALSE; move = MOVE_SWIFT; } PARAMETRIZE { raiseStats = TRUE; move = MOVE_SWIFT; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_SWIFT) == DAMAGE_CATEGORY_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/move_effect/attack_up.c b/test/battle/move_effect/attack_up.c index 1865c7f30e..f458a8e7ad 100644 --- a/test/battle/move_effect/attack_up.c +++ b/test/battle/move_effect/attack_up.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Meditate raises Attack by 1 stage", s16 damage) PARAMETRIZE { raiseAttack = FALSE; } PARAMETRIZE { raiseAttack = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (raiseAttack) TURN { MOVE(player, MOVE_MEDITATE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (raiseAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_MEDITATE, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Attack rose!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); diff --git a/test/battle/move_effect/attack_up_2.c b/test/battle/move_effect/attack_up_2.c index fd247fad01..2eacc8aea4 100644 --- a/test/battle/move_effect/attack_up_2.c +++ b/test/battle/move_effect/attack_up_2.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Swords Dance raises Attack by 2 stages", s16 damage) PARAMETRIZE { raiseAttack = FALSE; } PARAMETRIZE { raiseAttack = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (raiseAttack) TURN { MOVE(player, MOVE_SWORDS_DANCE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (raiseAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Attack sharply rose!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); diff --git a/test/battle/move_effect/attack_up_user_ally.c b/test/battle/move_effect/attack_up_user_ally.c index 8f9c4a3388..ed3fedb261 100644 --- a/test/battle/move_effect/attack_up_user_ally.c +++ b/test/battle/move_effect/attack_up_user_ally.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Howl raises user's Attack by 1 stage", s16 damage) PARAMETRIZE { raiseAttack = FALSE; } PARAMETRIZE { raiseAttack = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (raiseAttack) TURN { MOVE(player, MOVE_HOWL); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (raiseAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_HOWL, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Attack rose!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); @@ -37,15 +37,15 @@ DOUBLE_BATTLE_TEST("Howl raises user's and partner's Attack by 1 stage", s16 dam PARAMETRIZE { raiseAttack = FALSE; } PARAMETRIZE { raiseAttack = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET) { Speed(15); } PLAYER(SPECIES_WYNAUT) { Speed(10); } OPPONENT(SPECIES_WOBBUFFET) { Speed(13); } OPPONENT(SPECIES_WYNAUT) { Speed(12); } } WHEN { if (raiseAttack) TURN { MOVE(playerLeft, MOVE_HOWL); } - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); } - TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); } + TURN { MOVE(playerRight, MOVE_SCRATCH, target: opponentRight); } } SCENE { if (raiseAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_HOWL, playerLeft); @@ -54,9 +54,9 @@ DOUBLE_BATTLE_TEST("Howl raises user's and partner's Attack by 1 stage", s16 dam ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); MESSAGE("Wynaut's Attack rose!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(opponentLeft, captureDamage: &results[i].damageLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); HP_BAR(opponentRight, captureDamage: &results[i].damageRight); } FINALLY { EXPECT_MUL_EQ(results[0].damageLeft, Q_4_12(1.5), results[1].damageLeft); @@ -69,16 +69,16 @@ DOUBLE_BATTLE_TEST("Howl does not work on partner if it has Soundproof") s16 damage[2]; GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET) { Speed(15); } PLAYER(SPECIES_VOLTORB) { Speed(10); Ability(ABILITY_SOUNDPROOF); } OPPONENT(SPECIES_WOBBUFFET) { Speed(5); } OPPONENT(SPECIES_WYNAUT) { Speed(1); } } WHEN { - TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } - TURN { MOVE(playerLeft, MOVE_HOWL); MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_HOWL); MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); HP_BAR(opponentLeft, captureDamage: &damage[0]); ANIMATION(ANIM_TYPE_MOVE, MOVE_HOWL, playerLeft); @@ -90,7 +90,7 @@ DOUBLE_BATTLE_TEST("Howl does not work on partner if it has Soundproof") } ABILITY_POPUP(playerRight, ABILITY_SOUNDPROOF); MESSAGE("Voltorb's Soundproof blocks Howl!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); HP_BAR(opponentLeft, captureDamage: &damage[1]); } THEN { EXPECT_EQ(damage[0], damage[1]); diff --git a/test/battle/move_effect/beak_blast.c b/test/battle/move_effect/beak_blast.c index 92557ddee3..75796de13a 100644 --- a/test/battle/move_effect/beak_blast.c +++ b/test/battle/move_effect/beak_blast.c @@ -37,13 +37,13 @@ DOUBLE_BATTLE_TEST("Beak Blast burns all who make contact with the pokemon") { GIVEN { ASSUME(GetMovePriority(MOVE_BEAK_BLAST) < 0); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_WYNAUT) { Speed(10); } PLAYER(SPECIES_WOBBUFFET) { Speed(5); } OPPONENT(SPECIES_WOBBUFFET) { Speed(3); } OPPONENT(SPECIES_WOBBUFFET) { Speed(2); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); MOVE(playerLeft, MOVE_BEAK_BLAST, target: opponentLeft); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); MOVE(playerLeft, MOVE_BEAK_BLAST, target: opponentLeft); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_BEAK_BLAST_SETUP, playerLeft); MESSAGE("Wynaut started heating up its beak!"); @@ -51,15 +51,15 @@ DOUBLE_BATTLE_TEST("Beak Blast burns all who make contact with the pokemon") MESSAGE("Wobbuffet used Celebrate!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight); - MESSAGE("The opposing Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + MESSAGE("The opposing Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); HP_BAR(playerLeft); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentLeft); MESSAGE("The opposing Wobbuffet was burned!"); STATUS_ICON(opponentLeft, burn: TRUE); - MESSAGE("The opposing Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + MESSAGE("The opposing Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); HP_BAR(playerLeft); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentRight); MESSAGE("The opposing Wobbuffet was burned!"); @@ -75,12 +75,12 @@ SINGLE_BATTLE_TEST("Beak Blast burns only when contact moves are used") { u32 move; bool32 burn; - PARAMETRIZE { move = MOVE_TACKLE; burn = TRUE; } + PARAMETRIZE { move = MOVE_SCRATCH; burn = TRUE; } PARAMETRIZE { move = MOVE_WATER_GUN; burn = FALSE; } PARAMETRIZE { move = MOVE_LEER; burn = FALSE; } GIVEN { - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(!MoveMakesContact(MOVE_WATER_GUN)); ASSUME(!MoveMakesContact(MOVE_LEER)); PLAYER(SPECIES_WOBBUFFET); diff --git a/test/battle/move_effect/belch.c b/test/battle/move_effect/belch.c index 1abcefb353..38a41ae2c7 100644 --- a/test/battle/move_effect/belch.c +++ b/test/battle/move_effect/belch.c @@ -15,11 +15,11 @@ AI_SINGLE_BATTLE_TEST("AI: Belch has nonzero score after eating a berry") { GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_BAYLEEF) { Level(18); Moves(MOVE_MUD_SHOT, MOVE_TACKLE); } - OPPONENT(SPECIES_PIKACHU) { Level(15); Item(ITEM_SHUCA_BERRY); Moves(MOVE_BELCH, MOVE_TACKLE); } + PLAYER(SPECIES_BAYLEEF) { Level(18); Moves(MOVE_MUD_SHOT, MOVE_SCRATCH); } + OPPONENT(SPECIES_PIKACHU) { Level(15); Item(ITEM_SHUCA_BERRY); Moves(MOVE_BELCH, MOVE_SCRATCH); } } WHEN { - TURN { MOVE(player, MOVE_MUD_SHOT); EXPECT_MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_BELCH);} + TURN { MOVE(player, MOVE_MUD_SHOT); EXPECT_MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_BELCH);} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_BELCH, opponent); } diff --git a/test/battle/move_effect/belly_drum.c b/test/battle/move_effect/belly_drum.c index e36689ac34..1580487cca 100644 --- a/test/battle/move_effect/belly_drum.c +++ b/test/battle/move_effect/belly_drum.c @@ -25,19 +25,19 @@ SINGLE_BATTLE_TEST("Belly Drum maximizes the user's Attack stat", s16 damage) PARAMETRIZE { raiseAttack = FALSE; } PARAMETRIZE { raiseAttack = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (raiseAttack) TURN { MOVE(player, MOVE_BELLY_DRUM); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (raiseAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_BELLY_DRUM, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet cut its own HP and maximized its Attack!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(4), results[1].damage); @@ -111,19 +111,19 @@ SINGLE_BATTLE_TEST("Belly Drum minimizes the user's Attack stat with Contrary", PARAMETRIZE { raiseAttack = FALSE; } PARAMETRIZE { raiseAttack = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_CONTRARY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (raiseAttack) TURN { MOVE(player, MOVE_BELLY_DRUM); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (raiseAttack) { ANIMATION(ANIM_TYPE_MOVE, MOVE_BELLY_DRUM, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet cut its own HP and maximized its Attack!"); // Message unaffected by Contrary } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[1].damage, Q_4_12(4), results[0].damage); diff --git a/test/battle/move_effect/bide.c b/test/battle/move_effect/bide.c index 177b139d08..d5c543cc09 100644 --- a/test/battle/move_effect/bide.c +++ b/test/battle/move_effect/bide.c @@ -15,15 +15,15 @@ SINGLE_BATTLE_TEST("Bide deals twice the taken damage over two turns") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_BIDE); MOVE(opponent, MOVE_TACKLE); } - TURN { SKIP_TURN(player); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_BIDE); MOVE(opponent, MOVE_SCRATCH); } + TURN { SKIP_TURN(player); MOVE(opponent, MOVE_SCRATCH); } TURN { SKIP_TURN(player); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_BIDE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage1); MESSAGE("Wobbuffet is storing energy!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage2); MESSAGE("Wobbuffet unleashed its energy!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_BIDE, player); diff --git a/test/battle/move_effect/charge.c b/test/battle/move_effect/charge.c index 8d4bbd9bcc..b97b1d0719 100644 --- a/test/battle/move_effect/charge.c +++ b/test/battle/move_effect/charge.c @@ -37,13 +37,13 @@ SINGLE_BATTLE_TEST("Charge's effect is kept until the user uses an Electric move } WHEN { TURN { MOVE(player, MOVE_THUNDERBOLT); } TURN { MOVE(player, MOVE_CHARGE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_THUNDERBOLT); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDERBOLT, player); HP_BAR(opponent, captureDamage: &damage[0]); ANIMATION(ANIM_TYPE_MOVE, MOVE_CHARGE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDERBOLT, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { @@ -106,20 +106,20 @@ SINGLE_BATTLE_TEST("Charge's effect is removed regardless if the next move is El { s16 damage[2]; GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) != TYPE_ELECTRIC); - ASSUME(!IsBattleMoveStatus(MOVE_TACKLE)); + ASSUME(GetMoveType(MOVE_SCRATCH) != TYPE_ELECTRIC); + ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH)); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_THUNDERBOLT); } TURN { MOVE(player, MOVE_CHARGE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_THUNDERBOLT); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDERBOLT, player); HP_BAR(opponent, captureDamage: &damage[0]); ANIMATION(ANIM_TYPE_MOVE, MOVE_CHARGE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDERBOLT, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { diff --git a/test/battle/move_effect/coaching.c b/test/battle/move_effect/coaching.c index 812063579d..7245f8854b 100644 --- a/test/battle/move_effect/coaching.c +++ b/test/battle/move_effect/coaching.c @@ -103,10 +103,10 @@ DOUBLE_BATTLE_TEST("Coaching fails if there's no ally") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: playerRight); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: playerRight); } TURN { MOVE(playerLeft, MOVE_COACHING, target: playerRight); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); MESSAGE("Wynaut fainted!"); MESSAGE("Wobbuffet used Coaching!"); NONE_OF { diff --git a/test/battle/move_effect/defense_curl.c b/test/battle/move_effect/defense_curl.c index c8beffe171..28495193d0 100644 --- a/test/battle/move_effect/defense_curl.c +++ b/test/battle/move_effect/defense_curl.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Defense Curl raises Defense by 1 stage", s16 damage) PARAMETRIZE { raiseDefense = FALSE; } PARAMETRIZE { raiseDefense = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (raiseDefense) TURN { MOVE(player, MOVE_DEFENSE_CURL); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (raiseDefense) { ANIMATION(ANIM_TYPE_MOVE, MOVE_DEFENSE_CURL, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Defense rose!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.5), results[0].damage); diff --git a/test/battle/move_effect/defense_down.c b/test/battle/move_effect/defense_down.c index 9691b4a1c2..b3b355934d 100644 --- a/test/battle/move_effect/defense_down.c +++ b/test/battle/move_effect/defense_down.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Tail Whip lowers Defense by 1 stage", s16 damage) PARAMETRIZE { lowerDefense = FALSE; } PARAMETRIZE { lowerDefense = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (lowerDefense) TURN { MOVE(player, MOVE_TAIL_WHIP); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (lowerDefense) { ANIMATION(ANIM_TYPE_MOVE, MOVE_TAIL_WHIP, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("The opposing Wobbuffet's Defense fell!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); diff --git a/test/battle/move_effect/defense_down_2.c b/test/battle/move_effect/defense_down_2.c index 961e2de02f..99efc08f54 100644 --- a/test/battle/move_effect/defense_down_2.c +++ b/test/battle/move_effect/defense_down_2.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Screech lowers Defense by 2 stages", s16 damage) PARAMETRIZE { lowerDefense = FALSE; } PARAMETRIZE { lowerDefense = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (lowerDefense) TURN { MOVE(player, MOVE_SCREECH); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (lowerDefense) { ANIMATION(ANIM_TYPE_MOVE, MOVE_SCREECH, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("The opposing Wobbuffet's Defense harshly fell!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); diff --git a/test/battle/move_effect/defense_up.c b/test/battle/move_effect/defense_up.c index c83f2c01c5..2a028d1d63 100644 --- a/test/battle/move_effect/defense_up.c +++ b/test/battle/move_effect/defense_up.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Harden raises Defense by 1 stage", s16 damage) PARAMETRIZE { raiseDefense = FALSE; } PARAMETRIZE { raiseDefense = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (raiseDefense) TURN { MOVE(player, MOVE_HARDEN); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (raiseDefense) { ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Defense rose!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[1].damage, Q_4_12(1.5), results[0].damage); diff --git a/test/battle/move_effect/defense_up_2.c b/test/battle/move_effect/defense_up_2.c index 59ca5c1af9..9cc509e2a4 100644 --- a/test/battle/move_effect/defense_up_2.c +++ b/test/battle/move_effect/defense_up_2.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Iron Defense raises Defense by 2 stages", s16 damage) PARAMETRIZE { raiseDefense = FALSE; } PARAMETRIZE { raiseDefense = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (raiseDefense) TURN { MOVE(player, MOVE_IRON_DEFENSE); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (raiseDefense) { ANIMATION(ANIM_TYPE_MOVE, MOVE_IRON_DEFENSE, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Defense sharply rose!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[1].damage, Q_4_12(2.0), results[0].damage); diff --git a/test/battle/move_effect/defense_up_3.c b/test/battle/move_effect/defense_up_3.c index 040537c1d4..879fefde0b 100644 --- a/test/battle/move_effect/defense_up_3.c +++ b/test/battle/move_effect/defense_up_3.c @@ -12,19 +12,19 @@ SINGLE_BATTLE_TEST("Cotton Guard raises Defense by 3 stages", s16 damage) PARAMETRIZE { raiseDefense = FALSE; } PARAMETRIZE { raiseDefense = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (raiseDefense) TURN { MOVE(player, MOVE_COTTON_GUARD); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (raiseDefense) { ANIMATION(ANIM_TYPE_MOVE, MOVE_COTTON_GUARD, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Defense drastically rose!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[1].damage, Q_4_12(2.5), results[0].damage); diff --git a/test/battle/move_effect/defog.c b/test/battle/move_effect/defog.c index 3d0a46806c..6f9acc7dfc 100644 --- a/test/battle/move_effect/defog.c +++ b/test/battle/move_effect/defog.c @@ -15,7 +15,7 @@ ASSUMPTIONS ASSUME(GetMoveEffect(MOVE_STICKY_WEB) == EFFECT_STICKY_WEB); ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC); ASSUME(GetMoveEffect(MOVE_SCREECH) == EFFECT_DEFENSE_DOWN_2); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_GUST) == DAMAGE_CATEGORY_SPECIAL); } @@ -66,7 +66,7 @@ DOUBLE_BATTLE_TEST("Defog removes Reflect and Light Screen from target's side", } WHEN { TURN { MOVE(opponentLeft, MOVE_REFLECT); MOVE(opponentRight, MOVE_LIGHT_SCREEN); } TURN { MOVE(playerLeft, move, target: opponentLeft); } - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); MOVE(playerRight, MOVE_GUST, target: opponentRight); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); MOVE(playerRight, MOVE_GUST, target: opponentRight); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT, opponentLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_LIGHT_SCREEN, opponentRight); @@ -75,7 +75,7 @@ DOUBLE_BATTLE_TEST("Defog removes Reflect and Light Screen from target's side", MESSAGE("The opposing team's Reflect wore off!"); MESSAGE("The opposing team's Light Screen wore off!"); } - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); HP_BAR(opponentLeft, captureDamage: &results[i].damagePhysical); MESSAGE("Wobbuffet used Gust!"); HP_BAR(opponentRight, captureDamage: &results[i].damageSpecial); @@ -311,7 +311,7 @@ DOUBLE_BATTLE_TEST("Defog removes Aurora Veil from target's side", s16 damagePhy } WHEN { TURN { MOVE(playerLeft, MOVE_HAIL); MOVE(playerRight, MOVE_AURORA_VEIL); } TURN { MOVE(opponentLeft, move, target: playerLeft); } - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(opponentRight, MOVE_GUST, target: playerRight); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(opponentRight, MOVE_GUST, target: playerRight); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_HAIL, playerLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_AURORA_VEIL, playerRight); @@ -321,7 +321,7 @@ DOUBLE_BATTLE_TEST("Defog removes Aurora Veil from target's side", s16 damagePhy MESSAGE("Glalie's evasiveness fell!"); MESSAGE("Your team's Aurora Veil wore off!"); } - MESSAGE("The opposing Glalie used Tackle!"); + MESSAGE("The opposing Glalie used Scratch!"); HP_BAR(playerLeft, captureDamage: &results[i].damagePhysical); MESSAGE("The opposing Glalie used Gust!"); HP_BAR(playerRight, captureDamage: &results[i].damageSpecial); diff --git a/test/battle/move_effect/destiny_bond.c b/test/battle/move_effect/destiny_bond.c index ecb8b1d3ef..0713a4858a 100644 --- a/test/battle/move_effect/destiny_bond.c +++ b/test/battle/move_effect/destiny_bond.c @@ -12,10 +12,10 @@ SINGLE_BATTLE_TEST("Destiny Bond faints the opposing mon if it fainted from the PLAYER(SPECIES_WOBBUFFET) { HP(1); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_DESTINY_BOND); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_DESTINY_BOND); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DESTINY_BOND, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("Wobbuffet took its attacker down with it!"); MESSAGE("The opposing Wobbuffet fainted!"); } @@ -85,7 +85,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Destiny Bond PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_DESTINY_BOND); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(opponent, MOVE_DESTINY_BOND); MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("The opposing Wobbuffet used Destiny Bond!"); MESSAGE("Wobbuffet used Max Strike!"); diff --git a/test/battle/move_effect/dragon_cheer.c b/test/battle/move_effect/dragon_cheer.c index e2929c16d4..53125f042f 100644 --- a/test/battle/move_effect/dragon_cheer.c +++ b/test/battle/move_effect/dragon_cheer.c @@ -29,7 +29,7 @@ DOUBLE_BATTLE_TEST("Dragon Cheer increases critical hit ratio by 1 on non-Dragon PASSES_RANDOMLY(1, chance, RNG_CRITICAL_HIT); GIVEN { WITH_CONFIG(GEN_CONFIG_CRIT_CHANCE, genConfig); - ASSUME(GetMoveCriticalHitStage(MOVE_TACKLE) == 0); + ASSUME(GetMoveCriticalHitStage(MOVE_SCRATCH) == 0); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -38,14 +38,14 @@ DOUBLE_BATTLE_TEST("Dragon Cheer increases critical hit ratio by 1 on non-Dragon TURN { if (useDragonCheer) MOVE(playerLeft, MOVE_DRAGON_CHEER, target: playerRight); - MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); + MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); } } SCENE { if (useDragonCheer) { ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_CHEER, playerLeft); MESSAGE("Wobbuffet is getting pumped!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); MESSAGE("A critical hit!"); } } @@ -63,7 +63,7 @@ DOUBLE_BATTLE_TEST("Dragon Cheer increases critical hit ratio by 2 on Dragon typ PASSES_RANDOMLY(passes, trials, RNG_CRITICAL_HIT); GIVEN { WITH_CONFIG(GEN_CONFIG_CRIT_CHANCE, genConfig); - ASSUME(GetMoveCriticalHitStage(MOVE_TACKLE) == 0); + ASSUME(GetMoveCriticalHitStage(MOVE_SCRATCH) == 0); ASSUME(gSpeciesInfo[SPECIES_DRATINI].baseSpeed == 50); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_DRATINI); @@ -73,14 +73,14 @@ DOUBLE_BATTLE_TEST("Dragon Cheer increases critical hit ratio by 2 on Dragon typ TURN { if (useDragonCheer) MOVE(playerLeft, MOVE_DRAGON_CHEER, target: playerRight); - MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); + MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); } } SCENE { if (useDragonCheer) { ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_CHEER, playerLeft); MESSAGE("Dratini is getting pumped!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); MESSAGE("A critical hit!"); } } diff --git a/test/battle/move_effect/dynamax_double_dmg.c b/test/battle/move_effect/dynamax_double_dmg.c index c19ba5ecbc..d841ce925c 100644 --- a/test/battle/move_effect/dynamax_double_dmg.c +++ b/test/battle/move_effect/dynamax_double_dmg.c @@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Dynamax Cannon causes double damage to Dynamaxed Pokemon", s PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: dynamax); MOVE(opponent, MOVE_DYNAMAX_CANNON); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: dynamax); MOVE(opponent, MOVE_DYNAMAX_CANNON); } } SCENE { HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { diff --git a/test/battle/move_effect/electrify.c b/test/battle/move_effect/electrify.c index d00d342196..dbb6862fb6 100644 --- a/test/battle/move_effect/electrify.c +++ b/test/battle/move_effect/electrify.c @@ -5,14 +5,14 @@ SINGLE_BATTLE_TEST("Electrify makes the target's move Electric-type for the rema { GIVEN { ASSUME(gSpeciesInfo[SPECIES_SANDSLASH].types[0] == TYPE_GROUND || gSpeciesInfo[SPECIES_SANDSLASH].types[1] == TYPE_GROUND); - ASSUME(GetMoveType(MOVE_TACKLE) != TYPE_ELECTRIC); + ASSUME(GetMoveType(MOVE_SCRATCH) != TYPE_ELECTRIC); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SANDSLASH); } WHEN { - TURN { MOVE(opponent, MOVE_ELECTRIFY); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_ELECTRIFY); MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIFY, opponent); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); } } @@ -20,18 +20,18 @@ DOUBLE_BATTLE_TEST("Electrify makes the target's move Electric-type for the rema { GIVEN { ASSUME(gSpeciesInfo[SPECIES_SANDSLASH].types[0] == TYPE_GROUND || gSpeciesInfo[SPECIES_SANDSLASH].types[1] == TYPE_GROUND); - ASSUME(GetMoveType(MOVE_TACKLE) != TYPE_ELECTRIC); + ASSUME(GetMoveType(MOVE_SCRATCH) != TYPE_ELECTRIC); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_SANDSLASH); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_ELECTRIFY, target: playerLeft); MOVE(playerLeft, MOVE_TACKLE, target:opponentLeft); MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); MOVE(opponentRight, MOVE_CELEBRATE); } + TURN { MOVE(opponentLeft, MOVE_ELECTRIFY, target: playerLeft); MOVE(playerLeft, MOVE_SCRATCH, target:opponentLeft); MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); MOVE(opponentRight, MOVE_CELEBRATE); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIFY, opponentLeft); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerRight); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); } } diff --git a/test/battle/move_effect/encore.c b/test/battle/move_effect/encore.c index 2d1863da6b..e2a08f7d75 100644 --- a/test/battle/move_effect/encore.c +++ b/test/battle/move_effect/encore.c @@ -93,7 +93,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Encore") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_ENCORE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_ENCORE); } TURN { MOVE(player, MOVE_EMBER); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); @@ -112,7 +112,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be encored immediately after TURN { MOVE(player, MOVE_ARM_THRUST, gimmick: GIMMICK_DYNAMAX); } TURN { MOVE(player, MOVE_ARM_THRUST); } TURN { MOVE(player, MOVE_ARM_THRUST); } - TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet used Max Knuckle!"); MESSAGE("Wobbuffet used Max Knuckle!"); diff --git a/test/battle/move_effect/focus_energy.c b/test/battle/move_effect/focus_energy.c index 227f6b4604..8ecb3ccb47 100644 --- a/test/battle/move_effect/focus_energy.c +++ b/test/battle/move_effect/focus_energy.c @@ -31,11 +31,11 @@ SINGLE_BATTLE_TEST("Focus Energy increases the user's critical hit ratio by 1 st } WHEN { if (useFocusEnergy) TURN { MOVE(player, MOVE_FOCUS_ENERGY); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (useFocusEnergy) ANIMATION(ANIM_TYPE_MOVE, MOVE_FOCUS_ENERGY, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); MESSAGE("A critical hit!"); } } diff --git a/test/battle/move_effect/focus_punch.c b/test/battle/move_effect/focus_punch.c index 55854ee80e..a499a1867f 100644 --- a/test/battle/move_effect/focus_punch.c +++ b/test/battle/move_effect/focus_punch.c @@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Focus Punch activates only if not damaged") { u32 move; bool32 activate; - PARAMETRIZE { move = MOVE_TACKLE; activate = FALSE; } + PARAMETRIZE { move = MOVE_SCRATCH; activate = FALSE; } PARAMETRIZE { move = MOVE_WATER_GUN; activate = FALSE; } PARAMETRIZE { move = MOVE_LEER; activate = TRUE; } diff --git a/test/battle/move_effect/follow_me.c b/test/battle/move_effect/follow_me.c index f24629f141..89591b8c6e 100644 --- a/test/battle/move_effect/follow_me.c +++ b/test/battle/move_effect/follow_me.c @@ -19,17 +19,17 @@ DOUBLE_BATTLE_TEST("Follow Me redirects single target moves used by opponents to OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: moveUser); - MOVE(playerRight, MOVE_TACKLE, target: partner); + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: moveUser); + MOVE(playerRight, MOVE_SCRATCH, target: partner); MOVE(moveUser, MOVE_FOLLOW_ME); - MOVE(partner, MOVE_TACKLE, target: playerLeft); } + MOVE(partner, MOVE_SCRATCH, target: playerLeft); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_FOLLOW_ME, moveUser); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(moveUser); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); HP_BAR(moveUser); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, partner); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, partner); HP_BAR(playerLeft); } } @@ -47,22 +47,22 @@ DOUBLE_BATTLE_TEST("Spotlight redirects single target moves used by the opposing OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { MOVE(playerLeft, MOVE_SPOTLIGHT, target: moveTarget); - MOVE(playerRight, MOVE_TACKLE, target: opponentRight); - MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); - MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } + MOVE(playerRight, MOVE_SCRATCH, target: opponentRight); + MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); + MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SPOTLIGHT, playerLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); if (moveTarget != playerRight) HP_BAR(moveTarget); else HP_BAR(opponentRight); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); if (moveTarget == playerRight) HP_BAR(moveTarget); else HP_BAR(playerLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); if (moveTarget == playerRight) HP_BAR(moveTarget); else diff --git a/test/battle/move_effect/glaive_rush.c b/test/battle/move_effect/glaive_rush.c index bb5bb7aaf6..faf1f96664 100644 --- a/test/battle/move_effect/glaive_rush.c +++ b/test/battle/move_effect/glaive_rush.c @@ -31,14 +31,14 @@ SINGLE_BATTLE_TEST("If Glaive Rush is successful, moves targeted at the user dea PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_GLAIVE_RUSH); MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_GLAIVE_RUSH); MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &glaiveRushEffectedDmg); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &normalDmg); } THEN { EXPECT_MUL_EQ(normalDmg, Q_4_12(2.0), glaiveRushEffectedDmg); @@ -54,13 +54,13 @@ SINGLE_BATTLE_TEST("If Glaive Rush is successful, moves targeted at the user dea PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_GLAIVE_RUSH); } - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_CELEBRATE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_GLAIVE_RUSH); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_CELEBRATE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &normalDmg); ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &glaiveRushEffectedDmg); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); } THEN { @@ -79,13 +79,13 @@ SINGLE_BATTLE_TEST("If Glaive Rush isn't successful moves targeted at the user d PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BRIGHT_POWDER); } } WHEN { - TURN { MOVE(player, MOVE_GLAIVE_RUSH, hit: missesGlaiveRush); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_GLAIVE_RUSH, hit: missesGlaiveRush); MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (!missesGlaiveRush) NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); else ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); @@ -103,13 +103,13 @@ SINGLE_BATTLE_TEST("Glaive Rush doesn't affect the user if the effect is blocked PLAYER(SPECIES_WOBBUFFET); OPPONENT(species) { Attack(50); } } WHEN { - TURN { MOVE(player, MOVE_GLAIVE_RUSH); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_GLAIVE_RUSH); MOVE(opponent, MOVE_SCRATCH); } } SCENE { if (species == SPECIES_CLEFAIRY) NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); else ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); @@ -125,17 +125,17 @@ SINGLE_BATTLE_TEST("Glaive Rush status last until the the user's next turn") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_GLAIVE_RUSH); MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_GLAIVE_RUSH); MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &normalDmgFristHit); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &normalDmgSecondHit); } THEN { EXPECT_EQ(normalDmgFristHit, normalDmgSecondHit); diff --git a/test/battle/move_effect/haze.c b/test/battle/move_effect/haze.c index 3d0602bb73..81a30d5796 100644 --- a/test/battle/move_effect/haze.c +++ b/test/battle/move_effect/haze.c @@ -13,18 +13,18 @@ SINGLE_BATTLE_TEST("Haze resets stat changes", s16 damage) PARAMETRIZE { haze = TRUE; } GIVEN { ASSUME(GetMoveEffect(MOVE_MEDITATE) == EFFECT_ATTACK_UP); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (haze) TURN { MOVE(player, MOVE_MEDITATE); MOVE(opponent, MOVE_HAZE); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { if (haze) { ANIMATION(ANIM_TYPE_MOVE, MOVE_HAZE, opponent); MESSAGE("All stat changes were eliminated!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_EQ(results[0].damage, results[1].damage); diff --git a/test/battle/move_effect/instruct.c b/test/battle/move_effect/instruct.c index e61540b9c5..e79439d336 100644 --- a/test/battle/move_effect/instruct.c +++ b/test/battle/move_effect/instruct.c @@ -10,14 +10,14 @@ DOUBLE_BATTLE_TEST("Instruct fails if target hasn't made a move") { GIVEN { PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_CELEBRATE); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); } } SCENE { NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); } } @@ -26,7 +26,7 @@ DOUBLE_BATTLE_TEST("Instruct fails if move is banned by Instruct") GIVEN { ASSUME(IsMoveInstructBanned(MOVE_BIDE)); PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_BIDE); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_BIDE); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -41,17 +41,17 @@ DOUBLE_BATTLE_TEST("Instruct-called move targets the target of the move picked o { GIVEN { PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_FAKE_OUT); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_FAKE_OUT); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); } + TURN { MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); HP_BAR(opponentLeft); NOT HP_BAR(opponentRight); ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); HP_BAR(opponentLeft); NOT HP_BAR(opponentRight); } @@ -62,17 +62,17 @@ DOUBLE_BATTLE_TEST("Instruct doesn't bypass sleep") GIVEN { ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_GROWL); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_GROWL); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); MOVE(opponentLeft, MOVE_SPORE, target: playerRight); MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); } + TURN { MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); MOVE(opponentLeft, MOVE_SPORE, target: playerRight); MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); ANIMATION(ANIM_TYPE_MOVE, MOVE_SPORE, opponentLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerLeft); MESSAGE("Wobbuffet is fast asleep."); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); } } @@ -81,7 +81,7 @@ DOUBLE_BATTLE_TEST("Instruct fails if target doesn't know the last move it used" GIVEN { ASSUME(IsDanceMove(MOVE_DRAGON_DANCE)); PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_ORICORIO) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_CELEBRATE); } + PLAYER(SPECIES_ORICORIO) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -102,7 +102,7 @@ DOUBLE_BATTLE_TEST("Instruct-called move fails if it can only be used on the fir GIVEN { ASSUME(GetMoveEffect(MOVE_FAKE_OUT) == EFFECT_FIRST_TURN_ONLY); PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_FAKE_OUT); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_FAKE_OUT); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -121,16 +121,16 @@ DOUBLE_BATTLE_TEST("Instruct-called move doesn't fail if tormented") GIVEN { ASSUME(GetMoveEffect(MOVE_TORMENT) == EFFECT_TORMENT); PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_FAKE_OUT); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_FAKE_OUT); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_TORMENT, target: playerRight); MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); } + TURN { MOVE(opponentLeft, MOVE_TORMENT, target: playerRight); MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TORMENT, opponentLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); } } @@ -140,11 +140,11 @@ DOUBLE_BATTLE_TEST("Instruct-called status moves don't fail if holding Assault V ASSUME(gItemsInfo[ITEM_ASSAULT_VEST].holdEffect == HOLD_EFFECT_ASSAULT_VEST); ASSUME(GetMoveEffect(MOVE_TRICK) == EFFECT_TRICK); PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_TRICK); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_TRICK); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ASSAULT_VEST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerRight, MOVE_TRICK, target: opponentLeft); MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); } + TURN { MOVE(playerRight, MOVE_TRICK, target: opponentLeft); MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK, playerRight); ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerLeft); @@ -157,7 +157,7 @@ DOUBLE_BATTLE_TEST("Instruct-called status move fails if taunted") GIVEN { ASSUME(GetMoveEffect(MOVE_TAUNT) == EFFECT_TAUNT); PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_GROWL); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_GROWL); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -183,18 +183,18 @@ DOUBLE_BATTLE_TEST("Instruct-called moves fail if disabled") GIVEN { ASSUME(GetMoveEffect(MOVE_DISABLE) == EFFECT_DISABLE); PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_GROWL); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_GROWL); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); MOVE(opponentLeft, MOVE_DISABLE, target: playerRight); MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); } + TURN { MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); MOVE(opponentLeft, MOVE_DISABLE, target: playerRight); MOVE(playerLeft, MOVE_INSTRUCT, target: playerRight); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); ANIMATION(ANIM_TYPE_MOVE, MOVE_DISABLE, opponentLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerLeft); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); } THEN { - EXPECT_EQ(playerRight->pp[0], GetMovePP(MOVE_TACKLE) - 1); + EXPECT_EQ(playerRight->pp[0], GetMovePP(MOVE_SCRATCH) - 1); } } @@ -204,7 +204,7 @@ DOUBLE_BATTLE_TEST("Instruct-called moves keep their priority") ASSUME(GetMovePriority(MOVE_QUICK_ATTACK) == 1); ASSUME(GetMoveEffect(MOVE_PSYCHIC_TERRAIN) == EFFECT_PSYCHIC_TERRAIN); PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH, MOVE_QUICK_ATTACK); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_QUICK_ATTACK); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -229,17 +229,17 @@ DOUBLE_BATTLE_TEST("Instructed move will be redirected and absorbed by Lightning OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { - MOVE(playerLeft, MOVE_TACKLE, target: moveTarget); + MOVE(playerLeft, MOVE_SCRATCH, target: moveTarget); MOVE(opponentLeft, MOVE_PLASMA_FISTS, target: playerLeft); MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); MOVE(opponentRight, MOVE_CELEBRATE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, opponentLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerRight); ABILITY_POPUP(opponentLeft, ABILITY_LIGHTNING_ROD); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); } } @@ -257,18 +257,18 @@ DOUBLE_BATTLE_TEST("Instructed move will be redirected by Follow Me after instru OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { - MOVE(playerLeft, MOVE_TACKLE, target: moveTarget); + MOVE(playerLeft, MOVE_SCRATCH, target: moveTarget); MOVE(opponentLeft, MOVE_FOLLOW_ME); MOVE(opponentRight, MOVE_SKILL_SWAP, target: playerLeft); MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_FOLLOW_ME, opponentLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(moveTarget); ANIMATION(ANIM_TYPE_MOVE, MOVE_SKILL_SWAP, opponentRight); ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerRight); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(opponentLeft); } } @@ -288,19 +288,19 @@ DOUBLE_BATTLE_TEST("Instructed move will be redirected by Rage Powder after inst OPPONENT(SPECIES_WYNAUT); } WHEN { TURN { - MOVE(playerLeft, MOVE_TACKLE, target: moveTarget); + MOVE(playerLeft, MOVE_SCRATCH, target: moveTarget); MOVE(opponentLeft, MOVE_RAGE_POWDER); MOVE(opponentRight, MOVE_SOAK, target: playerLeft); MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_POWDER, opponentLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(moveTarget); ANIMATION(ANIM_TYPE_MOVE, MOVE_SOAK, opponentRight); MESSAGE("Treecko transformed into the Water type!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_INSTRUCT, playerRight); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(opponentLeft); } } diff --git a/test/battle/move_effect/ion_deluge.c b/test/battle/move_effect/ion_deluge.c index 8147048527..b806f9d8e1 100644 --- a/test/battle/move_effect/ion_deluge.c +++ b/test/battle/move_effect/ion_deluge.c @@ -51,15 +51,15 @@ WILD_BATTLE_TEST("Ion Deluge works the same way as always when used by a mon wit SINGLE_BATTLE_TEST("Ion Deluge makes Normal type moves Electric type") { GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_GOLBAT); } WHEN { - TURN { MOVE(opponent, MOVE_ION_DELUGE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_ION_DELUGE); MOVE(player, MOVE_SCRATCH); } } SCENE { MESSAGE("The opposing Golbat used Ion Deluge!"); MESSAGE("A deluge of ions showers the battlefield!"); - MESSAGE("Wobbuffet used Tackle!"); - MESSAGE("It's super effective!"); // Because Tackle is now electric type. + MESSAGE("Wobbuffet used Scratch!"); + MESSAGE("It's super effective!"); // Because Scratch is now electric type. } } diff --git a/test/battle/move_effect/laser_focus.c b/test/battle/move_effect/laser_focus.c index 17922d3231..410e56fdfa 100644 --- a/test/battle/move_effect/laser_focus.c +++ b/test/battle/move_effect/laser_focus.c @@ -14,10 +14,10 @@ SINGLE_BATTLE_TEST("Laser Focus causes the user's move used on the next turn to OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_LASER_FOCUS); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_LASER_FOCUS, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); MESSAGE("A critical hit!"); } } diff --git a/test/battle/move_effect/last_resort.c b/test/battle/move_effect/last_resort.c index 50a0a31512..c0b2380f27 100644 --- a/test/battle/move_effect/last_resort.c +++ b/test/battle/move_effect/last_resort.c @@ -26,16 +26,16 @@ SINGLE_BATTLE_TEST("Last Resort always fails if it's the only known move") SINGLE_BATTLE_TEST("Last Resort works only when all of the known moves have been used - 2 moves") { GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_LAST_RESORT, MOVE_TACKLE); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_LAST_RESORT, MOVE_SCRATCH); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_LAST_RESORT); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_LAST_RESORT); } } SCENE { MESSAGE("Wobbuffet used Last Resort!"); MESSAGE("But it failed!"); - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("Wobbuffet used Last Resort!"); HP_BAR(opponent); } @@ -44,18 +44,18 @@ SINGLE_BATTLE_TEST("Last Resort works only when all of the known moves have been SINGLE_BATTLE_TEST("Last Resort works only when all of the known moves have been used - 3 moves") { GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_LAST_RESORT, MOVE_TACKLE, MOVE_SCRATCH); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_LAST_RESORT, MOVE_QUICK_ATTACK, MOVE_SCRATCH); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_LAST_RESORT); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_QUICK_ATTACK); } TURN { MOVE(player, MOVE_LAST_RESORT); } TURN { MOVE(player, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_LAST_RESORT); } } SCENE { MESSAGE("Wobbuffet used Last Resort!"); MESSAGE("But it failed!"); - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Quick Attack!"); MESSAGE("Wobbuffet used Last Resort!"); MESSAGE("But it failed!"); MESSAGE("Wobbuffet used Scratch!"); @@ -67,11 +67,11 @@ SINGLE_BATTLE_TEST("Last Resort works only when all of the known moves have been SINGLE_BATTLE_TEST("Last Resort works only when all of the known moves have been used - 4 moves") { GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_LAST_RESORT, MOVE_TACKLE, MOVE_SCRATCH, MOVE_GUST); } + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_LAST_RESORT, MOVE_QUICK_ATTACK, MOVE_SCRATCH, MOVE_GUST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_LAST_RESORT); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_QUICK_ATTACK); } TURN { MOVE(player, MOVE_LAST_RESORT); } TURN { MOVE(player, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_LAST_RESORT); } @@ -80,7 +80,7 @@ SINGLE_BATTLE_TEST("Last Resort works only when all of the known moves have been } SCENE { MESSAGE("Wobbuffet used Last Resort!"); MESSAGE("But it failed!"); - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Quick Attack!"); MESSAGE("Wobbuffet used Last Resort!"); MESSAGE("But it failed!"); MESSAGE("Wobbuffet used Scratch!"); diff --git a/test/battle/move_effect/lucky_chant.c b/test/battle/move_effect/lucky_chant.c index e492d604b6..30257b05ef 100644 --- a/test/battle/move_effect/lucky_chant.c +++ b/test/battle/move_effect/lucky_chant.c @@ -8,9 +8,9 @@ SINGLE_BATTLE_TEST("Lucky Chant prevents critical hits on the user's side") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_LUCKY_CHANT); MOVE(player, MOVE_TACKLE, criticalHit: TRUE); } + TURN { MOVE(opponent, MOVE_LUCKY_CHANT); MOVE(player, MOVE_SCRATCH, criticalHit: TRUE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); NOT MESSAGE("A critical hit!"); } } diff --git a/test/battle/move_effect/mirror_move.c b/test/battle/move_effect/mirror_move.c index cc148eb97c..2df8c91fba 100644 --- a/test/battle/move_effect/mirror_move.c +++ b/test/battle/move_effect/mirror_move.c @@ -12,13 +12,13 @@ SINGLE_BATTLE_TEST("Mirror Move copies the last used move by the target") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_MIRROR_MOVE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_MIRROR_MOVE); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); MESSAGE("Wobbuffet used Mirror Move!"); - MESSAGE("Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + MESSAGE("Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); HP_BAR(opponent); } } @@ -29,11 +29,11 @@ SINGLE_BATTLE_TEST("Mirror Move fails if no move was used before") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_MIRROR_MOVE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_MIRROR_MOVE); MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet used Mirror Move!"); MESSAGE("The Mirror Move failed!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); } } diff --git a/test/battle/move_effect/powder.c b/test/battle/move_effect/powder.c index aa789fb05f..aca96693de 100644 --- a/test/battle/move_effect/powder.c +++ b/test/battle/move_effect/powder.c @@ -263,13 +263,13 @@ SINGLE_BATTLE_TEST("Powder doesn't consume Berry from Fire type Natural Gift but DOUBLE_BATTLE_TEST("Powder damages a target using Shell Trap even if it wasn't hit by a Physical move") { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_EMBER; } PARAMETRIZE { move = MOVE_TICKLE;} GIVEN { ASSUME(GetMoveEffect(MOVE_SHELL_TRAP) == EFFECT_SHELL_TRAP); ASSUME(GetMoveType(MOVE_SHELL_TRAP) == TYPE_FIRE); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_EMBER) == DAMAGE_CATEGORY_SPECIAL); ASSUME(GetMoveCategory(MOVE_TICKLE) == DAMAGE_CATEGORY_STATUS); ASSUME(GetMoveEffect(MOVE_TICKLE) == EFFECT_TICKLE); diff --git a/test/battle/move_effect/protect.c b/test/battle/move_effect/protect.c index b0cd3e424a..e0c32e5267 100644 --- a/test/battle/move_effect/protect.c +++ b/test/battle/move_effect/protect.c @@ -13,8 +13,8 @@ ASSUMPTIONS ASSUME(GetMoveEffect(MOVE_CRAFTY_SHIELD) == EFFECT_PROTECT); ASSUME(GetMoveEffect(MOVE_BANEFUL_BUNKER) == EFFECT_PROTECT); ASSUME(GetMoveEffect(MOVE_BURNING_BULWARK) == EFFECT_PROTECT); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(GetMoveCategory(MOVE_LEER) == DAMAGE_CATEGORY_STATUS); ASSUME(GetMoveCategory(MOVE_WATER_GUN) == DAMAGE_CATEGORY_SPECIAL); ASSUME(!(MoveMakesContact(MOVE_WATER_GUN))); @@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Protect: Protect, Detect, Spiky Shield, Baneful Bunker and B for (j = 0; j < ARRAY_COUNT(protectMoves); j++) { - PARAMETRIZE { protectMove = protectMoves[j]; usedMove = MOVE_TACKLE; } + PARAMETRIZE { protectMove = protectMoves[j]; usedMove = MOVE_SCRATCH; } PARAMETRIZE { protectMove = protectMoves[j]; usedMove = MOVE_LEER; } PARAMETRIZE { protectMove = protectMoves[j]; usedMove = MOVE_WATER_GUN; } } @@ -74,7 +74,7 @@ SINGLE_BATTLE_TEST("Protect: King's Shield, Silk Trap and Obstruct protect from for (j = 0; j < ARRAY_COUNT(protectMoves); j++) { - PARAMETRIZE { usedMove = MOVE_TACKLE; protectMove = protectMoves[j][0]; statId = protectMoves[j][1]; lowersBy = protectMoves[j][2]; } + PARAMETRIZE { usedMove = MOVE_SCRATCH; protectMove = protectMoves[j][0]; statId = protectMoves[j][1]; lowersBy = protectMoves[j][2]; } PARAMETRIZE { usedMove = MOVE_LEER; protectMove = protectMoves[j][0]; statId = 0; lowersBy = 0; } PARAMETRIZE { usedMove = MOVE_WATER_GUN; protectMove = protectMoves[j][0]; statId = 0; lowersBy = 0; } } @@ -95,7 +95,7 @@ SINGLE_BATTLE_TEST("Protect: King's Shield, Silk Trap and Obstruct protect from } else { NOT ANIMATION(ANIM_TYPE_MOVE, usedMove, player); MESSAGE("The opposing Wobbuffet protected itself!"); - if (usedMove == MOVE_TACKLE) { + if (usedMove == MOVE_SCRATCH) { NOT HP_BAR(opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); if (statId == STAT_ATK) { @@ -119,7 +119,7 @@ SINGLE_BATTLE_TEST("Protect: King's Shield, Silk Trap and Obstruct protect from } } } THEN { - if (usedMove == MOVE_TACKLE) { + if (usedMove == MOVE_SCRATCH) { EXPECT_EQ(player->statStages[statId], DEFAULT_STAT_STAGE - lowersBy); } } @@ -130,8 +130,8 @@ SINGLE_BATTLE_TEST("Protect: Spiky Shield does 1/8 dmg of max hp of attackers ma u16 usedMove = MOVE_NONE; u16 hp = 400, maxHp = 400; - PARAMETRIZE { usedMove = MOVE_TACKLE; hp = 1; } - PARAMETRIZE { usedMove = MOVE_TACKLE; } + PARAMETRIZE { usedMove = MOVE_SCRATCH; hp = 1; } + PARAMETRIZE { usedMove = MOVE_SCRATCH; } PARAMETRIZE { usedMove = MOVE_LEER; } PARAMETRIZE { usedMove = MOVE_WATER_GUN; } @@ -152,7 +152,7 @@ SINGLE_BATTLE_TEST("Protect: Spiky Shield does 1/8 dmg of max hp of attackers ma NOT ANIMATION(ANIM_TYPE_MOVE, usedMove, player); MESSAGE("The opposing Wobbuffet protected itself!"); NOT HP_BAR(opponent); - if (usedMove == MOVE_TACKLE) { + if (usedMove == MOVE_SCRATCH) { HP_BAR(player, maxHp / 8); if (hp == 1) { MESSAGE("Wobbuffet fainted!"); @@ -166,7 +166,7 @@ SINGLE_BATTLE_TEST("Protect: Baneful Bunker poisons pokemon for moves making con { u16 usedMove = MOVE_NONE; - PARAMETRIZE {usedMove = MOVE_TACKLE; } + PARAMETRIZE {usedMove = MOVE_SCRATCH; } PARAMETRIZE {usedMove = MOVE_LEER; } PARAMETRIZE {usedMove = MOVE_WATER_GUN; } @@ -182,7 +182,7 @@ SINGLE_BATTLE_TEST("Protect: Baneful Bunker poisons pokemon for moves making con MESSAGE("The opposing Wobbuffet protected itself!"); NOT ANIMATION(ANIM_TYPE_MOVE, usedMove, player); MESSAGE("The opposing Wobbuffet protected itself!"); - if (usedMove == MOVE_TACKLE) { + if (usedMove == MOVE_SCRATCH) { NOT HP_BAR(opponent); STATUS_ICON(player, STATUS1_POISON); } else { @@ -198,7 +198,7 @@ SINGLE_BATTLE_TEST("Protect: Burning Bulwark burns pokemon for moves making cont { u16 usedMove = MOVE_NONE; - PARAMETRIZE {usedMove = MOVE_TACKLE; } + PARAMETRIZE {usedMove = MOVE_SCRATCH; } PARAMETRIZE {usedMove = MOVE_LEER; } PARAMETRIZE {usedMove = MOVE_WATER_GUN; } @@ -214,7 +214,7 @@ SINGLE_BATTLE_TEST("Protect: Burning Bulwark burns pokemon for moves making cont MESSAGE("The opposing Wobbuffet protected itself!"); NOT ANIMATION(ANIM_TYPE_MOVE, usedMove, player); MESSAGE("The opposing Wobbuffet protected itself!"); - if (usedMove == MOVE_TACKLE) { + if (usedMove == MOVE_SCRATCH) { NOT HP_BAR(opponent); STATUS_ICON(player, STATUS1_BURN); } else { @@ -251,13 +251,13 @@ SINGLE_BATTLE_TEST("Protect: Recoil damage is not applied if target was protecte PLAYER(SPECIES_RAPIDASH); OPPONENT(SPECIES_BEAUTIFLY); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_SCRATCH); } TURN { MOVE(opponent, protectMove); MOVE(player, recoilMove); } TURN {} } SCENE { // 1st turn - MESSAGE("The opposing Beautifly used Tackle!"); - MESSAGE("Rapidash used Tackle!"); + MESSAGE("The opposing Beautifly used Scratch!"); + MESSAGE("Rapidash used Scratch!"); // 2nd turn ANIMATION(ANIM_TYPE_MOVE, protectMove, opponent); MESSAGE("The opposing Beautifly protected itself!"); @@ -320,12 +320,12 @@ DOUBLE_BATTLE_TEST("Protect: Wide Guard protects self and ally from multi-target { u16 move = MOVE_NONE; - PARAMETRIZE { move = MOVE_TACKLE; } // Single target + PARAMETRIZE { move = MOVE_SCRATCH; } // Single target PARAMETRIZE { move = MOVE_SURF; } // All targets PARAMETRIZE { move = MOVE_HYPER_VOICE; } // 2 foes GIVEN { - ASSUME(GetMoveTarget(MOVE_TACKLE) == MOVE_TARGET_SELECTED); + ASSUME(GetMoveTarget(MOVE_SCRATCH) == MOVE_TARGET_SELECTED); ASSUME(GetMoveTarget(MOVE_SURF) == MOVE_TARGET_FOES_AND_ALLY); ASSUME(GetMoveTarget(MOVE_HYPER_VOICE) == MOVE_TARGET_BOTH); PLAYER(SPECIES_WOBBUFFET); @@ -338,9 +338,9 @@ DOUBLE_BATTLE_TEST("Protect: Wide Guard protects self and ally from multi-target } SCENE { MESSAGE("The opposing Wobbuffet used Wide Guard!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_WIDE_GUARD, opponentLeft); - if (move == MOVE_TACKLE) { - MESSAGE("Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + if (move == MOVE_SCRATCH) { + MESSAGE("Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(opponentLeft); } else if (move == MOVE_HYPER_VOICE) { NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, playerLeft); @@ -391,13 +391,13 @@ DOUBLE_BATTLE_TEST("Protect: Quick Guard protects self and ally from priority mo u16 move = MOVE_NONE; struct BattlePokemon *targetOpponent = NULL; - PARAMETRIZE { move = MOVE_TACKLE; targetOpponent = opponentLeft; } - PARAMETRIZE { move = MOVE_TACKLE; targetOpponent = opponentRight; } + PARAMETRIZE { move = MOVE_SCRATCH; targetOpponent = opponentLeft; } + PARAMETRIZE { move = MOVE_SCRATCH; targetOpponent = opponentRight; } PARAMETRIZE { move = MOVE_QUICK_ATTACK; targetOpponent = opponentLeft; } PARAMETRIZE { move = MOVE_QUICK_ATTACK; targetOpponent = opponentRight; } GIVEN { - ASSUME(GetMovePriority(MOVE_TACKLE) == 0); + ASSUME(GetMovePriority(MOVE_SCRATCH) == 0); ASSUME(GetMovePriority(MOVE_QUICK_ATTACK) == 1); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); @@ -409,9 +409,9 @@ DOUBLE_BATTLE_TEST("Protect: Quick Guard protects self and ally from priority mo } SCENE { MESSAGE("The opposing Wobbuffet used Quick Guard!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_GUARD, opponentLeft); - if (move == MOVE_TACKLE) { - MESSAGE("Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + if (move == MOVE_SCRATCH) { + MESSAGE("Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerLeft); HP_BAR(targetOpponent); } else if (move == MOVE_QUICK_ATTACK) { NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, playerLeft); @@ -453,8 +453,8 @@ DOUBLE_BATTLE_TEST("Protect: Crafty Shield protects self and ally from status mo PARAMETRIZE { move = MOVE_HYPER_VOICE; } PARAMETRIZE { move = MOVE_LEER; } - PARAMETRIZE { move = MOVE_TACKLE; targetOpponent = opponentLeft; } - PARAMETRIZE { move = MOVE_TACKLE; targetOpponent = opponentRight; } + PARAMETRIZE { move = MOVE_SCRATCH; targetOpponent = opponentLeft; } + PARAMETRIZE { move = MOVE_SCRATCH; targetOpponent = opponentRight; } GIVEN { ASSUME(GetMoveTarget(MOVE_LEER) == MOVE_TARGET_BOTH); @@ -465,7 +465,7 @@ DOUBLE_BATTLE_TEST("Protect: Crafty Shield protects self and ally from status mo OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_CRAFTY_SHIELD); (move == MOVE_TACKLE) ? MOVE(playerLeft, move, target:targetOpponent) : MOVE(playerLeft, move); } + TURN { MOVE(opponentLeft, MOVE_CRAFTY_SHIELD); (move == MOVE_SCRATCH) ? MOVE(playerLeft, move, target:targetOpponent) : MOVE(playerLeft, move); } TURN {} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_CRAFTY_SHIELD, opponentLeft); @@ -577,8 +577,8 @@ SINGLE_BATTLE_TEST("Protect: Quick Guard, Wide Guard and Crafty Shield don't red PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, move); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, move); } } SCENE { HP_BAR(opponent, captureDamage: &dmg[0]); HP_BAR(opponent, captureDamage: &dmg[1]); @@ -602,14 +602,14 @@ SINGLE_BATTLE_TEST("Protect: Quick Guard, Wide Guard and Crafty Shield don't red PARAMETRIZE { protected = FALSE; move = MOVE_CRAFTY_SHIELD; } GIVEN { - ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL); + ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (protected) - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); MOVE(opponent, move); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_Z_MOVE); MOVE(opponent, move); } else - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_Z_MOVE); } } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { diff --git a/test/battle/move_effect/pursuit.c b/test/battle/move_effect/pursuit.c index ea64813e68..3b48fa4ded 100644 --- a/test/battle/move_effect/pursuit.c +++ b/test/battle/move_effect/pursuit.c @@ -556,7 +556,7 @@ SINGLE_BATTLE_TEST("Pursuit becomes a locked move after being used on switch-out { GIVEN { ASSUME(gItemsInfo[ITEM_CHOICE_BAND].holdEffect == HOLD_EFFECT_CHOICE_BAND); - PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_CHOICE_BAND); MovesWithPP({MOVE_PURSUIT, 1}, {MOVE_CELEBRATE, 10}, {MOVE_WATER_GUN, 10}, {MOVE_TACKLE, 10}); } + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_CHOICE_BAND); MovesWithPP({MOVE_PURSUIT, 1}, {MOVE_CELEBRATE, 10}, {MOVE_WATER_GUN, 10}, {MOVE_SCRATCH, 10}); } OPPONENT(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/move_effect/rage_fist.c b/test/battle/move_effect/rage_fist.c index eb00a3c1b7..e803a05a9d 100644 --- a/test/battle/move_effect/rage_fist.c +++ b/test/battle/move_effect/rage_fist.c @@ -17,13 +17,13 @@ SINGLE_BATTLE_TEST("Rage Fist base power is increased by 50 if the user takes da OPPONENT(SPECIES_REGIROCK); } WHEN { for (turns = 0; turns < 2; turns++) { - TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_SCRATCH); } } } SCENE { for (turns = 0; turns < 2; turns++) { ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); HP_BAR(opponent, captureDamage: ×GotHit[turns]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); } } THEN { @@ -99,9 +99,9 @@ DOUBLE_BATTLE_TEST("Rage Fist maximum base power is 350") if (turns == 1) MOVE(playerLeft, MOVE_RAGE_FIST, target: opponentLeft); - MOVE(playerRight, MOVE_TACKLE, target: playerLeft); - MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); - MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + MOVE(playerRight, MOVE_SCRATCH, target: playerLeft); + MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); + MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); } } TURN { MOVE(playerLeft, MOVE_RAGE_FIST, target: opponentLeft); } @@ -111,11 +111,11 @@ DOUBLE_BATTLE_TEST("Rage Fist maximum base power is 350") ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, playerLeft); HP_BAR(opponentLeft, captureDamage: ×GotHit[0]); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, playerRight); HP_BAR(playerLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); HP_BAR(playerLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); HP_BAR(playerLeft); } ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, playerLeft); @@ -160,15 +160,15 @@ SINGLE_BATTLE_TEST("Rage Fist base power is not lost if user switches out") PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_REGIROCK); } WHEN { - TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_TACKLE); } - TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_SCRATCH); } + TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); } TURN { SWITCH(player, 0); } TURN { MOVE(player, MOVE_RAGE_FIST); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); HP_BAR(opponent, captureDamage: ×GotHit[0]); SWITCH_OUT_MESSAGE("Wobbuffet"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); SWITCH_OUT_MESSAGE("Wynaut"); ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); HP_BAR(opponent, captureDamage: ×GotHit[1]); @@ -210,14 +210,14 @@ SINGLE_BATTLE_TEST("Rage Fist base power is increased by 50 even if a damaging m OPPONENT(SPECIES_REGIROCK); } WHEN { TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_FALSE_SWIPE); } - TURN { MOVE(player, MOVE_ENDURE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_ENDURE); MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_RAGE_FIST); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); HP_BAR(opponent, captureDamage: ×GotHit[0]); ANIMATION(ANIM_TYPE_MOVE, MOVE_FALSE_SWIPE, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_ENDURE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); HP_BAR(opponent, captureDamage: ×GotHit[1]); } THEN { @@ -235,13 +235,13 @@ SINGLE_BATTLE_TEST("Rage Fist base power is not increased if move had no affect" OPPONENT(SPECIES_REGIROCK); } WHEN { for (turns = 0; turns < 2; turns++) { - TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_SCRATCH); } } } SCENE { for (turns = 0; turns < 2; turns++) { ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); HP_BAR(opponent, captureDamage: ×GotHit[turns]); - MESSAGE("The opposing Regirock used Tackle!"); + MESSAGE("The opposing Regirock used Scratch!"); MESSAGE("It doesn't affect Gastly…"); } } THEN { @@ -331,7 +331,7 @@ SINGLE_BATTLE_TEST("Rage Fist doesn't get increased power if Substitute is hit") OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_RAGE_FIST); MOVE(player, MOVE_CELEBRATE); } - TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_SCRATCH); } TURN { MOVE(opponent, MOVE_RAGE_FIST); MOVE(player, MOVE_CELEBRATE); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, opponent); diff --git a/test/battle/move_effect/reflect.c b/test/battle/move_effect/reflect.c index 83ac3b8503..a41de04fb0 100644 --- a/test/battle/move_effect/reflect.c +++ b/test/battle/move_effect/reflect.c @@ -12,14 +12,14 @@ SINGLE_BATTLE_TEST("Reflect reduces physical damage", s16 damage) PARAMETRIZE { move = MOVE_CELEBRATE; } PARAMETRIZE { move = MOVE_REFLECT; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, move); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, move); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_LT(results[1].damage, results[0].damage); @@ -30,29 +30,29 @@ SINGLE_BATTLE_TEST("Reflect applies for 5 turns") { s16 damage[6]; GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_REFLECT); MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_REFLECT); MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage[0]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage[1]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage[2]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage[3]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage[4]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage[5]); } THEN { EXPECT_MUL_EQ(damage[0], Q_4_12(1.0), damage[1]); diff --git a/test/battle/move_effect/reflect_type.c b/test/battle/move_effect/reflect_type.c index f3093ea4e3..ae2b7cc3fe 100644 --- a/test/battle/move_effect/reflect_type.c +++ b/test/battle/move_effect/reflect_type.c @@ -207,7 +207,7 @@ SINGLE_BATTLE_TEST("Reflect Type succeeds against a Terastallized target and cop PLAYER(SPECIES_ARCANINE) { TeraType(TYPE_NORMAL); } OPPONENT(SPECIES_POLIWRATH); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_REFLECT_TYPE); } + TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_REFLECT_TYPE); } } SCENE { MESSAGE("The opposing Poliwrath used Reflect Type!"); } THEN { diff --git a/test/battle/move_effect/retaliate.c b/test/battle/move_effect/retaliate.c index 39c26d196c..34843da04e 100644 --- a/test/battle/move_effect/retaliate.c +++ b/test/battle/move_effect/retaliate.c @@ -14,7 +14,7 @@ SINGLE_BATTLE_TEST("Retaliate doubles in base power the turn after an ally faint PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } TURN { MOVE(player, MOVE_RETALIATE); } TURN { MOVE(player, MOVE_RETALIATE); } } SCENE { @@ -33,7 +33,7 @@ SINGLE_BATTLE_TEST("Retaliate doubles in base power the turn after an ally faint OPPONENT(SPECIES_WYNAUT) { HP(1); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); SEND_OUT(opponent, 1); } TURN { MOVE(opponent, MOVE_RETALIATE); } TURN { MOVE(opponent, MOVE_RETALIATE); } } SCENE { diff --git a/test/battle/move_effect/revelation_dance.c b/test/battle/move_effect/revelation_dance.c index 3730ecc0b2..96106e1923 100644 --- a/test/battle/move_effect/revelation_dance.c +++ b/test/battle/move_effect/revelation_dance.c @@ -124,7 +124,7 @@ SINGLE_BATTLE_TEST("Revelation Dance becomes Normal type if used by a Typeless P PLAYER(SPECIES_ORICORIO_BAILE) { Ability(ABILITY_DANCER); } OPPONENT(speciesOpponent); } WHEN { - TURN { MOVE(player, MOVE_BURN_UP); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_BURN_UP); MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(player, MOVE_ROOST); MOVE(opponent, MOVE_REVELATION_DANCE); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_BURN_UP, player); diff --git a/test/battle/move_effect/revival_blessing.c b/test/battle/move_effect/revival_blessing.c index 10198ce352..f1a0ad74bc 100644 --- a/test/battle/move_effect/revival_blessing.c +++ b/test/battle/move_effect/revival_blessing.c @@ -87,10 +87,10 @@ DOUBLE_BATTLE_TEST("Revival Blessing doesn't prevent revived battlers from losin OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT) { HP(1); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentRight); MOVE(opponentLeft, MOVE_REVIVAL_BLESSING, partyIndex: 1); } } SCENE { - MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Scratch!"); MESSAGE("The opposing Wynaut fainted!"); MESSAGE("The opposing Wobbuffet used Revival Blessing!"); MESSAGE("Wynaut was revived and is ready to fight again!"); diff --git a/test/battle/move_effect/shed_tail.c b/test/battle/move_effect/shed_tail.c index f4498c7e34..4ce05c3f8c 100644 --- a/test/battle/move_effect/shed_tail.c +++ b/test/battle/move_effect/shed_tail.c @@ -93,13 +93,13 @@ AI_SINGLE_BATTLE_TEST("AI will use Shed Tail to pivot to another mon while in da PARAMETRIZE { aiFlags = AI_FLAG_SMART_SWITCHING | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_MON_CHOICES; } GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiFlags); - PLAYER(SPECIES_WOBBUFFET) { Speed(100); Ability(ABILITY_RUN_AWAY); Moves(MOVE_TACKLE, MOVE_CELEBRATE); } + PLAYER(SPECIES_WOBBUFFET) { Speed(100); Ability(ABILITY_RUN_AWAY); Moves(MOVE_SCRATCH, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET) { Speed(50); Ability(ABILITY_RUN_AWAY); Moves(MOVE_CONFUSION, MOVE_SHED_TAIL); } OPPONENT(SPECIES_SCIZOR) { Speed(101); Moves(MOVE_CELEBRATE, MOVE_X_SCISSOR); } } WHEN { if (aiFlags == 0) - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_CONFUSION); } - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_SHED_TAIL); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_CONFUSION); } + TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_SHED_TAIL); } } } diff --git a/test/battle/move_effect/shell_trap.c b/test/battle/move_effect/shell_trap.c index f121d1444d..435c79a652 100644 --- a/test/battle/move_effect/shell_trap.c +++ b/test/battle/move_effect/shell_trap.c @@ -4,7 +4,7 @@ ASSUMPTIONS { ASSUME(GetMoveEffect(MOVE_SHELL_TRAP) == EFFECT_SHELL_TRAP); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_WATER_GUN) == DAMAGE_CATEGORY_SPECIAL); ASSUME(GetMoveCategory(MOVE_LEER) == DAMAGE_CATEGORY_STATUS); } @@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Shell Trap activates only if hit by a physical move") { u32 move; bool32 activate; - PARAMETRIZE { move = MOVE_TACKLE; activate = TRUE; } + PARAMETRIZE { move = MOVE_SCRATCH; activate = TRUE; } PARAMETRIZE { move = MOVE_WATER_GUN; activate = FALSE; } PARAMETRIZE { move = MOVE_LEER; activate = FALSE; } @@ -46,7 +46,7 @@ SINGLE_BATTLE_TEST("Shell Trap does not activate if attacker's Sheer Force appli { u32 move; bool32 activate; - PARAMETRIZE { move = MOVE_TACKLE; activate = TRUE; } + PARAMETRIZE { move = MOVE_SCRATCH; activate = TRUE; } PARAMETRIZE { move = MOVE_STOMP; activate = FALSE; } GIVEN { @@ -80,11 +80,11 @@ SINGLE_BATTLE_TEST("Shell Trap does not activate if battler faints before being PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_SHELL_TRAP); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + TURN { MOVE(player, MOVE_SHELL_TRAP); MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, player); MESSAGE("Wobbuffet set a shell trap!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("Wobbuffet fainted!"); SEND_IN_MESSAGE("Wobbuffet"); NONE_OF { @@ -104,12 +104,12 @@ DOUBLE_BATTLE_TEST("Shell Trap activates immediately after being hit on turn 1 a OPPONENT(SPECIES_WOBBUFFET) { Speed(5); } OPPONENT(SPECIES_WYNAUT) { Speed(1); } } WHEN { - TURN { MOVE(playerLeft, MOVE_SHELL_TRAP); MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } + TURN { MOVE(playerLeft, MOVE_SHELL_TRAP); MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, playerLeft); MESSAGE("Wobbuffet set a shell trap!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + MESSAGE("The opposing Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); MESSAGE("Wobbuffet used Shell Trap!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, playerLeft); HP_BAR(opponentLeft); @@ -128,13 +128,13 @@ DOUBLE_BATTLE_TEST("Shell Trap activates immediately after being hit on turn 2 a OPPONENT(SPECIES_WOBBUFFET) { Speed(5); } OPPONENT(SPECIES_WYNAUT) { Speed(6); } } WHEN { - TURN { MOVE(playerLeft, MOVE_SHELL_TRAP); MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } + TURN { MOVE(playerLeft, MOVE_SHELL_TRAP); MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, playerLeft); MESSAGE("Wobbuffet set a shell trap!"); MESSAGE("The opposing Wynaut used Celebrate!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + MESSAGE("The opposing Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); MESSAGE("Wobbuffet used Shell Trap!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, playerLeft); HP_BAR(opponentLeft); @@ -152,14 +152,14 @@ DOUBLE_BATTLE_TEST("Shell Trap activates immediately after being hit on turn 3 a OPPONENT(SPECIES_WOBBUFFET) { Speed(5); } OPPONENT(SPECIES_WYNAUT) { Speed(6); } } WHEN { - TURN { MOVE(playerLeft, MOVE_SHELL_TRAP); MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } + TURN { MOVE(playerLeft, MOVE_SHELL_TRAP); MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, playerLeft); MESSAGE("Wobbuffet set a shell trap!"); MESSAGE("Wobbuffet used Celebrate!"); MESSAGE("The opposing Wynaut used Celebrate!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + MESSAGE("The opposing Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); MESSAGE("Wobbuffet used Shell Trap!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, playerLeft); HP_BAR(opponentLeft); @@ -177,23 +177,23 @@ DOUBLE_BATTLE_TEST("Shell Trap targets correctly if one of the opponents has fai OPPONENT(SPECIES_SCIZOR) { Speed(100); } } WHEN { TURN { - MOVE(opponentLeft, MOVE_TACKLE, target: playerRight); + MOVE(opponentLeft, MOVE_SCRATCH, target: playerRight); MOVE(playerRight, MOVE_SHELL_TRAP); } TURN { - MOVE(opponentLeft, MOVE_TACKLE, target: playerRight); + MOVE(opponentLeft, MOVE_SCRATCH, target: playerRight); MOVE(playerRight, MOVE_SHELL_TRAP); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, playerRight); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, playerRight); MESSAGE("The opposing Scizor fainted!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentRight); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerLeft); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SHELL_TRAP_SETUP, playerRight); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, playerRight); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerLeft); } diff --git a/test/battle/move_effect/sleep_talk.c b/test/battle/move_effect/sleep_talk.c index fd246f47aa..1f53530c46 100644 --- a/test/battle/move_effect/sleep_talk.c +++ b/test/battle/move_effect/sleep_talk.c @@ -16,7 +16,7 @@ SINGLE_BATTLE_TEST("Sleep Talk fails if not asleep") PARAMETRIZE { status = STATUS1_NONE; } GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Status1(status); Moves(MOVE_SLEEP_TALK, MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH); } + PLAYER(SPECIES_WOBBUFFET) { Status1(status); Moves(MOVE_SLEEP_TALK, MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SLEEP_TALK); } @@ -36,7 +36,7 @@ SINGLE_BATTLE_TEST("Sleep Talk works if user has Comatose") { GIVEN { - PLAYER(SPECIES_KOMALA) { Moves(MOVE_SLEEP_TALK, MOVE_TACKLE, MOVE_POUND, MOVE_SCRATCH); } + PLAYER(SPECIES_KOMALA) { Moves(MOVE_SLEEP_TALK, MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SLEEP_TALK); } @@ -62,21 +62,21 @@ SINGLE_BATTLE_TEST("Sleep Talk fails if no moves work") SINGLE_BATTLE_TEST("Sleep Talk can still use moves with no PP") { GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); MovesWithPP({MOVE_SLEEP_TALK, 10}, {MOVE_TACKLE, 0}, {MOVE_FLY, 10}, {MOVE_DIG, 10}); } + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); MovesWithPP({MOVE_SLEEP_TALK, 10}, {MOVE_SCRATCH, 0}, {MOVE_FLY, 10}, {MOVE_DIG, 10}); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SLEEP_TALK); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SLEEP_TALK, player); NOT MESSAGE("But it failed!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH); } } SINGLE_BATTLE_TEST("Sleep Talk can use moves while choiced into Sleep Talk") { GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_CHOICE_BAND); Status1(STATUS1_SLEEP); Moves(MOVE_SLEEP_TALK, MOVE_TACKLE, MOVE_FLY, MOVE_DIG); } + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_CHOICE_BAND); Status1(STATUS1_SLEEP); Moves(MOVE_SLEEP_TALK, MOVE_SCRATCH, MOVE_FLY, MOVE_DIG); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SLEEP_TALK); } @@ -84,10 +84,10 @@ SINGLE_BATTLE_TEST("Sleep Talk can use moves while choiced into Sleep Talk") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SLEEP_TALK, player); NOT MESSAGE("But it failed!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH); ANIMATION(ANIM_TYPE_MOVE, MOVE_SLEEP_TALK, player); NOT MESSAGE("But it failed!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH); } } @@ -96,7 +96,7 @@ SINGLE_BATTLE_TEST("Sleep Talk fails if user is taunted") GIVEN { ASSUME(GetMoveEffect(MOVE_TAUNT) == EFFECT_TAUNT); ASSUME(GetMoveCategory(MOVE_SLEEP_TALK) == DAMAGE_CATEGORY_STATUS); - PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); Moves(MOVE_SLEEP_TALK, MOVE_TACKLE, MOVE_FLY, MOVE_DIG); } + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); Moves(MOVE_SLEEP_TALK, MOVE_SCRATCH, MOVE_FLY, MOVE_DIG); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_TAUNT); MOVE(player, MOVE_SLEEP_TALK); } @@ -104,7 +104,7 @@ SINGLE_BATTLE_TEST("Sleep Talk fails if user is taunted") ANIMATION(ANIM_TYPE_MOVE, MOVE_TAUNT, opponent); NONE_OF { ANIMATION(ANIM_TYPE_MOVE, MOVE_SLEEP_TALK, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); } } } diff --git a/test/battle/move_effect/speed_swap.c b/test/battle/move_effect/speed_swap.c index 0a87b26236..b5f9aaebaf 100644 --- a/test/battle/move_effect/speed_swap.c +++ b/test/battle/move_effect/speed_swap.c @@ -12,15 +12,15 @@ SINGLE_BATTLE_TEST("Speed Swap swaps user and target's speed stats") PLAYER(SPECIES_WOBBUFFET) { Speed(6); } OPPONENT(SPECIES_WOBBUFFET) { Speed(10); } }WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_SPEED_SWAP); } - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_SPEED_SWAP); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_SCRATCH); } } SCENE { // Turn 1 - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_SPEED_SWAP, player); // Turn 2 - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } THEN { EXPECT_EQ(player->speed, 10); EXPECT_EQ(opponent->speed, 6); @@ -39,14 +39,14 @@ SINGLE_BATTLE_TEST("Speed Swap doesn't swap user and target's speed modifiers") OPPONENT(species) { Speed(10); Ability(ability); } }WHEN { TURN { MOVE(opponent, move); MOVE(player, MOVE_SPEED_SWAP); } - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_SCRATCH); } } SCENE { // Turn 1 ANIMATION(ANIM_TYPE_MOVE, move, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_SPEED_SWAP, player); // Turn 2 - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); // Opponent is still first - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); // Opponent is still first + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); } THEN { EXPECT_EQ(player->speed, 10); EXPECT_EQ(opponent->speed, 8); diff --git a/test/battle/move_effect/spicy_extract.c b/test/battle/move_effect/spicy_extract.c index b5fe1da0f1..7cf9eacb32 100644 --- a/test/battle/move_effect/spicy_extract.c +++ b/test/battle/move_effect/spicy_extract.c @@ -167,7 +167,7 @@ AI_DOUBLE_BATTLE_TEST("Spicy Extract user will use it if partner holds Clear Amu { u32 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_SWIFT;} GIVEN { @@ -175,13 +175,13 @@ AI_DOUBLE_BATTLE_TEST("Spicy Extract user will use it if partner holds Clear Amu PLAYER(SPECIES_WOBBUFFET) { Speed(10); } PLAYER(SPECIES_WOBBUFFET) { Speed(10); } OPPONENT(SPECIES_WOBBUFFET) { Speed(20); Item(ITEM_CLEAR_AMULET); Moves(move); } - OPPONENT(SPECIES_WOBBUFFET) { Speed(40); Moves(MOVE_TACKLE, MOVE_SPICY_EXTRACT); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(40); Moves(MOVE_SCRATCH, MOVE_SPICY_EXTRACT); } } WHEN { TURN { - if (move == MOVE_TACKLE) + if (move == MOVE_SCRATCH) EXPECT_MOVE(opponentRight, MOVE_SPICY_EXTRACT); else - EXPECT_MOVE(opponentRight, MOVE_TACKLE); + EXPECT_MOVE(opponentRight, MOVE_SCRATCH); } } } @@ -198,11 +198,11 @@ AI_DOUBLE_BATTLE_TEST("Spicy Extract user will not choose the move if it does no AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET) { Speed(10); } PLAYER(SPECIES_WOBBUFFET) { Speed(10); } - OPPONENT(species) { Speed(20); Ability(ability); Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_WOBBUFFET) { Speed(40); Moves(MOVE_TACKLE, MOVE_SPICY_EXTRACT); } + OPPONENT(species) { Speed(20); Ability(ability); Moves(MOVE_SCRATCH); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(40); Moves(MOVE_SCRATCH, MOVE_SPICY_EXTRACT); } } WHEN { TURN { - EXPECT_MOVE(opponentRight, MOVE_TACKLE); + EXPECT_MOVE(opponentRight, MOVE_SCRATCH); } } } diff --git a/test/battle/move_effect/stealth_rock.c b/test/battle/move_effect/stealth_rock.c index 67441367a6..ccd0ea496b 100644 --- a/test/battle/move_effect/stealth_rock.c +++ b/test/battle/move_effect/stealth_rock.c @@ -62,10 +62,10 @@ DOUBLE_BATTLE_TEST("Stealth Rock damages the correct pokemon when Eject Button i OPPONENT(SPECIES_JOLTEON); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_STEALTH_ROCK); MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); SEND_OUT(playerLeft, 2); } + TURN { MOVE(opponentLeft, MOVE_STEALTH_ROCK); MOVE(opponentRight, MOVE_SCRATCH, target: playerLeft); SEND_OUT(playerLeft, 2); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, opponentLeft); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentRight); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); SEND_IN_MESSAGE("Metapod"); HP_BAR(playerLeft); diff --git a/test/battle/move_effect/stockpile.c b/test/battle/move_effect/stockpile.c index f045fa6823..907643a1bd 100644 --- a/test/battle/move_effect/stockpile.c +++ b/test/battle/move_effect/stockpile.c @@ -148,12 +148,12 @@ SINGLE_BATTLE_TEST("Stockpile temporarily raises Def and Sp. Def", s16 dmgPyhsic PARAMETRIZE { move = MOVE_CELEBRATE; } GIVEN { ASSUME(B_STOCKPILE_RAISES_DEFS >= GEN_4); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_GUST) == DAMAGE_CATEGORY_SPECIAL); PLAYER(SPECIES_WOBBUFFET) { Speed(2); } OPPONENT(SPECIES_WOBBUFFET) { Speed(1); } } WHEN { - TURN { MOVE(player, move); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, move); MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(opponent, MOVE_GUST); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, player); @@ -164,7 +164,7 @@ SINGLE_BATTLE_TEST("Stockpile temporarily raises Def and Sp. Def", s16 dmgPyhsic MESSAGE("Wobbuffet's Sp. Def rose!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &results[i].dmgPyhsical); ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, opponent); @@ -184,14 +184,14 @@ DOUBLE_BATTLE_TEST("Stockpile's Def and Sp. Def boost is lost after using Spit U PARAMETRIZE { count = 3; move = MOVE_SPIT_UP; } GIVEN { ASSUME(B_STOCKPILE_RAISES_DEFS >= GEN_4); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_GUST) == DAMAGE_CATEGORY_SPECIAL); PLAYER(SPECIES_WOBBUFFET) { Speed(4); HP(399); MaxHP(400); } PLAYER(SPECIES_WOBBUFFET) { Speed(3); } OPPONENT(SPECIES_WOBBUFFET) { Speed(2); } OPPONENT(SPECIES_WOBBUFFET) { Speed(1); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(opponentRight, MOVE_GUST, target: playerLeft); } + TURN { MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(opponentRight, MOVE_GUST, target: playerLeft); } TURN { MOVE(playerLeft, MOVE_STOCKPILE); } if (count != 1) { TURN { MOVE(playerLeft, MOVE_STOCKPILE); } @@ -199,9 +199,9 @@ DOUBLE_BATTLE_TEST("Stockpile's Def and Sp. Def boost is lost after using Spit U TURN { MOVE(playerLeft, MOVE_STOCKPILE); } } } - TURN { MOVE(playerLeft, move, target: opponentLeft); MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(opponentRight, MOVE_GUST, target: playerLeft); } + TURN { MOVE(playerLeft, move, target: opponentLeft); MOVE(opponentLeft, MOVE_SCRATCH, target: playerLeft); MOVE(opponentRight, MOVE_GUST, target: playerLeft); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); HP_BAR(playerLeft, captureDamage: &results[i].dmgPyhsicalBefore); ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, opponentRight); HP_BAR(playerLeft, captureDamage: &results[i].dmgSpecialBefore); @@ -237,7 +237,7 @@ DOUBLE_BATTLE_TEST("Stockpile's Def and Sp. Def boost is lost after using Spit U } MESSAGE("Wobbuffet's stockpiled effect wore off!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponentLeft); HP_BAR(playerLeft, captureDamage: &results[i].dmgPhysicalAfter); ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, opponentRight); HP_BAR(playerLeft, captureDamage: &results[i].dmgSpecialAfter); diff --git a/test/battle/move_effect/sucker_punch.c b/test/battle/move_effect/sucker_punch.c index 8076725467..40ba135b6a 100644 --- a/test/battle/move_effect/sucker_punch.c +++ b/test/battle/move_effect/sucker_punch.c @@ -4,15 +4,15 @@ SINGLE_BATTLE_TEST("Sucker Punch hits targets that are about to attack") { GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) != DAMAGE_CATEGORY_STATUS); + ASSUME(GetMoveCategory(MOVE_SCRATCH) != DAMAGE_CATEGORY_STATUS); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_SUCKER_PUNCH); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SUCKER_PUNCH); MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SUCKER_PUNCH, player); HP_BAR(opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); } } diff --git a/test/battle/move_effect/tidy_up.c b/test/battle/move_effect/tidy_up.c index 9c934ab213..842c186ab0 100644 --- a/test/battle/move_effect/tidy_up.c +++ b/test/battle/move_effect/tidy_up.c @@ -79,7 +79,7 @@ AI_SINGLE_BATTLE_TEST("AI prefers to keep its substitute over removing hazards i GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET) { Speed(50); Status1(STATUS1_PARALYSIS); Moves(MOVE_SLEEP_POWDER, MOVE_STEALTH_ROCK, MOVE_CELEBRATE); } - OPPONENT(SPECIES_WOBBUFFET) { Speed(100); Moves(MOVE_BITE, MOVE_TACKLE, MOVE_SUBSTITUTE, MOVE_TIDY_UP); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); Moves(MOVE_BITE, MOVE_SCRATCH, MOVE_SUBSTITUTE, MOVE_TIDY_UP); } } WHEN { TURN { MOVE(player, MOVE_STEALTH_ROCK); EXPECT_MOVE(opponent, MOVE_TIDY_UP); } TURN { MOVE(player, MOVE_STEALTH_ROCK); EXPECT_MOVE(opponent, MOVE_SUBSTITUTE); } @@ -92,7 +92,7 @@ AI_SINGLE_BATTLE_TEST("AI will try to remove hazards if slower then target even GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET) { Speed(100); Status1(STATUS1_BURN); Moves(MOVE_SLEEP_POWDER, MOVE_STEALTH_ROCK, MOVE_CELEBRATE); } - OPPONENT(SPECIES_WOBBUFFET) { Speed(50); Moves(MOVE_BITE, MOVE_TACKLE, MOVE_SUBSTITUTE, MOVE_TIDY_UP); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(50); Moves(MOVE_BITE, MOVE_SCRATCH, MOVE_SUBSTITUTE, MOVE_TIDY_UP); } } WHEN { TURN { MOVE(player, MOVE_STEALTH_ROCK); EXPECT_MOVE(opponent, MOVE_TIDY_UP); } TURN { MOVE(player, MOVE_STEALTH_ROCK); EXPECT_MOVE(opponent, MOVE_SUBSTITUTE); } diff --git a/test/battle/move_effect/upper_hand.c b/test/battle/move_effect/upper_hand.c index 72a80a0542..ae63fc9569 100644 --- a/test/battle/move_effect/upper_hand.c +++ b/test/battle/move_effect/upper_hand.c @@ -120,7 +120,7 @@ SINGLE_BATTLE_TEST("Upper Hand is boosted by Sheer Force") AI_SINGLE_BATTLE_TEST("AI won't use Upper Hand unless it has seen a priority move") { u16 move; - PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SCRATCH; } PARAMETRIZE { move = MOVE_QUICK_ATTACK; } GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); diff --git a/test/battle/move_effect_secondary/flinch.c b/test/battle/move_effect_secondary/flinch.c index 28b555f00f..517c87cba9 100644 --- a/test/battle/move_effect_secondary/flinch.c +++ b/test/battle/move_effect_secondary/flinch.c @@ -50,7 +50,7 @@ SINGLE_BATTLE_TEST("Protect always works when used after flinching") OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } } WHEN { TURN { MOVE(player, MOVE_PROTECT); MOVE(opponent, MOVE_HEADBUTT); } - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_HEADBUTT); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_HEADBUTT); } TURN { MOVE(player, MOVE_PROTECT); MOVE(opponent, MOVE_HEADBUTT); } } SCENE { // 1st turn @@ -61,7 +61,7 @@ SINGLE_BATTLE_TEST("Protect always works when used after flinching") ANIMATION(ANIM_TYPE_MOVE, MOVE_HEADBUTT, opponent); HP_BAR(player); MESSAGE("Wobbuffet flinched and couldn't move!"); - NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); // 3rd turn ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, player); diff --git a/test/battle/move_effect_secondary/ion_deluge.c b/test/battle/move_effect_secondary/ion_deluge.c index e5bf7c0810..99683d2a92 100644 --- a/test/battle/move_effect_secondary/ion_deluge.c +++ b/test/battle/move_effect_secondary/ion_deluge.c @@ -13,16 +13,16 @@ SINGLE_BATTLE_TEST("Ion Duldge turns normal moves into electric for the remainde PLAYER(SPECIES_KRABBY); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_ION_DELUGE); MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_ION_DELUGE); MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Krabby used Ion Deluge!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_ION_DELUGE, player); MESSAGE("A deluge of ions showers the battlefield!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("The opposing Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("It's super effective!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); NOT MESSAGE("It's super effective!"); } } @@ -33,16 +33,16 @@ SINGLE_BATTLE_TEST("Plasma Fists turns normal moves into electric for the remain PLAYER(SPECIES_KRABBY); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_TACKLE); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Krabby used Plasma Fists!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, player); MESSAGE("A deluge of ions showers the battlefield!"); - MESSAGE("The opposing Wobbuffet used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("The opposing Wobbuffet used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("It's super effective!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); NOT MESSAGE("It's super effective!"); } } @@ -54,15 +54,15 @@ SINGLE_BATTLE_TEST("Plasma Fists does not set up Ion Deluge if it does not conne PLAYER(SPECIES_KRABBY); OPPONENT(SPECIES_PHANPY); } WHEN { - TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Krabby used Plasma Fists!"); NONE_OF { ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, player); MESSAGE("A deluge of ions showers the battlefield!"); } - MESSAGE("The opposing Phanpy used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("The opposing Phanpy used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); NOT MESSAGE("It's super effective!"); } } @@ -73,13 +73,13 @@ SINGLE_BATTLE_TEST("Plasma Fists type-changing effect does not override Pixilate PLAYER(SPECIES_KRABBY) { Speed(300); }; OPPONENT(SPECIES_SYLVEON) { Speed(1); Ability(ABILITY_PIXILATE); } } WHEN { - TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Krabby used Plasma Fists!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, player); MESSAGE("A deluge of ions showers the battlefield!"); - MESSAGE("The opposing Sylveon used Tackle!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("The opposing Sylveon used Scratch!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); NOT MESSAGE("It's super effective!"); } } @@ -107,7 +107,7 @@ SINGLE_BATTLE_TEST("Plasma Fists turns normal type dynamax-moves into electric t PLAYER(SPECIES_KRABBY) { Speed(100); } OPPONENT(SPECIES_WOBBUFFET) { Speed(1); } } WHEN { - TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_SCRATCH, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Krabby used Plasma Fists!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, player); diff --git a/test/battle/move_effect_secondary/syrup_bomb.c b/test/battle/move_effect_secondary/syrup_bomb.c index 9390041f6e..3bb52b6d70 100644 --- a/test/battle/move_effect_secondary/syrup_bomb.c +++ b/test/battle/move_effect_secondary/syrup_bomb.c @@ -200,14 +200,14 @@ SINGLE_BATTLE_TEST("Sticky Syrup is removed when the user faints") OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SYRUP_BOMB); - MOVE(opponent, MOVE_TACKLE); + MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); HP_BAR(opponent); MESSAGE("The opposing Wobbuffet got covered in sticky candy syrup!"); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); MESSAGE("Wobbuffet fainted!"); SEND_IN_MESSAGE("Wynaut"); diff --git a/test/battle/move_effects_combined/triple_arrows.c b/test/battle/move_effects_combined/triple_arrows.c index 3a348825b9..70414e51c4 100644 --- a/test/battle/move_effects_combined/triple_arrows.c +++ b/test/battle/move_effects_combined/triple_arrows.c @@ -88,11 +88,11 @@ SINGLE_BATTLE_TEST("Triple Arrows's flinching is prevented by Inner Focus") OPPONENT(SPECIES_RIOLU) { Ability(ABILITY_INNER_FOCUS); } } WHEN { TURN { MOVE(player, MOVE_TRIPLE_ARROWS); - MOVE(opponent, MOVE_TACKLE); + MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TRIPLE_ARROWS, player); NONE_OF { MESSAGE("The opposing Wobbuffet flinched and couldn't move!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); } } diff --git a/test/battle/move_flags/recoil.c b/test/battle/move_flags/recoil.c index 0293a07a80..8516fd1de3 100644 --- a/test/battle/move_flags/recoil.c +++ b/test/battle/move_flags/recoil.c @@ -91,9 +91,9 @@ SINGLE_BATTLE_TEST("Flare Blitz is absorbed by Flash Fire and no recoil damage i PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_VULPIX) { Ability(ABILITY_FLASH_FIRE); }; } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_FLARE_BLITZ); } + TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_FLARE_BLITZ); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player); NONE_OF { ANIMATION(ANIM_TYPE_MOVE, MOVE_FLARE_BLITZ, player); diff --git a/test/battle/sleep_clause.c b/test/battle/sleep_clause.c index 678accb585..b6c1224755 100644 --- a/test/battle/sleep_clause.c +++ b/test/battle/sleep_clause.c @@ -114,7 +114,7 @@ SINGLE_BATTLE_TEST("Sleep Clause: Rest does not activate sleep clause") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_REST); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_REST); } TURN { MOVE(player, MOVE_SPORE); SWITCH(opponent, 1); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SPORE, player); @@ -157,7 +157,7 @@ SINGLE_BATTLE_TEST("Sleep Clause: Rest can still be used when sleep clause is ac OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SPORE); } - TURN { MOVE(player, MOVE_TACKLE); SWITCH(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); SWITCH(opponent, 1); } TURN { MOVE(opponent, MOVE_REST); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SPORE, player); @@ -297,7 +297,7 @@ SINGLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% of the time with GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); @@ -305,7 +305,7 @@ SINGLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% of the time with } WHEN { TURN { MOVE(opponent, MOVE_SPORE); } TURN { SWITCH(player, 1); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN { } } SCENE { ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE); @@ -321,14 +321,14 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% of the time with GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_SPORE, target:playerRight); MOVE(playerLeft, MOVE_TACKLE, target:opponentLeft);} + TURN { MOVE(opponentLeft, MOVE_SPORE, target:playerRight); MOVE(playerLeft, MOVE_SCRATCH, target:opponentLeft);} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SPORE, opponentLeft); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, playerRight); @@ -348,13 +348,13 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep from Effect Spore will not activate slee GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN {} TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SPORE); } } SCENE { @@ -375,14 +375,14 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep from Effect Spore will not activate slee GIVEN { FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target:opponentLeft); MOVE(opponentLeft, MOVE_SPORE, target:playerRight); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target:opponentLeft); MOVE(opponentLeft, MOVE_SPORE, target:playerRight); } } SCENE { ABILITY_POPUP(opponentLeft, ABILITY_EFFECT_SPORE); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, playerLeft); @@ -961,7 +961,7 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo OPPONENT(SPECIES_ZIGZAGOON); } WHEN { TURN { MOVE(player, MOVE_SPORE); } - TURN { MOVE(player, MOVE_TACKLE); SEND_OUT(opponent, 1); } + TURN { MOVE(player, MOVE_SCRATCH); SEND_OUT(opponent, 1); } TURN { MOVE(player, MOVE_SPORE); } } SCENE { MESSAGE("Zigzagoon used Spore!"); @@ -986,7 +986,7 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo OPPONENT(SPECIES_ZIGZAGOON) { Level(5); } OPPONENT(SPECIES_ZIGZAGOON); } WHEN { - TURN { MOVE(playerLeft, MOVE_SPORE, target: opponentLeft); MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_SPORE, target: opponentLeft); MOVE(playerRight, MOVE_SCRATCH, target: opponentLeft); } TURN { MOVE(playerLeft, MOVE_SPORE, target: opponentRight);} } SCENE { MESSAGE("Zigzagoon used Spore!"); @@ -1180,13 +1180,13 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep caused by Effect Spore does not prevent ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SPORE); } TURN { SWITCH(player, 2); MOVE(opponent, MOVE_SPORE); } } SCENE { @@ -1215,12 +1215,12 @@ SINGLE_BATTLE_TEST("Sleep Clause: Waking up after Effect Spore doesn't deactivat FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } TURN {} TURN {} TURN {} @@ -1253,14 +1253,14 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Waking up after Effect Spore doesn't deactivat ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); PLAYER(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } OPPONENT(SPECIES_ZIGZAGOON); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); MOVE(opponentRight, MOVE_SPORE, target:playerRight); } + TURN { MOVE(playerLeft, MOVE_SCRATCH, target: opponentLeft); MOVE(opponentRight, MOVE_SPORE, target:playerRight); } TURN { SWITCH(playerLeft, 2); } TURN { MOVE(playerLeft, MOVE_AROMATHERAPY); MOVE(opponentRight, MOVE_SPORE, target:playerRight); MOVE(opponentLeft, MOVE_SPORE, target:playerLeft); } } SCENE { @@ -1424,13 +1424,13 @@ SINGLE_BATTLE_TEST("Sleep Clause: Yawn'd Pokémon slept due to Effect Spore befo FLAG_SET(B_FLAG_SLEEP_CLAUSE); ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP); ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN); - ASSUME(MoveMakesContact(MOVE_TACKLE)); + ASSUME(MoveMakesContact(MOVE_SCRATCH)); PLAYER(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } OPPONENT(SPECIES_ZIGZAGOON); OPPONENT(SPECIES_ZIGZAGOON); } WHEN { TURN { MOVE(player, MOVE_YAWN); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { SWITCH(opponent, 1); MOVE(player, MOVE_SPORE); } } SCENE { MESSAGE("The opposing Zigzagoon grew drowsy!"); diff --git a/test/battle/status1/burn.c b/test/battle/status1/burn.c index c37768cedf..f6cebcac44 100644 --- a/test/battle/status1/burn.c +++ b/test/battle/status1/burn.c @@ -23,11 +23,11 @@ SINGLE_BATTLE_TEST("Burn reduces Attack by 50%", s16 damage) PARAMETRIZE { burned = FALSE; } PARAMETRIZE { burned = TRUE; } GIVEN { - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); PLAYER(SPECIES_WOBBUFFET) { if (burned) Status1(STATUS1_BURN); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { diff --git a/test/battle/status2/confusion.c b/test/battle/status2/confusion.c index 00ea0c2ed1..66ab924842 100644 --- a/test/battle/status2/confusion.c +++ b/test/battle/status2/confusion.c @@ -11,14 +11,14 @@ SINGLE_BATTLE_TEST("Confusion adds a 50/33% chance to hit self with 40 power") PASSES_RANDOMLY(pctChance, 100, RNG_CONFUSION); GIVEN { WITH_CONFIG(GEN_CONFIG_CONFUSION_SELF_DMG_CHANCE, genConfig); - ASSUME(GetMovePower(MOVE_TACKLE) == 40); + ASSUME(GetMovePower(MOVE_SCRATCH) == 40); PLAYER(SPECIES_WOBBUFFET) { Speed(1); }; OPPONENT(SPECIES_WOBBUFFET) { Speed(2); }; } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE, WITH_RNG(RNG_DAMAGE_MODIFIER, 0)); MOVE(player, MOVE_CONFUSE_RAY); } + TURN { MOVE(opponent, MOVE_SCRATCH, WITH_RNG(RNG_DAMAGE_MODIFIER, 0)); MOVE(player, MOVE_CONFUSE_RAY); } TURN; } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); HP_BAR(player, captureDamage: &damage[0]); ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player); MESSAGE("The opposing Wobbuffet became confused!"); @@ -42,10 +42,10 @@ SINGLE_BATTLE_TEST("Confusion self hit does not consume Gems") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMAL_GEM); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_CONFUSE_RAY); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_CONFUSE_RAY); MOVE(player, MOVE_SCRATCH); } } SCENE { NONE_OF { - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Normal Gem strengthened Wobbuffet's power!"); } diff --git a/test/battle/trainer_slides.c b/test/battle/trainer_slides.c index 3ad0c38248..e8a0999048 100644 --- a/test/battle/trainer_slides.c +++ b/test/battle/trainer_slides.c @@ -26,10 +26,10 @@ SINGLE_BATTLE_TEST("Trainer Slide: Player Lands First Critical Hit") OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_LASER_FOCUS); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_LASER_FOCUS, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player); MESSAGE("A critical hit!"); MESSAGE("This message plays after the player lands their first critical hit.{PAUSE_UNTIL_PRESS}"); } @@ -45,10 +45,10 @@ SINGLE_BATTLE_TEST("Trainer Slide: Enemy Lands First Critical Hit") OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_LASER_FOCUS); } - TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_LASER_FOCUS, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); MESSAGE("A critical hit!"); MESSAGE("This message plays after the enemy lands their first critical hit.{PAUSE_UNTIL_PRESS}"); } diff --git a/test/battle/weather/snow.c b/test/battle/weather/snow.c index 7b4e4cb2ff..844a6840e3 100644 --- a/test/battle/weather/snow.c +++ b/test/battle/weather/snow.c @@ -7,7 +7,7 @@ ASSUMPTIONS ASSUME(GetMoveEffect(MOVE_SNOWSCAPE) == EFFECT_SNOWSCAPE); ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_ICE && gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_ICE); ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE || gSpeciesInfo[SPECIES_GLALIE].types[1] == TYPE_ICE); - ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL); } SINGLE_BATTLE_TEST("Snow multiplies the defense of Ice-types by 1.5x", s16 damage) @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Snow multiplies the defense of Ice-types by 1.5x", s16 damag OPPONENT(SPECIES_GLALIE); } WHEN { TURN { MOVE(opponent, move); } - TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_SCRATCH); } } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { diff --git a/test/pokemon.c b/test/pokemon.c index dbb88081cf..4e8a1da7fa 100644 --- a/test/pokemon.c +++ b/test/pokemon.c @@ -278,12 +278,12 @@ TEST("givemon [moves]") ZeroPlayerPartyMons(); RUN_OVERWORLD_SCRIPT( - givemon SPECIES_WOBBUFFET, 100, move1=MOVE_TACKLE, move2=MOVE_SPLASH, move3=MOVE_NONE, move4=MOVE_NONE; + givemon SPECIES_WOBBUFFET, 100, move1=MOVE_SCRATCH, move2=MOVE_SPLASH, move3=MOVE_NONE, move4=MOVE_NONE; ); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_WOBBUFFET); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_LEVEL), 100); - EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE1), MOVE_TACKLE); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE1), MOVE_SCRATCH); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE2), MOVE_SPLASH); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE3), MOVE_NONE); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE4), MOVE_NONE); @@ -294,7 +294,7 @@ TEST("givemon [all]") ZeroPlayerPartyMons(); RUN_OVERWORLD_SCRIPT( - givemon SPECIES_WOBBUFFET, 100, item=ITEM_LEFTOVERS, ball=ITEM_MASTER_BALL, nature=NATURE_BOLD, abilityNum=2, gender=MON_MALE, hpEv=1, atkEv=2, defEv=3, speedEv=4, spAtkEv=5, spDefEv=6, hpIv=7, atkIv=8, defIv=9, speedIv=10, spAtkIv=11, spDefIv=12, move1=MOVE_TACKLE, move2=MOVE_SPLASH, move3=MOVE_CELEBRATE, move4=MOVE_EXPLOSION, isShiny=TRUE, gmaxFactor=TRUE, teraType=TYPE_FIRE, dmaxLevel=7; + givemon SPECIES_WOBBUFFET, 100, item=ITEM_LEFTOVERS, ball=ITEM_MASTER_BALL, nature=NATURE_BOLD, abilityNum=2, gender=MON_MALE, hpEv=1, atkEv=2, defEv=3, speedEv=4, spAtkEv=5, spDefEv=6, hpIv=7, atkIv=8, defIv=9, speedIv=10, spAtkIv=11, spDefIv=12, move1=MOVE_SCRATCH, move2=MOVE_SPLASH, move3=MOVE_CELEBRATE, move4=MOVE_EXPLOSION, isShiny=TRUE, gmaxFactor=TRUE, teraType=TYPE_FIRE, dmaxLevel=7; ); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_WOBBUFFET); @@ -316,7 +316,7 @@ TEST("givemon [all]") EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPEED_IV), 10); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPATK_IV), 11); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPDEF_IV), 12); - EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE1), MOVE_TACKLE); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE1), MOVE_SCRATCH); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE2), MOVE_SPLASH); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE3), MOVE_CELEBRATE); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE4), MOVE_EXPLOSION); @@ -349,7 +349,7 @@ TEST("givemon [vars]") VarSet(VAR_TEMP_2, 10); VarSet(VAR_TEMP_3, 11); VarSet(VAR_TEMP_4, 12); - VarSet(VAR_TEMP_5, MOVE_TACKLE); + VarSet(VAR_TEMP_5, MOVE_SCRATCH); VarSet(VAR_TEMP_6, MOVE_SPLASH); VarSet(VAR_TEMP_7, MOVE_CELEBRATE); VarSet(VAR_TEMP_8, MOVE_EXPLOSION); @@ -381,7 +381,7 @@ TEST("givemon [vars]") EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPEED_IV), 10); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPATK_IV), 11); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPDEF_IV), 12); - EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE1), MOVE_TACKLE); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE1), MOVE_SCRATCH); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE2), MOVE_SPLASH); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE3), MOVE_CELEBRATE); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE4), MOVE_EXPLOSION); From fadf4721571683420734e64b73c6eaefde079636 Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Thu, 1 May 2025 09:16:15 +0100 Subject: [PATCH 14/14] Adds RNG tags and tests for Moody and Starf Berry (#6718) --- include/battle_util.h | 2 + include/constants/generational_changes.h | 1 + include/generational_changes.h | 1 + include/random.h | 3 + src/battle_util.c | 73 ++++++++-------- test/battle/ability/moody.c | 76 +++++++++++++++++ test/battle/hold_effect/random_stat_up.c | 101 ++++++++++++++++++++++- 7 files changed, 220 insertions(+), 37 deletions(-) create mode 100644 test/battle/ability/moody.c diff --git a/include/battle_util.h b/include/battle_util.h index e4a54990c0..492c188278 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -311,6 +311,8 @@ bool32 IsMoveEffectRemoveSpeciesType(u32 move, u32 moveEffect, u32 argument); bool32 MoveHasChargeTurnAdditionalEffect(u32 move); bool32 CanTargetPartner(u32 battlerAtk, u32 battlerDef); bool32 TargetFullyImmuneToCurrMove(u32 battlerAtk, u32 battlerDef); +bool32 MoodyCantRaiseStat(u32 stat); +bool32 MoodyCantLowerStat(u32 stat); bool32 CanBeSlept(u32 battler, u32 ability, enum SleepClauseBlock isBlockedBySleepClause); bool32 CanBePoisoned(u32 battlerAtk, u32 battlerDef, u32 defAbility); diff --git a/include/constants/generational_changes.h b/include/constants/generational_changes.h index e9653d26d5..5e93679643 100644 --- a/include/constants/generational_changes.h +++ b/include/constants/generational_changes.h @@ -12,6 +12,7 @@ enum GenConfigTag GEN_CONFIG_GALE_WINGS, GEN_CONFIG_HEAL_BELL_SOUNDPROOF, GEN_CONFIG_TELEPORT_BEHAVIOR, + GEN_CONFIG_MOODY_STATS, GEN_CONFIG_COUNT }; diff --git a/include/generational_changes.h b/include/generational_changes.h index 1aad93f915..4f555b9368 100644 --- a/include/generational_changes.h +++ b/include/generational_changes.h @@ -15,6 +15,7 @@ static const u8 sGenerationalChanges[GEN_CONFIG_COUNT] = [GEN_CONFIG_GALE_WINGS] = B_GALE_WINGS, [GEN_CONFIG_HEAL_BELL_SOUNDPROOF] = B_HEAL_BELL_SOUNDPROOF, [GEN_CONFIG_TELEPORT_BEHAVIOR] = B_TELEPORT_BEHAVIOR, + [GEN_CONFIG_MOODY_STATS] = B_MOODY_ACC_EVASION, }; #if TESTING diff --git a/include/random.h b/include/random.h index c8b4a039b5..34b03db450 100644 --- a/include/random.h +++ b/include/random.h @@ -146,11 +146,14 @@ enum RandomTag RNG_INFATUATION, RNG_LOADED_DICE, RNG_METRONOME, + RNG_MOODY_INCREASE, + RNG_MOODY_DECREASE, RNG_PARALYSIS, RNG_PICKUP, RNG_POISON_POINT, RNG_POISON_TOUCH, RNG_RAMPAGE_TURNS, + RNG_RANDOM_STAT_UP, RNG_SECONDARY_EFFECT, RNG_SECONDARY_EFFECT_2, RNG_SECONDARY_EFFECT_3, diff --git a/src/battle_util.c b/src/battle_util.c index adc6ac182d..72d203609e 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1604,6 +1604,18 @@ u32 GetBattlerAffectionHearts(u32 battler) return GetMonAffectionHearts(&party[gBattlerPartyIndexes[battler]]); } +// gBattlerAttacker is the battler that's trying to raise their stats and due to limitations of RandomUniformExcept, cannot be an argument +bool32 MoodyCantRaiseStat(u32 stat) +{ + return CompareStat(gBattlerAttacker, stat, MAX_STAT_STAGE, CMP_EQUAL); +} + +// gBattlerAttacker is the battler that's trying to lower their stats and due to limitations of RandomUniformExcept, cannot be an argument +bool32 MoodyCantLowerStat(u32 stat) +{ + return stat == GET_STAT_BUFF_ID(gBattleScripting.statChanger) || CompareStat(gBattlerAttacker, stat, MIN_STAT_STAGE, CMP_EQUAL); +} + void TryToRevertMimicryAndFlags(void) { u32 i; @@ -5469,7 +5481,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (gDisableStructs[battler].isFirstTurn != 2) { u32 validToRaise = 0, validToLower = 0; - u32 statsNum = B_MOODY_ACC_EVASION >= GEN_8 ? NUM_STATS : NUM_BATTLE_STATS; + u32 statsNum = GetGenConfig(GEN_CONFIG_MOODY_STATS) >= GEN_8 ? NUM_STATS : NUM_BATTLE_STATS; for (i = STAT_ATK; i < statsNum; i++) { @@ -5479,29 +5491,21 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 validToRaise |= 1u << i; } - if (validToLower != 0 || validToRaise != 0) // Can lower one stat, or can raise one stat + gBattleScripting.statChanger = gBattleScripting.savedStatChanger = 0; // for raising and lowering stat respectively + if (validToRaise) // Find stat to raise { - gBattleScripting.statChanger = gBattleScripting.savedStatChanger = 0; // for raising and lowering stat respectively - if (validToRaise != 0) // Find stat to raise - { - do - { - i = (Random() % statsNum) + STAT_ATK; - } while (!(validToRaise & (1u << i))); - SET_STATCHANGER(i, 2, FALSE); - validToLower &= ~(1u << i); // Can't lower the same stat as raising. - } - if (validToLower != 0) // Find stat to lower - { - do - { - i = (Random() % statsNum) + STAT_ATK; - } while (!(validToLower & (1u << i))); - SET_STATCHANGER2(gBattleScripting.savedStatChanger, i, 1, TRUE); - } - BattleScriptPushCursorAndCallback(BattleScript_MoodyActivates); - effect++; + i = RandomUniformExcept(RNG_MOODY_INCREASE, STAT_ATK, statsNum - 1, MoodyCantRaiseStat); + SET_STATCHANGER(i, 2, FALSE); + validToLower &= ~(1u << i); // Can't lower the same stat as raising. } + if (validToLower) // Find stat to lower + { + // MoodyCantLowerStat already checks that both stats are different + i = RandomUniformExcept(RNG_MOODY_DECREASE, STAT_ATK, statsNum - 1, MoodyCantLowerStat); + SET_STATCHANGER2(gBattleScripting.savedStatChanger, i, 1, TRUE); + } + BattleScriptPushCursorAndCallback(BattleScript_MoodyActivates); + effect++; } break; case ABILITY_TRUANT: @@ -6976,23 +6980,24 @@ static enum ItemEffect StatRaiseBerry(u32 battler, u32 itemId, u32 statId, enum static enum ItemEffect RandomStatRaiseBerry(u32 battler, u32 itemId, enum ItemCaseId caseID) { - s32 i; + s32 stat; u16 stringId; - for (i = 0; i < NUM_STATS - 1; i++) + for (stat = STAT_ATK; stat < NUM_STATS; stat++) { - if (CompareStat(battler, STAT_ATK + i, MAX_STAT_STAGE, CMP_LESS_THAN)) + if (CompareStat(battler, stat, MAX_STAT_STAGE, CMP_LESS_THAN)) break; } - if (i != NUM_STATS - 1 && HasEnoughHpToEatBerry(battler, GetBattlerItemHoldEffectParam(battler, itemId), itemId)) + if (stat != NUM_STATS && HasEnoughHpToEatBerry(battler, GetBattlerItemHoldEffectParam(battler, itemId), itemId)) { u16 battlerAbility = GetBattlerAbility(battler); - do - { - i = Random() % (NUM_STATS - 1); - } while (!CompareStat(battler, STAT_ATK + i, MAX_STAT_STAGE, CMP_LESS_THAN)); + u32 savedAttacker = gBattlerAttacker; + // MoodyCantRaiseStat requires that the battler is set to gBattlerAttacker + gBattlerAttacker = battler; + stat = RandomUniformExcept(RNG_RANDOM_STAT_UP, STAT_ATK, NUM_STATS - 1, MoodyCantRaiseStat); + gBattlerAttacker = savedAttacker; - PREPARE_STAT_BUFFER(gBattleTextBuff1, i + 1); + PREPARE_STAT_BUFFER(gBattleTextBuff1, stat); stringId = (battlerAbility == ABILITY_CONTRARY) ? STRINGID_STATFELL : STRINGID_STATROSE; gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; gBattleTextBuff2[1] = B_BUFF_STRING; @@ -7004,11 +7009,11 @@ static enum ItemEffect RandomStatRaiseBerry(u32 battler, u32 itemId, enum ItemCa gBattleTextBuff2[7] = EOS; gEffectBattler = battler; if (battlerAbility == ABILITY_RIPEN) - SET_STATCHANGER(i + 1, 4, FALSE); + SET_STATCHANGER(stat, 4, FALSE); else - SET_STATCHANGER(i + 1, 2, FALSE); + SET_STATCHANGER(stat, 2, FALSE); - gBattleScripting.animArg1 = STAT_ANIM_PLUS2 + i + 1; + gBattleScripting.animArg1 = STAT_ANIM_PLUS2 + stat; gBattleScripting.animArg2 = 0; if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL) { diff --git a/test/battle/ability/moody.c b/test/battle/ability/moody.c new file mode 100644 index 0000000000..888e088f21 --- /dev/null +++ b/test/battle/ability/moody.c @@ -0,0 +1,76 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Moody randomly raises the user's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages") +{ + u32 config, statsNum; + + PARAMETRIZE { config = GEN_8; statsNum = NUM_STATS; } + PARAMETRIZE { config = GEN_7; statsNum = NUM_BATTLE_STATS; } + + // HP is not included + PASSES_RANDOMLY(1, statsNum - 1, RNG_MOODY_INCREASE); + GIVEN { + WITH_CONFIG(GEN_CONFIG_MOODY_STATS, config); + PLAYER(SPECIES_OCTILLERY) { Ability(ABILITY_MOODY); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(player, ABILITY_MOODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Octillery's Attack sharply rose!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + } +} + +SINGLE_BATTLE_TEST("Moody randomly lowers the user's Attack, Defense, Sp. Atk, Sp. Def, or Speed by one stage") +{ + u32 config, statsNum; + + PARAMETRIZE { config = GEN_8; statsNum = NUM_STATS; } + PARAMETRIZE { config = GEN_7; statsNum = NUM_BATTLE_STATS; } + + // One stat becomes unavailable due to it already increasing + PASSES_RANDOMLY(1, statsNum - 2, RNG_MOODY_DECREASE); + GIVEN { + WITH_CONFIG(GEN_CONFIG_MOODY_STATS, config); + PLAYER(SPECIES_OCTILLERY) { Ability(ABILITY_MOODY); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(player, ABILITY_MOODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Octillery's Attack fell!"); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + } +} + +SINGLE_BATTLE_TEST("Moody randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages and lowers a different stat by one stage") +{ + u32 config, statsNum; + + PARAMETRIZE { config = GEN_8; statsNum = NUM_STATS; } + PARAMETRIZE { config = GEN_7; statsNum = NUM_BATTLE_STATS; } + + PASSES_RANDOMLY(statsNum - 1, statsNum - 1, RNG_MOODY_DECREASE); + GIVEN { + WITH_CONFIG(GEN_CONFIG_MOODY_STATS, config); + PLAYER(SPECIES_OCTILLERY) { Ability(ABILITY_MOODY); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(player, ABILITY_MOODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + for (int stat = STAT_ATK; stat < statsNum; stat++) + EXPECT_NE(player->statStages[stat], DEFAULT_STAT_STAGE + 1); // Both raised and lowered + } +} diff --git a/test/battle/hold_effect/random_stat_up.c b/test/battle/hold_effect/random_stat_up.c index a0b8d8f50f..ff6b03e035 100644 --- a/test/battle/hold_effect/random_stat_up.c +++ b/test/battle/hold_effect/random_stat_up.c @@ -6,6 +6,101 @@ ASSUMPTIONS ASSUME(gItemsInfo[ITEM_STARF_BERRY].holdEffect == HOLD_EFFECT_RANDOM_STAT_UP); } -TO_DO_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages when the holder's HP drop to 1/4 or below") -TO_DO_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages when the holder's HP drop to 1/2 or below if it has Gluttony") -TO_DO_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by four stages when the holder's HP drop to 1/4 or below if it has Riped") +SINGLE_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages") +{ + PASSES_RANDOMLY(1, 5, RNG_RANDOM_STAT_UP); + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_STARF_BERRY); HP(100); MaxHP(400); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Using Starf Berry, the Attack of Wobbuffet sharply rose!"); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + } +} + +SINGLE_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages when the holder's HP drop to 1/4 or below") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_STARF_BERRY); HP(101); MaxHP(400); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SCRATCH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); + HP_BAR(player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + int boostedStats = 0; + EXPECT_EQ(player->item, ITEM_NONE); + EXPECT_LE(player->hp * 4, player->maxHP); + for (int stat = STAT_ATK; stat < NUM_STATS; stat++) + { + if (player->statStages[stat] == DEFAULT_STAT_STAGE + 2) + boostedStats++; + else + EXPECT_EQ(player->statStages[stat], DEFAULT_STAT_STAGE); + } + EXPECT_EQ(boostedStats, 1); + } +} + +SINGLE_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages when the holder's HP drop to 1/2 or below if it has Gluttony") +{ + GIVEN { + PLAYER(SPECIES_MUNCHLAX) { Item(ITEM_STARF_BERRY); HP(201); MaxHP(400); Ability(ABILITY_GLUTTONY); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SCRATCH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); + HP_BAR(player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + int boostedStats = 0; + EXPECT_EQ(player->item, ITEM_NONE); + EXPECT_LE(player->hp * 2, player->maxHP); + for (int stat = STAT_ATK; stat < NUM_STATS; stat++) + { + if (player->statStages[stat] == DEFAULT_STAT_STAGE + 2) + boostedStats++; + else + EXPECT_EQ(player->statStages[stat], DEFAULT_STAT_STAGE); + } + EXPECT_EQ(boostedStats, 1); + } +} + +SINGLE_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by four stages when the holder's HP drop to 1/4 or below if it has Ripen") +{ + GIVEN { + PLAYER(SPECIES_FLAPPLE) { Item(ITEM_STARF_BERRY); HP(101); MaxHP(400); Ability(ABILITY_RIPEN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SCRATCH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); + HP_BAR(player); + ABILITY_POPUP(player, ABILITY_RIPEN); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } THEN { + int boostedStats = 0; + EXPECT_EQ(player->item, ITEM_NONE); + EXPECT_LE(player->hp * 4, player->maxHP); + for (int stat = STAT_ATK; stat < NUM_STATS; stat++) + { + if (player->statStages[stat] == DEFAULT_STAT_STAGE + 4) + boostedStats++; + else + EXPECT_EQ(player->statStages[stat], DEFAULT_STAT_STAGE); + } + EXPECT_EQ(boostedStats, 1); + } +}