diff --git a/.all-contributorsrc b/.all-contributorsrc
index 3d356bbc97..501f2d8191 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -660,6 +660,42 @@
"contributions": [
"bug"
]
+ },
+ {
+ "login": "luuma",
+ "name": "luuma",
+ "avatar_url": "https://avatars.githubusercontent.com/u/31407427?v=4",
+ "profile": "https://github.com/luuma",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "DragonScaledEmma",
+ "name": "Emma",
+ "avatar_url": "https://avatars.githubusercontent.com/u/220702264?v=4",
+ "profile": "https://github.com/DragonScaledEmma",
+ "contributions": [
+ "bug"
+ ]
+ }
+ {
+ "login": "gammel2013",
+ "name": "gammel2013",
+ "avatar_url": "https://avatars.githubusercontent.com/u/160730477?v=4",
+ "profile": "https://github.com/Gammel2013",
+ "contributions": [
+ "bug"
+ ]
+ }
+ {
+ "login": "blusunrize",
+ "name": "blusunrize",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4106382?v=4",
+ "profile": "https://github.com/BluSunrize",
+ "contributions": [
+ "bug"
+ ]
}
],
"contributorsPerLine": 7,
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 32dfac0c4f..a37a6e49e9 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -7,70 +7,217 @@ on:
- upcoming
pull_request:
+env:
+ GAME_REVISION: 0
+ GAME_LANGUAGE: ENGLISH
+ COMPARE: 0
+ UNUSED_ERROR: 1
+ DEPRECATED_ERROR: 1
+
jobs:
- build:
+ build-emerald:
if: github.actor != 'allcontributors[bot]'
runs-on: ubuntu-latest
- env:
- GAME_REVISION: 0
- GAME_LANGUAGE: ENGLISH
- COMPARE: 0
- UNUSED_ERROR: 1
- DEPRECATED_ERROR: 1
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: Install binutils
run: |
- sudo apt update
- sudo apt install -y binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi libpng-dev python3
- # build-essential and git are already installed
+ sudo apt-get update
+ sudo apt-get install -y binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi libpng-dev python3
+
+ - name: Cache build tools
+ uses: actions/cache@v4
+ with:
+ path: |
+ tools/bin2c/bin2c
+ tools/gbafix/gbafix
+ tools/gbagfx/gbagfx
+ tools/jsonproc/jsonproc
+ tools/mapjson/mapjson
+ tools/mid2agb/mid2agb
+ tools/preproc/preproc
+ tools/ramscrgen/ramscrgen
+ tools/rsfont/rsfont
+ tools/scaninc/scaninc
+ tools/trainerproc/trainerproc
+ tools/compresSmol/compresSmol
+ tools/compresSmol/compresSmolTilemap
+ tools/wav2agb/wav2agb
+ key: tools-${{ runner.os }}-${{ hashFiles('tools/*/Makefile', 'tools/**/*.c', 'tools/**/*.cpp', 'tools/**/*.h') }}
- name: ROM (Emerald)
env:
- COMPARE: 0
GAME_VERSION: EMERALD
- run: make -j${nproc} -O all
+ run: make -j$(nproc) -O all
+
+ build-firered:
+ if: github.actor != 'allcontributors[bot]'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install binutils
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi libpng-dev python3
+
+ - name: Cache build tools
+ uses: actions/cache@v4
+ with:
+ path: |
+ tools/bin2c/bin2c
+ tools/gbafix/gbafix
+ tools/gbagfx/gbagfx
+ tools/jsonproc/jsonproc
+ tools/mapjson/mapjson
+ tools/mid2agb/mid2agb
+ tools/preproc/preproc
+ tools/ramscrgen/ramscrgen
+ tools/rsfont/rsfont
+ tools/scaninc/scaninc
+ tools/trainerproc/trainerproc
+ tools/compresSmol/compresSmol
+ tools/compresSmol/compresSmolTilemap
+ tools/wav2agb/wav2agb
+ key: tools-${{ runner.os }}-${{ hashFiles('tools/*/Makefile', 'tools/**/*.c', 'tools/**/*.cpp', 'tools/**/*.h') }}
+
+ - name: ROM (Firered)
+ run: make firered -j$(nproc) -O
+
+ build-leafgreen:
+ if: github.actor != 'allcontributors[bot]'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install binutils
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi libpng-dev python3
+
+ - name: Cache build tools
+ uses: actions/cache@v4
+ with:
+ path: |
+ tools/bin2c/bin2c
+ tools/gbafix/gbafix
+ tools/gbagfx/gbagfx
+ tools/jsonproc/jsonproc
+ tools/mapjson/mapjson
+ tools/mid2agb/mid2agb
+ tools/preproc/preproc
+ tools/ramscrgen/ramscrgen
+ tools/rsfont/rsfont
+ tools/scaninc/scaninc
+ tools/trainerproc/trainerproc
+ tools/compresSmol/compresSmol
+ tools/compresSmol/compresSmolTilemap
+ tools/wav2agb/wav2agb
+ key: tools-${{ runner.os }}-${{ hashFiles('tools/*/Makefile', 'tools/**/*.c', 'tools/**/*.cpp', 'tools/**/*.h') }}
+
+ - name: ROM (Leafgreen)
+ run: make leafgreen -j$(nproc) -O
+
+ release:
+ if: github.actor != 'allcontributors[bot]'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install binutils
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi libpng-dev python3
+
+ - name: Cache build tools
+ uses: actions/cache@v4
+ with:
+ path: |
+ tools/bin2c/bin2c
+ tools/gbafix/gbafix
+ tools/gbagfx/gbagfx
+ tools/jsonproc/jsonproc
+ tools/mapjson/mapjson
+ tools/mid2agb/mid2agb
+ tools/preproc/preproc
+ tools/ramscrgen/ramscrgen
+ tools/rsfont/rsfont
+ tools/scaninc/scaninc
+ tools/trainerproc/trainerproc
+ tools/compresSmol/compresSmol
+ tools/compresSmol/compresSmolTilemap
+ tools/wav2agb/wav2agb
+ key: tools-${{ runner.os }}-${{ hashFiles('tools/*/Makefile', 'tools/**/*.c', 'tools/**/*.cpp', 'tools/**/*.h') }}
- name: Release
env:
GAME_VERSION: EMERALD
+ run: make -j$(nproc) release
+
+ test:
+ if: github.actor != 'allcontributors[bot]'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install binutils
run: |
- make tidy
- make -j${nproc} release
- # make tidy to purge previous build
+ sudo apt-get update
+ sudo apt-get install -y binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi libpng-dev python3
+
+ - name: Cache build tools
+ uses: actions/cache@v4
+ with:
+ path: |
+ tools/bin2c/bin2c
+ tools/gbafix/gbafix
+ tools/gbagfx/gbagfx
+ tools/jsonproc/jsonproc
+ tools/mapjson/mapjson
+ tools/mid2agb/mid2agb
+ tools/preproc/preproc
+ tools/ramscrgen/ramscrgen
+ tools/rsfont/rsfont
+ tools/scaninc/scaninc
+ tools/trainerproc/trainerproc
+ tools/compresSmol/compresSmol
+ tools/compresSmol/compresSmolTilemap
+ tools/wav2agb/wav2agb
+ tools/patchelf/patchelf
+ tools/mgba-rom-test-hydra/mgba-rom-test-hydra
+ key: tools-check-${{ runner.os }}-${{ hashFiles('tools/*/Makefile', 'tools/**/*.c', 'tools/**/*.cpp', 'tools/**/*.h') }}
- name: Test
env:
GAME_VERSION: EMERALD
TEST: 1
- run: |
- make -j${nproc} check
+ run: make -j$(nproc) check
- - name: ROM (Firered)
- env:
- COMPARE: 0
- run: |
- make clean
- make firered -j${nproc} -O
-
- - name: ROM (Leafgreen)
- env:
- COMPARE: 0
- run: |
- make leafgreen -j${nproc} -O
+ # Gate job: satisfies the "build" branch protection rule.
+ # Passes only when all parallel build/test jobs succeed.
+ build:
+ if: github.actor != 'allcontributors[bot]'
+ runs-on: ubuntu-latest
+ needs: [build-emerald, build-firered, build-leafgreen, release, test]
+ steps:
+ - name: All builds passed
+ run: echo "All builds and tests passed."
docs_validate:
if: github.actor != 'allcontributors[bot]'
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: Check that SUMMARY.md includes markdown doc files
- run: |
- .github/docs_validate/inclusive_summary.py
+ run: .github/docs_validate/inclusive_summary.py
allcontributors:
if: github.actor == 'allcontributors[bot]'
@@ -79,4 +226,3 @@ jobs:
steps:
- name: Automatically pass for allcontributors
run: echo "CI automatically passes for allcontributors" && exit 0
-
diff --git a/.gitignore b/.gitignore
index 6acae9231f..c64c73c980 100644
--- a/.gitignore
+++ b/.gitignore
@@ -55,6 +55,7 @@ src/data/trainers_frlg.h
src/data/debug_trainers.h
src/data/tutor_moves.h
test/battle/trainer_control.h
+test/battle/partner_control.h
tools/compresSmol/compresSmol
tools/compresSmol/compresSmolTilemap
tools/aif2pcm/aif2pcm
@@ -63,3 +64,4 @@ tools/aif2pcm/aif2pcm
*.fastSmol
*.smolTM
__pycache__
+.map_version
diff --git a/CREDITS.md b/CREDITS.md
index 133208fa95..3a67645ce8 100644
--- a/CREDITS.md
+++ b/CREDITS.md
@@ -94,6 +94,10 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
 ChrispyChris27 ๐ป |
 LogicalLlama ๐ |
 KnightGallade ๐ |
+  luuma ๐ป |
+  Emma ๐ |
+  gammel2013 ๐ |
+  blusunrize ๐ |
diff --git a/Makefile b/Makefile
index 41335f273c..c699272399 100644
--- a/Makefile
+++ b/Makefile
@@ -386,6 +386,7 @@ clean-assets:
rm -f $(MID_SUBDIR)/*.s
rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc
rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc $(DATA_SRC_SUBDIR)/map_group_count.h
+ rm -f .map_version
find sound -iname '*.bin' -exec rm {} +
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.smol' -o -iname '*.fastSmol' -o -iname '*.smolTM' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} +
@@ -528,7 +529,7 @@ ifneq ($(NODEP),1)
endif
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s
- $(PREPROC) $< charmap.txt | $(CPP) $(CPPFLAGS) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
+ $(PREPROC) -s $< charmap.txt | $(CPP) $(CPPFLAGS) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
$(DATA_ASM_BUILDDIR)/%.d: $(DATA_ASM_SUBDIR)/%.s
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 20d7de41a1..b2d6d4d9bb 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -155,7 +155,7 @@ gBattleAnimMove_Gravity::
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATK_PARTNER, 3, 0, 1, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 1, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 1, 1
- setarg 0x7, 0xffff
+ setarg 7, -1
waitbgfadein
waitforvisualfinish
end
@@ -507,7 +507,7 @@ gBattleAnimMove_CloseCombat::
clearmonbg ANIM_DEF_PARTNER
blendoff
delay 1
- setarg 7, 0x1000
+ setarg 7, 4096
delay 1
end
@@ -701,13 +701,13 @@ gBattleAnimMove_WringOut::
end
gBattleAnimMove_PowerTrick::
- loopsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET 0xa 0x3
- createvisualtask AnimTask_UproarDistortion 0x2, 0x0
+ loopsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET 10 3
+ createvisualtask AnimTask_UproarDistortion 2, 0
createsprite gPowerTrickSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 0, SOUND_PAN_TARGET, 0
delay 16
- createvisualtask AnimTask_UproarDistortion 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion 2, 0
delay 16
- createvisualtask AnimTask_UproarDistortion 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion 2, 0
waitforvisualfinish
end
@@ -786,7 +786,7 @@ gBattleAnimMove_MeFirst::
delay 15
create_mimic_orb_sprite ANIM_TARGET, 2, initial_x=-12, initial_y=24
delay 10
- setarg 7, 0xFFFF
+ setarg 7, -1
waitforvisualfinish
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
blend_color_cycle selector=F_PAL_ATTACKER, delay=0, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB_WHITE
@@ -1084,27 +1084,27 @@ gBattleAnimMove_MagnetRise::
blend_color_cycle selector=(F_PAL_BG | F_PAL_BATTLERS), delay=0, num_blends=1, initial_blend_y=5, target_blend_y=5, color=RGB(31, 31, 20)
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -12, 4, 10, 10, 12, 6
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 0
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
delay 4
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
delay 0
blend_color_cycle selector=(F_PAL_BG | F_PAL_BATTLERS), delay=0, num_blends=1, initial_blend_y=0, target_blend_y=0, color=RGB(31, 31, 20)
delay 20
@@ -1347,7 +1347,7 @@ gBattleAnimMove_DarkPulse::
fadetobg BG_DARK
waitbgfadein
loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 3
- createvisualtask AnimTask_SwayMon, ANIM_TARGET, 0, 6, 0x0800, 8, ANIM_TARGET
+ createvisualtask AnimTask_SwayMon, ANIM_TARGET, 0, 6, 2048, 8, ANIM_TARGET
blend_color_cycle selector=F_PAL_TARGET, delay=2, num_blends=4, initial_blend_y=0, target_blend_y=12, color=RGB(30, 10, 13)
call DarkPulseParticle
call DarkPulseParticle
@@ -1958,7 +1958,7 @@ gBattleAnimMove_ThunderFang::
setalpha 12, 8
simple_palette_blend selector=F_PAL_BG, delay=2, initial_blend_y=0, target_blend_y=16, color=RGB_BLACK
waitforvisualfinish
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -48
delay 1
@@ -1969,7 +1969,7 @@ gBattleAnimMove_ThunderFang::
call CreateBite
delay 1
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1
create_basic_hitsplat_sprite ANIM_ATTACKER, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=2
@@ -2049,16 +2049,16 @@ gBattleAnimMove_ShadowSneak::
clearmonbg ANIM_ATTACKER
invisible ANIM_ATTACKER
delay 1
- createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x30
+ createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 48
delay 48
blend_color_cycle selector=F_PAL_TARGET, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=15, color=RGB_BLACK
- createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0
+ createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0
call ShadowSneakMovement
- createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0
+ createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 10, 20, 0
call ShadowSneakMovement
- createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0
+ createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, -5, 10, 0
call ShadowSneakMovement
- createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0
+ createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 17, -12, 0
call ShadowSneakMovement
waitforvisualfinish
visible ANIM_ATTACKER
@@ -2227,7 +2227,7 @@ gBattleAnimMove_FlashCannon::
loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 6, 5
waitforvisualfinish
playsewithpan SE_M_PAY_DAY, SOUND_PAN_ATTACKER
- createsprite gFlashCannonBallMovementTemplate, ANIM_TARGET, 2, 0, 0, 0x15
+ createsprite gFlashCannonBallMovementTemplate, ANIM_TARGET, 2, 0, 0, 21
clearmonbg ANIM_ATTACKER
waitforvisualfinish
playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER
@@ -2310,7 +2310,7 @@ gBattleAnimMove_DracoMeteor::
setalpha 12, 8
waitforvisualfinish
playsewithpan SE_FALL, SOUND_PAN_ATTACKER
- @setblends 0x80C
+ @setblends 2060
call DracoMeteor1
delay 7
call DracoMeteor2
@@ -2388,17 +2388,17 @@ gBattleAnimMove_Discharge::
delay 0
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=5, target_blend_y=5, color=RGB(31, 31, 20)
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 0
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=0, target_blend_y=0, color=RGB(31, 31, 20)
delay 10
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=5, target_blend_y=5, color=RGB(31, 31, 20)
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
waitbgfadein
monbg ANIM_ATTACKER
setalpha 12, 8
@@ -2644,7 +2644,7 @@ PowerWhipContinue:
gBattleAnimMove_RockWrecker::
fadetobg BG_ROCK_WRECKER
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0xF000, 0, 0, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, -4096, 0, 0, -1
waitbgfadein
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1
delay 6
@@ -2763,16 +2763,16 @@ gBattleAnimMove_IronHead::
gBattleAnimMove_MagnetBomb::
delay 0
playsewithpan 119, 192
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 0
playsewithpan 119, 192
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
delay 0
playsewithpan 152, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0
@@ -2922,30 +2922,30 @@ gBattleAnimMove_Chatter::
createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, DOUBLE_CRY_GROWL
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 0x1d, -12, 0
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0xffe3, 1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 29, -12, 0
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, -29, 1
delay 16
createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, DOUBLE_CRY_GROWL
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 12, 0xffe3, 1
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 0xffe3, -12, 0
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 12, -29, 1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -29, -12, 0
delay 16
createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, DOUBLE_CRY_GROWL
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 0x18, 0xffe8, 1
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 0xffe8, 0xffe8, 0
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, -24, 1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, -24, 0
waitforvisualfinish
createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, -10, -10, 0
delay 4
createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 10, 20, 0
delay 4
- createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 0xfffb, 10, 0
+ createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, -5, 10, 0
delay 4
- createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 0x11, -12, 0
+ createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 17, -12, 0
delay 4
- createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 0xfff1, 15, 0
+ createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, -15, 15, 0
delay 4
createsprite gChatterSingNotesTemplate, ANIM_TARGET, 2, 0, 0, 0
delay 4
@@ -3001,46 +3001,46 @@ gBattleAnimMove_Judgment::
clearmonbg ANIM_TARGET
end
JudgmentOutwardSpikes:
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0, 0xFF90, 16 @up
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 95, 0xFF9D, 16 @upper right
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x73, 0, 16 @right
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x4F, 0x37, 16 @lower right
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0, 0x53, 16 @down
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFFB0, 0x43, 16 @lower left
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFF60, 0, 16 @left
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFFAA, 0xFF94, 16 @upper left
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0, -112, 16 @up
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 95, -99, 16 @upper right
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 115, 0, 16 @right
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 79, 55, 16 @lower right
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0, 83, 16 @down
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, -80, 67, 16 @lower left
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, -160, 0, 16 @left
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, -86, -108, 16 @upper left
playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER
return
JudgmentOutwardSpikes2:
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x2D, 0xFF9D, 16 @between up and upper right
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xDF, 0xFF9D, 16 @between right and upper right
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x9F, 0x37, 16 @between right and lower right
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0x1F, 0x37, 16 @between lower right and down
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFFE0, 0x43, 16 @between lower left and down
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFF60, 0x43, 16 @between left and lower left
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFF2A, 0xFFAA, 16 @between left and upper left
- createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 0xFFDA, 0xFF94, 16 @between up and upper left
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 45, -99, 16 @between up and upper right
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 223, -99, 16 @between right and upper right
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 159, 55, 16 @between right and lower right
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, 31, 55, 16 @between lower right and down
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, -32, 67, 16 @between lower left and down
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, -160, 67, 16 @between left and lower left
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, -214, -86, 16 @between left and upper left
+ createsprite gJudgmentGrayOutwardSpikesTemplate, ANIM_TARGET, 2, 1, 1, -38, -108, 16 @between up and upper left
playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER
return
JudgmentInwardSpikes:
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0, 0xFF90, 16 @up
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 95, 0xFF9D, 16 @upper right
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0x73, 0, 16 @right
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0x4F, 0x37, 16 @lower right
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0, 0x53, 16 @down
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFFB0, 0x43, 16 @lower left
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFF60, 0, 16 @left
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFFAA, 0xFF94, 16 @upper left
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0, -112, 16 @up
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 95, -99, 16 @upper right
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 115, 0, 16 @right
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 79, 55, 16 @lower right
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0, 83, 16 @down
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, -80, 67, 16 @lower left
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, -160, 0, 16 @left
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, -86, -108, 16 @upper left
return
JudgmentInwardSpikes2:
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0x2D, 0xFF9D, 16 @between up and upper right
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xDF, 0xFF9D, 16 @between right and upper right
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0x9F, 0x37, 16 @between right and lower right
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0x1F, 0x37, 16 @between lower right and down
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFFE0, 0x43, 16 @between lower left and down
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFF60, 0x43, 16 @between left and lower left
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFF2A, 0xFFAA, 16 @between left and upper left
- createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFFDA, 0xFF94, 16 @between up and upper left
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 45, -99, 16 @between up and upper right
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 223, -99, 16 @between right and upper right
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 159, 55, 16 @between right and lower right
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 31, 55, 16 @between lower right and down
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, -32, 67, 16 @between lower left and down
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, -160, 67, 16 @between left and lower left
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, -214, -86, 16 @between left and upper left
+ createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, -38, -108, 16 @between up and upper left
return
gBattleAnimMove_BugBite::
@@ -3136,7 +3136,7 @@ gBattleAnimMove_WoodHammer::
delay 60
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
delay 18
- createvisualtask AnimTask_SquishTarget, 0x2
+ createvisualtask AnimTask_SquishTarget, 2
delay 6
call WoodHammerImpact
waitforvisualfinish
@@ -3174,12 +3174,12 @@ gBattleAnimMove_AquaJet::
call RisingWaterHitEffect
waitforvisualfinish
createvisualtask AnimTask_ExtremeSpeedMonReappear, 2
- setarg 0x7, 0x1000
+ setarg 7, 4096
waitforvisualfinish
visible ANIM_ATTACKER
clearmonbg ANIM_DEF_PARTNER
blendoff
- setarg 7, 0x1000
+ setarg 7, 4096
end
gBattleAnimMove_AttackOrder::
@@ -3338,7 +3338,7 @@ gBattleAnimMove_RoarOfTime::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 16, RGB_BLACK
delay 32
monbg ANIM_ATK_PARTNER
- setalpha 0xc, 0x8
+ setalpha 12, 8
loopsewithpan 133, SOUND_PAN_ATTACKER 13 3
call RecoverAbsorbEffect
waitforvisualfinish
@@ -3354,19 +3354,19 @@ gBattleAnimMove_RoarOfTime::
createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
delay 6
playsewithpan 170, SOUND_PAN_TARGET
- createsprite gRoarOfTimeBombTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, 1, 1
+ createsprite gRoarOfTimeBombTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1
delay 6
playsewithpan 170, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 16, 1, 1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1
delay 6
playsewithpan 170, SOUND_PAN_TARGET
- createsprite gRoarOfTimeBombTemplate, ANIM_ATTACKER, 3, 0xffe8, -12, 1, 1
+ createsprite gRoarOfTimeBombTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1
delay 6
playsewithpan 170, SOUND_PAN_TARGET
createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1
delay 6
playsewithpan 170, SOUND_PAN_TARGET
- createsprite gRoarOfTimeBombTemplate, ANIM_ATTACKER, 3, 0xffe8, 0x18, 1, 1
+ createsprite gRoarOfTimeBombTemplate, ANIM_ATTACKER, 3, -24, 24, 1, 1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 0, RGB_WHITEALPHA
waitforvisualfinish
@@ -3377,24 +3377,24 @@ gBattleAnimMove_SpacialRend::
setalpha 12, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 16, RGB_BLACK
loopsewithpan 133, SOUND_PAN_ATTACKER 13 2
- createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 0x38, 0
+ createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
delay 2
- createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 0x38, 4
+ createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 4
delay 2
- createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 0x38, 8
+ createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 8
delay 2
- createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 0x38, 12
+ createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 12
waitforvisualfinish
fadetobgfromset BG_SPACIAL_REND_OPPONENT BG_SPACIAL_REND_PLAYER BG_SPACIAL_REND_OPPONENT
waitbgfadein
loopsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET, 3, 5
- createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, SOUND_PAN_ATTACKER, 0xb0, 0x28
- createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, 0xff40, 0xf0, 0x28
- createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, SOUND_PAN_ATTACKER, 0xff60, 0x28
- createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, 0xff40, 0xff90, 0x28
- createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, 0xa0, 0x30, 0x28
- createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, 0xff20, 0xffe0, 0x28
- createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, 0x70, 0xff80, 0x28
+ createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, SOUND_PAN_ATTACKER, 176, 40
+ createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, -192, 240, 40
+ createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, SOUND_PAN_ATTACKER, -160, 40
+ createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, -192, -112, 40
+ createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, 160, 48, 40
+ createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, -224, -32, 40
+ createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, 112, -128, 40
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1
waitforvisualfinish
restorebg
@@ -3438,19 +3438,19 @@ gBattleAnimMove_LunarDance::
gBattleAnimMove_CrushGrip::
setalpha 15, 0
- createsprite gCrushGripHandTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 25, 0x101
+ createsprite gCrushGripHandTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 25, 257
waitforvisualfinish
createvisualtask AnimTask_CompressTargetHorizontally, 2
createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0, 0, 1, 1
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0x18, 0xffe8, 1, 1
+ createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 24, -24, 1, 1
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0xfff0, 16, 1, 1
+ createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, -16, 16, 1, 1
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 0xffe8, -12, 1, 1
+ createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, -24, -12, 1, 1
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
createsprite gCrushGripExplosionTemplate, ANIM_TARGET, 0, 16, 16, 1, 1
@@ -3474,7 +3474,7 @@ gBattleAnimMove_MagmaStorm::
call FireSpinEffect
restorebg
waitbgfadeout
- setarg 7, 0xFFF
+ setarg 7, 4095
waitbgfadein
clearmonbg ANIM_DEF_PARTNER
blendoff
@@ -3483,9 +3483,9 @@ gBattleAnimMove_MagmaStorm::
gBattleAnimMove_DarkVoid::
fadetobg BG_DARK_VOID
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0, 0xFFA0, 1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -96, 1, -1
waitbgfadein
- createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 0x30
+ createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 48
loopsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER, 5, 2
delay 48
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -768, 21, 0, 112 @Last is duration
@@ -3510,70 +3510,70 @@ gBattleAnimMove_SeedFlare::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_WHITE
waitforvisualfinish
playsewithpan 133, SOUND_PAN_ATTACKER
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 40, 40, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -40, -40, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, 0x28, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, 40, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, 0xffd8, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, -40, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, -20, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 40, -20, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, 20, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 40, 20, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, -20, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -40, -20, 16
delay 2
createsprite gSeedFlareGreenChargeTemplate, ANIM_ATTACKER 2, 0
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, 20, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -40, 20, 16
delay 2
createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -20, 30, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 20, 0xffe2, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 20, -30, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -20, 0xffe2, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -20, -30, 16
delay 2
createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 20, 30, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, 0, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -40, 0, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, 0, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 40, 0, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 40, 40, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -40, -40, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, 0x28, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, 40, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, 0xffd8, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0, -40, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, -20, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 40, -20, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0x28, 20, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 40, 20, 16
delay 2
- createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, 0xffd8, -20, 16
+ createsprite gSeedFlareGreenCirclesTemplate, ANIM_ATTACKER, 2, -40, -20, 16
delay 30
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 40, 1
- createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 10, 0x900, 0x60, 1
+ createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 40, 10, 2304, 96, 1
call CreateRazorLeafCutters
delay 2
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0x5a, 0x800, 0x60, 1
+ createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 40, 90, 2048, 96, 1
delay 8
- createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0x32, 0xa00, 0x60, 1
+ createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 40, 50, 2560, 96, 1
call CreateRazorLeafCutters
delay 2
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 20, 0x900, 0x60, 1
+ createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 40, 20, 2304, 96, 1
delay 8
- createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0x46, 0x7c0, 0x60, 1
+ createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 40, 70, 1984, 96, 1
call CreateRazorLeafCutters
delay 2
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
delay 8
- createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0, 0xb00, 0x60, 1
+ createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 40, 0, 2816, 96, 1
delay 10
- createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 0x28, 0x3c, 0xa00, 0x60, 1
+ createsprite gSeedFlareGreenWavesTemplate, ANIM_ATTACKER, 40, 60, 2560, 96, 1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_WHITE
waitforvisualfinish
@@ -3715,38 +3715,38 @@ gBattleAnimMove_WideGuard::
monbg ANIM_ATTACKER
setalpha 12, 8
createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 3, 0
- waitplaysewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 0x10
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xffe8, 0xffe8
+ waitplaysewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 16
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, -24, -24
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xfff8, 0xffe8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, -8, -24
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x8, 0xffe8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, 8, -24
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x18, 0xffe8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, 24, -24
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xffe8, 0xfff8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, -24, -8
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xfff8, 0xfff8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, -8, -8
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x8, 0xfff8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, 8, -8
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x18, 0xfff8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, 24, -8
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xffe8, 0x8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, -24, 8
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xfff8, 0x8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, -8, 8
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x8, 0x8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, 8, 8
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x18, 0x8
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, 24, 8
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xffe8, 0x18
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, -24, 24
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0xfff8, 0x18
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, -8, 24
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x8, 0x18
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, 8, 24
delay 3
- createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 0x2, 0x18, 0x18
+ createsprite gWideGuardBlueConversionTemplate, ANIM_ATTACKER, 2, 24, 24
delay 20
playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET
createvisualtask AnimTask_ConversionAlphaBlend, 5
@@ -3757,7 +3757,7 @@ gBattleAnimMove_WideGuard::
gBattleAnimMove_GuardSplit::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
- loopsewithpan SE_M_LOCK_ON, SOUND_PAN_ATTACKER, 0x18, 0x3
+ loopsewithpan SE_M_LOCK_ON, SOUND_PAN_ATTACKER, 24, 3
call GuardSplitLaunch
call GuardSplitLaunch
call GuardSplitLaunch
@@ -3773,14 +3773,14 @@ gBattleAnimMove_GuardSplit::
waitforvisualfinish
end
GuardSplitLaunch:
- createsprite gGuardSwapOrbs1Template, ANIM_TARGET, 2, 0xfff4, 0x0
- createsprite gGuardSwapOrbs2Template, ANIM_TARGET, 0, 0x0, 0x0, 0x0, 0x0, 0x1E, 0x0
+ createsprite gGuardSwapOrbs1Template, ANIM_TARGET, 2, -12, 0
+ createsprite gGuardSwapOrbs2Template, ANIM_TARGET, 0, 0, 0, 0, 0, 30, 0
delay 5
return
gBattleAnimMove_PowerSplit::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
- loopsewithpan SE_M_LOCK_ON, SOUND_PAN_ATTACKER, 0x18, 0x3
+ loopsewithpan SE_M_LOCK_ON, SOUND_PAN_ATTACKER, 24, 3
call PowerSplitLaunch
call PowerSplitLaunch
call PowerSplitLaunch
@@ -3796,8 +3796,8 @@ gBattleAnimMove_PowerSplit::
waitforvisualfinish
end
PowerSplitLaunch:
- createsprite gPowerSplitOrbs1Template, ANIM_TARGET, 2, 0xfff4, 0x0
- createsprite gPowerSplitOrbs2Template, ANIM_TARGET, 0, 0x0, 0x0, 0x0, 0x0, 0x1E, 0x0
+ createsprite gPowerSplitOrbs1Template, ANIM_TARGET, 2, -12, 0
+ createsprite gPowerSplitOrbs2Template, ANIM_TARGET, 0, 0, 0, 0, 0, 30, 0
delay 5
return
@@ -3916,19 +3916,19 @@ gBattleAnimMove_Autotomize::
setalpha 12, 8
monbg ANIM_ATK_PARTNER
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 4, 4
- createvisualtask AnimTask_TraceMonBlended 0x2, 0x0, 0x4, 0x7, 0xa
+ createvisualtask AnimTask_TraceMonBlended 2, 0, 4, 7, 10
playsewithpan SE_ELEVATOR, SOUND_PAN_ATTACKER
- createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x0
- createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x1
+ createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 2, 0, 0
+ createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 2, 0, 1
delay 12
- createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x2
- createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x3
+ createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 2, 0, 2
+ createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 2, 0, 3
delay 12
- createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x0
- createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x1
+ createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 2, 0, 0
+ createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 2, 0, 1
delay 12
- createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x2
- createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 0x2, 0x0, 0x3
+ createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 2, 0, 2
+ createsprite gAutotomizeMetalShardsTemplate, ANIM_ATTACKER, 2, 0, 3
delay 24
waitforvisualfinish
stopsound
@@ -3939,7 +3939,7 @@ gBattleAnimMove_Autotomize::
gBattleAnimMove_RagePowder::
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
- loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 0x12, 0xa
+ loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 18, 10
call RagePowderSprinkle
call RagePowderSprinkle
call RagePowderSprinkle
@@ -3948,11 +3948,11 @@ gBattleAnimMove_RagePowder::
clearmonbg ANIM_DEF_PARTNER
end
RagePowderSprinkle:
- createsprite gRagePowderRedPowderTemplate, ANIM_ATTACKER, 0x2, 0x0, 0xffec, 0x55, 0x50, 0x0
+ createsprite gRagePowderRedPowderTemplate, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0
delay 12
- createsprite gRagePowderRedPowderTemplate, ANIM_ATTACKER, 0x2, 0x0, 0xfff6, 0xaa, 0x50, 0x0
+ createsprite gRagePowderRedPowderTemplate, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0
delay 12
- createsprite gRagePowderRedPowderTemplate, ANIM_ATTACKER, 0x2, 0x0, 0xfff1, 0x0, 0x50, 0x0
+ createsprite gRagePowderRedPowderTemplate, ANIM_ATTACKER, 2, 0, -15, 0, 80, 0
delay 12
return
@@ -3962,9 +3962,9 @@ gBattleAnimMove_Telekinesis::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_WHITE
delay 18
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 0xd, 0x14, 0xffec
+ createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 20, -20
waitforvisualfinish
- loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 0xa, 0x3
+ loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 3
createvisualtask AnimTask_SwayMon, 5, 1, 24, 208, 1, ANIM_TARGET
waitforvisualfinish
delay 10
@@ -3987,9 +3987,9 @@ gBattleAnimGeneral_MagicRoom::
gBattleAnimMove_SmackDown::
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER
- createsprite gRockBlastRockSpriteTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x0, 0x0, 0x15, 0xffe7
+ createsprite gRockBlastRockSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 21, -25
waitforvisualfinish
- createvisualtask AnimTask_SmokescreenImpact, 0x8, 0x400, 0x1902
+ createvisualtask AnimTask_SmokescreenImpact, 8, 1024, 6402
fadetobg BG_IN_AIR
waitbgfadeout
createvisualtask AnimTask_SeismicTossBgAccelerateDownAtEnd, 3
@@ -4105,28 +4105,28 @@ gBattleAnimMove_Synchronoise::
splitbgprio_foes ANIM_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK @Darken
waitforvisualfinish
- panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
- createsprite gSynchronoiseVioletRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
+ panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
+ createsprite gSynchronoiseVioletRingTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
delay 1
- createsprite gSynchronoiseBlueRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
+ createsprite gSynchronoiseBlueRingTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
delay 1
- createsprite gSynchronoiseYellowRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
+ createsprite gSynchronoiseYellowRingTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
delay 37
- panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
- createsprite gSynchronoiseBlueRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
+ panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
+ createsprite gSynchronoiseBlueRingTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
delay 1
- createsprite gSynchronoiseVioletRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
+ createsprite gSynchronoiseVioletRingTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
delay 1
- createsprite gSynchronoiseYellowRingTemplate, ANIM_ATTACKER, 0x0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
+ createsprite gSynchronoiseYellowRingTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
waitforvisualfinish
- loopsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET, 0x3, 0x5
- createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, SOUND_PAN_ATTACKER, 0xb0, 0x28
- createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0xff40, 0xf0, 0x28
- createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, SOUND_PAN_ATTACKER, 0xff60, 0x28
- createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0xff40, 0xff90, 0x28
- createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0xa0, 0x30, 0x28
- createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0xff20, 0xffe0, 0x28
- createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0x0, 0xffef, 0x70, 0xff80, 0x28
+ loopsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET, 3, 5
+ createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0, -17, SOUND_PAN_ATTACKER, 176, 40
+ createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0, -17, -192, 240, 40
+ createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0, -17, SOUND_PAN_ATTACKER, -160, 40
+ createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0, -17, -192, -112, 40
+ createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0, -17, 160, 48, 40
+ createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0, -17, -224, -32, 40
+ createsprite gSynchronoiseAeroWheelTemplate, ANIM_TARGET, 1, 0, -17, 112, -128, 40
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_BLACK @Darken
waitforvisualfinish
@@ -4145,7 +4145,7 @@ gBattleAnimMove_ElectroBall::
delay 15
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
delay 6
- loopsewithpan SE_M_CHARGE, 0xC, 0x6, 0x5
+ loopsewithpan SE_M_CHARGE, 12, 6, 5
waitforvisualfinish
createsprite gElectroBallCannonBallTemplate, ANIM_TARGET, 2, 16, 16, 8
waitforvisualfinish
@@ -4192,7 +4192,7 @@ gBattleAnimMove_Soak::
gBattleAnimMove_FlameCharge::
monbg ANIM_TARGET
- loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 0x20, 0x6
+ loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 32, 6
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 6, 3
call FlameChargeSwirl
delay 9
@@ -4213,12 +4213,12 @@ gBattleAnimMove_FlameCharge::
playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_ATTACKER
waitforvisualfinish
delay 8
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x7
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 7
waitforvisualfinish
clearmonbg ANIM_TARGET
end
FlameChargeSwirl:
- createsprite gFlameChargeEmberTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gFlameChargeEmberTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
return
gBattleAnimMove_Coil::
@@ -4268,17 +4268,17 @@ gBattleAnimMove_AcidSpray::
gBattleAnimMove_FoulPlay::
monbg ANIM_TARGET
setalpha 12, 8
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
delay 6
- createsprite gFoulPlayImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x1
+ createsprite gFoulPlayImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
playsewithpan SE_M_VITAL_THROW SOUND_PAN_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 3, 10, 0, RGB_BLACK
- createsprite gFoulPlayRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0
+ createsprite gFoulPlayRingTemplate, ANIM_ATTACKER, 3, 0, 0, 256, 0
delay 8
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 3, 10, 0, RGB_BLACK
- createsprite gFoulPlayRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0
+ createsprite gFoulPlayRingTemplate, ANIM_ATTACKER, 3, 0, 0, 256, 0
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
@@ -4299,9 +4299,9 @@ gBattleAnimMove_SimpleBeam::
call SimpleBeamWithRings
call SimpleBeamWithRings
call SimpleBeamWithRings
- createsprite gSimpleBeamBrownRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1F, 0x8
+ createsprite gSimpleBeamBrownRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
delay 2
- createsprite gSimpleBeamPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1F, 0x8
+ createsprite gSimpleBeamPinkRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
delay 2
stopsound
waitforvisualfinish
@@ -4312,17 +4312,17 @@ gBattleAnimMove_SimpleBeam::
blendoff
end
SimpleBeamsRegular:
- createsprite gSimpleBeamBrownTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xd, 0x0
+ createsprite gSimpleBeamBrownTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 13, 0
delay 2
- createsprite gSimpleBeamPinkTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xd, 0x0
+ createsprite gSimpleBeamPinkTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 13, 0
delay 2
return
SimpleBeamWithRings:
- createsprite gSimpleBeamBrownTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xd, 0x0
- createsprite gSimpleBeamBrownRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1F, 0x8
+ createsprite gSimpleBeamBrownTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 13, 0
+ createsprite gSimpleBeamBrownRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
delay 2
- createsprite gSimpleBeamPinkTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xd, 0x0
- createsprite gSimpleBeamPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1F, 0x8
+ createsprite gSimpleBeamPinkTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 13, 0
+ createsprite gSimpleBeamPinkRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
delay 2
return
@@ -4344,12 +4344,12 @@ gBattleAnimMove_Entrainment::
gBattleAnimMove_AfterYou::
createvisualtask AnimTask_SwayMon, 5, 1, 15, 1536, 2, ANIM_ATTACKER
delay 1
- createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0x0, 0xffec, 0xffe0
- createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xffe5
+ createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0, -20, -32
+ createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0, -5, -27
playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER
delay 20
- createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0x0, 0x14, 0xffe0
- createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0x0, 0x23, 0xffe5
+ createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0, 20, -32
+ createsprite gAfterYouGreenRageTemplate, ANIM_ATTACKER, 2, 0, 35, -27
playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER
waitforvisualfinish
end
@@ -4390,7 +4390,7 @@ gBattleAnimMove_EchoedVoice::
end
MetalSoundPlayNote:
panse SE_M_UPROAR, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
- createsprite gMetalSoundSpriteTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0x1e, 0x0
+ createsprite gMetalSoundSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0
delay 2
return
@@ -4481,14 +4481,14 @@ gBattleAnimMove_QuickGuard::
createsprite gQuickGuardArmImpactTemplate, ANIM_TARGET, 3, -14, 0, 8, ANIM_ATTACKER, 0
waitforvisualfinish
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0x0, 0xffe3 @up
- createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0x16, 0xffec @upper right
- createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0x1D, 0x0 @right
- createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0xffe9, 0xffec @upper left
- createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0xffe2, 0x0 @left
- createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0x0, 0x1c @down
- createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0x16, 0x13 @lower left
- createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0xffea, 0x13 @lower right
+ createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0, -29 @up
+ createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 22, -20 @upper right
+ createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 29, 0 @right
+ createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, -23, -20 @upper left
+ createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, -30, 0 @left
+ createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 0, 28 @down
+ createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 22, 19 @lower left
+ createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, -22, 19 @lower right
waitforvisualfinish
blendoff
clearmonbg ANIM_ATTACKER
@@ -4605,7 +4605,7 @@ gBattleAnimMove_Hex::
splitbgprio_all
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
waitbgfadein
- createvisualtask AnimTask_PurpleFlamesOnTarget, 0x3
+ createvisualtask AnimTask_PurpleFlamesOnTarget, 3
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 2, 0, 37, 1
playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET
delay 32
@@ -4624,11 +4624,11 @@ SkyDropSetup:
invisible ANIM_ATTACKER
delay 0
playsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER
- createsprite gSkyDropFlyBallTemplate, ANIM_TARGET, 0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x0
+ createsprite gSkyDropFlyBallTemplate, ANIM_TARGET, 0, 0, 0, 0, 0, 30, 0
waitforvisualfinish
invisible ANIM_TARGET
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gSkyDropTargetFlyingTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gSkyDropTargetFlyingTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
end
SkyDropUnleash:
visible ANIM_TARGET
@@ -4648,8 +4648,8 @@ SkyDropUnleash:
gBattleAnimMove_ShiftGear::
monbg ANIM_ATTACKER
playsewithpan SE_ESCALATOR, SOUND_PAN_ATTACKER
- createsprite gShiftGearGearsTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xFFF3, 0x8, 0x65, 0xa
- createsprite gShiftGearGearsTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xE, 0xFFF8, 0x65, 0xa
+ createsprite gShiftGearGearsTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -13, 8, 101, 10
+ createsprite gShiftGearGearsTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 14, -8, 101, 10
waitforvisualfinish
clearmonbg ANIM_ATTACKER
end
@@ -4663,16 +4663,16 @@ gBattleAnimMove_CircleThrow::
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4
delay 2
create_basic_hitsplat_sprite ANIM_ATTACKER, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=1
- createsprite gCircleThrowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0
+ createsprite gCircleThrowRingTemplate, ANIM_ATTACKER, 3, 0, 0, 256, 0
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
delay 1
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -24, 0, 0, 4
- createsprite gCircleThrowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0
+ createsprite gCircleThrowRingTemplate, ANIM_ATTACKER, 3, 0, 0, 256, 0
waitforvisualfinish
delay 3
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x7
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 7
delay 11
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0xa
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 10
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
blendoff
@@ -4722,10 +4722,10 @@ gBattleAnimMove_Quash::
waitbgfadein
setalpha 12, 8
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
- createsprite gQuashArmHitTemplate, ANIM_TARGET, 3, 0x0, 0xffe0, 0xf
+ createsprite gQuashArmHitTemplate, ANIM_TARGET, 3, 0, -32, 15
delay 19
playsewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER
- createvisualtask AnimTask_SquishTarget, 0x2
+ createvisualtask AnimTask_SquishTarget, 2
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
@@ -4809,11 +4809,11 @@ gBattleAnimMove_ReflectType::
monbg ANIM_TARGET
setalpha 8, 8
playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET
- createsprite gReflectTypeBlueStringTemplate, ANIM_TARGET, 2, 0x0, 0xa
+ createsprite gReflectTypeBlueStringTemplate, ANIM_TARGET, 2, 0, 10
delay 4
- createsprite gReflectTypeVioletStringTemplate, ANIM_TARGET, 2, 0x0, 0xfffe
+ createsprite gReflectTypeVioletStringTemplate, ANIM_TARGET, 2, 0, -2
delay 4
- createsprite gReflectTypeWhiteStringTemplate, ANIM_TARGET, 2, 0x0, 0x16
+ createsprite gReflectTypeWhiteStringTemplate, ANIM_TARGET, 2, 0, 22
waitforvisualfinish
clearmonbg ANIM_TARGET
delay 31
@@ -4842,12 +4842,12 @@ gBattleAnimMove_ReflectType::
gBattleAnimMove_Retaliate::
monbg ANIM_DEF_PARTNER
setalpha 9, 8
- createvisualtask AnimTask_AttackerPunchWithTrace, 0x2, 0x7128, 0xa
+ createvisualtask AnimTask_AttackerPunchWithTrace, 2, 28968, 10
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 16, RGB_BLACK
waitforvisualfinish
playsewithpan SE_M_CUT, SOUND_PAN_TARGET
- createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0x0
- createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0x1
+ createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0
+ createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 1
delay 56
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 16, RGB(29, 1, 1)
@@ -4866,7 +4866,7 @@ gBattleAnimMove_FinalGambit::
blend_color_cycle selector=F_PAL_ATTACKER, delay=0, num_blends=2, initial_blend_y=0, target_blend_y=8, color=RGB_WHITE
waitforvisualfinish
playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER
- createsprite gFinalGambitBlueYawnTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x25
+ createsprite gFinalGambitBlueYawnTemplate, ANIM_ATTACKER, 2, 0, 0, 37
delay 4
waitforvisualfinish
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 15, 1
@@ -4875,7 +4875,7 @@ gBattleAnimMove_FinalGambit::
monbg ANIM_TARGET
delay 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gFinalGambitExplosionTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1
+ createsprite gFinalGambitExplosionTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1
waitforvisualfinish
clearmonbg ANIM_TARGET
@@ -4886,8 +4886,8 @@ gBattleAnimMove_FinalGambit::
gBattleAnimMove_Bestow::
monbg ANIM_TARGET
splitbgprio ANIM_TARGET
- panse SE_M_METRONOME, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
- createvisualtask AnimTask_CreateBestowItem, 0x2, 0x14, 0x0, 0x0, 0x0, 0x28, 0xffe7
+ panse SE_M_METRONOME, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
+ createvisualtask AnimTask_CreateBestowItem, 2, 20, 0, 0, 0, 40, -25
waitforvisualfinish
unloadspritegfx ANIM_TAG_ITEM_BAG @;The generated item sprite uses this tag
unloadspritepal ANIM_TAG_ITEM_BAG @;The generated item sprite uses this tag
@@ -5297,11 +5297,11 @@ gBattleAnimMove_StruggleBug::
createvisualtask AnimTask_FlailMovement, 2, ANIM_ATTACKER
createsprite gMovementWavesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2
createsprite gMovementWavesSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 2
- loopsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER, 0x8, 0x2
+ loopsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER, 8, 2
waitforvisualfinish
create_random_pos_hitsplat_sprite ANIM_TARGET, 3, relative_to=ANIM_TARGET, animation=1
- createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 0x1e, 1, 0
- createvisualtask AnimTask_ShakeTargetPartnerBasedOnMovePowerOrDmg, 2, FALSE, 1, 0x1e, 1, 0
+ createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 30, 1, 0
+ createvisualtask AnimTask_ShakeTargetPartnerBasedOnMovePowerOrDmg, 2, FALSE, 1, 30, 1, 0
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB(31, 16, 2)
delay 5
@@ -5321,36 +5321,36 @@ gBattleAnimMove_Bulldoze::
gBattleAnimMove_FrostBreath::
fadetobg BG_ICE
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x300, 0x0, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 768, 0, 0, -1
waitbgfadein
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER, 15, 0, 0, 4
waitforvisualfinish
- createsprite gFrostBreathBlueBreathTemplate, ANIM_TARGET, 2, 0x1e, 0xf, 0x0, 0xa, 0xa
+ createsprite gFrostBreathBlueBreathTemplate, ANIM_TARGET, 2, 30, 15, 0, 10, 10
waitforvisualfinish
unloadspritegfx ANIM_TAG_SMALL_EMBER
unloadspritepal ANIM_TAG_SMALL_EMBER
- loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 0xb, 0x3
+ loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 11, 3
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 3, 25, 1
- createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0x5, 0x0
+ createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 1, 5, 0
delay 1
- createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0xfff6, 0xfff1
+ createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 1, -10, -15
delay 1
- createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x19
+ createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 2, 1, 0, 25
delay 1
- createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0xf, 0x5
+ createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 1, 15, 5
delay 1
- createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0xffe7, 0x0
+ createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 1, -25, 0
delay 1
- createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 2, 0x1, 0x1e, 0x1e
+ createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 2, 1, 30, 30
delay 1
- createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 2, 0x1, 0xffe5, 0x19
+ createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 2, 1, -27, 25
delay 1
- createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 0x1, 0x0, 0x8
+ createsprite gFrostBreathBlueRageTemplate, ANIM_TARGET, 66, 1, 0, 8
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 66, 0x0, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 66, 0, 0, 4
waitforvisualfinish
call UnsetPsychicBg
end
@@ -5368,13 +5368,13 @@ gBattleAnimMove_DragonTail::
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
create_basic_hitsplat_sprite ANIM_ATTACKER, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=1
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -12, 10, 0, 3
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
call TailWhackDown
delay 3
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1
waitforvisualfinish
delay 5
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 6
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
@@ -5382,7 +5382,7 @@ gBattleAnimMove_DragonTail::
TailWhackDown:
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=-10, y=-8, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 0x1b, 2, 3
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 27, 2, 3
createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 28, 3, 4
createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 30, 2, 3
createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 25, 4, 4
@@ -5447,13 +5447,13 @@ gBattleAnimMove_WildCharge::
createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 2 @electric circle
delay 30
waitforvisualfinish
- loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 0x1c, 0x2
+ loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2
call ScreenFlash
waitforvisualfinish
call ScreenFlash
waitforvisualfinish
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
- createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x6, 0x1, 0x0
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
waitforvisualfinish
delay 11
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5
@@ -5463,7 +5463,7 @@ gBattleAnimMove_WildCharge::
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
call ElectricityEffect
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
@@ -5487,14 +5487,14 @@ gBattleAnimMove_DualChop::
splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
delay 6
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1
createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 0, 0, 10, 1, 3, 0 @left
createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, 1301, 0, 0, 0, 10, 1, 3, 0 @right
waitforvisualfinish
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
- createsprite gDualChopImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2
+ createsprite gDualChopImpactTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
@@ -5503,19 +5503,19 @@ gBattleAnimMove_DualChop::
gBattleAnimMove_HeartStamp::
monbg ANIM_TARGET
- loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 0xc, 0x3
- createsprite gHeartStampSpinningHeartTemplate, ANIM_TARGET, 0, 0x0, 0x0, 0x1, 0x1e
+ loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 12, 3
+ createsprite gHeartStampSpinningHeartTemplate, ANIM_TARGET, 0, 0, 0, 1, 30
delay 30
clearmonbg ANIM_TARGET
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon2, 131, ANIM_TARGET, 4, 0, 5, 1
- createvisualtask AnimTask_StretchTargetUp, 0x3
+ createvisualtask AnimTask_StretchTargetUp, 3
waitforvisualfinish
end
gBattleAnimMove_HornLeech::
playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER
- createsprite gHornLeechHornTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x25
+ createsprite gHornLeechHornTemplate, ANIM_TARGET, 2, 0, 0, 37
waitforvisualfinish
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1
create_flashing_hitsplat_sprite ANIM_TARGET, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=1
@@ -5530,7 +5530,7 @@ gBattleAnimMove_SacredSword::
monbg ANIM_ATTACKER
setalpha 12, 8
playsewithpan SE_M_SWORDS_DANCE, SOUND_PAN_ATTACKER
- createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0
+ createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0
delay 22
flash_anim_tag_with_color tag=ANIM_TAG_SWORD, delay=2, num_blends=2, color1=RGB(18, 31, 31), blend_y1=16, color2=0, blend_y2=0
waitforvisualfinish
@@ -5538,8 +5538,8 @@ gBattleAnimMove_SacredSword::
delay 1
monbg ANIM_TARGET
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gSacredSwordBladesTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xFF00, 0xA
- createsprite gSacredSwordCutTemplate, ANIM_ATTACKER, 2, 0x28, 0xffe0, 0x0
+ createsprite gSacredSwordBladesTemplate, ANIM_TARGET, 1, 0, 10, 0, -256, 10
+ createsprite gSacredSwordCutTemplate, ANIM_ATTACKER, 2, 40, -32, 0
delay 5
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1
waitforvisualfinish
@@ -5550,9 +5550,9 @@ gBattleAnimMove_SacredSword::
gBattleAnimMove_RazorShell::
monbg ANIM_TARGET
- createsprite gRazorShellTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x0, 25, 0
+ createsprite gRazorShellTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 0, 25, 0
playsewithpan SE_M_CUT, SOUND_PAN_TARGET
- createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 1, 0x28, 0xffe0, 0x0
+ createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 1, 40, -32, 0
delay 5
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1
waitforvisualfinish
@@ -5564,7 +5564,7 @@ gBattleAnimMove_HeatCrash::
monbg ANIM_TARGET
setalpha 12, 8
playsewithpan SE_SUCCESS, SOUND_PAN_TARGET
- createsprite gHeatCrashEruptionRockTemplate, ANIM_ATTACKER, 3, 0x0, 0xffe0, 0xf
+ createsprite gHeatCrashEruptionRockTemplate, ANIM_ATTACKER, 3, 0, -32, 15
delay 19
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=-8, relative_to=ANIM_TARGET, animation=1
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 4, 9, 1
@@ -5573,10 +5573,10 @@ gBattleAnimMove_HeatCrash::
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=10, y=-8, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 5, 1
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfff4, 0x20, 0x3, 0x4
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0x8, 0x1f, 0x2, 0x2
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfffc, 0x1c, 0x2, 0x3
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xc, 0x1e, 0x4, 0x3
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 32, 3, 4
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 31, 2, 2
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 28, 2, 3
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 30, 4, 3
clearmonbg ANIM_TARGET
blendoff
end
@@ -5586,8 +5586,8 @@ gBattleAnimMove_LeafTornado::
splitbgprio ANIM_TARGET
playsewithpan SE_M_GUST, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 47, 1
- createsprite gEllipticalGustSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
- createvisualtask AnimTask_AnimateGustTornadoPalette, 0x5, 0x1, 0x46
+ createsprite gEllipticalGustSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
+ createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70
call LeafTornadoVortex
call LeafTornadoVortex
call LeafTornadoVortex
@@ -5596,17 +5596,17 @@ gBattleAnimMove_LeafTornado::
clearmonbg ANIM_TARGET
end
LeafTornadoVortex:
- createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x1
+ createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, 1
delay 2
- createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x1
+ createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, 1
delay 2
- createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x1
+ createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, 1
delay 2
- createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x1
+ createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, 1
delay 2
- createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x1
+ createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, 1
delay 2
- createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, 0x1
+ createsprite gLeafTornadoVortexTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, 1
delay 2
return
@@ -5638,7 +5638,7 @@ gBattleAnimMove_Steamroller::
gBattleAnimMove_CottonGuard::
monbg ANIM_ATK_PARTNER
setalpha 12, 8
- loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET 0x12 0x6
+ loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET 18 6
call CreateCottonSpores
call CottonSporesSpiralInward
call CottonSporesSpiralInward
@@ -5648,19 +5648,19 @@ gBattleAnimMove_CottonGuard::
blendoff
end
CottonSporesSpiralInward:
- createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0x28, 0xfff6, 0xd
+ createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 40, -10, 13
delay 3
- createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0xffdd, 0xfff6, 0xd
+ createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, -35, -10, 13
delay 3
- createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0xf, 0xffd8, 0xd
+ createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 15, -40, 13
delay 3
- createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xffe0, 0xd
+ createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, -10, -32, 13
delay 3
- createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0x19, 0xffec, 0xd
+ createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 25, -20, 13
delay 3
- createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0xd
+ createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, -40, -20, 13
delay 3
- createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 0x5, 0xffd8, 0xd
+ createsprite gCottonGuardSporeTemplate, ANIM_ATTACKER, 2, 5, -40, 13
delay 3
return
@@ -5668,25 +5668,25 @@ gBattleAnimMove_NightDaze::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
playsewithpan SE_ORB, SOUND_PAN_ATTACKER
- createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
- createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x0
- createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x20
- createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x40
- createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x60
- createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x80
- createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0xa0
- createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0x0
- createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0xe0
+ createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
+ createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0
+ createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 32
+ createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 64
+ createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 96
+ createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 128
+ createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 160
+ createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 0
+ createsprite gNightDazeVioletCirclesTemplate, ANIM_TARGET, 2, 224
delay 1
- createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
+ createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
delay 1
- createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
+ createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
delay 15
- createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
+ createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
delay 1
- createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
+ createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
delay 1
- createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
+ createsprite gNightDazeVioletRingsTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
waitforvisualfinish
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 31, 1
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB(2, 0, 8)
@@ -5705,12 +5705,12 @@ gBattleAnimMove_Psystrike::
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1
blend_color_cycle selector=F_PAL_ATTACKER, delay=0, num_blends=2, initial_blend_y=0, target_blend_y=8, color=RGB_RED
waitforvisualfinish
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 3
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 15, 1
createvisualtask AnimTask_ScaleMonAndRestore, 5, -9, -9, 15, ANIM_TARGET, 1
waitforvisualfinish
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
@@ -5728,10 +5728,10 @@ TailSlapContinue:
blendoff
end
TailSlapRight:
- createsprite gTailSlapTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x0, 0x1, 0x0
+ createsprite gTailSlapTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 0
goto TailSlapContinue
TailSlapLeft:
- createsprite gTailSlapTemplate, ANIM_ATTACKER, 2, 0x8, 0x0, 0x1, 0x0
+ createsprite gTailSlapTemplate, ANIM_ATTACKER, 2, 8, 0, 1, 0
goto TailSlapContinue
gBattleAnimMove_Hurricane::
@@ -5740,7 +5740,7 @@ gBattleAnimMove_Hurricane::
setalpha 12, 8
fadetobg BG_HURRICANE
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x1000, 0x0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 4096, 0, 1, -1
waitbgfadein
playsewithpan SE_M_GUST, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 64, 1
@@ -5773,15 +5773,15 @@ HurricaneGustCentered:
gBattleAnimMove_HeadCharge::
fadetobgfromset BG_GIGA_IMPACT_OPPONENT, BG_GIGA_IMPACT_PLAYER, BG_GIGA_IMPACT_OPPONENT
waitbgfadein
- createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0
playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER
waitforvisualfinish
delay 2
- createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x1
+ createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1
waitforvisualfinish
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 2, 0, 4, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1
- createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x2
+ createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2
create_flashing_hitsplat_sprite ANIM_TARGET, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
waitforvisualfinish
@@ -5793,14 +5793,14 @@ gBattleAnimMove_GearGrind::
monbg ANIM_TARGET
setalpha 12, 8
playsewithpan SE_ESCALATOR, SOUND_PAN_ATTACKER
- createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe0, 0x0, 0x333, 0x333, 0xa
- createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0x0, 0xfccd, 0xfccd, 0xa
+ createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, -32, -32, 0, 819, 819, 10
+ createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 32, 32, 0, -819, -819, 10
delay 10
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=-8, y=0, relative_to=ANIM_TARGET, animation=1
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 5, 2
waitforvisualfinish
- createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0x20, 0xffe0, 0x0, 0xfccd, 0x333, 0xa
- createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x20, 0x0, 0x333, 0xfccd, 0xa
+ createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, 32, -32, 0, -819, 819, 10
+ createsprite gGearGrindTemplate, ANIM_ATTACKER, 2, -32, 32, 0, 819, -819, 10
delay 10
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=8, y=0, relative_to=ANIM_TARGET, animation=1
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 8, 4, 2
@@ -5824,7 +5824,7 @@ gBattleAnimMove_SearingShot::
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
delay 30
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
- createsprite gSearingShotRedChargeTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gSearingShotRedChargeTemplate, ANIM_ATTACKER, 2, 0
delay 25
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
delay 20
@@ -5833,38 +5833,38 @@ gBattleAnimMove_SearingShot::
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
waitforvisualfinish
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x1e, 0x19, 0xffec
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x20, 0x1e, 0x19, 0xffec
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x40, 0x1e, 0x19, 0xffec
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 1, 0, 30, 25, -20
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 1, 32, 30, 25, -20
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 1, 64, 30, 25, -20
delay 2
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x60, 0x1e, 0x19, 0xffec
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x80, 0x1e, 0x19, 0xffec
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 1, 96, 30, 25, -20
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 1, 128, 30, 25, -20
delay 2
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xa0, 0x1e, 0x19, 0xffec
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xa0, 0x1e, 0x19, 0xffec
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 1, 160, 30, 25, -20
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 1, 160, 30, 25, -20
delay 2
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xe0, 0x1e, 0x19, 0xffec
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 1, 224, 30, 25, -20
delay 15
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x1e, 0x19, 0x0
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 1, 0, 30, 25, 0
delay 2
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x20, 0x1e, 0x19, 0x0
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x40, 0x1e, 0x19, 0x0
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x60, 0x1e, 0x19, 0x0
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 1, 32, 30, 25, 0
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 1, 64, 30, 25, 0
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 1, 96, 30, 25, 0
delay 2
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 0x1, 0x80, 0x1e, 0x19, 0x0
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 2, 1, 128, 30, 25, 0
delay 2
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xa0, 0x1e, 0x19, 0x0
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xa0, 0x1e, 0x19, 0x0
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 1, 160, 30, 25, 0
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 1, 160, 30, 25, 0
delay 2
- createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 0x1, 0xe0, 0x1e, 0x19, 0x0
+ createsprite gSearingShotEruptionRockTemplate, ANIM_ATTACKER, 66, 1, 224, 30, 25, 0
delay 21
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB_RED
clearmonbg ANIM_ATTACKER
fadetobg BG_FIRE
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xA00, 0x0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 2560, 0, 1, -1
waitbgfadein
delay 30
monbg ANIM_ATK_PARTNER
@@ -5874,12 +5874,12 @@ gBattleAnimMove_SearingShot::
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 27, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATK_PARTNER, 3, 0, 27, 1
playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET
- createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, -5, -5, 0x1, 0x1E, ANIM_TARGET
- createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, 5, 10, 0x1, 0x1E, ANIM_TARGET
- createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, -5, -5, 0x1, 0x1E, ANIM_DEF_PARTNER
- createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, 5, 10, 0x1, 0x1E, ANIM_DEF_PARTNER
- createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, -5, -5, 0x1, 0x1E, ANIM_ATK_PARTNER
- createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, 5, 10, 0x1, 0x1E, ANIM_ATK_PARTNER
+ createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, -5, -5, 1, 30, ANIM_TARGET
+ createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, 5, 10, 1, 30, ANIM_TARGET
+ createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, -5, -5, 1, 30, ANIM_DEF_PARTNER
+ createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, 5, 10, 1, 30, ANIM_DEF_PARTNER
+ createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, -5, -5, 1, 30, ANIM_ATK_PARTNER
+ createsprite gSearingShotEruptionImpactTemplate, ANIM_TARGET, 3, 5, 10, 1, 30, ANIM_ATK_PARTNER
delay 30
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
waitforvisualfinish
@@ -5892,69 +5892,69 @@ gBattleAnimMove_SearingShot::
end
gBattleAnimMove_TechnoBlast::
- createvisualtask AnimTask_TechnoBlast, 0x5
- jumpargeq 0x0, TYPE_FIRE, TechnoBlastFire
- jumpargeq 0x0, TYPE_WATER, TechnoBlastWater
- jumpargeq 0x0, TYPE_ELECTRIC, TechnoBlastElectric
- jumpargeq 0x0, TYPE_ICE, TechnoBlastIce
+ createvisualtask AnimTask_TechnoBlast, 5
+ jumpargeq 0, TYPE_FIRE, TechnoBlastFire
+ jumpargeq 0, TYPE_WATER, TechnoBlastWater
+ jumpargeq 0, TYPE_ELECTRIC, TechnoBlastElectric
+ jumpargeq 0, TYPE_ICE, TechnoBlastIce
TechnoBlastNormal:
monbg ANIM_ATTACKER
setalpha 14, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
- loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 0xE, 0x8
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 0x10
+ loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 14, 8
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 40, 40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, -40, -40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0x28, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0, 40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd8, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0, -40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0xffec, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 40, -20, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x14, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 40, 20, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, -40, -20, 16
delay 2
- createsprite gTechnoBlastWhiteChargeTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gTechnoBlastWhiteChargeTemplate, ANIM_ATTACKER, 2, 0
call TechnoBlastWhiteCircles
call TechnoBlastWhiteCircles
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 40, 40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, -40, -40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0x28, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0, 40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd8, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0, -40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0xffec, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 40, -20, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x14, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 40, 20, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, -40, -20, 16
delay 2
waitforvisualfinish
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastWhiteBlastTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0
- createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0
- createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1
- createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0
- createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2
- createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0
- createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1
- createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0
- createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2
+ createsprite gTechnoBlastWhiteBlastTemplate, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0
+ createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0
+ createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1
+ createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 128, 40, 0
+ createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 2
+ createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 32, 40, 0
+ createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 96, 40, 1
+ createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0
+ createsprite gTechnoBlastWhiteSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2
waitforvisualfinish
playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1
- createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x1, 0x0
+ createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, 8, 8, 1, 0
delay 2
- createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0
+ createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, -8, -8, 1, 0
delay 2
- createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0
+ createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, 8, -8, 1, 0
delay 2
- createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0
+ createsprite gTechnoBlastWhiteSmokeTemplate, ANIM_TARGET, 2, -8, 8, 1, 0
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_BLACK
waitforvisualfinish
@@ -5962,33 +5962,33 @@ TechnoBlastNormal:
clearmonbg ANIM_ATTACKER
end
TechnoBlastWhiteCircles:
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, -40, 20, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x1e, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, -20, 30, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x14, 0xffe2, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 20, -30, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffec, 0xffe2, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, -20, -30, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x14, 0x1e, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 20, 30, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x0, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, -40, 0, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x0, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 40, 0, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 40, 40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, -40, -40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0x28, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0, 40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd8, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0, -40, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0xffec, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 40, -20, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0x28, 0x14, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 40, 20, 16
delay 2
- createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0x10
+ createsprite gTechnoBlastWhiteCircleTemplate, ANIM_ATTACKER, 2, -40, -20, 16
delay 2
return
@@ -5997,8 +5997,8 @@ TechnoBlastElectric:
setalpha 14, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
- loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 0xE, 0x8
- createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0x0
+ loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 14, 8
+ createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0
call TechnoBlastCharging1
delay 15
call TechnoBlastCharging2
@@ -6017,33 +6017,33 @@ TechnoBlastElectric:
delay 15
waitforvisualfinish
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastYellowBlastTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0
- createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0
- createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1
- createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0
- createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2
- createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0
- createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1
- createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0
- createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2
+ createsprite gTechnoBlastYellowBlastTemplate, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0
+ createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0
+ createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1
+ createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 128, 40, 0
+ createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 2
+ createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 32, 40, 0
+ createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 96, 40, 1
+ createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0
+ createsprite gTechnoBlastYellowSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2
waitforvisualfinish
playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1
- createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x1, 0x0
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x5, 0x1
+ createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, 8, 8, 1, 0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 5, 0, 5, 0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -5, 10, 5, 1
delay 2
- createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xf, 0x14, 0x5, 0x2
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xfff6, 0x5, 0x0
+ createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, -8, -8, 1, 0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 15, 20, 5, 2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -15, -10, 5, 0
delay 2
- createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x19, 0x0, 0x5, 0x1
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2
+ createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, 8, -8, 1, 0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 25, 0, 5, 1
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -8, 8, 5, 2
delay 2
- createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x2, 0xfff8, 0x5, 0x0
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1
+ createsprite gTechnoBlastYellowSmokeTemplate, ANIM_TARGET, 2, -8, 8, 1, 0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 2, -8, 5, 0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -20, 15, 5, 1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_BLACK
waitforvisualfinish
@@ -6052,17 +6052,17 @@ TechnoBlastElectric:
end
TechnoBlastCharging1:
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
return
TechnoBlastCharging2:
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
return
TechnoBlastWater:
@@ -6070,108 +6070,108 @@ TechnoBlastWater:
setalpha 14, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB(1, 0, 0)
waitforvisualfinish
- createsprite gTechnoBlastBlueChargeTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gTechnoBlastBlueChargeTemplate, ANIM_ATTACKER, 2, 0
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0
waitforvisualfinish
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastBlueBlastTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0
- createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0
- createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1
- createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0
- createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2
- createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0
- createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1
- createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0
- createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2
+ createsprite gTechnoBlastBlueBlastTemplate, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0
+ createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0
+ createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1
+ createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 128, 40, 0
+ createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 2
+ createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 32, 40, 0
+ createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 96, 40, 1
+ createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0
+ createsprite gTechnoBlastBlueSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2
waitforvisualfinish
playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1
- createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x1, 0x0
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x1
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x1
+ createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, 8, 8, 1, 0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 1
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 1
delay 2
- createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x1
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x1
+ createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, -8, -8, 1, 0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 1
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 1
delay 2
- createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x1
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x1
+ createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, 8, -8, 1, 0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 1
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 1
delay 2
- createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x1
- createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x1
+ createsprite gTechnoBlastBlueSmokeTemplate, ANIM_TARGET, 2, -8, 8, 1, 0
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 1
+ createsprite gTechnoBlastBlueBubbleTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_BLACK
waitforvisualfinish
@@ -6184,26 +6184,26 @@ TechnoBlastFire:
setalpha 14, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
- createsprite gTechnoBlastRedChargeTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gTechnoBlastRedChargeTemplate, ANIM_ATTACKER, 2, 0
delay 5
call TechnoBlastFireSpiral
call TechnoBlastFireSpiral
call TechnoBlastFireSpiral
waitforvisualfinish
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastRedBlastTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0
- createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0
- createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1
- createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0
- createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2
- createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0
- createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1
- createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0
- createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2
+ createsprite gTechnoBlastRedBlastTemplate, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0
+ createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0
+ createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1
+ createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 128, 40, 0
+ createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 2
+ createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 32, 40, 0
+ createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 96, 40, 1
+ createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0
+ createsprite gTechnoBlastRedSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2
waitforvisualfinish
playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1
- createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x1, 0x0
+ createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, 8, 8, 1, 0
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, 176, 40
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, -160, 40
@@ -6212,11 +6212,11 @@ TechnoBlastFire:
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -224, -32, 40
createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40
delay 2
- createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0
+ createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, -8, -8, 1, 0
delay 2
- createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0
+ createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, 8, -8, 1, 0
delay 2
- createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0
+ createsprite gTechnoBlastRedSmokeTemplate, ANIM_TARGET, 2, -8, 8, 1, 0
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_BLACK
waitforvisualfinish
@@ -6224,25 +6224,25 @@ TechnoBlastFire:
clearmonbg ANIM_ATTACKER
end
TechnoBlastFireSpiral:
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 4
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 8
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 12
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 16
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x14
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 20
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 24
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
return
@@ -6251,136 +6251,136 @@ TechnoBlastIce:
monbg ANIM_ATTACKER
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
- createsprite gTechnoBlastIceChargeTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gTechnoBlastIceChargeTemplate, ANIM_ATTACKER, 2, 0
delay 5
call TechnoBlastIceChargeParticles
call TechnoBlastIceChargeParticles
call TechnoBlastIceChargeParticles
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xfff6, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, -10, -10, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xa, 0x14, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 10, 20, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xfffb, 0xa, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, -5, 10, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0x11, 0xfff4, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 17, -12, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
waitforvisualfinish
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
- createsprite gTechnoBlastIceBlastTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0
- createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0
- createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1
- createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0
- createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2
- createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0
- createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1
- createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0
- createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2
+ createsprite gTechnoBlastIceBlastTemplate, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0
+ createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0
+ createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1
+ createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 128, 40, 0
+ createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 2
+ createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 32, 40, 0
+ createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 96, 40, 1
+ createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0
+ createsprite gTechnoBlastIceSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2
waitforvisualfinish
playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1
- createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x1, 0x0
- createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0
+ createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, 8, 8, 1, 0
+ createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0
delay 2
- createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0
- createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0
+ createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, -8, -8, 1, 0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 10, 20, 0
+ createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -5, 10, 0
delay 2
- createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xf, 0x0
+ createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, 8, -8, 1, 0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 17, -12, 0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, -15, 15, 0
delay 2
- createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0
- createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0x14, 0x2, 0x0
+ createsprite gTechnoBlastIceSmokeTemplate, ANIM_TARGET, 2, -8, 8, 1, 0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0
+ createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 20, 2, 0
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_BLACK
waitforvisualfinish
clearmonbg ANIM_ATTACKER
end
TechnoBlastIceChargeParticles:
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xfff6, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, -10, -10, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xa, 0x14, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 10, 20, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xfffb, 0xa, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, -5, 10, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0x11, 0xfff4, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 17, -12, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xf, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, -15, 15, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 0x14, 0x2, 0x0, 0x2
+ createsprite gTechnoBlastIceCrystalsTemplate, ANIM_ATTACKER, 2, 20, 2, 0, 2
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
return
gBattleAnimMove_RelicSong::
monbg ANIM_DEF_PARTNER
- createvisualtask AnimTask_MusicNotesRainbowBlend, 0x2
+ createvisualtask AnimTask_MusicNotesRainbowBlend, 2
waitforvisualfinish
createvisualtask SoundTask_PlayCryWithEcho, 2, FALSE
- createvisualtask AnimTask_UproarDistortion, 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1d, 0xfff4, 0x0
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0xffe3, 0x1
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x7, 0x0, 0xc
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 29, -12, 0
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, -29, 1
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 0, 12
delay 5
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x6, 0x1, 0xc
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 12
delay 5
- createvisualtask AnimTask_UproarDistortion, 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xc, 0xffe3, 0x1
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe3, 0xfff4, 0x0
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x2, 0xc
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 12, -29, 1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -29, -12, 0
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 1, 2, 12
delay 5
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x2, 0x3, 0xc
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 3, 12
delay 5
- createvisualtask AnimTask_UproarDistortion, 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x18, 0xffe8, 0x1
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0xffe8, 0x0
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x3, 0x0, 0xc
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, -24, 1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, -24, 0
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 3, 0, 12
delay 5
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x2, 0x1, 0xc
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 1, 12
delay 5
- createvisualtask AnimTask_UproarDistortion, 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1d, 0xfff4, 0x0
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0xffe3, 0x1
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x5, 0x2, 0xc
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 29, -12, 0
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, -29, 1
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 5, 2, 12
delay 5
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x6, 0x3, 0xc
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 3, 12
delay 5
- createvisualtask AnimTask_UproarDistortion, 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xc, 0xffe3, 0x1
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe3, 0xfff4, 0x0
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x2, 0x0, 0xc
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 12, -29, 1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -29, -12, 0
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 0, 12
delay 5
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x2, 0x1, 0xc
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 2, 1, 12
delay 5
- createvisualtask AnimTask_UproarDistortion, 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x18, 0xffe8, 0x1
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0xffe8, 0x0
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x2, 0xc
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, -24, 1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, -24, 0
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 1, 2, 12
delay 5
- createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 0x5, 0x3, 0xc
+ createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 5, 3, 12
delay 5
- createvisualtask AnimTask_UproarDistortion, 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1d, 0xfff4, 0x0
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0xffe3, 0x1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 29, -12, 0
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, -29, 1
waitforvisualfinish
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=-32, y=-16, relative_to=ANIM_TARGET, animation=3
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
@@ -6397,7 +6397,7 @@ gBattleAnimMove_RelicSong::
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
- createvisualtask AnimTask_MusicNotesClearRainbowBlend, 0x2
+ createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2
waitforvisualfinish
end
@@ -6406,7 +6406,7 @@ gBattleAnimMove_SecretSword::
setalpha 12, 8
playsewithpan SE_M_SWORDS_DANCE, SOUND_PAN_ATTACKER
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 16, RGB_BLACK
- createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0
+ createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0
delay 22
flash_anim_tag_with_color tag=ANIM_TAG_SWORD, delay=2, num_blends=2, color1=RGB(18, 31, 31), blend_y1=16, color2=0, blend_y2=0
waitforvisualfinish
@@ -6414,8 +6414,8 @@ gBattleAnimMove_SecretSword::
delay 1
monbg ANIM_TARGET
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gSecretSwordBladesTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xFF00, 0xA
- createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 0x28, 0xffe0, 0x0
+ createsprite gSecretSwordBladesTemplate, ANIM_TARGET, 1, 0, 10, 0, -256, 10
+ createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0
delay 5
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1
waitforvisualfinish
@@ -6432,18 +6432,18 @@ gBattleAnimMove_Glaciate::
fadetobg BG_ICE
waitbgfadeout
playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x68, 0x0, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x48, 0x1, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x38, 0x1, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x58, 0x0, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x38, 0x0, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x58, 0x1, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x48, 0x0, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x68, 0x1, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x48, 0x0, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x38, 0x1, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x50, 0x0, 0x4b
- createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x48, 0x1, 0x4b
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, -12, 104, 0, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, -12, 72, 1, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, -6, 56, 1, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, -6, 88, 0, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, 0, 56, 0, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, 0, 88, 1, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, 6, 72, 0, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, 6, 104, 1, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, 12, 72, 0, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, 12, 56, 1, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, 18, 80, 0, 75
+ createsprite gGlaciateSmokeTemplate, ANIM_TARGET, 4, 0, 18, 72, 1, 75
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_DEF_SIDE, 2, 0, 10, RGB_WHITE
call IceCrystalEffectLong
@@ -6466,7 +6466,7 @@ gBattleAnimMove_BoltStrike::
waitforvisualfinish
clearmonbg ANIM_ATTACKER
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
- waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 0x8
+ waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4
delay 10
fadetobg BG_BOLT_STRIKE
@@ -6480,7 +6480,7 @@ gBattleAnimMove_BoltStrike::
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 32, 1
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
call ElectricityEffect
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB(30, 31, 1)
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
call ElectricityEffect
@@ -6495,31 +6495,31 @@ gBattleAnimMove_BoltStrike::
gBattleAnimMove_BlueFlare::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 16, RGB_BLACK
- loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 0x7, 0x9
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe0, 0x10
+ loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 7, 9
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, 0, -32, 16
delay 2
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x16, 0xffea, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, 22, -22, 16
delay 2
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 9, RGB_RED
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x1e, 0x0, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, 30, 0, 16
delay 2
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x14, 0x14, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, 20, 20, 16
delay 2
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x1c, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, 0, 28, 16
delay 2
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffed, 0x13, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, -19, 19, 16
delay 2
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffe5, 0x0, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, -27, 0, 16
delay 2
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffee, 0xffee, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, -18, -18, 16
delay 2
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe7, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, 0, -25, 16
delay 2
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x11, 0xffef, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, 17, -17, 16
delay 2
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x17, 0x0, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, 23, 0, 16
delay 2
- createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0x10, 0x10
+ createsprite gBlueFlareFlameJabTemplate, ANIM_TARGET, 2, 1, 0, 16, 16, 16
waitforvisualfinish
playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET
call BlueFlareFireSpin
@@ -6527,7 +6527,7 @@ gBattleAnimMove_BlueFlare::
call BlueFlareFireSpin
fadetobg BG_FIRE_2
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x1000, 0x0, 0x0, 0xFFFF
+ createvisualtask AnimTask_StartSlidingBg, 5, 4096, 0, 0, -1
waitbgfadein
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
call BlueFlareFlameSpreadEffect
@@ -6538,27 +6538,27 @@ gBattleAnimMove_BlueFlare::
waitforvisualfinish
end
BlueFlareFireSpin:
- createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x1
+ createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, 1
delay 2
- createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x1
+ createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, 1
delay 2
- createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x1
+ createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, 1
delay 2
- createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x1
+ createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, 1
delay 2
- createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x1
+ createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, 1
delay 2
- createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, 0x1
+ createsprite gBlueFlareFlameSwirlTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, 1
delay 2
return
BlueFlareFlameSpreadEffect:
- createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xb0, 0x28
- createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff40, 0xf0, 0x28
- createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xff60, 0x28
- createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff40, 0xff90, 0x28
- createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xa0, 0x30, 0x28
- createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff20, 0xffe0, 0x28
- createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x70, 0xff80, 0x28
+ createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0, 10, 0, 176, 40
+ createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40
+ createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0, 10, 0, -160, 40
+ createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0, 10, -192, -112, 40
+ createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0, 10, 160, 48, 40
+ createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0, 10, -224, -32, 40
+ createsprite gBlueFlareBurnTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40
return
gBattleAnimMove_FieryDance::
@@ -6592,24 +6592,24 @@ FreezeShockCharge:
waitforvisualfinish
end
FreezeShockAttack:
- loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 0x5, 0x5
+ loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 5, 5
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 16, RGB_BLACK
monbg ANIM_TARGET
waitforvisualfinish
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_ATTACKER
- createsprite gFreezeShockIceBallTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2
+ createsprite gFreezeShockIceBallTemplate, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 128, 40, 0
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 2
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 32, 40, 0
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 96, 40, 1
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2
waitforvisualfinish
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1
delay 15
- waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 0x13
+ waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 19
call ElectricityEffect
waitforvisualfinish
clearmonbg ANIM_TARGET
@@ -6624,7 +6624,7 @@ gBattleAnimMove_IceBurn::
IceBurnCharge:
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
- loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 0x4, 0x3
+ loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 4, 3
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK
createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE
@@ -6639,39 +6639,39 @@ IceBurnUnleash:
fadetobg BG_ICE
waitbgfadeout
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB_WHITE
- createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0
+ createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x68, 0x0, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x48, 0x1, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x38, 0x1, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x58, 0x0, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x38, 0x0, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x58, 0x1, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x48, 0x0, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x68, 0x1, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x48, 0x0, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x38, 0x1, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x50, 0x0, 0x4b
- createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x48, 0x1, 0x4b
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, -12, 104, 0, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, -12, 72, 1, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, -6, 56, 1, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, -6, 88, 0, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, 0, 56, 0, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, 0, 88, 1, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, 6, 72, 0, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, 6, 104, 1, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, 12, 72, 0, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, 12, 56, 1, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, 18, 80, 0, 75
+ createsprite gIceBurnSmokeTemplate, ANIM_TARGET, 4, 0, 18, 72, 1, 75
call FireSpreadEffect
playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET
delay 4
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 10, 20, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0
+ createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -5, 10, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 17, -12, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xf, 0x0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, -15, 15, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0x14, 0x2, 0x0
+ createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 20, 2, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 9, 0, RGB_WHITE
waitforvisualfinish
@@ -6683,23 +6683,23 @@ gBattleAnimMove_Snarl::
monbg ANIM_DEF_PARTNER
fadetobg BG_DARK
waitbgfadeout
- createvisualtask AnimTask_UproarDistortion, 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1d, 0xfff4, 0x0
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0xffe3, 0x1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 29, -12, 0
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, -29, 1
delay 16
- createvisualtask AnimTask_UproarDistortion, 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xc, 0xffe3, 0x1
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe3, 0xfff4, 0x0
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 12, -29, 1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -29, -12, 0
delay 16
- createvisualtask AnimTask_UproarDistortion, 0x2, 0x0
+ createvisualtask AnimTask_UproarDistortion, 2, 0
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x18, 0xffe8, 0x1
- createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0xffe8, 0x0
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, -24, 1
+ createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, -24, 0
waitforvisualfinish
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=-32, y=-16, relative_to=ANIM_TARGET, animation=3
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
@@ -6724,16 +6724,16 @@ gBattleAnimMove_IcicleCrash::
fadetobg BG_ICE
waitbgfadein
monbg ANIM_DEF_PARTNER
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xfffb, 0x0, 0xfffb, 0x0
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, -5, 0, -5, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x6, 0x1
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 5, 0, 6, 1
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0x13, 0x0, 0xa, 0x01
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 19, 0, 10, 1
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xffe9, 0x0, 0xfff6, 0x1
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, -23, 0, -10, 1
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 50, 1
delay 2
@@ -6745,28 +6745,28 @@ gBattleAnimMove_IcicleCrash::
waitbgfadeout
end
LaunchIcicleCrashSpear:
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 0x0
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, -20, 0, -10, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0x1c, 0x0, 0xa, 0x0
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 28, 0, 10, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xfff6, 0x0, 0xfffb, 0x0
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, -10, 0, -5, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x6, 0x0
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 10, 0, 6, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0x18, 0x0, 0xa, 0x0
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 24, 0, 10, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xffe0, 0x0, 0xfff6, 0x0
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, -32, 0, -10, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 0x0
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, -20, 0, -10, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
- createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 0x1e, 0x0, 0xa, 0x0
+ createsprite gIcicleCrashSpearTemplate, ANIM_TARGET, 2, 30, 0, 10, 0
playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET
delay 2
return
@@ -6774,10 +6774,10 @@ LaunchIcicleCrashSpear:
gBattleAnimMove_VCreate::
monbg ANIM_ATK_PARTNER
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK @Darken
- createsprite gVCreateRedOrbTemplate, ANIM_ATTACKER, 2, 0x0, 0x11, 0x0, 0x1
+ createsprite gVCreateRedOrbTemplate, ANIM_ATTACKER, 2, 0, 17, 0, 1
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
delay 2
- createsprite gVCreateRedRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gVCreateRedRingTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 9, RGB_RED
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
@@ -6803,7 +6803,7 @@ gBattleAnimMove_VCreate::
clearmonbg ANIM_ATK_PARTNER
fadetobg BG_FIRE @Mr. DS Fire
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xA00, 0x0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 2560, 0, 1, -1
waitbgfadein
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -24, 8, 23, 10, 40, 10
@@ -6811,21 +6811,21 @@ gBattleAnimMove_VCreate::
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 50, 1
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB_RED
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1
waitforvisualfinish
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
create_claw_slash_sprite ANIM_TARGET, 2, x=-10, y=-10, animation=0
create_claw_slash_sprite ANIM_TARGET, 2, x=10, y=-10, animation=1
waitforvisualfinish
@@ -6834,7 +6834,7 @@ gBattleAnimMove_VCreate::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB_RED
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 9, 0, RGB_RED
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
call UnsetPsychicBg
@@ -6842,8 +6842,8 @@ gBattleAnimMove_VCreate::
waitforvisualfinish
end
VCreateFlames:
- createsprite gVCreateFlameTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x16, 0xFFEA, 0x10 @upperright
- createsprite gVCreateFlameTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFEE, 0xFFEE, 0x10 @upperleft
+ createsprite gVCreateFlameTemplate, ANIM_TARGET, 2, 0, 1, 22, -22, 16 @upperright
+ createsprite gVCreateFlameTemplate, ANIM_TARGET, 2, 0, 1, -18, -18, 16 @upperleft
delay 3
return
@@ -6858,26 +6858,26 @@ gBattleAnimMove_FusionFlare::
delay 8
blend_color_cycle selector=F_PAL_ATTACKER, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB_RED
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1
- createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x8, 0x1, 0x0
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 0
delay 8
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
createsprite gFusionFlareRedBallUpTemplate, ANIM_ATTACKER, 2
delay 32
- createsprite gFusionFlareRedBallTemplate, ANIM_ATTACKER, 3, 0x0, 0xffA0, 0x2F
- createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x64, 0x64, 0x8, 0x1, 0x14, 0x28, 0x0
- createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x14, 0x64, 0x10, 0x2, 0xa, 0x23, 0x1
- createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0xc8, 0x50, 0x8, 0x1, 0x28, 0x14, 0x0
- createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x50, 0x3c, 0xa, 0x3, 0x14, 0x32, 0x0
- createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x8c, 0x64, 0x10, 0x1, 0x14, 0x1e, 0x1
+ createsprite gFusionFlareRedBallTemplate, ANIM_ATTACKER, 3, 0, -96, 47
+ createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0
+ createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1
+ createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 200, 80, 8, 1, 40, 20, 0
+ createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 80, 60, 10, 3, 20, 50, 0
+ createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 140, 100, 16, 1, 20, 30, 1
delay 41
blend_color_cycle selector=F_PAL_TARGET, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB_RED
delay 5
- createsprite gFusionFlareRedRingTemplate, ANIM_ATTACKER, 3, 0x1, 0x1, 0x1, 0x1, 0x1F, 0x8
- createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x64, 0x64, 0x8, 0x1, 0x14, 0x28, 0x0
- createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x14, 0x64, 0x10, 0x2, 0xa, 0x23, 0x1
- createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0xc8, 0x50, 0x8, 0x1, 0x28, 0x14, 0x0
- createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x50, 0x3c, 0xa, 0x3, 0x14, 0x32, 0x0
- createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 0x8c, 0x64, 0x10, 0x1, 0x14, 0x1e, 0x1
+ createsprite gFusionFlareRedRingTemplate, ANIM_ATTACKER, 3, 1, 1, 1, 1, 31, 8
+ createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0
+ createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1
+ createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 200, 80, 8, 1, 40, 20, 0
+ createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 80, 60, 10, 3, 20, 50, 0
+ createsprite gFusionFlareRedBubblesTemplate, ANIM_ATTACKER, 66, 140, 100, 16, 1, 20, 30, 1
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 2, 16
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
@@ -6888,15 +6888,15 @@ gBattleAnimMove_FusionFlare::
blendoff
end
FusionFlareBuff:
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
gBattleAnimMove_FusionBolt::
@@ -6910,34 +6910,34 @@ gBattleAnimMove_FusionBolt::
invisible ANIM_ATTACKER
waitforvisualfinish
delay 8
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x0
+ createvisualtask AnimTask_VoltTackleBolt, 5, 0
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER
waitforvisualfinish
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x1
+ createvisualtask AnimTask_VoltTackleBolt, 5, 1
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET
waitforvisualfinish
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x2
+ createvisualtask AnimTask_VoltTackleBolt, 5, 2
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER
waitforvisualfinish
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x3
+ createvisualtask AnimTask_VoltTackleBolt, 5, 3
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET
waitforvisualfinish
- createsprite gFusionBoltBallTemplate, ANIM_TARGET, 2, 0x10
+ createsprite gFusionBoltBallTemplate, ANIM_TARGET, 2, 16
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER
delay 8
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 10, 0, 18, 1
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x10, 0x10
+ createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 1, 16, 16
delay 2
- createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0xfff0, 0xfff0
+ createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, -16
delay 8
- createvisualtask AnimTask_VoltTackleAttackerReappear, 0x5
+ createvisualtask AnimTask_VoltTackleAttackerReappear, 5
waitforvisualfinish
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 3, 0, 9, 1
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x10
+ createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 16
delay 2
- createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0, 0xfff0
+ createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 14, 0, RGB_BLACK
waitforvisualfinish
end
@@ -6946,30 +6946,30 @@ gBattleAnimMove_FusionBolt::
gBattleAnimMove_FlyingPress::
setalpha 15, 0
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
waitforvisualfinish
delay 15
playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET
createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3
delay 2
- createvisualtask AnimTask_SquishTarget, 0x2
+ createvisualtask AnimTask_SquishTarget, 2
delay 5
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
- createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0x8, 0x8, 0x1, 0x0
+ createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 8, 8, 1, 0
delay 2
- createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0xfff8, 0xfff8, 0x1, 0x0
+ createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, -8, -8, 1, 0
delay 2
- createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0x8, 0xfff8, 0x1, 0x0
+ createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 8, -8, 1, 0
delay 2
- createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0xfff8, 0x8, 0x1, 0x0
+ createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, -8, 8, 1, 0
delay 2
- createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0x8, 0x8, 0x1, 0x0
+ createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 8, 8, 1, 0
delay 2
- createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0xfff8, 0xfff8, 0x1, 0x0
+ createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, -8, -8, 1, 0
delay 2
- createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0x8, 0xfff8, 0x1, 0x0
+ createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 8, -8, 1, 0
delay 2
- createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, 0xfff8, 0x8, 0x1, 0x0
+ createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 0, -8, 8, 1, 0
waitforvisualfinish
blendoff
end
@@ -6980,22 +6980,22 @@ gBattleAnimMove_MatBlock::
setalpha 16, 0
delay 0
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
- createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x18
- createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0x18
+ createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, -8, 24
+ createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 8, 24
delay 3
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
- createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x8
- createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0x8
+ createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, -8, 8
+ createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 8, 8
delay 3
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
- createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0xfff8
- createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0xfff8
+ createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, -8, -8
+ createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 8, -8
delay 3
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
- createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0xffe8
- createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0xffe8
+ createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, -8, -24
+ createsprite gMatBlockGreenConversionTemplate, ANIM_ATTACKER, 2, 8, -24
delay 20
- createvisualtask AnimTask_ConversionAlphaBlend, 0x5
+ createvisualtask AnimTask_ConversionAlphaBlend, 5
waitforvisualfinish
delay 1
clearmonbg ANIM_ATK_PARTNER
@@ -7007,26 +7007,26 @@ gBattleAnimMove_Belch::
splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_SUCCESS, SOUND_PAN_ATTACKER
- createsprite gBelchBerryTemplate, ANIM_ATTACKER, 2, 0x14, 0xfff8, 0xfff8, 0xfff8, 0x14, 0xffe0
+ createsprite gBelchBerryTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32
delay 19
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 20, 1
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
delay 6
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1
delay 6
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1
delay 6
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1
delay 6
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1
delay 6
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0x18, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, 24, 1, 1
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
@@ -7035,8 +7035,8 @@ gBattleAnimMove_Belch::
gBattleAnimMove_Rototiller::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 16, RGB(12, 9, 4)
waitforvisualfinish
- createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0x0, 0x0, 0xb4
- createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0x0, 0x1, 0xb4
+ createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 180
+ createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 1, 180
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 6, 4, 2, 4
call DigThrowDirt
call DigThrowDirt
@@ -7134,8 +7134,8 @@ PhantomForceAttack:
waitforvisualfinish
delay 10
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
- createvisualtask AnimTask_PurpleFlamesOnTarget, 0x3
- createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x30
+ createvisualtask AnimTask_PurpleFlamesOnTarget, 3
+ createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 48
delay 30
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 12, 12, RGB(0, 0, 23)
waitforvisualfinish
@@ -7289,25 +7289,25 @@ gBattleAnimMove_ForestsCurse::
waitforvisualfinish
playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 8, RGB(3, 23, 0)
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x64, 0x64, 0x8, 0x1, 0x14, 0x28, 0x0
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x14, 0x64, 0x10, 0x2, 0xa, 0x23, 0x1
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0xc8, 0x50, 0x8, 0x1, 0x28, 0x14, 0x0
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x50, 0x3c, 0xa, 0x3, 0x14, 0x32, 0x0
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x8c, 0x64, 0x10, 0x1, 0x14, 0x1e, 0x1
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 200, 80, 8, 1, 40, 20, 0
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 80, 60, 10, 3, 20, 50, 0
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 140, 100, 16, 1, 20, 30, 1
waitforvisualfinish
playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x64, 0x64, 0x8, 0x1, 0x14, 0x28, 0x0
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x14, 0x64, 0x10, 0x2, 0xa, 0x23, 0x1
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0xc8, 0x50, 0x8, 0x1, 0x28, 0x14, 0x0
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x50, 0x3c, 0xa, 0x3, 0x14, 0x32, 0x0
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x8c, 0x64, 0x10, 0x1, 0x14, 0x1e, 0x1
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 200, 80, 8, 1, 40, 20, 0
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 80, 60, 10, 3, 20, 50, 0
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 140, 100, 16, 1, 20, 30, 1
waitforvisualfinish
playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x64, 0x64, 0x8, 0x1, 0x14, 0x28, 0x0
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x14, 0x64, 0x10, 0x2, 0xa, 0x23, 0x1
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0xc8, 0x50, 0x8, 0x1, 0x28, 0x14, 0x0
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x50, 0x3c, 0xa, 0x3, 0x14, 0x32, 0x0
- createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 0x8c, 0x64, 0x10, 0x1, 0x14, 0x1e, 0x1
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 200, 80, 8, 1, 40, 20, 0
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 80, 60, 10, 3, 20, 50, 0
+ createsprite gForestsCurseIngrainTemplate, ANIM_ATTACKER, 66, 140, 100, 16, 1, 20, 30, 1
waitforvisualfinish
createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1
@@ -7328,18 +7328,18 @@ gBattleAnimMove_PetalBlizzard::
create_twister_leaf_sprite ANIM_TARGET, 2, duration=115, distance_y=55, wave_period=6, wave_amplitude=60, speed_up_on_frame=25
delay 1
create_twister_leaf_sprite ANIM_TARGET, 2, duration=115, distance_y=60, wave_period=7, wave_amplitude=60, speed_up_on_frame=30
- createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 0x73, 0x37, 0xA, 0x3c, 0x1e
+ createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 115, 55, 10, 60, 30
delay 3
- createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 0x64, 0x32, 0x4, 0x32, 0x1A
+ createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 100, 50, 4, 50, 26
delay 1
- createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 0x69, 0x19, 0x8, 0x3c, 0x14
+ createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 105, 25, 8, 60, 20
delay 1
- createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 0x73, 0x28, 0xA, 0x30, 0x1E
+ createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 115, 40, 10, 48, 30
delay 3
- createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 0x78, 0x1E, 0x6, 0x2d, 0x19
+ createsprite gPetalBlizzardTwister1Template, ANIM_TARGET, 2, 120, 30, 6, 45, 25
create_twister_leaf_sprite ANIM_TARGET, 2, duration=115, distance_y=35, wave_period=10, wave_amplitude=60, speed_up_on_frame=30
delay 3
- createsprite gPetalBlizzardTwister2Template, ANIM_TARGET, 2, 0x69, 0x14, 0x8, 0x28, 0x0
+ createsprite gPetalBlizzardTwister2Template, ANIM_TARGET, 2, 105, 20, 8, 40, 0
delay 3
create_twister_leaf_sprite ANIM_TARGET, 2, duration=20, distance_y=255, wave_period=15, wave_amplitude=32, speed_up_on_frame=0
create_twister_leaf_sprite ANIM_TARGET, 2, duration=110, distance_y=10, wave_period=8, wave_amplitude=32, speed_up_on_frame=20
@@ -7405,7 +7405,7 @@ gBattleAnimMove_DisarmingVoice::
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 26, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 26, 1
waitforvisualfinish
- createvisualtask SoundTask_WaitForCry, 0x5
+ createvisualtask SoundTask_WaitForCry, 5
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 8, 0, RGB(29, 19, 27)
waitforvisualfinish
@@ -7477,45 +7477,45 @@ gBattleAnimMove_CraftyShield::
setalpha 16, 0
delay 0
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xffe8, 0xffe8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, -24, -24
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0xffe8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, -8, -24
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0xffe8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 8, -24
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x18, 0xffe8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 24, -24
delay 3
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xffe8, 0xfff8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, -24, -8
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0xfff8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, -8, -8
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0xfff8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 8, -8
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x18, 0xfff8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 24, -8
delay 3
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xffe8, 0x8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, -24, 8
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, -8, 8
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0x8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 8, 8
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x18, 0x8
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 24, 8
delay 3
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xffe8, 0x18
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, -24, 24
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0xfff8, 0x18
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, -8, 24
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x8, 0x18
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 8, 24
delay 3
- createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 0x18, 0x18
+ createsprite gCraftyShieldPinkConversionTemplate, ANIM_ATTACKER, 2, 24, 24
delay 20
playsewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER
flash_anim_tag_with_color tag=ANIM_TAG_CONVERSION, delay=1, num_blends=1, color1=RGB(31, 31, 13), blend_y1=12, color2=0, blend_y2=0
delay 6
- createvisualtask AnimTask_ConversionAlphaBlend, 0x5
+ createvisualtask AnimTask_ConversionAlphaBlend, 5
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 5, 0, RGB(31, 13, 19)
waitforvisualfinish
@@ -7553,7 +7553,7 @@ gBattleAnimMove_GrassyTerrain::
createsprite gGrassyTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 210
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 4, RGB(11, 26, 11)
delay 52
- setarg 7, 0xFFFF
+ setarg 7, -1
playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0
createsprite gGrassyTerrainStarTemplate, ANIM_TARGET, 2, 0
@@ -7564,7 +7564,7 @@ gBattleAnimMove_GrassyTerrain::
createsprite gGrassyTerrainStarTemplate, ANIM_TARGET, 2, 160
createsprite gGrassyTerrainStarTemplate, ANIM_TARGET, 2, 192
createsprite gGrassyTerrainStarTemplate, ANIM_TARGET, 2, 224
- panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0x0
+ panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
waitforvisualfinish
delay 4
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 4, 0, RGB(31, 24, 31)
@@ -7588,7 +7588,7 @@ gBattleAnimMove_MistyTerrain::
createsprite gMistyTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 210
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 7, RGB(31, 24, 31)
delay 52
- setarg 7, 0xFFFF
+ setarg 7, -1
playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0
createsprite gMistyTerrainStarTemplate, ANIM_TARGET, 2, 0
@@ -7608,28 +7608,28 @@ gBattleAnimMove_MistyTerrain::
gBattleAnimMove_Electrify::
monbg ANIM_ATTACKER
- loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET 0xa 0x4
+ loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET 10 4
createsprite gElectrifyRingTemplate, ANIM_ATTACKER, 2
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 4
createsprite gElectrifyRingTemplate, ANIM_ATTACKER, 2
delay 4
createsprite gElectrifyRingTemplate, ANIM_ATTACKER, 2
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
waitforvisualfinish
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_ATTACKER
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0, 0x28, 0x2
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0
- createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 128, 40, 0
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 2
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 32, 40, 0
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 96, 40, 1
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0
+ createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2
delay 10
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 11, RGB(27, 28, 0)
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 3, RGB(27, 28, 0)
@@ -7638,25 +7638,25 @@ gBattleAnimMove_Electrify::
delay 1
monbg ANIM_DEF_PARTNER
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET
- createsprite gElectrifyYellowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8
+ createsprite gElectrifyYellowRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 5, 0, 5, 0
delay 1
- createsprite gElectrifyYellowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8
+ createsprite gElectrifyYellowRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
delay 1
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x5, 0x1
- createsprite gElectrifyYellowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -5, 10, 5, 1
+ createsprite gElectrifyYellowRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
delay 1
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xf, 0x14, 0x5, 0x2
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xfff6, 0x5, 0x0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 15, 20, 5, 2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -15, -10, 5, 0
delay 2
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x19, 0x0, 0x5, 0x1
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 25, 0, 5, 1
delay 2
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -8, 8, 5, 2
delay 2
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x2, 0xfff8, 0x5, 0x0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 2, -8, 5, 0
delay 2
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -20, 15, 5, 1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 11, 0, RGB(27, 28, 0)
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 3, 0, RGB(27, 28, 0)
@@ -7668,51 +7668,51 @@ gBattleAnimMove_PlayRough::
monbg ANIM_DEF_PARTNER
setalpha 12, 8
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 0xa
- waitplaysewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER, 0x14
- waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 0x1e
- waitplaysewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER, 0x28
- waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 0x32
- waitplaysewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER, 0x3c
- waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 0x46
- waitplaysewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER, 0x50
- waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 0x5a
- createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x0, 0xffee, 0x6, 0x6, 0x4
- createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x1, 0x12, 0x6, 0x6, 0x4
- createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0xff00, 0xffd6
- createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0x80, 0xfff2
- createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0x1a0, 0xffda
- createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0xff80, 0xffea
+ waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 10
+ waitplaysewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER, 20
+ waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 30
+ waitplaysewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER, 40
+ waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 50
+ waitplaysewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER, 60
+ waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 70
+ waitplaysewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER, 80
+ waitplaysewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 90
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 0, -18, 6, 6, 4
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 1, 18, 6, 6, 4
+ createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -256, -42
+ createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 128, -14
+ createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 416, -38
+ createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -128, -22
delay 0
call SubmissionHit
playsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xa0, 0xffe0
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff00, 0xffd8
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x80, 0xfff0
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x1a0, 0xffda
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff80, 0xffea
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xfe80, 0xffe1
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, 160, -32
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, -256, -40
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, 128, -16
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, 416, -38
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, -128, -22
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, -384, -31
delay 0
call SubmissionHit
playsewithpan SE_M_DIVE, SOUND_PAN_TARGET
- createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0xff00, 0xffd6
- createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0x80, 0xfff2
- createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0x1a0, 0xffda
- createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 0xff80, 0xffea
+ createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -256, -42
+ createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 128, -14
+ createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 416, -38
+ createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -128, -22
delay 0
playsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xa0, 0xffe0
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff00, 0xffd8
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x80, 0xfff0
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x1a0, 0xffda
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff80, 0xffea
- createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xfe80, 0xffe1
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, 160, -32
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, -256, -40
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, 128, -16
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, 416, -38
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, -128, -22
+ createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, -384, -31
delay 0
call SubmissionHit
waitforvisualfinish
delay 13
stopsound
- clearmonbg 0x3
+ clearmonbg 3
blendoff
waitforvisualfinish
end
@@ -7723,16 +7723,16 @@ gBattleAnimMove_FairyWind::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 8, RGB(29, 19, 27)
waitforvisualfinish
playsewithpan SE_M_GUST, SOUND_PAN_TARGET
- createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x0, 0x16, 0x14, 0x1
+ createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1
delay 5
- createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x5, 0x16, 0xffee, 0x1
+ createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 20, -10, 20, 5, 22, -18, 1
delay 5
- createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0xfff6, 0x16, 0xf, 0x1
+ createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 20, -10, 20, -10, 22, 15, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 18, 1
delay 5
- createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x0, 0x16, 0xffec, 0x1
+ createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1
delay 5
- createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 0x14, 0xfff6, 0x14, 0x0, 0x16, 0xc, 0x1
+ createsprite gFairyWindCloudTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 12, 1
delay 5
waitforvisualfinish
stopsound
@@ -7763,7 +7763,7 @@ gBattleAnimMove_Moonblast::
end
gBattleAnimMove_Boomburst::
- invert_screen_color scenery=0x1 | 0x4 | 0x8 | 0x10
+ invert_screen_color scenery=1 | 4 | 8 | 16
createvisualtask SoundTask_PlayCryWithEcho, 5, FALSE
createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_ATTACKER, 0
createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
@@ -7789,7 +7789,7 @@ gBattleAnimMove_Boomburst::
createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1
Boomburst_Last:
delay 4
- invert_screen_color scenery=0x1 | 0x4 | 0x8 | 0x10
+ invert_screen_color scenery=1 | 4 | 8 | 16
waitforvisualfinish
end
Boomburst_Doubles:
@@ -7816,14 +7816,14 @@ gBattleAnimMove_FairyLock::
monbg ANIM_ATK_PARTNER
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 8, RGB(31, 24, 26)
waitforvisualfinish
- loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 0x6, 0x9
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x7
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x33
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x2
+ loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 6, 9
+ createvisualtask AnimTask_VoltTackleBolt, 5, 7
+ createvisualtask AnimTask_VoltTackleBolt, 5, 51
+ createvisualtask AnimTask_VoltTackleBolt, 5, 2
waitforvisualfinish
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x32
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x6
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x35
+ createvisualtask AnimTask_VoltTackleBolt, 5, 50
+ createvisualtask AnimTask_VoltTackleBolt, 5, 6
+ createvisualtask AnimTask_VoltTackleBolt, 5, 53
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 8, 0, RGB(31, 24, 26)
waitforvisualfinish
@@ -7836,15 +7836,15 @@ gBattleAnimMove_KingsShield::
goto gBattleAnimMove_Protect
gBattleAnimMove_PlayNice::
- loopsewithpan SE_M_SANDSTORM, SOUND_PAN_ATTACKER, 0xc, 0x3
+ loopsewithpan SE_M_SANDSTORM, SOUND_PAN_ATTACKER, 12, 3
createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, ANIM_ATTACKER
delay 15
- createsprite gRedHeartProjectileSpriteTemplate, ANIM_TARGET, 3, 0x14, 0xfff8
+ createsprite gRedHeartProjectileSpriteTemplate, ANIM_TARGET, 3, 20, -8
end
gBattleAnimMove_Confide::
createvisualtask AnimTask_Splash, 2, ANIM_ATTACKER, 3
- createsprite gConfideBubbleTemplate, ANIM_ATTACKER, 11, 0x0, 0x64
+ createsprite gConfideBubbleTemplate, ANIM_ATTACKER, 11, 0, 100
playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER
waitforvisualfinish
end
@@ -7855,49 +7855,49 @@ gBattleAnimMove_DiamondStorm::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 15, RGB(8, 4, 6)
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ICE_CRYSTALS, 0, 13, 13, RGB(30, 14, 31) @Pink
waitforvisualfinish
- panse SE_M_BLIZZARD, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
- createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x48, 0x1
- createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0, 0x50, 0x0, 0x0, 0x1
+ panse SE_M_BLIZZARD, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
+ createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -10, 0, -10, 72, 1
+ createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 80, 0, 0, 1
delay 3
- createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff1, 0x0, 0xfff1, 0x48, 0x1
- createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x50, 0x0, 0x0, 0x1
+ createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -15, 0, -15, 72, 1
+ createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0, -10, 0, -10, 80, 0, 0, 1
delay 3
- createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xfffb, 0x0, 0xfffb, 0x48, 0x1
- createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0xa, 0x0, 0xa, 0x50, 0x0, 0x0, 0x1
+ createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -5, 0, -5, 72, 1
+ createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0, 10, 0, 10, 80, 0, 0, 1
delay 3
- createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x48, 0x1
- createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x50, 0x0, 0x0, 0x1
+ createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -10, 0, -10, 72, 1
+ createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0, -20, 0, -20, 80, 0, 0, 1
delay 3
- createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x48, 0x1
- createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0xf, 0x0, 0xf, 0x50, 0x0, 0x0, 0x1
+ createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -20, 0, -20, 72, 1
+ createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0, 15, 0, 15, 80, 0, 0, 1
delay 3
- createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff1, 0x0, 0xfff1, 0x48, 0x1
- createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x50, 0x0, 0x0, 0x1
+ createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -15, 0, -15, 72, 1
+ createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0, -20, 0, -20, 80, 0, 0, 1
delay 3
- createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xffe7, 0x0, 0xffe7, 0x48, 0x1
- createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0x0, 0x14, 0x0, 0x14, 0x50, 0x0, 0x0, 0x1
+ createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -25, 0, -25, 72, 1
+ createsprite gDiamondStormBlizzardTemplate, ANIM_ATTACKER, 40, 0, 20, 0, 20, 80, 0, 0, 1
delay 3
playsewithpan SE_M_TWISTER, SOUND_PAN_TARGET
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x78, 0x46, 0x5, 0x46, 0x1e
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30
delay 1
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x73, 0x37, 0x6, 0x3c, 0x19
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 115, 55, 6, 60, 25
delay 1
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x73, 0x3c, 0x7, 0x3c, 0x1e
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x73, 0x37, 0xa, 0x3c, 0x1e
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 115, 60, 7, 60, 30
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 115, 55, 10, 60, 30
delay 3
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x64, 0x32, 0x4, 0x32, 0x1a
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 100, 50, 4, 50, 26
delay 1
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x69, 0x19, 0x8, 0x3c, 0x14
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 105, 25, 8, 60, 20
delay 1
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x73, 0x28, 0xa, 0x30, 0x1e
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 115, 40, 10, 48, 30
delay 3
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x78, 0x1e, 0x6, 0x2d, 0x19
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x73, 0x23, 0xa, 0x3c, 0x1e
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 120, 30, 6, 45, 25
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 115, 35, 10, 60, 30
delay 3
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x69, 0x14, 0x8, 0x28, 0x0
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 105, 20, 8, 40, 0
delay 3
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x14, 0xff, 0xf, 0x20, 0x0
- createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 0x6e, 0xa, 0x8, 0x20, 0x14
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0
+ createsprite gDiamondStormDiamondsTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20
waitforvisualfinish
@this is the buffet part
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=-32, y=-16, relative_to=ANIM_TARGET, animation=3
@@ -7925,7 +7925,7 @@ gBattleAnimMove_SteamEruption::
delay 32
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
- panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
+ panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
call SteamEruptionBreath
call SteamEruptionBreath
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 9, RGB_RED
@@ -7955,7 +7955,7 @@ gBattleAnimMove_SteamEruption::
waitforvisualfinish
end
SteamEruptionBreath:
- createsprite gSteamEruptionBreathTemplate, ANIM_TARGET, 2, 0x0, 0x5, 0x0, 0x5, 0x14
+ createsprite gSteamEruptionBreathTemplate, ANIM_TARGET, 2, 0, 5, 0, 5, 20
delay 1
return
@@ -7973,21 +7973,21 @@ gBattleAnimMove_HyperspaceHole::
delay 1
invisible ANIM_ATTACKER
waitsound
- createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x30
+ createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 48
delay 23
- createvisualtask AnimTask_IsTargetSameSide, 0x2
- createvisualtask AnimTask_SnatchOpposingMonMove, 0x2
+ createvisualtask AnimTask_IsTargetSameSide, 2
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2
delay 25
visible ANIM_ATTACKER
invisible ANIM_ATTACKER
delay 5
- createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0
+ createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, -10, -10, 0
call HyperspaceHoleMovement
- createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0
+ createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, 10, 20, 0
call HyperspaceHoleMovement
- createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0
+ createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, -5, 10, 0
call HyperspaceHoleMovement
- createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0
+ createsprite gHyperspaceHoleImpactTemplate, ANIM_TARGET, 2, 17, -12, 0
call HyperspaceHoleMovement
waitforvisualfinish
visible ANIM_ATTACKER
@@ -8034,28 +8034,28 @@ gBattleAnimMove_WaterShuriken::
gBattleAnimMove_MysticalFire::
call SetPsychicBackground
setalpha 8, 8
- playse 0xb1
+ playse 177
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1
blend_color_cycle selector=F_PAL_ATTACKER, delay=0, num_blends=2, initial_blend_y=0, target_blend_y=8, color=RGB_WHITE
waitforvisualfinish
waitsound
blendoff
- createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0xffff, 0x0
+ createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0
delay 1
- createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0x0, 0x1
+ createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 0, 1
delay 1
- createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0xffff, 0xffff
+ createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, -1
delay 1
- createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0x2, 0x1
+ createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 2, 1
delay 1
- createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0x1, 0xffff
+ createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 1, -1
delay 1
- createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0xffff, 0x1
+ createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 1
delay 1
- createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0x1, 0xfffe
+ createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 1, -2
delay 1
- createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x1e, 0x3, 0x1
- playse 0x8c
+ createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 3, 1
+ playse 140
waitforvisualfinish
call UnsetPsychicBg
end
@@ -8063,32 +8063,32 @@ gBattleAnimMove_MysticalFire::
gBattleAnimMove_SpikyShield::
monbg ANIM_ATK_PARTNER
splitbgprio ANIM_ATTACKER
- waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x10
- createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0x0, 0x5a
+ waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 16
+ createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90
delay 15
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x0, 0xFFE0, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, 0, -32, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x16, 0xFFEA, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, 22, -22, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x1E, 0x0, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, 30, 0, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x14, 0x14, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, 20, 20, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x0, 0x1C, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, 0, 28, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFED, 0x13, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, -19, 19, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFE5, 0x0, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, -27, 0, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFEE, 0xFFEE, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, -18, -18, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x0, 0xFFE7, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, 0, -25, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x11, 0xFFEF, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, 17, -17, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x17, 0x0, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, 23, 0, 16
delay 2
- createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x10, 0x10, 0x10
+ createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 1, 16, 16, 16
waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER
end
@@ -8096,11 +8096,11 @@ gBattleAnimMove_SpikyShield::
gBattleAnimMove_AromaticMist::
playsewithpan SE_M_SWEET_SCENT, SOUND_PAN_ATTACKER
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 8, RGB(29, 19, 27)
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x64
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 100
delay 25
- setpan 0x0
+ setpan 0
call SweetScentEffect
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x37, 0x0
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0
setpan SOUND_PAN_TARGET
blend_color_cycle selector=F_PAL_DEF_SIDE, delay=1, num_blends=5, initial_blend_y=5, target_blend_y=13, color=RGB(31, 21, 21)
call SweetScentEffect
@@ -8111,9 +8111,9 @@ gBattleAnimMove_AromaticMist::
gBattleAnimMove_EerieImpulse::
monbg ANIM_DEF_PARTNER
- waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET 0x13
+ waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET 19
delay 4
- createsprite gEerieImpulseRingTemplate, ANIM_ATTACKER, 0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
+ createsprite gEerieImpulseRingTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
delay 11
createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0
createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 1
@@ -8129,37 +8129,37 @@ gBattleAnimMove_EerieImpulse::
createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 48, 30, 0, 40, 2
waitforvisualfinish
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0x1, 0x0, 0x20, 0x10
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x5, 0x1
+ createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, 0, -5, 1, 0, 32, 16
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 5, 0, 5, 0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -5, 10, 5, 1
delay 7
- createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xa, 0x1, 0x0, 0x20, 0x10
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xf, 0x14, 0x5, 0x2
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xfff6, 0x5, 0x0
+ createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, -15, 10, 1, 0, 32, 16
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 15, 20, 5, 2
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -15, -10, 5, 0
delay 7
- createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xfff1, 0x1, 0x0, 0x20, 0x10
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x19, 0x0, 0x5, 0x1
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2
+ createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, -15, -15, 1, 0, 32, 16
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 25, 0, 5, 1
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -8, 8, 5, 2
delay 7
- createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, 0xa, 0xfffb, 0x1, 0x0, 0x20, 0x10
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0x2, 0xfff8, 0x5, 0x0
- createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1
+ createsprite gEerieImpulseImpactTemplate, ANIM_ATTACKER, 2, 10, -5, 1, 0, 32, 16
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 2, -8, 5, 0
+ createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -20, 15, 5, 1
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
end
gBattleAnimMove_VenomDrench::
monbg ANIM_DEF_PARTNER
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xfffb, 0x1, 0xfffb, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, -5, 1, -5, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x6, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 5, 0, 6, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0x13, 0x1, 0xa, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 19, 1, 10, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xffe9, 0x2, 0xfff6, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, -23, 2, -10, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
call AcidDrench
@@ -8168,28 +8168,28 @@ gBattleAnimMove_VenomDrench::
clearmonbg ANIM_DEF_PARTNER
end
AcidDrench:
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, -20, 0, -10, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0x1c, 0x1, 0xa, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 28, 1, 10, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xfff6, 0x1, 0xfffb, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, -10, 1, -5, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x6, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 10, 0, 6, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0x18, 0x1, 0xa, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 24, 1, 10, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xffe0, 0x2, 0xfff6, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, -32, 2, -10, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, -20, 0, -10, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
- createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 0x1e, 0x2, 0xa, 1
+ createsprite gVenomDrenchAcidTemplate, ANIM_TARGET, 2, 30, 2, 10, 1
playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET
delay 2
return
@@ -8197,7 +8197,7 @@ AcidDrench:
gBattleAnimMove_Powder::
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
- loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 0x12, 0xa
+ loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 18, 10
call POWDER_SPORE
call POWDER_SPORE
call POWDER_SPORE
@@ -8205,11 +8205,11 @@ gBattleAnimMove_Powder::
clearmonbg ANIM_DEF_PARTNER
end
POWDER_SPORE:
- createsprite gPowderBlackSporeTemplate, ANIM_ATTACKER, 2, 0x0, 0xffec, 0x55, 0x50, 0x0
+ createsprite gPowderBlackSporeTemplate, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0
delay 12
- createsprite gPowderBlackSporeTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0xaa, 0x50, 0x0
+ createsprite gPowderBlackSporeTemplate, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0
delay 12
- createsprite gPowderBlackSporeTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff1, 0x0, 0x50, 0x0
+ createsprite gPowderBlackSporeTemplate, ANIM_ATTACKER, 2, 0, -15, 0, 80, 0
delay 12
return
@@ -8236,50 +8236,50 @@ GeomancyChargeUp:
clearmonbg ANIM_ATK_PARTNER
end
GeomancyRingBuff:
- createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x0
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
- createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x0
+ createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
- createsprite gGeomancyBlueCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x0
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gGeomancyBlueCellVortexTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 2
- createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x0
+ createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0
delay 2
- createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x0
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
- createsprite gGeomancyBlueCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, 0x0
+ createsprite gGeomancyBlueCellVortexTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, 0
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
- createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x0
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 2
- createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x0
+ createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0
delay 2
- createsprite gGeomancyBlueCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x0
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gGeomancyBlueCellVortexTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
- createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x0
+ createsprite gGeomancyRedCellVortexTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
createsprite gGeomancyRingTemplate, ANIM_ATTACKER, 2
delay 1
- createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x0
+ createsprite gGeomancyGreenCellVortexTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0
delay 2
return
GeomancyUnleash:
@@ -8301,12 +8301,12 @@ GeomancyUnleash:
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 16, RGB(1, 8, 19)
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 37, 1
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 5, RGB_RED
- createsprite gGeomancyRedCellRaiseTemplate, ANIM_ATTACKER, 2, 0x14, 0x20, 0xffd0, 0x32, 0x1
- createsprite gGeomancyGreenCellRaiseTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0xffda, 0x19, 0x1
- createsprite gGeomancyBlueCellRaiseTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0xffe4, 0x28, 0x1
- createsprite gGeomancyRedCellRaiseTemplate, ANIM_ATTACKER, 2, 0xffec, 0x20, 0xffd0, 0x32, 0x1
- createsprite gGeomancyGreenCellRaiseTemplate, ANIM_ATTACKER, 2, 0x14, 0x20, 0xffe4, 0x3c, 0x1
- createsprite gGeomancyBlueCellRaiseTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0xffe4, 0x1e, 0x1
+ createsprite gGeomancyRedCellRaiseTemplate, ANIM_ATTACKER, 2, 20, 32, -48, 50, 1
+ createsprite gGeomancyGreenCellRaiseTemplate, ANIM_ATTACKER, 2, 0, 32, -38, 25, 1
+ createsprite gGeomancyBlueCellRaiseTemplate, ANIM_ATTACKER, 2, 32, 32, -28, 40, 1
+ createsprite gGeomancyRedCellRaiseTemplate, ANIM_ATTACKER, 2, -20, 32, -48, 50, 1
+ createsprite gGeomancyGreenCellRaiseTemplate, ANIM_ATTACKER, 2, 20, 32, -28, 60, 1
+ createsprite gGeomancyBlueCellRaiseTemplate, ANIM_ATTACKER, 2, 0, 32, -28, 30, 1
call GeomancyRageBuff
call GeomancyRageBuff
waitforvisualfinish
@@ -8317,63 +8317,63 @@ GeomancyUnleash:
clearmonbg ANIM_ATK_PARTNER
end
GeomancyRageBuff:
- createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0x0, 0x5, 0x0
+ createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0, 5, 0
delay 1
- createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0x0, 0xfff6, 0xfff1
+ createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0, -10, -15
delay 1
- createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x19
+ createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 2, 0, 0, 25
delay 1
- createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0x0, 0xf, 0x5
+ createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0, 15, 5
delay 1
- createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0x0, 0xffe7, 0x0
+ createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0, -25, 0
delay 1
- createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 2, 0x0, 0x1e, 0x1e
+ createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 2, 0, 30, 30
delay 1
- createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 2, 0x0, 0xffe5, 0x19
+ createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 2, 0, -27, 25
delay 1
- createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0x0, 0x0, 0x8
+ createsprite gGeomancyYellowRageTemplate, ANIM_TARGET, 66, 0, 0, 8
delay 1
return
gBattleAnimMove_MagneticFlux::
createvisualtask AnimTask_BlendBattleAnimPal 10, (F_PAL_TARGET | F_PAL_ATK_SIDE), 2, 0, 9, RGB(27, 1, 9)
- loopsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, 0x12, 0x3
- createvisualtask AnimTask_DefenseCurlDeformMon, 0x5
+ loopsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, 18, 3
+ createvisualtask AnimTask_DefenseCurlDeformMon, 5
call MagneticFluxSparks1
delay 10
call MagneticFluxSparks2
delay 10
call MagneticFluxSparks1
delay 10
- createsprite gMagneticFluxUproarTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8
+ createsprite gMagneticFluxUproarTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
call MagneticFluxSparks2
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal 10, (F_PAL_TARGET | F_PAL_ATK_SIDE), 2, 9, 0, RGB(27, 1, 9)
waitforvisualfinish
end
MagneticFluxSparks1:
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
return
MagneticFluxSparks2:
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
return
gBattleAnimMove_HappyHour::
monbg ANIM_ATTACKER
- loopsewithpan SE_M_PAY_DAY, SOUND_PAN_TARGET, 0x8, 10
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xfffb, 0x0, 0xfffb, 0x1
+ loopsewithpan SE_M_PAY_DAY, SOUND_PAN_TARGET, 8, 10
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, -5, 0, -5, 1
delay 2
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x6, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 5, 0, 6, 1
delay 2
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0x13, 0x0, 0xa, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 19, 0, 10, 1
delay 2
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xffe9, 0x0, 0xfff6, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, -23, 0, -10, 1
delay 2
call CoinShower
call CoinShower
@@ -8381,21 +8381,21 @@ gBattleAnimMove_HappyHour::
clearmonbg ANIM_ATTACKER
end
CoinShower:
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, -20, 0, -10, 1
delay 2
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0x1c, 0x0, 0xa, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 28, 0, 10, 1
delay 2
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xfff6, 0x0, 0xfffb, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, -10, 0, -5, 1
delay 2
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x6, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 10, 0, 6, 1
delay 2
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0x18, 0x0, 0xa, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 24, 0, 10, 1
delay 2
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xffe0, 0x0, 0xfff6, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, -32, 0, -10, 1
delay 2
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0xffec, 0x0, 0xfff6, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, -20, 0, -10, 1
delay 2
- createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 0x1e, 0x0, 0xa, 0x1
+ createsprite gHappyHourCoinShowerTemplate, ANIM_TARGET, 2, 30, 0, 10, 1
delay 2
return
@@ -8416,7 +8416,7 @@ gBattleAnimMove_ElectricTerrain::
createsprite gElectricTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 210
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 4, RGB(28, 28, 0)
delay 52
- setarg 7, 0xFFFF
+ setarg 7, -1
playsewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0
createsprite gElectricTerrainFlyingBallTemplate, ANIM_TARGET, 2, 0
@@ -8427,7 +8427,7 @@ gBattleAnimMove_ElectricTerrain::
createsprite gElectricTerrainFlyingBallTemplate, ANIM_TARGET, 2, 160
createsprite gElectricTerrainFlyingBallTemplate, ANIM_TARGET, 2, 192
createsprite gElectricTerrainFlyingBallTemplate, ANIM_TARGET, 2, 224
- loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 0x16, 0x3
+ loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 22, 3
waitforvisualfinish
delay 2
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 4, 0, RGB(28, 28, 0)
@@ -8463,53 +8463,53 @@ gBattleAnimMove_DazzlingGleam::
waitforvisualfinish
simple_palette_blend selector=F_PAL_BG, delay=0, initial_blend_y=13, target_blend_y=0, color=RGB(31, 25, 25)
waitforvisualfinish
- clearmonbg 0x0
+ clearmonbg 0
blendoff
end
gBattleAnimMove_Celebrate::
- createsprite gCelebrateBagTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gCelebrateBagTemplate, ANIM_ATTACKER, 2, 0
playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER
delay 18
playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER
delay 71
- loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER 0x16 0x3
+ loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER 22 3
end
gBattleAnimMove_HoldHands::
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 6, 3
- createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
delay 8
- createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
delay 8
- createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
delay 8
- createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
delay 8
- createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
delay 8
- createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
delay 8
- createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
delay 8
- createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
delay 8
- createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
delay 8
- createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gHoldHandsHeartTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
waitforvisualfinish
- createvisualtask AnimTask_HelpingHandAttackerMovement, 0x5
- createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0x0
- createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0x1
+ createvisualtask AnimTask_HelpingHandAttackerMovement, 5
+ createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0
+ createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 1
delay 19
- playsewithpan SE_M_ENCORE, 0x0
+ playsewithpan SE_M_ENCORE, 0
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 2, 0, 5, 1
delay 14
- playsewithpan SE_M_ENCORE, 0x0
+ playsewithpan SE_M_ENCORE, 0
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 2, 0, 5, 1
delay 20
- playsewithpan SE_M_ENCORE, 0x0
+ playsewithpan SE_M_ENCORE, 0
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 3, 0, 10, 1
createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_ATK_PARTNER, RGB_YELLOW, 12, 1, 1
end
@@ -8519,7 +8519,7 @@ gBattleAnimMove_BabyDollEyes::
monbg ANIM_DEF_PARTNER
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 10, RGB_WHITE
waitforvisualfinish
- createsprite gOpeningEyeSpriteTemplate, ANIM_ATTACKER, 5, 0x0, 0x0, 0x1, 0x0
+ createsprite gOpeningEyeSpriteTemplate, ANIM_ATTACKER, 5, 0, 0, 1, 0
delay 32
playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1
@@ -8535,13 +8535,13 @@ gBattleAnimMove_BabyDollEyes::
gBattleAnimMove_Nuzzle::
createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0
- createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x14
+ createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20
playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER
delay 15
- createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0xffec, 0x14
+ createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20
playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER
delay 15
- createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0x14, 0x14
+ createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20
playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER
waitforvisualfinish
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET
@@ -8554,17 +8554,17 @@ gBattleAnimMove_HoldBack::
monbg ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET
- createsprite gHoldBackSwipeTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1
+ createsprite gHoldBackSwipeTemplate, ANIM_TARGET, 2, 0, 0, 1
waitforvisualfinish
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 10, 1
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=2
- createsprite gHoldBackRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0
- createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xa0, 0xffe0
- createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff00, 0xffd8
- createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x80, 0xfff0
- createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x1a0, 0xffda
- createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff80, 0xffea
- createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xfe80, 0xffe1
+ createsprite gHoldBackRingTemplate, ANIM_ATTACKER, 3, 0, 0, 256, 0
+ createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, -16, -8, 160, -32
+ createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, -16, -8, -256, -40
+ createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, -16, -8, 128, -16
+ createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, -16, -8, 416, -38
+ createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, -16, -8, -128, -22
+ createsprite gHoldBackStarsTemplate, ANIM_TARGET, 3, -16, -8, -384, -31
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
waitforvisualfinish
clearmonbg ANIM_TARGET
@@ -8576,7 +8576,7 @@ gBattleAnimMove_Infestation::
splitbgprio ANIM_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB(0, 25, 28)
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 79, 1
- loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 0x4F
+ loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0, 79
call InfestationVortex
call InfestationVortex
call InfestationVortex
@@ -8588,17 +8588,17 @@ gBattleAnimMove_Infestation::
clearmonbg ANIM_DEF_PARTNER
end
InfestationVortex:
- createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x1
+ createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, 1
delay 1
- createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x1
+ createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, 1
delay 1
- createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x1
+ createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, 1
delay 1
- createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x1
+ createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, 1
delay 1
- createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x1
+ createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, 1
delay 1
- createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, 0x1
+ createsprite gInfestationBubbleTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, 1
delay 1
return
@@ -8620,7 +8620,7 @@ gBattleAnimMove_OblivionWing::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_HYDRO_PUMP, 0, 12, 12, RGB(31, 4, 10) @Pinkish Red
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ROUND_SHADOW, 0, 13, 13, RGB(31, 4, 10) @Pinkish Red
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 14, RGB_BLACK @Black
waitforvisualfinish
@@ -8647,9 +8647,9 @@ gBattleAnimMove_OblivionWing::
waitforvisualfinish
end
OblivionWingBeam:
- createsprite gOblivionWingBeamTemplate, ANIM_TARGET, 2, 0, -90, 0, 20, 0x15, 0x0
+ createsprite gOblivionWingBeamTemplate, ANIM_TARGET, 2, 0, -90, 0, 20, 21, 0
delay 2
- createsprite gOblivionWingBeamTemplate, ANIM_TARGET, 2, 0, -90, 0, 20, 0x15, 0x0
+ createsprite gOblivionWingBeamTemplate, ANIM_TARGET, 2, 0, -90, 0, 20, 21, 0
delay 2
return
@@ -8658,7 +8658,7 @@ gBattleAnimMove_ThousandArrows::
setalpha 14, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
- createsprite gThousandArrowsGreenChargeTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gThousandArrowsGreenChargeTemplate, ANIM_ATTACKER, 2, 0
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
delay 24
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
@@ -8670,14 +8670,14 @@ gBattleAnimMove_ThousandArrows::
call ThousandArrowsHexes
call ThousandArrowsHexes
call ThousandArrowsHexes
- createsprite gThousandArrowsGreenDischargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x10
+ createsprite gThousandArrowsGreenDischargeTemplate, ANIM_ATTACKER, 2, 0, 16, 16
delay 2
- createsprite gThousandArrowsGreenDischargeTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0, 0xfff0
+ createsprite gThousandArrowsGreenDischargeTemplate, ANIM_ATTACKER, 2, 0, -16, -16
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
waitforvisualfinish
delay 48
- createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x32
- createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x32
+ createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50
+ createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50
call ThousandArrowsDown
call ThousandArrowsDown
call ThousandArrowsDown
@@ -8689,48 +8689,48 @@ gBattleAnimMove_ThousandArrows::
blendoff
end
ThousandArrowsHexes:
- createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0x0, 0xfffc, 0xfff0
+ createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0, -4, -16
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0x0, 0x100D, 0xfff0
+ createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0, 4109, -16
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0x0, 0x4, 0xfff4
+ createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0, 4, -12
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0x0, 0xfff0, 0xfff0
+ createsprite gThousandArrowsGreenHexTemplate, ANIM_TARGET, 2, 0, -16, -16
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
return
ThousandArrowsDown:
- createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0xdc, 0x3c
+ createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 1, 220, 60
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x3c, 0x64
+ createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 1, 60, 100
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x8c, 0x37
+ createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 1, 140, 55
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0xb4, 0x32
+ createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 1, 180, 50
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x14, 0x5a
+ createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 1, 20, 90
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x5a, 0x5a
+ createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 1, 90, 90
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0xa0, 0x3c
+ createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 1, 160, 60
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x1e, 0x5a
+ createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 1, 30, 90
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0x78, 0x3c
+ createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 1, 120, 60
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
delay 2
- createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 0x1, 0xc8, 0x28
+ createsprite gThousandArrowsGreenArrowTemplate, ANIM_TARGET, 2, 1, 200, 40
playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER
return
@@ -8740,56 +8740,56 @@ gBattleAnimMove_ThousandWaves::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
- createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0x0
- createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0x2b
- createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0x55
- createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0x80
- createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0xaa
- createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0xd5
+ createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 0
+ createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 43
+ createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 85
+ createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 128
+ createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 170
+ createsprite gThousandWavesGreenWheelTemplate, ANIM_ATTACKER, 2, 213
waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER @I placed this one here, because it ruins the teleport animation
- loopsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 0x3, 0x15
+ loopsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 3, 21
call ThousandWavesRecover
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0xfff6, 0xd
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 40, -10, 13
delay 3
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffdd, 0x8, 0xd
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, -35, 8, 13
delay 3
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffdd, 0xfff6, 0xd
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, -35, -10, 13
delay 3
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0x8, 0xd
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 40, 8, 13
delay 3
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xf, 0xffd8, 0xd
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 15, -40, 13
delay 3
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xffe0, 0xd
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, -10, -32, 13
delay 3
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x5, 0x27, 0xd
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 5, 39, 13
delay 3
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x19, 0xffec, 0xd
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 25, -20, 13
delay 3
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0xd
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, -40, -20, 13
delay 3
- createvisualtask AnimTask_AttackerStretchAndDisappear, 0x2
+ createvisualtask AnimTask_AttackerStretchAndDisappear, 2
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x5, 0xffd8, 0xd
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 5, -40, 13
waitforvisualfinish
- panse SE_M_HYPER_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
+ panse SE_M_HYPER_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
delay 4
- createvisualtask AnimTask_MoveHeatWaveTargets, 0x5
+ createvisualtask AnimTask_MoveHeatWaveTargets, 5
delay 12
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
- createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0xa, 0x900, 0x60, 0x1
+ createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 10, 2304, 96, 1
delay 2
- createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x5a, 0x800, 0x60, 0x1
+ createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 90, 2048, 96, 1
delay 2
- createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x32, 0xa00, 0x60, 0x1
+ createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 50, 2560, 96, 1
delay 2
- createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x14, 0x900, 0x60, 0x1
+ createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 20, 2304, 96, 1
delay 2
call ThousandWavesRotatingImpact
call ThousandWavesRotatingImpact
waitforvisualfinish
- createvisualtask AnimTask_ExtremeSpeedMonReappear, 0x2
+ createvisualtask AnimTask_ExtremeSpeedMonReappear, 2
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_WHITEALPHA
waitforvisualfinish
@@ -8797,66 +8797,66 @@ gBattleAnimMove_ThousandWaves::
clearmonbg ANIM_DEF_PARTNER
end
ThousandWavesRecover:
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0x28, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 40, 40, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffd8, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, -40, -40, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x0, 0x28, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0, 40, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd8, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0, -40, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0xffec, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 40, -20, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0x14, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 40, 20, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xffec, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, -40, -20, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, -40, 20, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffec, 0x1e, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, -20, 30, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x14, 0xffe2, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 20, -30, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffec, 0xffe2, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, -20, -30, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x14, 0x1e, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 20, 30, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x0, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, -40, 0, 16
delay 2
- createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 0x28, 0x0, 0x10
+ createsprite gThousandWavesGreenRecoverTemplate, ANIM_ATTACKER, 2, 40, 0, 16
delay 2
return
ThousandWavesRotatingImpact:
- createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x1c, 0x180, 0x32, 0x8, 0x32, 0x1 @1
- createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x46, 0x7c0, 0x60, 0x1
+ createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 35, 28, 384, 50, 8, 50, 1 @1
+ createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 70, 1984, 96, 1
delay 2
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
- createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x3
- createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x20, 0xf0, 0x28, 0xb, 0xffd2, 0x1 @2
- createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x0, 0xb00, 0x60, 0x1
+ createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 1, 0, 0, 3
+ createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 35, 32, 240, 40, 11, -46, 1 @2
+ createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0, 2816, 96, 1
delay 2
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
- createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0x5, 0xfff4, 0x3
- createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x21, 0x1a0, 0x28, 0x4, 0x2a, 0x1 @3
- createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x3c, 0xa00, 0x60, 0x1
+ createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 1, 5, -12, 3
+ createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 35, 33, 416, 40, 4, 42, 1 @3
+ createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 60, 2560, 96, 1
delay 2
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
- createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0xfffa, 0x9, 0x3
- createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, 0x1 @4
- createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0xa, 0x900, 0x60, 0x1
+ createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 1, -6, 9, 3
+ createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 35, 31, 288, 45, 6, -42, 1 @4
+ createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 10, 2304, 96, 1
delay 2
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
- createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0xfffa, 0xfff4, 0x3
- createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, 0x1 @5
- createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x5a, 0x800, 0x60, 0x1
+ createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 1, -6, -12, 3
+ createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 35, 28, 448, 45, 11, 46, 1 @5
+ createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 90, 2048, 96, 1
delay 2
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
- createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0x5, 0x9, 0x3
- createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 0x23, 0x21, 0x1d0, 0x32, 0xa, 0xffce, 0x1 @6
- createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 0x32, 0xa00, 0x60, 0x1
+ createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 1, 5, 9, 3
+ createsprite gThousandWavesRotatingImpactTemplate, ANIM_TARGET, 2, 35, 33, 464, 50, 10, -50, 1 @6
+ createsprite gThousandWavesGreenWaveTemplate, ANIM_ATTACKER, 40, 50, 2560, 96, 1
delay 2
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
- createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 0x1, 0xfffa, 0x0, 0x3
+ createsprite gThousandWavesPoundImpactTemplate, ANIM_TARGET, 2, 1, -6, 0, 3
return
gBattleAnimMove_LandsWrath::
@@ -8870,9 +8870,9 @@ gBattleAnimMove_LandsWrath::
waitforvisualfinish
fadetobg BG_FISSURE
waitbgfadeout
- playsewithpan SE_M_EARTHQUAKE, 0x0
- createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x32
- createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x32
+ playsewithpan SE_M_EARTHQUAKE, 0
+ createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50
+ createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50
createvisualtask AnimTask_PositionFissureBgOnBattler, 5, ANIM_TARGET, 5, -1
waitbgfadein
waitforvisualfinish
@@ -8882,17 +8882,17 @@ gBattleAnimMove_LandsWrath::
end
LandsWrathVortex:
playsewithpan SE_M_SACRED_FIRE2 SOUND_PAN_TARGET
- createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, 0x0
+ createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, 0
delay 2
- createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, 0x0
+ createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, 0
delay 2
- createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, 0x0
+ createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, 0
delay 2
- createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, 0x0
+ createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, 0
delay 2
- createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, 0x0
+ createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, 0
delay 2
- createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, 0x0
+ createsprite gLandsWrathVortexTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, 0
delay 2
return
@@ -8900,7 +8900,7 @@ gBattleAnimMove_LightOfRuin::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ELECTRIC_ORBS, 0, 12, 12, RGB(30, 14, 27) @Pink
waitforvisualfinish
createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 20, 0, 2
- panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
+ panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 15, RGB(31, 24, 26)
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 50, 1
flash_anim_tag_with_color tag=ANIM_TAG_ORBS, delay=1, num_blends=12, color1=RGB_RED, blend_y1=16, color2=0, blend_y2=0
@@ -8933,12 +8933,12 @@ gBattleAnimMove_LightOfRuin::
call LightOfRuinBeam
delay 32
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gLightOfRuinPinkDischargeTemplate, ANIM_ATTACKER, 2, 0x1, 0x10, 0x10
+ createsprite gLightOfRuinPinkDischargeTemplate, ANIM_ATTACKER, 2, 1, 16, 16
delay 2
- createsprite gLightOfRuinPinkDischargeTemplate, ANIM_ATTACKER, 2, 0x1, 0xfff0, 0xfff0
+ createsprite gLightOfRuinPinkDischargeTemplate, ANIM_ATTACKER, 2, 1, -16, -16
delay 5
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 11, 1
- createsprite gLightOfRuinPinkExplosionTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x1
+ createsprite gLightOfRuinPinkExplosionTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1
delay 16
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 0, RGB_WHITE
waitforvisualfinish
@@ -8955,63 +8955,63 @@ gBattleAnimMove_OriginPulse::
setalpha 8, 8
fadetobg BG_WATER
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x400, 0x0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 1024, 0, 1, -1
waitbgfadein
- createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
+ createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
delay 16
- createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
+ createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
delay 16
- createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
+ createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
playsewithpan SE_INTRO_BLAST, SOUND_PAN_ATTACKER
waitforvisualfinish
- createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x0
- createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x2b
- createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x55
- createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0x80
- createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0xaa
- createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0xd5
+ createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 0
+ createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 43
+ createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 85
+ createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 128
+ createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 170
+ createsprite gOriginPulseOrbTemplate, ANIM_ATTACKER, 2, 213
delay 53
- createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
+ createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
delay 16
- createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
+ createsprite gOriginPulseRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
waitforvisualfinish
delay 47
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xFF90, 0x10 @up
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x5F, 0xFF9D, 0x10 @upper right
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x73, 0x0, 0x10 @right
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x4F, 0x37, 0x10 @lower right
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x53, 0x10 @down
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFB0, 0x43, 0x10 @lower left
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFF60, 0x0, 0x10 @left
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFAA, 0xFF94, 0x10 @upper left
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, 0, -112, 16 @up
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, 95, -99, 16 @upper right
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, 115, 0, 16 @right
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, 79, 55, 16 @lower right
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, 0, 83, 16 @down
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, -80, 67, 16 @lower left
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, -160, 0, 16 @left
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, -86, -108, 16 @upper left
delay 5
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x2D, 0xFF9D, 0x10 @between up and upper right
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xDF, 0xFF9D, 0x10 @between right and upper right
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x9F, 0x37, 0x10 @between right and lower right
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x1F, 0x37, 0x10 @between lower right and down
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFE0, 0x43, 0x10 @between lower left and down
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFF60, 0x43, 0x10 @between left and lower left
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFF2A, 0xFFAA, 0x10 @between left and upper left
- createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFDA, 0xFF94, 0x10 @between up and upper left
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, 45, -99, 16 @between up and upper right
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, 223, -99, 16 @between right and upper right
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, 159, 55, 16 @between right and lower right
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, 31, 55, 16 @between lower right and down
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, -32, 67, 16 @between lower left and down
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, -160, 67, 16 @between left and lower left
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, -214, -86, 16 @between left and upper left
+ createsprite gOriginPulseOrbInwardTemplate, ANIM_TARGET, 2, 1, 0, -38, -108, 16 @between up and upper left
waitforvisualfinish
createvisualtaskontargets AnimTask_ShakeMon2, 5, 0, ANIM_TARGET, 2, 0, 18, 1
monbg ANIM_DEF_PARTNER
- createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, 0xffb0, 0xfff0, 0x1, 0x1
+ createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, -80, -16, 1, 1
stopsound
playsewithpan SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER
delay 5
- createsprite gOriginPulseBlueImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1
+ createsprite gOriginPulseBlueImpactTemplate, ANIM_TARGET, 3, 1, 1
delay 5
- createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1
+ createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
delay 5
- createsprite gOriginPulseBlueImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1
+ createsprite gOriginPulseBlueImpactTemplate, ANIM_TARGET, 3, 1, 1
delay 5
- createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, 0xffc0, 0x14, 0x1, 0x1
+ createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, -64, 20, 1, 1
delay 5
- createsprite gOriginPulseBlueImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1
+ createsprite gOriginPulseBlueImpactTemplate, ANIM_TARGET, 3, 1, 1
delay 5
- createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, 0xffe0, 0x5, 0x1, 0x1
+ createsprite gOriginPulseBasicSplatTemplate, ANIM_TARGET, 3, -32, 5, 1, 1
waitsound
call UnsetPsychicBg
clearmonbg ANIM_DEF_PARTNER
@@ -9023,22 +9023,22 @@ gBattleAnimMove_PrecipiceBlades::
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
setalpha 12, 8
- fadetobg 0x15
+ fadetobg 21
waitbgfadeout
createvisualtask AnimTask_PositionFissureBgOnBattler, 5, ANIM_TARGET, 5, -1
- createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x5
- createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x5
- playsewithpan SE_M_EARTHQUAKE, 0x0
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7, ANIM_TARGET, PrecipiceBladesOpponent
+ createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 5
+ createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 5
+ playsewithpan SE_M_EARTHQUAKE, 0
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7, ANIM_TARGET, PrecipiceBladesOpponent
PrecipiceBladesPlayer:
- createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 3, ANIM_ATTACKER, -45, 5, 145, 0x0
+ createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 3, ANIM_ATTACKER, -45, 5, 145, 0
delay 10
- createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 3, ANIM_ATTACKER, 10, 7, 135, 0x0
+ createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 3, ANIM_ATTACKER, 10, 7, 135, 0
delay 10
- createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 4, ANIM_ATTACKER, -30, 15, 125, 0x0
+ createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 4, ANIM_ATTACKER, -30, 15, 125, 0
delay 5
- createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 5, ANIM_ATTACKER, -10, 17, 120, 0x0
+ createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 5, ANIM_ATTACKER, -10, 17, 120, 0
PrecipiceBladesContinue:
delay 16
createsprite gPrecipiceBladesPlumeTemplate, ANIM_TARGET, 2, -15, 18, ANIM_TARGET
@@ -9049,44 +9049,44 @@ PrecipiceBladesContinue:
delay 32
stopsound
playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET
- createsprite gPrecipiceBladesLargeSpikeTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, -25, 40, 0x0
- createsprite gPrecipiceBladesLargeSpikeTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, 0, -25, 40, 0x0
+ createsprite gPrecipiceBladesLargeSpikeTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, -25, 40, 0
+ createsprite gPrecipiceBladesLargeSpikeTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, 0, -25, 40, 0
delay 6
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -20, 0, 6, 1
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, -20, 0, 6, 1
delay 34
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x6
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, 0x0, 0x6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_TARGET, 2, ANIM_DEF_PARTNER, 0, 6
waitforvisualfinish
call UnsetPsychicBg
clearmonbg ANIM_DEF_PARTNER
blendoff
end
PrecipiceBladesOpponent:
- createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 67, ANIM_ATTACKER, 35, -5, 145, 0x0
+ createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 67, ANIM_ATTACKER, 35, -5, 145, 0
delay 10
- createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 67, ANIM_ATTACKER, -20, -7, 135, 0x0
+ createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 67, ANIM_ATTACKER, -20, -7, 135, 0
delay 10
- createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 68, ANIM_ATTACKER, 20, -15, 125, 0x0
+ createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 68, ANIM_ATTACKER, 20, -15, 125, 0
delay 5
- createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 69, ANIM_ATTACKER, 0, -17, 120, 0x0
+ createsprite gPrecipiceBladesSpikeTemplate, ANIM_ATTACKER, 69, ANIM_ATTACKER, 0, -17, 120, 0
goto PrecipiceBladesContinue
gBattleAnimMove_DragonAscent::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 11, 11, RGB(16, 31, 16)
fadetobg BG_COSMIC
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x2, 0, 128, 0, -1
+ createvisualtask AnimTask_StartSlidingBg, 2, 0, 128, 0, -1
waitbgfadein
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
invisible ANIM_ATTACKER
- createsprite gDragonAscentFlyUpTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x400, 0x24, 0x15, 0x1, ANIM_ATTACKER
+ createsprite gDragonAscentFlyUpTemplate, ANIM_ATTACKER, 2, 0, 0, 1024, 36, 21, 1, ANIM_ATTACKER
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_ATTACKER | F_PAL_BG | F_PAL_ANIM_1 | F_PAL_ANIM_2), 4, 0, 14, RGB(21, 31, 27)
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
waitforvisualfinish
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createvisualtask AnimTask_StartSlidingBg, 0x5, -7304, -784, 1, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, -7304, -784, 1, -1
delay 2
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_ATTACKER | F_PAL_BG | F_PAL_ANIM_1 | F_PAL_ANIM_2), 0, 14, 0, RGB(21, 31, 27)
waitforvisualfinish
@@ -9114,60 +9114,60 @@ gBattleAnimMove_HyperspaceFury::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 10, RGB_BLACK
waitforvisualfinish
playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER
- createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0
+ createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
delay 5
- createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4
+ createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 4
delay 5
- createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8
+ createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 8
delay 5
- createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc
+ createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 12
delay 5
- createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10
+ createsprite gHyperspaceFuryRingTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 16
delay 21
invisible ANIM_ATTACKER
waitforvisualfinish
fadetobg BG_HYPERSPACE_FURY
waitbgfadeout
- createvisualtask AnimTask_SetPsychicBackground, 0x5
+ createvisualtask AnimTask_SetPsychicBackground, 5
waitbgfadein
- loopsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET, 0x2, 0x10
+ loopsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET, 2, 16
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 32, 1
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe0, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, 0, -32, 16
call HyperspaceFuryRandomImpact
delay 2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x16, 0xffea, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, 22, -22, 16
call HyperspaceFuryRandomImpact
delay 2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x1e, 0x0, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, 30, 0, 16
call HyperspaceFuryRandomImpact
delay 2
- createvisualtask AnimTask_IsTargetSameSide, 0x2
- createvisualtask AnimTask_SnatchOpposingMonMove, 0x2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x14, 0x14, 0x10
+ createvisualtask AnimTask_IsTargetSameSide, 2
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, 20, 20, 16
call HyperspaceFuryRandomImpact
delay 2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x1c, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, 0, 28, 16
call HyperspaceFuryRandomImpact
delay 2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffed, 0x13, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, -19, 19, 16
call HyperspaceFuryRandomImpact
delay 2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffe5, 0x0, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, -27, 0, 16
call HyperspaceFuryRandomImpact
delay 2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffee, 0xffee, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, -18, -18, 16
call HyperspaceFuryRandomImpact
delay 2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe7, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, 0, -25, 16
call HyperspaceFuryRandomImpact
delay 2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x11, 0xffef, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, 17, -17, 16
call HyperspaceFuryRandomImpact
delay 2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x17, 0x0, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, 23, 0, 16
call HyperspaceFuryRandomImpact
delay 2
- createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0x10, 0x10
+ createsprite gHyperspaceFuryHandTemplate, ANIM_TARGET, 2, 1, 0, 16, 16, 16
call HyperspaceFuryRandomImpact
delay 7
createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, DOUBLE_CRY_GROWL
@@ -9189,54 +9189,54 @@ gBattleAnimMove_HyperspaceFury::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 0, RGB_BLACK
end
HyperspaceFuryRandomImpact:
- createsprite gHyperspaceFuryImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1
+ createsprite gHyperspaceFuryImpactTemplate, ANIM_TARGET, 3, 1, 1
return
@@@@@@@@@@@@@@@@@@@@@@@ GEN 7 @@@@@@@@@@@@@@@@@@@@@@@
gBattleAnimMove_ShoreUp::
- playsewithpan SE_M_SANDSTORM, 0x0
- createvisualtask AnimTask_LoadSandstormBackground, 0x5, 0x0
+ playsewithpan SE_M_SANDSTORM, 0
+ createvisualtask AnimTask_LoadSandstormBackground, 5, 0
delay 16
- createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0xa, 0x900, 0x60, 0x0
+ createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 10, 2304, 96, 0
delay 10
- createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x5a, 0x800, 0x60, 0x0
+ createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 90, 2048, 96, 0
delay 10
- createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x32, 0xa00, 0x60, 0x0
+ createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 50, 2560, 96, 0
delay 10
- createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x14, 0x900, 0x60, 0x0
+ createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 20, 2304, 96, 0
delay 10
- createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x46, 0x7c0, 0x60, 0x0
+ createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 70, 1984, 96, 0
delay 10
- createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0xb00, 0x60, 0x0
+ createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0, 2816, 96, 0
delay 10
- createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 0x3c, 0xa00, 0x60, 0x0
+ createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 60, 2560, 96, 0
call HealingEffect
waitforvisualfinish
end
gBattleAnimMove_FirstImpression::
- createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0x0, 0x1
+ createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1
playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET
- createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0x1, 0x1
+ createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1
- createvisualtask AnimTask_StretchTargetUp, 0x3
+ createvisualtask AnimTask_StretchTargetUp, 3
waitforvisualfinish
delay 25
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x6
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
waitforvisualfinish
monbg ANIM_TARGET @This is placed here on purpose (to not ruin astonishs animation)
delay 1
- createsprite gFirstImpressionPoundTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0, 0x1, 0x0
- loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET 0xA 0x2
+ createsprite gFirstImpressionPoundTemplate, ANIM_ATTACKER, 4, -10, 0, 1, 0
+ loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET 10 2
delay 1
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -28, 0, 0, 3
waitforvisualfinish
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
waitforvisualfinish
delay 10
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 6
delay 5
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 6
waitforvisualfinish
clearmonbg ANIM_TARGET
end
@@ -9244,23 +9244,23 @@ gBattleAnimMove_FirstImpression::
gBattleAnimMove_BanefulBunker::
monbg ANIM_ATK_PARTNER
splitbgprio ANIM_ATTACKER
- waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER 0x10
- createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0x0, 0x5a
- createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
+ waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER 16
+ createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90
+ createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
delay 4
- createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
+ createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
delay 4
- createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0
+ createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0
delay 4
- createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0
+ createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0
delay 4
- createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0
+ createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0
delay 4
- createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0
+ createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0
delay 4
- createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0
+ createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0
delay 4
- createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0
+ createsprite gBanefulBunkerPoisonBubbleTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0
waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER
end
@@ -9280,7 +9280,7 @@ gBattleAnimMove_SpiritShackle::
delay 3
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1
delay 20
- setarg 7, 0xFFFF
+ setarg 7, -1
playsewithpan SE_M_BIND, SOUND_PAN_TARGET
waitforvisualfinish
clearmonbg ANIM_TARGET
@@ -9290,22 +9290,22 @@ gBattleAnimMove_SpiritShackle::
gBattleAnimMove_DarkestLariat::
fadetobg BG_DARK
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x0, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, 0, 0, -1
waitbgfadein
monbg ANIM_DEF_PARTNER
setalpha 12, 8
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER
- waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 0xa
- waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 0x14
- waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 0x1e
- waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 0x28
- waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 0x32
- waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 0x3c
- waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 0x46
- waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 0x50
- waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 0x5a
- createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x0, 0xffee, 0x6, 0x6, 0x4
- createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x1, 0x12, 0x6, 0x6, 0x4
+ waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 10
+ waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 20
+ waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 30
+ waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 40
+ waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 50
+ waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 60
+ waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 70
+ waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 80
+ waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 90
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 0, -18, 6, 6, 4
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 1, 18, 6, 6, 4
call DarkestLariatImpact
call DarkestLariatImpact
call DarkestLariatImpact
@@ -9315,11 +9315,11 @@ gBattleAnimMove_DarkestLariat::
call UnsetPsychicBg
end
DarkestLariatImpact:
- createsprite gDarkestLariatImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0xfff4, 0x1, 0x1
+ createsprite gDarkestLariatImpactTemplate, ANIM_ATTACKER, 3, 0, -12, 1, 1
delay 8
- createsprite gDarkestLariatImpactTemplate, ANIM_ATTACKER, 3, 0xfff4, 0x8, 0x1, 0x1
+ createsprite gDarkestLariatImpactTemplate, ANIM_ATTACKER, 3, -12, 8, 1, 1
delay 8
- createsprite gDarkestLariatImpactTemplate, ANIM_ATTACKER, 3, 0xc, 0x0, 0x1, 0x1
+ createsprite gDarkestLariatImpactTemplate, ANIM_ATTACKER, 3, 12, 0, 1, 1
delay 8
return
@@ -9328,7 +9328,7 @@ gBattleAnimMove_SparklingAria::
setalpha 14, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 14, RGB_BLACK
waitforvisualfinish
- createsprite gSparklingAriaBlueChargeTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gSparklingAriaBlueChargeTemplate, ANIM_ATTACKER, 2, 0
call SparklingAriaCharge
call SparklingAriaCharge
call SparklingAriaCharge
@@ -9344,71 +9344,71 @@ gBattleAnimMove_SparklingAria::
blendoff
end
SparklingAriaRain:
- createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0xdc, 0x3c
+ createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 1, 220, 60
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 6, 1
delay 2
- createsprite gSparklingAriaBubbleRainTemplate, ANIM_TARGET, 2, 0x1, 0x3c, 0x64
+ createsprite gSparklingAriaBubbleRainTemplate, ANIM_TARGET, 2, 1, 60, 100
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 6, 1
delay 2
- createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0x8c, 0x37
+ createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 1, 140, 55
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 6, 1
delay 2
- createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0xb4, 0x32
+ createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 1, 180, 50
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 6, 1
delay 2
- createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0x14, 0x5a
+ createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 1, 20, 90
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 6, 1
delay 2
- createsprite gSparklingAriaBubbleRainTemplate, ANIM_TARGET, 2, 0x1, 0x5a, 0x5a
+ createsprite gSparklingAriaBubbleRainTemplate, ANIM_TARGET, 2, 1, 90, 90
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 6, 1
delay 2
- createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0xa0, 0x3c
+ createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 1, 160, 60
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 6, 1
delay 2
- createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0x1e, 0x5a
+ createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 1, 30, 90
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 6, 1
delay 2
- createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 0x1, 0x78, 0x3c
+ createsprite gSparklingAriaRainTemplate, ANIM_TARGET, 2, 1, 120, 60
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 6, 1
delay 2
- createsprite gSparklingAriaBubbleRainTemplate, ANIM_TARGET, 2, 0x1, 0xc8, 0x28
+ createsprite gSparklingAriaBubbleRainTemplate, ANIM_TARGET, 2, 1, 200, 40
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 3, 0, 6, 1
delay 2
return
SparklingAriaCharge:
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
+ createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
+ createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0
+ createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0
+ createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0
+ createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0
+ createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0
+ createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER
- createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0
+ createsprite gSparklingAriaBubblesTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0
delay 4
return
@@ -9420,19 +9420,19 @@ gBattleAnimMove_IceHammer::
createsprite gIceHammerPunchStompTemplate, ANIM_TARGET, 3, 0, -32, 15
delay 19
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
- createvisualtask AnimTask_SquishTarget, 0x2
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x68, 0x0, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x48, 0x1, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x38, 0x1, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x58, 0x0, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x38, 0x0, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x58, 0x1, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x48, 0x0, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x68, 0x1, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x48, 0x0, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x38, 0x1, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x50, 0x0, 0x4b
- createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x48, 0x1, 0x4b
+ createvisualtask AnimTask_SquishTarget, 2
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, -12, 104, 0, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, -12, 72, 1, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, -6, 56, 1, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, -6, 88, 0, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, 0, 56, 0, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, 0, 88, 1, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, 6, 72, 0, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, 6, 104, 1, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, 12, 72, 0, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, 12, 56, 1, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, 18, 80, 0, 75
+ createsprite gIceHammerSmokesTemplate, ANIM_TARGET, 4, 0, 18, 72, 1, 75
call IceCrystalEffectShort
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_BLACK
waitforvisualfinish
@@ -9445,97 +9445,97 @@ gBattleAnimMove_FloralHealing::
call CIRCLES_LEAVES
call CIRCLES_LEAVES
waitforvisualfinish
- panse SE_M_COMET_PUNCH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
- playsewithpan SE_M_TWISTER, 0x0
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x46, 0x1, 0x40
+ panse SE_M_COMET_PUNCH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
+ playsewithpan SE_M_TWISTER, 0
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 70, 1, 64
clearmonbg ANIM_ATTACKER
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3c, 0x0, 0x40
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 60, 0, 64
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0x1, 0x40
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 80, 1, 64
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3a, 0x0, 0x78
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 58, 0, 120
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x78
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 120
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x5a, 0x0, 0x40
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 90, 0, 64
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0x0, 0x40 @2
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 48, 0, 64 @2
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x5f, 0x1, 0x50
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 95, 1, 80
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x78
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 120
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x4b, 0x1, 0x40
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 75, 1, 64
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x55, 0x0, 0x78
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 85, 0, 120
delay 2
- loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 0x12, 0xa
+ loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 18, 10
monbg ANIM_TARGET
call FloralHealingSpores
call FloralHealingSpores
call FloralHealingSpores
waitforvisualfinish
playsewithpan SE_M_ABSORB_2, SOUND_PAN_ATTACKER
- createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 16, 0xfff1, 0x0, 0x1, 0x0, 0x20, 0x3c, 0x1
+ createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 16, -15, 0, 1, 0, 32, 60, 1
delay 8
- createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 16, 0xc, 0xfffb, 0x1, 0x0, 0x20, 0x3c, 0x1
+ createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 1, 0, 32, 60, 1
waitforvisualfinish
clearmonbg ANIM_TARGET
end
FloralHealingSpores:
- createsprite gFloralHealingFlowerTemplate, ANIM_ATTACKER, 2, 0x0, 0xffec, 0x55, 0x50, 0x0
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x46, 0x1, 0x40
+ createsprite gFloralHealingFlowerTemplate, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 70, 1, 64
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3c, 0x0, 0x40
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 60, 0, 64
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0x1, 0x40
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 80, 1, 64
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3a, 0x0, 0x78
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 58, 0, 120
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x78
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 120
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x5a, 0x0, 0x40
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 90, 0, 64
delay 3
- createsprite gFloralHealingFlowerTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0xaa, 0x50, 0x0
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0x0, 0x40
+ createsprite gFloralHealingFlowerTemplate, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 48, 0, 64
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x5f, 0x1, 0x50
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 95, 1, 80
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x78
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 120
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x4b, 0x1, 0x40
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 75, 1, 64
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x55, 0x0, 0x78
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 85, 0, 120
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x46, 0x1, 0x40
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 70, 1, 64
delay 3
- createsprite gFloralHealingFlowerTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff1, 0x0, 0x50, 0x0
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3c, 0x0, 0x40
+ createsprite gFloralHealingFlowerTemplate, ANIM_ATTACKER, 2, 0, -15, 0, 80, 0
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 60, 0, 64
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0x1, 0x40
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 80, 1, 64
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3a, 0x0, 0x78
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 58, 0, 120
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x64, 0x0, 0x78
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 120
delay 2
- createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x5a, 0x0, 0x40
+ createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 90, 0, 64
delay 2
- createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0x0, 0x40
+ createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 48, 0, 64
delay 3
return
CIRCLES_LEAVES:
- createsprite gFloralHealingOrbsTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, 0x0
+ createsprite gFloralHealingOrbsTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, 0
delay 2
- createsprite gFloralHealingLeavesTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, 0x0
+ createsprite gFloralHealingLeavesTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, 0
delay 2
- createsprite gFloralHealingOrbsTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, 0x0
+ createsprite gFloralHealingOrbsTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, 0
delay 2
- createsprite gFloralHealingLeavesTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, 0x0
+ createsprite gFloralHealingLeavesTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, 0
delay 2
- createsprite gFloralHealingOrbsTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, 0x0
+ createsprite gFloralHealingOrbsTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, 0
delay 2
- createsprite gFloralHealingLeavesTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, 0x0
+ createsprite gFloralHealingLeavesTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, 0
delay 2
return
@@ -9545,7 +9545,7 @@ gBattleAnimMove_HighHorsepower::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 16, RGB_BLACK
setalpha 12, 8
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET
- createsprite gHighHorsepowerHorseshoeTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x32
+ createsprite gHighHorsepowerHorseshoeTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 50
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE
delay 50
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
@@ -9565,60 +9565,60 @@ gBattleAnimMove_HighHorsepower::
gBattleAnimMove_StrengthSap::
monbg ANIM_DEF_PARTNER
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x3, 0x1, 0x0
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x46, 0x0, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x28, 0x28, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xa, 0xffc4, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffce, 0xffd8, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffd8, 0x28, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x32, 0xffce, 0x6
+ createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, 8, 3, 1, 0
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 70, 0, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 40, 40, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 10, -60, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, -50, -40, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, -40, 40, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 50, -50, 6
delay 2
- createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x1, 0x0
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x32, 0xffe2, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x3c, 0xa, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x0, 0x3c, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x0, 0xffd8, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffc4, 0x14, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffc4, 0xffe2, 0x6
+ createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, -8, -8, 1, 0
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 50, -30, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 60, 10, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0, 60, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0, -40, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, -60, 20, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, -60, -30, 6
delay 2
- createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x1, 0x0
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffce, 0x32, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffc4, 0x14, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0xffd8, 0xffd8, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x14, 0xffc4, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x32, 0xffce, 0x6
- createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 0x23, 0x28, 0x6
+ createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, 8, -8, 1, 0
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, -50, 50, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, -60, 20, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, -40, -40, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 20, -60, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 50, -50, 6
+ createsprite gStrengthSapRedInwardTemplate, ANIM_ATTACKER, 4, 35, 40, 6
delay 2
- createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x1, 0x0
+ createsprite gStrengthSapRedSmokeTemplate, ANIM_TARGET, 2, -8, 8, 1, 0
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 3, RGB(29, 31, 1)
delay 5
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET
- createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0x0, 0x5, 0x8, 0x1a
+ createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET
- createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0xa, 0xfffb, 0xfff8, 0x1a
+ createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET
- createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0xfffb, 0xf, 0x10, 0x21
+ createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET
- createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0x0, 0xfff1, 0xfff0, 0x24
+ createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET
- createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0x0, 0x5, 0x8, 0x1a
+ createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET
- createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0xa, 0xfffb, 0xfff8, 0x1a
+ createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET
- createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0xfff6, 0x14, 0x14, 0x27
+ createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39
delay 4
playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET
- createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 0x5, 0xffee, 0xffec, 0x23
+ createsprite gStrengthSapAbsorbTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 3, 0, RGB(29, 31, 1)
- loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 0x10, 0x3
+ loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 16, 3
call GrantingStarsEffect
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
@@ -9633,7 +9633,7 @@ SolarBladeUnleash:
waitforvisualfinish
playsewithpan SE_M_SWORDS_DANCE, SOUND_PAN_ATTACKER
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 16, 6, 1, 4
- createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0
+ createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0
call SolarBladeSunRays
call SolarBladeSunRays
call SolarBladeSunRays
@@ -9642,7 +9642,7 @@ SolarBladeUnleash:
waitforvisualfinish
call SetSolarBeamBg
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gSolarBladeImpactTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1
+ createsprite gSolarBladeImpactTemplate, ANIM_TARGET, 2, 0, 0, 1
delay 2
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 12, 1
waitforvisualfinish
@@ -9664,21 +9664,21 @@ gBattleAnimMove_Leafage::
create_razor_leaf_cutter_sprite ANIM_TARGET, 3, initial_x=20, initial_y=-10, target_x=20, target_y=0, duration=22, wave_amplitude=0, target_both=1
delay 20
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gLeafageImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2
+ createsprite gLeafageImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
end
gBattleAnimMove_Spotlight::
- createvisualtask AnimTask_CreateSpotlight, 0x2
- createvisualtask AnimTask_HardwarePaletteFade, 0x2, 0xf8, 0x3, 0x0, 0xa, 0x0
+ createvisualtask AnimTask_CreateSpotlight, 2
+ createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 0, 10, 0
waitforvisualfinish
playsewithpan SE_CONTEST_ICON_CHANGE, SOUND_PAN_ATTACKER
- createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff8
+ createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8
delay 64
- createvisualtask AnimTask_HardwarePaletteFade, 0x2, 0xf8, 0x3, 0xa, 0x0, 0x1
+ createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 10, 0, 1
waitforvisualfinish
- createvisualtask AnimTask_RemoveSpotlight, 0x2
+ createvisualtask AnimTask_RemoveSpotlight, 2
end
gBattleAnimMove_ToxicThread::
@@ -9688,7 +9688,7 @@ gBattleAnimMove_ToxicThread::
delay 0
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 9, RGB_BLACK
waitforvisualfinish
- loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 0x9, 0x6
+ loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6
call SpiderWebThread
call SpiderWebThread
call SpiderWebThread
@@ -9709,11 +9709,11 @@ gBattleAnimMove_ToxicThread::
call SpiderWebThread
waitforvisualfinish
playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET
- createsprite gToxicThreadString, ANIM_TARGET, 2, 0x0, 0xa
+ createsprite gToxicThreadString, ANIM_TARGET, 2, 0, 10
delay 4
- createsprite gToxicThreadString, ANIM_TARGET, 2, 0x0, 0xfffe
+ createsprite gToxicThreadString, ANIM_TARGET, 2, 0, -2
delay 4
- createsprite gToxicThreadString, ANIM_TARGET, 2, 0x0, 0x16
+ createsprite gToxicThreadString, ANIM_TARGET, 2, 0, 22
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
delay 1
@@ -9725,10 +9725,10 @@ gBattleAnimMove_LaserFocus::
monbg ANIM_ATTACKER
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
- createsprite gLaserFocusRedEyesTemplate, ANIM_ATTACKER, 5, 0x0, 0x0, 0x0, 0x0
+ createsprite gLaserFocusRedEyesTemplate, ANIM_ATTACKER, 5, 0, 0, 0, 0
waitforvisualfinish
playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0xfff4
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 24, -12
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_BLACK
waitforvisualfinish
@@ -9737,52 +9737,52 @@ gBattleAnimMove_LaserFocus::
gBattleAnimMove_GearUp::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 9, RGB(27, 28, 0)
- createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
+ createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 15
playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER
- createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
delay 15
playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER
- createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gGearUpGearsTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 15
playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER
call GearUpSparks
call GearUpSparks
call GearUpSparks
playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB(27, 28, 0)
waitforvisualfinish
end
GearUpSparks:
playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 15
playsewithpan SE_ROULETTE_BALL2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
delay 15
return
@@ -9793,79 +9793,79 @@ gBattleAnimMove_ThroatChop::
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, 1, 3, 0
waitforvisualfinish
- invert_screen_color scenery=0x101
- createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2
+ invert_screen_color scenery=257
+ createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
delay 3
- createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2
+ createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
delay 3
- createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2
+ createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
delay 3
- createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2
+ createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
delay 3
- createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2
+ createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
delay 3
- createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2
+ createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
delay 3
- createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2
+ createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
delay 3
- createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x2
+ createsprite gThroatChopRedImpactTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1
waitforvisualfinish
- invert_screen_color scenery=0x101
+ invert_screen_color scenery=257
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
blendoff
end
gBattleAnimMove_PollenPuff::
- createvisualtask AnimTask_IsTargetSameSide, 0x5
- jumpargeq 0x0, 0x1, PollenPuffAlly
+ createvisualtask AnimTask_IsTargetSameSide, 5
+ jumpargeq 0, 1, PollenPuffAlly
PollenPuffOpponent:
monbg ANIM_ATTACKER
setalpha 12, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 8, RGB_BLACK
waitforvisualfinish
createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0
- createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
+ createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
delay 13
- createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
+ createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
delay 13
- createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
+ createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
delay 13
- createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
+ createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
clearmonbg ANIM_ATTACKER
waitforvisualfinish
stopsound
monbg ANIM_TARGET
- createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0xA0, 0x28, 0x0
- createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x110, 0x28, 0x0
- createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xB0, 0x28, 0x0
- createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x100, 0x28, 0x0
- createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x90, 0x28, 0x0
- createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x110, 0x28, 0x0
- createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xB0, 0x28, 0x0
- createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x100, 0x28, 0x0
+ createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 160, 40, 0
+ createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 272, 40, 0
+ createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 176, 40, 0
+ createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 256, 40, 0
+ createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 144, 40, 0
+ createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 272, 40, 0
+ createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 176, 40, 0
+ createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 256, 40, 0
delay 1
playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET
- createsprite gPollenPuffSporeTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x0, 0x0, 0x19, 0xffe0
+ createsprite gPollenPuffSporeTemplate, ANIM_TARGET, 2, 10, 0, 0, 0, 25, -32
waitforvisualfinish
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
- createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0xFFE0, 0x10 @up
- createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0xFFEE, 0xFFEE, 0x10 @upperleft
- createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0x1C, 0x10 @down
+ createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 1, 1, 0, -32, 16 @up
+ createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 1, 1, -18, -18, 16 @upperleft
+ createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 1, 1, 0, 28, 16 @down
delay 4
- createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0xFFE5, 0x0, 0x10 @left
- createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0x14, 0x14, 0x10 @lowerright
- createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0xFFED, 0x13, 0x10 @lowerleft
+ createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 1, 1, -27, 0, 16 @left
+ createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 1, 1, 20, 20, 16 @lowerright
+ createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 1, 1, -19, 19, 16 @lowerleft
delay 4
- createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0x1E, 0x0, 0x10 @right
- createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 0x1, 0x1, 0x16, 0xFFEA, 0x10 @upperright
+ createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 1, 1, 30, 0, 16 @right
+ createsprite gPollenPuffImpactTemplates, ANIM_TARGET, 2, 1, 1, 22, -22, 16 @upperright
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 8, 0, RGB_BLACK
waitforvisualfinish
@@ -9878,43 +9878,43 @@ PollenPuffAlly:
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 8, RGB_BLACK
waitforvisualfinish
createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0
- createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
+ createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
delay 13
- createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
+ createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
delay 13
- createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
+ createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
delay 13
- createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
+ createsprite gPollenPuffPinkStarTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
playsewithpan SE_M_ABSORB_2, SOUND_PAN_ATTACKER
clearmonbg ANIM_ATTACKER
waitforvisualfinish
stopsound
playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER
monbg ANIM_TARGET
- createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0xa0, 0x28, 0x0
- createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x120, 0x28, 0x0
- createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x90, 0x28, 0x0
- createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x110, 0x28, 0x0
- createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0xa0, 0x28, 0x0
- createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x120, 0x28, 0x0
- createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x90, 0x28, 0x0
- createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x110, 0x28, 0x0
+ createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 160, 40, 0
+ createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 288, 40, 0
+ createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 144, 40, 0
+ createsprite gPollenPuffPinkSparkleTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 272, 40, 0
+ createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 160, 40, 0
+ createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 288, 40, 0
+ createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 144, 40, 0
+ createsprite gPollenPuffYellowSparkleTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 272, 40, 0
delay 1
- createsprite gPollenPuffSporeTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x0, 0x0, 0x19, 0xffe0
+ createsprite gPollenPuffSporeTemplate, ANIM_TARGET, 2, 10, 0, 0, 0, 25, -32
waitforvisualfinish
unloadspritegfx ANIM_TAG_SPARKLE_2 @stars
unloadspritepal ANIM_TAG_SPARKLE_2 @stars
playsewithpan SE_M_ABSORB_2, SOUND_PAN_ATTACKER
- createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0x1, 0x0
+ createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, 0, -5, 1, 0
delay 7
- createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xa, 0x1, 0x0
+ createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, -15, 10, 1, 0
delay 7
- createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xfff1, 0x1, 0x0
+ createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, -15, -15, 1, 0
delay 7
- createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, 0xa, 0xfffb, 0x1, 0x0
+ createsprite gPollenPuffHealTemplate, ANIM_ATTACKER, 2, 10, -5, 1, 0
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 8, 1, RGB_BLACK
waitforvisualfinish
@@ -9925,19 +9925,19 @@ PollenPuffAlly:
gBattleAnimMove_AnchorShot::
playsewithpan SE_FALL SOUND_PAN_TARGET
monbg ANIM_TARGET
- createsprite gAnchorShotAngledAnchorTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x35
+ createsprite gAnchorShotAngledAnchorTemplate, ANIM_ATTACKER, 2, 0, 0, 53
waitforvisualfinish
- createsprite gAnchorShotAnchorTemplate, ANIM_ATTACKER, 3, 0x0, 0xffe0, 0xf
+ createsprite gAnchorShotAnchorTemplate, ANIM_ATTACKER, 3, 0, -32, 15
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1
delay 37
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1
waitforvisualfinish
- loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER 0x1c 0x2
- createsprite gAnchorShotChainTemplate, ANIM_TARGET, 2, 0xfff0, 0xfff0
+ loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER 28 2
+ createsprite gAnchorShotChainTemplate, ANIM_TARGET, 2, -16, -16
delay 4
- createsprite gAnchorShotChainTemplate, ANIM_TARGET, 2, 0xfff0, 0x0
+ createsprite gAnchorShotChainTemplate, ANIM_TARGET, 2, -16, 0
delay 4
- createsprite gAnchorShotChainTemplate, ANIM_TARGET, 2, 0xfff0, 0x10
+ createsprite gAnchorShotChainTemplate, ANIM_TARGET, 2, -16, 16
waitforvisualfinish
clearmonbg ANIM_TARGET
end
@@ -9959,7 +9959,7 @@ gBattleAnimMove_PsychicTerrain::
createsprite gPsychicTerrainOrbsTemplate, ANIM_ATTACKER, 2, 26, 210
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 4, RGB(27, 0, 13)
delay 52
- setarg 7, 0xFFFF
+ setarg 7, -1
playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0
createsprite gPsychicTerrainStarTemplate, ANIM_TARGET, 2, 0
@@ -9970,7 +9970,7 @@ gBattleAnimMove_PsychicTerrain::
createsprite gPsychicTerrainStarTemplate, ANIM_TARGET, 2, 160
createsprite gPsychicTerrainStarTemplate, ANIM_TARGET, 2, 192
createsprite gPsychicTerrainStarTemplate, ANIM_TARGET, 2, 224
- loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 0xa, 0x3
+ loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 3
waitforvisualfinish
delay 4
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 4, 0, RGB(27, 0, 13)
@@ -9980,7 +9980,7 @@ gBattleAnimMove_PsychicTerrain::
gBattleAnimMove_Lunge::
monbg ANIM_ATK_PARTNER
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 3, 0, 240, 0
- loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 0xe, 0xa
+ loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 14, 10
createsprite gLungeGreenChargeTemplate, ANIM_ATTACKER, 2
delay 110
delay 62
@@ -9990,34 +9990,34 @@ gBattleAnimMove_Lunge::
invisible ANIM_ATTACKER
waitforvisualfinish
playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER
- createsprite gLungeGreenBubbleTemplate, ANIM_TARGET, 2, 0xa, 0x0, 0x0, 0x0, 0x19, 0xffe0
+ createsprite gLungeGreenBubbleTemplate, ANIM_TARGET, 2, 10, 0, 0, 0, 25, -32
delay 15
monbg ANIM_DEF_PARTNER
delay 1
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x46, 0x0, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x28, 0x28, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xa, 0xffc4, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffce, 0xffd8, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffd8, 0x28, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x32, 0xffce, 0x6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 70, 0, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 40, 40, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 10, -60, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -50, -40, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -40, 40, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 50, -50, 6
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 11, 1
delay 2
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x32, 0xffe2, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x3c, 0xa, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x3c, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0xffd8, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffc4, 0x14, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffc4, 0xffe2, 0x6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 50, -30, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 60, 10, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0, 60, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0, -40, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -60, 20, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -60, -30, 6
delay 2
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffce, 0x32, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffc4, 0x14, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0xffd8, 0xffd8, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x14, 0xffc4, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x32, 0xffce, 0x6
- createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 0x23, 0x28, 0x6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -50, 50, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -60, 20, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, -40, -40, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 20, -60, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 50, -50, 6
+ createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 35, 40, 6
waitforvisualfinish
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
- createsprite gLungeGreenImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2
+ createsprite gLungeGreenImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
waitforvisualfinish
visible ANIM_ATTACKER
clearmonbg ANIM_DEF_PARTNER
@@ -10026,25 +10026,25 @@ gBattleAnimMove_Lunge::
gBattleAnimMove_FireLash::
monbg ANIM_DEF_PARTNER
splitbgprio_foes ANIM_TARGET
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 4
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 8
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 12
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 16
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x14
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 20
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 24
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 6
@@ -10052,14 +10052,14 @@ gBattleAnimMove_FireLash::
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 8, 1
createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
- createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 0x1, 0xfff8, 0x0
+ createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 1, -8, 0
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
delay 4
- createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x8, 0x0
+ createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 1, 8, 0
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 18, 1
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
delay 7
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x9
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 9
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
end
@@ -10076,29 +10076,29 @@ gBattleAnimMove_PowerTrip::
call PowerTripBuffUp
waitforvisualfinish
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
- createsprite gPowerTripImpactTemplate, ANIM_ATTACKER, 2, 0xFFF5, 0xA, 0x1, 0x2
+ createsprite gPowerTripImpactTemplate, ANIM_ATTACKER, 2, -11, 10, 1, 2
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
delay 5
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
- createsprite gPowerTripImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0xFFF5, 0x1, 0x2
+ createsprite gPowerTripImpactTemplate, ANIM_ATTACKER, 2, 0, -11, 1, 2
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
delay 5
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
- createsprite gPowerTripImpactTemplate, ANIM_ATTACKER, 2, 0xA, 0x0, 0x1, 0x2
+ createsprite gPowerTripImpactTemplate, ANIM_ATTACKER, 2, 10, 0, 1, 2
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
end
PowerTripBuffUp:
- createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
gBattleAnimMove_BurnUp::
@@ -10106,18 +10106,18 @@ gBattleAnimMove_BurnUp::
setalpha 12, 18
fadetobg BG_FIRE
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xA00, 0x0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 2560, 0, 1, -1
waitbgfadein
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 5, RGB(28, 0, 0)
waitforvisualfinish
- createvisualtask AnimTask_AllocBackupPalBuffer, 0x5
+ createvisualtask AnimTask_AllocBackupPalBuffer, 5
waitforvisualfinish
- createvisualtask AnimTask_CopyPalUnfadedToBackup, 0x5, 0x0, 0x1
+ createvisualtask AnimTask_CopyPalUnfadedToBackup, 5, 0, 1
delay 1
- createvisualtask AnimTask_CopyPalFadedToUnfaded, 0x5, 0x0
+ createvisualtask AnimTask_CopyPalFadedToUnfaded, 5, 0
delay 1
- loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER 0x9 0x2
- createvisualtask AnimTask_CopyPalUnfadedToBackup, 0x5, 0x1, 0x0
+ loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER 9 2
+ createvisualtask AnimTask_CopyPalUnfadedToBackup, 5, 1, 0
delay 1
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 13, RGB(28, 0, 0)
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 2, 0, 15, 1
@@ -10126,20 +10126,20 @@ gBattleAnimMove_BurnUp::
createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, RGB_RED, 8
waitforvisualfinish
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
- createsprite gBurnUpRedYawnTemplate, ANIM_TARGET, 0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x0
+ createsprite gBurnUpRedYawnTemplate, ANIM_TARGET, 0, 0, 0, 0, 0, 30, 0
delay 1
- createvisualtask AnimTask_CopyPalFadedToUnfaded, 0x5, 0x1
+ createvisualtask AnimTask_CopyPalFadedToUnfaded, 5, 1
delay 1
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 13, RGB(18, 18, 18)
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 3, 0, 15, 1
delay 15
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 12, RGB(28, 0, 0)
delay 1
- createvisualtask AnimTask_CopyPalUnfadedFromBackup, 0x5, 0x0, 0x1
+ createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 0, 1
delay 1
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 5, 0, RGB(28, 0, 0)
delay 1
- createvisualtask AnimTask_CopyPalUnfadedFromBackup, 0x5, 0x1, 0x0
+ createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 1, 0
delay 1
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 2, 0, 15, 1
@@ -10147,7 +10147,7 @@ gBattleAnimMove_BurnUp::
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 13, 0, RGB(18, 18, 18)
delay 1
- createvisualtask AnimTask_FreeBackupPalBuffer, 0x5
+ createvisualtask AnimTask_FreeBackupPalBuffer, 5
delay 1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 12, 0, RGB(28, 0, 0)
@@ -10159,59 +10159,59 @@ gBattleAnimMove_BurnUp::
gBattleAnimMove_SpeedSwap::
monbg ANIM_TARGET
- panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 0xfd, 0x0
+ panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 253, 0
delay 15
- createsprite gSpeedSwapCircleTemplate, ANIM_TARGET, 2, 0xfff4, 0x18
+ createsprite gSpeedSwapCircleTemplate, ANIM_TARGET, 2, -12, 24
delay 5
- createsprite gSpeedSwapRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x1, 0x0
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xFFE0, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x16, 0xFFEA, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x1E, 0x0, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x14, 0x14, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x1C, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFED, 0x13, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFE5, 0x0, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xFFEE, 0xFFEE, 0x10
+ createsprite gSpeedSwapRingTemplate, ANIM_ATTACKER, 40, 0, 0, 1, 0
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 1, 0, 0, -32, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 1, 0, 22, -22, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 1, 0, 30, 0, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 1, 0, 20, 20, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 1, 0, 0, 28, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 1, 0, -19, 19, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 1, 0, -27, 0, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 1, 0, -18, -18, 16
waitforvisualfinish
- panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 0xfd, 0x0
- createsprite gSpeedSwapOrbMissileTemplate, ANIM_TARGET, 0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x0
- createsprite gSpeedSwapRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0, 0xFFE0, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x16, 0xFFEA, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1E, 0x0, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x14, 0x14, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0, 0x1C, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFED, 0x13, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFE5, 0x0, 0x10
- createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFEE, 0xFFEE, 0x10
+ panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 253, 0
+ createsprite gSpeedSwapOrbMissileTemplate, ANIM_TARGET, 0, 0, 0, 0, 0, 30, 0
+ createsprite gSpeedSwapRingTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0, 0, 0, -32, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0, 0, 22, -22, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0, 0, 30, 0, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0, 0, 20, 20, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0, 0, 0, 28, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0, 0, -19, 19, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0, 0, -27, 0, 16
+ createsprite gSpeedSwapOrbTemplate, ANIM_TARGET, 2, 0, 0, -18, -18, 16
waitforvisualfinish
clearmonbg ANIM_TARGET
end
gBattleAnimMove_SmartStrike::
createsprite gLockOnTargetSpriteTemplate, ANIM_ATTACKER, 40
- createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 0x1
- createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 0x2
- createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 0x3
- createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 0x4
+ createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 1
+ createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 2
+ createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 3
+ createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 4
delay 120
- setarg 0x7 0xffff
+ setarg 7, -1
waitforvisualfinish
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
setalpha 12, 8
call SonicBoomProjectile
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 10, 1
- createsprite gSmartStrikeImpactTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x8, 0x1, 0x0
+ createsprite gSmartStrikeImpactTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
- createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0xffe8, 0xa
- createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x11, 0xffef, 0xa
- createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x18, 0x0, 0xa
- createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x11, 0x11, 0xa
- createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0x18, 0xa
- createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xffef, 0x11, 0xa
- createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xffe8, 0x0, 0xa
- createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xffef, 0xffef, 0xa
+ createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 1, 1, 0, -24, 10
+ createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 1, 1, 17, -17, 10
+ createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 1, 1, 24, 0, 10
+ createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 1, 1, 17, 17, 10
+ createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 1, 1, 0, 24, 10
+ createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 1, 1, -17, 17, 10
+ createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 1, 1, -24, 0, 10
+ createsprite gSmartStrikeGemTemplate, ANIM_TARGET, 2, 1, 1, -17, -17, 10
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
blendoff
@@ -10225,21 +10225,21 @@ gBattleAnimMove_Purify::
splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER
- createsprite gPurifyWhiteBallTemplate, ANIM_ATTACKER, 2, 0x14, 0xfff8, 0xfff8, 0xfff8, 0x14, 0xffe0
+ createsprite gPurifyWhiteBallTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32
delay 19
playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x68, 0x0, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfff4, 0x48, 0x1, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x38, 0x1, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xfffa, 0x58, 0x0, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x38, 0x0, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x58, 0x1, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x48, 0x0, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x6, 0x68, 0x1, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x48, 0x0, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0xc, 0x38, 0x1, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x50, 0x0, 0x4b
- createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0x0, 0x12, 0x48, 0x1, 0x4b
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, -12, 104, 0, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, -12, 72, 1, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, -6, 56, 1, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, -6, 88, 0, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, 0, 56, 0, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, 0, 88, 1, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, 6, 72, 0, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, 6, 104, 1, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, 12, 72, 0, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, 12, 56, 1, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, 18, 80, 0, 75
+ createsprite gPurifySmokeTemplate, ANIM_TARGET, 4, 0, 18, 72, 1, 75
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
@@ -10251,42 +10251,42 @@ gBattleAnimMove_RevelationDance::
waitforvisualfinish
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0
- createsprite gRevelationDanceYellowOrbsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
- createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0x10, 0xffe8, 0x8, 0x64
- createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0xfff0, 0xffe8, 0x8, 0x64
+ createsprite gRevelationDanceYellowOrbsTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 16, -24, 8, 100
+ createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, -16, -24, 8, 100
delay 15
- createsprite gRevelationDanceYellowOrbsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
- createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0x20, 0xffe8, 0x8, 0x64
- createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe8, 0x8, 0x64
+ createsprite gRevelationDanceYellowOrbsTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 32, -24, 8, 100
+ createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, -32, -24, 8, 100
delay 15
- createsprite gRevelationDanceYellowOrbsTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c
- createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0x18, 0xffe8, 0x8, 0x64
- createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0xffe8, 0xffe8, 0x8, 0x64
+ createsprite gRevelationDanceYellowOrbsTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140
+ createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 24, -24, 8, 100
+ createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, -24, -24, 8, 100
delay 30
- createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0x10, 0xffe8, 0x0, 0x64
- createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0xfff0, 0xffe8, 0x0, 0x64
+ createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 16, -24, 0, 100
+ createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, -16, -24, 0, 100
delay 30
createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0
- createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0x14, 0xfff0, 0xe, 0x50
- createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff2, 0x10, 0x50
+ createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, 20, -16, 14, 80
+ createsprite gRevelationDanceYellowFlowerTemplate, ANIM_ATTACKER, 2, -20, -14, 16, 80
waitforvisualfinish
unloadspritegfx ANIM_TAG_FLOWER @particles
unloadspritepal ANIM_TAG_FLOWER @particles
playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER
- createsprite gRevelationDanceYellowAirWaveTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0xf
+ createsprite gRevelationDanceYellowAirWaveTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 15
waitforvisualfinish
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
- createsprite gRevelationDanceYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x2
- createsprite gRevelationDanceYellowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8
- createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xb0, 0x28
+ createsprite gRevelationDanceYellowImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2
+ createsprite gRevelationDanceYellowRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
+ createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0, 10, 0, 176, 40
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_ATTACKER
- createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff40, 0xf0, 0x28
- createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xff60, 0x28
+ createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40
+ createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0, 10, 0, -160, 40
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_ATTACKER
- createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff40, 0xff90, 0x28
- createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xa0, 0x30, 0x28
- createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0xff20, 0xffe0, 0x28
- createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0x0, 0xa, 0x70, 0xff80, 0x28
+ createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0, 10, -192, -112, 40
+ createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0, 10, 160, 48, 40
+ createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0, 10, -224, -32, 40
+ createsprite gRevelationDanceYellowDispersalTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 15, 0, RGB_BLACK
@@ -10299,109 +10299,109 @@ gBattleAnimMove_CoreEnforcer::
setalpha 12, 8
fadetobg BG_COSMIC
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xFC00, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -1024, 1, -1
waitbgfadein
- loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER 0xd 0xA
- createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
- createsprite gCoreEnforcerBlueRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER 13 10
+ createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
+ createsprite gCoreEnforcerBlueRingTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1
delay 5
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1
delay 5
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0
delay 0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
waitforvisualfinish
- createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1
delay 0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1
delay 5
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1
delay 5
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
waitforvisualfinish
- createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
- createsprite gCoreEnforcerYellowRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
+ createsprite gCoreEnforcerYellowRingTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1
delay 5
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1
delay 5
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0
delay 0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
waitforvisualfinish
- createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1
delay 0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1
delay 5
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1
delay 5
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
waitforvisualfinish
- createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
- createsprite gCoreEnforcerGreenRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
+ createsprite gCoreEnforcerGreenRingTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1
delay 5
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1
delay 5
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0
delay 0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
waitforvisualfinish
- createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1
delay 0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1
delay 5
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1
delay 5
- createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0
- createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1
+ createsprite gCoreEnforcerBlueSparkTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0
+ createsprite gCoreEnforcerGreenChargeTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
delay 5
- createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gCoreEnforcerCircleChargeTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
waitforvisualfinish
unloadspritegfx ANIM_TAG_SPARK_2 @yellow color
unloadspritepal ANIM_TAG_SPARK_2 @yellow color
@@ -10421,87 +10421,87 @@ gBattleAnimMove_CoreEnforcer::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SNORE_Z, 0, 10, 10, RGB(8, 20, 1) @Green
delay 16
monbg ANIM_TARGET
- createvisualtask AnimTask_CreateSmallSolarBeamOrbs, 0x5
- panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
+ createvisualtask AnimTask_CreateSmallSolarBeamOrbs, 5
+ panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 65, 1
createvisualtask AnimTask_ShakeMon2, 5, ANIM_DEF_PARTNER, 2, 0, 65, 1
- createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x0
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfff5, 0xffe2, 0x1, 0x3
+ createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, -11, -30, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfffa, 0xffe2, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, -6, -30, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xffff, 0xffe2, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, -1, -30, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x5, 0xffe2, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 5, -30, 1, 3
delay 1
- createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xA, 0xffe2, 0x1, 0x3
+ createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 10, -30, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xF, 0xffe2, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 15, -30, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x14, 0xffe2, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 20, -30, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xF, 0xffe7, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 15, -25, 1, 3
delay 1
- createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x2
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xC, 0xffea, 0x1, 0x3
+ createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 12, -22, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x9, 0xffed, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 9, -19, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x6, 0xfff0, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 6, -16, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x3, 0xfff3, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 3, -13, 1, 3
delay 1
- createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x3
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x0, 0xfff6, 0x1, 0x3
+ createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0, -10, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfffc, 0xfff9, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, -4, -7, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfff9, 0xfffc, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, -7, -4, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfff6, 0xffff, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, -10, -1, 1, 3
delay 1
- createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x4
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfff3, 0x3, 0x1, 0x3
+ createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, -13, 3, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfff8, 0x3, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, -8, 3, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xfffd, 0x3, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, -3, 3, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x2, 0x3, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 2, 3, 1, 3
delay 1
- createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x5
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x7, 0x3, 0x1, 0x3
+ createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 7, 3, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0xC, 0x3, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 12, 3, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x11, 0x3, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 17, 3, 1, 3
delay 1
- createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 0x16, 0x3, 0x1, 0x3
+ createsprite gCoreEnforcerImpactTemplate, ANIM_TARGET, 3, 22, 3, 1, 3
delay 1
- createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 0xf, 0x0, 0x14, 0x6
+ createsprite gCoreEnforcerBeamTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
delay 7
- createsprite gCoreEnforcerSnoreTemplate, ANIM_ATTACKER, 2, 0x0, 0x0
+ createsprite gCoreEnforcerSnoreTemplate, ANIM_ATTACKER, 2, 0, 0
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 30, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 2, 0, 30, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 2, 0, 30, 1
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 24, -24, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, -16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, 0xffe8, 0x18, ANIM_TARGET, 0x1
+ createsprite gCoreEnforcerExplosionTemplate, ANIM_ATTACKER, 3, -24, 24, ANIM_TARGET, 1
waitforvisualfinish
call UnsetPsychicBg
clearmonbg ANIM_TARGET
@@ -10510,7 +10510,7 @@ gBattleAnimMove_CoreEnforcer::
gBattleAnimMove_TropKick::
monbg ANIM_DEF_PARTNER
- createsprite gTropKickGreenFootTemplate, ANIM_ATTACKER, 2, 0xfff0, 0x8, 0x0, 0x0, 0xa, 0x1, 0x1, 0x1
+ createsprite gTropKickGreenFootTemplate, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, 1, 1, 1
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
delay 10
@@ -10528,13 +10528,13 @@ gBattleAnimMove_TropKick::
gBattleAnimMove_Instruct::
setalpha 12, 8
- createsprite gMetronomeFingerSpriteTemplate, ANIM_ATTACKER, 12, 0x0
+ createsprite gMetronomeFingerSpriteTemplate, ANIM_ATTACKER, 12, 0
delay 24
- loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 0x16, 0x3
+ loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 22, 3
waitforvisualfinish
- createvisualtask AnimTask_HardwarePaletteFade, 0x2, 0xf8, 0x3, 0x0, 0xa, 0x0
+ createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 0, 10, 0
waitforvisualfinish
- createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff8
+ createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 8, RGB(25, 13, 31)
delay 4
monbg ANIM_TARGET
@@ -10558,25 +10558,25 @@ gBattleAnimGeneral_BeakBlastSetUp::
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
delay 3
blend_color_cycle selector=F_PAL_ATTACKER, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB_RED
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
waitforvisualfinish
end
gBattleAnimMove_BeakBlast::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 9, RGB_RED
waitforvisualfinish
- createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0
playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER
waitforvisualfinish
delay 2
- createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x1
+ createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1
delay 2
- loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET 0x4 0x8
- createvisualtask AnimTask_DrillPeckHitSplats, 0x5
+ loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET 4 8
+ createvisualtask AnimTask_DrillPeckHitSplats, 5
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 18, 1
waitforvisualfinish
- createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0x2
+ createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 6
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB_RED
waitforvisualfinish
@@ -10603,9 +10603,9 @@ gBattleAnimMove_ClangingScales::
waitforvisualfinish
end
ClangingScalesMetalSound:
- panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
- createsprite gClangingScalesPurpleMetalSoundTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0x1e, 0x0, ANIM_TARGET
- createsprite gClangingScalesPurpleMetalSoundTemplate, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0x1e, 0x0, ANIM_DEF_PARTNER
+ panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
+ createsprite gClangingScalesPurpleMetalSoundTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0, ANIM_TARGET
+ createsprite gClangingScalesPurpleMetalSoundTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0, ANIM_DEF_PARTNER
delay 2
return
@@ -10613,7 +10613,7 @@ gBattleAnimMove_DragonHammer::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ROUND_SHADOW, 0, 12, 12, RGB(31, 11, 31) @Pinkish purple
fadetobg BG_COSMIC
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, -500, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -500, 0, -1
waitbgfadein
setalpha 15, 0
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5
@@ -10621,7 +10621,7 @@ gBattleAnimMove_DragonHammer::
playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET
createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3
delay 2
- createvisualtask AnimTask_SquishTarget, 0x2
+ createvisualtask AnimTask_SquishTarget, 2
delay 5
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, 8, 8, 1, 0
@@ -10640,7 +10640,7 @@ gBattleAnimMove_DragonHammer::
delay 2
createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 0
delay 51
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
waitforvisualfinish
call UnsetPsychicBg
blendoff
@@ -10652,27 +10652,27 @@ gBattleAnimMove_BrutalSwing::
fadetobg BG_DARK
waitbgfadeout
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
- createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x6, 0x1, 0x0
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
waitforvisualfinish
delay 11
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 26, 0, 0, 5
delay 6
- createsprite gBrutalSwingBasicImpactTemplate, ANIM_TARGET, 3, 0xffe0, 0xfff0, 0x1, 0x1
+ createsprite gBrutalSwingBasicImpactTemplate, ANIM_TARGET, 3, -32, -16, 1, 1
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 21, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 0, 3, 21, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATK_PARTNER, 0, 3, 21, 1
delay 4
- createsprite gBrutalSwingRandomImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1
+ createsprite gBrutalSwingRandomImpactTemplate, ANIM_TARGET, 3, 1, 1
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
delay 4
- createsprite gBrutalSwingRandomImpactTemplate, ANIM_TARGET, 3, 0x1, 0x1
+ createsprite gBrutalSwingRandomImpactTemplate, ANIM_TARGET, 3, 1, 1
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
delay 4
- createsprite gBrutalSwingBasicImpactTemplate, ANIM_TARGET, 3, 0x20, 0x14, 0x1, 0x1
+ createsprite gBrutalSwingBasicImpactTemplate, ANIM_TARGET, 3, 32, 20, 1, 1
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
waitsound
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 6
waitforvisualfinish
restorebg
blendoff
@@ -10682,7 +10682,7 @@ gBattleAnimMove_BrutalSwing::
gBattleAnimMove_AuroraVeil::
fadetobg BG_AURORA
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x400, 0x0, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 1024, 0, 0, -1
waitbgfadein
monbg ANIM_ATK_PARTNER
setalpha 8, 8
@@ -10720,86 +10720,86 @@ gBattleAnimGeneral_ShellTrapSetUp::
gBattleAnimMove_ShellTrap::
ShellTrapUnleash:
monbg ANIM_TARGET
- waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x10
+ waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 16
delay 6
- createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapYellowImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 4
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 8
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 12
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 16
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x14
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 20
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
- createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 24
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
- createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x2
+ createsprite gShellTrapRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 2
delay 5
waitforvisualfinish
call ShellTrapFireLaunch1
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 56, 4, 4, 1
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, -10, 0, -10, 56, 4, 4, 1
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xa, 0x0, 0xa, 0x38, 0xfffc, 0x3, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, 10, 0, 10, 56, -4, 3, 1
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x38, 0xfffc, 0x5, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, -20, 0, -20, 56, -4, 5, 1
delay 3
call ShellTrapFireLaunch2
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
@@ -10842,47 +10842,47 @@ ShellTrapUnleash:
clearmonbg ANIM_TARGET
end
ShellTrapFireLaunch1:
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 56, 4, 4, 1
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, -10, 0, -10, 56, 4, 4, 1
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xa, 0x0, 0xa, 0x38, 0xfffc, 0x3, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, 10, 0, 10, 56, -4, 3, 1
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x38, 0xfffc, 0x5, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, -20, 0, -20, 56, -4, 5, 1
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xf, 0x0, 0xf, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, 15, 0, 15, 56, 4, 4, 1
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, -20, 0, -20, 56, 4, 4, 1
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0x14, 0x0, 0x14, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, 20, 0, 20, 56, 4, 4, 1
delay 3
return
ShellTrapFireLaunch2:
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 56, 4, 4, 1
createvisualtaskontargets AnimTask_ShakeMon, 2, 0, ANIM_TARGET, 3, 0, 6, 1
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xfff6, 0x0, 0xfff6, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, -10, 0, -10, 56, 4, 4, 1
createvisualtaskontargets AnimTask_ShakeMon, 2, 0, ANIM_TARGET, 3, 0, 6, 1
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xa, 0x0, 0xa, 0x38, 0xfffc, 0x3, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, 10, 0, 10, 56, -4, 3, 1
createvisualtaskontargets AnimTask_ShakeMon, 2, 0, ANIM_TARGET, 3, 0, 6, 1
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x38, 0xfffc, 0x5, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, -20, 0, -20, 56, -4, 5, 1
createvisualtaskontargets AnimTask_ShakeMon, 2, 0, ANIM_TARGET, 3, 0, 6, 1
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xf, 0x0, 0xf, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, 15, 0, 15, 56, 4, 4, 1
createvisualtaskontargets AnimTask_ShakeMon, 2, 0, ANIM_TARGET, 3, 0, 6, 1
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0xffec, 0x0, 0xffec, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, -20, 0, -20, 56, 4, 4, 1
createvisualtaskontargets AnimTask_ShakeMon, 2, 0, ANIM_TARGET, 3, 0, 6, 1
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 3
- createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0x0, 0x14, 0x0, 0x14, 0x38, 0x4, 0x4, 0x1
+ createsprite gShellTrapFireHitsTemplate, ANIM_ATTACKER, 40, 0, 20, 0, 20, 56, 4, 4, 1
createvisualtaskontargets AnimTask_ShakeMon, 2, 0, ANIM_TARGET, 3, 0, 6, 1
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 3
@@ -10893,7 +10893,7 @@ gBattleAnimMove_FleurCannon::
monbg ANIM_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 15, RGB(0, 2, 29)
waitforvisualfinish
- panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
+ panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 50, 1
flash_anim_tag_with_color tag=ANIM_TAG_ORBS, delay=1, num_blends=12, color1=RGB_RED, blend_y1=16, color2=0, blend_y2=0
call FleurCannonBeam
@@ -10919,9 +10919,9 @@ gBattleAnimMove_FleurCannon::
call FleurCannonBeam
call FleurCannonBeam
delay 32
- createsprite gFleurCannonDischargeTemplate, ANIM_ATTACKER, 2, 0x1, 0x10, 0x10
+ createsprite gFleurCannonDischargeTemplate, ANIM_ATTACKER, 2, 1, 16, 16
delay 2
- createsprite gFleurCannonDischargeTemplate, ANIM_ATTACKER, 2, 0x1, 0xfff0, 0xfff0
+ createsprite gFleurCannonDischargeTemplate, ANIM_ATTACKER, 2, 1, -16, -16
delay 5
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 11, 1
waitforvisualfinish
@@ -10975,26 +10975,26 @@ gBattleAnimMove_StompingTantrum::
monbg ANIM_TARGET
createvisualtask AnimTask_Splash, 2, ANIM_ATTACKER, 3
delay 5
- createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x5
- createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x5
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x0
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x1
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x2
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x3
+ createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 5
+ createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 5
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 0
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 1
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 2
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 3
call StompingTantrumImpact
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 37
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x0
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x1
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x2
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x3
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 0
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 1
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 2
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 3
call StompingTantrumImpact
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 37
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x0
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x1
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x2
- createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x3
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 0
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 1
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 2
+ createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0, 3
call StompingTantrumImpact
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
waitforvisualfinish
@@ -11011,20 +11011,20 @@ gBattleAnimMove_ShadowBone::
splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET
- createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, 0xffd6, 0xffe7, 0x0, 0x0, 0xf
+ createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15
delay 12
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1
- complex_palette_blend selector=F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, delay=0x5, num_blends=0x1, color1=0x0, blend_y1=10, color2=RGB_BLACK, blend_y2=0
+ complex_palette_blend selector=F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, delay=5, num_blends=1, color1=0, blend_y1=10, color2=RGB_BLACK, blend_y2=0
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
waitforvisualfinish
- createvisualtask AnimTask_NightmareClone, 0x2
+ createvisualtask AnimTask_NightmareClone, 2
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 40, 1
playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET
waitforvisualfinish
restorebg
waitbgfadein
- clearmonbg 0x3
+ clearmonbg 3
blendoff
end
@@ -11032,17 +11032,17 @@ gBattleAnimMove_Accelerock::
monbg ANIM_ATK_PARTNER
setalpha 12, 8
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 1, 5
- createvisualtask AnimTask_TraceMonBlended, 0x2, 0x0, 0x4, 0x7, 0x3
+ createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 3
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
delay 4
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1
create_basic_hitsplat_sprite ANIM_TARGET, 4, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x3, 0x0, 0x5, 0x1
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0xffec, 0x18, 0xe, 0x1
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x5, 0x14, 0xffe8, 0xe, 0x2
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0x0, 0xffec, 0xffe8, 0xe, 0x2
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x3, 0x0, 0x5, 0x1
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 5, 1
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 5, 0, -20, 24, 14, 1
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 5, 20, -24, 14, 2
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, -5, 0, -20, -24, 14, 2
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 5, 1
waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER
blendoff
@@ -11052,7 +11052,7 @@ gBattleAnimMove_Accelerock::
gBattleAnimMove_Liquidation::
monbg ANIM_TARGET
setalpha 12, 8
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
delay 6
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
@@ -11069,7 +11069,7 @@ gBattleAnimMove_PrismaticLaser::
setalpha 14, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 16, RGB_BLACK
playsewithpan SE_ELEVATOR, SOUND_PAN_ATTACKER
- createsprite gPrismaticLaserChargeTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gPrismaticLaserChargeTemplate, ANIM_ATTACKER, 2, 0
call PrismaticLaserInwardSpikes
playsewithpan SE_ELEVATOR, SOUND_PAN_ATTACKER
call PrismaticLaserInwardSpikes
@@ -11098,8 +11098,8 @@ gBattleAnimMove_PrismaticLaser::
unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
unloadspritepal ANIM_TAG_CIRCLE_OF_LIGHT
delay 30
- createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x32
- createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x32
+ createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50
+ createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50
playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER
call PrismaticLaserRain
call PrismaticLaserRain
@@ -11112,73 +11112,73 @@ gBattleAnimMove_PrismaticLaser::
blendoff
end
PrismaticLaserOutwardSpikes:
- createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x0, 0xFF90, 0x10 @up
- createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x5F, 0xFF9D, 0x10 @upper right
- createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x73, 0x0, 0x10 @right
- createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x4F, 0x37, 0x10 @lower right
- createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x0, 0x53, 0x10 @down
- createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFB0, 0x43, 0x10 @lower left
- createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFF60, 0x0, 0x10 @left
- createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFAA, 0xFF94, 0x10 @upper left
+ createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0, 1, 0, -112, 16 @up
+ createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0, 1, 95, -99, 16 @upper right
+ createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0, 1, 115, 0, 16 @right
+ createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0, 1, 79, 55, 16 @lower right
+ createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0, 1, 0, 83, 16 @down
+ createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0, 1, -80, 67, 16 @lower left
+ createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0, 1, -160, 0, 16 @left
+ createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0, 1, -86, -108, 16 @upper left
playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER
return
PrismaticLaserOutwardSpikes2:
- createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFE0, 0x43, 0x10 @between lower left and down
- createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x1F, 0x37, 0x10 @between lower right and down
- createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFFDA, 0xFF94, 0x10 @between up and upper left
- createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFF60, 0x43, 0x10 @between left and lower left
- createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xFF2A, 0xFFAA, 0x10 @between left and upper left
- createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x2D, 0xFF9D, 0x10 @between up and upper right
- createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0xDF, 0xFF9D, 0x10 @between right and upper right
- createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0x0, 0x1, 0x9F, 0x37, 0x10 @between right and lower right
+ createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0, 1, -32, 67, 16 @between lower left and down
+ createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0, 1, 31, 55, 16 @between lower right and down
+ createsprite gPrismaticLaserYellowOutwardTemplate, ANIM_TARGET, 2, 0, 1, -38, -108, 16 @between up and upper left
+ createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0, 1, -160, 67, 16 @between left and lower left
+ createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0, 1, -214, -86, 16 @between left and upper left
+ createsprite gPrismaticLaserVioletOutwardTemplate, ANIM_TARGET, 2, 0, 1, 45, -99, 16 @between up and upper right
+ createsprite gPrismaticLaserRedOutwardTemplate, ANIM_TARGET, 2, 0, 1, 223, -99, 16 @between right and upper right
+ createsprite gPrismaticLaserGreenOutwardTemplate, ANIM_TARGET, 2, 0, 1, 159, 55, 16 @between right and lower right
playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER
return
PrismaticLaserInwardSpikes:
- createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0, 0xFF90, 0x10 @up
- createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFE0, 0x43, 0x10 @between lower left and down
+ createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0, 0, 0, -112, 16 @up
+ createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0, 0, -32, 67, 16 @between lower left and down
delay 1
- createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x5F, 0xFF9D, 0x10 @upper right
- createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1F, 0x37, 0x10 @between lower right and down
- createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFDA, 0xFF94, 0x10 @between up and upper left
+ createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0, 0, 95, -99, 16 @upper right
+ createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0, 0, 31, 55, 16 @between lower right and down
+ createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0, 0, -38, -108, 16 @between up and upper left
delay 1
- createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x73, 0x0, 0x10 @right
- createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFF60, 0x43, 0x10 @between left and lower left
+ createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0, 0, 115, 0, 16 @right
+ createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0, 0, -160, 67, 16 @between left and lower left
delay 1
- createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x4F, 0x37, 0x10 @lower right
- createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFF2A, 0xFFAA, 0x10 @between left and upper left
+ createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0, 0, 79, 55, 16 @lower right
+ createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0, 0, -214, -86, 16 @between left and upper left
delay 1
- createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0, 0x53, 0x10 @down
- createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x2D, 0xFF9D, 0x10 @between up and upper right
+ createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0, 0, 0, 83, 16 @down
+ createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0, 0, 45, -99, 16 @between up and upper right
delay 1
- createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFB0, 0x43, 0x10 @lower left
- createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xDF, 0xFF9D, 0x10 @between right and upper right
+ createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0, 0, -80, 67, 16 @lower left
+ createsprite gPrismaticLaserRedInwardTemplate, ANIM_TARGET, 2, 0, 0, 223, -99, 16 @between right and upper right
delay 1
- createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFF60, 0x0, 0x10 @left
- createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x9F, 0x37, 0x10 @between right and lower right
+ createsprite gPrismaticLaserYellowInwardTemplate, ANIM_TARGET, 2, 0, 0, -160, 0, 16 @left
+ createsprite gPrismaticLaserGreenInwardTemplate, ANIM_TARGET, 2, 0, 0, 159, 55, 16 @between right and lower right
delay 1
- createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xFFAA, 0xFF94, 0x10 @upper left
+ createsprite gPrismaticLaserVioletInwardTemplate, ANIM_TARGET, 2, 0, 0, -86, -108, 16 @upper left
delay 1
return
PrismaticLaserRain:
- createsprite gPrismaticLaserYellowRainTemplate, ANIM_TARGET, 2, 35, 0x3c, 4, ANIM_TARGET
+ createsprite gPrismaticLaserYellowRainTemplate, ANIM_TARGET, 2, 35, 60, 4, ANIM_TARGET
delay 2
- createsprite gPrismaticLaserGreenRainTemplate, ANIM_TARGET, 2, -30, 0x44, 4, ANIM_TARGET
+ createsprite gPrismaticLaserGreenRainTemplate, ANIM_TARGET, 2, -30, 68, 4, ANIM_TARGET
delay 2
- createsprite gPrismaticLaserRedRainTemplate, ANIM_TARGET, 2, 27, 0x37, 4, ANIM_TARGET
+ createsprite gPrismaticLaserRedRainTemplate, ANIM_TARGET, 2, 27, 55, 4, ANIM_TARGET
delay 2
- createsprite gPrismaticLaserVioletRainTemplate, ANIM_TARGET, 2, -20, 0x32, 4, ANIM_TARGET
+ createsprite gPrismaticLaserVioletRainTemplate, ANIM_TARGET, 2, -20, 50, 4, ANIM_TARGET
delay 2
- createsprite gPrismaticLaserYellowRainTemplate, ANIM_TARGET, 2, 33, 0x3a, 4, ANIM_TARGET
+ createsprite gPrismaticLaserYellowRainTemplate, ANIM_TARGET, 2, 33, 58, 4, ANIM_TARGET
delay 2
- createsprite gPrismaticLaserGreenRainTemplate, ANIM_TARGET, 2, -12, 0x3a, 4, ANIM_TARGET
+ createsprite gPrismaticLaserGreenRainTemplate, ANIM_TARGET, 2, -12, 58, 4, ANIM_TARGET
delay 2
- createsprite gPrismaticLaserRedRainTemplate, ANIM_TARGET, 2, 19, 0x3c, 4, ANIM_TARGET
+ createsprite gPrismaticLaserRedRainTemplate, ANIM_TARGET, 2, 19, 60, 4, ANIM_TARGET
delay 2
- createsprite gPrismaticLaserVioletRainTemplate, ANIM_TARGET, 2, -38, 0x3a, 4, ANIM_TARGET
+ createsprite gPrismaticLaserVioletRainTemplate, ANIM_TARGET, 2, -38, 58, 4, ANIM_TARGET
delay 2
- createsprite gPrismaticLaserYellowRainTemplate, ANIM_TARGET, 2, 5, 0x3c, 4, ANIM_TARGET
+ createsprite gPrismaticLaserYellowRainTemplate, ANIM_TARGET, 2, 5, 60, 4, ANIM_TARGET
delay 2
- createsprite gPrismaticLaserGreenRainTemplate, ANIM_TARGET, 2, -23, 0x28, 4, ANIM_TARGET
+ createsprite gPrismaticLaserGreenRainTemplate, ANIM_TARGET, 2, -23, 40, 4, ANIM_TARGET
return
gBattleAnimMove_SpectralThief::
@@ -11188,26 +11188,26 @@ SpectralThiefUnleash:
waitbgfadein
delay 5
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x0, 0x0
+ createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 8, 8, 0, 0
invisible ANIM_ATTACKER
delay 2
- createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x0, 0x0
+ createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, -8, -8, 0, 0
delay 2
- createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x0, 0x0
+ createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 8, -8, 0, 0
delay 2
- createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x0, 0x0
+ createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, -8, 8, 0, 0
delay 2
- createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0x8, 0x8, 0x0, 0x0
+ createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 8, 8, 0, 0
delay 2
- createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0xfff8, 0x0, 0x0
+ createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, -8, -8, 0, 0
delay 2
- createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0x8, 0xfff8, 0x0, 0x0
+ createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 8, -8, 0, 0
delay 2
- createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x0, 0x0
+ createsprite gSpectralThiefBlackSmokeTemplate, ANIM_TARGET, 2, -8, 8, 0, 0
waitforvisualfinish
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
waitforvisualfinish
- createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x30
+ createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 48
delay 48
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 24, 1
createvisualtask AnimTask_BlendBattleAnimPalExclude, 2, 6, 1, 0, 12, RGB(29, 29, 29)
@@ -11217,7 +11217,7 @@ SpectralThiefUnleash:
setalpha 0, 16
delay 1
monbg_static ANIM_TARGET
- createvisualtask AnimTask_MoveTargetMementoShadow, 0x5
+ createvisualtask AnimTask_MoveTargetMementoShadow, 5
playsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET
waitforvisualfinish
clearmonbg_static ANIM_TARGET
@@ -11227,31 +11227,31 @@ SpectralThiefUnleash:
setalpha 12, 8
monbg ANIM_TARGET
delay 1
- createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0
+ createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, -10, -10, 0
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
delay 4
- createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0
+ createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 10, 20, 0
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
delay 4
- createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0
+ createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, -5, 10, 0
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
delay 4
- createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0
+ createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 17, -12, 0
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
delay 4
- createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0xfff1, 0xf, 0x0
+ createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, -15, 15, 0
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
delay 4
- createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0
+ createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0, 0, 0
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
delay 4
- createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 0x14, 0x2, 0x0
+ createsprite gSpectralThiefThiefImpactTemplate, ANIM_TARGET, 2, 20, 2, 0
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
waitforvisualfinish
@@ -11265,11 +11265,11 @@ SpectralThiefUnleash:
SpectralThiefSteal:
setalpha 11, 5
splitbgprio_all
- panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 0xfd, 0x0
+ panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, 253, 0
delay 15
- createsprite gSpectralThiefBlackOrbsTemplate, ANIM_TARGET, 2, 0xfff4, 0x18
+ createsprite gSpectralThiefBlackOrbsTemplate, ANIM_TARGET, 2, -12, 24
delay 11
- setarg 0x7 0xffff
+ setarg 7, -1
waitforvisualfinish
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
call SpectralThiefBuffUp
@@ -11282,22 +11282,22 @@ SpectralThiefSteal:
blendoff
end
SpectralThiefBuffUp:
- createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gSpectralThiefBlackBuffTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
gBattleAnimMove_SunsteelStrike::
monbg ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
- createsprite gSunsteelStrikeBlackFlyBallTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gSunsteelStrikeBlackFlyBallTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATK_PARTNER, 1, 20
delay 24
createsprite gSunsteelStrikeRocksTemplate, ANIM_ATTACKER, 2, 0, 0 @The rock particles mess up the fly animation
@@ -11324,9 +11324,9 @@ gBattleAnimMove_SunsteelStrike::
call SunsteelStrikeBeam
stopsound
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
- createsprite gSunsteelStrikeSuperpowerTemplate, ANIM_TARGET, 2, 0x14
+ createsprite gSunsteelStrikeSuperpowerTemplate, ANIM_TARGET, 2, 20
delay 20
- createsprite gSunsteelStrikeRedImpactTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x0
+ createsprite gSunsteelStrikeRedImpactTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1
waitforvisualfinish
unloadspritegfx ANIM_TAG_METEOR @superpower
@@ -11348,9 +11348,9 @@ gBattleAnimMove_SunsteelStrike::
clearmonbg ANIM_TARGET
end
SunsteelStrikeBeam:
- createsprite gSunsteelStrikeYellowBeamTemplate, ANIM_TARGET, 2, 0x14
+ createsprite gSunsteelStrikeYellowBeamTemplate, ANIM_TARGET, 2, 20
delay 1
- createsprite gSunsteelStrikeRedBeamTemplate, ANIM_TARGET, 2, 0x14
+ createsprite gSunsteelStrikeRedBeamTemplate, ANIM_TARGET, 2, 20
delay 1
return
@@ -11361,13 +11361,13 @@ gBattleAnimMove_MoongeistBeam::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_CIRCLE_OF_LIGHT, 0, 15, 15, RGB(28, 31, 31) @Light Blue
waitforvisualfinish
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET
- createsprite gMoonSpriteTemplate, ANIM_TARGET, 0, 0x20, 0x15
- createvisualtask AnimTask_AlphaFadeIn, 0x3, 0x0, 0x10, 0x10, 0x0, 0x1
+ createsprite gMoonSpriteTemplate, ANIM_TARGET, 0, 32, 21
+ createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1
call MoongeistBeamCharge
call MoongeistBeamCharge
call MoongeistBeamCharge
call MoongeistBeamCharge
- createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0x0 @;Charge circle
+ createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0 @;Charge circle
call MoongeistBeamCharge
delay 32
createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_HYPER_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 1, 15, 0, 5
@@ -11412,7 +11412,7 @@ gBattleAnimMove_MoongeistBeam::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 11, 0, RGB(25, 25, 25)
delay 26
stopsound
- createvisualtask AnimTask_MoonlightEndFade, 0x2
+ createvisualtask AnimTask_MoonlightEndFade, 2
end
MoongeistBeamCharge:
createsprite gMoongeistBeamChargeTemplate, ANIM_ATTACKER, 0, 40, 0, 0, 0, 30, 10 @From right
@@ -11434,9 +11434,9 @@ gBattleAnimMove_TearfulLook::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 5, RGB(0, 15, 31)
waitforvisualfinish
playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET
- createsprite gOpeningEyeSpriteTemplate, ANIM_ATTACKER, 5, 0x0, 0x0, 0x1, 0x0
+ createsprite gOpeningEyeSpriteTemplate, ANIM_ATTACKER, 5, 0, 0, 1, 0
delay 53
- loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 0xC, 0x2
+ loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 12, 2
delay 8
create_tear_drop_sprite ANIM_ATTACKER, 2, relative_to=ANIM_TARGET, type=0
create_tear_drop_sprite ANIM_ATTACKER, 2, relative_to=ANIM_TARGET, type=1
@@ -11471,14 +11471,14 @@ gBattleAnimMove_ZingZap::
delay 4
call ZingZapSparks1
invisible ANIM_ATTACKER
- createsprite gZingZapYellowBallTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xF
+ createsprite gZingZapYellowBallTemplate, ANIM_TARGET, 2, 0, 0, 15
delay 10
call ZingZapSparks2
delay 5
stopsound
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
waitforvisualfinish
- createsprite gZingZapRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8
+ createsprite gZingZapRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1
call ElectricityEffect
visible ANIM_ATTACKER
@@ -11487,86 +11487,86 @@ gBattleAnimMove_ZingZap::
end
ZingZapSparks1:
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
return
ZingZapSparks2:
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
return
gBattleAnimMove_NaturesMadness::
monbg ANIM_ATTACKER
setalpha 14, 8
delay 1
- loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 0x10, 0x3
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x0
+ loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 16, 3
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0
delay 4
- createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x0
+ createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0
delay 4
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x0
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0
delay 4
- createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x0
+ createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0
delay 4
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x0
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0
delay 4
- createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x0
+ createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0
delay 4
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x0
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0
delay 4
- createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x8
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x0
+ createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0
clearmonbg ANIM_ATTACKER
delay 1
monbg ANIM_TARGET
waitforvisualfinish
unloadspritegfx ANIM_TAG_SPARKLE_2
unloadspritepal ANIM_TAG_SPARKLE_2
- createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x1, 0x0
+ createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0, 0, 1, 0
playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER
delay 14
- createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x1, 0x0
+ createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0, 0, 1, 0
playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER
delay 14
- createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x1, 0x0
+ createsprite gNaturesMadnessGrayRingTemplate, ANIM_ATTACKER, 40, 0, 0, 1, 0
playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER
waitforvisualfinish
unloadspritegfx ANIM_TAG_ECLIPSING_ORB
unloadspritepal ANIM_TAG_ECLIPSING_ORB
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1F, 0x8
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x1
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x1
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x1
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x1
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x1
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x1
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x1
- createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x1
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x19, 0x1
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x19, 0x1
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x14, 0xa, 0x19, 0x1
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff6, 0x19, 0x1
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xf, 0x19, 0x1
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0x19, 0x14, 0x19, 0x1
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xffec, 0x14, 0x19, 0x1
- createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0xc, 0x0, 0x19, 0x1
+ createsprite gNaturesMadnessPinkRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 1
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 1
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 1
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 1
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 1
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 1
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 1
+ createsprite gNaturesMadnessPinkStarsTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 1
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 1
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 1
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 1
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 1
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 1
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 1
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 1
+ createsprite gNaturesMadnessCrystalsTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
delay 5
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
@@ -11592,8 +11592,8 @@ gBattleAnimMove_MultiAttack::
waitforvisualfinish
delay 15
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 0x28, 0xffe0, 0x0
- createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 0x28, 0xffd0, 0x0
+ createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0
+ createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -48, 0
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, RGB_BLACK
@@ -11601,15 +11601,15 @@ gBattleAnimMove_MultiAttack::
clearmonbg ANIM_TARGET
end
MultiAttackBuff:
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
gBattleAnimMove_MindBlown::
@@ -11618,15 +11618,15 @@ gBattleAnimMove_MindBlown::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
playsewithpan SE_FALL, SOUND_PAN_TARGET
- createsprite gMindBlownHeadTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x25
+ createsprite gMindBlownHeadTemplate, ANIM_TARGET, 2, 0, 0, 37
waitforvisualfinish
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 15, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 2, 0, 15, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 2, 0, 15, 1
delay 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMindBlownBlueImpactTemplate, ANIM_TARGET, 3, 0x1, 0x0
- createsprite gMindBlownPinkImpactTemplate, ANIM_TARGET, 3, 0x1, 0x0
+ createsprite gMindBlownBlueImpactTemplate, ANIM_TARGET, 3, 1, 0
+ createsprite gMindBlownPinkImpactTemplate, ANIM_TARGET, 3, 1, 0
call MindBlownBlueOrbs
delay 1
call MindBlownPinkOrbs
@@ -11644,24 +11644,24 @@ gBattleAnimMove_MindBlown::
clearmonbg ANIM_TARGET
end
MindBlownBlueOrbs:
- createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0xFF90, 0x8 @up
- createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x5F, 0xFF9D, 0x8 @upper right
- createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x73, 0x0, 0x8 @right
- createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x4F, 0x37, 0x8 @lower right
- createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0x53, 0x8 @down
- createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFFB0, 0x43, 0x8 @lower left
- createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFF60, 0x0, 0x8 @left
- createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFFAA, 0xFF94, 0x8 @upper left
+ createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 1, 1, 0, -112, 8 @up
+ createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 1, 1, 95, -99, 8 @upper right
+ createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 1, 1, 115, 0, 8 @right
+ createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 1, 1, 79, 55, 8 @lower right
+ createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 1, 1, 0, 83, 8 @down
+ createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 1, 1, -80, 67, 8 @lower left
+ createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 1, 1, -160, 0, 8 @left
+ createsprite gMindBlownBlueOrbsTemplate, ANIM_TARGET, 2, 1, 1, -86, -108, 8 @upper left
return
MindBlownPinkOrbs:
- createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x2D, 0xFF9D, 0x8 @between up and upper right
- createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xDF, 0xFF9D, 0x8 @between right and upper right
- createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x9F, 0x37, 0x8 @between right and lower right
- createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0x1F, 0x37, 0x8 @between lower right and down
- createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFFE0, 0x43, 0x8 @between lower left and down
- createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFF60, 0x43, 0x8 @between left and lower left
- createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFF2A, 0xFFAA, 0x8 @between left and upper left
- createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 0x1, 0x1, 0xFFDA, 0xFF94, 0x8 @between up and upper left
+ createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 1, 1, 45, -99, 8 @between up and upper right
+ createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 1, 1, 223, -99, 8 @between right and upper right
+ createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 1, 1, 159, 55, 8 @between right and lower right
+ createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 1, 1, 31, 55, 8 @between lower right and down
+ createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 1, 1, -32, 67, 8 @between lower left and down
+ createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 1, 1, -160, 67, 8 @between left and lower left
+ createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 1, 1, -214, -86, 8 @between left and upper left
+ createsprite gMindBlownPinkOrbsTemplate, ANIM_TARGET, 2, 1, 1, -38, -108, 8 @between up and upper left
return
gBattleAnimMove_PlasmaFists::
@@ -11669,7 +11669,7 @@ gBattleAnimMove_PlasmaFists::
setalpha 12, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 16, RGB_BLACK
waitforvisualfinish
- createsprite gPlasmaFistsChargeTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gPlasmaFistsChargeTemplate, ANIM_ATTACKER, 2, 0
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 3, 92, 1
call PlasmaFistSpark1
delay 10
@@ -11711,24 +11711,24 @@ gBattleAnimMove_PlasmaFists::
PlasmaFistSpark1:
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
blend_color_cycle selector=F_PAL_ATTACKER, delay=0, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB(31, 31, 22)
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
return
PlasmaFistSpark2:
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
return
PlasmaFistsImpact:
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
- createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x8, 0x1, 0x0
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=1
delay 1
- invert_screen_color scenery=0x101
+ invert_screen_color scenery=257
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -48
delay 1
@@ -11737,7 +11737,7 @@ PlasmaFistsImpact:
createsprite gLightningSpriteTemplate, ANIM_ATTACKER, 2, 0, 16
delay 1
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
- invert_screen_color scenery=0x101
+ invert_screen_color scenery=257
delay 2
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1
create_basic_hitsplat_sprite ANIM_ATTACKER, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=2
@@ -11746,7 +11746,7 @@ PlasmaFistsImpact:
gBattleAnimMove_PhotonGeyser::
monbg ANIM_ATTACKER
setalpha 12, 8
- createsprite gPhotonGeyserChargeTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gPhotonGeyserChargeTemplate, ANIM_ATTACKER, 2, 0
call PhotonGeyserSparks1
create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=-40, y=-40, duration=16
create_power_absorption_orb_sprite ANIM_ATTACKER, 2, x=0, y=40, duration=16
@@ -11784,19 +11784,19 @@ gBattleAnimMove_PhotonGeyser::
unloadspritepal ANIM_TAG_ORBS @recover
unloadspritegfx ANIM_TAG_SHOCK_3 @charge
unloadspritepal ANIM_TAG_SHOCK_3 @charge
- createsprite gPhotonGeyserWhiteRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8
- createsprite gPhotonGeyserZapBallTemplate, ANIM_TARGET, 3, 0xa, 0x0, 0x0, 0x0, 0x1e, 0x0
- createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x0
- createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x40, 0x28, 0x1
- createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x80, 0x28, 0x0
- createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x10, 0x1e, 0x0, 0x28, 0x2
- createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x20, 0x28, 0x0
- createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0x60, 0x28, 0x1
- createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xa0, 0x28, 0x0
- createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 0xa, 0x0, 0x8, 0x1e, 0xe0, 0x28, 0x2
+ createsprite gPhotonGeyserWhiteRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8
+ createsprite gPhotonGeyserZapBallTemplate, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0
+ createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0
+ createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1
+ createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 128, 40, 0
+ createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 2
+ createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 32, 40, 0
+ createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 96, 40, 1
+ createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0
+ createsprite gPhotonGeyserZapCannonSparkTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2
waitforvisualfinish
monbg ANIM_TARGET
- createsprite gPhotonGeyserYellowRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x0, 0x1f, 0x8
+ createsprite gPhotonGeyserYellowRingTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0, 31, 8
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
unloadspritegfx ANIM_TAG_YELLOW_BALL @confuse ray (for zap cannon)
@@ -11808,7 +11808,7 @@ gBattleAnimMove_PhotonGeyser::
@Shoot beam to the sky
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 6, 0, 16, RGB(31, 31, 16) @Light yellow
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 96, 1
- panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
+ panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
call PhotonGeyserBeam
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 16, 0, RGB(31, 31, 16) @Light yellow
@@ -11819,18 +11819,18 @@ gBattleAnimMove_PhotonGeyser::
end
PhotonGeyserSparks1:
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
- createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0x20, 0x18, 0xbe, 0xc, 0x0, 0x1, 0x0
+ createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0
delay 0
- createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0
- createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0x9c, 0x18, 0x79, 0xd, 0x0, 0x1, 0x1
+ createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0
+ createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1
return
PhotonGeyserSparks2:
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
- createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0
- createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0xaa, 0x18, 0x2a, 0xb, 0x0, 0x1, 0x1
+ createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0
+ createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1
delay 0
- createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1
+ createsprite gPhotonGeyserSparkTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1
return
PhotonGeyserBeam:
createsprite gPhotonGeyserBeam, ANIM_TARGET, 3, 0, 19, ANIM_TARGET, 180, 2, 6
@@ -12204,17 +12204,17 @@ gBattleAnimMove_VeeveeVolley::
jumpreteq 3, gBattleAnimMove_DoubleEdge
gBattleAnimMove_DoubleIronBash::
- loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 0x1c, 0x2
+ loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2
metallic_shine permanent=0
waitforvisualfinish
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
setalpha 12, 8
- loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 0x14, 0x2
- createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x0, 0xc, 0x4, 0x1, 0x4
- createvisualtask AnimTask_AnimateGustTornadoPalette, 0x5, 0x1, 0x46
- createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, 0xffe7, 0x0, 0x0, 0x0, 0x0 @wing attack
- createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, 0x19, 0x0, 0x0, 0x0, 0x0 @wing attack
+ loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4
+ createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70
+ createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, -25, 0, 0, 0, 0 @wing attack
+ createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, 25, 0, 0, 0, 0 @wing attack
delay 24
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 9
delay 17
@@ -12223,10 +12223,10 @@ gBattleAnimMove_DoubleIronBash::
waitforvisualfinish
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0xb
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 11
waitforvisualfinish
delay 3
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x7
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 7
clearmonbg ANIM_DEF_PARTNER
blendoff
end
@@ -12292,7 +12292,7 @@ DynamaxCannonLaunch:
gBattleAnimMove_SnipeShot::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 16, 0 @;Black
waitforvisualfinish
- createsprite gLeerSpriteTemplate, ANIM_TARGET, 2, 0x18, -12
+ createsprite gLeerSpriteTemplate, ANIM_TARGET, 2, 24, -12
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
waitforvisualfinish
delay 32
@@ -12311,8 +12311,8 @@ gBattleAnimMove_JawLock::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 7, RGB_BLACK @Black
waitforvisualfinish
playsewithpan SE_M_BITE, SOUND_PAN_TARGET
- createsprite gJawLockTeethTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffe0, 0x1, 0x333, 0x333, 0xa, 15
- createsprite gJawLockTeethTemplate, ANIM_ATTACKER, 2, 0x20, 0x20, 0x5, 0xfccd, 0xfccd, 0xa, 15
+ createsprite gJawLockTeethTemplate, ANIM_ATTACKER, 2, -32, -32, 1, 819, 819, 10, 15
+ createsprite gJawLockTeethTemplate, ANIM_ATTACKER, 2, 32, 32, 5, -819, -819, 10, 15
delay 10
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=-8, y=0, relative_to=ANIM_TARGET, animation=1
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 10, 2
@@ -12324,11 +12324,11 @@ gBattleAnimMove_JawLock::
end
gBattleAnimMove_StuffCheeks::
- playsewithpan SE_M_METRONOME, 0xc0
- createsprite gFloatingBerryTemplate, ANIM_ATTACKER, 1, 0x0
+ playsewithpan SE_M_METRONOME, 192
+ createsprite gFloatingBerryTemplate, ANIM_ATTACKER, 1, 0
delay 69
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 0x1 BERRYEAT_ON_PLAYER
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 1 BERRYEAT_ON_PLAYER
BerryEatingOpponent:
call BiteOpponent
delay 16
@@ -12341,9 +12341,9 @@ BERRYEAT_ON_PLAYER:
call BitePlayer
delay 10
POST_BERRY_EAT:
- playsewithpan SE_SHINY, 0xc0
+ playsewithpan SE_SHINY, 192
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 7, 0, RGB(17, 31, 25)
- createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
waitforvisualfinish
end
BitePlayer:
@@ -12353,25 +12353,25 @@ BitePlayer:
return
BiteOpponent:
playsewithpan SE_M_BITE, SOUND_PAN_TARGET
- create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=33, y=-48, animation=0, x_velocity=0/256, y_velocity=819/256, half_duration=10
- create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=33, y=16, animation=4, x_velocity=0/256, y_velocity=-819/256, half_duration=10
+ create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=-33, y=-48, animation=0, x_velocity=0/256, y_velocity=819/256, half_duration=10
+ create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=-33, y=16, animation=4, x_velocity=0/256, y_velocity=-819/256, half_duration=10
return
gBattleAnimMove_NoRetreat::
- loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER 0x7 0x12
- createsprite gNoRetreatFlameTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 10, 0xA0, 0
- createsprite gNoRetreatFlameTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -20, 10, 0xA0, 0
- createvisualtask AnimTask_TeeterDanceMovement, 0x5
+ loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER 7 18
+ createsprite gNoRetreatFlameTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 10, 160, 0
+ createsprite gNoRetreatFlameTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -20, 10, 160, 0
+ createvisualtask AnimTask_TeeterDanceMovement, 5
waitforvisualfinish
end
gBattleAnimMove_TarShot::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_POISON_BUBBLE, 0, 15, 15, RGB_BLACK @Black
monbg ANIM_TARGET
- createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x28, 0x1, 0x0, 0x0
+ createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, 0, 0
playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER
delay 5
- createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x28, 0x1, 0xffe8, 0x0
+ createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, -24, 0
playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER
delay 15
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 10, 1
@@ -12379,17 +12379,17 @@ gBattleAnimMove_TarShot::
createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, -26, -24, 0, 15, 55
playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET
delay 10
- createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xf, 0xffe5, 0x0, 0xC, 0x32
+ createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 15, -27, 0, 12, 50
playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET
delay 10
- createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xfff1, 0xffef, 0x0, 0xa, 0x2d
+ createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, -15, -17, 0, 10, 45
playsewithpan SE_M_BUBBLE SOUND_PAN_TARGET
waitforvisualfinish
clearmonbg ANIM_TARGET
end
gBattleAnimMove_MagicPowder::
- loopsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER 0xE 0x8
+ loopsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER 14 8
create_poison_powder_particle_sprite ANIM_TARGET, 2, x=-30, y=-22, duration=117, y_velocity=80/256, wave_amplitude=5, wave_speed=1
create_magic_powder_particle_sprite ANIM_TARGET, 2, x=10, y=-22, duration=117, y_velocity=80/256, wave_amplitude=-5, wave_speed=1
create_poison_powder_particle_sprite ANIM_TARGET, 2, x=-25, y=-22, duration=117, y_velocity=112/256, wave_amplitude=5, wave_speed=3
@@ -12416,11 +12416,11 @@ gBattleAnimMove_MagicPowder::
gBattleAnimMove_DragonDarts::
playsewithpan SE_FALL, SOUND_PAN_ATTACKER
- createdragondartsprite ANIM_TARGET, 2, 0x0, 0x0, 0x19
+ createdragondartsprite ANIM_TARGET, 2, 0, 0, 25
delay 25
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 16, 1
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
waitforvisualfinish
end
@@ -12451,9 +12451,9 @@ gBattleAnimMove_BoltBeak::
call BoltBeakSparks
waitforvisualfinish
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=0, target_blend_y=0, color=RGB(31, 31, 22)
- createsprite gHorizontalLungeSpriteTemplate, 0x2, 0x2, 0x4, 0x4
+ createsprite gHorizontalLungeSpriteTemplate, 2, 2, 4, 4
delay 4
- createsprite gHornHitSpriteTemplate, 0x84, 0x3, 0x8, 0x8, 0xa
+ createsprite gHornHitSpriteTemplate, 132, 3, 8, 8, 10
waitforvisualfinish
create_flashing_hitsplat_sprite 131, 4, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
@@ -12465,32 +12465,32 @@ gBattleAnimMove_BoltBeak::
end
BoltBeakSparks:
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 7, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 7, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gBoltBeakBlueSparkTemplate, 0x0, 0x7, 0x50, 0x18, 0x16, 0xc, 0x0, 0x1, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 7, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gBoltBeakBlueSparkTemplate, 0, 7, 80, 24, 22, 12, 0, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 7, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 0
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=0, target_blend_y=0, color=RGB(31, 31, 22)
delay 10
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=5, target_blend_y=5, color=RGB(31, 31, 22)
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gBoltBeakBlueSparkTemplate, 0x0, 0x7, 0x64, 0x18, 0x3c, 0xa, 0x0, 0x1, 0x0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 7, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gBoltBeakBlueSparkTemplate, 0, 7, 100, 24, 60, 10, 0, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 7, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gBoltBeakBlueSparkTemplate, 0x0, 0x7, 0xee, 0x18, 0xa5, 0xa, 0x0, 0x1, 0x1
+ createsprite gBoltBeakBlueSparkTemplate, 0, 7, 238, 24, 165, 10, 0, 1, 1
delay 0
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=0, target_blend_y=0, color=RGB(1, 23, 29)
delay 20
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=4, target_blend_y=4, color=RGB(1, 23, 29)
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, 0x4, 0x8, 0x0, 0x0, 0x20, 0xc, 0x0, 0x14, 0x0, 0x0
- createsprite gBoltBeakBlueFlashingSparkTemplate, 0x4, 0x8, 0x0, 0x0, 0x20, 0xc, 0x40, 0x14, 0x1, 0x0
- createsprite gSparkElectricityFlashingSpriteTemplate, 0x4, 0x8, 0x0, 0x0, 0x20, 0xc, 0x80, 0x14, 0x0, 0x0
- createsprite gBoltBeakBlueFlashingSparkTemplate, 0x4, 0x8, 0x0, 0x0, 0x20, 0xc, 0x0, 0x14, 0x2, 0x0
- createsprite gSparkElectricityFlashingSpriteTemplate, 0x4, 0x8, 0x0, 0x0, 0x10, 0xc, 0x20, 0x14, 0x0, 0x0
- createsprite gBoltBeakBlueFlashingSparkTemplate, 0x4, 0x8, 0x0, 0x0, 0x10, 0xc, 0x60, 0x14, 0x1, 0x0
- createsprite gSparkElectricityFlashingSpriteTemplate, 0x4, 0x8, 0x0, 0x0, 0x10, 0xc, 0xa0, 0x14, 0x0, 0x0
- createsprite gBoltBeakBlueFlashingSparkTemplate, 0x4, 0x8, 0x0, 0x0, 0x10, 0xc, 0xe0, 0x14, 0x2, 0x0
+ createsprite gSparkElectricityFlashingSpriteTemplate, 4, 8, 0, 0, 32, 12, 0, 20, 0, 0
+ createsprite gBoltBeakBlueFlashingSparkTemplate, 4, 8, 0, 0, 32, 12, 64, 20, 1, 0
+ createsprite gSparkElectricityFlashingSpriteTemplate, 4, 8, 0, 0, 32, 12, 128, 20, 0, 0
+ createsprite gBoltBeakBlueFlashingSparkTemplate, 4, 8, 0, 0, 32, 12, 0, 20, 2, 0
+ createsprite gSparkElectricityFlashingSpriteTemplate, 4, 8, 0, 0, 16, 12, 32, 20, 0, 0
+ createsprite gBoltBeakBlueFlashingSparkTemplate, 4, 8, 0, 0, 16, 12, 96, 20, 1, 0
+ createsprite gSparkElectricityFlashingSpriteTemplate, 4, 8, 0, 0, 16, 12, 160, 20, 0, 0
+ createsprite gBoltBeakBlueFlashingSparkTemplate, 4, 8, 0, 0, 16, 12, 224, 20, 2, 0
delay 4
return
@@ -12503,47 +12503,47 @@ gBattleAnimMove_FishiousRend::
waitforvisualfinish
end
FishousRendBubbles:
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xF, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xF, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 15, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 15, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xA, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xA, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 10, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 10, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x5, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x5, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 5, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 5, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfffb, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfffb, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -5, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -5, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -10, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -10, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff1, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff1, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -15, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -15, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xffec, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xffec, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -20, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -20, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff1, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff1, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -15, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -15, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfff6, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -10, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -10, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfffb, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xfffb, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -5, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, -5, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x5, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0x5, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 5, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 5, 0
delay 2
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xA, 0x0
- createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0xA, 0x0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 10, 0
+ createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 10, 0
return
gBattleAnimMove_CourtChange::
@@ -12555,8 +12555,8 @@ gBattleAnimMove_ClangorousSoul::
call ClangorousSoulStarBuffEffect
call ClangorousSoulStarBuffEffect
waitforvisualfinish
- createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, 0xfff0, 0, 0, 0, 10, ANIM_ATTACKER, ANIM_RIGHT_FIST, 1
- createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, 0x10, 0, 0, 0, 10, ANIM_ATTACKER, ANIM_LEFT_FIST, 1
+ createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, ANIM_ATTACKER, ANIM_RIGHT_FIST, 1
+ createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, 16, 0, 0, 0, 10, ANIM_ATTACKER, ANIM_LEFT_FIST, 1
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
waitforvisualfinish
unloadspritegfx ANIM_TAG_HORSESHOE_SIDE_FIST
@@ -12565,35 +12565,35 @@ gBattleAnimMove_ClangorousSoul::
unloadspritepal ANIM_TAG_SPARKLE_2 @stars
waitforvisualfinish
playsewithpan SE_SHINY, SOUND_PAN_ATTACKER
- createsprite gClangorousSoulRedRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gClangorousSoulRedRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
waitforvisualfinish
end
ClangorousSoulStarBuffEffect:
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
- createsprite gClangorousSoulBlueBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gClangorousSoulBlueBuffTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gClangorousSoulPurpleBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
- createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x0, 0x0, 0x20, 0x3c
+ createsprite gClangorousSoulPurpleBuffTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
+ createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60
delay 4
- createsprite gClangorousSoulWhiteBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gClangorousSoulWhiteBuffTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, 0x0, 0x0, 0x20, 0x3c
+ createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60
return
gBattleAnimMove_BodyPress::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ROUND_SHADOW, 0, 13, 13, RGB(29, 18, 7) @Orange
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
- createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x6, 0x1, 0x0
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
delay 7
- createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150 @Fly up
+ createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336 @Fly up
waitforvisualfinish
delay 47
createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 @Bounce down
delay 2
playsewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER
- createvisualtask AnimTask_SquishTarget, 0x2
+ createvisualtask AnimTask_SquishTarget, 2
waitforvisualfinish
end
@@ -12606,27 +12606,27 @@ gBattleAnimMove_DrumBeating::
splitbgprio ANIM_TARGET
setalpha 12, 8
call BellyDrumRight
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0
playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER
delay 15
call BellyDrumLeft
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1, 0x1, 0x0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 1, 0
playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER
delay 15
call BellyDrumRight
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x3, 0x3, 0x80
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 3, 3, 128
playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER
delay 7
call BellyDrumLeft
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0x0, 0x80
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 128
playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER
delay 7
call BellyDrumRight
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0x1, 0x0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 1, 0
playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER
delay 7
call BellyDrumLeft
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x3, 0x0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 3, 0
playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER
create_frenzy_plant_root_sprite ANIM_ATTACKER, 2, interpolate_percent=85, offset_x=16, offset_y=6, subpriority=0, animation=3, duration=80
playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET
@@ -12731,8 +12731,8 @@ gBattleAnimMove_BehemothBlade::
unloadspritegfx ANIM_TAG_AIR_WAVE_2 @black color
unloadspritepal ANIM_TAG_AIR_WAVE_2 @black color
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gSacredSwordBladesTemplate, ANIM_TARGET, 1, 0, 10, 0, 0xFF00, 10
- createsprite gSacredSwordCutTemplate, ANIM_ATTACKER, 2, 40, 0xffe0, 0
+ createsprite gSacredSwordBladesTemplate, ANIM_TARGET, 1, 0, 10, 0, -256, 10
+ createsprite gSacredSwordCutTemplate, ANIM_ATTACKER, 2, 40, -32, 0
delay 5
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1
waitforvisualfinish
@@ -12897,25 +12897,25 @@ gBattleAnimMove_AuraWheel::
setalpha 12, 8
monbg ANIM_DEF_PARTNER
splitbgprio_foes ANIM_TARGET
- createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0
+ createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
delay 2
- createsprite gAuraWheelRedElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4
+ createsprite gAuraWheelRedElectricityTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 4
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
delay 2
- createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8
+ createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 8
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
delay 2
- createsprite gAuraWheelRedElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc
+ createsprite gAuraWheelRedElectricityTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 12
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
delay 2
- createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10
+ createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 16
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
delay 2
- createsprite gAuraWheelRedElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x14
+ createsprite gAuraWheelRedElectricityTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
delay 2
- createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18
+ createsprite gAuraWheelBlueElectricityTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 24
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 6
@@ -12924,12 +12924,12 @@ gBattleAnimMove_AuraWheel::
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 23, 1
create_basic_hitsplat_sprite ANIM_ATTACKER, 4, x=-10, y=0, relative_to=ANIM_TARGET, animation=0
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPARK_2, 2, 12, 0, RGB(1, 23, 29) @Revert blue Electricity
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x40, 0x28, 0x1, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x80, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0xc0, 0x28, 0x2, 0x8003
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 0, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 64, 40, 1, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 128, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 192, 40, 2, -32765
delay 7
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x9
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 9
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
blendoff
@@ -12941,21 +12941,21 @@ gBattleAnimMove_BreakingSwipe::
monbg ANIM_TARGET
setalpha 12, 8
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=-32, y=-16, relative_to=ANIM_TARGET, animation=1
- createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0
+ createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 5, 0, 5, 0
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 21, 1
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 0, 3, 21, 1
delay 4
create_random_pos_hitsplat_sprite ANIM_TARGET, 3, relative_to=ANIM_TARGET, animation=1
- createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0xfff1, 0xfff6, 0x5, 0x0
+ createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, -15, -10, 5, 0
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
delay 4
create_random_pos_hitsplat_sprite ANIM_TARGET, 3, relative_to=ANIM_TARGET, animation=1
- createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2
+ createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, -8, 8, 5, 2
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
delay 4
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=32, y=20, relative_to=ANIM_TARGET, animation=1
- createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1
+ createsprite gBreakingSwipeCenteredElectricity, ANIM_TARGET, 2, -20, 15, 5, 1
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
waitsound
waitforvisualfinish
@@ -12965,7 +12965,7 @@ gBattleAnimMove_BreakingSwipe::
gBattleAnimMove_BranchPoke::
playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER
- createsprite gBranchPokeBranchTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x25
+ createsprite gBranchPokeBranchTemplate, ANIM_TARGET, 2, 0, 0, 37
waitforvisualfinish
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1
create_flashing_hitsplat_sprite ANIM_TARGET, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=1
@@ -12989,42 +12989,42 @@ OverdriveRings:
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET
simple_palette_blend selector=(F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_SIDE), delay=3, initial_blend_y=8, target_blend_y=0, color=RGB_YELLOW
createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_ATTACKER, 0
- createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
+ 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
shake_battle_platforms priority=2, x_offset=1, y_offset=0, shakes=6, delay=1
- createvisualtask SoundTask_WaitForCry, 0x5
+ createvisualtask SoundTask_WaitForCry, 5
return
gBattleAnimMove_AppleAcid::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_POISON_BUBBLE, 0, 12, 12, RGB(29, 16, 1) @Orange
playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER
- createsprite gAppleAcidFloatingAppleTemplate, ANIM_ATTACKER, 12, 0x0
+ createsprite gAppleAcidFloatingAppleTemplate, ANIM_ATTACKER, 12, 0
delay 48
monbg ANIM_TARGET
- createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x28, 0x1, 0x0, 0x0
+ createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, 0, 0
playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER
delay 5
- createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x28, 0x1, 0x18, 0x0
+ createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, 24, 0
playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER
delay 5
- createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 0x14, 0x0, 0x28, 0x1, 0xffe8, 0x0
+ createsprite gAppleAcidLaunchTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, -24, 0
playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER
delay 15
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 10, 1
- createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0x0, 0xffea, 0x0, 0xf, 0x37
+ createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0, -22, 0, 15, 55
playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET
delay 10
- createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xffe6, 0xffe8, 0x0, 0xf, 0x37
+ createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, -26, -24, 0, 15, 55
playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET
delay 10
- createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xf, 0xffe5, 0x0, 0xf, 0x32
+ createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 15, -27, 0, 15, 50
playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET
delay 10
- createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0xfff1, 0xffef, 0x0, 0xa, 0x2d
+ createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, -15, -17, 0, 10, 45
playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET
delay 10
- createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 0x1b, 0xffea, 0x0, 0xf, 0x32
+ createsprite gAppleAcidDripTemplate, ANIM_TARGET, 2, 27, -22, 0, 15, 50
playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET
waitforvisualfinish
clearmonbg ANIM_TARGET
@@ -13033,48 +13033,48 @@ gBattleAnimMove_AppleAcid::
gBattleAnimMove_GravApple::
fadetobg BG_IN_AIR
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xf800, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -2048, 0, -1
waitbgfadein
call SmallAppleShower
call SmallAppleShower
- createsprite gGravAppleLargeApple, ANIM_TARGET, 2, 0x0, 0x3c, 4, ANIM_TARGET
+ createsprite gGravAppleLargeApple, ANIM_TARGET, 2, 0, 60, 4, ANIM_TARGET
delay 7
playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 21, 0, 4
delay 48
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16
waitforvisualfinish
call UnsetPsychicBg
end
SmallAppleShower:
- createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 35, 0x3c, 4, ANIM_TARGET
+ createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 35, 60, 4, ANIM_TARGET
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 2
- createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -30, 0x44, 4, ANIM_TARGET
+ createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -30, 68, 4, ANIM_TARGET
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 2
- createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 27, 0x37, 4, ANIM_TARGET
+ createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 27, 55, 4, ANIM_TARGET
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 2
- createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -20, 0x32, 4, ANIM_TARGET
+ createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -20, 50, 4, ANIM_TARGET
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 2
- createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 33, 0x3a, 4, ANIM_TARGET
+ createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 33, 58, 4, ANIM_TARGET
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 2
- createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -12, 0x3a, 4, ANIM_TARGET
+ createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -12, 58, 4, ANIM_TARGET
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 2
- createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 19, 0x3c, 4, ANIM_TARGET
+ createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 19, 60, 4, ANIM_TARGET
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 2
- createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -38, 0x3a, 4, ANIM_TARGET
+ createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -38, 58, 4, ANIM_TARGET
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 2
- createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 5, 0x3c, 4, ANIM_TARGET
+ createsprite gGravAppleSmallApple, ANIM_TARGET, 2, 5, 60, 4, ANIM_TARGET
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 2
- createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -23, 0x28, 4, ANIM_TARGET
+ createsprite gGravAppleSmallApple, ANIM_TARGET, 2, -23, 40, 4, ANIM_TARGET
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 2
return
@@ -13094,10 +13094,10 @@ gBattleAnimMove_SpiritBreak::
waitforvisualfinish
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 5, 1
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gSpriteTemplate_SpiritBreakExplode, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1
+ createsprite gSpriteTemplate_SpiritBreakExplode, ANIM_TARGET, 3, 0, 0, 1, 1
waitforvisualfinish
delay 5
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
clearmonbg ANIM_DEF_PARTNER
waitforvisualfinish
end
@@ -13106,7 +13106,7 @@ gBattleAnimMove_StrangeSteam::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_FINGER, 0, 10, 10, RGB(24, 28, 17) @Green
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
- loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 0x4, 0xA
+ loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 4, 10
call StrangeSteamCloud
call StrangeSteamCloud
call StrangeSteamCloud
@@ -13123,12 +13123,12 @@ gBattleAnimMove_StrangeSteam::
clearmonbg ANIM_DEF_PARTNER
end
StrangeSteamCloud:
- createsprite gStrangeSteamPinkCloudTemplate, ANIM_TARGET, 2, 0xf, 0xf, 0x14, 0, 0
- createsprite gStrangeSteamGreenCloudTemplate, ANIM_TARGET, 2, 0xf, 0xf, 0x14, 0xa, 0x5
- createsprite gStrangeSteamPinkCloudTemplate, ANIM_TARGET, 2, 0xf, 0xf, 0x14, 0xfff6, 0xfffb
+ createsprite gStrangeSteamPinkCloudTemplate, ANIM_TARGET, 2, 15, 15, 20, 0, 0
+ createsprite gStrangeSteamGreenCloudTemplate, ANIM_TARGET, 2, 15, 15, 20, 10, 5
+ createsprite gStrangeSteamPinkCloudTemplate, ANIM_TARGET, 2, 15, 15, 20, -10, -5
delay 1
- createsprite gStrangeSteamGreenCloudTemplate, ANIM_TARGET, 2, 0xf, 0xf, 0x14, 0x14, 0xa
- createsprite gStrangeSteamBlueCloudTemplate, ANIM_TARGET, 2, 0xf, 0xf, 0x14, 0xffec, 0xfff6
+ createsprite gStrangeSteamGreenCloudTemplate, ANIM_TARGET, 2, 15, 15, 20, 20, 10
+ createsprite gStrangeSteamBlueCloudTemplate, ANIM_TARGET, 2, 15, 15, 20, -20, -10
delay 2
return
@@ -13165,10 +13165,10 @@ gBattleAnimMove_Obstruct::
delay 16
monbg ANIM_ATK_PARTNER
splitbgprio ANIM_ATTACKER
- waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x10
- createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0x0, 0x5a @;Protect
+ waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 16
+ createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90 @;Protect
waitforvisualfinish
- createsprite gObstructCrossTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x24
+ createsprite gObstructCrossTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 36
playsewithpan SE_M_LEER, SOUND_PAN_TARGET
waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER
@@ -13179,28 +13179,28 @@ gBattleAnimMove_FalseSurrender::
fadetobg BG_DARK
waitbgfadein
delay 0
- playsewithpan SE_M_FAINT_ATTACK, 0xc0
+ playsewithpan SE_M_FAINT_ATTACK, 192
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 3
attacker_fade_to_invisible priority=2, step_delay=1
waitforvisualfinish
clearmonbg ANIM_ATTACKER
invisible ANIM_ATTACKER
delay 1
- createvisualtask AnimTask_SetAttackerInvisibleWaitForSignal, 0x2,
+ createvisualtask AnimTask_SetAttackerInvisibleWaitForSignal, 2,
monbg ANIM_TARGET
setalpha 12, 8
delay 1
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
complex_palette_blend selector=F_PAL_BG | F_PAL_BATTLERS, delay=3, num_blends=1, color1=RGB_WHITE, blend_y1=10, color2=RGB_BLACK, blend_y2=10
- createsprite gSpriteTemplate_LargeCrossImpact, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x14
+ createsprite gSpriteTemplate_LargeCrossImpact, ANIM_ATTACKER, 3, 0, 0, 1, 20
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 7, 0, 9, 1
waitforvisualfinish
clearmonbg ANIM_TARGET
blendoff
delay 1
- setarg 0x7, 0x1000
+ setarg 7, 4096
delay 1
- createvisualtask AnimTask_InitAttackerFadeFromInvisible, 0x2,
+ createvisualtask AnimTask_InitAttackerFadeFromInvisible, 2,
monbg ANIM_ATTACKER
attacker_fade_from_invisible step_delay=1
waitforvisualfinish
@@ -13217,7 +13217,7 @@ gBattleAnimMove_MeteorAssault::
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
waitforvisualfinish
invisible ANIM_ATTACKER
- createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0
+ createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
delay 15
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ATTACKER), 1, 16, 16, RGB_WHITE @Screen flash white
@@ -13231,19 +13231,19 @@ gBattleAnimMove_MeteorAssault::
end
BasicExplosion:
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1
delay 3
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, 1, 1
delay 3
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, 1, 1
delay 3
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, 1, 1
delay 3
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, 0x1, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, 1, 1
return
gBattleAnimMove_Eternabeam::
@@ -13253,9 +13253,9 @@ gBattleAnimMove_Eternabeam::
fadetobgfromset BG_SPACIAL_REND_OPPONENT BG_SPACIAL_REND_PLAYER BG_SPACIAL_REND_OPPONENT
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
invisible ANIM_ATTACKER
- createsprite gDevastatingDrakeDrakeUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0x04E0, 36, 21, 1, ANIM_ATTACKER
+ createsprite gDevastatingDrakeDrakeUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1248, 36, 21, 1, ANIM_ATTACKER
waitforvisualfinish
- createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_SOLAR_BEAM, 0xf0, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5
+ createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_SOLAR_BEAM, 240, -64, SOUND_PAN_TARGET, 1, 15, 0, 5
call OblivionWingBeam
call OblivionWingBeam
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 50, 1
@@ -13396,7 +13396,7 @@ gBattleAnimMove_ExpandingForce::
ExpandingForceSingleTarget:
createsprite gSpriteTemplate_SpiritBreakChargeBall, ANIM_TARGET, 1, ANIM_TARGET
waitforvisualfinish
- createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 0x2, 0x0, 0x1, 0x18, 0x1, 0x0
+ createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 24, 1, 0
call MaxKnuckleExplosionGeyser
waitforvisualfinish
call UnsetPsychicBg
@@ -13416,77 +13416,77 @@ ExpandingForceBothTargets:
end
ExpandingForceExplosionGeyser:
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0x0003, 0x0005, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 3, 5, ANIM_TARGET
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0xfff5, 0xfff1, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, -11, -15, ANIM_TARGET
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0x0008, 0xfffb, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 8, -5, ANIM_TARGET
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0xfffa, 0x0012, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, -6, 18, ANIM_TARGET
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0x0000, 0x0005, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0, 5, ANIM_TARGET
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0x0003, 0xfff5, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 3, -11, ANIM_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0xfff5, 0xffe1, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, -11, -31, ANIM_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0x0008, 0xffeb, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 8, -21, ANIM_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0xfffa, 0x0002, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, -6, 2, ANIM_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0x0000, 0xfff5, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0, -11, ANIM_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0x0003, 0xffe5, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 3, -27, ANIM_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0xfff5, 0xffd1, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, -11, -47, ANIM_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0x0008, 0xffdb, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 8, -37, ANIM_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0xfffa, 0xfff2, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, -6, -14, ANIM_TARGET
delay 0
- createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0x0000, 0xffe5, ANIM_TARGET
+ createsprite gSpriteTemplate_ExpandingForceExplode, ANIM_TARGET, 4, 0, -27, ANIM_TARGET
return
MaxKnuckleExplosionGeyser:
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0x0005, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 3, 5, ANIM_TARGET, 0
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xfff1, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -11, -15, ANIM_TARGET, 0
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xfffb, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 8, -5, ANIM_TARGET, 0
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0x0012, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -6, 18, ANIM_TARGET, 0
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0x0005, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0, 5, ANIM_TARGET, 0
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0xfff5, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 3, -11, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xffe1, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -11, -31, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xffeb, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 8, -21, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0x0002, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -6, 2, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0xfff5, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0, -11, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0xffe5, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 3, -27, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xffd1, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -11, -47, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xffdb, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 8, -37, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0xfff2, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -6, -14, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0xffe5, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0, -27, ANIM_TARGET, 0
return
@@ -13494,7 +13494,7 @@ gBattleAnimMove_SteelRoller::
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
createsprite gSpriteTemplate_SteelRoller, ANIM_TARGET, 3, 0, -40, 2, 50, 3
delay 1
- createvisualtask AnimTask_SquishTarget, 0x2,
+ createvisualtask AnimTask_SquishTarget, 2,
delay 14
call SteelRollerRocks
delay 33
@@ -13503,17 +13503,17 @@ gBattleAnimMove_SteelRoller::
end
SteelRollerRocks:
playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfff4, 0x1b, 0x2, 0x3
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0x8, 0x1c, 0x3, 0x4
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfffc, 0x1e, 0x2, 0x3
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xc, 0x19, 0x4, 0x4
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 27, 2, 3
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 28, 3, 4
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 30, 2, 3
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 25, 4, 4
return
gBattleAnimMove_ScaleShot::
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x6
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6
delay 3
playsewithpan SE_M_BONEMERANG, SOUND_PAN_ATTACKER
- createsprite gSpriteTemplate_ScaleShotScale, ANIM_TARGET, 2, 0x10, 0x0, 0x0, 0x0, 0x14, 0x101
+ createsprite gSpriteTemplate_ScaleShotScale, ANIM_TARGET, 2, 16, 0, 0, 0, 20, 257
waitforvisualfinish
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=1
@@ -13529,7 +13529,7 @@ gBattleAnimMove_MeteorBeam::
choosetwoturnanim MeteorBeamCharge MeteorBeamBlast
MeteorBeamCharge:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xFC00, FALSE, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -1024, FALSE, -1
waitbgfadein
monbg ANIM_ATK_PARTNER
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
@@ -13542,10 +13542,10 @@ MeteorBeamCharge:
end
MeteorBeamBlast:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xf700, 0x0, TRUE, 0xffff @;Scroll right/left
+ createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, TRUE, -1 @;Scroll right/left
waitbgfadein
monbg ANIM_TARGET
- panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER SOUND_PAN_TARGET 0x2 0x0
+ panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER SOUND_PAN_TARGET 2 0
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 87, 1
call MeteorBeamRockLaunch
call MeteorBeamRockLaunch
@@ -13575,16 +13575,16 @@ MeteorBeamBlast:
end
MeteorBeamRockLaunch:
- createsprite gSpriteTemplate_MeteorBeamRock, ANIM_TARGET, 2, 0, 0, 0x10
+ createsprite gSpriteTemplate_MeteorBeamRock, ANIM_TARGET, 2, 0, 0, 16
delay 2
- createsprite gSpriteTemplate_MeteorBeamRock, ANIM_TARGET, 2, 0, 0, 0x10
+ createsprite gSpriteTemplate_MeteorBeamRock, ANIM_TARGET, 2, 0, 0, 16
delay 2
return
gBattleAnimMove_ShellSideArm::
- createvisualtask AnimTask_ShellSideArm, 0x5
- jumpargeq 0x0, TRUE, gBattleAnimMove_ShellSideArmPhysical
- jumpargeq 0x0, FALSE, gBattleAnimMove_ShellSideArmSpecial
+ createvisualtask AnimTask_ShellSideArm, 5
+ jumpargeq 0, TRUE, gBattleAnimMove_ShellSideArmPhysical
+ jumpargeq 0, FALSE, gBattleAnimMove_ShellSideArmSpecial
gBattleAnimMove_ShellSideArmPhysical:: @ Modified Body Slam, placeholder
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 6, 6, RGB_MAGENTA
monbg ANIM_DEF_PARTNER
@@ -13614,7 +13614,7 @@ gBattleAnimMove_ShellSideArmSpecial:: @ Modified Snipe Shot, placeholder
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT_2, 0, 6, 6, RGB_MAGENTA
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_LEER, 0, 6, 6, RGB_MAGENTA
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gLeerSpriteTemplate, ANIM_TARGET, 2, 0x18, -12
+ createsprite gLeerSpriteTemplate, ANIM_TARGET, 2, 24, -12
waitforvisualfinish
delay 32
playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET
@@ -13648,13 +13648,13 @@ gBattleAnimMove_GrassyGlide::
waitforvisualfinish
call GrassPledgeMiddleFountain
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x2
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 2
end
gBattleAnimMove_RisingVoltage::
monbg ANIM_ATTACKER
setalpha 12, 8
- createvisualtask AnimTask_GetFieldTerrain, 0x5,
+ createvisualtask AnimTask_GetFieldTerrain, 5,
jumpargeq 0, STATUS_FIELD_ELECTRIC_TERRAIN, ANIM_RISING_VOLTAGE_STRONGER
ANIM_RISING_VOLTAGE_NORMAL:
createvisualtask AnimTask_BlendBattleAnimPal, 2, F_PAL_BG, 1, 0, 4, RGB_BLACK @;To black
@@ -13662,9 +13662,9 @@ ANIM_RISING_VOLTAGE_NORMAL:
createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 30, 0, 3 @;Amount, Slowness, Slowness, Compaction
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
delay 12
- createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 0, 0x0
+ createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 0, 0
waitforvisualfinish
- createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 0x2, 0x0, 0x1, 0x34, 0x1, 0x0
+ createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 52, 1, 0
blend_color_cycle selector=F_PAL_TARGET, delay=1, num_blends=4, initial_blend_y=0, target_blend_y=12, color=RGB(29, 28, 1)
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, 16
@@ -13688,7 +13688,7 @@ ANIM_RISING_VOLTAGE_STRONGER:
delay 12
createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 2,
waitforvisualfinish
- createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 0x2, 0x0, 0x1, 0x54, 0x1, 0x0
+ createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 84, 1, 0
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 4, 0, 16, RGB(29, 28, 1)
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 16, 16
@@ -13723,11 +13723,11 @@ gBattleAnimMove_TerrainPulse::
monbg ANIM_TARGET
setalpha 12, 8
simple_palette_blend selector=F_PAL_BG, delay=1, initial_blend_y=0, target_blend_y=7, color=RGB_BLACK
- createvisualtask AnimTask_TerrainPulse, 0x5
- jumpargeq 0x0, TYPE_ELECTRIC, TerrainPulseElectric
- jumpargeq 0x0, TYPE_GRASS, TerrainPulseGrass
- jumpargeq 0x0, TYPE_FAIRY, TerrainPulseFairy
- jumpargeq 0x0, TYPE_PSYCHIC, TerrainPulsePsychic
+ createvisualtask AnimTask_TerrainPulse, 5
+ jumpargeq 0, TYPE_ELECTRIC, TerrainPulseElectric
+ jumpargeq 0, TYPE_GRASS, TerrainPulseGrass
+ jumpargeq 0, TYPE_FAIRY, TerrainPulseFairy
+ jumpargeq 0, TYPE_PSYCHIC, TerrainPulsePsychic
TerrainPulseNormal:
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_DRAGON_PULSE, 0, 12, 12, RGB_WHITE
waitforvisualfinish
@@ -13815,21 +13815,21 @@ gBattleAnimMove_SkitterSmack::
delay 1
invisible ANIM_ATTACKER
waitsound
- createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x30
+ createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 48
delay 23
- createvisualtask AnimTask_IsTargetSameSide, 0x2,
- createvisualtask AnimTask_SnatchOpposingMonMove, 0x2,
+ createvisualtask AnimTask_IsTargetSameSide, 2,
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2,
delay 25
visible ANIM_ATTACKER
invisible ANIM_ATTACKER
delay 5
- createsprite gSkitterSmackImpactTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0
+ createsprite gSkitterSmackImpactTemplate, ANIM_TARGET, 2, -10, -10, 0
call HyperspaceHoleMovement
- createsprite gSkitterSmackImpactTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0
+ createsprite gSkitterSmackImpactTemplate, ANIM_TARGET, 2, 10, 20, 0
call HyperspaceHoleMovement
- createsprite gSkitterSmackImpactTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0
+ createsprite gSkitterSmackImpactTemplate, ANIM_TARGET, 2, -5, 10, 0
call HyperspaceHoleMovement
- createsprite gSkitterSmackImpactTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0
+ createsprite gSkitterSmackImpactTemplate, ANIM_TARGET, 2, 17, -12, 0
call HyperspaceHoleMovement
waitforvisualfinish
visible ANIM_ATTACKER
@@ -13875,24 +13875,24 @@ gBattleAnimMove_BurningJealousy::
end
BurningJealousyFireBuffEffect:
- createsprite gSpriteTemplate_BurningJealousyFireBuff, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xffe8, 0x1a, 0x2, 0x18
+ createsprite gSpriteTemplate_BurningJealousyFireBuff, ANIM_ATTACKER, 2, ANIM_ATTACKER, -24, 26, 2, 24
delay 3
- createsprite gSpriteTemplate_BurningJealousyFireBuff, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xe, 0x1c, 0x1, 0x18
+ createsprite gSpriteTemplate_BurningJealousyFireBuff, ANIM_ATTACKER, 2, ANIM_ATTACKER, 14, 28, 1, 24
delay 3
- createsprite gSpriteTemplate_BurningJealousyFireBuff, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xfffb, 0xa, 0x2, 0x18
+ createsprite gSpriteTemplate_BurningJealousyFireBuff, ANIM_ATTACKER, 2, ANIM_ATTACKER, -5, 10, 2, 24
delay 3
- createsprite gSpriteTemplate_BurningJealousyFireBuff, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x1c, 0x1a, 0x3, 0x18
+ createsprite gSpriteTemplate_BurningJealousyFireBuff, ANIM_ATTACKER, 2, ANIM_ATTACKER, 28, 26, 3, 24
delay 3
return
BurningJealousyFlames:
- createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0xfb00, 0x0, 0x3
- createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x0, 0x0500, 0x3
- createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x0, 0xfb00, 0x3
- createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x0500, 0x0300, 0x3
- createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0xfb00, 0x0300, 0x3
- createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x0500, 0xfd00, 0x3
- createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0xfb00, 0xfd00, 0x3
+ createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0, 0, 30, -1280, 0, 3
+ createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0, 0, 30, 0, 1280, 3
+ createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0, 0, 30, 0, -1280, 3
+ createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0, 0, 30, 1280, 768, 3
+ createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0, 0, 30, -1280, 768, 3
+ createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0, 0, 30, 1280, -768, 3
+ createsprite gSpriteTemplate_BurningJealousyEmit, ANIM_ATTACKER, 2, 0, 0, 30, -1280, -768, 3
return
@@ -13911,23 +13911,23 @@ gBattleAnimMove_LashOut::
fadetobg BG_DARK
waitbgfadein
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET
- createsprite gSpriteTemplate_LashOutStrike, ANIM_TARGET, 2, 0xfff0, 0xfff0, FALSE
+ createsprite gSpriteTemplate_LashOutStrike, ANIM_TARGET, 2, -16, -16, FALSE
delay 8
- createsprite gFoulPlayImpactTemplate, ANIM_TARGET, 3, 10, 0x0, ANIM_TARGET, 0x1
+ createsprite gFoulPlayImpactTemplate, ANIM_TARGET, 3, 10, 0, ANIM_TARGET, 1
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -12, 10, 0, 3
delay 8
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 5
delay 8
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET
- createsprite gSpriteTemplate_LashOutStrike, ANIM_TARGET, 2, 0xfff0, 0xfff0, TRUE
+ createsprite gSpriteTemplate_LashOutStrike, ANIM_TARGET, 2, -16, -16, TRUE
delay 8
- createsprite gFoulPlayImpactTemplate, ANIM_TARGET, 3, -10, 0x0, ANIM_TARGET, 0x1
+ createsprite gFoulPlayImpactTemplate, ANIM_TARGET, 3, -10, 0, ANIM_TARGET, 1
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 12, 10, 0, 3
delay 8
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 5
restorebg
clearmonbg ANIM_DEF_PARTNER
end
@@ -13945,7 +13945,7 @@ gBattleAnimMove_Poltergeist::
simple_palette_blend selector=F_PAL_ATTACKER, delay=0, initial_blend_y=16, target_blend_y=0, color=RGB_BLACK
playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER
delay 1
- createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x24
+ createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 36
delay 48
playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET
createvisualtask AnimTask_PoltergeistItem, 2
@@ -13956,33 +13956,33 @@ gBattleAnimMove_Poltergeist::
complex_palette_blend selector=F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, delay=5, num_blends=1, color1=0, blend_y1=10, color2=RGB_BLACK, blend_y2=0
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
waitforvisualfinish
- createvisualtask AnimTask_NightmareClone, 0x2
+ createvisualtask AnimTask_NightmareClone, 2
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 40, 1
playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET
waitforvisualfinish
restorebg
waitbgfadein
- clearmonbg 0x3
+ clearmonbg 3
blendoff
end
gBattleAnimMove_CorrosiveGas::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_PINK_CLOUD, 0, 14, 14, RGB(15, 15, 6) @;Garbage green
monbg ANIM_ATTACKER
- loopsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER, 0x8, 0x3
+ loopsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER, 8, 3
delay 0
blend_color_cycle selector=F_PAL_ATTACKER, delay=1, num_blends=2, initial_blend_y=0, target_blend_y=15, color=RGB(15, 15, 6)@;Garbage green
createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 122, 3, -14, 18, 46
delay 0
- createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 0x79, 0x3, 0xe, 0xfff2, 0x2e
+ createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 121, 3, 14, -14, 46
delay 0
- createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 0x78, 0x3, 0xfff4, 0xfff6, 0x2e
+ createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 120, 3, -12, -10, 46
delay 0
- createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 0x77, 0x3, 0xe, 0xe, 0x2e
+ createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 119, 3, 14, 14, 46
delay 0
- createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 0x76, 0x3, 0x0, 0x0, 0x2e
+ createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 118, 3, 0, 0, 46
delay 0
- createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 0x7b, 0x3, 0x4, 0x4, 0x1e
+ createsprite gSpriteTemplate_CorrosiveGasSmoke, ANIM_ATTACKER, 123, 3, 4, 4, 30
waitforvisualfinish
playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET
blend_color_cycle selector=(F_PAL_BG | F_PAL_TARGET | F_PAL_ATK_PARTNER | F_PAL_DEF_PARTNER), delay=1, num_blends=2, initial_blend_y=0, target_blend_y=14, color=RGB(15, 15, 6)@;Garbage green
@@ -14007,12 +14007,12 @@ gBattleAnimMove_FlipTurn::
waitforvisualfinish
invisible ANIM_ATTACKER
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
- createsprite gSpriteTemplate_FlipTurnThere, ANIM_TARGET, 2, 0x0, 0x0, 0x15
+ createsprite gSpriteTemplate_FlipTurnThere, ANIM_TARGET, 2, 0, 0, 21
waitforvisualfinish
playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_TARGET
- createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x2
+ createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
- createsprite gSpriteTemplate_FlipTurnBack, ANIM_ATTACKER, 3, 0x0, 0xFFF1, 0xFFF0, 0x24
+ createsprite gSpriteTemplate_FlipTurnBack, ANIM_ATTACKER, 3, 0, -15, -16, 36
waitforvisualfinish
visible ANIM_ATTACKER
clearmonbg ANIM_TARGET
@@ -14023,39 +14023,39 @@ gBattleAnimMove_FlipTurn::
gBattleAnimMove_TripleAxel::
monbg ANIM_DEF_PARTNER
setalpha 12, 8
- playsewithpan SE_M_VITAL_THROW2, 0x3f
+ playsewithpan SE_M_VITAL_THROW2, 63
jumpifmoveturn 0, TripleAxelTurn0
jumpifmoveturn 1, TripleAxelTurn1
goto TripleAxelTurn2
TripleAxelTurn0:
- createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0xfff0, 0xfff8, 0x14, 0x1, 0x2
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, -16, -8, 20, 1, 2
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=-16, y=-16, relative_to=ANIM_TARGET, animation=2
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0xfff0, 0xfff8, 0xff00, 0xffd8
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0xfff0, 0xfff8, 0x1a0, 0xffda
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, -16, -8, -256, -40
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, -16, -8, 416, -38
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 4, 1
goto TripleAxelEnd
TripleAxelTurn1:
- createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0x8, 0x8, 0x14, 0x1, 0x2
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 8, 8, 20, 1, 2
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=8, y=0, relative_to=ANIM_TARGET, animation=2
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x8, 0x8, 0xa0, 0xffe0
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x8, 0x8, 0xff00, 0xffd8
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x8, 0x8, 0x1a0, 0xffda
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x8, 0x8, 0xfe80, 0xffe1
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 8, 8, 160, -32
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 8, 8, -256, -40
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 8, 8, 416, -38
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 8, 8, -384, -31
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1
goto TripleAxelEnd
TripleAxelTurn2:
- createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x14, 0x1, 0x2
+ createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 20, 1, 2
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=0, y=-8, relative_to=ANIM_TARGET, animation=1
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x0, 0x0, 0xa0, 0xffe0
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x0, 0x0, 0xff00, 0xffd8
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x0, 0x0, 0x80, 0xfff0
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x0, 0x0, 0x1a0, 0xffda
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x0, 0x0, 0xff80, 0xffea
- createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0x0, 0x0, 0xfe80, 0xffe1
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0, 0, 160, -32
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0, 0, -256, -40
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0, 0, 128, -16
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0, 0, 416, -38
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0, 0, -128, -22
+ createsprite gTripleAxelIceCrystalSpriteTemplate, ANIM_TARGET, 1, 0, 0, -384, -31
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1
TripleAxelEnd:
delay 4
- playsewithpan SE_M_ICY_WIND, 0x3f
+ playsewithpan SE_M_ICY_WIND, 63
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
blendoff
@@ -14103,16 +14103,16 @@ DualWingbeatRightSide:
blendoff
end
DualWingbeatFeatherScatterLeft:
- createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0xfff0, 0xfff8, 0xa0, 0xffe0
- createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0xfff0, 0xfff8, 0xff00, 0xffd8
- createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0xfff0, 0xfff8, 0x1a0, 0xffda
- createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0xfff0, 0xfff8, 0xfe80, 0xffe1
+ createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, -16, -8, 160, -32
+ createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, -16, -8, -256, -40
+ createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, -16, -8, 416, -38
+ createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, -16, -8, -384, -31
return
DualWingbeatFeatherScatterRight:
- createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0, 0xfff8, 0xa0, 0xffe0
- createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0, 0xfff8, 0xff00, 0xffd8
- createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0, 0xfff8, 0x1a0, 0xffda
- createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0, 0xfff8, 0xfe80, 0xffe1
+ createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0, -8, 160, -32
+ createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0, -8, -256, -40
+ createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0, -8, 416, -38
+ createsprite gDualWingbeatFeatherSpriteTemplate, ANIM_TARGET, 1, 0, -8, -384, -31
return
gBattleAnimMove_ScorchingSands::
@@ -14122,7 +14122,7 @@ gBattleAnimMove_ScorchingSands::
playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -10, 0, 0, 3
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x2
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2
call SandAttackDirt
call SandAttackDirt
call SandAttackDirt
@@ -14142,8 +14142,8 @@ gBattleAnimMove_JungleHealing::
waitbgfadeout
call CreateIngrainRoots
call CreateIngrainOrbs
- playsewithpan SE_M_STAT_INCREASE, 0xc0
- createvisualtask AnimTask_StatusClearedEffect, 0x2, 0x1
+ playsewithpan SE_M_STAT_INCREASE, 192
+ createvisualtask AnimTask_StatusClearedEffect, 2, 1
waitforvisualfinish
restorebg
waitbgfadein
@@ -14156,7 +14156,7 @@ gBattleAnimMove_SilkTrap::
waitforvisualfinish
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_PROTECT, 0, 10, 10, RGB_LIME_GREEN
monbg ANIM_ATK_PARTNER
- waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x10
+ waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 16
createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90
waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER
@@ -14196,23 +14196,23 @@ gBattleAnimMove_WickedBlow::
delay 5
createsprite gSpriteTemplate_WickedBlowFist, ANIM_TARGET, 4, ANIM_TARGET, 0, 0, 16, 32
delay 6
- loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 0x4, 0x6
+ loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 4, 6
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=1
- createsprite gSpriteTemplate_WickedBlowBlackStars, ANIM_TARGET, 2, 0xfff0, 0xfff8, 0xfe80, 0xffe1
- createsprite gSpriteTemplate_WickedBlowRedStars, ANIM_TARGET, 2, 0xfff0, 0xfff8, 0xff00, 0xffd8
- createsprite gSpriteTemplate_WickedBlowBlackStars, ANIM_TARGET, 2, 0xfff0, 0xfff8, 0xff80, 0xffea
- createsprite gSpriteTemplate_WickedBlowRedStars, ANIM_TARGET, 2, 0xfff0, 0xfff8, 0x80, 0xfff0
- createsprite gSpriteTemplate_WickedBlowBlackStars, ANIM_TARGET, 2, 0xfff0, 0xfff8, 0xa0, 0xffe0
- createsprite gSpriteTemplate_WickedBlowRedStars, ANIM_TARGET, 2, 0xfff0, 0xfff8, 0x1a0, 0xffda
+ createsprite gSpriteTemplate_WickedBlowBlackStars, ANIM_TARGET, 2, -16, -8, -384, -31
+ createsprite gSpriteTemplate_WickedBlowRedStars, ANIM_TARGET, 2, -16, -8, -256, -40
+ createsprite gSpriteTemplate_WickedBlowBlackStars, ANIM_TARGET, 2, -16, -8, -128, -22
+ createsprite gSpriteTemplate_WickedBlowRedStars, ANIM_TARGET, 2, -16, -8, 128, -16
+ createsprite gSpriteTemplate_WickedBlowBlackStars, ANIM_TARGET, 2, -16, -8, 160, -32
+ createsprite gSpriteTemplate_WickedBlowRedStars, ANIM_TARGET, 2, -16, -8, 416, -38
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 4, 10, 1
delay 20
- createvisualtask AnimTask_TwinkleTackleLaunch, 0x2, 50
+ createvisualtask AnimTask_TwinkleTackleLaunch, 2, 50
delay 50
playsewithpan SE_M_DETECT, SOUND_PAN_TARGET
- createsprite gTwinkleTackleTwinkleSpriteTemplate, ANIM_TARGET, 13, 0x0, 0x0, ANIM_TARGET @detect star
+ createsprite gTwinkleTackleTwinkleSpriteTemplate, ANIM_TARGET, 13, 0, 0, ANIM_TARGET @detect star
waitforvisualfinish
blendoff
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 6
restorebg
waitbgfadeout
visible ANIM_TARGET
@@ -14221,15 +14221,15 @@ gBattleAnimMove_WickedBlow::
end
WickedBlowBuffEffect:
- createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gPowerTripFocusEnergyTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
@@ -14244,10 +14244,10 @@ SURGING_STRIKES_0:
delay 5
playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET
createsprite gSpriteTemplate_SurgingStrikesImpact, ANIM_TARGET, 2, 40, 20, 0, 0, 10, 20 @Bottom right
- createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, -5, -5, ANIM_TARGET, 0x1
+ createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, -5, -5, ANIM_TARGET, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 8, 1
delay 5
- createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, 5, 5, ANIM_TARGET, 0x1
+ createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, 5, 5, ANIM_TARGET, 1
waitforvisualfinish
end
@@ -14257,10 +14257,10 @@ SURGING_STRIKES_1:
delay 5
playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET
createsprite gSpriteTemplate_SurgingStrikesImpact, ANIM_TARGET, 2, -40, 20, 0, 0, 10, 20 @Bottom left
- createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, 5, -5, ANIM_TARGET, 0x1
+ createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, 5, -5, ANIM_TARGET, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 8, 1
delay 5
- createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, -5, 5, ANIM_TARGET, 0x1
+ createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, -5, 5, ANIM_TARGET, 1
waitforvisualfinish
end
@@ -14270,10 +14270,10 @@ SURGING_STRIKES_2:
delay 5
playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET
createsprite gSpriteTemplate_SurgingStrikesImpact, ANIM_TARGET, 2, 40, -20, 0, 0, 10, -20 @Top Right
- createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, -5, -5, ANIM_TARGET, 0x1
+ createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, -5, -5, ANIM_TARGET, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 0, 4, 8, 1
delay 5
- createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, 5, -5, ANIM_TARGET, 0x1
+ createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 1, 5, -5, ANIM_TARGET, 1
waitforvisualfinish
end
@@ -14281,10 +14281,10 @@ SURGING_STRIKES_2:
gBattleAnimMove_ThunderCage::
monbg ANIM_TARGET
splitbgprio ANIM_TARGET
- loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 0xA, 0x9
- createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 100, -25, -30, 0x0
- createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 100, 0, -30, 0x0
- createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 100, 25, -30, 0x0
+ loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 10, 9
+ createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 100, -25, -30, 0
+ createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 100, 0, -30, 0
+ createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 100, 25, -30, 0
createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, -16
delay 4
createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, 0
@@ -14356,24 +14356,24 @@ gBattleAnimMove_DragonEnergy::
call DragonEnergyShot
call DragonEnergyShot
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 10
clearmonbg ANIM_TARGET
waitforvisualfinish
end
DragonEnergyShot:
- createsprite gSpriteTemplate_DragonEnergyShot, ANIM_TARGET, 2, 0x19
+ createsprite gSpriteTemplate_DragonEnergyShot, ANIM_TARGET, 2, 25
delay 1
- createsprite gSpriteTemplate_DragonEnergyShot, ANIM_TARGET, 2, 0x19
+ createsprite gSpriteTemplate_DragonEnergyShot, ANIM_TARGET, 2, 25
delay 1
return
gBattleAnimMove_FreezingGlare::
call SetPsychicBackground
- createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 0xfff0, 0xfff8
- createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 0x10, 0xfff8
- createvisualtask AnimTask_GlareEyeDots, 0x5, 0x0
+ createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8
+ createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8
+ createvisualtask AnimTask_GlareEyeDots, 5, 0
playsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER
waitforvisualfinish
blend_color_cycle selector=F_PAL_TARGET, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=12, color=RGB(12, 26, 31)@;Ice blue
@@ -14386,7 +14386,7 @@ gBattleAnimMove_FreezingGlare::
gBattleAnimMove_FieryWrath::
monbg ANIM_DEF_PARTNER
- playsewithpan SE_M_SACRED_FIRE2, 0xc0
+ playsewithpan SE_M_SACRED_FIRE2, 192
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 2, 0, 14, RGB_BLACK
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 0, 8, RGB_RED
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 32, 1
@@ -14410,53 +14410,53 @@ gBattleAnimMove_FieryWrath::
end
FieryWrathGeyser:
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfffc, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0xfffc, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, -4, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, -4, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0x100D, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0x100D, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 4109, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 4109, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0x4, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0x4, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 4, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 4, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfff0, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0xfff0, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, -16, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, -16, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfffc, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0xfffc, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, -4, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, -4, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0x100D, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0x100D, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 4109, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 4109, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0x4, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0x4, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 4, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 4, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfff0, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0xfff0, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, -16, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, -16, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfffc, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0xfffc, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, -4, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, -4, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0x100D, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0x100D, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 4109, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 4109, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0x4, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0x4, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 4, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 4, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfff0, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0xfff0, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, -16, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, -16, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfffc, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0xfffc, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, -4, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, -4, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0x100D, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0x100D, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 4109, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 4109, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0x4, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0x4, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 4, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 4, 16
delay 0
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfff0, 0x10
- createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, 0xfff0, 0x10
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_TARGET, -16, 16
+ createsprite gSpriteTemplate_FieryWrathGeyser, ANIM_TARGET, 4, ANIM_DEF_PARTNER, -16, 16
delay 0
return
@@ -14465,10 +14465,10 @@ gBattleAnimMove_ThunderousKick::
monbg ANIM_TARGET
fadetobg BG_MAX_LIGHTNING
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xff00, 0x0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, -1
setalpha 12, 8
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET
- createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x32
+ createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 50
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 2, 0, 22, 1
call ZingZapSparks1
@@ -14487,7 +14487,7 @@ gBattleAnimMove_ThunderousKick::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 16, 0, RGB_WHITE
complex_palette_blend selector=F_PAL_BG | F_PAL_BATTLERS, delay=3, num_blends=1, color1=RGB_BLACK, blend_y1=8, color2=RGB_BLACK, blend_y2=0
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
clearmonbg ANIM_TARGET
blendoff
call UnsetPsychicBg
@@ -14646,8 +14646,8 @@ gBattleAnimMove_EerieSpell::
waitforvisualfinish
monbg ANIM_TARGET
splitbgprio_all
- loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 0x14, 0x5
- createvisualtask AnimTask_SpiteTargetShadow 0x0
+ loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 5
+ createvisualtask AnimTask_SpiteTargetShadow 0
call EerieSpellConvergingFlames
call EerieSpellConvergingFlames
call EerieSpellConvergingFlames
@@ -14658,27 +14658,27 @@ gBattleAnimMove_EerieSpell::
end
EerieSpellConvergingFlames:
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe0, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, 0, -32, 16
delay 2
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0x16, 0xffea, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, 22, -22, 16
delay 2
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0x1e, 0x0, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, 30, 0, 16
delay 2
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0x14, 0x14, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, 20, 20, 16
delay 2
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x1c, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, 0, 28, 16
delay 2
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0xffed, 0x13, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, -19, 19, 16
delay 2
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0xffe5, 0x0, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, -27, 0, 16
delay 2
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0xffee, 0xffee, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, -18, -18, 16
delay 2
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe7, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, 0, -25, 16
delay 2
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0x11, 0xffef, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, 17, -17, 16
delay 2
- createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 0x1, 0x0, 0x17, 0x0, 0x10
+ createsprite gSpriteTemplate_EerieSpellFlame, ANIM_TARGET, 2, 1, 0, 23, 0, 16
return
@@@@@@@@@@@@@@@@@@@@@@@ GEN 9 @@@@@@@@@@@@@@@@@@@@@@@
@@ -14687,14 +14687,14 @@ gBattleAnimMove_DireClaw::
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4
delay 6
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x0
+ createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -16, 0
delay 2
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x0
+ createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 0
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 36, 1
delay 2
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x0
+ createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 0
call PoisonBubblesEffect
waitforvisualfinish
end
@@ -14708,7 +14708,7 @@ gBattleAnimMove_PsyshieldBash::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 11, RGB(15, 29, 31) @;Light blue
createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -24, 8, 23, 10, 56, 10
delay 35
- createsprite gSpriteTemplate_PsyshieldBashHit, ANIM_ATTACKER, 4, -10, 0x0, 0x1, 0x0
+ createsprite gSpriteTemplate_PsyshieldBashHit, ANIM_ATTACKER, 4, -10, 0, 1, 0
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
delay 1
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -16, 0, 0, 4
@@ -14717,9 +14717,9 @@ gBattleAnimMove_PsyshieldBash::
waitforvisualfinish
delay 2
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 11, 0, RGB(15, 29, 31) @;Light blue
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
delay 3
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x7
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7
waitforvisualfinish
call UnsetPsychicBg
clearmonbg ANIM_DEF_PARTNER
@@ -14755,14 +14755,14 @@ gBattleAnimMove_StoneAxe::
end
StoneAxeRockFragments:
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x14, 0x18, 0xe, 0x2
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0x5, 0x0, 0xffec, 0x18, 0xe, 0x1
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x5, 0x14, 0xffe8, 0xe, 0x2
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0xfffb, 0x0, 0xffec, 0xffe8, 0xe, 0x2
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xfffb, 0x1e, 0x12, 0x8, 0x2
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x1e, 0xffee, 0x8, 0x2
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0xffe2, 0x12, 0x8, 0x2
- createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0xffe2, 0xffee, 0x8, 0x2
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0, 0, 20, 24, 14, 2
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 5, 0, -20, 24, 14, 1
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0, 5, 20, -24, 14, 2
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, -5, 0, -20, -24, 14, 2
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0, -5, 30, 18, 8, 2
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0, 0, 30, -18, 8, 2
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0, 0, -30, 18, 8, 2
+ createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 4, 0, 0, -30, -18, 8, 2
return
@@ -14788,17 +14788,17 @@ gBattleAnimMove_SpringtideStorm::
end
SpringtideStormHeartSwirl:
- createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0x0, 0x20, 0x210, 0x1e, 0xa, 0x32, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0, 32, 528, 30, 10, 50, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0x0, 0x24, 0x1e0, 0x14, 0xd, 0xffd2, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0, 36, 480, 20, 13, -46, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0x0, 0x25, 0x240, 0x14, 0x5, 0x2a, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0, 37, 576, 20, 5, 42, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0x0, 0x23, 0x190, 0x19, 0x8, 0xffd6, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0, 35, 400, 25, 8, -42, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0x0, 0x20, 0x200, 0x19, 0xd, 0x2e, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0, 32, 512, 25, 13, 46, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0x0, 0x25, 0x1d0, 0x1e, 0xc, 0xffce, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_SpringtideHeart, ANIM_TARGET, 2, 6, 0, 37, 464, 30, 12, -50, ANIM_TARGET
return
@@ -14815,11 +14815,11 @@ gBattleAnimMove_MysticalPower::
delay 10
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 6, 0, 11, RGB(15, 29, 31) @;Light blue
- createvisualtask AnimTask_ExtrasensoryDistortion, 0x5, 0x0
+ createvisualtask AnimTask_ExtrasensoryDistortion, 5, 0
call MysticalPowerFoeRings
- createvisualtask AnimTask_ExtrasensoryDistortion, 0x5, 0x1
+ createvisualtask AnimTask_ExtrasensoryDistortion, 5, 1
call MysticalPowerFoeRings
- createvisualtask AnimTask_ExtrasensoryDistortion, 0x5, 0x2
+ createvisualtask AnimTask_ExtrasensoryDistortion, 5, 2
call MysticalPowerFoeTwoRingsOnly
waitforvisualfinish
clearmonbg ANIM_TARGET
@@ -14830,31 +14830,31 @@ gBattleAnimMove_MysticalPower::
@ TODO port cfru psystrike anim
PsystrikeInwardRing:
- createsprite gSpriteTemplate_VioletMind, ANIM_ATTACKER, 0x28, 0x0, 0x0, 0x0, 0x0
+ createsprite gSpriteTemplate_VioletMind, ANIM_ATTACKER, 40, 0, 0, 0, 0
playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER
return
MysticalPowerFoeRings:
playsewithpan SE_M_BIND, SOUND_PAN_TARGET
- createsprite gSpriteTemplate_MysticalPowerRing, ANIM_TARGET, 2, -20, -10, ANIM_TARGET, 0x0
+ createsprite gSpriteTemplate_MysticalPowerRing, ANIM_TARGET, 2, -20, -10, ANIM_TARGET, 0
delay MYSTICAL_POWER_RING_PAUSE
- createsprite gSpriteTemplate_MysticalPowerRing, ANIM_TARGET, 2, 0, 10, ANIM_TARGET, 0x0
+ createsprite gSpriteTemplate_MysticalPowerRing, ANIM_TARGET, 2, 0, 10, ANIM_TARGET, 0
delay MYSTICAL_POWER_RING_PAUSE
- createsprite gSpriteTemplate_MysticalPowerRing, ANIM_TARGET, 2, 10, -20, ANIM_TARGET, 0x0
+ createsprite gSpriteTemplate_MysticalPowerRing, ANIM_TARGET, 2, 10, -20, ANIM_TARGET, 0
delay MYSTICAL_POWER_RING_PAUSE
return
MysticalPowerFoeTwoRingsOnly:
playsewithpan SE_M_BIND, SOUND_PAN_TARGET
- createsprite gSpriteTemplate_MysticalPowerRing, ANIM_TARGET, 2, -20, -10, ANIM_TARGET, 0x0
+ createsprite gSpriteTemplate_MysticalPowerRing, ANIM_TARGET, 2, -20, -10, ANIM_TARGET, 0
delay MYSTICAL_POWER_RING_PAUSE
- createsprite gSpriteTemplate_MysticalPowerRing, ANIM_TARGET, 2, 0, 10, ANIM_TARGET, 0x0
+ createsprite gSpriteTemplate_MysticalPowerRing, ANIM_TARGET, 2, 0, 10, ANIM_TARGET, 0
delay MYSTICAL_POWER_RING_PAUSE
return
gBattleAnimMove_RagingFury::
- loopsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER, 0x8, 0x3
+ loopsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER, 8, 3
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET), delay=2, num_blends=5, initial_blend_y=3, target_blend_y=8, color=RGB_RED
createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -20, 8, 32, 8, 56, 6
call OutrageFlames
@@ -14864,7 +14864,7 @@ gBattleAnimMove_RagingFury::
playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET
call FlameBurstSpread
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
waitforvisualfinish
end
@@ -14878,7 +14878,7 @@ gBattleAnimMove_WaveCrash::
call RisingWaterHitEffect
waitforvisualfinish
delay 5
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 11, 0, RGB(10, 19, 28)
clearmonbg ANIM_DEF_PARTNER
waitforvisualfinish
@@ -14892,19 +14892,19 @@ gBattleAnimMove_Chloroblast::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 16, RGB(12, 29, 0)
createvisualtask AnimTask_BlendNonAttackerPalettes, 2, 2, 0, 16, RGB_BLACK
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
- createsprite gThinRingShrinkingSpriteTemplate ANIM_ATTACKER, 0x28, 0, 0, 0, 0
+ createsprite gThinRingShrinkingSpriteTemplate ANIM_ATTACKER, 40, 0, 0, 0, 0
delay 14
- createsprite gThinRingShrinkingSpriteTemplate ANIM_ATTACKER, 0x28, 0, 0, 0, 0
+ createsprite gThinRingShrinkingSpriteTemplate ANIM_ATTACKER, 40, 0, 0, 0, 0
delay 14
- createsprite gThinRingShrinkingSpriteTemplate ANIM_ATTACKER, 0x28, 0, 0, 0, 0
+ createsprite gThinRingShrinkingSpriteTemplate ANIM_ATTACKER, 40, 0, 0, 0, 0
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA,
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10,
fadetobg BG_CHLOROBLAST
waitbgfadeout
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 16, 0, RGB_BLACK
delay 16
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 74, 1
- createsoundtask SoundTask_LoopSEAdjustPanning, 0xf0, 0xFF00 | SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x1, 0x17, 0x0, 0x5
+ createsoundtask SoundTask_LoopSEAdjustPanning, 240, -256 | SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 1, 23, 0, 5
createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 1, 67
call ChloroblastShot
call ChloroblastShot
@@ -14931,15 +14931,15 @@ gBattleAnimMove_Chloroblast::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 16, 0, RGB(12, 29, 0)
restorebg
waitbgfadeout
- createvisualtask AnimTask_AllBattlersVisible, 0xA,
+ createvisualtask AnimTask_AllBattlersVisible, 10,
clearmonbg ANIM_DEF_PARTNER
waitbgfadein
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 2, 0, 0, RGB_BLACK @;From Black
end
ChloroblastShot:
- createsprite gSpriteTemplate_ChloroblastShot, ANIM_TARGET, 2, 0, 0, 0x19
+ createsprite gSpriteTemplate_ChloroblastShot, ANIM_TARGET, 2, 0, 0, 25
delay 2
- createsprite gSpriteTemplate_ChloroblastShot, ANIM_TARGET, 2, 0, 0, 0x19
+ createsprite gSpriteTemplate_ChloroblastShot, ANIM_TARGET, 2, 0, 0, 25
delay 2
return
@@ -14968,7 +14968,7 @@ gBattleAnimMove_MountainGale::
MountainGaleIceRock:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSpriteTemplate_MountainGaleRock, ANIM_ATTACKER, 2, 0x14, 0xfff8, 0xfff8, 0xfff8, 0x14, 0xffe0
+ createsprite gSpriteTemplate_MountainGaleRock, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32
return
gBattleAnimMove_VictoryDance::
@@ -14987,7 +14987,7 @@ gBattleAnimMove_VictoryDance::
gBattleAnimMove_HeadlongRush::
fadetobg BG_ROCK_WRECKER
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xF000, 0x0, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, -4096, 0, 0, -1
waitbgfadein
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 38, 1
call PulverizingPancakeDiggingRun
@@ -15001,75 +15001,75 @@ gBattleAnimMove_HeadlongRush::
call PulverizingPancakeDiggingRun
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 42, 0, 0, 5
- createsprite gSpriteTemplate_HeadlongRushImpact, ANIM_TARGET, 4, 0xfff6, 0x0, 0x1, 0x0
+ createsprite gSpriteTemplate_HeadlongRushImpact, ANIM_TARGET, 4, -10, 0, 1, 0
delay 5
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 44, 1
call MaxQuake_DirtGeyser
call MaxQuake_DirtGeyser
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
call UnsetPsychicBg
waitforvisualfinish
end
@ from max quake
MaxQuake_DirtGeyser:
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0003, 0x0005, 0x1, 0x0
- createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfffc, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 3, 5, 1, 0
+ createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, -4, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff1, 0x1, 0x0
- createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 0x100D, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, -11, -15, 1, 0
+ createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 4109, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0008, 0xfffb, 0x1, 0x0
- createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 0x4, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 8, -5, 1, 0
+ createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 4, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0xfffa, 0x0012, 0x1, 0x0
- createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, -6, 18, 1, 0
+ createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, -16, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0000, 0x0005, 0x1, 0x0
- createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 0xfffc, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 5, 1, 0
+ createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, -4, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0003, 0xfff5, ANIM_TARGET, 0x0
- createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 0x100D, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 3, -11, ANIM_TARGET, 0
+ createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 4109, 16
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xffe1, ANIM_TARGET, 0x0
- createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0x4, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, -11, -31, ANIM_TARGET, 0
+ createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, 4, 16
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0008, 0xffeb, ANIM_TARGET, 0x0
- createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 0xfff0, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 8, -21, ANIM_TARGET, 0
+ createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, -16, 16
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0xfffa, 0x0002, ANIM_TARGET, 0x0
- createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 0xfffc, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, -6, 2, ANIM_TARGET, 0
+ createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, -4, 16
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0000, 0xfff5, ANIM_TARGET, 0x0
- createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0x100D, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0, -11, ANIM_TARGET, 0
+ createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, 4109, 16
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0003, 0xffe5, ANIM_TARGET, 0x0
- createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 0x4, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 3, -27, ANIM_TARGET, 0
+ createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 4, 16
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xffd1, ANIM_TARGET, 0x0
- createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 0xfff0, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, -11, -47, ANIM_TARGET, 0
+ createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, -16, 16
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0008, 0xffdb, ANIM_TARGET, 0x0
- createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfffc, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 8, -37, ANIM_TARGET, 0
+ createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, -4, 16
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0xfffa, 0xfff2, ANIM_TARGET, 0x0
- createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 0x100D, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, -6, -14, ANIM_TARGET, 0
+ createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 4109, 16
delay 0
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0000, 0xffe5, ANIM_TARGET, 0x0
- createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 0x4, 0x10
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 2, 0, -27, ANIM_TARGET, 0
+ createsprite gSpriteTemplate_MaxQuakeDirtGeyser, ANIM_TARGET, 4, 0, 4, 16
delay 0
- createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gSpriteTemplate_MaxQuakeRockGeyser, ANIM_TARGET, 4, ANIM_TARGET, -16, 16
return
gBattleAnimMove_BarbBarrage::
monbg ANIM_TARGET
call BarbBarrageSpikeShoot
- loopsewithpan SE_M_DIG, SOUND_PAN_ATTACKER, 0x7, 0x3
+ loopsewithpan SE_M_DIG, SOUND_PAN_ATTACKER, 7, 3
createvisualtask AnimTask_FlailMovement, 2, ANIM_ATTACKER
delay 20
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 7, 0, 32, 1
@@ -15078,19 +15078,19 @@ gBattleAnimMove_BarbBarrage::
end
BarbBarrageSpikeShoot:
delay 3
- createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0xfb00, 0x0, 0x3
+ createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0, 0, 30, -1280, 0, 3
delay 0
- createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x0, 0x0500, 0x3
+ createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0, 0, 30, 0, 1280, 3
delay 0
- createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x0, 0xfb00, 0x3
+ createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0, 0, 30, 0, -1280, 3
delay 0
- createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x0500, 0x0300, 0x3
+ createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0, 0, 30, 1280, 768, 3
delay 0
- createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0xfb00, 0x0300, 0x3
+ createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0, 0, 30, -1280, 768, 3
delay 0
- createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0x0500, 0xfd00, 0x3
+ createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0, 0, 30, 1280, -768, 3
delay 0
- createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0x0, 0x0, 0x1e, 0xfb00, 0xfd00, 0x3
+ createsprite gSpriteTemplate_BarbBarrage, ANIM_TARGET, 2, 0, 0, 30, -1280, -768, 3
return
@@ -15115,23 +15115,23 @@ gBattleAnimMove_EsperWing::
end
EsperWingBlade:
- createsprite gPsychoCutSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, ESPER_WING_SPEED
+ createsprite gPsychoCutSpriteTemplate, ANIM_TARGET, 2, 0, 0, ESPER_WING_SPEED
delay ESPER_WING_SPEED / 2
- createsprite gPsychoCutSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, ESPER_WING_SPEED
+ createsprite gPsychoCutSpriteTemplate, ANIM_TARGET, 2, 0, 0, ESPER_WING_SPEED
return
@ TODO update wing attack anim with this
WingAttackFeatherScatter:
- createsprite gSpriteTemplate_WingAttackFeather, ANIM_TARGET, 1, 0xfff8, 0xfff8, 0xa0, 0xffe0
- createsprite gSpriteTemplate_WingAttackFeather, ANIM_TARGET, 1, 0xfff8, 0xfff8, 0xff00, 0xffd8
- createsprite gSpriteTemplate_WingAttackFeather, ANIM_TARGET, 1, 0xfff8, 0xfff8, 0x1a0, 0xffda
- createsprite gSpriteTemplate_WingAttackFeather, ANIM_TARGET, 1, 0xfff8, 0xfff8, 0xfe80, 0xffe1
+ createsprite gSpriteTemplate_WingAttackFeather, ANIM_TARGET, 1, -8, -8, 160, -32
+ createsprite gSpriteTemplate_WingAttackFeather, ANIM_TARGET, 1, -8, -8, -256, -40
+ createsprite gSpriteTemplate_WingAttackFeather, ANIM_TARGET, 1, -8, -8, 416, -38
+ createsprite gSpriteTemplate_WingAttackFeather, ANIM_TARGET, 1, -8, -8, -384, -31
return
gBattleAnimMove_BitterMalice::
playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET
- createvisualtask AnimTask_ScaryFace, 0x5 @ internally checks side
+ createvisualtask AnimTask_ScaryFace, 5 @ internally checks side
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 76, 1
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 4, 0, 15, RGB(6, 0, 12) @;Dark Purple
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_PURPLE_RING, 4, 0, 14, RGB(6, 0, 12) @;Dark Purple
@@ -15145,28 +15145,28 @@ gBattleAnimMove_BitterMalice::
end
BitterMaliceSwirl:
- createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, 0x1
+ createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, 1
delay 2
- createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, 0x1
+ createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, 1
delay 2
- createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, 0x1
+ createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, 1
delay 2
- createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, 0x1
+ createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, 1
delay 2
- createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, 0x1
+ createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, 1
delay 2
- createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, 0x1
+ createsprite gSpriteTemplate_BitterMaliceRing, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, 1
delay 2
return
gBattleAnimMove_Shelter::
playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER
- createvisualtask AnimTask_ShellSmashShrinkAttacker, 0x2
+ createvisualtask AnimTask_ShellSmashShrinkAttacker, 2
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SHELL_LEFT, 1, 0, 14, RGB(26, 26, 26) @ light light, gray
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SHELL_RIGHT, 1, 0, 14, RGB(26, 26, 26) @ light light, gray
- createsprite gShellSmashRightShellSpriteTemplate, ANIM_ATTACKER, 2, 0xffd7, 0x0, 0x2, 0x333, 0x0, 10, 30
- createsprite gShellSmashLeftShellSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0x0, 0x6, 0xfccd, 0x0, 10, 30
- createvisualtask AnimTask_FadeOutParticles, 0x2, 0
+ createsprite gShellSmashRightShellSpriteTemplate, ANIM_ATTACKER, 2, -41, 0, 2, 819, 0, 10, 30
+ createsprite gShellSmashLeftShellSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 6, -819, 0, 10, 30
+ createvisualtask AnimTask_FadeOutParticles, 2, 0
waitforvisualfinish
blendoff
end
@@ -15176,7 +15176,7 @@ gBattleAnimMove_TripleArrows::
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
- createsprite gSpriteTemplate_TripleArrowKick, ANIM_TARGET, 2, -30, -20, 0x10, -20
+ createsprite gSpriteTemplate_TripleArrowKick, ANIM_TARGET, 2, -30, -20, 16, -20
waitforvisualfinish
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 6, 6, 1
@@ -15189,8 +15189,8 @@ gBattleAnimMove_TripleArrows::
delay 3
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 10, 1
playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER
- createvisualtask AnimTask_IsAttackerPlayerSide, 0x2,
- jumpargeq 0x7, FALSE, TripleArrowsOnOpponent
+ createvisualtask AnimTask_IsAttackerPlayerSide, 2,
+ jumpargeq 7, FALSE, TripleArrowsOnOpponent
createsprite gSpiritShackleArrowTemplate, ANIM_TARGET, 2, 0, -60, 0, 0, TRIPLE_ARROW_FLY_TIME
TripleArrowsEnd:
delay 3
@@ -15207,7 +15207,7 @@ gBattleAnimMove_InfernalParade::
monbg ANIM_TARGET
splitbgprio_foes ANIM_TARGET
fadetobg BG_GHOST
- playsewithpan SE_M_PSYBEAM, 0xc0
+ playsewithpan SE_M_PSYBEAM, 192
waitbgfadein
createsprite gSpriteTemplate_InfernalParadeFlame, ANIM_TARGET, 2, -30, 10, 20 @;Bottom left
delay 3
@@ -15221,12 +15221,12 @@ gBattleAnimMove_InfernalParade::
call InfernalFlames
call InfernalFlames
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x0
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x2a
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x54
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x7e
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0xa8
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0xd2
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 42
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 84
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 126
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 168
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 210
waitforvisualfinish
delay 12
restorebg
@@ -15252,7 +15252,7 @@ gBattleAnimMove_CeaselessEdge::
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 16, 16, RGB_RED @;Fully to to, Red
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_ATTACKER | F_PAL_TARGET), 0, 16, 16, RGB_BLACK @;Fully to to, Black
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xa,
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10,
delay 16
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 48, 1
call CeaselessEdgeSlashes
@@ -15260,9 +15260,9 @@ gBattleAnimMove_CeaselessEdge::
call CeaselessEdgeSlashes
waitforvisualfinish
delay 8
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersVisible, 0xA,
+ createvisualtask AnimTask_AllBattlersVisible, 10,
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 1, 16, 0, RGB_WHITE @;From White
waitforvisualfinish
end
@@ -15305,24 +15305,24 @@ gBattleAnimMove_BleakwindStorm::
waitforvisualfinish
end
BleakwindStormIceSwirl:
- createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0x0, 0x20, 0x210, 0x1e, 0xa, 0x32, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0, 32, 528, 30, 10, 50, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0x0, 0x24, 0x1e0, 0x14, 0xd, 0xffd2, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0, 36, 480, 20, 13, -46, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0x0, 0x25, 0x240, 0x14, 0x5, 0x2a, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0, 37, 576, 20, 5, 42, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0x0, 0x23, 0x190, 0x19, 0x8, 0xffd6, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0, 35, 400, 25, 8, -42, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0x0, 0x20, 0x200, 0x19, 0xd, 0x2e, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0, 32, 512, 25, 13, 46, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0x0, 0x25, 0x1d0, 0x1e, 0xc, 0xffce, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_BleakwindIce, ANIM_TARGET, 2, 6, 0, 37, 464, 30, 12, -50, ANIM_TARGET
return
gBattleAnimMove_WildboltStorm::
fadetobg BG_MAX_LIGHTNING
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, -1
waitbgfadein
playsewithpan SE_M_GUST, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 88, 1
@@ -15348,17 +15348,17 @@ gBattleAnimMove_WildboltStorm::
end
WildboltStormSparkSwirl:
- createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0x0, 0x20, 0x210, 0x1e, 0xa, 0x32, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0, 32, 528, 30, 10, 50, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0x0, 0x24, 0x1e0, 0x14, 0xd, 0xffd2, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0, 36, 480, 20, 13, -46, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0x0, 0x25, 0x240, 0x14, 0x5, 0x2a, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0, 37, 576, 20, 5, 42, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0x0, 0x23, 0x190, 0x19, 0x8, 0xffd6, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0, 35, 400, 25, 8, -42, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0x0, 0x20, 0x200, 0x19, 0xd, 0x2e, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0, 32, 512, 25, 13, 46, ANIM_TARGET
delay 2
- createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0x0, 0x25, 0x1d0, 0x1e, 0xc, 0xffce, ANIM_TARGET
+ createspriteontargets gSpriteTemplate_WildboltStormSpark, ANIM_TARGET, 2, 6, 0, 37, 464, 30, 12, -50, ANIM_TARGET
return
@@ -15387,17 +15387,17 @@ gBattleAnimMove_SandsearStorm::
end
SandsearStormFireSpin:
- createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_TARGET
+ createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0, 28, 528, 30, 13, 50, ANIM_TARGET
delay 2
- createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_TARGET
+ createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0, 32, 480, 20, 16, -46, ANIM_TARGET
delay 2
- createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_TARGET
+ createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0, 33, 576, 20, 8, 42, ANIM_TARGET
delay 2
- createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_TARGET
+ createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0, 31, 400, 25, 11, -42, ANIM_TARGET
delay 2
- createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_TARGET
+ createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0, 28, 512, 25, 16, 46, ANIM_TARGET
delay 2
- createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_TARGET
+ createspriteontargets gFireSpinSpriteTemplate, ANIM_TARGET, 2, 6, 0, 33, 464, 30, 15, -50, ANIM_TARGET
return
@@ -15407,10 +15407,10 @@ gBattleAnimMove_LunarBlessing::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 16, RGB_BLACK
createvisualtask AnimTask_BlendNonAttackerPalettes, 2, 1, 0, 16, RGB_BLACK
waitforvisualfinish
- createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 0x78, 0x38
- createvisualtask AnimTask_AlphaFadeIn, 0x3, 0x0, 0x10, 0x10, 0x0, 0x1
+ createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56
+ createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 7, 0, 16, RGB_BLACK
- loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 0x10, 0x3
+ loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 16, 3
call HealingEffect2
createsprite gSpriteTemplate_LunarDanceRing, ANIM_ATTACKER, 2,
delay 4
@@ -15421,10 +15421,10 @@ gBattleAnimMove_LunarBlessing::
clearmonbg ANIM_ATK_PARTNER
call HealingEffect
delay 40
- createvisualtask AnimTask_AllBattlersInvisible, 0xA,
- createvisualtask AnimTask_MoonlightEndFade, 0x2,
+ createvisualtask AnimTask_AllBattlersInvisible, 10,
+ createvisualtask AnimTask_MoonlightEndFade, 2,
delay 16
- createvisualtask AnimTask_AllBattlersVisible, 0xA,
+ createvisualtask AnimTask_AllBattlersVisible, 10,
waitforvisualfinish
blendoff
end
@@ -15432,10 +15432,10 @@ gBattleAnimMove_LunarBlessing::
gBattleAnimMove_TakeHeart::
playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER
- createsprite gSpriteTemplate_TakeHeartFallingHeart, ANIM_ATTACKER, 2, 0, 0x3a, 4, ANIM_ATTACKER
+ createsprite gSpriteTemplate_TakeHeartFallingHeart, ANIM_ATTACKER, 2, 0, 58, 4, ANIM_ATTACKER
delay 21
- loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 0x10, 0x4
- createvisualtask AnimTask_StatusClearedEffect, 0x2, 0x0
+ loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 16, 4
+ createvisualtask AnimTask_StatusClearedEffect, 2, 0
call TakeHeartRings
call TakeHeartRings
call TakeHeartRings
@@ -15470,9 +15470,9 @@ gBattleAnimMove_BitterBlade::
waitforvisualfinish
delay 3
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
- createsprite gBitterBladeImpactTemplate ANIM_TARGET, 1, 0x0, 0xa, 0x0, 0xFF00, 0xA
+ createsprite gBitterBladeImpactTemplate ANIM_TARGET, 1, 0, 10, 0, -256, 10
delay 2
- createvisualtask AnimTask_ShakeMon, 0x2, 0x1, 0x0, 0x3, 0xa, 0x1
+ createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1
waitforvisualfinish
delay 3
call GigaDrainAbsorbEffect
@@ -15489,12 +15489,12 @@ gBattleAnimMove_BitterBlade::
gBattleAnimMove_DoubleShock::
fadetobg BG_MAX_LIGHTNING
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xff00, 0x0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, -1
waitbgfadein
- createvisualtask AnimTask_ElectricChargingParticles, 0x2, ANIM_ATTACKER, 30, 0, 3 @;Amount, Slowness, Slowness, Compaction
+ createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 30, 0, 3 @;Amount, Slowness, Slowness, Compaction
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
delay 12
- createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 0, 0x0
+ createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 0, 0
waitforvisualfinish
delay 2
waitforvisualfinish
@@ -15516,9 +15516,9 @@ gBattleAnimMove_DoubleShock::
end
gBattleAnimMove_SyrupBomb::
- createvisualtask AnimTask_SyrupBomb, 0x5
- jumpargeq 0x0, FALSE, gBattleAnimMove_SyrupBombRed
- jumpargeq 0x0, TRUE, gBattleAnimMove_SyrupBombYellow
+ createvisualtask AnimTask_SyrupBomb, 5
+ jumpargeq 0, FALSE, gBattleAnimMove_SyrupBombRed
+ jumpargeq 0, TRUE, gBattleAnimMove_SyrupBombYellow
gBattleAnimMove_SyrupBombRed::
call SyrupBombProjectileRed
@@ -15591,9 +15591,9 @@ SyrupBombProjectileYellow:
return
gBattleAnimGeneral_SyrupBombSpeedDrop::
- createvisualtask AnimTask_StickySyrup, 0x5
- jumpargeq 0x0, FALSE, SyrupBombSpeedDropRed
- jumpargeq 0x0, TRUE, SyrupBombSpeedDropYellow
+ createvisualtask AnimTask_StickySyrup, 5
+ jumpargeq 0, FALSE, SyrupBombSpeedDropRed
+ jumpargeq 0, TRUE, SyrupBombSpeedDropYellow
SyrupBombSpeedDropRed:
loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6
@@ -15716,7 +15716,7 @@ gBattleAnimMove_AlluringVoice::
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 26, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 26, 1
waitforvisualfinish
- createvisualtask SoundTask_WaitForCry, 0x5
+ createvisualtask SoundTask_WaitForCry, 5
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 8, 0, RGB(29, 19, 27)
waitforvisualfinish
@@ -15764,7 +15764,7 @@ gBattleAnimMove_GigatonHammer::
delay 60
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
delay 18
- createvisualtask AnimTask_SquishTarget, 0x2
+ createvisualtask AnimTask_SquishTarget, 2
delay 6
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50
@@ -15774,10 +15774,10 @@ gBattleAnimMove_GigatonHammer::
GigatonHammerImpact:
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=2
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfff4, 0x20, 0x3, 0x4
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0x8, 0x1f, 0x2, 0x2
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xfffc, 0x1c, 0x2, 0x3
- createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 0xc, 0x1e, 0x4, 0x3
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 32, 3, 4
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 31, 2, 2
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 28, 2, 3
+ createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 30, 4, 3
return
gBattleAnimMove_IceSpinner::
@@ -15911,16 +15911,16 @@ gBattleAnimMove_JetPunch::
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB_BLUE
delay 8
createvisualtask AnimTask_ExtremeSpeedMonReappear, 2
- setarg 0x7, 0x1000
- createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 0x14, 0xffec, 0x14, ANIM_TARGET
- createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 0xa, 0xa, 0x14, ANIM_TARGET
+ setarg 7, 4096
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 20, -20, 20, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 10, 10, 20, ANIM_TARGET
createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 8, 1, 0
playsewithpan SE_M_DIVE, SOUND_PAN_TARGET
create_basic_hitsplat_sprite ANIM_TARGET, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1
delay 6
- createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 0x14, 0xffec, 0x14, ANIM_TARGET
- createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 0xa, 0xa, 0x14, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 20, -20, 20, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 10, 10, 20, ANIM_TARGET
createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 13, ANIM_TARGET, 1
createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 13
createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 13
@@ -15965,7 +15965,7 @@ gBattleAnimMove_PsychicNoise::
end
gBattleAnimMove_TemperFlare::
- loopsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER, 0x8, 0x3
+ loopsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER, 8, 3
createvisualtask AnimTask_ShrinkAndGrow, 2
createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_ATTACKER, RGB_RED, 10, 0, 2
createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, -28
@@ -16000,7 +16000,7 @@ gBattleAnimMove_TemperFlare::
gBattleAnimMove_Trailblaze::
monbg ANIM_TARGET
- loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 0x20, 0x6
+ loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 32, 6
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 4, 3
call TrailblazeVortex
call TrailblazeVortex
@@ -16022,22 +16022,22 @@ gBattleAnimMove_Trailblaze::
playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_ATTACKER
waitforvisualfinish
delay 8
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x7
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 7
waitforvisualfinish
clearmonbg ANIM_TARGET
end
TrailblazeVortex:
- createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER
delay 2
- createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER
delay 2
- createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER
delay 2
- createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER
delay 2
- createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER
delay 2
- createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gLeafTornadoVortexTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER
delay 2
return
@@ -16110,7 +16110,7 @@ gBattleAnimMove_KowtowCleave::
playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER
waitforvisualfinish
delay 12
- createsprite gLeerSpriteTemplate, ANIM_TARGET, 2, 0x18, -12
+ createsprite gLeerSpriteTemplate, ANIM_TARGET, 2, 24, -12
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
waitforvisualfinish
createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1
@@ -16399,8 +16399,8 @@ ElectroShotSetUp:
setalpha 14, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 12, RGB_BLACK
waitforvisualfinish
- loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 0xE, 0x8
- createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0x0
+ loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 14, 8
+ createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0
call TechnoBlastCharging1
delay 15
call TechnoBlastCharging2
@@ -16478,7 +16478,7 @@ gBattleAnimMove_IvyCudgel::
delay 60
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
delay 18
- createvisualtask AnimTask_SquishTarget, 0x2
+ createvisualtask AnimTask_SquishTarget, 2
delay 6
call WoodHammerImpact
waitforvisualfinish
@@ -16488,7 +16488,7 @@ IvyCudgelFire:
delay 60
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
delay 18
- createvisualtask AnimTask_SquishTarget, 0x2
+ createvisualtask AnimTask_SquishTarget, 2
delay 6
call WoodHammerImpact
call FireSpreadEffect
@@ -16501,7 +16501,7 @@ IvyCudgelRock:
delay 60
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
delay 18
- createvisualtask AnimTask_SquishTarget, 0x2
+ createvisualtask AnimTask_SquishTarget, 2
delay 6
call WoodHammerImpact
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
@@ -16516,7 +16516,7 @@ IvyCudgelWater:
delay 60
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
delay 18
- createvisualtask AnimTask_SquishTarget, 0x2
+ createvisualtask AnimTask_SquishTarget, 2
delay 6
call WoodHammerImpact
playsewithpan SE_M_DIVE, SOUND_PAN_TARGET
@@ -17586,9 +17586,9 @@ gBattleAnimMove_ElectroDrift::
createvisualtask AnimTask_VoltTackleBolt, 5, 4
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER
delay 2
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 5
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 10, 0, 18, 1
@@ -17642,7 +17642,7 @@ gBattleAnimMove_Psyblade::
gBattleAnimMove_MightyCleave::
fadetobg BG_ROCK_WRECKER
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0xF000, 0, 0, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, -4096, 0, 0, -1
waitbgfadein
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 38, 1
call MightyCleaveDiggingRun
@@ -17756,7 +17756,7 @@ gBattleAnimMove_BlazingTorque::
fadetobg BG_FIRE
waitbgfadeout
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
- createvisualtask AnimTask_StartSlidingBg, 5, 0x0A00, 0, 1, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, 2560, 0, 1, -1
waitbgfadein
complex_palette_blend selector=F_PAL_ATTACKER, delay=4, num_blends=2, color1=RGB_WHITE, blend_y1=10, color2=RGB_BLACK, blend_y2=0
waitforvisualfinish
@@ -17833,7 +17833,7 @@ gBattleAnimMove_WickedTorque::
gBattleAnimMove_NoxiousTorque::
fadetobg BG_GUNK_SHOT
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0x0A00, 0, 1, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, 2560, 0, 1, -1
waitbgfadein
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
complex_palette_blend selector=F_PAL_ATTACKER, delay=4, num_blends=2, color1=RGB_WHITE, blend_y1=10, color2=RGB_BLACK, blend_y2=0
@@ -17882,7 +17882,7 @@ gBattleAnimMove_NoxiousTorque::
gBattleAnimMove_CombatTorque::
fadetobg BG_IN_AIR
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0, 0x1000, 0, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, 4096, 0, -1
waitbgfadein
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
complex_palette_blend selector=F_PAL_ATTACKER, delay=4, num_blends=2, color1=RGB_WHITE, blend_y1=10, color2=RGB_BLACK, blend_y2=0
@@ -18077,7 +18077,7 @@ TeraBlastFighting:
waitforvisualfinish
fadetobg BG_ROCK_WRECKER
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0xF000, 0, 0, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, -4096, 0, 0, -1
waitbgfadein
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 63, 1
createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, -48, 24, 0, 0, 10, 1, ANIM_FOOT_1, 1
@@ -18189,7 +18189,7 @@ TeraBlastPoison:
waitforvisualfinish
fadetobg BG_GUNK_SHOT
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0x0A00, 0, 1, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, 2560, 0, 1, -1
waitbgfadein
createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20
createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20
@@ -18294,7 +18294,7 @@ TeraBlastRock:
waitforvisualfinish
fadetobg BG_ROCK_WRECKER
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0xF000, 0, 0, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, -4096, 0, 0, -1
waitbgfadein
playsewithpan SE_FALL, SOUND_PAN_TARGET
call TeraBlastRock1
@@ -18497,7 +18497,7 @@ TeraBlastGhost:
waitforvisualfinish
fadetobg BG_GHOST
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0x0A00, 0, 1, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, 2560, 0, 1, -1
waitbgfadein
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 46, 1
delay 6
@@ -18706,7 +18706,7 @@ TeraBlastWater:
waitforvisualfinish
fadetobg BG_WATER
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0x0A00, 0, 1, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, 2560, 0, 1, -1
waitbgfadein
playsewithpan SE_FALL, SOUND_PAN_TARGET
call TeraBlastWater1
@@ -18777,7 +18777,7 @@ TeraBlastGrass:
waitforvisualfinish
fadetobg BG_LEAF_STORM
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0x0A00, 0, 1, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, 2560, 0, 1, -1
waitbgfadein
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1
delay 6
@@ -18821,7 +18821,7 @@ TeraBlastElectric:
waitforvisualfinish
fadetobg BG_THUNDER
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0xff00, 0, 1, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, -1
waitbgfadein
loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 3, 10
createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 44, 0, 0, 3
@@ -18914,12 +18914,12 @@ TeraBlastPsychic:
waitbgfadeout
createvisualtask AnimTask_SetPsychicBackground, 5
waitbgfadein
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 3
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 8, 8, 30, 1
createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 30, ANIM_TARGET, 1
waitforvisualfinish
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
waitforvisualfinish
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 50, 1
call EternabeamGeyser
@@ -19012,7 +19012,7 @@ TeraBlastDragon:
waitforvisualfinish
fadetobg BG_FIRE_2
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 5, 0x1000, 0, 0, -1
+ createvisualtask AnimTask_StartSlidingBg, 5, 4096, 0, 0, -1
waitbgfadein
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1
delay 6
@@ -20276,7 +20276,7 @@ gBattleAnimMove_HiddenPower::
createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 168
createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 210
delay 52
- setarg 7, 0xFFFF
+ setarg 7, -1
playsewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0
createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 0
@@ -20960,19 +20960,19 @@ gBattleAnimMove_Spark::
delay 0
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=5, target_blend_y=5, color=RGB(31, 31, 22)
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 0
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=0, target_blend_y=0, color=RGB(31, 31, 22)
delay 10
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=5, target_blend_y=5, color=RGB(31, 31, 22)
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
delay 0
blend_color_cycle selector=(F_PAL_BG | F_PAL_ATTACKER), delay=-31, num_blends=1, initial_blend_y=0, target_blend_y=0, color=RGB(31, 31, 22)
delay 20
@@ -21084,7 +21084,7 @@ gBattleAnimMove_LockOn::
createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 3
createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 4 @ Also transitions to red target
delay 120
- setarg 7, 0xFFFF @ Signal target to flash/disappear
+ setarg 7, -1 @ Signal target to flash/disappear
waitforvisualfinish
end
@@ -21463,7 +21463,7 @@ HornDrillContinue:
waitforvisualfinish
restorebg
waitbgfadeout
- setarg 7, 0xFFFF
+ setarg 7, -1
waitbgfadein
end
@@ -22364,7 +22364,7 @@ gBattleAnimMove_ExtremeSpeed::
clearmonbg ANIM_TARGET
blendoff
delay 1
- setarg 7, 0x1000
+ setarg 7, 4096
delay 1
end
@@ -23616,7 +23616,7 @@ gBattleAnimMove_Thunder::
waitbgfadein
simple_palette_blend selector=F_PAL_BG, delay=2, initial_blend_y=0, target_blend_y=16, color=RGB_BLACK
delay 16
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 16, -36
@@ -23633,7 +23633,7 @@ gBattleAnimMove_Thunder::
createsprite gLightningSpriteTemplate, ANIM_TARGET, 6, -16, 16
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET
delay 5
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 24, -32
delay 1
@@ -23641,9 +23641,9 @@ gBattleAnimMove_Thunder::
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 24, 16
delay 30
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 5
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -32
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
@@ -23652,17 +23652,17 @@ gBattleAnimMove_Thunder::
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, 16
delay 10
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
createvisualtask AnimTask_ShakeTargetInPattern, 2, 30, 3, TRUE, 0
delay 2
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
simple_palette_blend unused_anim_battler=ANIM_TARGET, selector=F_PAL_BG, delay=2, initial_blend_y=16, target_blend_y=0, color=RGB_BLACK
waitforvisualfinish
restorebg
waitbgfadeout
- setarg 7, 0xFFFF
+ setarg 7, -1
waitbgfadein
end
@@ -23675,7 +23675,7 @@ gBattleAnimMove_ThunderPunch::
createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=1
delay 1
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -48
delay 1
@@ -23684,7 +23684,7 @@ gBattleAnimMove_ThunderPunch::
createsprite gLightningSpriteTemplate, ANIM_ATTACKER, 2, 0, 16
delay 1
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 2
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1
create_basic_hitsplat_sprite ANIM_ATTACKER, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=2
@@ -23710,12 +23710,12 @@ gBattleAnimMove_SacredFire::
delay 1
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, 50, 5, 1, 1
delay 1
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 50, 5, 0, 1
delay 1
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -20, 10, 50, 5, -1, 1
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
waitforvisualfinish
playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET
@@ -23727,10 +23727,10 @@ gBattleAnimMove_SacredFire::
playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET
createsprite gLargeFlameSpriteTemplate, ANIM_TARGET, 2, 16, 0, 80, 16, 0, 1
delay 1
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
waitforvisualfinish
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 1
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0
@@ -23997,7 +23997,7 @@ gBattleAnimMove_FeintAttack::
clearmonbg ANIM_TARGET
blendoff
delay 1
- setarg 7, 0x1000
+ setarg 7, 4096
delay 32
createvisualtask AnimTask_InitAttackerFadeFromInvisible, 2
monbg ANIM_ATTACKER
@@ -24237,7 +24237,7 @@ gBattleAnimMove_AuroraBeam::
call AuroraBeamCreateRings
call AuroraBeamCreateRings
call AuroraBeamCreateRings
- setarg 7, 0xFFFF
+ setarg 7, -1
createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 3, 6, 0, 10
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 40, 1
call AuroraBeamCreateRings
@@ -24923,7 +24923,7 @@ MegahornContinue:
blendoff
restorebg
waitbgfadeout
- setarg 7, 0xFFFF
+ setarg 7, -1
waitbgfadein
end
MegahornInContest:
@@ -26318,7 +26318,7 @@ gBattleAnimMove_Mimic::
delay 15
create_mimic_orb_sprite ANIM_TARGET, 2, initial_x=-12, initial_y=24
delay 10
- setarg 7, 0xFFFF
+ setarg 7, -1
waitforvisualfinish
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
blend_color_cycle selector=F_PAL_ATTACKER, delay=0, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB_WHITE
@@ -26404,7 +26404,7 @@ gBattleAnimMove_SoftBoiled::
delay 8
createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1
delay 60
- setarg 7, 0xFFFF
+ setarg 7, -1
waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER
call HealingEffect2
@@ -26748,7 +26748,7 @@ gBattleAnimMove_TriAttack::
delay 2
createvisualtask AnimTask_ShakeTargetInPattern, 2, 20, 3, TRUE, 1
waitforvisualfinish
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -48
delay 1
@@ -26758,7 +26758,7 @@ gBattleAnimMove_TriAttack::
delay 20
createvisualtask AnimTask_ShakeTargetInPattern, 2, 20, 3, TRUE, 0
delay 2
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
waitforvisualfinish
call IceCrystalEffectShort
simple_palette_blend selector=F_PAL_BG, delay=2, initial_blend_y=16, target_blend_y=0, color=RGB_BLACK
@@ -27727,7 +27727,7 @@ gBattleAnimMove_CosmicPower::
waitforvisualfinish
restorebg
waitbgfadeout
- setarg 7, 0xFFFF
+ setarg 7, -1
waitbgfadein
waitforvisualfinish
end
@@ -27755,7 +27755,7 @@ gBattleAnimMove_BlastBurn::
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 40, 20, 24, 0, 0, 0
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 24, 0, 0, 0
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -40, 20, 24, 0, 0, 0
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 25
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -96, 0, 24, 0, 0, 0
@@ -27769,7 +27769,7 @@ gBattleAnimMove_BlastBurn::
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 48, 24, 0, 0, 0
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -60, 30, 24, 0, 0, 0
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
blendoff
@@ -28015,7 +28015,7 @@ gBattleAnimMove_HydroCannon::
playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER
createsprite gHydroCannonChargeSpriteTemplate, ANIM_TARGET, 2
delay 10
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
delay 30
panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
call HydroCannonBeam
@@ -28032,7 +28032,7 @@ gBattleAnimMove_HydroCannon::
call HydroCannonBeam
createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0
waitforvisualfinish
- invert_screen_color scenery=0x1 | 0x2 | 0x4
+ invert_screen_color scenery=1 | 2 | 4
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
blendoff
@@ -28081,7 +28081,7 @@ gBattleAnimMove_SeismicToss::
SeismicTossContinue:
restorebg
waitbgfadeout
- setarg 7, 0xFFF
+ setarg 7, 4095
waitbgfadein
clearmonbg ANIM_DEF_PARTNER
blendoff
@@ -28267,7 +28267,7 @@ gBattleAnimMove_SkyUppercut::
blendoff
restorebg
waitbgfadeout
- setarg 7, 0xFFFF
+ setarg 7, -1
waitbgfadein
end
@@ -28334,7 +28334,7 @@ gBattleAnimMove_MagicalLeaf::
create_basic_hitsplat_sprite ANIM_TARGET, 4, x=10, y=4, relative_to=ANIM_TARGET, animation=2
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1
delay 20
- setarg 7, 0xFFFF
+ setarg 7, -1
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
blendoff
@@ -28781,7 +28781,7 @@ SetPsychicBackground:
UnsetPsychicBg:
restorebg
waitbgfadeout
- setarg 7, 0xFFFF
+ setarg 7, -1
waitbgfadein
return
@@ -28802,7 +28802,7 @@ SetSkyBgContest:
UnsetSkyBg:
restorebg
waitbgfadeout
- setarg 7, 0xFFFF
+ setarg 7, -1
waitbgfadein
return
@@ -28971,7 +28971,7 @@ Status_BindWrap:
delay 3
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1
delay 20
- setarg 7, 0xFFFF
+ setarg 7, -1
playsewithpan SE_M_BIND, SOUND_PAN_TARGET
waitforvisualfinish
end
@@ -29001,7 +29001,7 @@ Status_MagmaStorm:
call FireSpinEffect
restorebg
waitbgfadeout
- setarg 7, 0xFFF
+ setarg 7, 4095
waitbgfadein
stopsound
clearmonbg ANIM_DEF_PARTNER
@@ -29062,7 +29062,7 @@ Status_Infestation:
splitbgprio ANIM_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB(0, 25, 28)
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 30, 1
- loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 30
+ loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0, 30
call InfestationVortex
call InfestationVortex
waitforvisualfinish
@@ -29485,13 +29485,13 @@ gBattleAnimGeneral_ZMoveActivate::
setalpha 12, 8
fadetobg BG_ZMOVE_ACTIVATE
waitbgfadein
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x0, 0x0, 0xFFFF
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, 0, 0, -1
playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER
blend_color_cycle selector=F_PAL_ATTACKER, delay=0, num_blends=6, initial_blend_y=0, target_blend_y=11, color=RGB(28, 21, 29)
call ZMoveBuffEffect
call ZMoveBuffEffect
call ZMoveBuffEffect
- createsprite gZMoveSymbolSpriteTemplate, ANIM_ATTACKER, 41, 0x0, 0x0, 0x0, 0x0
+ createsprite gZMoveSymbolSpriteTemplate, ANIM_ATTACKER, 41, 0, 0, 0, 0
call ZMoveBuffEffect
call ZMoveBuffEffect
waitforvisualfinish
@@ -29500,13 +29500,13 @@ gBattleAnimGeneral_ZMoveActivate::
clearmonbg ANIM_ATTACKER
end
ZMoveBuffEffect:
- createsprite gBlueZMoveEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gBlueZMoveEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 3
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 @Red Buff
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1 @Red Buff
delay 3
- createsprite gGreenZMoveEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gGreenZMoveEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 3
- createsprite gYellowZMoveEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gYellowZMoveEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 3
return
@@ -29526,13 +29526,13 @@ gBattleAnimGeneral_TotemFlare::
end
RainbowEndureEffect:
- createsprite gBlueEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gBlueEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 3
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1 @Red Buff
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1 @Red Buff
delay 3
- createsprite gGreenEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gGreenEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 3
- createsprite gYellowEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gYellowEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 3
return
@@ -29560,9 +29560,9 @@ gBattleAnimGeneral_StrongWinds::
end
gBattleAnimGeneral_PrimalReversion::
- createvisualtask AnimTask_PrimalReversion, 0x5
- jumpargeq 0x0, ITEM_RED_ORB, General_PrimalReversion_Omega
- jumpargeq 0x0, ITEM_BLUE_ORB, General_PrimalReversion_Alpha
+ createvisualtask AnimTask_PrimalReversion, 5
+ jumpargeq 0, ITEM_RED_ORB, General_PrimalReversion_Omega
+ jumpargeq 0, ITEM_BLUE_ORB, General_PrimalReversion_Alpha
goto gBattleAnimGeneral_MegaEvolution
General_PrimalReversion_Alpha:
monbg ANIM_ATTACKER
@@ -29685,8 +29685,8 @@ gBattleAnimGeneral_UltraBurst::
waitforvisualfinish
createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 @ charge particles to attacker
delay 30
- loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0xe, 0xa
- createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 3, 0x0
+ loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 14, 10
+ createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 3, 0
call LightThatBurnsTheSkyGreenSparks
call LightThatBurnsTheSkyGreenSparks
call LightThatBurnsTheSkyGreenSparks
@@ -29699,7 +29699,7 @@ gBattleAnimGeneral_UltraBurst::
delay 20
playsewithpan SE_ORB, SOUND_PAN_ATTACKER
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
- createsprite gUltraBurstSymbolSpriteTemplate, ANIM_ATTACKER, 0x0, 0x0, 0x0, 0x0, 0x0
+ createsprite gUltraBurstSymbolSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 0, 0
waitforvisualfinish
createvisualtask AnimTask_HideSwapSprite, 2
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
@@ -29728,10 +29728,10 @@ gBattleAnimGeneral_AffectionHangedOn::
loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 12, 3
createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, ANIM_ATTACKER
delay 15
- createvisualtask AnimTask_AffectionHangedOn, 0x5
- jumpargeq 0x0, AFFECTION_THREE_HEARTS, General_AffectionHangedOn_3Hearts
- jumpargeq 0x0, AFFECTION_FOUR_HEARTS, General_AffectionHangedOn_4Hearts
- jumpargeq 0x0, AFFECTION_FIVE_HEARTS, General_AffectionHangedOn_5Hearts
+ createvisualtask AnimTask_AffectionHangedOn, 5
+ jumpargeq 0, AFFECTION_THREE_HEARTS, General_AffectionHangedOn_3Hearts
+ jumpargeq 0, AFFECTION_FOUR_HEARTS, General_AffectionHangedOn_4Hearts
+ jumpargeq 0, AFFECTION_FIVE_HEARTS, General_AffectionHangedOn_5Hearts
createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -384, -31
General_AffectionHangedOn_5Hearts:
createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -128, -22
@@ -30001,55 +30001,55 @@ gBattleAnimSpecial_CriticalCaptureBallThrow::
gBattleAnimMove_BreakneckBlitz::
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 5, 32 @ shake screen
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 5, 32 @ shake banks
- playsewithpan SE_M_EARTHQUAKE, 0x0
+ playsewithpan SE_M_EARTHQUAKE, 0
monbg ANIM_ATTACKER
splitbgprio ANIM_ATTACKER
delay 1
createvisualtask AnimTask_BlendPalInAndOutByTag, 5, ANIM_TAG_HOLLOW_ORB, RGB(0, 0, 19), 14, 0, 3
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x0
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x2b
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x55
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x80
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0xaa
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0xd5
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 43
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 85
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 128
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 170
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 213
delay 15
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x0
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x2b
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x55
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0x80
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0xaa
- createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0xd5
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 0
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 43
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 85
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 128
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 170
+ createsprite gBreakneckBlitzDanceSpriteTemplate, ANIM_ATTACKER, 2, 213
waitforvisualfinish
clearmonbg ANIM_ATTACKER
createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
fadetobg BG_DRILL
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xf700, 0x300, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, -2304, 768, 1, -1
waitbgfadein
setalpha 12, 8
delay 16
createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -24, 8, 23, 10, 40, 10
delay 35
invisible ANIM_ATTACKER
- createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0
+ createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
delay 8
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
- createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x1, 0x1 @ 0, 0
+ createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 @ 0, 0
delay 1
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
- createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0xa, 0xfff6, 0x1, 0x1 @ +10, -10
+ createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 10, -10, 1, 1 @ +10, -10
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
delay 1
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
- createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0xf, 0xfff1, 0x1, 0x1 @ +15, -15
+ createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 15, -15, 1, 1 @ +15, -15
delay 1
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
- createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0x14, 0xffec, 0x1, 0x1 @ +20, -20
+ createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 20, -20, 1, 1 @ +20, -20
delay 1
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
- createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 0x19, 0xffe7, 0x1, 0x1 @ +25, -25
+ createsprite gBreakneckBlitzHitSpriteTemplate, ANIM_TARGET, 3, 25, -25, 1, 1 @ +25, -25
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, 16, 1, 4
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -512, ANIM_TARGET, 0
@@ -30060,76 +30060,76 @@ gBattleAnimMove_BreakneckBlitz::
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -512, ANIM_TARGET, 1
delay 10
delay 25
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 6
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
waitforvisualfinish
delay 16
blendoff
clearmonbg ANIM_DEF_PARTNER
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
call UnsetPsychicBg
end
gBattleAnimMove_AllOutPummeling::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
call EndureEffect
- loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER 0x9 0x2
+ loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER 9 2
blend_color_cycle selector=F_PAL_ATTACKER, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB_RED
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1
call EndureEffect
waitforvisualfinish
fadetobg BG_ROCK_WRECKER
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x800, 0x0, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 2048, 0, 0, -1
waitbgfadein
setalpha 12, 8
monbg ANIM_DEF_PARTNER
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 63, 1
- createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x18, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_1, 0x1
+ createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, -48, 24, 0, 0, 10, 1, ANIM_FOOT_1, 1
delay 2
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
delay 8
- createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xfffa, 0x12, 0x0, 0x0, 0xa, 0x1, ANIM_CHOP, 0x1
+ createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, -6, 18, 0, 0, 10, 1, ANIM_CHOP, 1
delay 2
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
delay 8
- createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x10, 0x0, 0x0, 0xa, 0x1, ANIM_FIST_1, 0x1
+ createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, -64, 16, 0, 0, 10, 1, ANIM_FIST_1, 1
delay 2
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
delay 8
- createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x15, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_2, 0x1
+ createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, -48, 21, 0, 0, 10, 1, ANIM_FOOT_2, 1
delay 2
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
delay 8
- createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x14, 0x0, 0x0, 0xa, 0x1, ANIM_FIST_1, 0x1
+ createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, -48, 20, 0, 0, 10, 1, ANIM_FIST_1, 1
delay 2
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
delay 8
- createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x17, 0x0, 0x0, 0xa, 0x1, ANIM_CHOP, 0x1
+ createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, -32, 23, 0, 0, 10, 1, ANIM_CHOP, 1
delay 2
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
delay 8
- createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x11, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_1, 0x1
+ createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, -64, 17, 0, 0, 10, 1, ANIM_FOOT_1, 1
delay 2
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
delay 8
- createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffb0, 0x10, 0x0, 0x0, 0xa, 0x1, ANIM_FOOT_2, 0x1
+ createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, -80, 16, 0, 0, 10, 1, ANIM_FOOT_2, 1
delay 2
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
delay 8
- createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x15, 0x0, 0x0, 0xa, 0x1, ANIM_CHOP, 0x1
+ createsprite gAllOutPummelingOnslaughtSpriteTemplate, ANIM_ATTACKER, 2, -96, 21, 0, 0, 10, 1, ANIM_CHOP, 1
delay 2
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=1
@@ -30138,28 +30138,28 @@ gBattleAnimMove_AllOutPummeling::
createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -24, 8, 23, 10, 40, 10
delay 35
invisible ANIM_ATTACKER
- createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0
+ createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
delay 12
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -48, 0, 0, 4
waitforvisualfinish
delay 48
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x7
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 7
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 5
waitforvisualfinish
delay 16
blendoff
clearmonbg ANIM_DEF_PARTNER
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
call UnsetPsychicBg
end
gBattleAnimMove_SupersonicSkystrike::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
monbg ANIM_DEF_PARTNER
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK
@@ -30173,37 +30173,37 @@ gBattleAnimMove_SupersonicSkystrike::
delay 32
delay 10
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
delay 2
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 12, 4, -16, 18
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16, 4, -10, 18
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 14, 4, -18, 18
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 12, 4, -16, 18
delay 48
- createvisualtask AnimTask_DoomDesireLightBeam, 0x5
+ createvisualtask AnimTask_DoomDesireLightBeam, 5
delay 9
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
delay 9
- playsewithpan SE_M_MORNING_SUN, 0x0
+ playsewithpan SE_M_MORNING_SUN, 0
delay 9
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_TARGET
delay 25
fadetobg BG_SKY
waitbgfadeout
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 0x1 SupersonicSkystrikeOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 1 SupersonicSkystrikeOnPlayer
SupersonicSkystrikeOnOpponent:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xf800, 0x800, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, -2048, 2048, 0, -1
goto FinishSupersonicSkystrike
SupersonicSkystrikeOnPlayer:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x800, 0xf800, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 2048, -2048, 0, -1
FinishSupersonicSkystrike:
waitbgfadein
waitforvisualfinish
monbg ANIM_DEF_PARTNER
setalpha 12, 8
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER
- createsprite gSupersonicSkystrikeFlySpriteTemplate, ANIM_ATTACKER, 2, 0x14
+ createsprite gSupersonicSkystrikeFlySpriteTemplate, ANIM_ATTACKER, 2, 20
delay 16
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=0
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
@@ -30219,8 +30219,8 @@ FinishSupersonicSkystrike:
delay 48
clearmonbg ANIM_DEF_PARTNER
blendoff
- createvisualtask AnimTask_AllBattlersVisible, 0xA
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10
+ createvisualtask AnimTask_AllBattlersVisible, 10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16
call UnsetPsychicBg
waitforvisualfinish
end
@@ -30229,37 +30229,37 @@ FinishSupersonicSkystrike:
gBattleAnimMove_AcidDownpour::
fadetobg BG_POISON
waitbgfadeout
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 0x1 AcidDownpourOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 1 AcidDownpourOnPlayer
AcidDownpourOnOpponent:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xff10, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -240, 1, -1
goto FinishAcidDownpour
AcidDownpourOnPlayer:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xf0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, 240, 1, -1
FinishAcidDownpour:
waitbgfadein
setalpha 12, 8
monbg ANIM_ATTACKER
- loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 0xd, 0x6
+ loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 50, 1
call AcidDownpourFlareOnAttacker
call AcidDownpourFlareOnAttacker
call AcidDownpourFlareOnAttacker
delay 5
clearmonbg ANIM_ATTACKER
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
blendoff
delay 32
- loopsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET, 0xd, 0x3
- createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x0
- createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x2a
- createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x54
- createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x7e
- createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0xa8
- createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0xd2
+ loopsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET, 13, 3
+ createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 26, 0
+ createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 26, 42
+ createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 26, 84
+ createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 26, 126
+ createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 26, 168
+ createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 26, 210
delay 32
- panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
+ panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
create_surf_wave palette=ANIM_SURF_PAL_SLUDGE_WAVE
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, (RGB(28, 3, 22) | RGB_ALPHA)
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 50, 1
@@ -30271,56 +30271,56 @@ FinishAcidDownpour:
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 7, 0, (RGB(28, 3, 22) | RGB_ALPHA)
invisible ANIM_TARGET
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16
restorebg
waitbgfadeout
- setarg 0x7 0xffff
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ setarg 7, -1
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitbgfadein
waitforvisualfinish
end
AcidDownpourFlare:
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_TARGET
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_TARGET
delay 2
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_TARGET
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_TARGET
delay 2
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_TARGET
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_TARGET
delay 2
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_TARGET
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_TARGET
delay 2
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_TARGET
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_TARGET
delay 2
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_TARGET
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_TARGET
delay 2
return
AcidDownpourFlareOnAttacker:
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER
delay 2
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER
delay 2
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER
delay 2
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER
delay 2
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER
delay 2
- createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gAcidDownpourAuraSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER
delay 2
return
gBattleAnimMove_TectonicRage::
- createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0x0, 0x0, 0xb4
- createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0x0, 0x1, 0xb4
+ createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 180
+ createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 1, 180
monbg_static ANIM_ATTACKER
delay 1
- createvisualtask AnimTask_DigDownMovement, 0x2, 0x0
+ createvisualtask AnimTask_DigDownMovement, 2, 0
delay 6
call DigThrowDirt
call DigThrowDirt
call DigThrowDirt
call DigThrowDirt
- createvisualtask AnimTask_TectonicRageRollout, 0x2
+ createvisualtask AnimTask_TectonicRageRollout, 2
call DigThrowDirt
setalpha 12, 8
delay 32
@@ -30332,14 +30332,14 @@ gBattleAnimMove_TectonicRage::
delay 10
waitforvisualfinish
clearmonbg ANIM_TARGET
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
invisible ANIM_TARGET
delay 5
invisible ANIM_ATTACKER
waitforvisualfinish
delay 10
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16
fadetobg BG_TECTONIC_RAGE @ brown/yellow sky uppercut
unloadspritegfx ANIM_TAG_DIRT_MOUND @ dig
unloadspritepal ANIM_TAG_DIRT_MOUND @ dig
@@ -30351,80 +30351,80 @@ gBattleAnimMove_TectonicRage::
unloadspritepal ANIM_TAG_IMPACT @ hit
waitbgfadeout
visible ANIM_TARGET
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xf800, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -2048, 0, -1
waitbgfadein
playsewithpan SE_FALL, SOUND_PAN_ATTACKER @;Falling sound
delay 30
- createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0xc8, 0xffe0, 0x0, 0x64, 0x0
- createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0x1e, 0xffe0, 0x10, 0x5a, 0x1
- createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0x96, 0xffe0, 0x20, 0x3c, 0x2
- createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0x5a, 0xffe0, 0x30, 0x50, 0x3
- createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0x6e, 0xffe0, 0x40, 0x32, 0x0
- createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 0x3c, 0xffe0, 0x50, 0x46, 0x1
+ createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 200, -32, 0, 100, 0
+ createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 30, -32, 16, 90, 1
+ createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 150, -32, 32, 60, 2
+ createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 90, -32, 48, 80, 3
+ createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 110, -32, 64, 50, 0
+ createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 60, -32, 80, 70, 1
delay 22
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 8, 60
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 8, 60
- loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 0x10, 0xc
+ loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 16, 12
delay 48
call TectonicRageExplosion
playsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -20, -10, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0, -16, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 20, -10, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 32, 0, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 20, 10, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -20, 10, 24, 0, 0, 0
call TectonicRageExplosion
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffd8, 0xffec, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffe0, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x28, 0xffec, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x40, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x28, 0x14, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x18, 0x0, 0x0, 0x0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -64, 0, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, -40, -20, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0, -32, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 40, -20, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 64, 0, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 40, 20, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -40, 20, 24, 0, 0, 0
call TectonicRageExplosion
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffc4, 0xffe2, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffd0, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x3c, 0xffe2, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x60, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x3c, 0x1e, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x30, 0x18, 0x0, 0x0, 0x0
- createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc4, 0x1e, 0x18, 0x0, 0x0, 0x0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -96, 0, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, -60, -30, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0, -48, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 60, -30, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 96, 0, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0, 48, 24, 0, 0, 0
+ createsprite gTectonicRageBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -60, 30, 24, 0, 0, 0
call TectonicRageExplosion
waitforvisualfinish
call UnsetPsychicBg
waitbgfadein
clearmonbg_static ANIM_ATTACKER
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
TectonicRageExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gTectonicRageExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
delay 6
return
gBattleAnimMove_ContinentalCrush::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
call ContinentalCrashBuffEffect
@@ -30437,16 +30437,16 @@ gBattleAnimMove_ContinentalCrush::
delay 4
delay 10
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
delay 2
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 12, 4, -16, 18
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16, 4, -10, 18
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 14, 4, -18, 18
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 1, 12, 4, -16, 18
delay 48
- createvisualtask AnimTask_GetTimeOfDay, 0x2
- jumpargeq 0x0 0x0 ContinentalCrushDay
- jumpargeq 0x0 0x2 ContinentalCrushAfternoon
+ createvisualtask AnimTask_GetTimeOfDay, 2
+ jumpargeq 0 0 ContinentalCrushDay
+ jumpargeq 0 2 ContinentalCrushAfternoon
ContinentalCrushNight:
fadetobg BG_ROCK_FIELD_NIGHT
goto FinishContinentalCrush
@@ -30468,7 +30468,7 @@ FinishContinentalCrush:
call ContinentalCrushStockpileRocks
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
call ContinentalCrushStockpileRocks
- createsprite gContinentalCrushGrowingRockSpriteTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gContinentalCrushGrowingRockSpriteTemplate, ANIM_ATTACKER, 2, 0
blend_color_cycle selector=F_PAL_ATTACKER, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB(19, 14, 11)
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
@@ -30480,16 +30480,16 @@ FinishContinentalCrush:
fadetobg BG_IN_AIR
waitbgfadeout
visible ANIM_TARGET
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xf800, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -2048, 0, -1
waitbgfadein
- loopsewithpan SE_FALL, SOUND_PAN_ATTACKER, 0x20, 0x4 @;Falling sound
+ loopsewithpan SE_FALL, SOUND_PAN_ATTACKER, 32, 4 @;Falling sound
delay 30
- createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0xc8, 0xffe0, 0x0, 0x64, 0x0
- createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0x1e, 0xffe0, 0x10, 0x5a, 0x1
- createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0x96, 0xffe0, 0x20, 0x3c, 0x2
- createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0x5a, 0xffe0, 0x30, 0x50, 0x3
- createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0x6e, 0xffe0, 0x40, 0x32, 0x0
- createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 0x3c, 0xffe0, 0x50, 0x46, 0x1
+ createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 200, -32, 0, 100, 0
+ createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 30, -32, 16, 90, 1
+ createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 150, -32, 32, 60, 2
+ createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 90, -32, 48, 80, 3
+ createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 110, -32, 64, 50, 0
+ createsprite gContinentalCrushEruptionSpriteTemplate, ANIM_ATTACKER, 40, 60, -32, 80, 70, 1
delay 22
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 8, 28
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 8, 28
@@ -30502,7 +30502,7 @@ FinishContinentalCrush:
unloadspritegfx ANIM_TAG_IMPACT @ hit
unloadspritepal ANIM_TAG_IMPACT @ hit
delay 48
- createsprite gContinentalCrushBigRockStompSpriteTemplate, ANIM_TARGET, 2, 0, 0x3c, 3, ANIM_TARGET
+ createsprite gContinentalCrushBigRockStompSpriteTemplate, ANIM_TARGET, 2, 0, 60, 3, ANIM_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_BLACK
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
@@ -30519,62 +30519,62 @@ FinishContinentalCrush:
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 7, 0, RGB_BLACK @undo pal change on tgt
delay 16
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16
waitforvisualfinish
restorebg
waitbgfadeout
- setarg 0x7 0xffff
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ setarg 7, -1
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitbgfadein
delay 4
waitforvisualfinish
end
ContinentalCrashBuffEffect:
- createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gContinentalCrushFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
ContinentalCrushStockpileRocks:
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x0, 0xffc0, 0x20 @ 0,-32
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 0, -64, 32 @ 0,-32
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x2c, 0xffd4, 0x20 @ +44,-44
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 44, -44, 32 @ +44,-44
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x3c, 0x0, 0x20 @ +60,0
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 60, 0, 32 @ +60,0
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x28, 0x28, 0x20 @ +40,+40
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 40, 40, 32 @ +40,+40
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x0, 0x38, 0x20 @ +0,+56
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 0, 56, 32 @ +0,+56
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0xffda, 0x26, 0x20 @ -38,+38
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, -38, 38, 32 @ -38,+38
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0xffca, 0x0, 0x20 @ -54, +0
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, -54, 0, 32 @ -54, +0
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0xffdc, 0xffdc, 0x20 @ -36, -36
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, -36, -36, 32 @ -36, -36
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x0, 0xffce, 0x20 @ 0, -50
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 0, -50, 32 @ 0, -50
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x22, 0xffde, 0x20 @ +34, -34
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 34, -34, 32 @ +34, -34
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x2e, 0x0, 0x20 @ +46, +0
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 46, 0, 32 @ +46, +0
delay 2
- createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x20, 0x20, 0x20 @ +32, +32
+ createsprite gContinentalCrushNeedleArmSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 32, 32, 32 @ +32, +32
delay 2
return
gBattleAnimMove_SavageSpinOut::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
monbg ANIM_ATTACKER
setalpha 12, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 4, RGB_BLACK
- createsprite gSavageSpinOutGreenChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gSavageSpinOutGreenChargeSpriteTemplate, ANIM_ATTACKER, 2, 0
delay 25
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
delay 20
@@ -30584,7 +30584,7 @@ gBattleAnimMove_SavageSpinOut::
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 4, 0, RGB_BLACK
clearmonbg ANIM_ATTACKER
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
unloadspritepal ANIM_TAG_CIRCLE_OF_LIGHT
@@ -30603,18 +30603,18 @@ gBattleAnimMove_SavageSpinOut::
delay 1
invisible ANIM_TARGET
delay 0
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
delay 0
- jumpargeq 0x7 ANIM_TARGET SavageSpinOutOnPlayer
+ jumpargeq 7 ANIM_TARGET SavageSpinOutOnPlayer
SavageSpinOutOnOpponent:
- createsprite gSavageSpinOutCacoonSpriteTemplate, ANIM_TARGET, 2, 0x0, ANIM_TARGET, 0x2, 0x0, 0x0, 0x80
+ createsprite gSavageSpinOutCacoonSpriteTemplate, ANIM_TARGET, 2, 0, ANIM_TARGET, 2, 0, 0, 128
goto FinishSavageSpinOut
SavageSpinOutOnPlayer:
- createsprite gSavageSpinOutCacoonSpriteTemplate, ANIM_ATTACKER, 3, 0x0, ANIM_TARGET, 0x2, 0x0, 0x0, 0x80
+ createsprite gSavageSpinOutCacoonSpriteTemplate, ANIM_ATTACKER, 3, 0, ANIM_TARGET, 2, 0, 0, 128
FinishSavageSpinOut:
fadetobg BG_IN_AIR
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x1000, 0x0, 0xffff @+0x1000
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, 4096, 0, -1 @+4096
waitbgfadein
delay 16
call SlowSavageSpinOutBackgroundSpeed
@@ -30628,7 +30628,7 @@ FinishSavageSpinOut:
call SlowSavageSpinOutBackgroundSpeed
call SlowSavageSpinOutBackgroundSpeed
call SlowSavageSpinOutBackgroundSpeed
- call SlowSavageSpinOutBackgroundSpeed @-0x1000
+ call SlowSavageSpinOutBackgroundSpeed @-4096
delay 4
call SavageSpinOutCrash_2 @SeismicToss2
delay 10
@@ -30639,8 +30639,8 @@ FinishSavageSpinOut:
call SavageSpinOutCrash_1 @SeismicToss1
delay 12
call UnsetPsychicBg
- setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles - no idea why though - something to do with the background scrolling
- createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 @ user fly on screen on enemy side
+ setarg 7, 0 @;Clear arg 7 so task works properly in Link battles - no idea why though - something to do with the background scrolling
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2 @ user fly on screen on enemy side
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER
delay 30
unloadspritegfx ANIM_TAG_MUD_SAND
@@ -30649,47 +30649,47 @@ FinishSavageSpinOut:
unloadspritepal ANIM_TAG_IMPACT @hit
createvisualtask AnimTask_ShakeMonInPlace, 130, ANIM_TARGET, 4, 0, 12, 1
createvisualtask AnimTask_ShakeMonInPlace, 130, ANIM_TARGET, 4, 0, 12, 1
- createsprite gSavageSpinOutGreenCutSpriteTemplate, ANIM_TARGET, 2, 0x28, 0xffe0, 0x0
- createsprite gSavageSpinOutGreenCutSpriteTemplate, ANIM_TARGET, 2, 0x28, 0xffd0, 0x0
+ createsprite gSavageSpinOutGreenCutSpriteTemplate, ANIM_TARGET, 2, 40, -32, 0
+ createsprite gSavageSpinOutGreenCutSpriteTemplate, ANIM_TARGET, 2, 40, -48, 0
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
delay 12
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
delay 6
createsprite gSpiderWebSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, FALSE @ spider web
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gSavageSpinOutWhiteExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
delay 6
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
gSavageSpinOutStringBlastSpriteTemplateSHOT:
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
- createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0xe, 0xfff4, 0x0, 0xfff4, 0xf, 0x0, 0x0
- createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0x1a, 0x8, 0xc, 0x8, 0xf, 0x0, 0x0
+ createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 14, -12, 0, -12, 15, 0, 0
+ createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 26, 8, 12, 8, 15, 0, 0
delay 3
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
- createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0xe, 0xfff4, 0x0, 0xfff4, 0xf, 0x1, 0x0
- createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0x1a, 0x8, 0xc, 0x8, 0xf, 0x1, 0x0
+ createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 14, -12, 0, -12, 15, 1, 0
+ createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 26, 8, 12, 8, 15, 1, 0
delay 3
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
- createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0xe, 0xfff4, 0x0, 0xfff4, 0xf, 0x2, 0x0
- createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0x1a, 0x8, 0xc, 0x8, 0xf, 0x2, 0x0
+ createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 14, -12, 0, -12, 15, 2, 0
+ createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 26, 8, 12, 8, 15, 2, 0
delay 3
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
- createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0xe, 0xfff4, 0x0, 0xfff4, 0xf, 0x3, 0x0
- createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 0x1a, 0x8, 0xc, 0x8, 0xf, 0x3, 0x0
+ createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 14, -12, 0, -12, 15, 3, 0
+ createsprite gSavageSpinOutStringBlastSpriteTemplate, ANIM_TARGET, 2, 26, 8, 12, 8, 15, 3, 0
delay 3
return
SavageSpinOutCrash_1:
@@ -30709,13 +30709,13 @@ SavageSpinOutCrash_2:
createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 12, -32, -16, 24
return
SlowSavageSpinOutBackgroundSpeed:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xfd56, 0x0, 0xffff @-0x2aa
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -682, 0, -1 @-682
delay 1
return
gBattleAnimMove_NeverEndingNightmare::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
call NeverendingNightmareBuffEffect
@@ -30754,154 +30754,154 @@ gBattleAnimMove_NeverEndingNightmare::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_VERTICAL_HEX, 2, 10, 10, RGB(10, 0, 22) @;Purple
call NeverendingNightmareGeyser
playsewithpan SE_M_SACRED_FIRE, SOUND_PAN_TARGET
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -20, -10, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0, -16, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 20, -10, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 32, 0, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 20, 10, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -20, 10, 24, 0, 0, 0
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
call NeverendingNightmareGeyser
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffd8, 0xffec, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffe0, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x28, 0xffec, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x40, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x28, 0x14, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x18, 0x0, 0x0, 0x0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -64, 0, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, -40, -20, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0, -32, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 40, -20, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 64, 0, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 40, 20, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -40, 20, 24, 0, 0, 0
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
call NeverendingNightmareGeyser
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffc4, 0xffe2, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffd0, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x3c, 0xffe2, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x60, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x3c, 0x1e, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x30, 0x18, 0x0, 0x0, 0x0
- createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc4, 0x1e, 0x18, 0x0, 0x0, 0x0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -96, 0, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, -60, -30, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0, -48, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 60, -30, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 96, 0, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0, 48, 24, 0, 0, 0
+ createsprite gNeverEndingNightmareBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -60, 30, 24, 0, 0, 0
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
call NeverendingNightmareGeyser
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB(0, 6, 16) @ fade to normal
waitforvisualfinish
restorebg
waitbgfadeout
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
NeverendingNightmareBuffEffect:
- createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gNeverEndingNightmareFocusEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
NeverendingNightmareTargetRings:
- createsprite gNeverEndingNightmareRingTargetSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x100, 0x0
+ createsprite gNeverEndingNightmareRingTargetSpriteTemplate, ANIM_TARGET, 3, 0, 0, 256, 0
delay 8
return
NeverendingNightmareAttackerRings:
- createsprite gNeverEndingNightmareRingAttackerSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gNeverEndingNightmareRingAttackerSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
delay 14
return
NeverendingNightmareHands:
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x0, 0xffc0, 0x20 @ 0,-32
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 0, -64, 32 @ 0,-32
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x2c, 0xffd4, 0x20 @ +44,-44
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 44, -44, 32 @ +44,-44
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x3c, 0x0, 0x20 @ +60,0
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 60, 0, 32 @ +60,0
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x28, 0x28, 0x20 @ +40,+40
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 40, 40, 32 @ +40,+40
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x0, 0x38, 0x20 @ +0,+56
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 0, 56, 32 @ +0,+56
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xffda, 0x26, 0x20 @ -38,+38
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, -38, 38, 32 @ -38,+38
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xffca, 0x0, 0x20 @ -54, +0
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, -54, 0, 32 @ -54, +0
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0xffdc, 0xffdc, 0x20 @ -36, -36
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, -36, -36, 32 @ -36, -36
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x0, 0xffce, 0x20 @ 0, -50
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 0, -50, 32 @ 0, -50
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x22, 0xffde, 0x20 @ +34, -34
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 34, -34, 32 @ +34, -34
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x2e, 0x0, 0x20 @ +46, +0
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 46, 0, 32 @ +46, +0
delay 2
- createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x0, 0x20, 0x20, 0x20 @ +32, +32
+ createsprite gNeverEndingNightmareHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 32, 32, 32 @ +32, +32
delay 2
return
NeverendingNightmareGeyser:
- createsprite gNeverEndingNightmareExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0x0005, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate, ANIM_TARGET, 4, 3, 5, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, -4, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0xfff5, 0xfff1, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, -11, -15, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 4109, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0x0008, 0xfffb, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 8, -5, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 4, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0xfffa, 0x0012, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, -6, 18, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, -16, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0x0000, 0x0005, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0, 5, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, -4, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0x0003, 0xfff5, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 3, -11, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 4109, 16
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0xfff5, 0xffe1, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, -11, -31, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 4, 16
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0x0008, 0xffeb, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 8, -21, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, -16, 16
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0xfffa, 0x0002, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, -6, 2, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, -4, 16
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0x0000, 0xfff5, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0, -11, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 4109, 16
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0x0003, 0xffe5, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 3, -27, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 4, 16
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0xfff5, 0xffd1, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, -11, -47, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, -16, 16
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0x0008, 0xffdb, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 8, -37, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, -4, 16
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0xfffa, 0xfff2, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, -6, -14, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 4109, 16
delay 0
- createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0x0000, 0xffe5, ANIM_TARGET, 0x0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10
+ createsprite gNeverEndingNightmareExplosionSpriteTemplate ANIM_TARGET, 4, 0, -27, ANIM_TARGET, 0
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 4, 16
delay 0
- createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, -16, 16
return
gBattleAnimMove_CorkscrewCrash::
monbg ANIM_ATTACKER
invisible ANIM_TARGET
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 11, RGB(24, 24, 24) @fade atker to gray
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SPIKES, 0, 12, 12, RGB(24, 24, 24) @;Gray
playsewithpan SE_ESCALATOR, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 79, 1
- createsprite gCorkscrewCrashChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gCorkscrewCrashChargeSpriteTemplate, ANIM_ATTACKER, 2, 0
call CorkscrewCrashMetalFlare
call CorkscrewCrashMetalFlare
call CorkscrewCrashMetalFlare
@@ -30913,45 +30913,45 @@ gBattleAnimMove_CorkscrewCrash::
waitforvisualfinish
stopsound
invisible ANIM_ATTACKER
- createsprite gCorkscrewCrashCorkscrewFlyUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x4e0, 0x24, 0x15, 0x1, ANIM_ATTACKER
+ createsprite gCorkscrewCrashCorkscrewFlyUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1248, 36, 21, 1, ANIM_ATTACKER
playsewithpan SE_ESCALATOR, SOUND_PAN_ATTACKER
fadetobg BG_HIGHSPEED_OPPONENT
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xf700, 0x0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1
waitbgfadein
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET CorkscrewCrashOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET CorkscrewCrashOnPlayer
CorkscrewCrashOnOpponent:
- createsprite gCorkscrewCrashRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x88, 0x100, 0x38, 0x15
+ createsprite gCorkscrewCrashRightUpSpriteTemplate, ANIM_ATTACKER, 50, -16, 136, 256, 56, 21
waitforvisualfinish
delay 10
- createsprite gCorkscrewCrashLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x38, 0xfff0, 0x38, 0x15
+ createsprite gCorkscrewCrashLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 288, 56, -16, 56, 21
waitforvisualfinish
visible ANIM_TARGET
delay 5
goto FinishCorkscrewCrash
CorkscrewCrashOnPlayer:
- createsprite gCorkscrewCrashLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x08, 0xfff0, 0x0f, 0x15
+ createsprite gCorkscrewCrashLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 288, 8, -16, 15, 21
waitforvisualfinish
delay 10
- createsprite gCorkscrewCrashRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x38, 0x100, 0x38, 0x15
+ createsprite gCorkscrewCrashRightDownSpriteTemplate, ANIM_ATTACKER, 50, -16, 56, 256, 56, 21
waitforvisualfinish
visible ANIM_TARGET
delay 5
FinishCorkscrewCrash:
- createsprite gCorkscrewCrashStrikeSpriteTemplate, ANIM_TARGET, 2, 0x14
+ createsprite gCorkscrewCrashStrikeSpriteTemplate, ANIM_TARGET, 2, 20
delay 16
stopsound
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
create_basic_hitsplat_sprite ANIM_TARGET, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=0
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -256, 15, 0, 4 @ shove target down a bit
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
- createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xffc0, 0x0f
+ createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0, -64, 15
delay 15
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 2, 48
- createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfffe, 0x03
+ createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0, -2, 3
call CorkscrewCrashSpinningWind
call CorkscrewCrashSprayRocks
delay 6
@@ -30961,7 +30961,7 @@ FinishCorkscrewCrash:
delay 6
call CorkscrewCrashSprayRocks
delay 0
- createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfffe, 0x03
+ createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0, -2, 3
delay 6
call CorkscrewCrashSprayRocks
delay 6
@@ -30969,7 +30969,7 @@ FinishCorkscrewCrash:
delay 6
call CorkscrewCrashSprayRocks
delay 1
- createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xfffe, 0x03
+ createsprite gCorkscrewCrashCorkscrewFlyDownSpriteTemplate, ANIM_TARGET, 3, 0, -2, 3
delay 4
call CorkscrewCrashSprayRocks
delay 6
@@ -30983,25 +30983,25 @@ FinishCorkscrewCrash:
waitforvisualfinish
end
CorkscrewCrashSpinningWind:
- createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0xfff8, 0x1, 0x2c, 0x0
- createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x1, 0x3c, 0x1
- createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x8, 0x1, 0x3c, 0x2
- createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x10, 0x1, 0x3c, 0x3
- createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x18, 0x1, 0x3c, 0x4
- createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x20, 0x1, 0x3c, 0x0
+ createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0, -8, 1, 44, 0
+ createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 60, 1
+ createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0, 8, 1, 60, 2
+ createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0, 16, 1, 60, 3
+ createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0, 24, 1, 60, 4
+ createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 3, 0, 32, 1, 60, 0
return
CorkscrewCrashMetalFlare:
- createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER
delay 2
- createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER
delay 2
- createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER
delay 2
- createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER
delay 2
- createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER
delay 2
- createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gCorkscrewCrashMetalBitSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER
delay 2
return
CorkscrewCrashSprayRocks:
@@ -31015,24 +31015,24 @@ CorkscrewCrashSprayRocks:
gBattleAnimMove_InfernoOverdrive::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_CIRCLE_OF_LIGHT, 0, 10, 10, RGB_RED
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
fadetobg BG_INFERNO_OVERDRIVE
waitbgfadeout
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET InfernoOverdriveOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET InfernoOverdriveOnPlayer
InfernoOverdriveOnOpponent:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xfb00, 0x0, 0x0, 0xFFFF
+ createvisualtask AnimTask_StartSlidingBg, 5, -1280, 0, 0, -1
goto FinishInfernoOverdrive
InfernoOverdriveOnPlayer:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0500, 0x0, 0x0, 0xFFFF
+ createvisualtask AnimTask_StartSlidingBg, 5, 1280, 0, 0, -1
FinishInfernoOverdrive:
waitbgfadein
monbg ANIM_ATTACKER
setalpha 12, 8
- loopsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_ATTACKER, 0x13, 0x8
+ loopsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_ATTACKER, 19, 8
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 79, 1
- createsprite gInfernoOverdriveChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0
+ createsprite gInfernoOverdriveChargeSpriteTemplate, ANIM_ATTACKER, 2, 0
call InfernoOverdriveFireSpin
call InfernoOverdriveFireSpin
call InfernoOverdriveFireSpin
@@ -31045,7 +31045,7 @@ FinishInfernoOverdrive:
unloadspritegfx ANIM_TAG_SMALL_EMBER @fire
unloadspritepal ANIM_TAG_SMALL_EMBER @fire
clearmonbg ANIM_ATTACKER
- createsprite gInfernoOverdriveSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0x0 @ super power shot
+ createsprite gInfernoOverdriveSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0 @ super power shot
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER
delay 16
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 8, 0, 16, 1
@@ -31062,74 +31062,74 @@ FinishInfernoOverdrive:
blendoff
end
InfernoOverdriveFireSpin:
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER
delay 2
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER
delay 2
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER
delay 2
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER
delay 2
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER
delay 2
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER
delay 2
return
InfernoOverdriveExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, ANIM_TARGET, 1
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_TARGET, 1
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gInfernoOverdriveExplosionSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
return
gBattleAnimMove_HydroVortex::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
create_surf_wave palette=ANIM_SURF_PAL_SURF
delay 24
- panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
+ panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
waitforvisualfinish
playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER
- createsprite gDiveBallSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gDiveBallSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
waitforvisualfinish
playsewithpan SE_M_DIVE, SOUND_PAN_ATTACKER
- createsprite gDiveWaterSplashSpriteTemplate, ANIM_ATTACKER, 3, 0x0
+ createsprite gDiveWaterSplashSpriteTemplate, ANIM_ATTACKER, 3, 0
call DiveSetUpWaterDroplets
call DiveSetUpWaterDroplets
call DiveSetUpWaterDroplets
@@ -31139,14 +31139,14 @@ gBattleAnimMove_HydroVortex::
delay 26
invisible ANIM_TARGET
waitforvisualfinish
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x7
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 7
delay 5
fadetobg BG_WATER_PULSE
waitbgfadeout
delay 5
visible ANIM_ATTACKER
visible ANIM_TARGET
- loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 0x14, 0x3
+ loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 20, 3
call HydroVortexBubbles
playsewithpan SE_M_WATERFALL, SOUND_PAN_ATTACKER
blend_color_cycle selector=F_PAL_ATTACKER, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB(0, 13, 23)
@@ -31156,11 +31156,11 @@ gBattleAnimMove_HydroVortex::
unloadspritepal ANIM_TAG_SPLASH
unloadspritegfx ANIM_TAG_SWEAT_BEAD
unloadspritepal ANIM_TAG_SWEAT_BEAD
- createsprite gHydroVortexSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0x0
+ createsprite gHydroVortexSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
invisible ANIM_ATTACKER
delay 16
- createsprite gHydroVortexImpactSpriteTemplate, ANIM_TARGET, 3, 0xa, 0xfff8, 0x1, 0x1
+ createsprite gHydroVortexImpactSpriteTemplate, ANIM_TARGET, 3, 10, -8, 1, 1
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB(0, 13, 23)
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 8, 60
@@ -31173,83 +31173,83 @@ gBattleAnimMove_HydroVortex::
waitforvisualfinish
restorebg
waitbgfadeout
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
HydroVortexBubbles:
- createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0xa, 0xa, 0x14, ANIM_ATTACKER
- createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 0xa, 0xa, 0x14, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 20, ANIM_ATTACKER
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 10, 10, 20, ANIM_TARGET
delay 4
- createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0x14, 0xffec, 0x14, ANIM_ATTACKER
- createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 0x14, 0xffec, 0x14, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 20, ANIM_ATTACKER
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_TARGET, 2, 20, -20, 20, ANIM_TARGET
delay 4
- createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0xf, 0x14, ANIM_ATTACKER
- createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0xfff1, 0xf, 0x14, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 15, 20, ANIM_ATTACKER
+ createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, -15, 15, 20, ANIM_TARGET
delay 4
- createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, ANIM_ATTACKER
- createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0x0, 0x0, 0x14, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, ANIM_ATTACKER
+ createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0, 0, 20, ANIM_TARGET
delay 4
- createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0xfff6, 0xffec, 0x14, ANIM_ATTACKER
- createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0xfff6, 0xffec, 0x14, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, -20, 20, ANIM_ATTACKER
+ createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, -10, -20, 20, ANIM_TARGET
delay 4
- createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0xfff8, 0x14, ANIM_ATTACKER
- createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0x10, 0xfff8, 0x14, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 20, ANIM_ATTACKER
+ createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 16, -8, 20, ANIM_TARGET
delay 4
- createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0x5, 0x8, 0x14, ANIM_ATTACKER
- createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0x5, 0x8, 0x14, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 5, 8, 20, ANIM_ATTACKER
+ createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 5, 8, 20, ANIM_TARGET
delay 4
- createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0xfff0, 0x0, 0x14, ANIM_ATTACKER
- createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, 0xfff0, 0x0, 0x14, ANIM_TARGET
+ createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 20, ANIM_ATTACKER
+ createsprite gSmallBubblePairSpriteTemplate ANIM_TARGET, 2, -16, 0, 20, ANIM_TARGET
return
HydroVortexWhirlpoolHurricane:
playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET
- createsprite gHydroVortexHurricaneSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff0
- createsprite gHydroVortexImpactSpriteTemplate, ANIM_TARGET, 3, 0xfff6, 0xfff8, 0x1, 0x1
- createvisualtask AnimTask_AnimateGustTornadoPalette, 0x5, 0x1, 0x46
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, 0x1
+ createsprite gHydroVortexHurricaneSpriteTemplate, ANIM_TARGET, 2, 0, -16
+ createsprite gHydroVortexImpactSpriteTemplate, ANIM_TARGET, 3, -10, -8, 1, 1
+ createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, 1
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, 0x1
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, 1
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, 0x1
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, 1
delay 2
- createsprite gHydroVortexImpactSpriteTemplate, ANIM_TARGET, 3, 0xa, 0xfff8, 0x1, 0x1
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, 0x1
+ createsprite gHydroVortexImpactSpriteTemplate, ANIM_TARGET, 3, 10, -8, 1, 1
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, 1
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, 0x1
- createsprite gHydroVortexHurricaneSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff0
- createvisualtask AnimTask_AnimateGustTornadoPalette, 0x5, 0x1, 0x46
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, 1
+ createsprite gHydroVortexHurricaneSpriteTemplate, ANIM_TARGET, 2, 0, -16
+ createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, 0x1
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, 1
delay 2
return
gBattleAnimMove_BloomDoom::
monbg ANIM_ATTACKER
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
setalpha 12, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 4, RGB_BLACK
- loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 0x9, 0x3
- createsprite gBloomDoomGreenChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0
+ loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 9, 3
+ createsprite gBloomDoomGreenChargeSpriteTemplate, ANIM_ATTACKER, 2, 0
delay 60
blendoff
- createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x0
+ createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER
delay 2
- createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x4
+ createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 4
delay 2
- createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x8
+ createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 8
playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER
delay 2
- createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0xc
+ createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 12
delay 2
- createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x10
+ createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 16
playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER
delay 2
- createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x14
+ createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 20
delay 2
- createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x38, 0x18
+ createsprite gBloomDoomPetalSpinSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 24
playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 4, 0, RGB_BLACK
@@ -31283,11 +31283,11 @@ gBattleAnimMove_BloomDoom::
fadetobg BG_BLOOM_DOOM
waitbgfadein
delay 5
- createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x18, 0x10, 0x0, 0x2, 0x2, 0x0, 0x0
- createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 0x40, 0x18, 0x0, 0x3, 0x1, 0x1, 0x0
- createsprite gAromatherapyBigFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x10, 0x18, 0x0, 0x2, 0x1, 0x0, 0x0
+ createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 24, 16, 0, 2, 2, 0, 0
+ createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 64, 24, 0, 3, 1, 1, 0
+ createsprite gAromatherapyBigFlowerSpriteTemplate, ANIM_ATTACKER, 0, 16, 24, 0, 2, 1, 0, 0
delay 5
- createsoundtask SoundTask_LoopSEAdjustPanning, 0xf0, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5
+ createsoundtask SoundTask_LoopSEAdjustPanning, 240, -64, SOUND_PAN_TARGET, 1, 15, 0, 5
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 50, 1 @ shake attacker
call BloomDoomHyperBeam
call BloomDoomHyperBeam
@@ -31307,9 +31307,9 @@ gBattleAnimMove_BloomDoom::
call BloomDoomHyperBeam
call BloomDoomHyperBeam
call BloomDoomHyperBeam
- createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 0x30, 0xc, 0x0, 0x4, 0x3, 0x1, 0x0
- createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x64, 0x10, 0x0, 0x3, 0x2, 0x0, 0x0
- createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x4a, 0x18, 0xb4, 0x3, 0x2, 0x0, 0x0
+ createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 48, 12, 0, 4, 3, 1, 0
+ createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 100, 16, 0, 3, 2, 0, 0
+ createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 74, 24, 180, 3, 2, 0, 0
call BloomDoomHyperBeam
call BloomDoomHyperBeam
call BloomDoomHyperBeam
@@ -31320,16 +31320,16 @@ gBattleAnimMove_BloomDoom::
call BloomDoomHyperBeam
call BloomDoomHyperBeam
call BloomDoomHyperBeam
- createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 0x50, 0x1e, 0x0, 0x4, 0x1, 0x1, 0x0
- createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x80, 0xc, 0x0, 0x3, 0x3, 0x0, 0x0
- createsprite gAromatherapyBigFlowerSpriteTemplate, ANIM_ATTACKER, 0, 0x5a, 0x10, 0x0, 0x2, 0x1, 0x0, 0x0
+ createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 66, 80, 30, 0, 4, 1, 1, 0
+ createsprite gAromatherapySmallFlowerSpriteTemplate, ANIM_ATTACKER, 0, 128, 12, 0, 3, 3, 0, 0
+ createsprite gAromatherapyBigFlowerSpriteTemplate, ANIM_ATTACKER, 0, 90, 16, 0, 2, 1, 0, 0
delay 5
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 11, 0, RGB(13, 31, 12)
call BloomDoomPetalBlast
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 16, RGB(13, 31, 12)
call BloomDoomPetalBlast
- createvisualtask AnimTask_IsTargetPartner, 0x5
- jumpargeq 0x0 0x1 BloomDoomFadeScreenTargetPartner
+ createvisualtask AnimTask_IsTargetPartner, 5
+ jumpargeq 0 1 BloomDoomFadeScreenTargetPartner
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ALL_BUT_DEF), 1, 0, 16, RGB(13, 31, 12) @ green bg pal
BloomDoomEnding:
call BloomDoomPetalBlast
@@ -31341,17 +31341,17 @@ BloomDoomFadeScreenTargetPartner:
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ALL_BUT_ATK_PARTNER), 1, 0, 16, RGB(13, 31, 12) @ green bg pal
goto BloomDoomEnding
BloomDoomHurricane:
- createsprite gBloomDoomHurricaneSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
- createvisualtask AnimTask_AnimateGustTornadoPalette, 0x5, 0x1, 0x46
+ createsprite gBloomDoomHurricaneSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
+ createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70
return
BloomDoomFlowerGeyser:
- createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xfffc, 0x10 @ -4, -0x10
+ createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -4, 16 @ -4, -16
delay 0
- createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x100D, 0x10
+ createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 4109, 16
delay 0
- createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x4, 0x10
+ createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 4, 16
delay 0
- createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0xfff0, 0x10
+ createsprite gBloomDoomFlowerGeyserSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -16, 16
delay 0
return
BloomDoomHyperBeam:
@@ -31361,49 +31361,49 @@ BloomDoomHyperBeam:
return
BloomDoomPetalBlast:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gBloomDoomExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe0, 0x10
+ createsprite gBloomDoomExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, 0, -32, 16
delay 2
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x16, 0xffea, 0x10
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, 22, -22, 16
delay 2
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x1e, 0x0, 0x10
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, 30, 0, 16
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gBloomDoomExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x14, 0x14, 0x10
+ createsprite gBloomDoomExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, 20, 20, 16
delay 2
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x1c, 0x10
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, 0, 28, 16
delay 2
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffed, 0x13, 0x10
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, -19, 19, 16
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gBloomDoomExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffe5, 0x0, 0x10
+ createsprite gBloomDoomExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, -27, 0, 16
delay 2
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0xffee, 0xffee, 0x10
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, -18, -18, 16
delay 2
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0xffe7, 0x10
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, 0, -25, 16
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gBloomDoomExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x11, 0xffef, 0x10
+ createsprite gBloomDoomExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, ANIM_TARGET, 1
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, 17, -17, 16
delay 2
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x17, 0x0, 0x10
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, 23, 0, 16
delay 2
- createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 0x1, 0x0, 0x10, 0x10, 0x10
+ createsprite gBloomDoomPetalStarSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, 16, 16
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gBloomDoomExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gBloomDoomExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_TARGET, 1
delay 2
return
ResetFromGreenScreen:
- createvisualtask AnimTask_AllBattlersInvisible, 0xA
+ createvisualtask AnimTask_AllBattlersInvisible, 10
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 0, RGB(13, 31, 12) @Everything from green
restorebg
waitbgfadeout
- setarg 0x7 0xffff
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ setarg 7, -1
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitbgfadein
waitforvisualfinish
delay 5
@@ -31413,118 +31413,118 @@ ResetFromGreenScreen:
gBattleAnimMove_GigavoltHavoc::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 6, 0, 16, RGB_BLACK
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
createsprite gGigavoltHavocChargingSpearSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 0x18, 190, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 0x18, 22, 12, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 0x18, 121, 13, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1
delay 10
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
delay 0
delay 5
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
delay 5
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x20, 0x14, 0x0, 0x0
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x60, 0x14, 0x1, 0x0
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0xa0, 0x14, 0x0, 0x0
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0xe0, 0x14, 0x2, 0x0
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 32, 20, 0, 0
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 96, 20, 1, 0
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 160, 20, 0, 0
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0
delay 5
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 0x18, 60, 10, ANIM_ATTACKER, 1, 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 0x18, 42, 11, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1
delay 0
- createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 0x18, 165, 10, ANIM_ATTACKER, 1, 1
+ createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
monbg ANIM_ATTACKER
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
@ createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 @charge particles to user
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x10, 0x2c, 0x20, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x10, 0x2c, 0x60, 0x28, 0x1, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x10, 0x2c, 0xa0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x10, 0x2c, 0xe0, 0x28, 0x2, 0x3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 16, 44, 32, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 16, 44, 96, 40, 1, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 16, 44, 160, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 16, 44, 224, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x12, 0x2c, 0x0, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x12, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x12, 0x2c, 0x80, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x12, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 18, 44, 0, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 18, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 18, 44, 128, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 18, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x14, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x14, 0x2c, 0x40, 0x28, 0x1, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x14, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x14, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 20, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 20, 44, 64, 40, 1, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 20, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 20, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
waitforvisualfinish
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
- createsprite gGigavoltHavocLaunchSpearSpriteTemplate, ANIM_TARGET, 3, 0x0
- createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x10
+ createsprite gGigavoltHavocLaunchSpearSpriteTemplate, ANIM_TARGET, 3, 0
+ createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 16
delay 2
- createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0, 0xfff0
+ createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16
delay 14
clearmonbg ANIM_ATTACKER
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 8, 28 @shake target
unloadspritegfx ANIM_TAG_HAVOC_SPEAR
unloadspritepal ANIM_TAG_HAVOC_SPEAR
- createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 0x2c, 0x0, 0x0, 0x3
+ createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 44, 0, 0, 3
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 12, RGB(31, 31, 22)
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x20, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x20, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x20, 0x2c, 0x80, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x20, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x10, 0x2c, 0x20, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x10, 0x2c, 0x60, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x10, 0x2c, 0xa0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x10, 0x2c, 0xe0, 0x28, 0x2, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 32, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 32, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 32, 44, 128, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 32, 44, SOUND_PAN_ATTACKER, 40, 2, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 32, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 96, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 160, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 224, 40, 2, -32765
playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET
delay 25
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET
@@ -31553,60 +31553,60 @@ gBattleAnimMove_GigavoltHavoc::
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 0, RGB_BLACK
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersVisible, 0xa
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
HavocSpearGeyser:
- createsprite gGigavoltHavocGeyserSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10 @ -4, -0x10
+ createsprite gGigavoltHavocGeyserSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, -4, 16 @ -4, -16
delay 1
- createsprite gGigavoltHavocGeyserSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10 @
+ createsprite gGigavoltHavocGeyserSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 4109, 16 @
delay 1
- createsprite gGigavoltHavocGeyserSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10
+ createsprite gGigavoltHavocGeyserSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 4, 16
delay 1
- createsprite gGigavoltHavocGeyserSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gGigavoltHavocGeyserSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, -16, 16
delay 1
return
HavocSpearSparkTarget:
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x20, 0xc, 0x0, 0x14, 0x0, 0x8000
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x0, 0x14, 0x0, 0x8000
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x20, 0xc, 0x40, 0x14, 0x1, 0x8000
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x40, 0x14, 0x1, 0x8000
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x20, 0xc, 0x80, 0x14, 0x0, 0x8000
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, 0x80, 0x14, 0x0, 0x8000
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x20, 0xc, SOUND_PAN_ATTACKER, 0x14, 0x2, 0x8000
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x0, 0x10, 0xc, SOUND_PAN_ATTACKER, 0x14, 0x2, 0x8000
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 32768
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 0, 20, 0, 32768
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 32768
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 64, 20, 1, 32768
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 128, 20, 0, 32768
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 128, 20, 0, 32768
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, SOUND_PAN_ATTACKER, 20, 2, 32768
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, SOUND_PAN_ATTACKER, 20, 2, 32768
return
gBattleAnimMove_ShatteredPsyche::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, ANIM_ATTACKER, 0, 0, 16, RGB_BLACK
waitforvisualfinish
- createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 0x5, 0x1
+ createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 5, 1
waitforvisualfinish
- createsprite gShatteredPsychePinkChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0
- createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gShatteredPsychePinkChargeSpriteTemplate, ANIM_ATTACKER, 2, 0
+ createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER
delay 12
- createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
delay 12
- createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER
delay 12
- createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
delay 12
- createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER
delay 12
- createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
delay 12
- createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER
delay 12
- createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
delay 12
- createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gShatteredPsycheRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER
delay 4
fadetobg BG_SHATTERED_PSYCHE
@@ -31618,8 +31618,8 @@ gBattleAnimMove_ShatteredPsyche::
createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_TARGET, 1
waitforvisualfinish
ShatteredPsycheCheckBattler:
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET ShatteredPsycheOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET ShatteredPsycheOnPlayer
ShatteredPsycheOnOpponent:
call ShatteredPsycheFlingOpponent
waitforvisualfinish
@@ -31640,141 +31640,141 @@ ShatteredPsycheFinish:
createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 2, 0, 0
createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 3, 0, 0
waitbgfadeout
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
ShatteredPsycheFlingOpponent:
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, 16, 1, 4 @ -26, +16
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0xfff0, 0x1, 0x1 @ 26, -16
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 26, -16, 1, 1 @ 26, -16
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 4
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 26, -16, 1, 4 @ -26,-16
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe6, 0x10, 0x1, 0x1 @ 26, 16
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, -26, 16, 1, 1 @ 26, 16
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 4
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 32, 1, 4 @ 0,32
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xffe0, 0x1, 0x1 @ 0, -32
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0, -32, 1, 1 @ 0, -32
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 4
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, -32, 1, 4 @ 0,-32
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x20, 0x1, 0x1 @ 0, 32
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0, 32, 1, 1 @ 0, 32
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 4
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 26, 16, 1, 4 @ 26,16
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe6, 0xfff0, 0x1, 0x1 @ -26, -16
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, -26, -16, 1, 1 @ -26, -16
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 4
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, -32, 1, 4 @ 26,-16
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0x10, 0x1, 0x1 @ 0, 32
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 26, 16, 1, 1 @ 0, 32
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 5
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, 16, 1, 4 @ -26, +16
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0xfff0, 0x1, 0x1 @ 26, -16
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 26, -16, 1, 1 @ 26, -16
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 4
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 26, -16, 1, 4 @ -26,-16
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe6, 0x10, 0x1, 0x1 @ 26, 16
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, -26, 16, 1, 1 @ 26, 16
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 4
waitforvisualfinish
return
ShatteredPsycheFlingPlayer:
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -26, 16, 1, 4 @ -26,-16
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x1a, 0xfff0, 0x1, 0x1 @ 26, 16
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 26, -16, 1, 1 @ 26, 16
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 4
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 32, 0, 1, 4 @ 32,0
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xffe0, 0x0, 0x1, 0x1 @
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, -32, 0, 1, 1 @
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 4
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -32, 0, 1, 4 @ -32,0
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x0, 0x1, 0x1 @ 32, 0
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 32, 0, 1, 1 @ 32, 0
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 4
waitforvisualfinish
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 10, 32, 1, 4 @ 10, -32
waitforvisualfinish
- createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, 0xfff6, 0x5, 0x1, 0x1 @ 10, -32
+ createsprite gShatteredPsycheReflectHitSpriteTemplate, ANIM_TARGET, 3, -10, 5, 1, 1 @ 10, -32
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
delay 2
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 5
waitforvisualfinish
return
gBattleAnimMove_SubzeroSlammer::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_EXPLOSION_2, 0, 12, 12, RGB(3, 17, 26)
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
fadetobg BG_ICE
waitbgfadeout
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET SubzeroSlammerOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET SubzeroSlammerOnPlayer
SubzeroSlammerOnOpponent:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xfd00, 0x0, 0x0, 0xFFFF
+ createvisualtask AnimTask_StartSlidingBg, 5, -768, 0, 0, -1
goto SubzeroSlammerFinish
SubzeroSlammerOnPlayer:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0300, 0x0, 0x0, 0xFFFF
+ createvisualtask AnimTask_StartSlidingBg, 5, 768, 0, 0, -1
SubzeroSlammerFinish:
waitbgfadein
monbg ANIM_ATK_PARTNER
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 11, RGB(0, 20, 31)
- createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x0
+ createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0, 0, 56, 0
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
delay 2
- createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x4
+ createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0, 0, 56, 4
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
delay 2
- createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x8
+ createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0, 0, 56, 8
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
delay 2
- createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0xc
+ createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0, 0, 56, 12
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
delay 2
- createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x10
+ createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0, 0, 56, 16
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
delay 2
- createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x14
+ createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0, 0, 56, 20
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
delay 2
- createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x38, 0x18
+ createsprite gSubzeroSlammerIceSpinSpriteTemplate, ANIM_TARGET, 3, 0, 0, 56, 24
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
delay 32
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 11, 0, RGB(0, 20, 31)
delay 32
- createvisualtask AnimTask_FrozenIceCubeAttacker, 0x2
- waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 0x11
+ createvisualtask AnimTask_FrozenIceCubeAttacker, 2
+ waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17
waitforvisualfinish
call SubzeroSlammerIceSwirl
blend_color_cycle selector=F_PAL_ATTACKER, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB(0, 20, 31)
@@ -31783,9 +31783,9 @@ SubzeroSlammerFinish:
call SubzeroSlammerIceSwirl
delay 10
clearmonbg ANIM_ATK_PARTNER
- createsoundtask SoundTask_LoopSEAdjustPanning, 0xb0, 0xffc0, SOUND_PAN_TARGET, 0x4, 0x4, 0x0, 0xa
- createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 0x14, 0xc, 0x0, 0xc, 0x14
- createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 0x14, 0xfff4, 0x0, 0xfff4, 0x14
+ createsoundtask SoundTask_LoopSEAdjustPanning, 176, -64, SOUND_PAN_TARGET, 4, 4, 0, 10
+ createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, 12, 0, 12, 20
+ createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, -12, 0, -12, 20
delay 1
call IceBeamCreateCrystals
call IceBeamCreateCrystals
@@ -31807,7 +31807,7 @@ SubzeroSlammerFinish:
call IceCrystalEffectShort
delay 5
monbg ANIM_DEF_PARTNER
- createvisualtask AnimTask_FrozenIceCube, 0x82
+ createvisualtask AnimTask_FrozenIceCube, 130
playsewithpan SE_M_HAIL, SOUND_PAN_TARGET
waitforvisualfinish
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
@@ -31824,58 +31824,58 @@ SubzeroSlammerFinish:
waitforvisualfinish
restorebg
waitbgfadeout
- setarg 0x7 0xffff
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ setarg 7, -1
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitbgfadein
waitforvisualfinish
end
SubzeroSlammerExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
- createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0
+ createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
+ createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0
delay 3
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 10, 20, 0
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
- createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0
+ createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
+ createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -5, 10, 0
delay 3
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 17, -12, 0
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xf, 0x0
+ createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, -15, 15, 0
delay 3
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
- createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0x14, 0x2, 0x0
+ createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
+ createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 20, 2, 0
delay 3
- createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0
+ createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0
delay 3
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0
+ createsprite gSubzeroSlammerExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 17, -12, 0
delay 3
- createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xf, 0x0
+ createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, -15, 15, 0
delay 3
return
SubzeroSlammerIceSwirl:
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
- createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER
+ createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_ATTACKER
delay 2
- createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER
+ createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_ATTACKER
delay 2
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
- createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER
+ createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_ATTACKER
delay 2
- createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER
+ createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_ATTACKER
delay 2
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER
- createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER
+ createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_ATTACKER
delay 2
- createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER
+ createsprite gSubzeroSlammerIceSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_ATTACKER
delay 2
return
@@ -31899,47 +31899,47 @@ gBattleAnimMove_DevastatingDrake::
unloadspritepal ANIM_TAG_CIRCLE_OF_LIGHT
monbg ANIM_ATTACKER
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeDrakeUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x4e0, 0x24, 0x15, 0x1, ANIM_ATTACKER
+ createsprite gDevastatingDrakeDrakeUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1248, 36, 21, 1, ANIM_ATTACKER
clearmonbg ANIM_ATTACKER
fadetobg BG_SKY
invisible ANIM_ATTACKER
invisible ANIM_TARGET
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x1000, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, 4096, 0, -1
waitbgfadein
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET DevastatingDrakeOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET DevastatingDrakeOnPlayer
DevastatingDrakeOnOpponent:
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x88, 0x100, 0x38, 0x15 @left to right
+ createsprite gDevastatingDrakeRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 136, 256, 56, 21 @left to right
waitforvisualfinish
delay 10
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x38, 0xfff0, 0x38, 0x15 @right to left
+ createsprite gDevastatingDrakeLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 56, -16, 56, 21 @right to left
waitforvisualfinish
delay 10
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x08, 0x100, 0x0f, 0x15 @left to right
+ createsprite gDevastatingDrakeRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 8, 256, 15, 21 @left to right
goto DevastatingDrakeFinish
DevastatingDrakeOnPlayer:
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x08, 0xfff0, 0x0f, 0x15 @right to left
+ createsprite gDevastatingDrakeLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 8, -16, 15, 21 @right to left
waitforvisualfinish
delay 10
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x38, 0x100, 0x38, 0x15 @left to right
+ createsprite gDevastatingDrakeRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 56, 256, 56, 21 @left to right
waitforvisualfinish
delay 10
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x78, 0xfff0, 0x58, 0x15 @right to left
+ createsprite gDevastatingDrakeLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 120, -16, 88, 21 @right to left
DevastatingDrakeFinish:
call UnsetPsychicBg
waitforvisualfinish
visible ANIM_TARGET
delay 10
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeStrikeSpriteTemplate, ANIM_TARGET, 2, 0x14
+ createsprite gDevastatingDrakeStrikeSpriteTemplate, ANIM_TARGET, 2, 20
delay 16
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_EXPLOSION, 0, 12, 12, RGB(11, 1, 20)
@@ -31947,8 +31947,8 @@ DevastatingDrakeFinish:
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB(0, 6, 16) @ fade to purple
call DevastatingDrakeExplosion
delay 6
- createvisualtask AnimTask_IsTargetPartner, 0x5
- jumpargeq 0x0 0x1 DevastatingDrakeFadeTargetPartner
+ createvisualtask AnimTask_IsTargetPartner, 5
+ jumpargeq 0 1 DevastatingDrakeFadeTargetPartner
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ALL_BUT_DEF), 6, 0, 16, RGB(0, 6, 16)
call DevastatingDrakeExplosion
waitforvisualfinish
@@ -31964,36 +31964,36 @@ DevastatingDrakeUniversalEnding:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
call DevastatingDrakeGeyser
playsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, -20, -10, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0, -16, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 20, -10, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 32, 0, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 20, 10, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, -20, 10, 24, 0, 0, 0
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
call DevastatingDrakeGeyser
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 6, 0xffd8, 0xffec, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffe0, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 0x28, 0xffec, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x40, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x28, 0x14, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x18, 0x0, 0x0, 0x0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, -64, 0, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 6, -40, -20, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 0, -32, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 40, -20, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 64, 0, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 40, 20, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, -40, 20, 24, 0, 0, 0
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
call DevastatingDrakeGeyser
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 6, 0xffc4, 0xffe2, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffd0, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 0x3c, 0xffe2, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x60, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 0x3c, 0x1e, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x30, 0x18, 0x0, 0x0, 0x0
- createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0xffc4, 0x1e, 0x18, 0x0, 0x0, 0x0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, -96, 0, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 6, -60, -30, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 0, -48, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 70, 60, -30, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 96, 0, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, 0, 48, 24, 0, 0, 0
+ createsprite gDevastatingDrakePurpleBlastSpriteTemplate, ANIM_ATTACKER, 2, -60, 30, 24, 0, 0, 0
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
call DevastatingDrakeGeyser
delay 4
@@ -32002,7 +32002,7 @@ DevastatingDrakeUniversalEnding:
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 0, 0 @ reset all colours
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
DevastatingDrakeFadeTargetPartner:
@@ -32013,91 +32013,91 @@ DevastatingDrakeFadeTargetPartner:
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ALL_BUT_ATK_PARTNER), 0, 16, 0, RGB(0, 6, 16) @ fade all but target back
goto DevastatingDrakeUniversalEnding
DevastatingDrakeBuffEffect:
- createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gDevastatingDrakePurpleEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
DevastatingDrakeGeyser:
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0x0005, 0x1, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 3, 5, 1, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -4, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xfff1, 0x1, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, -11, -15, 1, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 4109, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xfffb, 0x1, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 8, -5, 1, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 4, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0x0012, 0x1, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, -6, 18, 1, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -16, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0x0005, 0x1, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0, 5, 1, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -4, 16
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0xfff5, ANIM_TARGET, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 3, -11, ANIM_TARGET, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 4109, 16
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xffe1, ANIM_TARGET, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, -11, -31, ANIM_TARGET, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 4, 16
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xffeb, ANIM_TARGET, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 8, -21, ANIM_TARGET, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -16, 16
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0x0002, ANIM_TARGET, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, -6, 2, ANIM_TARGET, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -4, 16
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0xfff5, ANIM_TARGET, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0, -11, ANIM_TARGET, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 4109, 16
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0xffe5, ANIM_TARGET, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 3, -27, ANIM_TARGET, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 4, 16
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xffd1, ANIM_TARGET, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, -11, -47, ANIM_TARGET, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -16, 16
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xffdb, ANIM_TARGET, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfffc, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 8, -37, ANIM_TARGET, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -4, 16
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0xfff2, ANIM_TARGET, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x100D, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, -6, -14, ANIM_TARGET, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 4109, 16
delay 0
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0xffe5, ANIM_TARGET, 0x0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0x4, 0x10
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 4, 0, -27, ANIM_TARGET, 0
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 4, 16
delay 0
- createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
+ createsprite gDevastatingDrakeHexSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, -16, 16
return
DevastatingDrakeExplosion:
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gDevastatingDrakeExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
return
gBattleAnimMove_BlackHoleEclipse::
invisible ANIM_TARGET
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
call EndureEffect
@@ -32116,73 +32116,73 @@ gBattleAnimMove_BlackHoleEclipse::
unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
unloadspritepal ANIM_TAG_CIRCLE_OF_LIGHT
playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER
- createsprite gBlackHoleEclipseHoleUserSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_ATTACKER, 0x0
- createsprite gBlackHoleEclipseBlueRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gBlackHoleEclipseHoleUserSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_ATTACKER, 0
+ createsprite gBlackHoleEclipseBlueRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
delay 8
- createsprite gBlackHoleEclipseBlackRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gBlackHoleEclipseBlackRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
delay 8
- createsprite gBlackHoleEclipseBlueRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gBlackHoleEclipseBlueRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
delay 8
- createsprite gBlackHoleEclipseBlackRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gBlackHoleEclipseBlackRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
delay 8
waitforvisualfinish
stopsound
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 7, RGB_BLACK
invisible ANIM_ATTACKER
- loopsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 0x10, 0x5
- createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x0
+ loopsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 16, 5
+ createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 0
delay 3
- createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x10, 0x1
+ createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 3, 0, 16, 1
delay 3
- createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x10, 0x2
+ createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 4, 0, 16, 2
delay 3
- createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x10, 0x3
+ createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 4, 0, 16, 3
waitforvisualfinish
fadetobg BG_BLACK_HOLE_ECLIPSE
playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET
- createsprite gBlackHoleEclipseRedRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0
+ createsprite gBlackHoleEclipseRedRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 256, 0
delay 4
- createsprite gBlackHoleEclipseRedRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0
+ createsprite gBlackHoleEclipseRedRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 256, 0
delay 4
- createsprite gBlackHoleEclipseRedRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0
+ createsprite gBlackHoleEclipseRedRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 256, 0
waitbgfadeout
unloadspritegfx ANIM_TAG_WISP_ORB
unloadspritepal ANIM_TAG_WISP_ORB
- createsprite gBlackHoleEclipseHoleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0 @ eclipse at target origin
+ createsprite gBlackHoleEclipseHoleSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 @ eclipse at target origin
delay 16
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 53, -19, 1, 2 @ target down and left (instantaneously (last arg))
delay 2
visible ANIM_TARGET
- loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 0xa, 0x5
- createvisualtask AnimTask_RotateMonSpriteToSide, 2, 80, -1024, ANIM_TARGET, 0 @ spin target around (0x50 (time), -0x400 (rot speed))
- createsprite gBlackHoleEclipseBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 5
+ createvisualtask AnimTask_RotateMonSpriteToSide, 2, 80, -1024, ANIM_TARGET, 0 @ spin target around (80 (time), -1024 (rot speed))
+ createsprite gBlackHoleEclipseBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x30 @ target back to origin (slowly)
- createsprite gBlackHoleEclipseBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 48 @ target back to origin (slowly)
+ createsprite gBlackHoleEclipseBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 21
invisible ANIM_TARGET
delay 8
- createsprite gBlackHoleEclipseBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gBlackHoleEclipseBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gBlackHoleEclipseRedRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gBlackHoleEclipseHoleShrinkSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gBlackHoleEclipseHoleShrinkSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0
waitforvisualfinish
unloadspritegfx ANIM_TAG_THIN_RING
unloadspritepal ANIM_TAG_THIN_RING
unloadspritegfx ANIM_TAG_ICE_CHUNK
unloadspritepal ANIM_TAG_ICE_CHUNK
- createsprite gTargetTwinkleSpriteTemplate, ANIM_ATTACKER, 13, 0x0, 0x0, ANIM_TARGET @detect star
+ createsprite gTargetTwinkleSpriteTemplate, ANIM_ATTACKER, 13, 0, 0, ANIM_TARGET @detect star
delay 2
unloadspritegfx ANIM_TAG_VERTICAL_HEX @red
unloadspritepal ANIM_TAG_VERTICAL_HEX @red
@@ -32204,29 +32204,29 @@ gBattleAnimMove_BlackHoleEclipse::
end
BlackHoleEclipseExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gBlackHoleEclipseRedExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_TARGET, 1
delay 6
return
ResetFromWhiteScreen:
- createvisualtask AnimTask_AllBattlersInvisible, 0xA
+ createvisualtask AnimTask_AllBattlersInvisible, 10
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 0, RGB_WHITE @everything from white
restorebg
waitbgfadeout
- setarg 0x7 0xffff
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ setarg 7, -1
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitbgfadein
waitforvisualfinish
delay 5
@@ -32236,20 +32236,20 @@ ResetFromWhiteScreen:
gBattleAnimMove_TwinkleTackle::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
call TwinkleTacklePinkStars
delay 8
fadetobg BG_TWINKLE_TACKLE
- createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
waitbgfadeout
invisible ANIM_TARGET
delay 1
- createsprite gTwinkleTackleStarGrowSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gTwinkleTackleStarGrowSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
waitforvisualfinish
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET TwinkleTackleOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET TwinkleTackleOnPlayer
TwinkleTackleOnOpponent:
call PlayerTwinkling
goto TwinkleTackleFinish
@@ -32267,128 +32267,128 @@ TwinkleTackleFinish:
call TwinkleTackleStars
waitforvisualfinish
delay 1
- createsprite gTwinkleTackleYellowImpactSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1, 0x0
+ createsprite gTwinkleTackleYellowImpactSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0
call TwinkleTackleStarsTarget
playsewithpan SE_M_WATERFALL, SOUND_PAN_TARGET
delay 5
- createvisualtask AnimTask_TwinkleTackleLaunch, 0x2, 89
+ createvisualtask AnimTask_TwinkleTackleLaunch, 2, 89
delay 89
playsewithpan SE_M_DETECT, SOUND_PAN_TARGET
- createsprite gTwinkleTackleTwinkleSpriteTemplate, ANIM_TARGET, 13, 0x0, 0x0, ANIM_TARGET @detect star
+ createsprite gTwinkleTackleTwinkleSpriteTemplate, ANIM_TARGET, 13, 0, 0, ANIM_TARGET @detect star
waitforvisualfinish
delay 16
restorebg
delay 24
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
TwinkleTacklePinkStars:
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x0, 0x0, 0x20, 0x3c
- createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60
+ createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
delay 8
- createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, 0x0, 0x0, 0x20, 0x3c
+ createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60
delay 8
- createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gTwinkleTacklePinkRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
return
PlayerTwinkling:
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
- setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles
- createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 @ user fly on screen on enemy side
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x12, 0x0, 0x0, 0x0, 0x20, 0x1c
+ setarg 7, 0 @;Clear arg 7 so task works properly in Link battles
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2 @ user fly on screen on enemy side
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 0, 0, 32, 28
delay 3
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x1f, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 31, -5, 0, 0, 32, 28
delay 22
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x90, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 144, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x80, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 128, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x70, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 112, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x60, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 96, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 80, -64, 0, 0, 32, 28
delay 1
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_TARGET
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x40, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 64, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 48, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 32, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 16, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xfff0, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, -16, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, -32, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, -48, -64, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffc0, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, -64, -64, 0, 0, 32, 28
return
OpponentTwinkling:
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
- setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles
- createvisualtask AnimTask_SnatchOpposingMonMove, 0x2 @ user fly on screen on enemy side
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ setarg 7, 0 @;Clear arg 7 so task works properly in Link battles
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2 @ user fly on screen on enemy side
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 16, -5, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 32, -5, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 48, -5, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x40, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 64, -5, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 80, -5, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x60, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 96, -5, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x70, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 112, -5, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x80, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 128, -5, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x90, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 144, -5, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xa0, 0xfffb, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 160, -5, 0, 0, 32, 28
delay 5
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_TARGET
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0xa0, 0x2c, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 160, 44, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x90, 0x2c, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 144, 44, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x80, 0x2c, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 128, 44, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x70, 0x2c, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 112, 44, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x60, 0x2c, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 96, 44, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x50, 0x2c, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 80, 44, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x40, 0x2c, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 64, 44, 0, 0, 32, 28
delay 1
- createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 0x30, 0x2c, 0x0, 0x0, 0x20, 0x1c
+ createsprite gTwinkleTacklePinkStarSpriteTemplate, ANIM_ATTACKER, 2, 48, 44, 0, 0, 32, 28
return
TwinkleTackleStars:
playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER
- createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xc, 0x4, 0xfff0, 0x12
- createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x4, 0xfff6, 0x12
- createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xe, 0x4, 0xffee, 0x12
- createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0xc, 0x4, 0xfff0, 0x12
+ createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 12, 4, -16, 18
+ createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 4, -10, 18
+ createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 14, 4, -18, 18
+ createsprite gTwinkleTackleDigStarSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 12, 4, -16, 18
return
TwinkleTackleStarsTarget:
- createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xa0, 0xffe0
- createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff00, 0xffd8
- createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x80, 0xfff0
- createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x1a0, 0xffda
- createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff80, 0xffea
- createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xfe80, 0xffe1
+ createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, -16, -8, 160, -32
+ createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, -16, -8, -256, -40
+ createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, -16, -8, 128, -16
+ createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, -16, -8, 416, -38
+ createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, -16, -8, -128, -22
+ createsprite gTwinkleTackleImpactStarsSpriteTemplate, ANIM_TARGET, 3, -16, -8, -384, -31
return
@ signature z moves
gBattleAnimMove_Catastropika::
invisible ANIM_TARGET
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
call EndureEffect
@@ -32400,15 +32400,15 @@ gBattleAnimMove_Catastropika::
call EndureEffect
delay 8
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
waitforvisualfinish
unloadspritegfx ANIM_TAG_FOCUS_ENERGY
unloadspritepal ANIM_TAG_FOCUS_ENERGY
unloadspritegfx ANIM_TAG_ROUND_SHADOW
unloadspritepal ANIM_TAG_ROUND_SHADOW
- createvisualtask AnimTask_GetTimeOfDay, 0x2
- jumpargeq 0x0 0x0 CatastropikaDaytime
- jumpargeq 0x0 0x2 CatastropikaAfternoon
+ createvisualtask AnimTask_GetTimeOfDay, 2
+ jumpargeq 0 0 CatastropikaDaytime
+ jumpargeq 0 2 CatastropikaAfternoon
CatastropikaNight:
fadetobg BG_MAX_LIGHTNING
goto CatastropikaFinish
@@ -32422,77 +32422,77 @@ CatastropikaFinish:
visible ANIM_ATTACKER
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 @charge particles to user
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0x20, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0x60, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0xa0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0xe0, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 44, 32, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 44, 96, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 44, 160, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 44, 224, 40, 2, 3
@ delay 20
@ playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x12, 0x2c, 0x0, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x12, 0x2c, 0x40, 0x28, 0x1, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x12, 0x2c, 0x80, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x12, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 18, 44, 0, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 18, 44, 64, 40, 1, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 18, 44, 128, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 18, 44, SOUND_PAN_ATTACKER, 40, 2, 3
@ delay 20
@ playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x0, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x40, 0x28, 0x1, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x80, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 44, 0, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 44, 64, 40, 1, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 44, 128, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER @ charge
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x16, 0x2c, 0x20, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x16, 0x2c, 0x60, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x16, 0x2c, 0xa0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x16, 0x2c, 0xe0, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 22, 44, 32, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 22, 44, 96, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 22, 44, 160, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 22, 44, 224, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 24, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 24, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 24, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 24, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1a, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1a, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1a, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1a, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 26, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 26, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 26, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 26, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 28, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 28, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 28, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 28, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1e, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x15, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 21, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
restorebg
waitbgfadeout
@@ -32501,21 +32501,21 @@ CatastropikaFinish:
invisible ANIM_ATTACKER
visible ANIM_TARGET
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET
- createsprite gCatastrokpikaSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0x0
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3
+ createsprite gCatastrokpikaSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -32, -16, 37, 44, 32, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -32, -16, 37, 44, 96, 8, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -32, -16, 37, 44, 160, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -32, -16, 37, 44, 224, 8, 2, 3
delay 1
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -48, -28, 37, 44, 32, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -48, -28, 37, 44, 96, 8, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -48, -28, 37, 44, 160, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -48, -28, 37, 44, 224, 8, 2, 3
delay 1
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -64, -40, 37, 44, 32, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -64, -40, 37, 44, 96, 8, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -64, -40, 37, 44, 160, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -64, -40, 37, 44, 224, 8, 2, 3
delay 13
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -256, 21, 0, 4
createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, -24, -16, 24 @ 12, -48, -16, 24
@@ -32533,9 +32533,9 @@ CatastropikaFinish:
call CatastropikaThundering
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 4, 16, 0, RGB_WHITE @ bg to white
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10 @fix tgt position
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16 @fix tgt position
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
CatastropikaThundering:
@@ -32557,27 +32557,27 @@ CatastropikaThundering:
gBattleAnimMove_10000000VoltThunderbolt::
invisible ANIM_TARGET
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
call EndureEffect
waitforvisualfinish
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite g10MillionVoltBoltYellowFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3
+ createsprite g10MillionVoltBoltYellowFlySpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 32, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 96, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 160, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 224, 40, 2, 3
delay 2
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 32, 44, 32, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 32, 44, 96, 40, 1, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 32, 44, 160, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 32, 44, 224, 40, 2, 3
delay 2
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -48, 32, 44, 32, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -48, 32, 44, 96, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -48, 32, 44, 160, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -48, 32, 44, 224, 40, 2, 3
waitforvisualfinish
unloadspritegfx ANIM_TAG_ROUND_SHADOW
unloadspritepal ANIM_TAG_ROUND_SHADOW
@@ -32585,26 +32585,26 @@ gBattleAnimMove_10000000VoltThunderbolt::
unloadspritepal ANIM_TAG_FOCUS_ENERGY
fadetobg BG_THUNDER
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xff00, 0x0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, -1
waitbgfadein
visible ANIM_ATTACKER
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 @charge particles to user
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0x20, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0x60, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0xa0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x10, 0x2c, 0xe0, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 44, 32, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 44, 96, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 44, 160, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 44, 224, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x14, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 16
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET
- invert_screen_color scenery=0x101@thunder flash
+ invert_screen_color scenery=257 @thunder flash
createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER @ charge
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 64, -36
delay 1
@@ -32613,13 +32613,13 @@ gBattleAnimMove_10000000VoltThunderbolt::
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 64, 12
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x0, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x40, 0x28, 0x1, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, 0x80, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x18, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 24, 44, 0, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 24, 44, 64, 40, 1, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 24, 44, 128, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 24, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET
- invert_screen_color scenery=0x101@thunder flash
+ invert_screen_color scenery=257 @thunder flash
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -64, -36
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -64, -20
@@ -32627,13 +32627,13 @@ gBattleAnimMove_10000000VoltThunderbolt::
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -64, 12
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x1c, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 28, 44, 0, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 28, 44, 64, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 28, 44, 128, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 28, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 20
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET
- invert_screen_color scenery=0x101@thunder flash
+ invert_screen_color scenery=257 @thunder flash
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -112, -36
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -112, -20
@@ -32641,28 +32641,28 @@ gBattleAnimMove_10000000VoltThunderbolt::
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -112, 12
delay 20
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x0, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x40, 0x28, 0x1, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x80, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 0, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 64, 40, 1, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 128, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, SOUND_PAN_ATTACKER, 40, 2, 3
delay 16
playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET
- invert_screen_color scenery=0x101@thunder flash
+ invert_screen_color scenery=257 @thunder flash
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -48, -36
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -48, -20
delay 1
createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, -48, 12
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x2a, 0x2c, 0x0, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x2a, 0x2c, 0x40, 0x28, 0x1, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x2a, 0x2c, 0x80, 0x28, 0x0, 0x3
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x2a, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, 44, 0, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, 44, 64, 40, 1, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, 44, 128, 40, 0, 3
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, 44, SOUND_PAN_ATTACKER, 40, 2, 3
waitforvisualfinish
unloadallspritepals
call UnsetPsychicBg
visible ANIM_TARGET
- loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER, 0x5, 0xA
+ loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER, 5, 10
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 50, 1
@flash_anim_tag_with_color tag=ANIM_TAG_ORBS, delay=1, num_blends=12, color1=RGB_RED, blend_y1=16, color2=0, blend_y2=0
call TenMillionVoltThunderboltBeamRed
@@ -32693,20 +32693,20 @@ gBattleAnimMove_10000000VoltThunderbolt::
@ call TenMillionVoltThunderboltBeamGreen
@ call TenMillionVoltThunderboltBeamPurple
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x25, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x25, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x25, 0x2c, 0x80, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x25, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 37, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 37, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 37, 44, 128, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 37, 44, SOUND_PAN_ATTACKER, 40, 2, -32765
@ delay 6
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x35, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x35, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x35, 0x2c, 0x80, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x35, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 53, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 53, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 53, 44, 128, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 53, 44, SOUND_PAN_ATTACKER, 40, 2, -32765
@ delay 6
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x40, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x40, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x40, 0x2c, 0x80, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x40, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 64, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 64, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 64, 44, 128, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 64, 44, SOUND_PAN_ATTACKER, 40, 2, -32765
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
createsprite g10MillionVoltBoltShockwaveSpriteTemplate, ANIM_TARGET, 2 @ charge out and in
waitforvisualfinish
@@ -32723,22 +32723,22 @@ gBattleAnimMove_10000000VoltThunderbolt::
unloadspritegfx ANIM_TAG_POISON_BUBBLE @purple
unloadspritepal ANIM_TAG_POISON_BUBBLE @purple
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 2, 44
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x80, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x00, 0x30, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 128, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, SOUND_PAN_ATTACKER, 40, 2, -32765
call TenMillionVoltThunderboltSparkGeyser
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x80, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x00, 0x37, 0x2c, SOUND_PAN_ATTACKER, 0x28, 0x2, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 55, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 55, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 55, 44, 128, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 55, 44, SOUND_PAN_ATTACKER, 40, 2, -32765
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 2, 0, 16, RGB_WHITE
call TenMillionVoltThunderboltSparkGeyser
waitforvisualfinish
delay 16
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 3, 16, 0, RGB_WHITE
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
TenMillionVoltThunderboltBeamRed:
@@ -32773,74 +32773,74 @@ TenMillionVoltThunderboltBeamPurple:
return
TenMillionVoltThunderboltSparkGeyser:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 5, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 5, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 5, 44, 128, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 21, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 21, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 21, 44, 128, 40, 0, -32765
delay 4
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -22, 5, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -22, 5, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -22, 5, 44, 128, 40, 0, -32765
delay 4
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 5, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 5, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 5, 44, 128, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 21, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 21, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 21, 44, 128, 40, 0, -32765
delay 4
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 5, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 5, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 5, 44, 128, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 21, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 21, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 21, 44, 128, 40, 0, -32765
delay 4
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
delay 8
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
delay 8
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
return
gBattleAnimMove_StokedSparksurfer::
invisible ANIM_TARGET
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gStokedSparksurferFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3
+ createsprite gStokedSparksurferFlySpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 32, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 96, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 160, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, 44, 224, 40, 2, 3
delay 2
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 32, 44, 32, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 32, 44, 96, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 32, 44, 160, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 32, 44, 224, 40, 2, 3
delay 2
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0x20, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0x60, 0x28, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0xa0, 0x28, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffd0, 0x20, 0x2c, 0xe0, 0x28, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -48, 32, 44, 32, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -48, 32, 44, 96, 40, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -48, 32, 44, 160, 40, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0, -48, 32, 44, 224, 40, 2, 3
waitforvisualfinish
unloadspritegfx ANIM_TAG_ROUND_SHADOW
unloadspritepal ANIM_TAG_ROUND_SHADOW
- createvisualtask AnimTask_GetTimeOfDay, 0x2
- jumpargeq 0x0 0x0 StokedSparksurferDay
- jumpargeq 0x0 0x2 StokedSparksurferAfternoon
+ createvisualtask AnimTask_GetTimeOfDay, 2
+ jumpargeq 0 0 StokedSparksurferDay
+ jumpargeq 0 2 StokedSparksurferAfternoon
StokedSparksurferNight:
fadetobg BG_MAX_LIGHTNING
goto StokedSparksurferFinish
@@ -32865,22 +32865,22 @@ StokedSparksurferFinish:
createsprite gVoltTackleOrbSlideSpriteTemplate, ANIM_ATTACKER, 1
playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER
waitforvisualfinish
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x0
+ createvisualtask AnimTask_VoltTackleBolt, 5, 0
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER
waitforvisualfinish
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x1
+ createvisualtask AnimTask_VoltTackleBolt, 5, 1
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET
waitforvisualfinish
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x2
+ createvisualtask AnimTask_VoltTackleBolt, 5, 2
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER
waitforvisualfinish
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x3
+ createvisualtask AnimTask_VoltTackleBolt, 5, 3
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET
delay 1
fadetobg BG_ZMOVE_ACTIVATE
waitbgfadeout
visible ANIM_TARGET
- createvisualtask AnimTask_VoltTackleBolt, 0x5, 0x4
+ createvisualtask AnimTask_VoltTackleBolt, 5, 4
playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET
waitforvisualfinish
unloadspritegfx ANIM_TAG_SPARK
@@ -32892,58 +32892,58 @@ StokedSparksurferFinish:
unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
unloadspritepal ANIM_TAG_CIRCLE_OF_LIGHT
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 28
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x40, 0x28, 0x1, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x30, 0x2c, 0x80, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x00, 0x30, 0x2c, 0xc0, 0x28, 0x2, 0x8003
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 0, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 64, 40, 1, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 128, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 48, 44, 192, 40, 2, -32765
call StokedSparksurferSparkGeyser
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_TARGET | F_PAL_ATTACKER), 2, 0, 16, RGB(31, 31, 22)
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x0, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x40, 0x28, 0x1, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x37, 0x2c, 0x80, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x00, 0x37, 0x2c, 0xc0, 0x28, 0x2, 0x8003
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 55, 44, 0, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 55, 44, 64, 40, 1, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 55, 44, 128, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 55, 44, 192, 40, 2, -32765
call StokedSparksurferSparkGeyser
- createvisualtask AnimTask_VoltTackleAttackerReappear, 0x5 @ attacker flicker back
+ createvisualtask AnimTask_VoltTackleAttackerReappear, 5 @ attacker flicker back
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET
delay 4
- createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x10
+ createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 16
delay 2
- createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0, 0xfff0
+ createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16
delay 4
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_TARGET | F_PAL_ATTACKER), 2, 16, 0, RGB(31, 31, 22)
restorebg
delay 24
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
StokedSparksurferSparkGeyser:
playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 5, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 5, 44, 64, 40, 1, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 5, 44, 128, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 21, 44, 0, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 21, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 21, 44, 128, 40, 0, -32765
delay 4
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffea, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -22, 5, 44, 0, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -22, 5, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -22, 5, 44, 128, 40, 0, -32765
delay 4
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffd4, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 5, 44, 0, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 5, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 5, 44, 128, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 21, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 21, 44, 64, 40, 1, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -44, 21, 44, 128, 40, 0, -32765
delay 4
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x0, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x40, 0x28, 0x1, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x5, 0x2c, 0x80, 0x28, 0x0, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x8003
-@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x8003
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0xffbe, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x8003
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 5, 44, 0, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 5, 44, 64, 40, 1, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 5, 44, 128, 40, 0, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 21, 44, 0, 40, 0, -32765
+@ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 21, 44, 64, 40, 1, -32765
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, -66, 21, 44, 128, 40, 0, -32765
delay 26
return
@@ -32951,40 +32951,40 @@ StokedSparksurferSparkGeyser:
gBattleAnimMove_ExtremeEvoboost::
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 3, 0, 16, RGB_BLACK
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersInvisible, 0xA
+ createvisualtask AnimTask_AllBattlersInvisible, 10
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 3, 0, 0, 0 @Remove fading on everyone
waitforvisualfinish
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x18, 0xfff4
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffe8, 0xfff4
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 24, -12
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, -24, -12
delay 10
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x28, 0xfff0
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xfff8, 0xfff0
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 40, -16
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, -8, -16
delay 10
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x8, 0xfffe
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0xfffe
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 8, -2
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, -40, -2
delay 10
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x5
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x5
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 16, 5
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, -32, 5
delay 10
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x20, 0xfff0
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xfff0, 0xfff0
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 32, -16
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, -16, -16
delay 10
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x5, 0x0
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffd5, 0x0
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 5, 0
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, -43, 0
delay 10
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0x1c, 0x5
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0x5
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 28, 5
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, -20, 5
delay 10
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xf, 0xfff4
- createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 0xffdf, 0xfff4
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 15, -12
+ createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, -33, -12
waitforvisualfinish
unloadspritegfx ANIM_TAG_LEER
unloadspritepal ANIM_TAG_LEER
@@ -32994,27 +32994,27 @@ gBattleAnimMove_ExtremeEvoboost::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_CIRCLE_OF_LIGHT, 0, 16, 16, RGB(31, 31, 22)
waitforvisualfinish
playsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER
- createsprite gExtremeEvoboostRedChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gExtremeEvoboostRedChargeUpSpriteTemplate, ANIM_TARGET, 2, 0, 28, 1296, 30, 13, 50, ANIM_ATTACKER
delay 2
- createsprite gExtremeEvoboostPinkChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gExtremeEvoboostPinkChargeUpSpriteTemplate, ANIM_TARGET, 2, 0, 32, 1248, 20, 16, -46, ANIM_ATTACKER
delay 2
- createsprite gExtremeEvoboostIceChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x540, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gExtremeEvoboostIceChargeUpSpriteTemplate, ANIM_TARGET, 2, 0, 33, 1344, 20, 8, 42, ANIM_ATTACKER
delay 2
- createsprite gExtremeEvoboostBlackChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x490, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gExtremeEvoboostBlackChargeUpSpriteTemplate, ANIM_TARGET, 2, 0, 31, 1168, 25, 11, -42, ANIM_ATTACKER
delay 2
- createsprite gExtremeEvoboostBlueChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x500, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gExtremeEvoboostBlueChargeUpSpriteTemplate, ANIM_TARGET, 2, 0, 28, 1280, 25, 16, 46, ANIM_ATTACKER
delay 2
- createsprite gExtremeEvoboostPurpleChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x4d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gExtremeEvoboostPurpleChargeUpSpriteTemplate, ANIM_TARGET, 2, 0, 33, 1232, 30, 15, -50, ANIM_ATTACKER
delay 2
- createsprite gExtremeEvoboostYellowChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gExtremeEvoboostYellowChargeUpSpriteTemplate, ANIM_TARGET, 2, 0, 28, 1296, 30, 13, 50, ANIM_ATTACKER
delay 2
- createsprite gExtremeEvoboostGreenChargeUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gExtremeEvoboostGreenChargeUpSpriteTemplate, ANIM_TARGET, 2, 0, 32, 1248, 20, 16, -46, ANIM_ATTACKER
delay 2
waitforvisualfinish
visible ANIM_ATTACKER
- loopsewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 0x15, 0xd
+ loopsewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 21, 13
call ExtremeEvoboostColorCircle
- createvisualtask AnimTask_StockpileDeformMon, 0x5 @stockpile movement
+ createvisualtask AnimTask_StockpileDeformMon, 5 @stockpile movement
call ExtremeEvoboostColorCharge
call ExtremeEvoboostColorCharge
call ExtremeEvoboostColorCharge
@@ -33026,70 +33026,70 @@ gBattleAnimMove_ExtremeEvoboost::
call ResetFromWhiteScreen
end
ExtremeEvoboostColorCircle:
- createsprite gExtremeEvoboostRedChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostRedChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostPinkChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostPinkChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostIceChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostIceChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostBlackChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostBlackChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostBlueChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostBlueChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostPurpleChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostPurpleChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostYellowChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostYellowChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostGreenChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostGreenChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
return
ExtremeEvoboostColorCharge:
- createsprite gExtremeEvoboostRedChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostRedChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostRedStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0x37, 0x37, 0xd
+ createsprite gExtremeEvoboostRedStockpileSpriteTemplate, ANIM_ATTACKER, 2, 55, 55, 13
delay 2
- createsprite gExtremeEvoboostPinkChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostPinkChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostPinkStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0xffc9, 0xffc9, 0xd
+ createsprite gExtremeEvoboostPinkStockpileSpriteTemplate, ANIM_ATTACKER, 2, -55, -55, 13
delay 2
- createsprite gExtremeEvoboostIceChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostIceChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostIceStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x37, 0xd
+ createsprite gExtremeEvoboostIceStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0, 55, 13
delay 2
- createsprite gExtremeEvoboostBlackChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostBlackChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostBlackStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffc9, 0xd
+ createsprite gExtremeEvoboostBlackStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0, -55, 13
delay 2
- createsprite gExtremeEvoboostBlueChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostBlueChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostBlueStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0x37, 0xffde, 0xd
+ createsprite gExtremeEvoboostBlueStockpileSpriteTemplate, ANIM_ATTACKER, 2, 55, -34, 13
delay 2
- createsprite gExtremeEvoboostPurpleChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostPurpleChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostPurpleStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0x37, 0x22, 0xd
+ createsprite gExtremeEvoboostPurpleStockpileSpriteTemplate, ANIM_ATTACKER, 2, 55, 34, 13
delay 2
- createsprite gExtremeEvoboostYellowChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostYellowChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostYellowStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0xffc9, 0xffde, 0xd
+ createsprite gExtremeEvoboostYellowStockpileSpriteTemplate, ANIM_ATTACKER, 2, -55, -34, 13
delay 2
- createsprite gExtremeEvoboostGreenChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff0
+ createsprite gExtremeEvoboostGreenChargeCircleSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
delay 2
- createsprite gExtremeEvoboostGreenStockpileSpriteTemplate, ANIM_ATTACKER, 2, 0xffc9, 0x22, 0xd
+ createsprite gExtremeEvoboostGreenStockpileSpriteTemplate, ANIM_ATTACKER, 2, -55, 34, 13
delay 2
return
gBattleAnimMove_PulverizingPancake::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET PulverizingPancakeOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET PulverizingPancakeOnPlayer
PulverizingPancakeOnOpponent:
- createsprite gPulverizingPancakeRedDetectSpriteTemplate, ANIM_ATTACKER, 13, 0x14, 0xffec
+ createsprite gPulverizingPancakeRedDetectSpriteTemplate, ANIM_ATTACKER, 13, 20, -20
goto PulverizingPancakeFinish
PulverizingPancakeOnPlayer:
- createsprite gPulverizingPancakeRedDetectSpriteTemplate, ANIM_ATTACKER, 13, 0xa, 0xfff2
- createsprite gPulverizingPancakeRedDetectSpriteTemplate, ANIM_ATTACKER, 13, 0xfff6, 0xfff2
+ createsprite gPulverizingPancakeRedDetectSpriteTemplate, ANIM_ATTACKER, 13, 10, -14
+ createsprite gPulverizingPancakeRedDetectSpriteTemplate, ANIM_ATTACKER, 13, -10, -14
PulverizingPancakeFinish:
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
waitforvisualfinish
@@ -33106,7 +33106,7 @@ PulverizingPancakeFinish:
call PulverizingPancakeDiggingRun
call PulverizingPancakeDiggingRun
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
- createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
delay 2
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 12, 4, -16, 34
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16, 4, -10, 34
@@ -33118,9 +33118,9 @@ PulverizingPancakeFinish:
unloadspritepal ANIM_TAG_VERTICAL_HEX
fadetobg BG_IN_AIR
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x1000, 0x0, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, 4096, 0, -1
waitbgfadein
- createvisualtask AnimTask_PulverizingPancakeWhiteShadow, 0x5, 0x33, 0x33 @first arg is duration, last arg is move speed
+ createvisualtask AnimTask_PulverizingPancakeWhiteShadow, 5, 51, 51 @first arg is duration, last arg is move speed
delay 16
call PulverizingPancakeSlowBackground
call PulverizingPancakeSlowBackground
@@ -33134,7 +33134,7 @@ PulverizingPancakeFinish:
call PulverizingPancakeSlowBackground
call PulverizingPancakeSlowBackground
call PulverizingPancakeSlowBackground
- call PulverizingPancakeSlowBackground @-0x1000
+ call PulverizingPancakeSlowBackground @-4096
delay 1
waitbgfadein
unloadspritegfx ANIM_TAG_MUD_SAND @dig
@@ -33145,7 +33145,7 @@ PulverizingPancakeFinish:
create_basic_hitsplat_sprite ANIM_TARGET, 2, x=0, y=0, relative_to=ANIM_TARGET, animation=0@big hit marker
delay 0
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 4, 44
- createsprite gPulverizingPancakeYellowRingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x100, 0x0
+ createsprite gPulverizingPancakeYellowRingSpriteTemplate, ANIM_TARGET, 3, 0, 0, 256, 0
delay 5
call PulverizingPancakeExplosion
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 2, 0, 16, RGB_WHITE @ everything goes white
@@ -33162,37 +33162,37 @@ PulverizingPancakeDiggingRun:
delay 5
return
PulverizingPancakeSlowBackground:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xfd56, 0x0, 0xffff @-0x2aa
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -682, 0, -1 @-682
delay 1
return
PulverizingPancakeExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gPulverizingPancakeYellowRingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x100, 0x0
- createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gPulverizingPancakeYellowRingSpriteTemplate, ANIM_TARGET, 3, 0, 0, 256, 0
+ createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gPulverizingPancakeYellowRingSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x100, 0x0
- createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gPulverizingPancakeYellowRingSpriteTemplate, ANIM_TARGET, 3, 0, 0, 256, 0
+ createsprite gPulverizingPancakeExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
delay 6
return
gBattleAnimMove_GenesisSupernova::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
call SetPsychicBackground
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET GenesisSupernovaOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET GenesisSupernovaOnPlayer
GenesisSupernovaOnOpponent:
call GenesisSupernovaBuffEffectPlayer_1
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 11, (RGB(28, 3, 22) | RGB_ALPHA)
@@ -33207,7 +33207,7 @@ GenesisSupernovaOnPlayer:
call GenesisSupernovaBuffOpponent_2
call GenesisSupernovaBuffOpponent_1
GenesisSupernovaFinish:
- loopsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER, 0x18, 0x6
+ loopsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER, 24, 6
call GenesisSupernovaReversalWave
call GenesisSupernovaReversalWave
call GenesisSupernovaReversalWave
@@ -33216,7 +33216,7 @@ GenesisSupernovaFinish:
unloadspritepal ANIM_TAG_FOCUS_ENERGY @focus energy
monbg ANIM_ATTACKER
setalpha 12, 8
- createsprite gGenesisSupernovaChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 @charge
+ createsprite gGenesisSupernovaChargeSpriteTemplate, ANIM_ATTACKER, 2, 0 @charge
call GenesisSupernovaFlare @delay 12 per
call GenesisSupernovaFlare
call GenesisSupernovaFlare
@@ -33225,7 +33225,7 @@ GenesisSupernovaFinish:
delay 4
unloadspritegfx ANIM_TAG_BLUE_ORB @reversal
unloadspritepal ANIM_TAG_BLUE_ORB @reversal
- createsprite gGenesisSupernovaSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0x0
+ createsprite gGenesisSupernovaSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 11, 0, (RGB(28, 3, 22) | RGB_ALPHA)
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
createvisualtask AnimTask_BlendParticle, 2, ANIM_TAG_SPARKLE_2, 0, 0, 12, RGB_WHITE
@@ -33247,132 +33247,132 @@ GenesisSupernovaFinish:
waitforvisualfinish
end
GenesisSupernovaBubbleExplosion:
- createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, ANIM_TARGET, 0x0, 0x20, 0x3c
- createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0xa, 0xa, 0x0
- createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, ANIM_TARGET, 0, 32, 60
+ createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 10, 10, 0
+ createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
delay 6
- createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0x14, 0xffec, 0x0
- createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 20, -20, 0
+ createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, ANIM_TARGET, 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
delay 6
- createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, ANIM_TARGET, 0x0, 0x20, 0x3c
- createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xf, 0x0
- createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, ANIM_TARGET, 0, 32, 60
+ createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, -20, 15, 0
+ createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, ANIM_TARGET, 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
delay 6
- createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x0
- createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0
+ createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, ANIM_TARGET, 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
delay 6
- createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xffec, 0x0
- createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, -20, -20, 0
+ createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_TARGET, 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
delay 6
- createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 0x10, 0xfff8, 0x0
- createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe0, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gGenesisSupernovaBubbleSpriteTemplate, ANIM_TARGET, 2, 16, -8, 0
+ createsprite gGenesisSupernovaExplosionSpriteTemplate, ANIM_ATTACKER, 3, -32, -24, ANIM_TARGET, 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
return
GenesisSupernovaBuffEffectPlayer_1:
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x24, 0x80, 0x24, 0x30, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 36, 128, 36, 48, 48
delay 2
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x10, 0x80, 0x10, 0x35, 0x30
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 16, 128, 16, 53, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x45, 0x80, 0x45, 0x3a, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 69, 128, 69, 58, 48
delay 2
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x60, 0x80, 0x60, 0x30, 0x30
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 96, 128, 96, 48, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x30, 0x80, 0x30, 0x3c, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 48, 128, 48, 60, 48
delay 2
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x55, 0x80, 0x55, 0x33, 0x30
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 85, 128, 85, 51, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
GenesisSupernovaBuffEffectPlayer_2:
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x29, 0x80, 0x29, 0x31, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 41, 128, 41, 49, 48
delay 2
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x73, 0x80, 0x73, 0x32, 0x30
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 115, 128, 115, 50, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x4a, 0x80, 0x4a, 0x3c, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 74, 128, 74, 60, 48
delay 2
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x64, 0x80, 0x64, 0x33, 0x30
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 100, 128, 100, 51, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x2c, 0x80, 0x2c, 0x3d, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 44, 128, 44, 61, 48
delay 2
- createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 0x6c, 0x80, 0x6c, 0x30, 0x30
+ createsprite gGenesisSupernovaOrbRiseSpriteTemplate, ANIM_ATTACKER, 50, 108, 128, 108, 48, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
GenesisSupernovaReversalWave:
- createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x0
- createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x2a
- createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x54
- createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0x7e
+ createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 26, 0
+ createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 26, 42
+ createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 26, 84
+ createsprite gGenesisSupernovaReversalSpriteTemplate, ANIM_ATTACKER, 2, 26, 126
return
GenesisSupernovaFlare:
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_ATTACKER
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_ATTACKER
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_ATTACKER
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_ATTACKER
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_ATTACKER
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_ATTACKER
delay 2
return
GenesisSupernovaBuffOpponent_1:
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0x94, 0x40, 0x94, 0x0, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 148, 64, 148, 0, 48
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0x80, 0x40, 0x80, 0x0, 0x30
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 128, 64, 128, 0, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xb5, 0x40, 0xb5, 0x0, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 181, 64, 181, 0, 48
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xd0, 0x40, 0xd0, 0x0, 0x30
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 208, 64, 208, 0, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xa0, 0x40, 0xa0, 0x0, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 160, 64, 160, 0, 48
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xc5, 0x40, 0xc5, 0x0, 0x30
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 197, 64, 197, 0, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
GenesisSupernovaBuffOpponent_2:
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0x99, 0x40, 0x99, 0x0, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 153, 64, 153, 0, 48
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xe3, 0x40, 0xe3, 0x0, 0x30
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 227, 64, 227, 0, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xba, 0x40, 0xba, 0x0, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 186, 64, 186, 0, 48
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xd4, 0x40, 0xd4, 0x0, 0x30
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 212, 64, 212, 0, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0x9c, 0x40, 0x9c, 0x0, 0x30
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 156, 64, 156, 0, 48
delay 2
- createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 0xdc, 0x40, 0xdc, 0x0, 0x30
+ createsprite gGenesisSupernovaSpinUpSpriteTemplate, ANIM_ATTACKER, 50, 220, 64, 220, 0, 48
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
gBattleAnimMove_SinisterArrowRaid::
invisible ANIM_TARGET
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gArrowRaidFlyUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gArrowRaidFlyUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
waitforvisualfinish
unloadspritegfx ANIM_TAG_ROUND_SHADOW
unloadspritepal ANIM_TAG_ROUND_SHADOW
@@ -33380,63 +33380,63 @@ gBattleAnimMove_SinisterArrowRaid::
waitforvisualfinish
visible ANIM_ATTACKER
playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET
- createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER
delay 2
- createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER
delay 2
- createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER
delay 2
- createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER
delay 2
- createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER
delay 2
- createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gArrowRaidArrowUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER
delay 2
waitforvisualfinish
invisible ANIM_ATTACKER
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET SinisterArrowRaidOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET SinisterArrowRaidOnPlayer
SinisterArrowRaidOnOpponent:
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gArrowRaidFlyRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x88, 0x100, 0x38, 0x15 @left to right
+ createsprite gArrowRaidFlyRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 136, 256, 56, 21 @left to right
delay 5
- createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x8a, 0x100, 0x3a, 0x15 @left to right
+ createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, -16, 138, 256, 58, 21 @left to right
delay 1
- createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x8c, 0x100, 0x3c, 0x15
+ createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, -16, 140, 256, 60, 21
delay 1
- createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x86, 0x100, 0x36, 0x15
+ createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, -16, 134, 256, 54, 21
delay 1
- createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x84, 0x100, 0x34, 0x15
+ createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, -16, 132, 256, 52, 21
delay 1
- createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x88, 0x100, 0x38, 0x15
+ createsprite gArrowRaidRightUpSpriteTemplate, ANIM_ATTACKER, 50, -16, 136, 256, 56, 21
waitforvisualfinish
delay 10
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER @[x0] [y0] [xf] [yf]
- createsprite gArrowRaidFlyLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x38, 0xfff0, 0x38, 0x15 @right to left
+ createsprite gArrowRaidFlyLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 56, -16, 56, 21 @right to left
delay 5
- createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x36, 0xfff0, 0x36, 0x15
+ createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 288, 54, -16, 54, 21
delay 1
- createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x3a, 0xfff0, 0x3a, 0x15
+ createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 288, 58, -16, 58, 21
delay 1
- createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x37, 0xfff0, 0x37, 0x15
+ createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 288, 55, -16, 55, 21
delay 1
- createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x3c, 0xfff0, 0x3c, 0x15
+ createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 288, 60, -16, 60, 21
delay 1
- createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x38, 0xfff0, 0x38, 0x15
+ createsprite gArrowRaidLeftUpSpriteTemplate, ANIM_ATTACKER, 50, 288, 56, -16, 56, 21
waitforvisualfinish
delay 10
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gArrowRaidFlyRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x08, 0x100, 0x0f, 0x15 @left to right
+ createsprite gArrowRaidFlyRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 8, 256, 15, 21 @left to right
delay 5
- createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x0a, 0x100, 0x11, 0x15
+ createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, -16, 10, 256, 17, 21
delay 1
- createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x0c, 0x100, 0x13, 0x15
+ createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, -16, 12, 256, 19, 21
delay 1
- createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x06, 0x100, 0xd, 0x15
+ createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, -16, 6, 256, 13, 21
delay 1
- createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x04, 0x100, 0xb, 0x15
+ createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, -16, 4, 256, 11, 21
delay 1
- createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x08, 0x100, 0xf, 0x15
+ createsprite gArrowRaidRightDownSpriteTemplate, ANIM_ATTACKER, 50, -16, 8, 256, 15, 21
waitforvisualfinish
call SinisterArrowRaidFlyStrike
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 3, 75
@@ -33444,51 +33444,51 @@ SinisterArrowRaidOnOpponent:
call SinisterArrowRaidStrikeOpponent
call SinisterArrowRaidOpponentExplosion
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_TARGET, 1
call SinisterArrowRaidFinalExplosion
goto SinisterArrowRaidFinish
@on player
SinisterArrowRaidOnPlayer:
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gArrowRaidFlyLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x08, 0xfff0, 0x0f, 0x15 @right to left
+ createsprite gArrowRaidFlyLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 8, -16, 15, 21 @right to left
delay 5
- createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x0a, 0xfff0, 0x11, 0x15
+ createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 10, -16, 17, 21
delay 1
- createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x0c, 0xfff0, 0x13, 0x15
+ createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 12, -16, 19, 21
delay 1
- createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x06, 0xfff0, 0xd, 0x15
+ createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 6, -16, 13, 21
delay 1
- createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x04, 0xfff0, 0xb, 0x15
+ createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 4, -16, 11, 21
delay 1
- createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x08, 0xfff0, 0xf, 0x15
+ createsprite gArrowRaidFaceUpLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 8, -16, 15, 21
waitforvisualfinish
delay 10
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gArrowRaidFlyRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x38, 0x100, 0x38, 0x15 @left to right
+ createsprite gArrowRaidFlyRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 56, 256, 56, 21 @left to right
delay 5
- createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x36, 0x100, 0x36, 0x15
+ createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 54, 256, 54, 21
delay 1
- createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x3a, 0x100, 0x3a, 0x15
+ createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 58, 256, 58, 21
delay 1
- createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x37, 0x100, 0x37, 0x15
+ createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 55, 256, 55, 21
delay 1
- createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x3c, 0x100, 0x3c, 0x15
+ createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 60, 256, 60, 21
delay 1
- createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, 0xfff0, 0x38, 0x100, 0x38, 0x15
+ createsprite gArrowRaidRightSpriteTemplate, ANIM_ATTACKER, 50, -16, 56, 256, 56, 21
waitforvisualfinish
delay 10
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER
- createsprite gArrowRaidFlyLeftSpriteTemplate, ANIM_ATTACKER, 50, 0x0120, 0x78, 0xfff0, 0x58, 0x15 @right to left
+ createsprite gArrowRaidFlyLeftSpriteTemplate, ANIM_ATTACKER, 50, 288, 120, -16, 88, 21 @right to left
delay 5
- createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x100, 0x8a, 0xfff0, 0x3a, 0x15
+ createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 256, 138, -16, 58, 21
delay 1
- createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x100, 0x8c, 0xfff0, 0x3c, 0x15
+ createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 256, 140, -16, 60, 21
delay 1
- createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x100, 0x86, 0xfff0, 0x36, 0x15
+ createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 256, 134, -16, 54, 21
delay 1
- createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x100, 0x84, 0xfff0, 0x34, 0x15
+ createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 256, 132, -16, 52, 21
delay 1
- createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 0x100, 0x88, 0xfff0, 0x38, 0x15
+ createsprite gArrowRaidLeftDownSpriteTemplate, ANIM_ATTACKER, 50, 256, 136, -16, 56, 21
waitforvisualfinish
call SinisterArrowRaidFlyStrike
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 3, 75
@@ -33496,7 +33496,7 @@ SinisterArrowRaidOnPlayer:
call SinisterArrowRaidArrowsStrikePlayer
call SinisterArrowRaidPlayerExplosion
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_TARGET, 1
call SinisterArrowRaidFinalExplosion
@ finish
SinisterArrowRaidFinish:
@@ -33504,168 +33504,168 @@ SinisterArrowRaidFinish:
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 0, RGB(12, 4, 14) @ bg to nrml
delay 5
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
SinisterArrowRaidFlyStrike:
visible ANIM_TARGET
delay 10
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER
- createsprite gArrowRaidFlyStrikeSpriteTemplate, ANIM_TARGET, 2, 0x14
+ createsprite gArrowRaidFlyStrikeSpriteTemplate, ANIM_TARGET, 2, 20
waitforvisualfinish
delay 5
return
SinisterArrowRaidStrikeOpponent:
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 133, -16, 165, 64, 4
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x95, 0xfff0, 0xb5, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 149, -16, 181, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x75, 0xfff0, 0x95, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 117, -16, 149, 64, 4
delay 1
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xa5, 0xfff0, 0xc5, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 165, -16, 197, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x6f, 0xfff0, 0x8f, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 111, -16, 143, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x7b, 0xfff0, 0x9b, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 123, -16, 155, 64, 4
delay 1
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 133, -16, 165, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xa2, 0xfff0, 0xc2, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 162, -16, 194, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x82, 0xfff0, 0xa2, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 130, -16, 162, 64, 4
delay 1
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x87, 0xfff0, 0xa7, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 135, -16, 167, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x72, 0xfff0, 0x92, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 114, -16, 146, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 133, -16, 165, 64, 4
delay 1
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x8b, 0xfff0, 0xab, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 139, -16, 171, 64, 4
delay 1
return
SinisterArrowRaidOpponentExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 133, -16, 165, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x95, 0xfff0, 0xb5, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 149, -16, 181, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x75, 0xfff0, 0x95, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 117, -16, 149, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xa5, 0xfff0, 0xc5, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 165, -16, 197, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x6f, 0xfff0, 0x8f, 0x40, 0x4
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 111, -16, 143, 64, 4
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, ANIM_TARGET, 1
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x7b, 0xfff0, 0x9b, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 123, -16, 155, 64, 4
delay 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 133, -16, 165, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xa2, 0xfff0, 0xc2, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 162, -16, 194, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x82, 0xfff0, 0xa2, 0x40, 0x4
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 130, -16, 162, 64, 4
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, ANIM_TARGET, 1
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x87, 0xfff0, 0xa7, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 135, -16, 167, 64, 4
delay 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x72, 0xfff0, 0x92, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 114, -16, 146, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x85, 0xfff0, 0xa5, 0x40, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 133, -16, 165, 64, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x8b, 0xfff0, 0xab, 0x40, 0x4
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 139, -16, 171, 64, 4
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, ANIM_TARGET, 1
delay 1
return
SinisterArrowRaidArrowsStrikePlayer:
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -11, -16, 69, 144, 4
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x5, 0xfff0, 0x55, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 5, -16, 85, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffe5, 0xfff0, 0x35, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -27, -16, 53, 144, 4
delay 1
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x15, 0xfff0, 0x65, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 21, -16, 101, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffdf, 0xfff0, 0x2f, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -33, -16, 47, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffeb, 0xfff0, 0x3b, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -21, -16, 59, 144, 4
delay 1
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -11, -16, 69, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x12, 0xfff0, 0x62, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 18, -16, 98, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff2, 0xfff0, 0x42, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -14, -16, 66, 144, 4
delay 1
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff7, 0xfff0, 0x47, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -9, -16, 71, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffe2, 0xfff0, 0x32, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -30, -16, 50, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -11, -16, 69, 144, 4
delay 1
playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xfff0, 0x4b, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -5, -16, 75, 144, 4
delay 1
return
SinisterArrowRaidPlayerExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -11, -16, 69, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x5, 0xfff0, 0x55, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 5, -16, 85, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffe5, 0xfff0, 0x35, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -27, -16, 53, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x15, 0xfff0, 0x65, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 21, -16, 101, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffdf, 0xfff0, 0x2f, 0x90, 0x4
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -33, -16, 47, 144, 4
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffeb, 0xfff0, 0x3b, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -21, -16, 59, 144, 4
delay 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -11, -16, 69, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0x12, 0xfff0, 0x62, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 18, -16, 98, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff2, 0xfff0, 0x42, 0x90, 0x4
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -14, -16, 66, 144, 4
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff7, 0xfff0, 0x47, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -9, -16, 71, 144, 4
delay 1
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xffe2, 0xfff0, 0x32, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -30, -16, 50, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfff5, 0xfff0, 0x45, 0x90, 0x4
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -11, -16, 69, 144, 4
delay 1
- createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xfff0, 0x4b, 0x90, 0x4
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gArrowRaidArrowOnslaughtSpriteTemplate, ANIM_TARGET, 2, -5, -16, 75, 144, 4
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
delay 1
return
SinisterArrowRaidFinalExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gArrowRaidExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_TARGET, 1
delay 6
return
@@ -33675,16 +33675,16 @@ gBattleAnimMove_MaliciousMoonsault::
waitbgfadeout
setalpha 12, 8
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER
- createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 0x6, 0x1, 0x0
+ createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0
delay 1
- createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0
- createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0
- createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0
- createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0
+ createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 24, 0, 0, 0
+ createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, -20, -10, 24, 0, 0, 0
+ createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0, -16, 24, 0, 0, 0
+ createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 20, -10, 24, 0, 0, 0
+ createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 32, 0, 24, 0, 0, 0
+ createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 20, 10, 24, 0, 0, 0
+ createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 24, 0, 0, 0
+ createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -20, 10, 24, 0, 0, 0
waitforvisualfinish
delay 0
monbg ANIM_ATTACKER
@@ -33692,17 +33692,17 @@ gBattleAnimMove_MaliciousMoonsault::
call MaliciousMoonsaultFireSpin
call MaliciousMoonsaultFireSpin
clearmonbg ANIM_ATTACKER
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gMaliciousMoonsaultRedFlySpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gMaliciousMoonsaultRedFlySpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 336
call MaliciousMoonsaultFireSpin
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 5, 0, 10, RGB_BLACK @ target darkens
delay 26
playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET
createsprite gMaliciousMoonsaultRedBounceSpriteTemplate, ANIM_TARGET, 3
delay 7
- createsprite gMaliciousMoonsaultRedImpactSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x0
+ createsprite gMaliciousMoonsaultRedImpactSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -256, 21, 0, 4
call MaliciousMoonsaultExplosion
delay 6
@@ -33710,87 +33710,87 @@ gBattleAnimMove_MaliciousMoonsault::
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 1, 0, 16, RGB(27, 0, 0) @ fade all to red
delay 6
call MaliciousMoonsaultExplosion
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16
waitforvisualfinish
call ResetFromRedScreen
blendoff
end
MaliciousMoonsaultFireSpin:
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 44, 1296, 30, 13, 50, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2f, 0x490, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 47, 1168, 25, 11, -42, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x30, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 48, 1248, 20, 16, -46, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x500, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 44, 1280, 25, 16, 46, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x540, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 49, 1344, 20, 8, 42, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x4d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 49, 1232, 30, 15, -50, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2f, 0x490, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 47, 1168, 25, 11, -42, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 44, 1296, 30, 13, 50, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x500, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 44, 1280, 25, 16, 46, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x30, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 48, 1248, 20, 16, -46, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x4d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 49, 1232, 30, 15, -50, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x540, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 49, 1344, 20, 8, 42, ANIM_ATTACKER
delay 1
return
MaliciousMoonsaultExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, ANIM_TARGET, 1
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gMaliciousMoonsaultExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_TARGET, 1
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gMaliciousMoonsaultFireblastSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
return
gBattleAnimMove_OceanicOperetta::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
- createvisualtask AnimTask_CreateSpotlight, 0x2
- createvisualtask AnimTask_HardwarePaletteFade, 0x2, 0xf8, 0x3, 0x0, 0xa, 0x0
+ createvisualtask AnimTask_CreateSpotlight, 2
+ createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 0, 10, 0
waitforvisualfinish
- createsprite gOceanOperaSpotlightSpriteTemplate, ANIM_TARGET, 2, 0x0, 0xfff8, 0x50 @spotlight
+ createsprite gOceanOperaSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8, 80 @spotlight
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
call OceanicOperettaBuffEffect
delay 8
@@ -33804,170 +33804,170 @@ gBattleAnimMove_OceanicOperetta::
unloadspritepal ANIM_TAG_FOCUS_ENERGY
unloadspritegfx ANIM_TAG_SPOTLIGHT
unloadspritepal ANIM_TAG_SPOTLIGHT
- createvisualtask AnimTask_HardwarePaletteFade, 0x2, 0xf8, 0x3, 0xa, 0x0, 0x1
+ createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 10, 0, 1
waitforvisualfinish
- createvisualtask AnimTask_RemoveSpotlight, 0x2
+ createvisualtask AnimTask_RemoveSpotlight, 2
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 6, RGB(0, 13, 23)
invisible ANIM_ATTACKER
- createsprite gOceanOperaBlueChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 @charge
+ createsprite gOceanOperaBlueChargeSpriteTemplate, ANIM_ATTACKER, 2, 0 @charge
delay 2
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 80, 1
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER
- createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_ATTACKER
+ createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_ATTACKER
delay 2
- createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER
+ createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_ATTACKER
delay 2
- createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
+ createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
playsewithpan SE_M_GRASSWHISTLE, SOUND_PAN_ATTACKER
- createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER
+ createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_ATTACKER
delay 2
- createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER
+ createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_ATTACKER
delay 2
- createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER
+ createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_ATTACKER
delay 2
- createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER
+ createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_ATTACKER
delay 2
- createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER
+ createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_ATTACKER
delay 2
- createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER
+ createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_ATTACKER
delay 2
- createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, 0x0, 0x0
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER
+ createsprite gOceanOperaBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_ATTACKER
delay 2
- createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER
+ createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_ATTACKER
delay 26
visible ANIM_TARGET
- loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 0x14, 0x5
- createsprite gOceanOperaMovingOrbsSpriteTemplate, ANIM_ATTACKER, 50, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0 @mist ball
+ loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 20, 5
+ createsprite gOceanOperaMovingOrbsSpriteTemplate, ANIM_ATTACKER, 50, 0, 0, 0, 0, 96, 0 @mist ball
delay 92
visible ANIM_ATTACKER
delay 0
- loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 0x14, 0x1
- createsprite gOceanOperaBlueOrbsSpriteTemplate, ANIM_ATTACKER, 50, 0x0, ANIM_TARGET, 0x0, 0x0, 0x0, 0x35
+ loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 20, 1
+ createsprite gOceanOperaBlueOrbsSpriteTemplate, ANIM_ATTACKER, 50, 0, ANIM_TARGET, 0, 0, 0, 53
delay 5
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
- createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0
+ createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0
delay 4
- createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0
+ createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0
delay 4
- createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0
+ createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0
delay 4
- createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0
+ createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0
delay 4
- createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0
+ createsprite gOceanOperaExpandingRingSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0
delay 16
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 8, 64
call OceanicOperettaExplosion
createvisualtask AnimTask_BlendBattleAnimPal, 2, F_PAL_TARGET, 2, 0, 11, RGB(0, 13, 23)
- createvisualtask AnimTask_CreateRaindrops, 0x2, 0x0, 0x3, 0x78
+ createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120
call OceanicOperettaExplosion
call OceanicOperettaExplosion
playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER
- createvisualtask AnimTask_CreateRaindrops, 0x2, 0x0, 0x3, 0x78
+ createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 2, F_PAL_TARGET, 2, 11, 0, RGB(0, 13, 23)
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 6, 0, RGB(0, 13, 23)
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
OceanicOperettaBuffEffect:
- createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gOceanOperaBlueFlareSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
OceanicOperettaExplosion:
- createsprite gOceanOperaSparkleSpriteTemplate, ANIM_ATTACKER, 51, 0xfff1, 0x0, ANIM_TARGET, 0x0, 0x20, 0x3c
+ createsprite gOceanOperaSparkleSpriteTemplate, ANIM_ATTACKER, 51, -15, 0, ANIM_TARGET, 0, 32, 60
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 24, -24, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0xfff0, 0x10, ANIM_TARGET, 0x1
- createsprite gOceanOperaSparkleSpriteTemplate, ANIM_ATTACKER, 51, 0xc, 0xfffb, ANIM_TARGET, 0x0, 0x20, 0x3c
+ createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, -16, 16, ANIM_TARGET, 1
+ createsprite gOceanOperaSparkleSpriteTemplate, ANIM_ATTACKER, 51, 12, -5, ANIM_TARGET, 0, 32, 60
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gOceanOperaExplosionSpriteTemplate, ANIM_ATTACKER, 51, 16, 16, ANIM_TARGET, 1
delay 6
return
gBattleAnimMove_SplinteredStormshards::
- createvisualtask AnimTask_GetLycanrocForm, 0x2
- jumpargeq 0x0 0x0 SplinteredStormshardsDayForme
- jumpargeq 0x0 0x2 SplinteredStormshardsDuskForme
+ createvisualtask AnimTask_GetLycanrocForm, 2
+ jumpargeq 0 0 SplinteredStormshardsDayForme
+ jumpargeq 0 2 SplinteredStormshardsDuskForme
SplinteredStormshardsNightForme:
fadetobg BG_ROCK_FIELD_NIGHT
goto SplinteredStormshardsFinishFade
@@ -33979,22 +33979,22 @@ SplinteredStormshardsDuskForme:
SplinteredStormshardsFinishFade:
waitbgfadeout
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET SplinteredStormshardsByOpponent
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET SplinteredStormshardsByOpponent
SplinteredStormshardsByPlayer:
- loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 0x10, 0xc
+ loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 16, 12
call SplinteredStormshardsPlayer_Rising1
delay 2
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gSplinteredShardsFlySpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
call SplinteredStormshardsPlayer_Rising1
call SplinteredStormshardsPlayer_Rising2
visible ANIM_ATTACKER
delay 1
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x60, 0x80, 0x60, 0x30, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 96, 128, 96, 48, 48
blend_color_cycle selector=F_PAL_ATTACKER, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB(31, 31, 22)
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1
delay 2
@@ -34004,16 +34004,16 @@ SplinteredStormshardsByPlayer:
waitforvisualfinish
waitforvisualfinish
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 @lunge forward
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 @lunge forward
delay 2
invisible ANIM_ATTACKER
- createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0 @superpower
+ createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0 @superpower
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 96, 1 @shake target up and down
- createsprite gSplinteredShardsSplinterOpponentSteepSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x18, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsSplinterOpponentSteepSpriteTemplate, ANIM_ATTACKER, 2, -48, 24, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 4
- createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0x1, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_ATTACKER, 2, -48, 1, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 4
@@ -34025,7 +34025,7 @@ SplinteredStormshardsEnd:
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 4, 16, 0, RGB_WHITE
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
restorebg
waitbgfadein
@@ -34033,46 +34033,46 @@ SplinteredStormshardsEnd:
end
SplinteredStormshardsExplosionOpponent:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
- createsprite gSplinteredShardsSplinterOpponentSteepSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x20, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
+ createsprite gSplinteredShardsSplinterOpponentSteepSpriteTemplate, ANIM_TARGET, 2, -48, 32, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
- createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x0, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
+ createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_TARGET, 2, -48, 0, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
- createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0xfff8, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
+ createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_TARGET, 2, -48, -8, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
- createsprite gSplinteredShardsSplinterOpponentSteepSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x20, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
+ createsprite gSplinteredShardsSplinterOpponentSteepSpriteTemplate, ANIM_TARGET, 2, -48, 32, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
- createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x0, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
+ createsprite gSplinteredShardsSplinterOpponentShallowSpriteTemplate, ANIM_TARGET, 2, -48, 0, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 2
return
SplinteredStormshardsByOpponent:
- loopsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET 0x10 0xc
+ loopsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET 16 12
call SplinteredStormshardsOpponent_Rising1
delay 2
- createsprite gSplinteredShardsFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gSplinteredShardsFlySpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
call SplinteredStormshardsOpponent_Rising1
call SplinteredStormshardsOpponent_Rising2
visible ANIM_ATTACKER
delay 1
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xd0, 0x40, 0xd0, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 208, 64, 208, 0, 48
blend_color_cycle selector=F_PAL_ATTACKER, delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB(31, 31, 22)
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1
delay 2
@@ -34081,16 +34081,16 @@ SplinteredStormshardsByOpponent:
delay 16
waitforvisualfinish
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 @lunge forward
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 @lunge forward
delay 2
invisible ANIM_ATTACKER
- createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0 @superpower
+ createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0 @superpower
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 96, 1 @shake target up and down
- createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x18, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, -48, 24, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 4
- createsprite gSplinteredShardsSplinterPlayerSteepSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x30, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsSplinterPlayerSteepSpriteTemplate, ANIM_TARGET, 2, -48, 48, 0, 0, 10, 1, 0, 1
delay 4
delay 4
call SplinteredStormshardsExplosionOnPlayer
@@ -34098,146 +34098,146 @@ SplinteredStormshardsByOpponent:
goto SplinteredStormshardsEnd
SplinteredStormshardsExplosionOnPlayer:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
- createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x20, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
+ createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, -48, 32, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
- createsprite gSplinteredShardsSplinterPlayerSteepSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x35, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
+ createsprite gSplinteredShardsSplinterPlayerSteepSpriteTemplate, ANIM_TARGET, 2, -48, 53, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
- createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x1c, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
+ createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, -48, 28, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
- createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x16, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
+ createsprite gSplinteredShardsSplinterPlayerShallowSpriteTemplate, ANIM_TARGET, 2, -48, 22, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 2
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
- createsprite gSplinteredShardsSplinterPlayerSteepSpriteTemplate, ANIM_TARGET, 2, 0xffd0, 0x2d, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
+ createsprite gSplinteredShardsSplinterPlayerSteepSpriteTemplate, ANIM_TARGET, 2, -48, 45, 0, 0, 10, 1, 0, 1
delay 4
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
delay 2
return
SplinteredStormshardsBrownExplode:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gSplinteredShardsExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
delay 6
return
SplinteredStormshardsPlayer_Rising1:
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x24, 0x80, 0x24, 0x30, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 36, 128, 36, 48, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x10, 0x80, 0x10, 0x35, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 16, 128, 16, 53, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x45, 0x80, 0x45, 0x3a, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 69, 128, 69, 58, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x60, 0x80, 0x60, 0x30, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 96, 128, 96, 48, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x30, 0x80, 0x30, 0x3c, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 48, 128, 48, 60, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x55, 0x80, 0x55, 0x33, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 85, 128, 85, 51, 48
delay 2
return
SplinteredStormshardsPlayer_Rising2:
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x29, 0x80, 0x29, 0x31, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 41, 128, 41, 49, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x73, 0x80, 0x73, 0x32, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 115, 128, 115, 50, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x4a, 0x80, 0x4a, 0x3c, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 74, 128, 74, 60, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x64, 0x80, 0x64, 0x33, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 100, 128, 100, 51, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x2c, 0x80, 0x2c, 0x3d, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 44, 128, 44, 61, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x6c, 0x80, 0x6c, 0x30, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 108, 128, 108, 48, 48
delay 2
return
SplinteredStormshardsOpponent_Rising1:
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x94, 0x40, 0x94, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 148, 64, 148, 0, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x80, 0x40, 0x80, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 128, 64, 128, 0, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xb5, 0x40, 0xb5, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 181, 64, 181, 0, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xd0, 0x40, 0xd0, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 208, 64, 208, 0, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xa0, 0x40, 0xa0, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 160, 64, 160, 0, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xc5, 0x40, 0xc5, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 197, 64, 197, 0, 48
delay 2
return
SplinteredStormshardsOpponent_Rising2:
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x99, 0x40, 0x99, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 153, 64, 153, 0, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xe3, 0x40, 0xe3, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 227, 64, 227, 0, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xba, 0x40, 0xba, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 186, 64, 186, 0, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xd4, 0x40, 0xd4, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 212, 64, 212, 0, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0x9c, 0x40, 0x9c, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 156, 64, 156, 0, 48
delay 2
- createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 0xdc, 0x40, 0xdc, 0x0, 0x30
+ createsprite gSplinteredShardsRisingSpearSpriteTemplate, ANIM_ATTACKER, 50, 220, 64, 220, 0, 48
delay 2
return
gBattleAnimMove_LetsSnuggleForever::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0
- createsprite gSnuggleForeverHeartSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x14
+ createsprite gSnuggleForeverHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20
playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1, 0x1, 0x0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 1, 0
delay 7
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x3, 0x3, 0x80
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 3, 3, 128
delay 8
playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0x0, 0x80
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 128
delay 7
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0x1, 0x0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 1, 0
delay 8
playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER
delay 7
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x3, 0x0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 3, 0
delay 7
fadetobg BG_SNUGGLE_FOREVER
waitbgfadeout
invisible ANIM_ATTACKER
delay 1
- setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles
- createvisualtask AnimTask_SnatchOpposingMonMove, 0x2
+ setarg 7, 0 @;Clear arg 7 so task works properly in Link battles
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2
delay 16
playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER
waitforvisualfinish
- setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles
- createvisualtask AnimTask_SnatchOpposingMonMove, 0x2
+ setarg 7, 0 @;Clear arg 7 so task works properly in Link battles
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2
delay 16
playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER
waitforvisualfinish
- setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles
- createvisualtask AnimTask_SnatchOpposingMonMove, 0x2
+ setarg 7, 0 @;Clear arg 7 so task works properly in Link battles
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2
delay 16
playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 50, 1
@@ -34252,15 +34252,15 @@ gBattleAnimMove_LetsSnuggleForever::
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 2, 0, 16, RGB_BLACK
waitforvisualfinish
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gSnuggleForeverEyesSpriteTemplate, ANIM_ATTACKER, 13, 0xa, 0xfff2
- createsprite gSnuggleForeverEyesSpriteTemplate, ANIM_ATTACKER, 13, 0xfff6, 0xfff2
+ createsprite gSnuggleForeverEyesSpriteTemplate, ANIM_ATTACKER, 13, 10, -14
+ createsprite gSnuggleForeverEyesSpriteTemplate, ANIM_ATTACKER, 13, -10, -14
delay 32
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 16, RGB(29, 28, 21)
- createvisualtask AnimTask_GrowTarget, 0x5
+ createvisualtask AnimTask_GrowTarget, 5
delay 5
- loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 0x14, 10
- createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x0, 0xffee, 0xa, 0xa, 0x4
- createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x1, 0x12, 0xa, 0xa, 0x4
+ loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 20, 10
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 0, -18, 10, 10, 4
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 1, 18, 10, 10, 4
call LetsSnuggleForeverStars_1
call LetsSnuggleForeverImpacts
call LetsSnuggleForeverStars_2
@@ -34269,8 +34269,8 @@ gBattleAnimMove_LetsSnuggleForever::
playsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET
call LetsSnuggleForeverStars_2
call LetsSnuggleForeverImpacts
- createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x0, 0xffee, 0x6, 0x6, 0x4
- createvisualtask AnimTask_TranslateMonElliptical, 0x2, 0x1, 0x12, 0x6, 0x6, 0x4
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 0, -18, 6, 6, 4
+ createvisualtask AnimTask_TranslateMonElliptical, 2, 1, 18, 6, 6, 4
call LetsSnuggleForeverStars_1
delay 0
call LetsSnuggleForeverImpacts
@@ -34306,20 +34306,20 @@ LetsSnuggleForeverImpacts:
delay 8
return
LetsSnuggleForeverStars_1:
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xa0, 0xffe0
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff00, 0xffd8
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x80, 0xfff0
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0x1a0, 0xffda
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xff80, 0xffea
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0xfff8, 0xfe80, 0xffe1
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, -16, -8, 160, -32
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, -16, -8, -256, -40
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, -16, -8, 128, -16
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, -16, -8, 416, -38
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, -16, -8, -128, -22
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, -16, -8, -384, -31
return
LetsSnuggleForeverStars_2:
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xa0, 0xffe0
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff00, 0xffd8
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x80, 0xfff0
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0x1a0, 0xffda
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xff80, 0xffea
- createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x8, 0xfe80, 0xffe1
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 16, 8, 160, -32
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 16, 8, -256, -40
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 16, 8, 128, -16
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 16, 8, 416, -38
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 16, 8, -128, -22
+ createsprite gSnuggleForeverStarSpriteTemplate, ANIM_TARGET, 3, 16, 8, -384, -31
return
@@ -34331,8 +34331,8 @@ gBattleAnimMove_ClangorousSoulblaze::
call ClangorousSoulblazeBuffEffect
call ClangorousSoulblazeBuffEffect
waitforvisualfinish
- createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, 0xfff0, 0x0, 0x0, 0x0, 0xa, ANIM_ATTACKER, ANIM_RIGHT_FIST, 0x1
- createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0xa, ANIM_ATTACKER, ANIM_LEFT_FIST, 0x1
+ createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, ANIM_ATTACKER, ANIM_RIGHT_FIST, 1
+ createsprite gClangorousSoulRedFistTemplate, ANIM_ATTACKER, 2, 16, 0, 0, 0, 10, ANIM_ATTACKER, ANIM_LEFT_FIST, 1
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
waitforvisualfinish
unloadspritegfx ANIM_TAG_HORSESHOE_SIDE_FIST
@@ -34341,23 +34341,23 @@ gBattleAnimMove_ClangorousSoulblaze::
unloadspritepal ANIM_TAG_SPARKLE_2 @stars
waitforvisualfinish
playsewithpan SE_SHINY, SOUND_PAN_ATTACKER
- createsprite gClangorousSoulRedRingTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gClangorousSoulRedRingTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
waitforvisualfinish
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gClangoorousSoulblazeWhiteFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gClangoorousSoulblazeWhiteFlySpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
delay 2
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xFFE0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, -32, 1, -1
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -768, 10, 0, 42
- createsprite gSlideMonToOffsetPartnerSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0xfd00, 0xa, 0x0, 0x2a
+ createsprite gSlideMonToOffsetPartnerSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, -768, 10, 0, 42
delay 32
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x20, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 0, 32, 1, -1
delay 12
setalpha 12, 8
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 0, 4, RGB_BLACK
visible ANIM_ATTACKER
monbg ANIM_ATTACKER
- loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 0xe, 0xa
- createsprite gClangoorousSoulblazePurpleChargeSpriteTemplate, ANIM_ATTACKER, 2, 0x0 @charge
+ loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 14, 10
+ createsprite gClangoorousSoulblazePurpleChargeSpriteTemplate, ANIM_ATTACKER, 2, 0 @charge
call ClangorousSoulblazeEnergySwirl
call ClangorousSoulblazeEnergySwirl
call ClangorousSoulblazeEnergySwirl
@@ -34380,8 +34380,8 @@ gBattleAnimMove_ClangorousSoulblaze::
delay 0
monbg ANIM_TARGET
playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_ATTACKER
- createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0x0, 0x0 @music note
+ createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 0, 0, 29, 0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0 @music note
delay 5
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 2, 60
createvisualtask AnimTask_HorizontalShake, 5, ANIM_DEF_PARTNER, 2, 60
@@ -34392,221 +34392,221 @@ gBattleAnimMove_ClangorousSoulblaze::
call ClangorousSoulblazePulse_3
delay 5
call ClangorousSoulblazePulse_4
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET ClangorousSoulblazeOnOpponent
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET ClangorousSoulblazeOnOpponent
ClangorousSoulblazeOnPlayer:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0xfff0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, -16, ANIM_ATTACKER, 1
delay 5
call ClangorousSoulblazePulse_5
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_ATTACKER, 1
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x20, 0xffe0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 32, -32, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_1
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x20, 0x0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 32, 0, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_2
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x30, 0xffe0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 48, -32, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_3
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x30, 0xfff0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 48, -16, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_4
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x35, 0x0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 53, 0, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_5
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x40, 0x10, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 64, 16, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_1
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x40, 0x0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 64, 0, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_2
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x45, 0xfff0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 69, -16, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_3
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x50, 0x10, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 80, 16, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_4
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x50, 0xffe0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 80, -32, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_5
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x60, 0xfff0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 96, -16, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_1
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x60, 0xffe0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 96, -32, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_2
delay 5
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 4, 0, 16, RGB_WHITE
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x65, 0xfff0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 101, -16, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_3
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x65, 0xffe0, ANIM_ATTACKER, 0x1
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 101, -32, ANIM_ATTACKER, 1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1
call ClangorousSoulblazePulse_4
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, ANIM_TARGET, 1
call ClangorousSoulblazePulse_5
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, ANIM_TARGET, 1
call ClangorousSoulblazePulse_1
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, ANIM_TARGET, 1
call ClangorousSoulblazePulse_2
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, ANIM_TARGET, 1
goto FINISH_SOULBLAZE
ClangorousSoulblazeOnOpponent:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x15, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 21, ANIM_ATTACKER, 1
delay 5
call ClangorousSoulblazePulse_5
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 0, ANIM_ATTACKER, 1
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x25, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 32, 37, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_1
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x20, 0x5, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 32, 5, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_2
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x30, 0x25, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 48, 37, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_3
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x30, 0x15, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 48, 21, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_4
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x35, 0x0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 53, 0, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_5
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x40, 0xa, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 64, 10, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_1
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x40, 0x0, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 64, 0, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_2
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x45, 0x10, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 69, 16, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_3
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x50, 0x30, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 80, 48, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_4
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x50, 0x25, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 80, 37, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_5
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x60, 0x40, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 96, 64, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_1
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x60, 0x45, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 96, 69, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_2
delay 5
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 4, 0, 16, RGB_WHITE
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x65, 0x35, ANIM_ATTACKER, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 101, 53, ANIM_ATTACKER, 1
call ClangorousSoulblazePulse_3
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x65, 0x40, ANIM_ATTACKER, 0x1
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 101, 64, ANIM_ATTACKER, 1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
call ClangorousSoulblazePulse_4
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
call ClangorousSoulblazePulse_5
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
call ClangorousSoulblazePulse_1
delay 5
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
call ClangorousSoulblazePulse_2
delay 5
- createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
FINISH_SOULBLAZE:
waitforvisualfinish
clearmonbg ANIM_TARGET
delay 5
call ResetFromWhiteScreen
blendoff
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10
- createsprite gSlideMonToOriginalPosPartnerSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0x0, 0x10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16
+ createsprite gSlideMonToOriginalPosPartnerSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0, 16
waitforvisualfinish
end
ClangorousSoulblazeEnergySwirl:
- createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x180, 0x32, 0x8, 0x32, ANIM_ATTACKER
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_ATTACKER
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 2
- createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x20, 0xf0, 0x28, 0xb, 0xffd2, ANIM_ATTACKER
+ createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_ATTACKER
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
- createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1a0, 0x28, 0x4, 0x2a, ANIM_ATTACKER
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
+ createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_ATTACKER
delay 2
- createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1f, 0x120, 0x2d, 0x6, 0xffd6, ANIM_ATTACKER
+ createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_ATTACKER
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
- createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x1c, 0x1c0, 0x2d, 0xb, 0x2e, ANIM_ATTACKER
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
+ createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_ATTACKER
delay 2
- createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x21, 0x1d0, 0x32, 0xa, 0xffce, ANIM_ATTACKER
+ createsprite gClangoorousSoulblazePurpleSwirlSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_ATTACKER
delay 2
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
return
ClangorousSoulblazeBuffEffect:
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
- createsprite gClangorousSoulBlueBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gClangorousSoulBlueBuffTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gClangorousSoulPurpleBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
- createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x0, 0x0, 0x20, 0x3c
+ createsprite gClangorousSoulPurpleBuffTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
+ createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60
delay 4
- createsprite gClangorousSoulWhiteBuffTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gClangorousSoulWhiteBuffTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, 0x0, 0x0, 0x20, 0x3c
+ createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60
return
ClangorousSoulblazePulse_1:
playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER
- createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1, 0x1, 0x0
+ createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 0, 0, 29, 0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 1, 0
return
ClangorousSoulblazePulse_2:
playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER
- createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x3, 0x3, 0x80
+ createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 0, 0, 29, 0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 3, 3, 128
return
ClangorousSoulblazePulse_3:
playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER
- createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0x0, 0x80
+ createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 0, 0, 29, 0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 128
return
ClangorousSoulblazePulse_4:
playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER
- createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1, 0x1, 0x0
+ createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 0, 0, 29, 0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 1, 0
return
ClangorousSoulblazePulse_5:
playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER
- createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 0x10, 0x0, 0x0, 0x0, 0x1d, 0x0
- createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0x3, 0x0
+ createsprite gClangoorousSoulblazePulseSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 0, 0, 29, 0
+ createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 3, 0
return
gBattleAnimMove_GuardianOfAlola::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
- createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x0, 0x0
+ createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0
playsewithpan SE_SHINY, SOUND_PAN_ATTACKER
waitforvisualfinish
unloadspritegfx ANIM_TAG_THIN_RING
@@ -34615,7 +34615,7 @@ gBattleAnimMove_GuardianOfAlola::
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -256, 15, 0, 4
call GuardianOfAlolaRocksPlayer
delay 10
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16
call GuardianOfAlolaRocksPlayer
waitforvisualfinish
delay 10
@@ -34623,14 +34623,14 @@ gBattleAnimMove_GuardianOfAlola::
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -256, 15, 0, 4
call GuardianOfAlolaRocksPlayer
delay 10
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0x0, 0x10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 0, 16
call GuardianOfAlolaRocksPlayer
waitforvisualfinish
delay 10
delay 16
call GuardianOfAlolaRocksPlayer
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 12, 12, RGB(31, 27, 9) @;Yellow
- createvisualtask AnimTask_NightShadeClone, 0x5, 0x75
+ createvisualtask AnimTask_NightShadeClone, 5, 117
delay 16
call GuardianOfAlolaRocksPlayer
delay 16
@@ -34646,12 +34646,12 @@ gBattleAnimMove_GuardianOfAlola::
createvisualtask AnimTask_PositionFissureBgOnBattler, 5, ANIM_TARGET, 5, -1
waitbgfadein
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
- createsprite gGuardianOfAlolaFistSpriteTemplate, ANIM_TARGET, 3, 0x0, 0xffd0, 0x1f
+ createsprite gGuardianOfAlolaFistSpriteTemplate, ANIM_TARGET, 3, 0, -48, 31
delay 36
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 11, 0, RGB_BLACK
playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET
- createvisualtask AnimTask_HorizontalShake, 3, ANIM_TARGET, 10, 0x25
- loopsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET 0x10 0x9
+ createvisualtask AnimTask_HorizontalShake, 3, ANIM_TARGET, 10, 37
+ loopsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET 16 9
call GuardianOfAlolaRocksTarget
call GuardianOfAlolaRockGeyser
call GuardianOfAlolaRockGeyser
@@ -34687,20 +34687,20 @@ GuardianOfAlolaRocksTarget:
createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 12, 4, -16, 18
return
GuardianOfAlolaRockGeyser:
- createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 0xfffc, 0x10 @ -4, -0x10
+ createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, -4, 16
delay 0
- createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 0x100D, 0x10
+ createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 4109, 16
delay 0
- createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 0x4, 0x10
+ createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 4, 16
delay 0
- createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, 0xfff0, 0x10
+ createsprite gGuardianOfAlolaDirtGeyserSpriteTemplate, ANIM_TARGET, 2, 0, -16, 16
delay 0
return
gBattleAnimMove_SearingSunrazeSmash::
invisible ANIM_TARGET
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 14, RGB(27, 0, 0)
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
@@ -34718,39 +34718,39 @@ gBattleAnimMove_SearingSunrazeSmash::
unloadspritegfx ANIM_TAG_SPARKLE_2 @sparkles
unloadspritepal ANIM_TAG_SPARKLE_2 @sparkles
playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER
- createsprite gSearingSunrazeSmashGrowWormholeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gSearingSunrazeSmashGrowWormholeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0
delay 16
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 53, -19, 1, 2
delay 2
visible ANIM_TARGET
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 80, -1024, ANIM_TARGET, 0 @ spin up target
call SearingSunrazeSmashRingsInward
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x30 @ target back to origin (slowly)
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 48 @ target back to origin (slowly)
call SearingSunrazeSmashRingsInward
delay 13
invisible ANIM_TARGET
- createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 6
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 @lunge forward
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 @lunge forward
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
delay 2
invisible ANIM_ATTACKER
- createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0x0 @superpower
- createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gGrowingSuperpowerTemplate, ANIM_TARGET, 3, 0 @superpower
+ createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_ATTACKER
fadetobg BG_COSMIC
waitbgfadeout
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xf700, 0x0, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 1, 0, ANIM_TARGET, 1 @ fix tgt rotation
invisible ANIM_TARGET
waitbgfadein
visible ANIM_ATTACKER
visible ANIM_TARGET
createsprite gSearingSunrazeSmashInfernoOrbSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER
- loopsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER, 0x13, 0x8
+ loopsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER, 19, 8
call SearingSunrazeSmashCharge
call SearingSunrazeSmashCharge
call SearingSunrazeSmashCharge
@@ -34761,7 +34761,7 @@ gBattleAnimMove_SearingSunrazeSmash::
unloadspritegfx ANIM_TAG_THIN_RING @ring
unloadspritepal ANIM_TAG_THIN_RING @ring
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
- createsprite gSearingSunrazeSmashRedFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gSearingSunrazeSmashRedFlySpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ATTACKER), 3, 0, 15, RGB_BLACK
waitforvisualfinish
playsewithpan SE_ORB, SOUND_PAN_ATTACKER
@@ -34783,7 +34783,7 @@ gBattleAnimMove_SearingSunrazeSmash::
call SunsteelStrikeBeam
stopsound
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
- createsprite gSunsteelStrikeSuperpowerTemplate, ANIM_TARGET, 2, 0x14
+ createsprite gSunsteelStrikeSuperpowerTemplate, ANIM_TARGET, 2, 20
SearingSunrazeSmashImpact:
delay 8
delay 1
@@ -34791,27 +34791,27 @@ SearingSunrazeSmashImpact:
unloadspritepal ANIM_TAG_GOLD_RING @beam
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 4, 60
playsewithpan SE_M_CUT, SOUND_PAN_TARGET
- createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x20, 0xffe0, 0x0
+ createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 32, -32, 0
delay 2
playsewithpan SE_M_CUT, SOUND_PAN_TARGET
- createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x20, 0xffe0, 0x1
+ createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 32, -32, 1
delay 2
playsewithpan SE_M_CUT, SOUND_PAN_TARGET
- createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x1c, 0xffe0, 0x0
+ createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 28, -32, 0
delay 2
playsewithpan SE_M_CUT, SOUND_PAN_TARGET
- createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x1c, 0xffe0, 0x1
+ createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 28, -32, 1
delay 2
playsewithpan SE_M_CUT, SOUND_PAN_TARGET
- createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x2c, 0xffe0, 0x0
+ createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 44, -32, 0
delay 2
playsewithpan SE_M_CUT, SOUND_PAN_TARGET
- createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 0x2c, 0xffe0, 0x1
+ createsprite gSearingSunrazeSmashWhiteCutSpriteTemplate, ANIM_TARGET, 2, 44, -32, 1
delay 2
delay 0
unloadspritegfx ANIM_TAG_METEOR @superpower
unloadspritepal ANIM_TAG_METEOR @superpower
- createsprite gSearingSunrazeSmashCrossImpactSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x24
+ createsprite gSearingSunrazeSmashCrossImpactSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 36
playsewithpan SE_M_LEER, SOUND_PAN_TARGET
visible ANIM_ATTACKER
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_ATTACKER), 3, 15, 0, RGB_BLACK
@@ -34838,82 +34838,82 @@ SearingSunrazeSmashImpact:
call ResetFromRedScreen
end
SearingSunrazeSmashFlare:
- createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x0, 0x0, 0x20, 0x3c
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, 0x0, 0x0, 0x20, 0x3c
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
SearingSunrazeSmashRingsInward:
- createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gSearingSunrazeSmashBlueRingInwardsSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
return
SearingSunrazeSmashInferno:
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 3
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 3
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xa, 0x0, 0xfffe
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0xfffe, 0x0
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x2, 0x0
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0xfffe, 0x2
- createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xf, 0x2, 0x2
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, -2, 2
+ createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2
delay 3
return
SearingSunrazeSmashCharge:
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 44, 1296, 30, 13, 50, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2f, 0x490, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 47, 1168, 25, 11, -42, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x30, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 48, 1248, 20, 16, -46, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x500, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 44, 1280, 25, 16, 46, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x540, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 49, 1344, 20, 8, 42, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x4d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 49, 1232, 30, 15, -50, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2f, 0x490, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 47, 1168, 25, 11, -42, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x510, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 44, 1296, 30, 13, 50, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x2c, 0x500, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 44, 1280, 25, 16, 46, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x30, 0x4e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 48, 1248, 20, 16, -46, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x4d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 49, 1232, 30, 15, -50, ANIM_ATTACKER
delay 1
- createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x31, 0x540, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 49, 1344, 20, 8, 42, ANIM_ATTACKER
delay 1
return
ResetFromRedScreen:
- createvisualtask AnimTask_AllBattlersInvisible, 0xA
+ createvisualtask AnimTask_AllBattlersInvisible, 10
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 0, RGB(27, 0, 0) @Everything from red
restorebg
waitbgfadeout
- setarg 0x7 0xffff
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ setarg 7, -1
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitbgfadein
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 0, RGB(13, 31, 12)
waitforvisualfinish
@@ -34922,7 +34922,7 @@ ResetFromRedScreen:
gBattleAnimMove_MenacingMoonrazeMaelstrom::
invisible ANIM_TARGET
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 14, RGB(0, 6, 16)
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
@@ -34938,38 +34938,38 @@ gBattleAnimMove_MenacingMoonrazeMaelstrom::
unloadspritegfx ANIM_TAG_SPARKLE_2 @sparkles
unloadspritepal ANIM_TAG_SPARKLE_2 @sparkles
playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER
- createsprite gMoonrazeMaelstromWormholeSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gMoonrazeMaelstromWormholeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0
delay 16
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 53, -19, 1, 2 @ target down and left (instantaneously (last arg))
delay 2
visible ANIM_TARGET
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 80, -1024, ANIM_TARGET, 0 @ spin up target
call MenacingMoonrazeMaelstromRingsInward
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x30 @ target back to origin (slowly)
+ createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 48 @ target back to origin (slowly)
call MenacingMoonrazeMaelstromRingsInward
delay 13
invisible ANIM_TARGET
- createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gMoonrazeMaelstromWhiteRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gMoonrazeMaelstromWhiteRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 6
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 0x4, 0x4 @lunge forward
+ createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 @lunge forward
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
delay 2
invisible ANIM_ATTACKER
- createsprite gMoonrazeMaelstromSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0x0 @superpower
- createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gMoonrazeMaelstromSuperpowerSpriteTemplate, ANIM_TARGET, 3, 0 @superpower
+ createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_ATTACKER
fadetobg BG_COSMIC
waitbgfadeout
- createvisualtask AnimTask_IsTargetPlayerSide, 0x2
- jumpargeq 0x7 ANIM_TARGET MenacingMoonrazeMaelstromOnPlayer
+ createvisualtask AnimTask_IsTargetPlayerSide, 2
+ jumpargeq 7 ANIM_TARGET MenacingMoonrazeMaelstromOnPlayer
MenacingMoonrazeMaelstromOnOpponent:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0xfd00, 0x200, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, -768, 512, 1, -1
goto MenacingMoonrazeMaelstromFinish
MenacingMoonrazeMaelstromOnPlayer:
- createvisualtask AnimTask_StartSlidingBg, 0x5, 0x200, 0xfd00, 0x1, 0xffff
+ createvisualtask AnimTask_StartSlidingBg, 5, 512, -768, 1, -1
MenacingMoonrazeMaelstromFinish:
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 1, 0, ANIM_TARGET, 1 @ fix tgt rotation
invisible ANIM_TARGET
@@ -34990,7 +34990,7 @@ MenacingMoonrazeMaelstromFinish:
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1
call MenacingMoonrazeMaelstromChargeUp
call MenacingMoonrazeMaelstromChargeUp
- createsoundtask SoundTask_LoopSEAdjustPanning, 0xf0, 0xffc0, SOUND_PAN_TARGET, 0x1, 0xf, 0x0, 0x5
+ createsoundtask SoundTask_LoopSEAdjustPanning, 240, -64, SOUND_PAN_TARGET, 1, 15, 0, 5
call MenacingMoonrazeMaelstromBeam
call MenacingMoonrazeMaelstromBeam
call MenacingMoonrazeMaelstromBeam
@@ -35041,63 +35041,63 @@ MenacingMoonrazeMaelstromFinish:
end
MenacingMoonrazeMaelstromExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gMoonrazeMaelstromExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
delay 6
return
MenacingMoonrazeMaelstromFlare:
- createsprite gMoonrazeMaelstromBlackSparklesSpriteTemplate, ANIM_ATTACKER, 2, 0xfff1, 0x0, 0x0, 0x0, 0x20, 0x3c
- createsprite gMoonrazeMaelstromBlueBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gMoonrazeMaelstromBlackSparklesSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60
+ createsprite gMoonrazeMaelstromBlueBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gMoonrazeMaelstromBlueBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gMoonrazeMaelstromBlueBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gMoonrazeMaelstromBlackSparklesSpriteTemplate, ANIM_ATTACKER, 2, 0xc, 0xfffb, 0x0, 0x0, 0x20, 0x3c
- createsprite gMoonrazeMaelstromBlackBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gMoonrazeMaelstromBlackSparklesSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60
+ createsprite gMoonrazeMaelstromBlackBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gMoonrazeMaelstromBlackBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gMoonrazeMaelstromBlackBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gMoonrazeMaelstromBlackBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gMoonrazeMaelstromBlackBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
MenacingMoonrazeMaelstromRingsInward:
- createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gMoonrazeMaelstromWhiteRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gMoonrazeMaelstromWhiteRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
- createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0x0, 0x0, ANIM_TARGET, 0x0
+ createsprite gMoonrazeMaelstromBlueRingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, ANIM_TARGET, 0
delay 8
return
MenacingMoonrazeMaelstromChargeUp:
- createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
- createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x210, 0x1e, 0xd, 0x32, ANIM_ATTACKER
+ createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
+ createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER
delay 2
- createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x1e0, 0x14, 0x10, 0xffd2, ANIM_ATTACKER
+ createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER
delay 2
- createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
- createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
+ createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER
delay 2
- createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER
delay 2
- createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x200, 0x19, 0x10, 0x2e, ANIM_ATTACKER
+ createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER
delay 2
- createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x1d0, 0x1e, 0xf, 0xffce, ANIM_ATTACKER
+ createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER
delay 2
- createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
- createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x21, 0x240, 0x14, 0x8, 0x2a, ANIM_ATTACKER
+ createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
+ createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER
delay 2
- createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1f, 0x190, 0x19, 0xb, 0xffd6, ANIM_ATTACKER
+ createsprite gMoonrazeMaelstromBlackOrbsSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER
delay 2
- createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gMoonrazeMaelstromPurpleBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
MenacingMoonrazeMaelstromBeam:
createsprite gMoonrazeMaelstromBeamSpriteTemplate, ANIM_TARGET, 2
@@ -35126,8 +35126,8 @@ gBattleAnimMove_LightThatBurnsTheSky::
waitforvisualfinish
createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 @ charge particles to attacker
delay 30
- loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0xe, 0xa
- createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 3, 0x0
+ loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 14, 10
+ createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 3, 0
call LightThatBurnsTheSkyGreenSparks
call LightThatBurnsTheSkyGreenSparks
call LightThatBurnsTheSkyGreenSparks
@@ -35142,27 +35142,27 @@ gBattleAnimMove_LightThatBurnsTheSky::
clearmonbg ANIM_ATTACKER
blendoff
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0xfff0, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -32, -16, 37, 44, 32, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -32, -16, 37, 44, 96, 8, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -32, -16, 37, 44, 160, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -32, -16, 37, 44, 224, 8, 2, 3
delay 1
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffd0, 0xffe4, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -48, -28, 37, 44, 32, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -48, -28, 37, 44, 96, 8, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -48, -28, 37, 44, 160, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -48, -28, 37, 44, 224, 8, 2, 3
delay 1
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0x20, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0x60, 0x8, 0x1, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0xa0, 0x8, 0x0, 0x3
- createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0xffd8, 0x25, 0x2c, 0xe0, 0x8, 0x2, 0x3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -64, -40, 37, 44, 32, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -64, -40, 37, 44, 96, 8, 1, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -64, -40, 37, 44, 160, 8, 0, 3
+ createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 2, -64, -40, 37, 44, 224, 8, 2, 3
delay 6
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 3, 60
unloadspritegfx ANIM_TAG_LEAF @green
unloadspritepal ANIM_TAG_LEAF @green
unloadspritegfx ANIM_TAG_ELECTRIC_ORBS @charge
unloadspritepal ANIM_TAG_ELECTRIC_ORBS @charge
- panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
+ panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
monbg ANIM_TARGET
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 6, 0, 16, RGB(31, 31, 16) @;Light yellow
call PhotonGeyserBeam
@@ -35181,100 +35181,100 @@ gBattleAnimMove_LightThatBurnsTheSky::
waitbgfadeout
end
LightThatBurnsTheSkyBlast_1:
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -20, -10, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0, -16, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 20, -10, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 32, 0, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 20, 10, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -20, 10, 24, 0, 0, 0
return
LightThatBurnsTheSkyBlast_2:
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffd8, 0xffec, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffe0, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x28, 0xffec, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x40, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x28, 0x14, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x20, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffd8, 0x14, 0x18, 0x0, 0x0, 0x0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -64, 0, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, -40, -20, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0, -32, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 40, -20, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 64, 0, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 40, 20, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -40, 20, 24, 0, 0, 0
return
LightThatBurnsTheSkyBlast_3:
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffa0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, 0xffc4, 0xffe2, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x0, 0xffd0, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0x3c, 0xffe2, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x60, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 0x3c, 0x1e, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x30, 0x18, 0x0, 0x0, 0x0
- createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0xffc4, 0x1e, 0x18, 0x0, 0x0, 0x0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -96, 0, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 6, -60, -30, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 0, -48, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 70, 60, -30, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 96, 0, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, 0, 48, 24, 0, 0, 0
+ createsprite gLightThatBurnsTheSkyBlastBurnSpriteTemplate, ANIM_ATTACKER, 2, -60, 30, 24, 0, 0, 0
return
LightThatBurnsTheSkyGeyser:
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0x0005, 0x1, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 3, 5, 1, 0
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xfff1, 0x1, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -11, -15, 1, 0
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xfffb, 0x1, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 8, -5, 1, 0
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0x0012, 0x1, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -6, 18, 1, 0
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0x0005, 0x1, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0, 5, 1, 0
playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0xfff5, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 3, -11, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xffe1, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -11, -31, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xffeb, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 8, -21, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0x0002, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -6, 2, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0xfff5, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0, -11, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0003, 0xffe5, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 3, -27, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfff5, 0xffd1, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -11, -47, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0008, 0xffdb, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 8, -37, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0xfffa, 0xfff2, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, -6, -14, ANIM_TARGET, 0
delay 0
- createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0x0000, 0xffe5, ANIM_TARGET, 0x0
+ createsprite gLightThatBurnsTheSkyExplosionSpriteTemplate, ANIM_TARGET, 4, 0, -27, ANIM_TARGET, 0
delay 0
return
LightThatBurnsTheSkyGreenSparks:
- createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x30, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x30, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x30, 0x2c, 0x0, 0x28, 0x2, 0x3
- createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x0, 0x3
- createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x15, 0x2c, 0x40, 0x28, 0x1, 0x3
- createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x15, 0x2c, 0x80, 0x28, 0x0, 0x3
- createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, 0x15, 0x2c, 0x0, 0x28, 0x2, 0x3
+ createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0, 0, 48, 44, 0, 40, 0, 3
+ createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0, 0, 48, 44, 64, 40, 1, 3
+ createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0, 0, 48, 44, 128, 40, 0, 3
+ createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0, 0, 48, 44, 0, 40, 2, 3
+ createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0, 0, 21, 44, 0, 40, 0, 3
+ createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0, 0, 21, 44, 64, 40, 1, 3
+ createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0, 0, 21, 44, 128, 40, 0, 3
+ createsprite gLightThatBurnsTheSkyGreenSparkSpriteTemplate, ANIM_TARGET, 3, 0, 0, 21, 44, 0, 40, 2, 3
delay 16
return
gBattleAnimMove_SoulStealing7StarStrike::
- createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
+ createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 10
waitforvisualfinish
setalpha 12, 8
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
- createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 2, 0xffe0, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0xffec, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0x0, 0xfff0, 0x18, 0x0, 0x0, 0x0
- createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xfff6, 0x18, 0x0, 0x0, 0x0
- createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0
- createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0x14, 0xa, 0x18, 0x0, 0x0, 0x0
- createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x10, 0x18, 0x0, 0x0, 0x0
- createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 2, 0xffec, 0xa, 0x18, 0x0, 0x0, 0x0
+ createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 24, 0, 0, 0
+ createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, -20, -10, 24, 0, 0, 0
+ createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 0, -16, 24, 0, 0, 0
+ createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 20, -10, 24, 0, 0, 0
+ createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 32, 0, 24, 0, 0, 0
+ createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 66, 20, 10, 24, 0, 0, 0
+ createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 24, 0, 0, 0
+ createsprite gSoulStealBlastburnSpriteTemplate, ANIM_ATTACKER, 2, -20, 10, 24, 0, 0, 0
delay 5
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gSoulStealBlackFlySpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gSoulStealBlackFlySpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336
waitforvisualfinish
invisible ANIM_TARGET
fadetobg BG_SOULSTEALING_7STAR_STRIKE
@@ -35294,45 +35294,45 @@ gBattleAnimMove_SoulStealing7StarStrike::
unloadspritegfx ANIM_TAG_FIRE_PLUME
unloadspritepal ANIM_TAG_FIRE_PLUME
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 37, 1
- createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x14, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, -64, 20, 0, 0, 10, 1, 0, 1
delay 4
- createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0x0, ANIM_TARGET, 0x2, 0x0, 0x0, 0x30
+ createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0, ANIM_TARGET, 2, 0, 0, 48
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
delay 4
- createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x10, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, -64, 16, 0, 0, 10, 1, 0, 1
delay 4
- createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0x0, ANIM_TARGET, 0x12, 0x0, 0x0, 0x2c
+ createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0, ANIM_TARGET, 18, 0, 0, 44
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
delay 4
- createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x08, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, -64, 8, 0, 0, 10, 1, 0, 1
delay 4
- createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0xffeb, 0xfff8, 0x2, 0x0, 0x0, 0x28
+ createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, -21, -8, 2, 0, 0, 40
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
- createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x12, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, -64, 18, 0, 0, 10, 1, 0, 1
delay 4
- createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0xfffb, 0xfff4, 0x2, 0x0, 0x0, 0x24
+ createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, -5, -12, 2, 0, 0, 36
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
- createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x15, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, -64, 21, 0, 0, 10, 1, 0, 1
delay 4
- createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0x5, 0xfff8, 0x2, 0x0, 0x0, 0x20
+ createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 5, -8, 2, 0, 0, 32
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
- createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x0c, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, -64, 12, 0, 0, 10, 1, 0, 1
delay 4
- createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0xfff0, 0x1, 0x2, 0x0, 0x0, 0x1c
+ createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, -16, 1, 2, 0, 0, 28
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
- createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x13, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, -64, 19, 0, 0, 10, 1, 0, 1
delay 4
- createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x1, 0x2, 0x0, 0x0, 0x18
+ createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0, 1, 2, 0, 0, 24
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET
- createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x0e, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, -64, 14, 0, 0, 10, 1, 0, 1
delay 4
- createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0xfff0, 0x10, 0x2, 0x0, 0x0, 0x14
- createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, 0xffc0, 0x12, 0x0, 0x0, 0xa, 0x1, 0x0, 0x1
+ createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, -16, 16, 2, 0, 0, 20
+ createsprite gSoulStealBlueFistSpriteTemplate, ANIM_TARGET, 2, -64, 18, 0, 0, 10, 1, 0, 1
delay 4
- createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x10, 0x2, 0x0, 0x0, 0x10
+ createsprite gSoulStealBlueStarSpriteTemplate, ANIM_TARGET, 4, 0, 16, 2, 0, 0, 16
delay 4
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
- createsprite gSoulStealBlackFlySpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0xd, 0x150
+ createsprite gSoulStealBlackFlySpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 336
delay 32
unloadspritegfx ANIM_TAG_PAIN_SPLIT
unloadspritepal ANIM_TAG_PAIN_SPLIT
@@ -35341,26 +35341,26 @@ gBattleAnimMove_SoulStealing7StarStrike::
unloadspritegfx ANIM_TAG_HANDS_AND_FEET
unloadspritepal ANIM_TAG_HANDS_AND_FEET
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER
- setarg 0x7 0x0 @;Clear arg 7 so task works properly in Link battles
- createvisualtask AnimTask_SnatchOpposingMonMove, 0x2
+ setarg 7, 0 @;Clear arg 7 so task works properly in Link battles
+ createvisualtask AnimTask_SnatchOpposingMonMove, 2
delay 28
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 16, RGB_BLACK
delay 1
- createsprite gSoulStealZStarSpriteTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x1, 0x24
+ createsprite gSoulStealZStarSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 36
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x0
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x2a
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x54
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0x7e
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0xa8
- createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0xd2
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 0
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 42
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 84
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 126
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 168
+ createsprite gWillOWispFireSpriteTemplate, ANIM_TARGET, 2, 210
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
call SoulStealingSevenStarStrikeBlueParalysis
call SoulStealingSevenStarStrikeBlueParalysis
waitforvisualfinish
visible ANIM_ATTACKER
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
- createsprite gTargetTwinkleSpriteTemplate, ANIM_TARGET, 13, 0x0, 0x0, ANIM_TARGET @detect star
+ createsprite gTargetTwinkleSpriteTemplate, ANIM_TARGET, 13, 0, 0, ANIM_TARGET @detect star
delay 10
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 8, 32
call SoulStealingSevenStarStrikeExplosion
@@ -35374,53 +35374,53 @@ gBattleAnimMove_SoulStealing7StarStrike::
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 0, RGB_BLACK
waitforvisualfinish
- createvisualtask AnimTask_AllBattlersVisible, 0xA
+ createvisualtask AnimTask_AllBattlersVisible, 10
waitforvisualfinish
end
SoulStealingSevenStarStrikeBuffEffect:
- createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x1a, 0x2
+ createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2
delay 4
- createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xe, 0x1c, 0x1
+ createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1
delay 4
- createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfffb, 0xa, 0x2
+ createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2
delay 4
- createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0x1c, 0x1a, 0x3
+ createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 26, 3
delay 4
- createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0x0, 0xfff4, 0x0, 0x1
+ createsprite gSoulStealIceBuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1
return
SoulStealingSevenStarStrikeBlueParalysis:
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET
- createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0x5, 0x0, 0x5, 0x0
+ createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 5, 0, 5, 0
delay 2
- createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x5, 0x1
+ createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, -5, 10, 5, 1
delay 2
- createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0xf, 0x14, 0x5, 0x2
+ createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 15, 20, 5, 2
delay 2
- createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0xfff1, 0xfff6, 0x5, 0x0
+ createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, -15, -10, 5, 0
delay 2
- createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0x19, 0x0, 0x5, 0x1
+ createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 25, 0, 5, 1
delay 2
- createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0xfff8, 0x8, 0x5, 0x2
+ createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, -8, 8, 5, 2
delay 2
- createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0x2, 0xfff8, 0x5, 0x0
+ createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 2, -8, 5, 0
delay 2
- createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, 0xffec, 0xf, 0x5, 0x1
+ createsprite gSoulStealBlueParalyzeSpriteTemplate, ANIM_TARGET, 2, -20, 15, 5, 1
return
SoulStealingSevenStarStrikeExplosion:
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0x0, 0x0, ANIM_TARGET, 0x1
+ createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0x18, 0xffe8, ANIM_TARGET, 0x1
+ createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0xfff0, 0x10, ANIM_TARGET, 0x1
+ createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0xffe8, 0xfff4, ANIM_TARGET, 0x1
+ createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, ANIM_TARGET, 1
delay 6
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
- createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1
+ createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, ANIM_TARGET, 1
delay 6
return
@@ -35434,28 +35434,28 @@ gBattleAnimGeneral_SetWeather::
end
gBattleAnimMove_MaxGuard::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_Protect
end
gBattleAnimMove_MaxStrike::
gBattleAnimMove_GMaxReplenish::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_GigaImpact
end
gBattleAnimMove_MaxAirstream::
gBattleAnimMove_GMaxWindRage::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_Aeroblast
end
gBattleAnimMove_MaxOoze::
gBattleAnimMove_GMaxMalodor::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_GunkShot
end
@@ -35464,7 +35464,7 @@ gBattleAnimMove_GMaxWildfire::
gBattleAnimMove_GMaxFireball::
gBattleAnimMove_GMaxCentiferno::
gBattleAnimMove_MaxFlare::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_BlastBurn
end
@@ -35473,7 +35473,7 @@ gBattleAnimMove_GMaxCannonade::
gBattleAnimMove_GMaxHydrosnipe::
gBattleAnimMove_GMaxFoamBurst::
gBattleAnimMove_MaxGeyser::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_HydroCannon
end
@@ -35483,14 +35483,14 @@ gBattleAnimMove_GMaxDrumSolo::
gBattleAnimMove_GMaxTartness::
gBattleAnimMove_GMaxSweetness::
gBattleAnimMove_MaxOvergrowth::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_FrenzyPlant
end
gBattleAnimMove_MaxLightning::
gBattleAnimMove_GMaxStunShock::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_ZapCannon
end
@@ -35499,28 +35499,28 @@ gBattleAnimMove_GMaxChiStrike::
gBattleAnimMove_GMaxOneBlow::
gBattleAnimMove_GMaxRapidFlow::
gBattleAnimMove_MaxKnuckle::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_CloseCombat
end
gBattleAnimMove_GMaxResonance::
gBattleAnimMove_MaxHailstorm::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_SheerCold
end
gBattleAnimMove_GMaxSandblast::
gBattleAnimMove_MaxQuake::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_Fissure
end
gBattleAnimMove_GMaxBefuddle::
gBattleAnimMove_MaxFlutterby::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_BugBuzz
end
@@ -35528,21 +35528,21 @@ gBattleAnimMove_MaxFlutterby::
gBattleAnimMove_GMaxSteelsurge::
gBattleAnimMove_GMaxMeltdown::
gBattleAnimMove_MaxSteelspike::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_HeavySlam
end
gBattleAnimMove_GMaxTerror::
gBattleAnimMove_MaxPhantasm::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_ShadowBall
end
gBattleAnimMove_GMaxGravitas::
gBattleAnimMove_MaxMindstorm::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_PsychoBoost
end
@@ -35550,7 +35550,7 @@ gBattleAnimMove_MaxMindstorm::
gBattleAnimMove_GMaxSmite::
gBattleAnimMove_GMaxFinale::
gBattleAnimMove_MaxStarfall::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_Moonblast
end
@@ -35558,39 +35558,39 @@ gBattleAnimMove_MaxStarfall::
gBattleAnimMove_GMaxStonesurge::
gBattleAnimMove_GMaxVolcalith::
gBattleAnimMove_MaxRockfall::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_RockWrecker
end
gBattleAnimMove_GMaxDepletion::
gBattleAnimMove_MaxWyrmwind::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_SpacialRend
end
gBattleAnimMove_GMaxSnooze::
gBattleAnimMove_MaxDarkness::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_DarkPulse
end
gBattleAnimMove_GMaxCuddle::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_Covet
end
gBattleAnimMove_GMaxVoltCrash::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_VoltTackle
end
gBattleAnimMove_GMaxGoldRush::
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 1
waitforvisualfinish
goto gBattleAnimMove_PayDay
end
@@ -35599,6 +35599,6 @@ gBattleAnimMove_GMaxGoldRush::
gBattleAnimGeneral_DynamaxGrowth:: @ PORTED FROM CFRU
createvisualtask SoundTask_PlayDynamaxCry, 0
delay 8
- createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x0
+ createvisualtask AnimTask_DynamaxGrowth, 5, 1, 0
waitforvisualfinish
end
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index 21ce5144eb..f5e79c85ac 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -15,13 +15,22 @@
#include "constants/game_stat.h"
#include "constants/trainers.h"
#include "constants/species.h"
-#include "constants/generational_changes.h"
+#include "constants/config_changes.h"
.include "asm/macros.inc"
.include "asm/macros/battle_script.inc"
.include "constants/constants.inc"
.section script_data, "aw", %progbits
+BattleScript_TryRevertWeatherform:
+ setbyte gEffectBattler, 0
+ sortbattlers
+BattleScript_TryRevertWeatherformLoop:
+ tryrevertweatherform
+ addbyte gEffectBattler, 1
+ jumpifbytenotequal gEffectBattler, gBattlersCount, BattleScript_TryRevertWeatherformLoop
+ return
+
BattleScript_FickleBeamMessage::
pause B_WAIT_TIME_SHORTEST
printstring STRINGID_FICKLEBEAMDOUBLED
@@ -147,9 +156,12 @@ BattleScript_EffectShedTail::
switchinevents
end
-BattleScript_EffectPsychicNoise::
+BattleScript_MoveEffectPsychicNoise::
+ savetarget
+ copybyte gBattlerTarget, gEffectBattler
printstring STRINGID_PKMNPREVENTEDFROMHEALING
waitmessage B_WAIT_TIME_LONG
+ restoretarget
return
BattleScript_EffectFilletAway::
@@ -230,7 +242,7 @@ BattleScript_MoveSwitchPursuitRet:
jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_MoveSwitchEnd
printstring STRINGID_PKMNWENTBACK
waitmessage B_WAIT_TIME_SHORT
- jumpifnopursuitswitchdmg BattleScript_MoveSwitchOpenPartyScreen
+ jumpifnopursuitswitchdmg BattleScript_MoveSwitchOpenPartyScreenRet
return
BattleScript_MoveSwitch::
@@ -239,13 +251,17 @@ BattleScript_MoveSwitch::
printstring STRINGID_PKMNWENTBACK
waitmessage B_WAIT_TIME_SHORT
BattleScript_MoveSwitchOpenPartyScreen::
+ call BattleScript_MoveSwitchOpenPartyScreenRet
+BattleScript_MoveSwitchEnd:
+ end
+
+BattleScript_MoveSwitchOpenPartyScreenRet:
call BattleScript_MoveSwitchOpenPartyScreenReturnWithNoAnim
switchinanim BS_ATTACKER, FALSE, FALSE
waitstate
switchineffects BS_ATTACKER
switchinevents
-BattleScript_MoveSwitchEnd:
- end
+ return
BattleScript_MoveSwitchOpenPartyScreenReturnWithNoAnim:
openpartyscreen BS_ATTACKER, BattleScript_MoveSwitchEnd
@@ -396,18 +412,18 @@ BattleScript_EffectRevivalBlessingSendOut:
switchinevents
goto BattleScript_MoveEnd
-BattleScript_StealthRockActivates::
- setstealthrock BattleScript_StealthRockActivatesRet
+BattleScript_MoveEffectStealthRock::
+ setstealthrock BattleScript_MoveEffectStealthRockRet
printfromtable gDmgHazardsStringIds
waitmessage B_WAIT_TIME_LONG
-BattleScript_StealthRockActivatesRet:
+BattleScript_MoveEffectStealthRockRet:
return
-BattleScript_SpikesActivates::
- trysetspikes BattleScript_SpikesActivatesRet
+BattleScript_MoveEffectSpikes::
+ trysetspikes BattleScript_MoveEffectSpikesRet
printfromtable gDmgHazardsStringIds
waitmessage B_WAIT_TIME_LONG
-BattleScript_SpikesActivatesRet:
+BattleScript_MoveEffectSpikesRet:
return
BattleScript_EffectTeatime::
@@ -636,11 +652,6 @@ BattleScript_ButHoopaCantUseIt:
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_HyperspaceFuryRemoveProtect::
- printstring STRINGID_BROKETHROUGHPROTECTION
- waitmessage B_WAIT_TIME_LONG
- return
-
BattleScript_MoveEffectIonDeluge::
printstring STRINGID_IONDELUGEON
waitmessage B_WAIT_TIME_LONG
@@ -652,18 +663,19 @@ BattleScript_MoveEffectHaze::
return
BattleScript_MoveEffectLeechSeed::
+ savetarget
+ copybyte gBattlerTarget, gEffectBattler
printstring STRINGID_PKMNSEEDED
waitmessage B_WAIT_TIME_LONG
- goto BattleScript_MoveEnd
-
-BattleScript_MoveEffectReflect::
- printfromtable gReflectLightScreenSafeguardStringIds
- waitmessage B_WAIT_TIME_LONG
+ restoretarget
return
-BattleScript_MoveEffectLightScreen::
+BattleScript_MoveEffectScreens::
+ saveattacker
+ copybyte gBattlerAttacker, gEffectBattler
printfromtable gReflectLightScreenSafeguardStringIds
waitmessage B_WAIT_TIME_LONG
+ restoreattacker
return
BattleScript_EffectStuffCheeks::
@@ -886,13 +898,16 @@ BattleScript_MoveEffectBugBite::
return
BattleScript_MoveEffectCoreEnforcer::
+ savetarget
+ copybyte gBattlerTarget, gEffectBattler
setgastroacid BattleScript_CoreEnforcerRet
printstring STRINGID_PKMNSABILITYSUPPRESSED
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
- tryrevertweatherform
+ call BattleScript_TryRevertWeatherform
flushtextbox
BattleScript_CoreEnforcerRet:
+ restoretarget
return
BattleScript_EffectLaserFocus::
@@ -1107,7 +1122,7 @@ BattleScript_EffectAcupressureTry:
goto BattleScript_MoveEnd
BattleScript_MoveEffectFeint::
- printstring STRINGID_FELLFORFEINT
+ printfromtable gBrokeProtectionStringIds
waitmessage B_WAIT_TIME_LONG
return
@@ -1233,9 +1248,9 @@ BattleScript_EffectAfterYou::
BattleScript_MoveEffectFlameBurst::
printstring STRINGID_BURSTINGFLAMESHIT
waitmessage B_WAIT_TIME_LONG
- healthbarupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
- datahpupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
- tryfaintmon BS_SCRIPTING
+ healthbarupdate BS_EFFECT_BATTLER, PASSIVE_HP_UPDATE
+ datahpupdate BS_EFFECT_BATTLER, PASSIVE_HP_UPDATE
+ tryfaintmon BS_EFFECT_BATTLER
return
BattleScript_EffectPowerTrick::
@@ -1795,7 +1810,7 @@ BattleScript_EffectEntrainment::
printstring STRINGID_PKMNACQUIREDABILITY
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
- tryrevertweatherform
+ call BattleScript_TryRevertWeatherform
flushtextbox
tryendneutralizinggas
goto BattleScript_MoveEnd
@@ -1830,7 +1845,7 @@ BattleScript_EffectHealingWishGen4:
switchindataupdate BS_ATTACKER
hpthresholds BS_ATTACKER
trytoclearprimalweather
- tryrevertweatherform
+ call BattleScript_TryRevertWeatherform
flushtextbox
tryendneutralizinggas
flushtextbox
@@ -1874,7 +1889,7 @@ BattleScript_EffectOverwriteAbility::
printstring STRINGID_PKMNACQUIREDABILITY
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
- tryrevertweatherform
+ call BattleScript_TryRevertWeatherform
flushtextbox
tryendneutralizinggas
goto BattleScript_MoveEnd
@@ -1980,7 +1995,7 @@ BattleScript_EffectGastroAcid::
printstring STRINGID_PKMNSABILITYSUPPRESSED
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
- tryrevertweatherform
+ call BattleScript_TryRevertWeatherform
flushtextbox
tryendneutralizinggas
goto BattleScript_MoveEnd
@@ -2111,7 +2126,7 @@ BattleScript_EffectGravityInternal:
setgravity BattleScript_ButItFailed
attackanimation
waitanimation
-BattleScript_EffectGravitySuccess::
+BattleScript_MoveEffectGravity::
printstring STRINGID_GRAVITYINTENSIFIED
waitmessage B_WAIT_TIME_LONG
savetarget
@@ -2705,7 +2720,7 @@ BattleScript_EffectEvasionUp2::
BattleScript_EffectTransform::
attackcanceler
trytoclearprimalweather
- tryrevertweatherform
+ call BattleScript_TryRevertWeatherform
flushtextbox
tryendneutralizinggas
flushtextbox
@@ -2754,11 +2769,6 @@ BattleScript_PrintReflectLightScreenSafeguardString::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_MoveEffectAuroraVeil::
- printfromtable gReflectLightScreenSafeguardStringIds
- waitmessage B_WAIT_TIME_LONG
- return
-
BattleScript_VoltAbsorbHeal:
copybyte gBattlerAbility, gBattlerTarget
tryhealquarterhealth BS_TARGET, BattleScript_MonMadeMoveUseless @ Check if max hp
@@ -2999,8 +3009,11 @@ BattleScript_EffectDestinyBond::
goto BattleScript_MoveEnd
BattleScript_MoveEffectEerieSpell::
+ savetarget
+ copybyte gBattlerTarget, gEffectBattler
printstring STRINGID_PKMNREDUCEDPP
waitmessage B_WAIT_TIME_LONG
+ restoretarget
return
BattleScript_EffectSpite::
@@ -3721,12 +3734,15 @@ BattleScript_BreakScreens::
return
BattleScript_StealStats::
+ savetarget
+ copybyte gBattlerTarget, gEffectBattler
playmoveanimation MOVE_SPECTRAL_THIEF
waitanimation
printstring STRINGID_SPECTRALTHIEFSTEAL
waitmessage B_WAIT_TIME_LONG
spectralthiefprintstats
flushtextbox
+ restoretarget
return
BattleScript_EffectYawn::
@@ -3739,9 +3755,12 @@ BattleScript_EffectYawn::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_MoveEffectYawnSide::
+BattleScript_MoveEffectYawnFoe::
+ savetarget
+ copybyte gBattlerTarget, gEffectBattler
printstring STRINGID_PKMNWASMADEDROWSY
waitmessage B_WAIT_TIME_LONG
+ restoretarget
return
BattleScript_PrintAbilityMadeIneffective::
@@ -3971,7 +3990,7 @@ BattleScript_FaintBattler::
tryconfusionafterskydrop BS_FAINTED
cleareffectsonfaint BS_FAINTED
trytoclearprimalweather
- tryrevertweatherform
+ call BattleScript_TryRevertWeatherform
flushtextbox
waitanimation
tryactivatereceiver BS_FAINTED
@@ -4525,7 +4544,7 @@ BattleScript_SafeguardProtected::
pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNUSEDSAFEGUARD
waitmessage B_WAIT_TIME_LONG
- end2
+ goto BattleScript_MoveEnd
BattleScript_SafeguardEnds::
pause B_WAIT_TIME_SHORT
@@ -5397,7 +5416,7 @@ BattleScript_BattlerFormChangeNoPopup::
BattleScript_BattlerFormChangeFromAfterAnimation::
handleformchange BS_SCRIPTING, 1
switchinabilities BS_SCRIPTING
- jumpifability BS_TARGET, ABILITY_DISGUISE, BattleScript_ApplyDisguiseFormChangeHPLoss
+ jumpifability BS_SCRIPTING, ABILITY_DISGUISE, BattleScript_ApplyDisguiseFormChangeHPLoss
return
BattleScript_ZenMode::
@@ -5419,7 +5438,8 @@ BattleScript_BattlerFormChangeDisguise::
waitanimation
printstring STRINGID_PKMNDISGUISEWASBUSTED
waitmessage B_WAIT_TIME_SHORT
- goto BattleScript_BattlerFormChangeFromAfterAnimation
+ call BattleScript_BattlerFormChangeFromAfterAnimation
+ return
BattleScript_BattlerFormChangeEnd3NoPopup::
call BattleScript_BattlerFormChangeNoPopup
@@ -5477,9 +5497,10 @@ BattleScript_ApplyDisguiseFormChangeHPLossReturn:
BattleScript_TargetFormChangeNoPopup:
flushtextbox
handleformchange BS_SCRIPTING, 0
- playanimation BS_TARGET, B_ANIM_FORM_CHANGE
+ playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE
waitanimation
- goto BattleScript_BattlerFormChangeFromAfterAnimation
+ call BattleScript_BattlerFormChangeFromAfterAnimation
+ return
BattleScript_TargetFormChange::
pause 5
@@ -5918,6 +5939,13 @@ BattleScript_MoveEffectConfusion::
waitmessage B_WAIT_TIME_LONG
return
+BattleScript_MoveEffectRecoilHP25::
+ saveattacker
+ copybyte gBattlerAttacker, sBATTLER
+ call BattleScript_MoveEffectRecoil
+ restoreattacker
+ return
+
BattleScript_MoveEffectRecoil::
healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
@@ -6632,7 +6660,7 @@ BattleScript_MummyActivates::
printstring STRINGID_ATTACKERACQUIREDABILITY
waitmessage B_WAIT_TIME_LONG
trytoclearprimalweather
- tryrevertweatherform
+ call BattleScript_TryRevertWeatherform
flushtextbox
tryendneutralizinggas
return
@@ -7679,6 +7707,8 @@ BattleScript_DoesntAffectTargetAtkString::
setmoveresultflags MOVE_RESULT_NO_EFFECT
goto BattleScript_MoveEnd
+BattleScript_NoEffectivenessAbility::
+ call BattleScript_AbilityPopUp
BattleScript_DoesntAffectScripting::
pause B_WAIT_TIME_SHORT
printstring STRINGID_SCR_ITDOESNTAFFECT
@@ -7796,21 +7826,21 @@ BattleScript_LowerSideStatsEnd:
restoretarget
return
-BattleScript_EffectSetWeather::
+BattleScript_MoveEffectSetWeather::
playanimation 0, B_ANIM_MAX_SET_WEATHER
printfromtable gMoveWeatherChangeStringIds
waitmessage B_WAIT_TIME_LONG
call BattleScript_ActivateWeatherAbilities
return
-BattleScript_EffectSetTerrain::
+BattleScript_MoveEffectSetTerrain::
printfromtable gTerrainStringIds
waitmessage B_WAIT_TIME_LONG
playanimation BS_ATTACKER, B_ANIM_RESTORE_BG
call BattleScript_ActivateTerrainEffects
return
-BattleScript_DamageNonTypesStarts::
+BattleScript_MoveEffectDamageNonTypes::
printfromtable gDamageNonTypesStartStringIds
waitmessage B_WAIT_TIME_LONG
return
@@ -7822,15 +7852,20 @@ BattleScript_DamageNonTypesContinues::
hitanimation BS_ATTACKER
goto BattleScript_DoTurnDmg
-BattleScript_EffectTryReducePP::
- tryspiteppreduce BattleScript_MoveEnd
+BattleScript_MoveEffectSpite::
+ savetarget
+ copybyte gBattlerTarget, gEffectBattler
+ tryspiteppreduce BattleScript_MoveEffectSpiteRet
printstring STRINGID_PKMNREDUCEDPP
waitmessage B_WAIT_TIME_LONG
+BattleScript_MoveEffectSpiteRet:
+ restoretarget
return
BattleScript_EffectParalyzeSide::
savetarget
- copybyte sBATTLER, gBattlerTarget
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_ParalyzeSideLoop:
jumpifabsent BS_TARGET, BattleScript_ParalyzeSideIncrement
trysetparalysis BattleScript_ParalyzeSideIncrement
@@ -7843,7 +7878,8 @@ BattleScript_ParalyzeSideEnd:
BattleScript_EffectPoisonSide::
savetarget
- copybyte sBATTLER, gBattlerTarget
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_PoisonSideLoop:
jumpifabsent BS_TARGET, BattleScript_PoisonSideIncrement
trysetpoison BattleScript_PoisonSideIncrement
@@ -7856,7 +7892,8 @@ BattleScript_PoisonSideEnd:
BattleScript_EffectPoisonParalyzeSide::
savetarget
- copybyte sBATTLER, gBattlerTarget
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_PoisonParalyzeSideLoop:
jumpifabsent BS_TARGET, BattleScript_PoisonParalyzeSideIncrement
trysetpoisonparalysis BattleScript_PoisonParalyzeSideIncrement
@@ -7869,7 +7906,8 @@ BattleScript_PoisonParalyzeSideEnd:
BattleScript_EffectEffectSporeSide::
savetarget
- copybyte sBATTLER, gBattlerTarget
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_EffectSporeSideLoop:
jumpifabsent BS_TARGET, BattleScript_EffectSporeSideIncrement
tryseteffectspore BattleScript_EffectSporeSideIncrement
@@ -7882,11 +7920,12 @@ BattleScript_EffectSporeSideEnd:
BattleScript_EffectConfuseSide::
savetarget
- copybyte sBATTLER, gBattlerTarget
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_ConfuseSideLoop:
jumpifabsent BS_TARGET, BattleScript_ConfuseSideIncrement
trysetconfusion BattleScript_ConfuseSideIncrement
- volatileanimation BS_EFFECT_BATTLER, VOLATILE_CONFUSION
+ volatileanimation BS_TARGET, VOLATILE_CONFUSION
BattleScript_ConfuseSidePrintMessage:
printstring STRINGID_PKMNWASCONFUSED
waitmessage B_WAIT_TIME_LONG
@@ -7904,11 +7943,12 @@ BattleScript_PrintCoinsScattered:
BattleScript_EffectInfatuateSide::
savetarget
- copybyte sBATTLER, gBattlerTarget
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_InfatuateSideLoop:
jumpifabsent BS_TARGET, BattleScript_InfatuateSideIncrement
trysetinfatuation BattleScript_InfatuateSideIncrement
- volatileanimation BS_EFFECT_BATTLER, VOLATILE_INFATUATION
+ volatileanimation BS_TARGET, VOLATILE_INFATUATION
BattleScript_InfatuateSidePrintMessage:
printstring STRINGID_PKMNFELLINLOVE
waitmessage B_WAIT_TIME_LONG
@@ -7921,7 +7961,8 @@ BattleScript_InfatuateSideEnd:
BattleScript_EffectTormentSide::
savetarget
- copybyte sBATTLER, gBattlerTarget
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_TormentSideLoop:
jumpifabsent BS_TARGET, BattleScript_TormentSideIncrement
trysettorment BattleScript_TormentSideIncrement
@@ -7942,7 +7983,8 @@ BattleScript_TormentEnds::
BattleScript_EffectMeanLookSide::
savetarget
- copybyte sBATTLER, gBattlerTarget
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_MeanLookSideLoop:
jumpifabsent BS_TARGET, BattleScript_MeanLookSideIncrement
trysetescapeprevention BattleScript_MeanLookSideIncrement
@@ -7958,7 +8000,8 @@ BattleScript_MeanLookSideEnd:
BattleScript_EffectRaiseCritAlliesAnim::
savetarget
- copybyte gBattlerTarget, gBattlerAttacker
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_RaiseCritAlliesLoop:
jumpifabsent BS_TARGET, BattleScript_RaiseCritAlliesIncrement
setstatchanger STAT_ATK, 0, FALSE @ for animation
@@ -7966,7 +8009,7 @@ BattleScript_RaiseCritAlliesLoop:
printstring STRINGID_PKMNGETTINGPUMPED
waitmessage B_WAIT_TIME_LONG
BattleScript_RaiseCritAlliesIncrement:
- jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseCritAlliesEnd
+ jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_RaiseCritAlliesEnd
setallytonexttarget BattleScript_RaiseCritAlliesLoop
BattleScript_RaiseCritAlliesEnd:
restoretarget
@@ -7975,7 +8018,8 @@ BattleScript_RaiseCritAlliesEnd:
BattleScript_EffectHealOneSixthAllies::
jumpifteamhealthy BattleScript_MoveEnd
savetarget
- copybyte gBattlerTarget, gBattlerAttacker
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_HealOneSixthAlliesLoop:
jumpifabsent BS_TARGET, BattleScript_HealOneSixthAlliesIncrement
tryhealsixthhealth BattleScript_HealOneSixthAlliesIncrement
@@ -7984,7 +8028,7 @@ BattleScript_HealOneSixthAlliesLoop:
printstring STRINGID_PKMNREGAINEDHEALTH
waitmessage B_WAIT_TIME_LONG
BattleScript_HealOneSixthAlliesIncrement:
- jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_HealOneSixthAlliesEnd
+ jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_HealOneSixthAlliesEnd
setallytonexttarget BattleScript_HealOneSixthAlliesLoop
BattleScript_HealOneSixthAlliesEnd:
restoretarget
@@ -7992,7 +8036,8 @@ BattleScript_HealOneSixthAlliesEnd:
BattleScript_EffectRecycleBerriesAllies::
savetarget
- copybyte gBattlerTarget, gBattlerAttacker
+ copybyte sBATTLER, gEffectBattler
+ copybyte gBattlerTarget, gEffectBattler
BattleScript_RecycleBerriesAlliesLoop:
jumpifabsent BS_TARGET, BattleScript_RecycleBerriesAlliesIncrement
tryrecycleberry BattleScript_RecycleBerriesAlliesIncrement
@@ -8001,13 +8046,13 @@ BattleScript_RecycleBerriesAlliesLoop:
waitmessage B_WAIT_TIME_LONG
swapattackerwithtarget
BattleScript_RecycleBerriesAlliesIncrement:
- jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RecycleBerriesAlliesEnd
+ jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_RecycleBerriesAlliesEnd
setallytonexttarget BattleScript_RecycleBerriesAlliesLoop
BattleScript_RecycleBerriesAlliesEnd:
restoretarget
return
-BattleScript_EffectSteelsurge::
+BattleScript_MoveEffectSteelsurge::
setsteelsurge BattleScript_MoveEnd
printfromtable gDmgHazardsStringIds
waitmessage B_WAIT_TIME_LONG
@@ -8225,3 +8270,4 @@ BattleScript_SilphScopeUnveiled::
printstring STRINGID_GHOSTWASMAROWAK
waitmessage B_WAIT_TIME_LONG
end2
+
diff --git a/data/event_scripts.s b/data/event_scripts.s
index ae21d4b67c..d3988f44d9 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -1062,7 +1062,7 @@ EventScript_AfterWhiteOutHeal::
lockall
msgbox gText_FirstShouldRestoreMonsHealth
call EventScript_PkmnCenterNurse_TakeAndHealPkmn
- call_if_unset FLAG_DEFEATED_RUSTBORO_GYM, EventScript_AfterWhiteOutHealMsgPreRoxanne
+ call_if_unset FLAG_DEFEATED_RUSTBORO_GYM, EventScript_AfterWhiteOutHealMsgPreFirstBoss
call_if_set FLAG_DEFEATED_RUSTBORO_GYM, EventScript_AfterWhiteOutHealMsg
applymovement VAR_LAST_TALKED, Movement_PkmnCenterNurse_Bow
waitmovement 0
@@ -1070,7 +1070,7 @@ EventScript_AfterWhiteOutHeal::
releaseall
end
-EventScript_AfterWhiteOutHealMsgPreRoxanne::
+EventScript_AfterWhiteOutHealMsgPreFirstBoss::
msgbox gText_MonsHealedShouldBuyPotions
return
@@ -1080,6 +1080,7 @@ EventScript_AfterWhiteOutHealMsg::
EventScript_AfterWhiteOutMomHeal::
lockall
+ textcolor NPC_TEXT_COLOR_FEMALE
applymovement LOCALID_PLAYERS_HOUSE_1F_MOM, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox gText_HadQuiteAnExperienceTakeRest
@@ -1432,7 +1433,7 @@ gText_HadQuiteAnExperienceTakeRest::
gText_MomExplainHPGetPotions::
.string "MOM: Oh, good! You and your\n"
.string "POKรฉMON are looking great.\p"
- .string "I just heard from PROF. BIRCH.\p"
+ .string "I just heard from {STR_VAR_1}.\p"
.string "He said that POKรฉMON's energy is\n"
.string "measured in HP.\p"
.string "If your POKรฉMON lose their HP,\n"
diff --git a/data/maps/PalletTown_PlayersHouse_1F_Frlg/map.json b/data/maps/PalletTown_PlayersHouse_1F_Frlg/map.json
index a7310bfc8a..e6c2a181c0 100644
--- a/data/maps/PalletTown_PlayersHouse_1F_Frlg/map.json
+++ b/data/maps/PalletTown_PlayersHouse_1F_Frlg/map.json
@@ -17,7 +17,7 @@
"connections": null,
"object_events": [
{
- "local_id": "LOCALID_MOM",
+ "local_id": "LOCALID_PLAYERS_HOUSE_1F_MOM",
"type": "object",
"graphics_id": "OBJ_EVENT_GFX_MOM_FRLG",
"x": 8,
diff --git a/data/maps/PalletTown_PlayersHouse_1F_Frlg/scripts.inc b/data/maps/PalletTown_PlayersHouse_1F_Frlg/scripts.inc
index bead054c26..d2e0959fb7 100644
--- a/data/maps/PalletTown_PlayersHouse_1F_Frlg/scripts.inc
+++ b/data/maps/PalletTown_PlayersHouse_1F_Frlg/scripts.inc
@@ -9,7 +9,7 @@ PalletTown_PlayersHouse_1F_EventScript_Mom::
call_if_eq VAR_RESULT, MALE, PalletTown_PlayersHouse_1F_EventScript_MomOakLookingForYouMale
call_if_eq VAR_RESULT, FEMALE, PalletTown_PlayersHouse_1F_EventScript_MomOakLookingForYouFemale
closemessage
- applymovement LOCALID_MOM, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_PLAYERS_HOUSE_1F_MOM, Common_Movement_FaceOriginalDirection
waitmovement 0
release
end
diff --git a/data/scripts/pkmn_center_nurse_frlg.inc b/data/scripts/pkmn_center_nurse_frlg.inc
index 18570d3016..b04c3bd6d7 100644
--- a/data/scripts/pkmn_center_nurse_frlg.inc
+++ b/data/scripts/pkmn_center_nurse_frlg.inc
@@ -1,3 +1,16 @@
+EventScript_AfterWhiteOutHeal_Frlg::
+ lockall
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox gText_FirstShouldRestoreMonsHealth
+ call EventScript_PkmnCenterNurse_TakeAndHealPkmn_Frlg
+ call_if_unset FLAG_DEFEATED_BROCK, EventScript_AfterWhiteOutHealMsgPreFirstBoss
+ call_if_set FLAG_DEFEATED_BROCK, EventScript_AfterWhiteOutHealMsg
+ applymovement VAR_LAST_TALKED, Movement_Bow
+ waitmovement 0
+ fadedefaultbgm
+ releaseall
+ end
+
EventScript_PkmnCenterNurse_Frlg::
message Text_WelcomeWantToHealPkmn_Frlg
waitmessage
diff --git a/docs/tutorials/mon_generation.md b/docs/tutorials/mon_generation.md
index dc76ddc66a..3048e99061 100644
--- a/docs/tutorials/mon_generation.md
+++ b/docs/tutorials/mon_generation.md
@@ -1,138 +1,253 @@
# Generation of struct Pokemon instances
-This document describes the ways you generate an instance of struct Pokemon through script or through code.
-These Pokemon can be given to your players, be used as enemy trainer pokemon or as static wild pokemon.
+This document describes the ways you generate an instance of `struct Pokemon` through script or through code.
+These Pokemon can be given to your players, be used as enemy trainer Pokemon or as static wild Pokemon.
## Through script (`givemon` and `createmon`)
### `createmon`
-`createmon` is a script command that allows you to generate a pokemon with any of the properties you might want.
-It has a lot of arguments in order to offer this flexibility.
-`side`, `slot`, `species` and `level` are the required arguments
-`side` determines if the pokemon will be created as a player pokemon or an enemy pokemon: 0 will put the pokemon in the player party and 1 in the enemy party
-`slot` determines the slot in the player or enemy party the pokemon will occupy. `slot` goes from 0 to 5 but if `side` is 0 (player pokemon), setting the slot to 6 will instead give the pokemon to player automatically putting it in the first empty slot or sending it to the PC when the party is the full. (Setting `slot` to 6 when trying to create an enemy pokemon will result in the `createmon` command being ignored)
-`species` and `level` refers to the species id and the level of the pokemon you want to generate
-`item`, `ball`, `nature`, `abilityNum`, `gender`, `hpEv`, `atkEv`, `defEv`, `speedEv`, `spAtkEv`, `spDefEv`, `hpIv`, `atkIv`, `defIv`, `speedIv`, `spAtkIv`, `spDefIv`, `move1`, `move2`, `move3`, `move4`, `shinyMode`, `gmaxFactor`, `teraType`, `dmaxLevel` are the optional arguments. They are pretty explicit in what they refer to but let's describe what they default to when they are not present.
-`item` refers to the item the mon is holding. If the argument is missing, the mon won't be holding anything
-`ball` refers to the type of ball the pokemon comes out of. This defaults to a PokeBall and if you are generating a wildmon, this will be overwritten if the pokemon is captured
-`nature`, and `gender` will default to random values
-`abilityNum` will default to the value corresponding to the personality they will roll (in practice, it's random but it will have correlations with other if the pokemon parameters)
-`hpEv`, `atkEv`, `defEv`, `speedEv`, `spAtkEv`, `spDefEv` will default to 0
-`hpIv`, `atkIv`, `defIv`, `speedIv`, `spAtkIv`, `spDefIv` will default to `USE_RANDOM_IVS` which tell the game to roll a random IV value (between 0 and 31). If the generated species has a `perfectIVCount`, only the random values will be eligible to be perfected.
-`move1`, `move2`, `move3`, `move4` will default to `MOVE_DEFAULT` which tells the game to fill the slot with the last level up move available
-`shinyMode` will default to SHINY_MODE_RANDOM doing random roll(s) to check if the mon is shiny. (The other possibile values for shinyMode are SHINY_MODE_ALWAYS and SHINY_MODE_NEVER to force the pokemon to be shiny or not be shiny respectively)
-`gmaxFactor` default to FALSE
-`teraType` will default to the value corresponding to the personality they will roll (in practice, it's random but it will have correlations with other if the pokemon parameters)
-`dmaxLevel` will deafult to 0
+`createmon` is a script command that allows you to generate a Pokemon with any of the properties you might want. It has a lot of arguments in order to offer this flexibility.
+
+#### Required Arguments
+
+> **side, slot, species, level** are the required arguments.
+
+- **side** determines if the Pokemon will be created as a player Pokemon or an enemy Pokemon:
+ - `0` will put the Pokemon in the player party
+ - `1` in the enemy party
+
+- **slot** determines the slot in the player or enemy party the Pokemon will occupy.
+ - `slot` goes from `0` to `5`
+ - If `side` is `0` (player Pokemon), setting the slot to `6` will instead give the Pokemon to player automatically putting it in the first empty slot or sending it to the PC when the party is the full.
+ - Setting `slot` to `6` when trying to create an enemy Pokemon will result in the `createmon` command being ignored.
+
+- **species** and **level** refer to the species id and the level of the Pokemon you want to generate.
+
+#### Optional Arguments
+
+> `item`, `ball`, `nature`, `abilityNum`, `gender`, `hpEv`, `atkEv`, `defEv`, `speedEv`, `spAtkEv`, `spDefEv`, `hpIv`, `atkIv`, `defIv`, `speedIv`, `spAtkIv`, `spDefIv`, `move1`, `move2`, `move3`, `move4`, `shinyMode`, `gmaxFactor`, `teraType`, `dmaxLevel`.
+
+The purpose of these arguments is largely self-explanatory but we will briefly discuss what they default to when nothing is explicitly specified.
+
+- **item** refers to the item the Pokemon is holding. If the argument is missing, the Pokemon wonโt be holding anything.
+
+- **ball** refers to the type of ball the Pokemon comes out of. The expected type is `enum Pokeball` defaults to a `BALL_POKE`. If the Pokemon being generated is a Wild Pokemon this will be overwritten if the Pokemon is captured.
+
+- **nature** and **gender** will default to random values.
+
+- **abilityNum** will default to the value corresponding to the personality rolled (This is essentially random but it will be have correlations to the other parameters of the Pokemon).
+
+- **EVs**
+ `hpEv, atkEv, defEv, speedEv, spAtkEv, spDefEv` will default to `0`.
+
+- **IVs**
+ `hpIv, atkIv, defIv, speedIv, spAtkIv, spDefIv` will default to `USE_RANDOM_IVS` which tell the game to roll a random IV value (between `0` and `31`). If the generated species has a `perfectIVCount`, only the random values will be eligible to be perfected.
+
+- **moves**
+ `move1, move2, move3, move4` will default to `MOVE_DEFAULT` which tells the game to fill the slot with the last level up move available.
+
+- **shinyMode** will default to `SHINY_MODE_RANDOM` doing random roll(s) to check if the Pokemon is shiny.
+ - `SHINY_MODE_ALWAYS` forces the Pokemon to be shiny
+ - `SHINY_MODE_NEVER` forces the Pokemon to not be shiny
+
+- **gmaxFactor** defaults to `FALSE`.
+
+- **teraType** will default to the value corresponding to the personality they will roll (in practice, itโs random but it will have correlations with other if the Pokemon parameters).
+
+- **dmaxLevel** will default to `0`.
+
+---
### `givemon`
-`givemon` uses the same arguments as `createmon` minus `side` and `slot`. This is because `givemon` is almost equivalent to `createmon 0 6 ...` and just gives the mon to the player after generating it. The exception being that `givemon` interacts with the abilities `Synchronize` and `Cute Charm` slightly differently than `createmon` when `nature` or `gender` are not explicitly set.
+`givemon` uses the same arguments as `createmon` minus `side` and `slot`.
-### `setwildbattle (species:req, level:req, item=ITEM_NONE, species2=SPECIES_NONE, level2=0, item2=ITEM_NONE)`
+This is because `givemon` is almost equivalent to `createmon 0 6 ...` and just gives the Pokemon to the player after generating it.
+
+The exception being that `givemon` interacts with the abilities `Synchronize` and `Cute Charm` somewhat differently than `createmon` when `nature` or `gender` are not explicitly set.
+
+---
+
+### `setwildbattle`
+
+##### Arguments
+
+> `species:req`, `level:req`, `item=ITEM_NONE`, `species2=SPECIES_NONE`, `level2=0`, `item2=ITEM_NONE`
+
+`setwildbattle` is a much simpler way to generate a Wild Pokemon ready for the player to fight.
-`setwildbattle` is a much simpler way to generate a wildmon ready for the player to fight.
It only takes 3 arguments (or 6 if you want to make it a double wild battle)
-`species` and `level` refers to the species id and the level of the pokemon you want to generate
-`item` refers to the item the mon is holding. If the argument is missing, the mon won't be holding anything
-`species2`, `level2`, and `item2` are relate to the species, level and item of the second mon generated in case you want to make a double wild battle
-The other properties will like IVs and personality will be set random just like for a regular wild battle
-Mons generated with `setwildbattle` will always be considered static encounters (STATIC_WILDMON_ORIGIN) and will thus be eligible to be affected by Synchronize and Cute Charm
-### Synchronize and Cute Charm
+- `species` and `level` refer to the `species` and the `level` of the Pokemon you want to generate.
+- `item` refers to the item the Pokemon is holding. If no argument is provided the Pokemon will not be holding an item.
+- `species2`, `level2`, and `item2` determine the `species`, `level` and `held item` respectively of the second Pokemon generated in case you want to make a double wild battle
+- The other properties like IVs and personality will be set randomly the same way as they are set in regular wild battles.
-`nature` and `gender` also accept `NATURE_MAY_SYNCHRONIZE` and `MON_GENDER_MAY_CUTE_CHARM` respectively as arguments
-`NATURE_RANDOM` and `MON_GENDER_RANDOM` always return a random nature/gender and never check for Synchronize or Cute Charm. If you want the generated mon to have a chance to receive the effcets of Synchronize or Cute Charm, you need to use `NATURE_MAY_SYNCHRONIZE` and `MON_GENDER_MAY_CUTE_CHARM` respectively for nature and gender.
-When you use `NATURE_MAY_SYNCHRONIZE` or `MON_GENDER_MAY_CUTE_CHARM`, you are telling the game can check if the player has a pokemon with Synchronize or Cute Charm in the first slot of its party and roll a die to see if the nature or gender should be fixed based on the ability or rolled normally.
-The mon generated also need to be of the right "origin" to be eligible for Synchronize or Cute Charm. We don't want to "synchronize" a mon belonging to a trainer or change the gender of a gift mon with Cute Charm. So if a mon is generated for the player side, it will be considered a "gift mon" (GIFTMON_ORIGIN) and if a mon is generated on the enemy side, it will be considered a static wild encounter (STATIC_WILDMON_ORIGIN).
-`givemon` will default to use `NATURE_MAY_SYNCHRONIZE` and `MON_GENDER_MAY_CUTE_CHARM` because we assume you will use givemon to create "gift mons" but if you don't want it to apply in a specific script, you can explicitly use `NATURE_RANDOM` and `MON_GENDER_RANDOM` instead
-`createmon` on the other hand default to `NATURE_RANDOM` and `MON_GENDER_RANDOM` so you need to explicitly use `NATURE_MAY_SYNCHRONIZE` or `MON_GENDER_MAY_CUTE_CHARM` for the generated mon to be considered a gift mon or a static wild encounter
-Static encounters and Gift mons eligibility to Synchronize vary through generations in the official games so you can use the config `OW_SYNCHRONIZE_NATURE` to match your preference or you can check the `src/ow_synchronize.c` to modify the Synchronize and Cute Charm eligibility of different origins however you like
+Pokemon generated with `setwildbattle` will always be considered static encounters (`STATIC_WILDMON_ORIGIN`) and will thus be eligible to be affected by Synchronize and Cute Charm
+
+#### Synchronize and Cute Charm
+
+ `nature` and `gender` also accept `NATURE_MAY_SYNCHRONIZE` and `MON_GENDER_MAY_CUTE_CHARM` respectively as arguments.
+
+`NATURE_RANDOM` and `MON_GENDER_RANDOM` always return a random nature/gender and never check for Synchronize or Cute Charm. If you want the generated Pokemon to have a chance to receive the effects of Synchronize or Cute Charm, you need to use `NATURE_MAY_SYNCHRONIZE` and `MON_GENDER_MAY_CUTE_CHARM` respectively for nature and gender.
+
+When you use `NATURE_MAY_SYNCHRONIZE` or `MON_GENDER_MAY_CUTE_CHARM`, you are telling the game can check if the player has a Pokemon with Synchronize or Cute Charm in the first slot of its party and roll a die to see if the nature or gender should be fixed based on the ability or rolled normally.
+
+The Pokemon generated also need to be of the right "origin" to be eligible for Synchronize or Cute Charm. We don't want to "synchronize" a Pokemon belonging to a trainer or change the gender of a gift Pokemon with Cute Charm. So if a Pokemon is generated for the player side, it will be considered a "gift Pokemon" (`GIFTMON_ORIGIN`) and if a Pokemon is generated on the enemy side, it will be considered a static wild encounter (`STATIC_WILDMON_ORIGIN`).
+
+`givemon` will default to use `NATURE_MAY_SYNCHRONIZE` and `MON_GENDER_MAY_CUTE_CHARM` because we assume you will use `givemon` to create "gift Pokemon" but if you don't want it to apply in a specific script, you can explicitly use `NATURE_RANDOM` and `MON_GENDER_RANDOM` instead
+
+`createmon` on the other hand default to `NATURE_RANDOM` and `MON_GENDER_RANDOM` so you need to explicitly use `NATURE_MAY_SYNCHRONIZE` or `MON_GENDER_MAY_CUTE_CHARM` for the generated Pokemon to be considered a gift Pokemon or a static wild encounter
+
+Static encounters and Gift Pokemon eligibility to Synchronize vary through generations in the official games so you can use the config `OW_SYNCHRONIZE_NATURE` to match your preference or you can check the `src/ow_abilities.c` to modify the Synchronize and Cute Charm eligibility of different origins however you like
+
+---
## Through Code
-A lot of places in the game generate mons, when you start a wild encounter, when a trainer generates its party from the data in trainers.party or even when you call one of the script described in the previous section. So let's go through some of the most common functions.
-Note: None of the functions described here allocate memory for the Pokemon struct, they all expect a pointer they will fill the data with.
+There are several instances of Pokemon generation throughout the game:
+- When you start a wild encounter,
+- When a trainer generates its party from the data in `trainers.party`,
+- Or when you call one of the scripts described in the previous section.
+
+In this section we will go through some of the most common functions.
+
+> NOTE: None of the functions described here allocate memory for the Pokemon struct, they all expect a pointer they will fill the data with.
+
It means they are usually called with `&gPlayerParty[index]` or `&gEnemyParty[index]` because these are places in memory reserved for Pokemon struct.
-### The basics
+### The Basics
-To generate a mon ready for battle, you usually need to go through these steps:
-- generate a personality value
-- fill the generic mon structure based on species, level and personality
-- set IVs and EVs
-- (re-)compute stats (this step does not happen if you are generating a `struct boxPokemon` instead of `struct Pokemon`)
-- set the moves
+To generate a Pokemon ready for battle, you usually need to go through the following steps:
+
+1. Generate a personality value
+2. Fill the generic mon structure based on `species`, `level` and `personality`.
+3. Set IVs and EVs.
+4. (Re-)Compute stats (this step does not happen if you are generating a `struct BoxPokemon` instead of `struct Pokemon`).
+5. set the moves.
### `GetMonPersonality`
`GetMonPersonality` is the easiest way to make a personality value. It takes 4 arguments `species`, `gender`, `nature` and `unownLetter` then it rolls random personality values until it finds one that match all the selected criteria.
+
For example, if you want a personality for Wally's male Ralts, you would write:
-`personality = GetMonPersonality(SPECIES_RALTS, MON_MALE, NATURE_RANDOM, RANDOM_UNOWN_LETTER);`
-and if you want a personality for a brave J Unown, you would write
-`personality = GetMonPersonality(SPECIES_UNOWN, MON_GENDER_RANDOM, NATURE_BRAVE, 9);` (J is the 10th letter of alphabet but for unown A starts at 0 so B is 1 and J is 9)
-As you can see, you can use either a specific value or a special value `MON_GENDER_RANDOM`, `NATURE_RANDOM` or `RANDOM_UNOWN_LETTER` to tell the function to return any pokemon matching the other properties. This means, writing:
-`personality = GetMonPersonality(SPECIES_X, MON_GENDER_RANDOM, NATURE_RANDOM, RANDOM_UNOWN_LETTER);`
-id equivalent to
-`personality = Random32();`
-which is why `Random32()` is used throughout to generate a personality value in certain circumstances
+
+```c
+personality = GetMonPersonality(SPECIES_RALTS, MON_MALE, NATURE_RANDOM, RANDOM_UNOWN_LETTER);
+```
+
+And if you want a personality for a brave J Unown, you would write:
+
+```c
+personality = GetMonPersonality(SPECIES_UNOWN, MON_GENDER_RANDOM, NATURE_BRAVE, 9);
+// J is the 10th letter of alphabet but for Unown A starts at 0 so B is 1 and J is 9
+```
+
+As you can see, you can use either a specific value or a special value `MON_GENDER_RANDOM`, `NATURE_RANDOM` or `RANDOM_UNOWN_LETTER` to tell the function to return any Pokemon matching the other properties. This means, writing:
+
+```
+personality = GetMonPersonality(SPECIES_X, MON_GENDER_RANDOM, NATURE_RANDOM, RANDOM_UNOWN_LETTER);
+```
+
+is equivalent to `personality = Random32();` which is why `Random32()` is used throughout the codebase to generate fully random personality values.
+
+---
### `CreateMon` and `CreateBoxMon`
`CreateMon` is the most basic function to create a generic Pokemon struct. It takes 5 arguments:
-`mon` is a pointer to the mon struct you want to set the data for
-`species` and `level` are fairly explicit
-`personality` is the personality value you want to use to create your mon, it will determine a lot of your mon properties and will usually be a number that you generated by following the instructions from the previous section
-`trainerID` is a special type of struct that explain how the function should set up the otId of the pokemon. Usually you will want to use one of these 3 macros for the argument:
-`OTID_STRUCT_PLAYER_ID` which means the pokemon should the player otId (used for wildmon so they the get the player id when captured)
-`OTID_STRUCT_PRESET(value)` which set a specific otId that you pick/write yourself
-`OTID_STRUCT_RANDOM_NO_SHINY` which picks a random otId and forces the mon to not be shiny even if the random otId and chosen personality would have made the mon shiny. It is used by NPC trainers.
-Both `CreateMon` and `CreateBoxMon` erase the pokemon data in the pointer before they add the new data so every value they don't set will be zero-ed in some way. This is why they are considered "base" functions.
-The values set by `CreateMon` and `CreateBoxMon` are the gender, ability num, tera type and nature (based on personality); the met info (location, level and game), the original trainer name, gender and language (always set to the player even for enemy trainer mons), the starting xp (based on the xp required to reach the level the pokemon is at), the starting friendship (based on the species info) and the shinyness.
-`CreateMon` and `CreateBoxMon` are very similar. In fact, the `CreateMon` function calls `CreateBoxMon` to generate the boxmon part of its structure but it also sets the level and a mail object (to an empty value)
+
+- `mon` is a pointer to the Pokemon struct you want to set the data for
+
+- `species` and `level` are self-explanatory.
+
+- `personality` is the personality value you want to use to create your Pokemon, it will determine a lot of your Pokemon properties and will usually be a number that you generated by following the instructions from the previous section.
+
+- `trainerID` is a special type of struct that explain how the function should set up the `otId` of the Pokemon. Usually you will want to use one of these 3 macros for the argument:
+
+ - `OTID_STRUCT_PLAYER_ID` which means the Pokemon will use the player `otId` (used by Wild Pokemon so they the get the player id when captured)
+
+ - `OTID_STRUCT_PRESET(value)` which set a specific `otId` that you pick/write yourself
+
+ - `OTID_STRUCT_RANDOM_NO_SHINY` which picks a random `otId` and forces the Pokemon to not be shiny even if the random `otId` and chosen `personality` would have made the Pokemon shiny. It is used by NPC trainers.
+
+- Both `CreateMon` and `CreateBoxMon` erase the Pokemon data in the pointer before they add the new data so every value they don't set will be zero-ed in some way. This is why they are considered "base" functions.
+
+The values set by `CreateMon` and `CreateBoxMon` are the `gender`, `ability num`, `tera type` and `nature` (based on personality); the `met info` (location, level and game), the `OT name` , `gender` and `language` (always set to the player even for enemy trainer Pokemon), the `starting xp` (based on the xp required to reach the level the Pokemon is at), the `starting friendship` (based on the species info) and the `shinyness`.
+
+`CreateMon` and `CreateBoxMon` are very similar. In fact, the `CreateMon` function calls `CreateBoxMon` to generate the BoxPokemon part of its structure but it also sets the level and a mail object (to an empty value)
### Setting IVs and EVs
-Usually, you will want to use `SetBoxMonIVs(mon->box, ivs)` to set the ivs of the pokemon you are generating. The reason is that not only can you quickly set all ivs of your mon to a single value: `SetBoxMonIVs(mon->box, 15)` will set all IVs to 15. You can also use the special argument `USE_RANDOM_IVS`. When used with `USE_RANDOM_IVS`, `SetBoxMonIvs` will not only pick a random value between 0 and 31 for each stat, it will also allocate some perfect iv if the species of the mon has a perfectIvCount set in the species data. For example if you are generating a legendary with a perfectIvCount of 3, using `SetBoxMonIVs(mon->box, USE_RANDOM_IVS)` will guarantee that at least 3 IVs are set to 31. This is done using the function `SetBoxMonPerfectIVs`, which can also be used elsewhere to assign a number of random perfect IVs.
+#### IVs
+
+Usually, you will want to use `SetBoxMonIVs(mon->box, ivs)` to set the IVs of the Pokemon being generated. The reason is that not only can you quickly set all ivs of your Pokemon to a single value.
+
+For instance `SetBoxMonIVs(mon->box, 15)` will set all IVs to 15.
+
+You can also use the special argument `USE_RANDOM_IVS`. When used with `USE_RANDOM_IVS`, `SetBoxMonIvs` will not only pick a random value between 0 and 31 for each stat, it will also allocate some perfect iv if the species of the Pokemon has a `perfectIvCount` set in the species data.
+
+For example if you are generating a legendary with a `perfectIvCount` of 3, using `SetBoxMonIVs(mon->box, USE_RANDOM_IVS)` will guarantee that at least 3 IVs are set to 31. This is done using the function `SetBoxMonPerfectIVs`, which can also be used elsewhere to assign a number of random perfect IVs.
+
The other way to assign IV is to use `SetMonData`, for example:
-`SetMonData(mon, MON_DATA_HP_IV, 15)`
-with the stats being in order `MON_DATA_HP_IV`, `MON_DATA_ATK_IV`, `MON_DATA_DEF_IV`, `MON_DATA_SPEED_IV`, `MON_DATA_SPATK_IV` and `MON_DATA_SPDEF_IV`
+
+```c
+SetMonData(mon, MON_DATA_HP_IV, 15)
+```
+
+with the stats being in the order `MON_DATA_HP_IV`, `MON_DATA_ATK_IV`, `MON_DATA_DEF_IV`, `MON_DATA_SPEED_IV`, `MON_DATA_SPATK_IV` and `MON_DATA_SPDEF_IV`
+
You can also use a loop like this:
+
```c
for (i = 0; i < NUM_STATS; i++)
SetMonData(mon, MON_DATA_HP_IV + i, iv_array[i])
```
-if you happen to have an array containing the values you want but be careful about the order if you use this method
-EVs default to 0 when a mon is generated with `CreateMon` or `CreateBoxMon` so you may not need to anything if you want to keep it that way. If you want to change them, there are currently no utilities to set EVs at the moment so you will need to use the `SetMonData` method as well:
-`SetMonData(mon, MON_DATA_HP_EV, 252)`
-The stats have the same names as the IVs with I cheange into an E : `MON_DATA_HP_EV`, `MON_DATA_ATK_EV`, `MON_DATA_DEF_EV`, `MON_DATA_SPEED_EV`, `MON_DATA_SPATK_EV` and `MON_DATA_SPDEF_EV` so the loop method works here too
+
+if you happen to have an array containing the values you want. However, you must be careful about the order of the stats if you use this method.
+#### EVs
+
+EVs default to `0` when a Pokemon is generated with `CreateMon` or `CreateBoxMon`. You will not need to anything if you want to keep it that way.
+
+If you want to change them, there are currently no utilities to set EVs. Thus you will need to use the `SetMonData` method:
+
+```c
+SetMonData(mon, MON_DATA_HP_EV, 252)
+```
+
+The stats have the same names as the IVs with I change into an E : `MON_DATA_HP_EV`, `MON_DATA_ATK_EV`, `MON_DATA_DEF_EV`, `MON_DATA_SPEED_EV`, `MON_DATA_SPATK_EV` and `MON_DATA_SPDEF_EV` so the loop method works here as well.
+
```c
for (i = 0; i < NUM_STATS; i++)
SetMonData(mon, MON_DATA_HP_EV + i, ev_array[i])
```
-Just be careful when setting IVs and EVs with SetMonData because they are no check to make sure the IV and EV values you are setting are valid and this may cause some issues.
+
+Just be careful when setting IVs and EVs with `SetMonData` because there is no check to make sure the IV and EV values you are setting are valid and this may cause some issues.
### `CalculateMonStats`
-After all the IVs and EVs have been set for your mon, it's important to run `CalculateMonStats(mon)`. The function only has one argument so it's pretty simple but don't forget this step or you may have some isseus
+After all the IVs and EVs have been set for your Pokemon, it's important to run `CalculateMonStats(mon)`. The function only has one argument so it's pretty simple but don't forget this step or you may have some issues.
### Setting moves
To set a move in slot `slot`, you would need to write:
+
```c
enum Move move = MOVE_X;
u32 pp = GetMovePP(move);
SetMonData(mon, MON_DATA_MOVE1 + slot, &move);
SetMonData(mon, MON_DATA_PP1 + slot, &spp);
```
+
where slot can be between 0 and 3 to represent the 1st to 4th move
-You can also call the function `GiveMonInitialMoveset(mon)` that will give your pokemon its last 4 level-up moves available similarly to the wild pokemon you might enciunter
+You can also call the function `GiveMonInitialMoveset(mon)` that will give your Pokemon its last 4 level-up moves available similarly to the wild Pokemon you might encounter.
## Going from 1.14 to 1.15
-When going from 1.14 to 1.15, Expansion deleted multiple functions related to mon generation that were not used in Expansion anymore.
+When going from 1.14 to 1.15, Expansion deleted multiple functions related to Pokemon generation that were not used in Expansion anymore.
The following functions were deleted
+
```c
void CreateMonWithNature(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 nature);
void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 gender, u8 nature, u8 unownLetter);
@@ -140,14 +255,18 @@ void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread);
void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
```
+
If you add custom code relying on those functions, I would advise to simple recode them using the methods described in the previous section. If you follow the steps, you should be able to rewrite a function with the same effect easily.
However the move to 1.15 also completely rewrote these two functions:
+
```c
void CreateMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId);
void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId);
```
+
`CreateMon` and `CreateBoxMon` now have different arguments and do less things than their 1.14 counterparts. If you have code that used those functions, we recommend you use these legacy version of `CreateMon` and `CreateBoxMon`:
+
```c
void CreateMonLegacy(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
{
@@ -166,4 +285,5 @@ void CreateBoxMonLegacy(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fix
GiveBoxMonInitialMoveset(boxMon);
}
```
+
These two legacy functions use the 1.15 functions to recreate the 1.14 versions of `CreateMon` and `CreateBoxMon` with the same arguments and the same effects. Add these two legacy functions to your code then change your custom code that was relying on 1.14 `CreateMon` or `CreateBoxMon` to use `CreateMonLegacy` or `CreateBoxMonLegacy` instead and everything should work the same as before
diff --git a/graphics/items/icon_palettes/mystery_tm_hm.pal b/graphics/items/icon_palettes/mystery_tm_hm.pal
new file mode 100644
index 0000000000..493e4655a1
--- /dev/null
+++ b/graphics/items/icon_palettes/mystery_tm_hm.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+180 180 180
+49 49 49
+74 74 98
+200 243 230
+176 227 212
+156 210 194
+144 200 184
+136 189 173
+122 177 161
+104 160 144
+123 123 148
+123 123 123
+98 98 123
+255 255 255
+239 251 248
+82 82 82
diff --git a/graphics/items/icon_palettes/strange_ball.pal b/graphics/items/icon_palettes/strange_ball.pal
index 9e32134d45..06783b202a 100644
--- a/graphics/items/icon_palettes/strange_ball.pal
+++ b/graphics/items/icon_palettes/strange_ball.pal
@@ -2,18 +2,18 @@ JASC-PAL
0100
16
180 180 180
-164 226 197
-238 242 230
-139 170 180
-8 113 115
-0 157 156
-106 222 172
-41 182 189
-90 206 172
-90 182 180
-8 0 0
-65 190 189
-115 194 189
-0 117 131
-0 129 131
-0 12 0
+64 128 115
+92 163 114
+101 169 99
+69 171 140
+115 191 132
+72 141 162
+83 204 163
+72 176 192
+49 49 49
+149 210 138
+137 225 177
+190 237 195
+143 224 228
+255 255 255
+0 0 0
diff --git a/graphics/items/icons/strange_ball.png b/graphics/items/icons/strange_ball.png
index a794d54abe..ede11e82d3 100644
Binary files a/graphics/items/icons/strange_ball.png and b/graphics/items/icons/strange_ball.png differ
diff --git a/graphics/pokedex/hgss/palette_default.pal b/graphics/pokedex/hgss/palette_default.pal
index 5889ede7ac..77ec81d010 100644
--- a/graphics/pokedex/hgss/palette_default.pal
+++ b/graphics/pokedex/hgss/palette_default.pal
@@ -15,7 +15,7 @@ JASC-PAL
193 33 41
141 251 184
52 66 162
-194 181 66
+0 0 0
0 0 0
123 131 0
255 255 255
diff --git a/graphics/pokedex/hgss/palette_default_dark.pal b/graphics/pokedex/hgss/palette_default_dark.pal
index 1523b7d25f..2f46b7dc28 100644
--- a/graphics/pokedex/hgss/palette_default_dark.pal
+++ b/graphics/pokedex/hgss/palette_default_dark.pal
@@ -15,7 +15,7 @@ JASC-PAL
193 33 41
141 251 184
52 66 162
-194 181 66
+74 74 74
0 0 0
123 131 0
255 255 255
diff --git a/graphics/pokedex/hgss/palette_national.pal b/graphics/pokedex/hgss/palette_national.pal
index 5889ede7ac..77ec81d010 100644
--- a/graphics/pokedex/hgss/palette_national.pal
+++ b/graphics/pokedex/hgss/palette_national.pal
@@ -15,7 +15,7 @@ JASC-PAL
193 33 41
141 251 184
52 66 162
-194 181 66
+0 0 0
0 0 0
123 131 0
255 255 255
diff --git a/graphics/pokedex/hgss/palette_national_dark.pal b/graphics/pokedex/hgss/palette_national_dark.pal
index 1523b7d25f..2f46b7dc28 100644
--- a/graphics/pokedex/hgss/palette_national_dark.pal
+++ b/graphics/pokedex/hgss/palette_national_dark.pal
@@ -15,7 +15,7 @@ JASC-PAL
193 33 41
141 251 184
52 66 162
-194 181 66
+74 74 74
0 0 0
123 131 0
255 255 255
diff --git a/graphics/pokedex/hgss/tileset_menu3.png b/graphics/pokedex/hgss/tileset_menu3.png
index e4b649c870..c5219d858f 100644
Binary files a/graphics/pokedex/hgss/tileset_menu3.png and b/graphics/pokedex/hgss/tileset_menu3.png differ
diff --git a/graphics/pokemon/cherrim/sunshine/overworld.png b/graphics/pokemon/cherrim/sunshine/overworld.png
new file mode 100644
index 0000000000..269b0b2369
Binary files /dev/null and b/graphics/pokemon/cherrim/sunshine/overworld.png differ
diff --git a/graphics/pokemon/cherrim/sunshine/overworld_normal.pal b/graphics/pokemon/cherrim/sunshine/overworld_normal.pal
new file mode 100644
index 0000000000..a90df82107
--- /dev/null
+++ b/graphics/pokemon/cherrim/sunshine/overworld_normal.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+152 208 160
+144 32 64
+200 56 104
+248 192 224
+16 16 16
+224 128 168
+248 160 200
+248 96 128
+248 224 240
+152 104 16
+216 176 88
+248 224 112
+40 112 48
+48 160 56
+200 56 104
+120 96 40
diff --git a/graphics/pokemon/cherrim/sunshine/overworld_shiny.pal b/graphics/pokemon/cherrim/sunshine/overworld_shiny.pal
new file mode 100644
index 0000000000..636edb2602
--- /dev/null
+++ b/graphics/pokemon/cherrim/sunshine/overworld_shiny.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+152 208 160
+112 40 56
+192 88 120
+248 232 232
+16 16 16
+224 128 184
+240 176 216
+224 136 176
+248 224 240
+160 88 32
+248 168 56
+248 208 120
+0 96 16
+24 144 56
+192 88 120
+160 88 32
diff --git a/include/apprentice.h b/include/apprentice.h
index 75a773bde1..9fa5c6f1f3 100644
--- a/include/apprentice.h
+++ b/include/apprentice.h
@@ -8,7 +8,7 @@ struct ApprenticeTrainer
u8 name[NUM_LANGUAGES - 1][PLAYER_NAME_LENGTH + 1]; // For all languages except the unused one.
u16 otId;
u8 facilityClass;
- u16 species[APPRENTICE_SPECIES_COUNT];
+ enum Species species[APPRENTICE_SPECIES_COUNT];
u8 id;
u16 speechLost[EASY_CHAT_BATTLE_WORDS_COUNT];
};
diff --git a/include/battle.h b/include/battle.h
index 1cb6d5dba0..d111551fed 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -23,7 +23,7 @@
#include "battle_dynamax.h"
#include "battle_terastal.h"
#include "battle_gimmick.h"
-#include "generational_changes.h"
+#include "config_changes.h"
#include "item.h"
#include "move.h"
#include "random.h" // for rng_value_t
@@ -176,7 +176,7 @@ struct AI_SavedBattleMon
struct AiPartyMon
{
- u16 species;
+ enum Species species;
enum Item item;
enum HoldEffect heldEffect;
enum Ability ability;
@@ -201,6 +201,7 @@ struct SimulatedDamage
u16 minimum;
u16 median;
u16 maximum;
+ u16 random;
};
// Ai Data used when deciding which move to use, computed only once before each turn's start.
@@ -234,7 +235,8 @@ struct AiLogicData
u32 shouldConsiderExplosion:1; // Determines whether AI should consider explosion moves this turn
u32 shouldSwitch:4; // Stores result of ShouldSwitch, which decides whether a mon should be switched out
u32 shouldConsiderFinalGambit:1; // Determines whether AI should consider Final Gambit this turn
- u32 padding2:19;
+ u32 switchInCalc:1; // Indicates if we're doing switch in calcs, this is purely for Retaliate damage calcs
+ u32 padding2:18;
};
struct AiThinkingStruct
@@ -303,16 +305,16 @@ struct BattleResults
u8 playerMonWasDamaged:1; // 0x5
u8 caughtMonBall:4; // 0x5
u8 shinyWildMon:1; // 0x5
- u16 playerMon1Species; // 0x6
+ enum Species playerMon1Species; // 0x6
u8 playerMon1Name[POKEMON_NAME_LENGTH + 1]; // 0x8
u8 battleTurnCounter; // 0x13
u8 playerMon2Name[POKEMON_NAME_LENGTH + 1]; // 0x14
u8 pokeblockThrows; // 0x1F
- u16 lastOpponentSpecies; // 0x20
+ enum Species lastOpponentSpecies; // 0x20
u16 lastUsedMovePlayer; // 0x22
u16 lastUsedMoveOpponent; // 0x24
- u16 playerMon2Species; // 0x26
- u16 caughtMonSpecies; // 0x28
+ enum Species playerMon2Species; // 0x26
+ enum Species caughtMonSpecies; // 0x28
u8 caughtMonNick[POKEMON_NAME_LENGTH + 1]; // 0x2A
u8 filler35; // 0x35
u8 catchAttempts[POKEBALL_COUNT]; // 0x36
@@ -654,7 +656,7 @@ struct BattleStruct
u8 ballSpriteIds[2]; // item gfx, window gfx
u8 moveInfoSpriteId; // move info, window gfx
// When using a move which hits multiple opponents which is then bounced by a target, we need to make sure, the move hits both opponents, the one with bounce, and the one without.
- u16 beatUpSpecies[PARTY_SIZE]; // Species for Gen5+ Beat Up, otherwise party indexes
+ enum Species beatUpSpecies[PARTY_SIZE]; // Species for Gen5+ Beat Up, otherwise party indexes
u8 attackerBeforeBounce:2;
u8 beatUpSlot:3;
u8 pledgeMove:1;
@@ -678,7 +680,7 @@ struct BattleStruct
u16 additionalEffectsCounter:4; // A counter for the additionalEffects applied by the current move in Cmd_setadditionaleffects
u8 pursuitStoredSwitch; // Stored id for the Pursuit target's switch
s32 battlerExpReward;
- u16 prevTurnSpecies[MAX_BATTLERS_COUNT]; // Stores species the AI has in play at start of turn
+ enum Species prevTurnSpecies[MAX_BATTLERS_COUNT]; // Stores species the AI has in play at start of turn
s16 passiveHpUpdate[MAX_BATTLERS_COUNT]; // non-move damage and healing
s16 moveDamage[MAX_BATTLERS_COUNT];
u16 moveResultFlags[MAX_BATTLERS_COUNT];
@@ -704,6 +706,9 @@ struct BattleStruct
u8 magicCoatActive:1;
u8 magicBounceActive:1;
u8 moveBouncer;
+ u8 dancerSavedAttacker:3;
+ u8 dancerSavedTarget:3;
+ u8 padding:2;
};
struct AiBattleData
@@ -841,7 +846,7 @@ struct BattleSpriteInfo
u16 behindSubstitute:1; // 0x4
u16 flag_x8:1; // 0x8
u16 hpNumbersNoBars:1; // 0x10
- u16 transformSpecies;
+ enum Species transformSpecies;
};
struct BattleAnimationInfo
@@ -1065,9 +1070,9 @@ static inline bool32 IsBattlerAlive(enum BattlerId battler)
return TRUE;
}
-static inline bool32 IsBattlerTurnDamaged(enum BattlerId battler)
+static inline bool32 IsBattlerTurnDamaged(enum BattlerId battler, enum SubCheck subCheck)
{
- return gSpecialStatuses[battler].damagedByAttack;
+ return gSpecialStatuses[battler].damagedByAttack || ((subCheck == INCLUDING_SUBSTITUTES) && gBattleStruct->moveDamage[battler] > 0);
}
static inline bool32 IsBattlerAtMaxHp(enum BattlerId battler)
diff --git a/include/battle_ai_main.h b/include/battle_ai_main.h
index 67ee35377d..7cf4b91ce3 100644
--- a/include/battle_ai_main.h
+++ b/include/battle_ai_main.h
@@ -136,6 +136,8 @@ void SetAiLogicDataForTurn(struct AiLogicData *aiData);
void ResetDynamicAiFunctions(void);
void AI_TrySwitchOrUseItem(enum BattlerId battler);
void CalcBattlerAiMovesData(struct AiLogicData *aiData, enum BattlerId battlerAtk, enum BattlerId battlerDef, u32 weather, u32 fieldStatus);
+void AIDebugTimerStart(void);
+void AIDebugTimerEnd(void);
extern AiSwitchFunc gDynamicAiSwitchFunc;
diff --git a/include/battle_ai_switch.h b/include/battle_ai_switch.h
index 16b75c735b..639d9725ab 100644
--- a/include/battle_ai_switch.h
+++ b/include/battle_ai_switch.h
@@ -27,6 +27,8 @@ enum ShouldSwitchScenario
SHOULD_SWITCH_NATURAL_CURE_WEAK_STATS_RAISED,
SHOULD_SWITCH_REGENERATOR,
SHOULD_SWITCH_REGENERATOR_STATS_RAISED,
+ SHOULD_SWITCH_INTIMIDATE,
+ SHOULD_SWITCH_INTIMIDATE_STATS_RAISED,
SHOULD_SWITCH_ENCORE_STATUS,
SHOULD_SWITCH_ENCORE_DAMAGE,
SHOULD_SWITCH_CHOICE_LOCKED,
diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h
index 1be932d421..fb1d57ea50 100644
--- a/include/battle_ai_util.h
+++ b/include/battle_ai_util.h
@@ -7,19 +7,24 @@
// Roll boundaries used by AI when scoring. Doesn't affect actual damage dealt.
#define MAX_ROLL_PERCENTAGE DMG_ROLL_PERCENT_HI
#define MIN_ROLL_PERCENTAGE DMG_ROLL_PERCENT_LO
-#define DMG_ROLL_PERCENTAGE ((MAX_ROLL_PERCENTAGE + MIN_ROLL_PERCENTAGE + 1) / 2) // Controls the damage roll the AI sees for the default roll. By default the 9th roll is seen
+#define DMG_ROLL_PERCENTAGE ((MAX_ROLL_PERCENTAGE + MIN_ROLL_PERCENTAGE + 1) / 2) // Controls the damage roll the AI sees for the median roll. By default the 9th roll is seen
enum DamageRollType
{
DMG_ROLL_LOWEST,
- DMG_ROLL_DEFAULT,
+ DMG_ROLL_MEDIAN,
DMG_ROLL_HIGHEST,
+ DMG_ROLL_RANDOM,
};
enum DamageCalcContext
{
AI_DEFENDING,
AI_ATTACKING,
+ AI_SWITCHIN_DEFENDING,
+ AI_SWITCHIN_ATTACKING,
+ AI_SHOULD_SETUP_DEFENDING,
+ AI_ATTACKING_PARTNER,
};
enum AiConsiderEndure
@@ -103,7 +108,7 @@ bool32 AI_CanBattlerEscape(enum BattlerId battler);
bool32 IsBattlerTrapped(enum BattlerId battlerAtk, enum BattlerId battlerDef);
s32 AI_WhoStrikesFirst(enum BattlerId battlerAI, enum BattlerId battler, enum Move aiMoveConsidered, enum Move playerMoveConsidered, enum ConsiderPriority considerPriority);
bool32 CanTargetFaintAi(enum BattlerId battlerDef, enum BattlerId battlerAtk);
-u32 NoOfHitsForTargetToFaintBattler(enum BattlerId battlerDef, enum BattlerId battlerAtk, enum AiConsiderEndure considerEndure);
+u32 NoOfHitsForTargetToFaintBattler(enum BattlerId battlerDef, enum BattlerId battlerAtk, enum DamageCalcContext calcContext, enum AiConsiderEndure considerEndure);
void GetBestDmgMovesFromBattler(enum BattlerId battlerAtk, enum BattlerId battlerDef, enum DamageCalcContext calcContext, enum Move *bestMoves);
u32 GetMoveIndex(enum BattlerId battler, enum Move move);
bool32 IsBestDmgMove(enum BattlerId battlerAtk, enum BattlerId battlerDef, enum DamageCalcContext calcContext, enum Move move);
@@ -255,6 +260,7 @@ bool32 AI_IsBattlerAsleepOrComatose(enum BattlerId battlerId);
// ability logic
bool32 IsMoxieTypeAbility(enum Ability ability);
bool32 DoesAbilityRaiseStatsWhenLowered(enum Ability ability);
+bool32 DoesIntimidateRaiseStats(enum Ability ability);
bool32 ShouldTriggerAbility(enum BattlerId battlerAtk, enum BattlerId battlerDef, enum Ability ability);
bool32 CanEffectChangeAbility(enum BattlerId battlerAtk, enum BattlerId battlerDef, enum Move move, struct AiLogicData *aiData);
void AbilityChangeScore(enum BattlerId battlerAtk, enum BattlerId battlerDef, enum Move move, s32 *score, struct AiLogicData *aiData);
@@ -321,7 +327,6 @@ bool32 IsBattlerPredictedToSwitch(enum BattlerId battler);
enum Move GetIncomingMove(enum BattlerId battler, enum BattlerId opposingBattler, struct AiLogicData *aiData);
enum Move GetIncomingMoveSpeedCheck(enum BattlerId battler, enum BattlerId opposingBattler, struct AiLogicData *aiData);
bool32 AI_OpponentCanFaintAiWithMod(enum BattlerId battler, u32 healAmount);
-void SetBattlerFieldStatusForSwitchin(enum BattlerId battler);
bool32 ShouldInstructPartner(enum BattlerId partner, enum Move move);
bool32 CanMoveBeBouncedBack(enum BattlerId battler, enum Move move);
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 079ee026b8..f20a09bb5f 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -76,7 +76,7 @@ extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT];
extern u8 gAnimMoveTurn;
extern enum BattlerId gBattleAnimAttacker;
extern enum BattlerId gBattleAnimTarget;
-extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT];
+extern enum Species gAnimBattlerSpecies[MAX_BATTLERS_COUNT];
extern u8 gAnimCustomPanning;
extern u16 gAnimMoveIndex;
@@ -168,7 +168,7 @@ u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLef
u8 GetSpritePalIdxByBattler(enum BattlerId battler);
s16 CloneBattlerSpriteWithBlend(enum AnimBattler animBattler);
void DestroySpriteWithActiveSheet(struct Sprite *sprite);
-u8 CreateInvisibleSpriteCopy(int battler, u8 spriteId, int species);
+u8 CreateInvisibleSpriteCopy(enum BattlerId battler, u8 spriteId, enum Species species);
void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData *data, const void *src, bool32 largeScreen);
void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset);
void UpdateAnimBg3ScreenSize(bool8 largeScreenSize);
@@ -191,7 +191,7 @@ void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union Aff
bool8 RunAffineAnimFromTaskData(struct Task *task);
void AnimThrowProjectile(struct Sprite *sprite);
void GetBgDataForTransform(struct BattleAnimBgData *out, enum BattlerId battler);
-u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, enum BattlerId battler);
+u8 CreateAdditionalMonSpriteForMoveAnim(enum Species species, bool32 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool32 isShiny, enum BattlerId battler);
void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite);
void Trade_MoveSelectedMonToTarget(struct Sprite *sprite);
void DestroyAnimVisualTaskAndDisableBlend(u8 taskId);
@@ -422,7 +422,7 @@ u8 SmokescreenImpact(s16 x, s16 y, bool8 persist);
u32 UnpackSelectedBattlePalettes(s16 selector);
-u8 GetBattlerSpriteFinal_Y(enum BattlerId battler, u16 species, bool8 a3);
+u8 GetBattlerSpriteFinal_Y(enum BattlerId battler, enum Species species, bool32 a3);
extern const struct OamData gOamData_AffineOff_ObjNormal_8x16;
extern const struct OamData gOamData_AffineNormal_ObjBlend_16x16;
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 134bb2df5c..1ed57e317f 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -220,7 +220,7 @@ struct ChooseMoveStruct
enum Move moves[MAX_MON_MOVES];
u8 currentPp[MAX_MON_MOVES];
u8 maxPp[MAX_MON_MOVES];
- u16 species;
+ enum Species species;
enum Type monTypes[3];
struct ZMoveData zmove;
};
diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h
index 95bc25bdca..ccc3631a6d 100644
--- a/include/battle_gfx_sfx_util.h
+++ b/include/battle_gfx_sfx_util.h
@@ -12,8 +12,8 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattlerId, u8 attacker, u8 ta
void InitAndLaunchSpecialAnimation(enum BattlerId activeBattlerId, enum BattlerId attacker, enum BattlerId target, u8 tableId);
bool8 IsBattleSEPlaying(enum BattlerId battler);
void BattleLoadMonSpriteGfx(struct Pokemon *mon, enum BattlerId battler);
-void DecompressGhostFrontPic(u32 battler);
-void BattleGfxSfxDummy2(u16 species);
+void DecompressGhostFrontPic(enum BattlerId battler);
+void BattleGfxSfxDummy2(enum Species species);
void DecompressTrainerFrontPic(u16 frontPicId, enum BattlerId battler);
void DecompressTrainerBackPic(enum TrainerPicID backPicId, enum BattlerId battler);
void FreeTrainerFrontPicPalette(u16 frontPicId);
@@ -36,7 +36,7 @@ void SetBattlerSpriteAffineMode(u8 affineMode);
void CreateEnemyShadowSprite(enum BattlerId battler);
void LoadAndCreateEnemyShadowSprites(void);
void SpriteCB_SetInvisible(struct Sprite *sprite);
-void SetBattlerShadowSpriteCallback(enum BattlerId battler, u16 species);
+void SetBattlerShadowSpriteCallback(enum BattlerId battler, enum Species species);
void HideBattlerShadowSprite(enum BattlerId battler);
void FillAroundBattleWindows(void);
void ClearTemporarySpeciesSpriteData(enum BattlerId battler, bool32 dontClearTransform, bool32 dontClearSubstitute);
diff --git a/include/battle_main.h b/include/battle_main.h
index f288a018e6..6a79b2aad3 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -9,8 +9,8 @@
// For displaying a multi battle partner's Pokรฉmon in the party menu
struct MultiPartnerMenuPokemon
{
- /*0x00*/ u16 species;
- /*0x02*/ u16 heldItem;
+ /*0x00*/ enum Species species;
+ /*0x02*/ enum Item heldItem;
/*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x0F*/ u8 level;
/*0x10*/ u16 hp;
@@ -109,7 +109,7 @@ void SetTypeBeforeUsingMove(enum Move move, enum BattlerId battler);
bool32 IsWildMonSmart(void);
u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer *trainer, bool32 firstTrainer, u32 battleTypeFlags);
void ModifyPersonalityForNature(u32 *personality, u32 newNature);
-u32 GeneratePersonalityForGender(u32 gender, u32 species);
+u32 GeneratePersonalityForGender(u32 gender, enum Species species);
void CustomTrainerPartyAssignMoves(struct Pokemon *mon, const struct TrainerMon *partyEntry);
bool32 CanPlayerForfeitNormalTrainerBattle(void);
bool32 DidPlayerForfeitNormalTrainerBattle(void);
diff --git a/include/battle_partner.h b/include/battle_partner.h
index 75e97a667f..042d18dcba 100644
--- a/include/battle_partner.h
+++ b/include/battle_partner.h
@@ -4,8 +4,6 @@
#include "difficulty.h"
#include "constants/battle_partner.h"
-extern const struct Trainer gBattlePartners[DIFFICULTY_COUNT][PARTNER_COUNT];
-
void FillPartnerParty(u16 trainerId);
#endif // BATTLE_PARTNER_H
diff --git a/include/battle_scripts.h b/include/battle_scripts.h
index ff932f818c..f04c1a2dca 100644
--- a/include/battle_scripts.h
+++ b/include/battle_scripts.h
@@ -159,6 +159,7 @@ extern const u8 BattleScript_MoveEffectToxic[];
extern const u8 BattleScript_MoveEffectPayDay[];
extern const u8 BattleScript_MoveEffectWrap[];
extern const u8 BattleScript_MoveEffectConfusion[];
+extern const u8 BattleScript_MoveEffectRecoilHP25[];
extern const u8 BattleScript_MoveEffectRecoil[];
extern const u8 BattleScript_FaintAttackerForExplosion[];
extern const u8 BattleScript_MaxHp50Recoil[];
@@ -389,6 +390,7 @@ extern const u8 BattleScript_TerrainPreventsEnd2[];
extern const u8 BattleScript_ImmunityProtectedEnd2[];
extern const u8 BattleScript_MistyTerrainPrevents[];
extern const u8 BattleScript_ElectricTerrainPrevents[];
+extern const u8 BattleScript_NoEffectivenessAbility[];
extern const u8 BattleScript_DoesntAffectTargetAtkString[];
extern const u8 BattleScript_DoesntAffectScripting[];
extern const u8 BattleScript_GulpMissileGorging[];
@@ -403,7 +405,6 @@ extern const u8 BattleScript_MysteriousAirCurrentBlowsOn[];
extern const u8 BattleScript_AttackWeakenedByStrongWinds[];
extern const u8 BattleScript_BlockedByPrimalWeather[];
extern const u8 BattleScript_PrimalReversion[];
-extern const u8 BattleScript_HyperspaceFuryRemoveProtect[];
extern const u8 BattleScript_SelectingNotAllowedMoveGorillaTactics[];
extern const u8 BattleScript_SelectingNotAllowedMoveGorillaTacticsInPalace[];
extern const u8 BattleScript_WanderingSpiritActivates[];
@@ -449,12 +450,12 @@ extern const u8 BattleScript_DampPreventsAftermath[];
extern const u8 BattleScript_HealingWishActivates[];
extern const u8 BattleScript_LunarDanceActivates[];
extern const u8 BattleScript_ShellTrapSetUp[];
-extern const u8 BattleScript_StealthRockActivates[];
+extern const u8 BattleScript_MoveEffectStealthRock[];
extern const u8 BattleScript_CouldntFullyProtect[];
extern const u8 BattleScript_TargetAvoidsAttack[];
extern const u8 BattleScript_TargetAvoidsAttackConsumeFlingItem[];
extern const u8 BattleScript_MoveEffectStockpileWoreOff[];
-extern const u8 BattleScript_SpikesActivates[];
+extern const u8 BattleScript_MoveEffectSpikes[];
extern const u8 BattleScript_BerserkGeneRet[];
extern const u8 BattleScript_TargetFormChangeWithStringNoPopup[];
extern const u8 BattleScript_DefDown[];
@@ -471,7 +472,7 @@ extern const u8 BattleScript_TheRainbowDisappeared[];
extern const u8 BattleScript_HurtByTheSeaOfFire[];
extern const u8 BattleScript_TheSeaOfFireDisappeared[];
extern const u8 BattleScript_TheSwampDisappeared[];
-extern const u8 BattleScript_EffectPsychicNoise[];
+extern const u8 BattleScript_MoveEffectPsychicNoise[];
extern const u8 BattleScript_AromaVeilProtectsRet[];
extern const u8 BattleScript_LowerAtkSpAtk[];
extern const u8 BattleScript_Terastallization[];
@@ -529,16 +530,15 @@ extern const u8 BattleScript_EffectExtremeEvoboost[];
// max moves
extern const u8 BattleScript_EffectRaiseStatAllies[];
extern const u8 BattleScript_EffectLowerStatFoes[];
-extern const u8 BattleScript_EffectSetWeather[];
-extern const u8 BattleScript_EffectSetTerrain[];
-extern const u8 BattleScript_EffectSteelsurge[];
-extern const u8 BattleScript_DamageNonTypesStarts[];
+extern const u8 BattleScript_MoveEffectSetWeather[];
+extern const u8 BattleScript_MoveEffectSetTerrain[];
+extern const u8 BattleScript_MoveEffectSteelsurge[];
+extern const u8 BattleScript_MoveEffectDamageNonTypes[];
extern const u8 BattleScript_DamageNonTypesContinues[];
extern const u8 BattleScript_MoveEffectDefog[];
-extern const u8 BattleScript_MoveEffectAuroraVeil[];
-extern const u8 BattleScript_EffectGravitySuccess[];
-extern const u8 BattleScript_MoveEffectYawnSide[];
-extern const u8 BattleScript_EffectTryReducePP[];
+extern const u8 BattleScript_MoveEffectGravity[];
+extern const u8 BattleScript_MoveEffectYawnFoe[];
+extern const u8 BattleScript_MoveEffectSpite[];
extern const u8 BattleScript_EffectParalyzeSide[];
extern const u8 BattleScript_EffectPoisonSide[];
extern const u8 BattleScript_EffectPoisonParalyzeSide[];
@@ -768,8 +768,7 @@ extern const u8 BattleScript_EffectCoaching[];
extern const u8 BattleScript_EffectDecorate[];
extern const u8 BattleScript_EffectStruggle[];
extern const u8 BattleScript_EffectStuffCheeks[];
-extern const u8 BattleScript_MoveEffectLightScreen[];
-extern const u8 BattleScript_MoveEffectReflect[];
+extern const u8 BattleScript_MoveEffectScreens[];
extern const u8 BattleScript_MoveEffectLeechSeed[];
extern const u8 BattleScript_MoveEffectHaze[];
extern const u8 BattleScript_MoveEffectIonDeluge[];
diff --git a/include/battle_util.h b/include/battle_util.h
index 02320e4452..792ec6a458 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -121,6 +121,8 @@ struct BattleContext
enum HoldEffect holdEffectAtk;
enum HoldEffect holdEffectDef;
+ u8 aiTurnOrder[MAX_BATTLERS_COUNT];
+
// Flags
u32 isCrit:1;
u32 randomFactor:1;
@@ -159,8 +161,13 @@ enum EjectPackTiming
OTHER,
};
+enum SubCheck
+{
+ EXCLUDING_SUBSTITUTES,
+ INCLUDING_SUBSTITUTES
+};
+
void HandleAction_ThrowBall(void);
-uq4_12_t CalcTypeEffectivenessMultiplierHelper(enum Move move, enum Type moveType, enum BattlerId battlerAtk, enum BattlerId battlerDef, enum Ability abilityAtk, enum Ability abilityDef, bool32 recordAbilities);
u32 GetCurrentBattleWeather(void);
bool32 EndOrContinueWeather(void);
enum DamageCategory GetReflectDamageMoveDamageCategory(enum BattlerId battler, enum Move move);
@@ -206,7 +213,6 @@ void TryClearRageAndFuryCutter(void);
bool32 HasNoMonsToSwitch(enum BattlerId battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2);
bool32 TryChangeBattleWeather(enum BattlerId battler, u32 battleWeatherId, enum Ability ability);
bool32 TryChangeBattleTerrain(enum BattlerId battler, u32 statusFlag);
-bool32 CanAbilityBlockMove(enum BattlerId battlerAtk, enum BattlerId battlerDef, enum Ability abilityAtk, enum Ability abilityDef, u32 move, enum ResultOption option);
bool32 CanTargetBlockPranksterMove(struct BattleContext *ctx, s32 movePriority);
bool32 CanPsychicTerrainProtectTarget(struct BattleContext *ctx, s32 movePriority);
bool32 CanMoveBeBlockedByTarget(struct BattleContext *ctx, s32 movePriority);
@@ -252,7 +258,7 @@ s32 CalculateMoveDamageVars(struct BattleContext *ctx);
s32 DoFixedDamageMoveCalc(struct BattleContext *ctx);
s32 ApplyModifiersAfterDmgRoll(struct BattleContext *ctx, s32 dmg);
uq4_12_t CalcTypeEffectivenessMultiplier(struct BattleContext *ctx);
-uq4_12_t CalcPartyMonTypeEffectivenessMultiplier(enum Move move, u16 speciesDef, enum Ability abilityDef);
+uq4_12_t CalcPartyMonTypeEffectivenessMultiplier(enum Move move, enum Species speciesDef, enum Ability abilityDef);
uq4_12_t GetTypeModifier(enum Type atkType, enum Type defType);
uq4_12_t GetOverworldTypeEffectiveness(struct Pokemon *mon, enum Type moveType);
void UpdateMoveResultFlags(uq4_12_t modifier, u16 *resultFlags);
@@ -265,14 +271,14 @@ void ActivateUltraBurst(enum BattlerId battler);
bool32 IsBattlerMegaEvolved(enum BattlerId battler);
bool32 IsBattlerPrimalReverted(enum BattlerId battler);
bool32 IsBattlerUltraBursted(enum BattlerId battler);
-u32 GetBattleFormChangeTargetSpecies(enum BattlerId battler, enum FormChanges method, enum Ability ability);
+enum Species GetBattleFormChangeTargetSpecies(enum BattlerId battler, enum FormChanges method, enum Ability ability);
bool32 TryRevertPartyMonFormChange(u32 partyIndex);
bool32 TryBattleFormChange(enum BattlerId battler, enum FormChanges method, enum Ability ability);
bool32 DoBattlersShareType(enum BattlerId battler1, enum BattlerId battler2);
bool32 CanBattlerGetOrLoseItem(enum BattlerId fromBattler, enum BattlerId battler, enum Item itemId);
-u32 GetBattlerVisualSpecies(enum BattlerId battler);
+enum Species GetBattlerVisualSpecies(enum BattlerId battler);
bool32 TryClearIllusion(enum BattlerId battler, enum Ability ability);
-u32 GetIllusionMonSpecies(enum BattlerId battler);
+enum Species GetIllusionMonSpecies(enum BattlerId battler);
struct Pokemon *GetIllusionMonPtr(enum BattlerId battler);
void ClearIllusionMon(enum BattlerId battler);
u32 GetIllusionMonPartyId(struct Pokemon *party, struct Pokemon *mon, struct Pokemon *partnerMon, enum BattlerId battler);
@@ -400,7 +406,7 @@ void RemoveAbilityFlags(enum BattlerId battler);
void CheckSetUnburden(enum BattlerId battler);
bool32 IsDazzlingAbility(enum Ability ability);
bool32 IsAllowedToUseBag(void);
-bool32 IsAnyTargetTurnDamaged(enum BattlerId battlerAtk);
+bool32 IsAnyTargetTurnDamaged(enum BattlerId battlerAtk, enum SubCheck subCheck);
bool32 IsAnyTargetAffected(void);
bool32 IsMimikyuDisguised(enum BattlerId battler);
bool32 IsDoubleSpreadMove(void);
@@ -414,6 +420,8 @@ void TryUpdateEvolutionTracker(enum EvolutionConditions evolutionCondition, u32
bool32 CanUseMoveConsecutively(enum BattlerId battler);
void TryResetConsecutiveUseCounter(enum BattlerId battler);
void SetOrClearRageVolatile(void);
-bool32 IsNaturalEnemy(u32 speciesAttacker, u32 speciesTarget);
+enum BattlerId GetTargetBySlot(enum BattlerId battlerAtk, enum BattlerId battlerDef);
+bool32 IsNaturalEnemy(enum Species speciesAttacker, enum Species speciesTarget);
+enum Stat GetDownloadStat(enum BattlerId battler);
#endif // GUARD_BATTLE_UTIL_H
diff --git a/include/battle_z_move.h b/include/battle_z_move.h
index 6a039c21f0..dbdc5054c1 100644
--- a/include/battle_z_move.h
+++ b/include/battle_z_move.h
@@ -5,7 +5,7 @@
struct SignatureZMove
{
- u16 species;
+ enum Species species;
enum Item item;
enum Move move;
enum Move zmove;
@@ -18,7 +18,7 @@ void ActivateZMove(enum BattlerId battler);
bool32 IsViableZMove(enum BattlerId battler, enum Move move);
bool32 TryChangeZTrigger(enum BattlerId battler, u32 moveIndex);
enum Move GetTypeBasedZMove(enum Move move);
-enum Move GetSignatureZMove(enum Move move, u32 species, enum Item item);
+enum Move GetSignatureZMove(enum Move move, enum Species species, enum Item item);
bool32 MoveSelectionDisplayZMove(enum Move zmove, enum BattlerId battler);
void SetZEffect(void);
void AssignUsableZMoves(enum BattlerId battler, enum Move *moves);
diff --git a/include/config/ai.h b/include/config/ai.h
index 30880b018a..ecf95bc70d 100644
--- a/include/config/ai.h
+++ b/include/config/ai.h
@@ -46,6 +46,8 @@
#define SHOULD_SWITCH_NATURAL_CURE_WEAK_STATS_RAISED_PERCENTAGE 10
#define SHOULD_SWITCH_REGENERATOR_PERCENTAGE 50
#define SHOULD_SWITCH_REGENERATOR_STATS_RAISED_PERCENTAGE 20
+#define SHOULD_SWITCH_INTIMIDATE_PERCENTAGE 25
+#define SHOULD_SWITCH_INTIMIDATE_STATS_RAISED_PERCENTAGE 10
// AI switchin considerations
#define ALL_MOVES_BAD_STATUS_MOVES_BAD FALSE // If the AI has no moves that affect the target, ShouldSwitchIfAllMovesBad can prompt a switch. Enabling this config will ignore status moves that can affect the target when making this decision.
@@ -84,6 +86,21 @@
#define AI_DAMAGES_THROUGH_BERRIES TRUE // AI will see through resist berries when considering a certain KO threshold for the purposes damage calcs; this is considered when comparing best moves to KO to still pick the actual OHKO if needed
#define AI_IGNORE_BERRY_KO_THRESHOLD 2 // KO threshold AI must meet in order to treat it berry though it doesn't exist (ie. 2 means "If the AI can 2HKO with berry resisted attack + not-berry resisted next attack, ignore berry resistence when calcing first attack"). Requires AI_DAMAGES_THROUGH_BERRIES
+// AI damage calc roll considerations
+#define AI_ROLL_MIN 1
+#define AI_ROLL_MEDIAN 2
+#define AI_ROLL_MAX 3
+#define AI_ROLL_RANDOM 4
+#define AI_ROLL_TYPE_COUNT 5
+
+// Define which roll type to use in each context; overridden by AI_FLAG_RISKY and AI_FLAG_CONSERVATIVE
+#define AI_ROLL_ATTACKING AI_ROLL_MAX
+#define AI_ROLL_DEFENDING AI_ROLL_MEDIAN
+#define AI_ROLL_SWITCHIN_ATTACKING AI_ROLL_MEDIAN
+#define AI_ROLL_SWITCHIN_DEFENDING AI_ROLL_MEDIAN
+#define AI_ROLL_SHOULD_SETUP_DEFENDING AI_ROLL_MAX
+#define AI_ROLL_ATTACKING_PARTNER AI_ROLL_MAX
+
// AI prediction chances
#define PREDICT_SWITCH_CHANCE 50
#define PREDICT_MOVE_CHANCE 100
diff --git a/include/config/battle.h b/include/config/battle.h
index 64129755f1..ff9bafe78f 100644
--- a/include/config/battle.h
+++ b/include/config/battle.h
@@ -56,6 +56,7 @@
#define B_TAILWIND_TURNS GEN_LATEST // In Gen5+, Tailwind lasts 4 turns instead of 3.
#define B_SLEEP_TURNS GEN_LATEST // In Gen5+, sleep lasts for 2-4 turns instead of 2-5 turns.
#define B_TAUNT_TURNS GEN_LATEST // In Gen5+, Taunt lasts 3 turns if the user acts before the target, or 4 turns if the target acted before the user. In Gen3, taunt lasts 2 turns and in Gen 4, 3-5 turns.
+#define B_ENCORE_TURNS GEN_LATEST // In Gen5+, Encore lasts 3 turns if the target hasn't yet moved this turn, or 4 turns if it has. In Gen4, it lasts 3-7 turns. In Gen2-3, 2-6 turns.
#define B_SPORT_TURNS GEN_LATEST // In Gen6+, Water/Mud Sport last 5 turns, even if the user switches out.
#define B_MEGA_EVO_TURN_ORDER GEN_LATEST // In Gen7, a Pokรฉmon's Speed after Mega Evolution is used to determine turn order, not its Speed before.
#define B_RECALC_TURN_AFTER_ACTIONS GEN_LATEST // In Gen8+, switching/using a move affects the current turn's order of actions, better known as dynamic speed.
diff --git a/include/config/pokemon.h b/include/config/pokemon.h
index e1132f211b..e93d26333e 100644
--- a/include/config/pokemon.h
+++ b/include/config/pokemon.h
@@ -61,6 +61,7 @@
#define P_ONLY_OBTAINABLE_SHINIES FALSE // If TRUE, Pokรฉmon encountered in the Battle Pyramid or while catching is disabled won't be Shiny.
#define P_NO_SHINIES_WITHOUT_POKEBALLS FALSE // If TRUE, Pokรฉmon encountered when the player is out of Pokรฉ Balls won't be Shiny.
#define P_SHOW_DYNAMIC_TYPES FALSE // If TRUE, all moves with dynamic type changes will be reflected as their current type in battle/summary screens instead of just select ones like in vanilla.
+#define P_BASE_HP_1_SHEDINJA_HANDLING FALSE // If TRUE, all species with 1 Base HP will have their handling match Shedinja's.
// Learnset helper toggles
#define P_LEARNSET_HELPER_TEACHABLE TRUE // If FALSE, make sure to remove teachable_learnset.h from your .gitignore file. If TRUE, teachable_learnsets.h will be populated by tools/learnset_helpers/make_teachables.py using the included JSON files based on available TMs and tutors.
diff --git a/include/generational_changes.h b/include/config_changes.h
similarity index 76%
rename from include/generational_changes.h
rename to include/config_changes.h
index 480650320b..6d3e434f57 100644
--- a/include/generational_changes.h
+++ b/include/config_changes.h
@@ -1,17 +1,19 @@
-#ifndef GUARD_GENERATIONAL_CHANGES_H
-#define GUARD_GENERATIONAL_CHANGES_H
+#ifndef GUARD_CONFIG_CHANGES_H
+#define GUARD_CONFIG_CHANGES_H
-#include "constants/generational_changes.h"
+#include "constants/config_changes.h"
#include "config/battle.h"
#include "config/pokerus.h"
+#include "config/ai.h"
#define UNPACK_CONFIG_STRUCT(_name, _field, _typeMaxValue, ...) INVOKE_WITH_(UNPACK_CONFIG_STRUCT_, _field, UNPACK_B(_typeMaxValue));
#define UNPACK_CONFIG_STRUCT_(_field, _type, ...) _type FIRST(__VA_OPT__(_field:BIT_SIZE(FIRST(__VA_ARGS__)),) _field)
-struct GenChanges
+struct ConfigChanges
{
BATTLE_CONFIG_DEFINITIONS(UNPACK_CONFIG_STRUCT)
POKEMON_CONFIG_DEFINITIONS(UNPACK_CONFIG_STRUCT)
+ AI_CONFIG_DEFINITIONS(UNPACK_CONFIG_STRUCT)
// Expands to:
// u32 critChance:4;
// u32 critMultiplier:4;
@@ -28,4 +30,4 @@ void TestInitConfigData(void);
void TestFreeConfigData(void);
#endif
-#endif // GUARD_GENERATIONAL_CHANGES_H
+#endif // GUARD_CONFIG_CHANGES_H
diff --git a/include/constants/battle.h b/include/constants/battle.h
index eb9c8603b0..01da04db4f 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -213,7 +213,7 @@ enum VolatileFlags
F(VOLATILE_STICKY_SYRUPED_BY, stickySyrupedBy, (enum BattlerId, MAX_BITS(MAX_BATTLERS_COUNT))) \
F(VOLATILE_GLAIVE_RUSH, glaiveRush, (u32, 1)) \
F(VOLATILE_LEECH_SEED, leechSeed, (enum BattlerId, MAX_BITS(MAX_BATTLERS_COUNT)), V_BATON_PASSABLE) \
- F(VOLATILE_LOCK_ON, lockOn, (u32, 2), V_BATON_PASSABLE) \
+ F(VOLATILE_LOCK_ON, lockOn, (u32, 2)) \
F(VOLATILE_PERISH_SONG, perishSong, (u32, 1), V_BATON_PASSABLE) \
F(VOLATILE_MINIMIZE, minimize, (u32, 1)) \
F(VOLATILE_CHARGE_TIMER, chargeTimer, (u32, 3)) \
@@ -256,7 +256,7 @@ enum VolatileFlags
F(VOLATILE_FURY_CUTTER_COUNTER, furyCutterCounter, (u32, UINT8_MAX)) \
F(VOLATILE_METRONOME_ITEM_COUNTER, metronomeItemCounter, (u32, UINT8_MAX)) \
F(VOLATILE_BATTLER_PREVENTING_ESCAPE, battlerPreventingEscape, (enum BattlerId, MAX_BITS(MAX_BATTLERS_COUNT))) \
- F(VOLATILE_BATTLER_WITH_SURE_HIT, battlerWithSureHit, (enum BattlerId, MAX_BITS(MAX_BATTLERS_COUNT))) \
+ F(VOLATILE_BATTLER_WITH_SURE_HIT, battlerWithSureHit, (enum BattlerId, MAX_BATTLERS_COUNT)) \
F(VOLATILE_MIMICKED_MOVES, mimickedMoves, (u32, MAX_BITS(MAX_MON_MOVES))) \
F(VOLATILE_RECHARGE_TIMER, rechargeTimer, (u32, 2)) \
F(VOLATILE_AUTOTOMIZE_COUNT, autotomizeCount, (u32, UINT8_MAX)) \
diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h
index b42b450d2b..ece2612ebb 100644
--- a/include/constants/battle_string_ids.h
+++ b/include/constants/battle_string_ids.h
@@ -822,6 +822,13 @@ enum ProtectLikeUsedStringID
B_MSG_PROTECTED_TEAM,
};
+// gBrokeProtectionStringIds
+enum BrokeProtectionStringID
+{
+ B_MSG_FEINT,
+ B_MSG_HYPERSPACE_FURY,
+};
+
// gRestUsedStringIds
enum RestUsedStringID
{
@@ -920,7 +927,7 @@ enum SportsUsedStringID
// gCaughtMonStringIds
enum CaughtMonStringID
{
- B_MSG_NO_MESSSAGE_SKIP,
+ B_MSG_NO_MESSAGE_SKIP,
// "Lanette's" should always follow "someone's"
B_MSG_SENT_SOMEONES_PC,
B_MSG_SENT_LANETTES_PC,
diff --git a/include/constants/generational_changes.h b/include/constants/config_changes.h
similarity index 98%
rename from include/constants/generational_changes.h
rename to include/constants/config_changes.h
index 77657f6a05..1c0abe77ee 100644
--- a/include/constants/generational_changes.h
+++ b/include/constants/config_changes.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_CONSTANTS_GENERATIONAL_CHANGES_H
-#define GUARD_CONSTANTS_GENERATIONAL_CHANGES_H
+#ifndef GUARD_CONSTANTS_CONFIG_CHANGES_H
+#define GUARD_CONSTANTS_CONFIG_CHANGES_H
/* Config definitions */
#define BATTLE_CONFIG_DEFINITIONS(F) \
@@ -54,7 +54,8 @@
F(B_DISABLE_TURNS, disableTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_TAILWIND_TURNS, tailwindTurns, (u32, GEN_COUNT - 1)) \
F(B_SLEEP_TURNS, sleepTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
- F(B_TAUNT_TURNS, tauntTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
+ F(B_TAUNT_TURNS, tauntTurns, (u32, GEN_COUNT - 1)) \
+ F(B_ENCORE_TURNS, encoreTurns, (u32, GEN_COUNT - 1)) \
F(B_SPORT_TURNS, sportTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_MEGA_EVO_TURN_ORDER, megaEvoTurnOrder, (u32, GEN_COUNT - 1)) \
F(B_RECALC_TURN_AFTER_ACTIONS, recalcTurnAfterActions, (u32, GEN_COUNT - 1)) \
@@ -231,6 +232,8 @@
F(POKERUS_HERD_IMMUNITY, pokerusHerdImmunity, (u32, TRUE)) \
F(POKERUS_WEAK_VARIANT, pokerusWeakVariant, (u32, TRUE)) \
+#define AI_CONFIG_DEFINITIONS(F) \
+ F(AI_ROLL_ATTACKING, aiRollAttacking, (u32, AI_ROLL_TYPE_COUNT - 1)) \
#define GET_CONFIG_MAXIMUM(_typeMaxValue, ...) INVOKE_WITH_B(GET_CONFIG_MAXIMUM_, _typeMaxValue)
#define GET_CONFIG_MAXIMUM_(_type, ...) FIRST(__VA_OPT__(FIRST(__VA_ARGS__),) MAX_BITS((sizeof(_type) * 8)))
@@ -241,7 +244,8 @@ enum ConfigTag
{
BATTLE_CONFIG_DEFINITIONS(UNPACK_CONFIG_ENUMS)
POKEMON_CONFIG_DEFINITIONS(UNPACK_CONFIG_ENUMS)
+ AI_CONFIG_DEFINITIONS(UNPACK_CONFIG_ENUMS)
CONFIG_COUNT
};
-#endif // GUARD_CONSTANTS_GENERATIONAL_CHANGES_H
+#endif // GUARD_CONSTANTS_CONFIG_CHANGES_H
diff --git a/include/constants/difficulty.h b/include/constants/difficulty.h
index 44ef8d9d71..4b7cd7ddf6 100644
--- a/include/constants/difficulty.h
+++ b/include/constants/difficulty.h
@@ -6,6 +6,9 @@ enum DifficultyLevel
DIFFICULTY_EASY,
DIFFICULTY_NORMAL, //If you rename this, the word "Normal" in fprint_trainers must be replaced with the new difficulty name.
DIFFICULTY_HARD,
+#if TESTING
+ DIFFICULTY_TEST,
+#endif
DIFFICULTY_COUNT,
};
diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h
index f7b3a8f3d7..b8ed483d13 100644
--- a/include/constants/event_objects.h
+++ b/include/constants/event_objects.h
@@ -557,16 +557,16 @@ enum
#define OBJ_EVENT_PAL_TAG_PLAYER_GREEN 0x1127
#define OBJ_EVENT_PAL_TAG_PLAYER_GREEN_REFLECTION 0x1128
#define OBJ_EVENT_PAL_TAG_NPC_BLUE 0x1129
-#define OBJ_EVENT_PAL_TAG_NPC_PINK 0x1130
-#define OBJ_EVENT_PAL_TAG_NPC_GREEN 0x1131
-#define OBJ_EVENT_PAL_TAG_NPC_WHITE 0x1132
-#define OBJ_EVENT_PAL_TAG_NPC_BLUE_REFLECTION 0x1133
-#define OBJ_EVENT_PAL_TAG_NPC_PINK_REFLECTION 0x1134
-#define OBJ_EVENT_PAL_TAG_NPC_GREEN_REFLECTION 0x1135
-#define OBJ_EVENT_PAL_TAG_NPC_WHITE_REFLECTION 0x1136
-#define OBJ_EVENT_PAL_TAG_METEORITE 0x1137
-#define OBJ_EVENT_PAL_TAG_SEAGALLOP 0x1138
-#define OBJ_EVENT_PAL_TAG_SS_ANNE 0x1139
+#define OBJ_EVENT_PAL_TAG_NPC_PINK 0x112A
+#define OBJ_EVENT_PAL_TAG_NPC_GREEN 0x112B
+#define OBJ_EVENT_PAL_TAG_NPC_WHITE 0x112C
+#define OBJ_EVENT_PAL_TAG_NPC_BLUE_REFLECTION 0x112D
+#define OBJ_EVENT_PAL_TAG_NPC_PINK_REFLECTION 0x112E
+#define OBJ_EVENT_PAL_TAG_NPC_GREEN_REFLECTION 0x112F
+#define OBJ_EVENT_PAL_TAG_NPC_WHITE_REFLECTION 0x1130
+#define OBJ_EVENT_PAL_TAG_METEORITE 0x1131
+#define OBJ_EVENT_PAL_TAG_SEAGALLOP 0x1132
+#define OBJ_EVENT_PAL_TAG_SS_ANNE 0x1133
#if OW_FOLLOWERS_POKEBALLS
// Vanilla
diff --git a/include/constants/global.h b/include/constants/global.h
index 93f88bcf18..e7df979ede 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -103,7 +103,6 @@ enum Language
#define MAX_REMATCH_ENTRIES 100 // only REMATCH_TABLE_ENTRIES (78) are used
#define NUM_CONTEST_WINNERS 13
#define UNION_ROOM_KB_ROW_COUNT 10
-#define GIFT_RIBBONS_COUNT 11
#define SAVED_TRENDS_COUNT 5
#define PYRAMID_BAG_ITEMS_COUNT 10
#define ROAMER_COUNT 1 // Number of maximum concurrent active roamers
diff --git a/include/constants/species.h b/include/constants/species.h
index 98b6f3c8e5..bf5122e13f 100644
--- a/include/constants/species.h
+++ b/include/constants/species.h
@@ -6,1691 +6,1697 @@
// Discussion: https://github.com/rh-hideout/pokeemerald-expansion/pull/5075#issuecomment-2384088602
// Showdown: https://github.com/smogon/Pokemon-Showdown/blob/master/data/pokedex.ts
-#define SPECIES_NONE 0
-#define SPECIES_BULBASAUR 1
-#define SPECIES_IVYSAUR 2
-#define SPECIES_VENUSAUR 3
-#define SPECIES_CHARMANDER 4
-#define SPECIES_CHARMELEON 5
-#define SPECIES_CHARIZARD 6
-#define SPECIES_SQUIRTLE 7
-#define SPECIES_WARTORTLE 8
-#define SPECIES_BLASTOISE 9
-#define SPECIES_CATERPIE 10
-#define SPECIES_METAPOD 11
-#define SPECIES_BUTTERFREE 12
-#define SPECIES_WEEDLE 13
-#define SPECIES_KAKUNA 14
-#define SPECIES_BEEDRILL 15
-#define SPECIES_PIDGEY 16
-#define SPECIES_PIDGEOTTO 17
-#define SPECIES_PIDGEOT 18
-#define SPECIES_RATTATA 19
-#define SPECIES_RATICATE 20
-#define SPECIES_SPEAROW 21
-#define SPECIES_FEAROW 22
-#define SPECIES_EKANS 23
-#define SPECIES_ARBOK 24
-#define SPECIES_PIKACHU 25
-#define SPECIES_RAICHU 26
-#define SPECIES_SANDSHREW 27
-#define SPECIES_SANDSLASH 28
-#define SPECIES_NIDORAN_F 29
-#define SPECIES_NIDORINA 30
-#define SPECIES_NIDOQUEEN 31
-#define SPECIES_NIDORAN_M 32
-#define SPECIES_NIDORINO 33
-#define SPECIES_NIDOKING 34
-#define SPECIES_CLEFAIRY 35
-#define SPECIES_CLEFABLE 36
-#define SPECIES_VULPIX 37
-#define SPECIES_NINETALES 38
-#define SPECIES_JIGGLYPUFF 39
-#define SPECIES_WIGGLYTUFF 40
-#define SPECIES_ZUBAT 41
-#define SPECIES_GOLBAT 42
-#define SPECIES_ODDISH 43
-#define SPECIES_GLOOM 44
-#define SPECIES_VILEPLUME 45
-#define SPECIES_PARAS 46
-#define SPECIES_PARASECT 47
-#define SPECIES_VENONAT 48
-#define SPECIES_VENOMOTH 49
-#define SPECIES_DIGLETT 50
-#define SPECIES_DUGTRIO 51
-#define SPECIES_MEOWTH 52
-#define SPECIES_PERSIAN 53
-#define SPECIES_PSYDUCK 54
-#define SPECIES_GOLDUCK 55
-#define SPECIES_MANKEY 56
-#define SPECIES_PRIMEAPE 57
-#define SPECIES_GROWLITHE 58
-#define SPECIES_ARCANINE 59
-#define SPECIES_POLIWAG 60
-#define SPECIES_POLIWHIRL 61
-#define SPECIES_POLIWRATH 62
-#define SPECIES_ABRA 63
-#define SPECIES_KADABRA 64
-#define SPECIES_ALAKAZAM 65
-#define SPECIES_MACHOP 66
-#define SPECIES_MACHOKE 67
-#define SPECIES_MACHAMP 68
-#define SPECIES_BELLSPROUT 69
-#define SPECIES_WEEPINBELL 70
-#define SPECIES_VICTREEBEL 71
-#define SPECIES_TENTACOOL 72
-#define SPECIES_TENTACRUEL 73
-#define SPECIES_GEODUDE 74
-#define SPECIES_GRAVELER 75
-#define SPECIES_GOLEM 76
-#define SPECIES_PONYTA 77
-#define SPECIES_RAPIDASH 78
-#define SPECIES_SLOWPOKE 79
-#define SPECIES_SLOWBRO 80
-#define SPECIES_MAGNEMITE 81
-#define SPECIES_MAGNETON 82
-#define SPECIES_FARFETCHD 83
-#define SPECIES_DODUO 84
-#define SPECIES_DODRIO 85
-#define SPECIES_SEEL 86
-#define SPECIES_DEWGONG 87
-#define SPECIES_GRIMER 88
-#define SPECIES_MUK 89
-#define SPECIES_SHELLDER 90
-#define SPECIES_CLOYSTER 91
-#define SPECIES_GASTLY 92
-#define SPECIES_HAUNTER 93
-#define SPECIES_GENGAR 94
-#define SPECIES_ONIX 95
-#define SPECIES_DROWZEE 96
-#define SPECIES_HYPNO 97
-#define SPECIES_KRABBY 98
-#define SPECIES_KINGLER 99
-#define SPECIES_VOLTORB 100
-#define SPECIES_ELECTRODE 101
-#define SPECIES_EXEGGCUTE 102
-#define SPECIES_EXEGGUTOR 103
-#define SPECIES_CUBONE 104
-#define SPECIES_MAROWAK 105
-#define SPECIES_HITMONLEE 106
-#define SPECIES_HITMONCHAN 107
-#define SPECIES_LICKITUNG 108
-#define SPECIES_KOFFING 109
-#define SPECIES_WEEZING 110
-#define SPECIES_RHYHORN 111
-#define SPECIES_RHYDON 112
-#define SPECIES_CHANSEY 113
-#define SPECIES_TANGELA 114
-#define SPECIES_KANGASKHAN 115
-#define SPECIES_HORSEA 116
-#define SPECIES_SEADRA 117
-#define SPECIES_GOLDEEN 118
-#define SPECIES_SEAKING 119
-#define SPECIES_STARYU 120
-#define SPECIES_STARMIE 121
-#define SPECIES_MR_MIME 122
-#define SPECIES_SCYTHER 123
-#define SPECIES_JYNX 124
-#define SPECIES_ELECTABUZZ 125
-#define SPECIES_MAGMAR 126
-#define SPECIES_PINSIR 127
-#define SPECIES_TAUROS 128
-#define SPECIES_MAGIKARP 129
-#define SPECIES_GYARADOS 130
-#define SPECIES_LAPRAS 131
-#define SPECIES_DITTO 132
-#define SPECIES_EEVEE 133
-#define SPECIES_VAPOREON 134
-#define SPECIES_JOLTEON 135
-#define SPECIES_FLAREON 136
-#define SPECIES_PORYGON 137
-#define SPECIES_OMANYTE 138
-#define SPECIES_OMASTAR 139
-#define SPECIES_KABUTO 140
-#define SPECIES_KABUTOPS 141
-#define SPECIES_AERODACTYL 142
-#define SPECIES_SNORLAX 143
-#define SPECIES_ARTICUNO 144
-#define SPECIES_ZAPDOS 145
-#define SPECIES_MOLTRES 146
-#define SPECIES_DRATINI 147
-#define SPECIES_DRAGONAIR 148
-#define SPECIES_DRAGONITE 149
-#define SPECIES_MEWTWO 150
-#define SPECIES_MEW 151
-#define SPECIES_CHIKORITA 152
-#define SPECIES_BAYLEEF 153
-#define SPECIES_MEGANIUM 154
-#define SPECIES_CYNDAQUIL 155
-#define SPECIES_QUILAVA 156
-#define SPECIES_TYPHLOSION 157
-#define SPECIES_TOTODILE 158
-#define SPECIES_CROCONAW 159
-#define SPECIES_FERALIGATR 160
-#define SPECIES_SENTRET 161
-#define SPECIES_FURRET 162
-#define SPECIES_HOOTHOOT 163
-#define SPECIES_NOCTOWL 164
-#define SPECIES_LEDYBA 165
-#define SPECIES_LEDIAN 166
-#define SPECIES_SPINARAK 167
-#define SPECIES_ARIADOS 168
-#define SPECIES_CROBAT 169
-#define SPECIES_CHINCHOU 170
-#define SPECIES_LANTURN 171
-#define SPECIES_PICHU 172
-#define SPECIES_CLEFFA 173
-#define SPECIES_IGGLYBUFF 174
-#define SPECIES_TOGEPI 175
-#define SPECIES_TOGETIC 176
-#define SPECIES_NATU 177
-#define SPECIES_XATU 178
-#define SPECIES_MAREEP 179
-#define SPECIES_FLAAFFY 180
-#define SPECIES_AMPHAROS 181
-#define SPECIES_BELLOSSOM 182
-#define SPECIES_MARILL 183
-#define SPECIES_AZUMARILL 184
-#define SPECIES_SUDOWOODO 185
-#define SPECIES_POLITOED 186
-#define SPECIES_HOPPIP 187
-#define SPECIES_SKIPLOOM 188
-#define SPECIES_JUMPLUFF 189
-#define SPECIES_AIPOM 190
-#define SPECIES_SUNKERN 191
-#define SPECIES_SUNFLORA 192
-#define SPECIES_YANMA 193
-#define SPECIES_WOOPER 194
-#define SPECIES_QUAGSIRE 195
-#define SPECIES_ESPEON 196
-#define SPECIES_UMBREON 197
-#define SPECIES_MURKROW 198
-#define SPECIES_SLOWKING 199
-#define SPECIES_MISDREAVUS 200
-#define SPECIES_UNOWN 201
-#define SPECIES_WOBBUFFET 202
-#define SPECIES_GIRAFARIG 203
-#define SPECIES_PINECO 204
-#define SPECIES_FORRETRESS 205
-#define SPECIES_DUNSPARCE 206
-#define SPECIES_GLIGAR 207
-#define SPECIES_STEELIX 208
-#define SPECIES_SNUBBULL 209
-#define SPECIES_GRANBULL 210
-#define SPECIES_QWILFISH 211
-#define SPECIES_SCIZOR 212
-#define SPECIES_SHUCKLE 213
-#define SPECIES_HERACROSS 214
-#define SPECIES_SNEASEL 215
-#define SPECIES_TEDDIURSA 216
-#define SPECIES_URSARING 217
-#define SPECIES_SLUGMA 218
-#define SPECIES_MAGCARGO 219
-#define SPECIES_SWINUB 220
-#define SPECIES_PILOSWINE 221
-#define SPECIES_CORSOLA 222
-#define SPECIES_REMORAID 223
-#define SPECIES_OCTILLERY 224
-#define SPECIES_DELIBIRD 225
-#define SPECIES_MANTINE 226
-#define SPECIES_SKARMORY 227
-#define SPECIES_HOUNDOUR 228
-#define SPECIES_HOUNDOOM 229
-#define SPECIES_KINGDRA 230
-#define SPECIES_PHANPY 231
-#define SPECIES_DONPHAN 232
-#define SPECIES_PORYGON2 233
-#define SPECIES_STANTLER 234
-#define SPECIES_SMEARGLE 235
-#define SPECIES_TYROGUE 236
-#define SPECIES_HITMONTOP 237
-#define SPECIES_SMOOCHUM 238
-#define SPECIES_ELEKID 239
-#define SPECIES_MAGBY 240
-#define SPECIES_MILTANK 241
-#define SPECIES_BLISSEY 242
-#define SPECIES_RAIKOU 243
-#define SPECIES_ENTEI 244
-#define SPECIES_SUICUNE 245
-#define SPECIES_LARVITAR 246
-#define SPECIES_PUPITAR 247
-#define SPECIES_TYRANITAR 248
-#define SPECIES_LUGIA 249
-#define SPECIES_HO_OH 250
-#define SPECIES_CELEBI 251
-#define SPECIES_TREECKO 252
-#define SPECIES_GROVYLE 253
-#define SPECIES_SCEPTILE 254
-#define SPECIES_TORCHIC 255
-#define SPECIES_COMBUSKEN 256
-#define SPECIES_BLAZIKEN 257
-#define SPECIES_MUDKIP 258
-#define SPECIES_MARSHTOMP 259
-#define SPECIES_SWAMPERT 260
-#define SPECIES_POOCHYENA 261
-#define SPECIES_MIGHTYENA 262
-#define SPECIES_ZIGZAGOON 263
-#define SPECIES_LINOONE 264
-#define SPECIES_WURMPLE 265
-#define SPECIES_SILCOON 266
-#define SPECIES_BEAUTIFLY 267
-#define SPECIES_CASCOON 268
-#define SPECIES_DUSTOX 269
-#define SPECIES_LOTAD 270
-#define SPECIES_LOMBRE 271
-#define SPECIES_LUDICOLO 272
-#define SPECIES_SEEDOT 273
-#define SPECIES_NUZLEAF 274
-#define SPECIES_SHIFTRY 275
-#define SPECIES_TAILLOW 276
-#define SPECIES_SWELLOW 277
-#define SPECIES_WINGULL 278
-#define SPECIES_PELIPPER 279
-#define SPECIES_RALTS 280
-#define SPECIES_KIRLIA 281
-#define SPECIES_GARDEVOIR 282
-#define SPECIES_SURSKIT 283
-#define SPECIES_MASQUERAIN 284
-#define SPECIES_SHROOMISH 285
-#define SPECIES_BRELOOM 286
-#define SPECIES_SLAKOTH 287
-#define SPECIES_VIGOROTH 288
-#define SPECIES_SLAKING 289
-#define SPECIES_NINCADA 290
-#define SPECIES_NINJASK 291
-#define SPECIES_SHEDINJA 292
-#define SPECIES_WHISMUR 293
-#define SPECIES_LOUDRED 294
-#define SPECIES_EXPLOUD 295
-#define SPECIES_MAKUHITA 296
-#define SPECIES_HARIYAMA 297
-#define SPECIES_AZURILL 298
-#define SPECIES_NOSEPASS 299
-#define SPECIES_SKITTY 300
-#define SPECIES_DELCATTY 301
-#define SPECIES_SABLEYE 302
-#define SPECIES_MAWILE 303
-#define SPECIES_ARON 304
-#define SPECIES_LAIRON 305
-#define SPECIES_AGGRON 306
-#define SPECIES_MEDITITE 307
-#define SPECIES_MEDICHAM 308
-#define SPECIES_ELECTRIKE 309
-#define SPECIES_MANECTRIC 310
-#define SPECIES_PLUSLE 311
-#define SPECIES_MINUN 312
-#define SPECIES_VOLBEAT 313
-#define SPECIES_ILLUMISE 314
-#define SPECIES_ROSELIA 315
-#define SPECIES_GULPIN 316
-#define SPECIES_SWALOT 317
-#define SPECIES_CARVANHA 318
-#define SPECIES_SHARPEDO 319
-#define SPECIES_WAILMER 320
-#define SPECIES_WAILORD 321
-#define SPECIES_NUMEL 322
-#define SPECIES_CAMERUPT 323
-#define SPECIES_TORKOAL 324
-#define SPECIES_SPOINK 325
-#define SPECIES_GRUMPIG 326
-#define SPECIES_SPINDA 327
-#define SPECIES_TRAPINCH 328
-#define SPECIES_VIBRAVA 329
-#define SPECIES_FLYGON 330
-#define SPECIES_CACNEA 331
-#define SPECIES_CACTURNE 332
-#define SPECIES_SWABLU 333
-#define SPECIES_ALTARIA 334
-#define SPECIES_ZANGOOSE 335
-#define SPECIES_SEVIPER 336
-#define SPECIES_LUNATONE 337
-#define SPECIES_SOLROCK 338
-#define SPECIES_BARBOACH 339
-#define SPECIES_WHISCASH 340
-#define SPECIES_CORPHISH 341
-#define SPECIES_CRAWDAUNT 342
-#define SPECIES_BALTOY 343
-#define SPECIES_CLAYDOL 344
-#define SPECIES_LILEEP 345
-#define SPECIES_CRADILY 346
-#define SPECIES_ANORITH 347
-#define SPECIES_ARMALDO 348
-#define SPECIES_FEEBAS 349
-#define SPECIES_MILOTIC 350
-#define SPECIES_CASTFORM SPECIES_CASTFORM_NORMAL
-#define SPECIES_CASTFORM_NORMAL 351
-#define SPECIES_KECLEON 352
-#define SPECIES_SHUPPET 353
-#define SPECIES_BANETTE 354
-#define SPECIES_DUSKULL 355
-#define SPECIES_DUSCLOPS 356
-#define SPECIES_TROPIUS 357
-#define SPECIES_CHIMECHO 358
-#define SPECIES_ABSOL 359
-#define SPECIES_WYNAUT 360
-#define SPECIES_SNORUNT 361
-#define SPECIES_GLALIE 362
-#define SPECIES_SPHEAL 363
-#define SPECIES_SEALEO 364
-#define SPECIES_WALREIN 365
-#define SPECIES_CLAMPERL 366
-#define SPECIES_HUNTAIL 367
-#define SPECIES_GOREBYSS 368
-#define SPECIES_RELICANTH 369
-#define SPECIES_LUVDISC 370
-#define SPECIES_BAGON 371
-#define SPECIES_SHELGON 372
-#define SPECIES_SALAMENCE 373
-#define SPECIES_BELDUM 374
-#define SPECIES_METANG 375
-#define SPECIES_METAGROSS 376
-#define SPECIES_REGIROCK 377
-#define SPECIES_REGICE 378
-#define SPECIES_REGISTEEL 379
-#define SPECIES_LATIAS 380
-#define SPECIES_LATIOS 381
-#define SPECIES_KYOGRE 382
-#define SPECIES_GROUDON 383
-#define SPECIES_RAYQUAZA 384
-#define SPECIES_JIRACHI 385
-#define SPECIES_DEOXYS SPECIES_DEOXYS_NORMAL
-#define SPECIES_DEOXYS_NORMAL 386
-#define SPECIES_TURTWIG 387
-#define SPECIES_GROTLE 388
-#define SPECIES_TORTERRA 389
-#define SPECIES_CHIMCHAR 390
-#define SPECIES_MONFERNO 391
-#define SPECIES_INFERNAPE 392
-#define SPECIES_PIPLUP 393
-#define SPECIES_PRINPLUP 394
-#define SPECIES_EMPOLEON 395
-#define SPECIES_STARLY 396
-#define SPECIES_STARAVIA 397
-#define SPECIES_STARAPTOR 398
-#define SPECIES_BIDOOF 399
-#define SPECIES_BIBAREL 400
-#define SPECIES_KRICKETOT 401
-#define SPECIES_KRICKETUNE 402
-#define SPECIES_SHINX 403
-#define SPECIES_LUXIO 404
-#define SPECIES_LUXRAY 405
-#define SPECIES_BUDEW 406
-#define SPECIES_ROSERADE 407
-#define SPECIES_CRANIDOS 408
-#define SPECIES_RAMPARDOS 409
-#define SPECIES_SHIELDON 410
-#define SPECIES_BASTIODON 411
-#define SPECIES_BURMY_PLANT 412
-#define SPECIES_BURMY SPECIES_BURMY_PLANT
-#define SPECIES_WORMADAM_PLANT 413
-#define SPECIES_WORMADAM SPECIES_WORMADAM_PLANT
-#define SPECIES_MOTHIM_PLANT 414
-#define SPECIES_MOTHIM SPECIES_MOTHIM_PLANT
-#define SPECIES_COMBEE 415
-#define SPECIES_VESPIQUEN 416
-#define SPECIES_PACHIRISU 417
-#define SPECIES_BUIZEL 418
-#define SPECIES_FLOATZEL 419
-#define SPECIES_CHERUBI 420
-#define SPECIES_CHERRIM SPECIES_CHERRIM_OVERCAST
-#define SPECIES_CHERRIM_OVERCAST 421
-#define SPECIES_SHELLOS_WEST 422
-#define SPECIES_SHELLOS SPECIES_SHELLOS_WEST
-#define SPECIES_GASTRODON_WEST 423
-#define SPECIES_GASTRODON SPECIES_GASTRODON_WEST
-#define SPECIES_AMBIPOM 424
-#define SPECIES_DRIFLOON 425
-#define SPECIES_DRIFBLIM 426
-#define SPECIES_BUNEARY 427
-#define SPECIES_LOPUNNY 428
-#define SPECIES_MISMAGIUS 429
-#define SPECIES_HONCHKROW 430
-#define SPECIES_GLAMEOW 431
-#define SPECIES_PURUGLY 432
-#define SPECIES_CHINGLING 433
-#define SPECIES_STUNKY 434
-#define SPECIES_SKUNTANK 435
-#define SPECIES_BRONZOR 436
-#define SPECIES_BRONZONG 437
-#define SPECIES_BONSLY 438
-#define SPECIES_MIME_JR 439
-#define SPECIES_HAPPINY 440
-#define SPECIES_CHATOT 441
-#define SPECIES_SPIRITOMB 442
-#define SPECIES_GIBLE 443
-#define SPECIES_GABITE 444
-#define SPECIES_GARCHOMP 445
-#define SPECIES_MUNCHLAX 446
-#define SPECIES_RIOLU 447
-#define SPECIES_LUCARIO 448
-#define SPECIES_HIPPOPOTAS 449
-#define SPECIES_HIPPOWDON 450
-#define SPECIES_SKORUPI 451
-#define SPECIES_DRAPION 452
-#define SPECIES_CROAGUNK 453
-#define SPECIES_TOXICROAK 454
-#define SPECIES_CARNIVINE 455
-#define SPECIES_FINNEON 456
-#define SPECIES_LUMINEON 457
-#define SPECIES_MANTYKE 458
-#define SPECIES_SNOVER 459
-#define SPECIES_ABOMASNOW 460
-#define SPECIES_WEAVILE 461
-#define SPECIES_MAGNEZONE 462
-#define SPECIES_LICKILICKY 463
-#define SPECIES_RHYPERIOR 464
-#define SPECIES_TANGROWTH 465
-#define SPECIES_ELECTIVIRE 466
-#define SPECIES_MAGMORTAR 467
-#define SPECIES_TOGEKISS 468
-#define SPECIES_YANMEGA 469
-#define SPECIES_LEAFEON 470
-#define SPECIES_GLACEON 471
-#define SPECIES_GLISCOR 472
-#define SPECIES_MAMOSWINE 473
-#define SPECIES_PORYGON_Z 474
-#define SPECIES_GALLADE 475
-#define SPECIES_PROBOPASS 476
-#define SPECIES_DUSKNOIR 477
-#define SPECIES_FROSLASS 478
-#define SPECIES_ROTOM 479
-#define SPECIES_UXIE 480
-#define SPECIES_MESPRIT 481
-#define SPECIES_AZELF 482
-#define SPECIES_DIALGA 483
-#define SPECIES_PALKIA 484
-#define SPECIES_HEATRAN 485
-#define SPECIES_REGIGIGAS 486
-#define SPECIES_GIRATINA SPECIES_GIRATINA_ALTERED
-#define SPECIES_GIRATINA_ALTERED 487
-#define SPECIES_CRESSELIA 488
-#define SPECIES_PHIONE 489
-#define SPECIES_MANAPHY 490
-#define SPECIES_DARKRAI 491
-#define SPECIES_SHAYMIN SPECIES_SHAYMIN_LAND
-#define SPECIES_SHAYMIN_LAND 492
-#define SPECIES_ARCEUS SPECIES_ARCEUS_NORMAL
-#define SPECIES_ARCEUS_NORMAL 493
-#define SPECIES_VICTINI 494
-#define SPECIES_SNIVY 495
-#define SPECIES_SERVINE 496
-#define SPECIES_SERPERIOR 497
-#define SPECIES_TEPIG 498
-#define SPECIES_PIGNITE 499
-#define SPECIES_EMBOAR 500
-#define SPECIES_OSHAWOTT 501
-#define SPECIES_DEWOTT 502
-#define SPECIES_SAMUROTT 503
-#define SPECIES_PATRAT 504
-#define SPECIES_WATCHOG 505
-#define SPECIES_LILLIPUP 506
-#define SPECIES_HERDIER 507
-#define SPECIES_STOUTLAND 508
-#define SPECIES_PURRLOIN 509
-#define SPECIES_LIEPARD 510
-#define SPECIES_PANSAGE 511
-#define SPECIES_SIMISAGE 512
-#define SPECIES_PANSEAR 513
-#define SPECIES_SIMISEAR 514
-#define SPECIES_PANPOUR 515
-#define SPECIES_SIMIPOUR 516
-#define SPECIES_MUNNA 517
-#define SPECIES_MUSHARNA 518
-#define SPECIES_PIDOVE 519
-#define SPECIES_TRANQUILL 520
-#define SPECIES_UNFEZANT 521
-#define SPECIES_BLITZLE 522
-#define SPECIES_ZEBSTRIKA 523
-#define SPECIES_ROGGENROLA 524
-#define SPECIES_BOLDORE 525
-#define SPECIES_GIGALITH 526
-#define SPECIES_WOOBAT 527
-#define SPECIES_SWOOBAT 528
-#define SPECIES_DRILBUR 529
-#define SPECIES_EXCADRILL 530
-#define SPECIES_AUDINO 531
-#define SPECIES_TIMBURR 532
-#define SPECIES_GURDURR 533
-#define SPECIES_CONKELDURR 534
-#define SPECIES_TYMPOLE 535
-#define SPECIES_PALPITOAD 536
-#define SPECIES_SEISMITOAD 537
-#define SPECIES_THROH 538
-#define SPECIES_SAWK 539
-#define SPECIES_SEWADDLE 540
-#define SPECIES_SWADLOON 541
-#define SPECIES_LEAVANNY 542
-#define SPECIES_VENIPEDE 543
-#define SPECIES_WHIRLIPEDE 544
-#define SPECIES_SCOLIPEDE 545
-#define SPECIES_COTTONEE 546
-#define SPECIES_WHIMSICOTT 547
-#define SPECIES_PETILIL 548
-#define SPECIES_LILLIGANT 549
-#define SPECIES_BASCULIN SPECIES_BASCULIN_RED_STRIPED
-#define SPECIES_BASCULIN_RED_STRIPED 550
-#define SPECIES_SANDILE 551
-#define SPECIES_KROKOROK 552
-#define SPECIES_KROOKODILE 553
-#define SPECIES_DARUMAKA 554
-#define SPECIES_DARMANITAN SPECIES_DARMANITAN_STANDARD
-#define SPECIES_DARMANITAN_STANDARD 555
-#define SPECIES_MARACTUS 556
-#define SPECIES_DWEBBLE 557
-#define SPECIES_CRUSTLE 558
-#define SPECIES_SCRAGGY 559
-#define SPECIES_SCRAFTY 560
-#define SPECIES_SIGILYPH 561
-#define SPECIES_YAMASK 562
-#define SPECIES_COFAGRIGUS 563
-#define SPECIES_TIRTOUGA 564
-#define SPECIES_CARRACOSTA 565
-#define SPECIES_ARCHEN 566
-#define SPECIES_ARCHEOPS 567
-#define SPECIES_TRUBBISH 568
-#define SPECIES_GARBODOR 569
-#define SPECIES_ZORUA 570
-#define SPECIES_ZOROARK 571
-#define SPECIES_MINCCINO 572
-#define SPECIES_CINCCINO 573
-#define SPECIES_GOTHITA 574
-#define SPECIES_GOTHORITA 575
-#define SPECIES_GOTHITELLE 576
-#define SPECIES_SOLOSIS 577
-#define SPECIES_DUOSION 578
-#define SPECIES_REUNICLUS 579
-#define SPECIES_DUCKLETT 580
-#define SPECIES_SWANNA 581
-#define SPECIES_VANILLITE 582
-#define SPECIES_VANILLISH 583
-#define SPECIES_VANILLUXE 584
-#define SPECIES_DEERLING SPECIES_DEERLING_SPRING
-#define SPECIES_DEERLING_SPRING 585
-#define SPECIES_SAWSBUCK SPECIES_SAWSBUCK_SPRING
-#define SPECIES_SAWSBUCK_SPRING 586
-#define SPECIES_EMOLGA 587
-#define SPECIES_KARRABLAST 588
-#define SPECIES_ESCAVALIER 589
-#define SPECIES_FOONGUS 590
-#define SPECIES_AMOONGUSS 591
-#define SPECIES_FRILLISH 592
-#define SPECIES_JELLICENT 593
-#define SPECIES_ALOMOMOLA 594
-#define SPECIES_JOLTIK 595
-#define SPECIES_GALVANTULA 596
-#define SPECIES_FERROSEED 597
-#define SPECIES_FERROTHORN 598
-#define SPECIES_KLINK 599
-#define SPECIES_KLANG 600
-#define SPECIES_KLINKLANG 601
-#define SPECIES_TYNAMO 602
-#define SPECIES_EELEKTRIK 603
-#define SPECIES_EELEKTROSS 604
-#define SPECIES_ELGYEM 605
-#define SPECIES_BEHEEYEM 606
-#define SPECIES_LITWICK 607
-#define SPECIES_LAMPENT 608
-#define SPECIES_CHANDELURE 609
-#define SPECIES_AXEW 610
-#define SPECIES_FRAXURE 611
-#define SPECIES_HAXORUS 612
-#define SPECIES_CUBCHOO 613
-#define SPECIES_BEARTIC 614
-#define SPECIES_CRYOGONAL 615
-#define SPECIES_SHELMET 616
-#define SPECIES_ACCELGOR 617
-#define SPECIES_STUNFISK 618
-#define SPECIES_MIENFOO 619
-#define SPECIES_MIENSHAO 620
-#define SPECIES_DRUDDIGON 621
-#define SPECIES_GOLETT 622
-#define SPECIES_GOLURK 623
-#define SPECIES_PAWNIARD 624
-#define SPECIES_BISHARP 625
-#define SPECIES_BOUFFALANT 626
-#define SPECIES_RUFFLET 627
-#define SPECIES_BRAVIARY 628
-#define SPECIES_VULLABY 629
-#define SPECIES_MANDIBUZZ 630
-#define SPECIES_HEATMOR 631
-#define SPECIES_DURANT 632
-#define SPECIES_DEINO 633
-#define SPECIES_ZWEILOUS 634
-#define SPECIES_HYDREIGON 635
-#define SPECIES_LARVESTA 636
-#define SPECIES_VOLCARONA 637
-#define SPECIES_COBALION 638
-#define SPECIES_TERRAKION 639
-#define SPECIES_VIRIZION 640
-#define SPECIES_TORNADUS SPECIES_TORNADUS_INCARNATE
-#define SPECIES_TORNADUS_INCARNATE 641
-#define SPECIES_THUNDURUS SPECIES_THUNDURUS_INCARNATE
-#define SPECIES_THUNDURUS_INCARNATE 642
-#define SPECIES_RESHIRAM 643
-#define SPECIES_ZEKROM 644
-#define SPECIES_LANDORUS SPECIES_LANDORUS_INCARNATE
-#define SPECIES_LANDORUS_INCARNATE 645
-#define SPECIES_KYUREM 646
-#define SPECIES_KELDEO SPECIES_KELDEO_ORDINARY
-#define SPECIES_KELDEO_ORDINARY 647
-#define SPECIES_MELOETTA SPECIES_MELOETTA_ARIA
-#define SPECIES_MELOETTA_ARIA 648
-#define SPECIES_GENESECT 649
-#define SPECIES_CHESPIN 650
-#define SPECIES_QUILLADIN 651
-#define SPECIES_CHESNAUGHT 652
-#define SPECIES_FENNEKIN 653
-#define SPECIES_BRAIXEN 654
-#define SPECIES_DELPHOX 655
-#define SPECIES_FROAKIE 656
-#define SPECIES_FROGADIER 657
-#define SPECIES_GRENINJA 658
-#define SPECIES_BUNNELBY 659
-#define SPECIES_DIGGERSBY 660
-#define SPECIES_FLETCHLING 661
-#define SPECIES_FLETCHINDER 662
-#define SPECIES_TALONFLAME 663
-#define SPECIES_SCATTERBUG SPECIES_SCATTERBUG_ICY_SNOW
-#define SPECIES_SCATTERBUG_ICY_SNOW 664
-#define SPECIES_SPEWPA SPECIES_SPEWPA_ICY_SNOW
-#define SPECIES_SPEWPA_ICY_SNOW 665
-#define SPECIES_VIVILLON SPECIES_VIVILLON_ICY_SNOW
-#define SPECIES_VIVILLON_ICY_SNOW 666
-#define SPECIES_LITLEO 667
-#define SPECIES_PYROAR 668
-#define SPECIES_FLABEBE SPECIES_FLABEBE_RED
-#define SPECIES_FLABEBE_RED 669
-#define SPECIES_FLOETTE SPECIES_FLOETTE_RED
-#define SPECIES_FLOETTE_RED 670
-#define SPECIES_FLORGES SPECIES_FLORGES_RED
-#define SPECIES_FLORGES_RED 671
-#define SPECIES_SKIDDO 672
-#define SPECIES_GOGOAT 673
-#define SPECIES_PANCHAM 674
-#define SPECIES_PANGORO 675
-#define SPECIES_FURFROU SPECIES_FURFROU_NATURAL
-#define SPECIES_FURFROU_NATURAL 676
-#define SPECIES_ESPURR 677
-#define SPECIES_MEOWSTIC SPECIES_MEOWSTIC_M
-#define SPECIES_MEOWSTIC_M 678
-#define SPECIES_HONEDGE 679
-#define SPECIES_DOUBLADE 680
-#define SPECIES_AEGISLASH SPECIES_AEGISLASH_SHIELD
-#define SPECIES_AEGISLASH_SHIELD 681
-#define SPECIES_SPRITZEE 682
-#define SPECIES_AROMATISSE 683
-#define SPECIES_SWIRLIX 684
-#define SPECIES_SLURPUFF 685
-#define SPECIES_INKAY 686
-#define SPECIES_MALAMAR 687
-#define SPECIES_BINACLE 688
-#define SPECIES_BARBARACLE 689
-#define SPECIES_SKRELP 690
-#define SPECIES_DRAGALGE 691
-#define SPECIES_CLAUNCHER 692
-#define SPECIES_CLAWITZER 693
-#define SPECIES_HELIOPTILE 694
-#define SPECIES_HELIOLISK 695
-#define SPECIES_TYRUNT 696
-#define SPECIES_TYRANTRUM 697
-#define SPECIES_AMAURA 698
-#define SPECIES_AURORUS 699
-#define SPECIES_SYLVEON 700
-#define SPECIES_HAWLUCHA 701
-#define SPECIES_DEDENNE 702
-#define SPECIES_CARBINK 703
-#define SPECIES_GOOMY 704
-#define SPECIES_SLIGGOO 705
-#define SPECIES_GOODRA 706
-#define SPECIES_KLEFKI 707
-#define SPECIES_PHANTUMP 708
-#define SPECIES_TREVENANT 709
-#define SPECIES_PUMPKABOO SPECIES_PUMPKABOO_AVERAGE
-#define SPECIES_PUMPKABOO_AVERAGE 710
-#define SPECIES_GOURGEIST SPECIES_GOURGEIST_AVERAGE
-#define SPECIES_GOURGEIST_AVERAGE 711
-#define SPECIES_BERGMITE 712
-#define SPECIES_AVALUGG 713
-#define SPECIES_NOIBAT 714
-#define SPECIES_NOIVERN 715
-#define SPECIES_XERNEAS SPECIES_XERNEAS_NEUTRAL
-#define SPECIES_XERNEAS_NEUTRAL 716
-#define SPECIES_YVELTAL 717
-#define SPECIES_ZYGARDE SPECIES_ZYGARDE_50
-#define SPECIES_ZYGARDE_50 718
-#define SPECIES_DIANCIE 719
-#define SPECIES_HOOPA SPECIES_HOOPA_CONFINED
-#define SPECIES_HOOPA_CONFINED 720
-#define SPECIES_VOLCANION 721
-#define SPECIES_ROWLET 722
-#define SPECIES_DARTRIX 723
-#define SPECIES_DECIDUEYE 724
-#define SPECIES_LITTEN 725
-#define SPECIES_TORRACAT 726
-#define SPECIES_INCINEROAR 727
-#define SPECIES_POPPLIO 728
-#define SPECIES_BRIONNE 729
-#define SPECIES_PRIMARINA 730
-#define SPECIES_PIKIPEK 731
-#define SPECIES_TRUMBEAK 732
-#define SPECIES_TOUCANNON 733
-#define SPECIES_YUNGOOS 734
-#define SPECIES_GUMSHOOS 735
-#define SPECIES_GRUBBIN 736
-#define SPECIES_CHARJABUG 737
-#define SPECIES_VIKAVOLT 738
-#define SPECIES_CRABRAWLER 739
-#define SPECIES_CRABOMINABLE 740
-#define SPECIES_ORICORIO SPECIES_ORICORIO_BAILE
-#define SPECIES_ORICORIO_BAILE 741
-#define SPECIES_CUTIEFLY 742
-#define SPECIES_RIBOMBEE 743
-#define SPECIES_ROCKRUFF 744
-#define SPECIES_LYCANROC SPECIES_LYCANROC_MIDDAY
-#define SPECIES_LYCANROC_MIDDAY 745
-#define SPECIES_WISHIWASHI SPECIES_WISHIWASHI_SOLO
-#define SPECIES_WISHIWASHI_SOLO 746
-#define SPECIES_MAREANIE 747
-#define SPECIES_TOXAPEX 748
-#define SPECIES_MUDBRAY 749
-#define SPECIES_MUDSDALE 750
-#define SPECIES_DEWPIDER 751
-#define SPECIES_ARAQUANID 752
-#define SPECIES_FOMANTIS 753
-#define SPECIES_LURANTIS 754
-#define SPECIES_MORELULL 755
-#define SPECIES_SHIINOTIC 756
-#define SPECIES_SALANDIT 757
-#define SPECIES_SALAZZLE 758
-#define SPECIES_STUFFUL 759
-#define SPECIES_BEWEAR 760
-#define SPECIES_BOUNSWEET 761
-#define SPECIES_STEENEE 762
-#define SPECIES_TSAREENA 763
-#define SPECIES_COMFEY 764
-#define SPECIES_ORANGURU 765
-#define SPECIES_PASSIMIAN 766
-#define SPECIES_WIMPOD 767
-#define SPECIES_GOLISOPOD 768
-#define SPECIES_SANDYGAST 769
-#define SPECIES_PALOSSAND 770
-#define SPECIES_PYUKUMUKU 771
-#define SPECIES_TYPE_NULL 772
-#define SPECIES_SILVALLY SPECIES_SILVALLY_NORMAL
-#define SPECIES_SILVALLY_NORMAL 773
-#define SPECIES_MINIOR SPECIES_MINIOR_METEOR
-#define SPECIES_MINIOR_METEOR SPECIES_MINIOR_METEOR_RED
-#define SPECIES_MINIOR_RED SPECIES_MINIOR_METEOR_RED
-#define SPECIES_MINIOR_METEOR_RED 774
-#define SPECIES_KOMALA 775
-#define SPECIES_TURTONATOR 776
-#define SPECIES_TOGEDEMARU 777
-#define SPECIES_MIMIKYU SPECIES_MIMIKYU_DISGUISED
-#define SPECIES_MIMIKYU_DISGUISED 778
-#define SPECIES_BRUXISH 779
-#define SPECIES_DRAMPA 780
-#define SPECIES_DHELMISE 781
-#define SPECIES_JANGMO_O 782
-#define SPECIES_HAKAMO_O 783
-#define SPECIES_KOMMO_O 784
-#define SPECIES_TAPU_KOKO 785
-#define SPECIES_TAPU_LELE 786
-#define SPECIES_TAPU_BULU 787
-#define SPECIES_TAPU_FINI 788
-#define SPECIES_COSMOG 789
-#define SPECIES_COSMOEM 790
-#define SPECIES_SOLGALEO 791
-#define SPECIES_LUNALA 792
-#define SPECIES_NIHILEGO 793
-#define SPECIES_BUZZWOLE 794
-#define SPECIES_PHEROMOSA 795
-#define SPECIES_XURKITREE 796
-#define SPECIES_CELESTEELA 797
-#define SPECIES_KARTANA 798
-#define SPECIES_GUZZLORD 799
-#define SPECIES_NECROZMA 800
-#define SPECIES_MAGEARNA 801
-#define SPECIES_MARSHADOW 802
-#define SPECIES_POIPOLE 803
-#define SPECIES_NAGANADEL 804
-#define SPECIES_STAKATAKA 805
-#define SPECIES_BLACEPHALON 806
-#define SPECIES_ZERAORA 807
-#define SPECIES_MELTAN 808
-#define SPECIES_MELMETAL 809
-#define SPECIES_GROOKEY 810
-#define SPECIES_THWACKEY 811
-#define SPECIES_RILLABOOM 812
-#define SPECIES_SCORBUNNY 813
-#define SPECIES_RABOOT 814
-#define SPECIES_CINDERACE 815
-#define SPECIES_SOBBLE 816
-#define SPECIES_DRIZZILE 817
-#define SPECIES_INTELEON 818
-#define SPECIES_SKWOVET 819
-#define SPECIES_GREEDENT 820
-#define SPECIES_ROOKIDEE 821
-#define SPECIES_CORVISQUIRE 822
-#define SPECIES_CORVIKNIGHT 823
-#define SPECIES_BLIPBUG 824
-#define SPECIES_DOTTLER 825
-#define SPECIES_ORBEETLE 826
-#define SPECIES_NICKIT 827
-#define SPECIES_THIEVUL 828
-#define SPECIES_GOSSIFLEUR 829
-#define SPECIES_ELDEGOSS 830
-#define SPECIES_WOOLOO 831
-#define SPECIES_DUBWOOL 832
-#define SPECIES_CHEWTLE 833
-#define SPECIES_DREDNAW 834
-#define SPECIES_YAMPER 835
-#define SPECIES_BOLTUND 836
-#define SPECIES_ROLYCOLY 837
-#define SPECIES_CARKOL 838
-#define SPECIES_COALOSSAL 839
-#define SPECIES_APPLIN 840
-#define SPECIES_FLAPPLE 841
-#define SPECIES_APPLETUN 842
-#define SPECIES_SILICOBRA 843
-#define SPECIES_SANDACONDA 844
-#define SPECIES_CRAMORANT 845
-#define SPECIES_ARROKUDA 846
-#define SPECIES_BARRASKEWDA 847
-#define SPECIES_TOXEL 848
-#define SPECIES_TOXTRICITY SPECIES_TOXTRICITY_AMPED
-#define SPECIES_TOXTRICITY_AMPED 849
-#define SPECIES_SIZZLIPEDE 850
-#define SPECIES_CENTISKORCH 851
-#define SPECIES_CLOBBOPUS 852
-#define SPECIES_GRAPPLOCT 853
-#define SPECIES_SINISTEA SPECIES_SINISTEA_PHONY
-#define SPECIES_SINISTEA_PHONY 854
-#define SPECIES_POLTEAGEIST SPECIES_POLTEAGEIST_PHONY
-#define SPECIES_POLTEAGEIST_PHONY 855
-#define SPECIES_HATENNA 856
-#define SPECIES_HATTREM 857
-#define SPECIES_HATTERENE 858
-#define SPECIES_IMPIDIMP 859
-#define SPECIES_MORGREM 860
-#define SPECIES_GRIMMSNARL 861
-#define SPECIES_OBSTAGOON 862
-#define SPECIES_PERRSERKER 863
-#define SPECIES_CURSOLA 864
-#define SPECIES_SIRFETCHD 865
-#define SPECIES_MR_RIME 866
-#define SPECIES_RUNERIGUS 867
-#define SPECIES_MILCERY 868
-#define SPECIES_ALCREMIE SPECIES_ALCREMIE_STRAWBERRY
-#define SPECIES_ALCREMIE_STRAWBERRY SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM
-#define SPECIES_ALCREMIE_VANILLA_CREAM SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM
-#define SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM 869
-#define SPECIES_FALINKS 870
-#define SPECIES_PINCURCHIN 871
-#define SPECIES_SNOM 872
-#define SPECIES_FROSMOTH 873
-#define SPECIES_STONJOURNER 874
-#define SPECIES_EISCUE SPECIES_EISCUE_ICE
-#define SPECIES_EISCUE_ICE 875
-#define SPECIES_INDEEDEE SPECIES_INDEEDEE_M
-#define SPECIES_INDEEDEE_M 876
-#define SPECIES_MORPEKO SPECIES_MORPEKO_FULL_BELLY
-#define SPECIES_MORPEKO_FULL_BELLY 877
-#define SPECIES_CUFANT 878
-#define SPECIES_COPPERAJAH 879
-#define SPECIES_DRACOZOLT 880
-#define SPECIES_ARCTOZOLT 881
-#define SPECIES_DRACOVISH 882
-#define SPECIES_ARCTOVISH 883
-#define SPECIES_DURALUDON 884
-#define SPECIES_DREEPY 885
-#define SPECIES_DRAKLOAK 886
-#define SPECIES_DRAGAPULT 887
-#define SPECIES_ZACIAN SPECIES_ZACIAN_HERO
-#define SPECIES_ZACIAN_HERO 888
-#define SPECIES_ZAMAZENTA SPECIES_ZAMAZENTA_HERO
-#define SPECIES_ZAMAZENTA_HERO 889
-#define SPECIES_ETERNATUS 890
-#define SPECIES_KUBFU 891
-#define SPECIES_URSHIFU SPECIES_URSHIFU_SINGLE_STRIKE
-#define SPECIES_URSHIFU_SINGLE_STRIKE 892
-#define SPECIES_ZARUDE 893
-#define SPECIES_REGIELEKI 894
-#define SPECIES_REGIDRAGO 895
-#define SPECIES_GLASTRIER 896
-#define SPECIES_SPECTRIER 897
-#define SPECIES_CALYREX 898
-#define SPECIES_WYRDEER 899
-#define SPECIES_KLEAVOR 900
-#define SPECIES_URSALUNA 901
-#define SPECIES_BASCULEGION SPECIES_BASCULEGION_M
-#define SPECIES_BASCULEGION_M 902
-#define SPECIES_SNEASLER 903
-#define SPECIES_OVERQWIL 904
-#define SPECIES_ENAMORUS SPECIES_ENAMORUS_INCARNATE
-#define SPECIES_ENAMORUS_INCARNATE 905
-#define SPECIES_VENUSAUR_MEGA 906
-#define SPECIES_CHARIZARD_MEGA_X 907
-#define SPECIES_CHARIZARD_MEGA_Y 908
-#define SPECIES_BLASTOISE_MEGA 909
-#define SPECIES_BEEDRILL_MEGA 910
-#define SPECIES_PIDGEOT_MEGA 911
-#define SPECIES_ALAKAZAM_MEGA 912
-#define SPECIES_SLOWBRO_MEGA 913
-#define SPECIES_GENGAR_MEGA 914
-#define SPECIES_KANGASKHAN_MEGA 915
-#define SPECIES_PINSIR_MEGA 916
-#define SPECIES_GYARADOS_MEGA 917
-#define SPECIES_AERODACTYL_MEGA 918
-#define SPECIES_MEWTWO_MEGA_X 919
-#define SPECIES_MEWTWO_MEGA_Y 920
-#define SPECIES_AMPHAROS_MEGA 921
-#define SPECIES_STEELIX_MEGA 922
-#define SPECIES_SCIZOR_MEGA 923
-#define SPECIES_HERACROSS_MEGA 924
-#define SPECIES_HOUNDOOM_MEGA 925
-#define SPECIES_TYRANITAR_MEGA 926
-#define SPECIES_SCEPTILE_MEGA 927
-#define SPECIES_BLAZIKEN_MEGA 928
-#define SPECIES_SWAMPERT_MEGA 929
-#define SPECIES_GARDEVOIR_MEGA 930
-#define SPECIES_SABLEYE_MEGA 931
-#define SPECIES_MAWILE_MEGA 932
-#define SPECIES_AGGRON_MEGA 933
-#define SPECIES_MEDICHAM_MEGA 934
-#define SPECIES_MANECTRIC_MEGA 935
-#define SPECIES_SHARPEDO_MEGA 936
-#define SPECIES_CAMERUPT_MEGA 937
-#define SPECIES_ALTARIA_MEGA 938
-#define SPECIES_BANETTE_MEGA 939
-#define SPECIES_ABSOL_MEGA 940
-#define SPECIES_GLALIE_MEGA 941
-#define SPECIES_SALAMENCE_MEGA 942
-#define SPECIES_METAGROSS_MEGA 943
-#define SPECIES_LATIAS_MEGA 944
-#define SPECIES_LATIOS_MEGA 945
-#define SPECIES_LOPUNNY_MEGA 946
-#define SPECIES_GARCHOMP_MEGA 947
-#define SPECIES_LUCARIO_MEGA 948
-#define SPECIES_ABOMASNOW_MEGA 949
-#define SPECIES_GALLADE_MEGA 950
-#define SPECIES_AUDINO_MEGA 951
-#define SPECIES_DIANCIE_MEGA 952
-#define SPECIES_RAYQUAZA_MEGA 953
-#define SPECIES_KYOGRE_PRIMAL 954
-#define SPECIES_GROUDON_PRIMAL 955
-#define SPECIES_RATTATA_ALOLA 956
-#define SPECIES_RATICATE_ALOLA 957
-#define SPECIES_RAICHU_ALOLA 958
-#define SPECIES_SANDSHREW_ALOLA 959
-#define SPECIES_SANDSLASH_ALOLA 960
-#define SPECIES_VULPIX_ALOLA 961
-#define SPECIES_NINETALES_ALOLA 962
-#define SPECIES_DIGLETT_ALOLA 963
-#define SPECIES_DUGTRIO_ALOLA 964
-#define SPECIES_MEOWTH_ALOLA 965
-#define SPECIES_PERSIAN_ALOLA 966
-#define SPECIES_GEODUDE_ALOLA 967
-#define SPECIES_GRAVELER_ALOLA 968
-#define SPECIES_GOLEM_ALOLA 969
-#define SPECIES_GRIMER_ALOLA 970
-#define SPECIES_MUK_ALOLA 971
-#define SPECIES_EXEGGUTOR_ALOLA 972
-#define SPECIES_MAROWAK_ALOLA 973
-#define SPECIES_MEOWTH_GALAR 974
-#define SPECIES_PONYTA_GALAR 975
-#define SPECIES_RAPIDASH_GALAR 976
-#define SPECIES_SLOWPOKE_GALAR 977
-#define SPECIES_SLOWBRO_GALAR 978
-#define SPECIES_FARFETCHD_GALAR 979
-#define SPECIES_WEEZING_GALAR 980
-#define SPECIES_MR_MIME_GALAR 981
-#define SPECIES_ARTICUNO_GALAR 982
-#define SPECIES_ZAPDOS_GALAR 983
-#define SPECIES_MOLTRES_GALAR 984
-#define SPECIES_SLOWKING_GALAR 985
-#define SPECIES_CORSOLA_GALAR 986
-#define SPECIES_ZIGZAGOON_GALAR 987
-#define SPECIES_LINOONE_GALAR 988
-#define SPECIES_DARUMAKA_GALAR 989
-#define SPECIES_DARMANITAN_GALAR_STANDARD 990
-#define SPECIES_DARMANITAN_GALAR SPECIES_DARMANITAN_GALAR_STANDARD
-#define SPECIES_YAMASK_GALAR 991
-#define SPECIES_STUNFISK_GALAR 992
+enum __attribute__((packed)) Species
+{
+ SPECIES_NONE = 0,
+ SPECIES_BULBASAUR = 1,
+ SPECIES_IVYSAUR = 2,
+ SPECIES_VENUSAUR = 3,
+ SPECIES_CHARMANDER = 4,
+ SPECIES_CHARMELEON = 5,
+ SPECIES_CHARIZARD = 6,
+ SPECIES_SQUIRTLE = 7,
+ SPECIES_WARTORTLE = 8,
+ SPECIES_BLASTOISE = 9,
+ SPECIES_CATERPIE = 10,
+ SPECIES_METAPOD = 11,
+ SPECIES_BUTTERFREE = 12,
+ SPECIES_WEEDLE = 13,
+ SPECIES_KAKUNA = 14,
+ SPECIES_BEEDRILL = 15,
+ SPECIES_PIDGEY = 16,
+ SPECIES_PIDGEOTTO = 17,
+ SPECIES_PIDGEOT = 18,
+ SPECIES_RATTATA = 19,
+ SPECIES_RATICATE = 20,
+ SPECIES_SPEAROW = 21,
+ SPECIES_FEAROW = 22,
+ SPECIES_EKANS = 23,
+ SPECIES_ARBOK = 24,
+ SPECIES_PIKACHU = 25,
+ SPECIES_RAICHU = 26,
+ SPECIES_SANDSHREW = 27,
+ SPECIES_SANDSLASH = 28,
+ SPECIES_NIDORAN_F = 29,
+ SPECIES_NIDORINA = 30,
+ SPECIES_NIDOQUEEN = 31,
+ SPECIES_NIDORAN_M = 32,
+ SPECIES_NIDORINO = 33,
+ SPECIES_NIDOKING = 34,
+ SPECIES_CLEFAIRY = 35,
+ SPECIES_CLEFABLE = 36,
+ SPECIES_VULPIX = 37,
+ SPECIES_NINETALES = 38,
+ SPECIES_JIGGLYPUFF = 39,
+ SPECIES_WIGGLYTUFF = 40,
+ SPECIES_ZUBAT = 41,
+ SPECIES_GOLBAT = 42,
+ SPECIES_ODDISH = 43,
+ SPECIES_GLOOM = 44,
+ SPECIES_VILEPLUME = 45,
+ SPECIES_PARAS = 46,
+ SPECIES_PARASECT = 47,
+ SPECIES_VENONAT = 48,
+ SPECIES_VENOMOTH = 49,
+ SPECIES_DIGLETT = 50,
+ SPECIES_DUGTRIO = 51,
+ SPECIES_MEOWTH = 52,
+ SPECIES_PERSIAN = 53,
+ SPECIES_PSYDUCK = 54,
+ SPECIES_GOLDUCK = 55,
+ SPECIES_MANKEY = 56,
+ SPECIES_PRIMEAPE = 57,
+ SPECIES_GROWLITHE = 58,
+ SPECIES_ARCANINE = 59,
+ SPECIES_POLIWAG = 60,
+ SPECIES_POLIWHIRL = 61,
+ SPECIES_POLIWRATH = 62,
+ SPECIES_ABRA = 63,
+ SPECIES_KADABRA = 64,
+ SPECIES_ALAKAZAM = 65,
+ SPECIES_MACHOP = 66,
+ SPECIES_MACHOKE = 67,
+ SPECIES_MACHAMP = 68,
+ SPECIES_BELLSPROUT = 69,
+ SPECIES_WEEPINBELL = 70,
+ SPECIES_VICTREEBEL = 71,
+ SPECIES_TENTACOOL = 72,
+ SPECIES_TENTACRUEL = 73,
+ SPECIES_GEODUDE = 74,
+ SPECIES_GRAVELER = 75,
+ SPECIES_GOLEM = 76,
+ SPECIES_PONYTA = 77,
+ SPECIES_RAPIDASH = 78,
+ SPECIES_SLOWPOKE = 79,
+ SPECIES_SLOWBRO = 80,
+ SPECIES_MAGNEMITE = 81,
+ SPECIES_MAGNETON = 82,
+ SPECIES_FARFETCHD = 83,
+ SPECIES_DODUO = 84,
+ SPECIES_DODRIO = 85,
+ SPECIES_SEEL = 86,
+ SPECIES_DEWGONG = 87,
+ SPECIES_GRIMER = 88,
+ SPECIES_MUK = 89,
+ SPECIES_SHELLDER = 90,
+ SPECIES_CLOYSTER = 91,
+ SPECIES_GASTLY = 92,
+ SPECIES_HAUNTER = 93,
+ SPECIES_GENGAR = 94,
+ SPECIES_ONIX = 95,
+ SPECIES_DROWZEE = 96,
+ SPECIES_HYPNO = 97,
+ SPECIES_KRABBY = 98,
+ SPECIES_KINGLER = 99,
+ SPECIES_VOLTORB = 100,
+ SPECIES_ELECTRODE = 101,
+ SPECIES_EXEGGCUTE = 102,
+ SPECIES_EXEGGUTOR = 103,
+ SPECIES_CUBONE = 104,
+ SPECIES_MAROWAK = 105,
+ SPECIES_HITMONLEE = 106,
+ SPECIES_HITMONCHAN = 107,
+ SPECIES_LICKITUNG = 108,
+ SPECIES_KOFFING = 109,
+ SPECIES_WEEZING = 110,
+ SPECIES_RHYHORN = 111,
+ SPECIES_RHYDON = 112,
+ SPECIES_CHANSEY = 113,
+ SPECIES_TANGELA = 114,
+ SPECIES_KANGASKHAN = 115,
+ SPECIES_HORSEA = 116,
+ SPECIES_SEADRA = 117,
+ SPECIES_GOLDEEN = 118,
+ SPECIES_SEAKING = 119,
+ SPECIES_STARYU = 120,
+ SPECIES_STARMIE = 121,
+ SPECIES_MR_MIME = 122,
+ SPECIES_SCYTHER = 123,
+ SPECIES_JYNX = 124,
+ SPECIES_ELECTABUZZ = 125,
+ SPECIES_MAGMAR = 126,
+ SPECIES_PINSIR = 127,
+ SPECIES_TAUROS = 128,
+ SPECIES_MAGIKARP = 129,
+ SPECIES_GYARADOS = 130,
+ SPECIES_LAPRAS = 131,
+ SPECIES_DITTO = 132,
+ SPECIES_EEVEE = 133,
+ SPECIES_VAPOREON = 134,
+ SPECIES_JOLTEON = 135,
+ SPECIES_FLAREON = 136,
+ SPECIES_PORYGON = 137,
+ SPECIES_OMANYTE = 138,
+ SPECIES_OMASTAR = 139,
+ SPECIES_KABUTO = 140,
+ SPECIES_KABUTOPS = 141,
+ SPECIES_AERODACTYL = 142,
+ SPECIES_SNORLAX = 143,
+ SPECIES_ARTICUNO = 144,
+ SPECIES_ZAPDOS = 145,
+ SPECIES_MOLTRES = 146,
+ SPECIES_DRATINI = 147,
+ SPECIES_DRAGONAIR = 148,
+ SPECIES_DRAGONITE = 149,
+ SPECIES_MEWTWO = 150,
+ SPECIES_MEW = 151,
+ SPECIES_CHIKORITA = 152,
+ SPECIES_BAYLEEF = 153,
+ SPECIES_MEGANIUM = 154,
+ SPECIES_CYNDAQUIL = 155,
+ SPECIES_QUILAVA = 156,
+ SPECIES_TYPHLOSION = 157,
+ SPECIES_TOTODILE = 158,
+ SPECIES_CROCONAW = 159,
+ SPECIES_FERALIGATR = 160,
+ SPECIES_SENTRET = 161,
+ SPECIES_FURRET = 162,
+ SPECIES_HOOTHOOT = 163,
+ SPECIES_NOCTOWL = 164,
+ SPECIES_LEDYBA = 165,
+ SPECIES_LEDIAN = 166,
+ SPECIES_SPINARAK = 167,
+ SPECIES_ARIADOS = 168,
+ SPECIES_CROBAT = 169,
+ SPECIES_CHINCHOU = 170,
+ SPECIES_LANTURN = 171,
+ SPECIES_PICHU = 172,
+ SPECIES_CLEFFA = 173,
+ SPECIES_IGGLYBUFF = 174,
+ SPECIES_TOGEPI = 175,
+ SPECIES_TOGETIC = 176,
+ SPECIES_NATU = 177,
+ SPECIES_XATU = 178,
+ SPECIES_MAREEP = 179,
+ SPECIES_FLAAFFY = 180,
+ SPECIES_AMPHAROS = 181,
+ SPECIES_BELLOSSOM = 182,
+ SPECIES_MARILL = 183,
+ SPECIES_AZUMARILL = 184,
+ SPECIES_SUDOWOODO = 185,
+ SPECIES_POLITOED = 186,
+ SPECIES_HOPPIP = 187,
+ SPECIES_SKIPLOOM = 188,
+ SPECIES_JUMPLUFF = 189,
+ SPECIES_AIPOM = 190,
+ SPECIES_SUNKERN = 191,
+ SPECIES_SUNFLORA = 192,
+ SPECIES_YANMA = 193,
+ SPECIES_WOOPER = 194,
+ SPECIES_QUAGSIRE = 195,
+ SPECIES_ESPEON = 196,
+ SPECIES_UMBREON = 197,
+ SPECIES_MURKROW = 198,
+ SPECIES_SLOWKING = 199,
+ SPECIES_MISDREAVUS = 200,
+ SPECIES_UNOWN = 201,
+ SPECIES_WOBBUFFET = 202,
+ SPECIES_GIRAFARIG = 203,
+ SPECIES_PINECO = 204,
+ SPECIES_FORRETRESS = 205,
+ SPECIES_DUNSPARCE = 206,
+ SPECIES_GLIGAR = 207,
+ SPECIES_STEELIX = 208,
+ SPECIES_SNUBBULL = 209,
+ SPECIES_GRANBULL = 210,
+ SPECIES_QWILFISH = 211,
+ SPECIES_SCIZOR = 212,
+ SPECIES_SHUCKLE = 213,
+ SPECIES_HERACROSS = 214,
+ SPECIES_SNEASEL = 215,
+ SPECIES_TEDDIURSA = 216,
+ SPECIES_URSARING = 217,
+ SPECIES_SLUGMA = 218,
+ SPECIES_MAGCARGO = 219,
+ SPECIES_SWINUB = 220,
+ SPECIES_PILOSWINE = 221,
+ SPECIES_CORSOLA = 222,
+ SPECIES_REMORAID = 223,
+ SPECIES_OCTILLERY = 224,
+ SPECIES_DELIBIRD = 225,
+ SPECIES_MANTINE = 226,
+ SPECIES_SKARMORY = 227,
+ SPECIES_HOUNDOUR = 228,
+ SPECIES_HOUNDOOM = 229,
+ SPECIES_KINGDRA = 230,
+ SPECIES_PHANPY = 231,
+ SPECIES_DONPHAN = 232,
+ SPECIES_PORYGON2 = 233,
+ SPECIES_STANTLER = 234,
+ SPECIES_SMEARGLE = 235,
+ SPECIES_TYROGUE = 236,
+ SPECIES_HITMONTOP = 237,
+ SPECIES_SMOOCHUM = 238,
+ SPECIES_ELEKID = 239,
+ SPECIES_MAGBY = 240,
+ SPECIES_MILTANK = 241,
+ SPECIES_BLISSEY = 242,
+ SPECIES_RAIKOU = 243,
+ SPECIES_ENTEI = 244,
+ SPECIES_SUICUNE = 245,
+ SPECIES_LARVITAR = 246,
+ SPECIES_PUPITAR = 247,
+ SPECIES_TYRANITAR = 248,
+ SPECIES_LUGIA = 249,
+ SPECIES_HO_OH = 250,
+ SPECIES_CELEBI = 251,
+ SPECIES_TREECKO = 252,
+ SPECIES_GROVYLE = 253,
+ SPECIES_SCEPTILE = 254,
+ SPECIES_TORCHIC = 255,
+ SPECIES_COMBUSKEN = 256,
+ SPECIES_BLAZIKEN = 257,
+ SPECIES_MUDKIP = 258,
+ SPECIES_MARSHTOMP = 259,
+ SPECIES_SWAMPERT = 260,
+ SPECIES_POOCHYENA = 261,
+ SPECIES_MIGHTYENA = 262,
+ SPECIES_ZIGZAGOON = 263,
+ SPECIES_LINOONE = 264,
+ SPECIES_WURMPLE = 265,
+ SPECIES_SILCOON = 266,
+ SPECIES_BEAUTIFLY = 267,
+ SPECIES_CASCOON = 268,
+ SPECIES_DUSTOX = 269,
+ SPECIES_LOTAD = 270,
+ SPECIES_LOMBRE = 271,
+ SPECIES_LUDICOLO = 272,
+ SPECIES_SEEDOT = 273,
+ SPECIES_NUZLEAF = 274,
+ SPECIES_SHIFTRY = 275,
+ SPECIES_TAILLOW = 276,
+ SPECIES_SWELLOW = 277,
+ SPECIES_WINGULL = 278,
+ SPECIES_PELIPPER = 279,
+ SPECIES_RALTS = 280,
+ SPECIES_KIRLIA = 281,
+ SPECIES_GARDEVOIR = 282,
+ SPECIES_SURSKIT = 283,
+ SPECIES_MASQUERAIN = 284,
+ SPECIES_SHROOMISH = 285,
+ SPECIES_BRELOOM = 286,
+ SPECIES_SLAKOTH = 287,
+ SPECIES_VIGOROTH = 288,
+ SPECIES_SLAKING = 289,
+ SPECIES_NINCADA = 290,
+ SPECIES_NINJASK = 291,
+ SPECIES_SHEDINJA = 292,
+ SPECIES_WHISMUR = 293,
+ SPECIES_LOUDRED = 294,
+ SPECIES_EXPLOUD = 295,
+ SPECIES_MAKUHITA = 296,
+ SPECIES_HARIYAMA = 297,
+ SPECIES_AZURILL = 298,
+ SPECIES_NOSEPASS = 299,
+ SPECIES_SKITTY = 300,
+ SPECIES_DELCATTY = 301,
+ SPECIES_SABLEYE = 302,
+ SPECIES_MAWILE = 303,
+ SPECIES_ARON = 304,
+ SPECIES_LAIRON = 305,
+ SPECIES_AGGRON = 306,
+ SPECIES_MEDITITE = 307,
+ SPECIES_MEDICHAM = 308,
+ SPECIES_ELECTRIKE = 309,
+ SPECIES_MANECTRIC = 310,
+ SPECIES_PLUSLE = 311,
+ SPECIES_MINUN = 312,
+ SPECIES_VOLBEAT = 313,
+ SPECIES_ILLUMISE = 314,
+ SPECIES_ROSELIA = 315,
+ SPECIES_GULPIN = 316,
+ SPECIES_SWALOT = 317,
+ SPECIES_CARVANHA = 318,
+ SPECIES_SHARPEDO = 319,
+ SPECIES_WAILMER = 320,
+ SPECIES_WAILORD = 321,
+ SPECIES_NUMEL = 322,
+ SPECIES_CAMERUPT = 323,
+ SPECIES_TORKOAL = 324,
+ SPECIES_SPOINK = 325,
+ SPECIES_GRUMPIG = 326,
+ SPECIES_SPINDA = 327,
+ SPECIES_TRAPINCH = 328,
+ SPECIES_VIBRAVA = 329,
+ SPECIES_FLYGON = 330,
+ SPECIES_CACNEA = 331,
+ SPECIES_CACTURNE = 332,
+ SPECIES_SWABLU = 333,
+ SPECIES_ALTARIA = 334,
+ SPECIES_ZANGOOSE = 335,
+ SPECIES_SEVIPER = 336,
+ SPECIES_LUNATONE = 337,
+ SPECIES_SOLROCK = 338,
+ SPECIES_BARBOACH = 339,
+ SPECIES_WHISCASH = 340,
+ SPECIES_CORPHISH = 341,
+ SPECIES_CRAWDAUNT = 342,
+ SPECIES_BALTOY = 343,
+ SPECIES_CLAYDOL = 344,
+ SPECIES_LILEEP = 345,
+ SPECIES_CRADILY = 346,
+ SPECIES_ANORITH = 347,
+ SPECIES_ARMALDO = 348,
+ SPECIES_FEEBAS = 349,
+ SPECIES_MILOTIC = 350,
+ SPECIES_CASTFORM_NORMAL = 351,
+ SPECIES_CASTFORM = SPECIES_CASTFORM_NORMAL,
+ SPECIES_KECLEON = 352,
+ SPECIES_SHUPPET = 353,
+ SPECIES_BANETTE = 354,
+ SPECIES_DUSKULL = 355,
+ SPECIES_DUSCLOPS = 356,
+ SPECIES_TROPIUS = 357,
+ SPECIES_CHIMECHO = 358,
+ SPECIES_ABSOL = 359,
+ SPECIES_WYNAUT = 360,
+ SPECIES_SNORUNT = 361,
+ SPECIES_GLALIE = 362,
+ SPECIES_SPHEAL = 363,
+ SPECIES_SEALEO = 364,
+ SPECIES_WALREIN = 365,
+ SPECIES_CLAMPERL = 366,
+ SPECIES_HUNTAIL = 367,
+ SPECIES_GOREBYSS = 368,
+ SPECIES_RELICANTH = 369,
+ SPECIES_LUVDISC = 370,
+ SPECIES_BAGON = 371,
+ SPECIES_SHELGON = 372,
+ SPECIES_SALAMENCE = 373,
+ SPECIES_BELDUM = 374,
+ SPECIES_METANG = 375,
+ SPECIES_METAGROSS = 376,
+ SPECIES_REGIROCK = 377,
+ SPECIES_REGICE = 378,
+ SPECIES_REGISTEEL = 379,
+ SPECIES_LATIAS = 380,
+ SPECIES_LATIOS = 381,
+ SPECIES_KYOGRE = 382,
+ SPECIES_GROUDON = 383,
+ SPECIES_RAYQUAZA = 384,
+ SPECIES_JIRACHI = 385,
+ SPECIES_DEOXYS_NORMAL = 386,
+ SPECIES_DEOXYS = SPECIES_DEOXYS_NORMAL,
+ SPECIES_TURTWIG = 387,
+ SPECIES_GROTLE = 388,
+ SPECIES_TORTERRA = 389,
+ SPECIES_CHIMCHAR = 390,
+ SPECIES_MONFERNO = 391,
+ SPECIES_INFERNAPE = 392,
+ SPECIES_PIPLUP = 393,
+ SPECIES_PRINPLUP = 394,
+ SPECIES_EMPOLEON = 395,
+ SPECIES_STARLY = 396,
+ SPECIES_STARAVIA = 397,
+ SPECIES_STARAPTOR = 398,
+ SPECIES_BIDOOF = 399,
+ SPECIES_BIBAREL = 400,
+ SPECIES_KRICKETOT = 401,
+ SPECIES_KRICKETUNE = 402,
+ SPECIES_SHINX = 403,
+ SPECIES_LUXIO = 404,
+ SPECIES_LUXRAY = 405,
+ SPECIES_BUDEW = 406,
+ SPECIES_ROSERADE = 407,
+ SPECIES_CRANIDOS = 408,
+ SPECIES_RAMPARDOS = 409,
+ SPECIES_SHIELDON = 410,
+ SPECIES_BASTIODON = 411,
+ SPECIES_BURMY_PLANT = 412,
+ SPECIES_BURMY = SPECIES_BURMY_PLANT,
+ SPECIES_WORMADAM_PLANT = 413,
+ SPECIES_WORMADAM = SPECIES_WORMADAM_PLANT,
+ SPECIES_MOTHIM_PLANT = 414,
+ SPECIES_MOTHIM = SPECIES_MOTHIM_PLANT,
+ SPECIES_COMBEE = 415,
+ SPECIES_VESPIQUEN = 416,
+ SPECIES_PACHIRISU = 417,
+ SPECIES_BUIZEL = 418,
+ SPECIES_FLOATZEL = 419,
+ SPECIES_CHERUBI = 420,
+ SPECIES_CHERRIM_OVERCAST = 421,
+ SPECIES_CHERRIM = SPECIES_CHERRIM_OVERCAST,
+ SPECIES_SHELLOS_WEST = 422,
+ SPECIES_SHELLOS = SPECIES_SHELLOS_WEST,
+ SPECIES_GASTRODON_WEST = 423,
+ SPECIES_GASTRODON = SPECIES_GASTRODON_WEST,
+ SPECIES_AMBIPOM = 424,
+ SPECIES_DRIFLOON = 425,
+ SPECIES_DRIFBLIM = 426,
+ SPECIES_BUNEARY = 427,
+ SPECIES_LOPUNNY = 428,
+ SPECIES_MISMAGIUS = 429,
+ SPECIES_HONCHKROW = 430,
+ SPECIES_GLAMEOW = 431,
+ SPECIES_PURUGLY = 432,
+ SPECIES_CHINGLING = 433,
+ SPECIES_STUNKY = 434,
+ SPECIES_SKUNTANK = 435,
+ SPECIES_BRONZOR = 436,
+ SPECIES_BRONZONG = 437,
+ SPECIES_BONSLY = 438,
+ SPECIES_MIME_JR = 439,
+ SPECIES_HAPPINY = 440,
+ SPECIES_CHATOT = 441,
+ SPECIES_SPIRITOMB = 442,
+ SPECIES_GIBLE = 443,
+ SPECIES_GABITE = 444,
+ SPECIES_GARCHOMP = 445,
+ SPECIES_MUNCHLAX = 446,
+ SPECIES_RIOLU = 447,
+ SPECIES_LUCARIO = 448,
+ SPECIES_HIPPOPOTAS = 449,
+ SPECIES_HIPPOWDON = 450,
+ SPECIES_SKORUPI = 451,
+ SPECIES_DRAPION = 452,
+ SPECIES_CROAGUNK = 453,
+ SPECIES_TOXICROAK = 454,
+ SPECIES_CARNIVINE = 455,
+ SPECIES_FINNEON = 456,
+ SPECIES_LUMINEON = 457,
+ SPECIES_MANTYKE = 458,
+ SPECIES_SNOVER = 459,
+ SPECIES_ABOMASNOW = 460,
+ SPECIES_WEAVILE = 461,
+ SPECIES_MAGNEZONE = 462,
+ SPECIES_LICKILICKY = 463,
+ SPECIES_RHYPERIOR = 464,
+ SPECIES_TANGROWTH = 465,
+ SPECIES_ELECTIVIRE = 466,
+ SPECIES_MAGMORTAR = 467,
+ SPECIES_TOGEKISS = 468,
+ SPECIES_YANMEGA = 469,
+ SPECIES_LEAFEON = 470,
+ SPECIES_GLACEON = 471,
+ SPECIES_GLISCOR = 472,
+ SPECIES_MAMOSWINE = 473,
+ SPECIES_PORYGON_Z = 474,
+ SPECIES_GALLADE = 475,
+ SPECIES_PROBOPASS = 476,
+ SPECIES_DUSKNOIR = 477,
+ SPECIES_FROSLASS = 478,
+ SPECIES_ROTOM = 479,
+ SPECIES_UXIE = 480,
+ SPECIES_MESPRIT = 481,
+ SPECIES_AZELF = 482,
+ SPECIES_DIALGA = 483,
+ SPECIES_PALKIA = 484,
+ SPECIES_HEATRAN = 485,
+ SPECIES_REGIGIGAS = 486,
+ SPECIES_GIRATINA_ALTERED = 487,
+ SPECIES_GIRATINA = SPECIES_GIRATINA_ALTERED,
+ SPECIES_CRESSELIA = 488,
+ SPECIES_PHIONE = 489,
+ SPECIES_MANAPHY = 490,
+ SPECIES_DARKRAI = 491,
+ SPECIES_SHAYMIN_LAND = 492,
+ SPECIES_SHAYMIN = SPECIES_SHAYMIN_LAND,
+ SPECIES_ARCEUS_NORMAL = 493,
+ SPECIES_ARCEUS = SPECIES_ARCEUS_NORMAL,
+ SPECIES_VICTINI = 494,
+ SPECIES_SNIVY = 495,
+ SPECIES_SERVINE = 496,
+ SPECIES_SERPERIOR = 497,
+ SPECIES_TEPIG = 498,
+ SPECIES_PIGNITE = 499,
+ SPECIES_EMBOAR = 500,
+ SPECIES_OSHAWOTT = 501,
+ SPECIES_DEWOTT = 502,
+ SPECIES_SAMUROTT = 503,
+ SPECIES_PATRAT = 504,
+ SPECIES_WATCHOG = 505,
+ SPECIES_LILLIPUP = 506,
+ SPECIES_HERDIER = 507,
+ SPECIES_STOUTLAND = 508,
+ SPECIES_PURRLOIN = 509,
+ SPECIES_LIEPARD = 510,
+ SPECIES_PANSAGE = 511,
+ SPECIES_SIMISAGE = 512,
+ SPECIES_PANSEAR = 513,
+ SPECIES_SIMISEAR = 514,
+ SPECIES_PANPOUR = 515,
+ SPECIES_SIMIPOUR = 516,
+ SPECIES_MUNNA = 517,
+ SPECIES_MUSHARNA = 518,
+ SPECIES_PIDOVE = 519,
+ SPECIES_TRANQUILL = 520,
+ SPECIES_UNFEZANT = 521,
+ SPECIES_BLITZLE = 522,
+ SPECIES_ZEBSTRIKA = 523,
+ SPECIES_ROGGENROLA = 524,
+ SPECIES_BOLDORE = 525,
+ SPECIES_GIGALITH = 526,
+ SPECIES_WOOBAT = 527,
+ SPECIES_SWOOBAT = 528,
+ SPECIES_DRILBUR = 529,
+ SPECIES_EXCADRILL = 530,
+ SPECIES_AUDINO = 531,
+ SPECIES_TIMBURR = 532,
+ SPECIES_GURDURR = 533,
+ SPECIES_CONKELDURR = 534,
+ SPECIES_TYMPOLE = 535,
+ SPECIES_PALPITOAD = 536,
+ SPECIES_SEISMITOAD = 537,
+ SPECIES_THROH = 538,
+ SPECIES_SAWK = 539,
+ SPECIES_SEWADDLE = 540,
+ SPECIES_SWADLOON = 541,
+ SPECIES_LEAVANNY = 542,
+ SPECIES_VENIPEDE = 543,
+ SPECIES_WHIRLIPEDE = 544,
+ SPECIES_SCOLIPEDE = 545,
+ SPECIES_COTTONEE = 546,
+ SPECIES_WHIMSICOTT = 547,
+ SPECIES_PETILIL = 548,
+ SPECIES_LILLIGANT = 549,
+ SPECIES_BASCULIN_RED_STRIPED = 550,
+ SPECIES_BASCULIN = SPECIES_BASCULIN_RED_STRIPED,
+ SPECIES_SANDILE = 551,
+ SPECIES_KROKOROK = 552,
+ SPECIES_KROOKODILE = 553,
+ SPECIES_DARUMAKA = 554,
+ SPECIES_DARMANITAN_STANDARD = 555,
+ SPECIES_DARMANITAN = SPECIES_DARMANITAN_STANDARD,
+ SPECIES_MARACTUS = 556,
+ SPECIES_DWEBBLE = 557,
+ SPECIES_CRUSTLE = 558,
+ SPECIES_SCRAGGY = 559,
+ SPECIES_SCRAFTY = 560,
+ SPECIES_SIGILYPH = 561,
+ SPECIES_YAMASK = 562,
+ SPECIES_COFAGRIGUS = 563,
+ SPECIES_TIRTOUGA = 564,
+ SPECIES_CARRACOSTA = 565,
+ SPECIES_ARCHEN = 566,
+ SPECIES_ARCHEOPS = 567,
+ SPECIES_TRUBBISH = 568,
+ SPECIES_GARBODOR = 569,
+ SPECIES_ZORUA = 570,
+ SPECIES_ZOROARK = 571,
+ SPECIES_MINCCINO = 572,
+ SPECIES_CINCCINO = 573,
+ SPECIES_GOTHITA = 574,
+ SPECIES_GOTHORITA = 575,
+ SPECIES_GOTHITELLE = 576,
+ SPECIES_SOLOSIS = 577,
+ SPECIES_DUOSION = 578,
+ SPECIES_REUNICLUS = 579,
+ SPECIES_DUCKLETT = 580,
+ SPECIES_SWANNA = 581,
+ SPECIES_VANILLITE = 582,
+ SPECIES_VANILLISH = 583,
+ SPECIES_VANILLUXE = 584,
+ SPECIES_DEERLING_SPRING = 585,
+ SPECIES_DEERLING = SPECIES_DEERLING_SPRING,
+ SPECIES_SAWSBUCK_SPRING = 586,
+ SPECIES_SAWSBUCK = SPECIES_SAWSBUCK_SPRING,
+ SPECIES_EMOLGA = 587,
+ SPECIES_KARRABLAST = 588,
+ SPECIES_ESCAVALIER = 589,
+ SPECIES_FOONGUS = 590,
+ SPECIES_AMOONGUSS = 591,
+ SPECIES_FRILLISH = 592,
+ SPECIES_JELLICENT = 593,
+ SPECIES_ALOMOMOLA = 594,
+ SPECIES_JOLTIK = 595,
+ SPECIES_GALVANTULA = 596,
+ SPECIES_FERROSEED = 597,
+ SPECIES_FERROTHORN = 598,
+ SPECIES_KLINK = 599,
+ SPECIES_KLANG = 600,
+ SPECIES_KLINKLANG = 601,
+ SPECIES_TYNAMO = 602,
+ SPECIES_EELEKTRIK = 603,
+ SPECIES_EELEKTROSS = 604,
+ SPECIES_ELGYEM = 605,
+ SPECIES_BEHEEYEM = 606,
+ SPECIES_LITWICK = 607,
+ SPECIES_LAMPENT = 608,
+ SPECIES_CHANDELURE = 609,
+ SPECIES_AXEW = 610,
+ SPECIES_FRAXURE = 611,
+ SPECIES_HAXORUS = 612,
+ SPECIES_CUBCHOO = 613,
+ SPECIES_BEARTIC = 614,
+ SPECIES_CRYOGONAL = 615,
+ SPECIES_SHELMET = 616,
+ SPECIES_ACCELGOR = 617,
+ SPECIES_STUNFISK = 618,
+ SPECIES_MIENFOO = 619,
+ SPECIES_MIENSHAO = 620,
+ SPECIES_DRUDDIGON = 621,
+ SPECIES_GOLETT = 622,
+ SPECIES_GOLURK = 623,
+ SPECIES_PAWNIARD = 624,
+ SPECIES_BISHARP = 625,
+ SPECIES_BOUFFALANT = 626,
+ SPECIES_RUFFLET = 627,
+ SPECIES_BRAVIARY = 628,
+ SPECIES_VULLABY = 629,
+ SPECIES_MANDIBUZZ = 630,
+ SPECIES_HEATMOR = 631,
+ SPECIES_DURANT = 632,
+ SPECIES_DEINO = 633,
+ SPECIES_ZWEILOUS = 634,
+ SPECIES_HYDREIGON = 635,
+ SPECIES_LARVESTA = 636,
+ SPECIES_VOLCARONA = 637,
+ SPECIES_COBALION = 638,
+ SPECIES_TERRAKION = 639,
+ SPECIES_VIRIZION = 640,
+ SPECIES_TORNADUS_INCARNATE = 641,
+ SPECIES_TORNADUS = SPECIES_TORNADUS_INCARNATE,
+ SPECIES_THUNDURUS_INCARNATE = 642,
+ SPECIES_THUNDURUS = SPECIES_THUNDURUS_INCARNATE,
+ SPECIES_RESHIRAM = 643,
+ SPECIES_ZEKROM = 644,
+ SPECIES_LANDORUS_INCARNATE = 645,
+ SPECIES_LANDORUS = SPECIES_LANDORUS_INCARNATE,
+ SPECIES_KYUREM = 646,
+ SPECIES_KELDEO_ORDINARY = 647,
+ SPECIES_KELDEO = SPECIES_KELDEO_ORDINARY,
+ SPECIES_MELOETTA_ARIA = 648,
+ SPECIES_MELOETTA = SPECIES_MELOETTA_ARIA,
+ SPECIES_GENESECT = 649,
+ SPECIES_CHESPIN = 650,
+ SPECIES_QUILLADIN = 651,
+ SPECIES_CHESNAUGHT = 652,
+ SPECIES_FENNEKIN = 653,
+ SPECIES_BRAIXEN = 654,
+ SPECIES_DELPHOX = 655,
+ SPECIES_FROAKIE = 656,
+ SPECIES_FROGADIER = 657,
+ SPECIES_GRENINJA = 658,
+ SPECIES_BUNNELBY = 659,
+ SPECIES_DIGGERSBY = 660,
+ SPECIES_FLETCHLING = 661,
+ SPECIES_FLETCHINDER = 662,
+ SPECIES_TALONFLAME = 663,
+ SPECIES_SCATTERBUG_ICY_SNOW = 664,
+ SPECIES_SCATTERBUG = SPECIES_SCATTERBUG_ICY_SNOW,
+ SPECIES_SPEWPA_ICY_SNOW = 665,
+ SPECIES_SPEWPA = SPECIES_SPEWPA_ICY_SNOW,
+ SPECIES_VIVILLON_ICY_SNOW = 666,
+ SPECIES_VIVILLON = SPECIES_VIVILLON_ICY_SNOW,
+ SPECIES_LITLEO = 667,
+ SPECIES_PYROAR = 668,
+ SPECIES_FLABEBE_RED = 669,
+ SPECIES_FLABEBE = SPECIES_FLABEBE_RED,
+ SPECIES_FLOETTE_RED = 670,
+ SPECIES_FLOETTE = SPECIES_FLOETTE_RED,
+ SPECIES_FLORGES_RED = 671,
+ SPECIES_FLORGES = SPECIES_FLORGES_RED,
+ SPECIES_SKIDDO = 672,
+ SPECIES_GOGOAT = 673,
+ SPECIES_PANCHAM = 674,
+ SPECIES_PANGORO = 675,
+ SPECIES_FURFROU_NATURAL = 676,
+ SPECIES_FURFROU = SPECIES_FURFROU_NATURAL,
+ SPECIES_ESPURR = 677,
+ SPECIES_MEOWSTIC_M = 678,
+ SPECIES_MEOWSTIC = SPECIES_MEOWSTIC_M,
+ SPECIES_HONEDGE = 679,
+ SPECIES_DOUBLADE = 680,
+ SPECIES_AEGISLASH_SHIELD = 681,
+ SPECIES_AEGISLASH = SPECIES_AEGISLASH_SHIELD,
+ SPECIES_SPRITZEE = 682,
+ SPECIES_AROMATISSE = 683,
+ SPECIES_SWIRLIX = 684,
+ SPECIES_SLURPUFF = 685,
+ SPECIES_INKAY = 686,
+ SPECIES_MALAMAR = 687,
+ SPECIES_BINACLE = 688,
+ SPECIES_BARBARACLE = 689,
+ SPECIES_SKRELP = 690,
+ SPECIES_DRAGALGE = 691,
+ SPECIES_CLAUNCHER = 692,
+ SPECIES_CLAWITZER = 693,
+ SPECIES_HELIOPTILE = 694,
+ SPECIES_HELIOLISK = 695,
+ SPECIES_TYRUNT = 696,
+ SPECIES_TYRANTRUM = 697,
+ SPECIES_AMAURA = 698,
+ SPECIES_AURORUS = 699,
+ SPECIES_SYLVEON = 700,
+ SPECIES_HAWLUCHA = 701,
+ SPECIES_DEDENNE = 702,
+ SPECIES_CARBINK = 703,
+ SPECIES_GOOMY = 704,
+ SPECIES_SLIGGOO = 705,
+ SPECIES_GOODRA = 706,
+ SPECIES_KLEFKI = 707,
+ SPECIES_PHANTUMP = 708,
+ SPECIES_TREVENANT = 709,
+ SPECIES_PUMPKABOO_AVERAGE = 710,
+ SPECIES_PUMPKABOO = SPECIES_PUMPKABOO_AVERAGE,
+ SPECIES_GOURGEIST_AVERAGE = 711,
+ SPECIES_GOURGEIST = SPECIES_GOURGEIST_AVERAGE,
+ SPECIES_BERGMITE = 712,
+ SPECIES_AVALUGG = 713,
+ SPECIES_NOIBAT = 714,
+ SPECIES_NOIVERN = 715,
+ SPECIES_XERNEAS_NEUTRAL = 716,
+ SPECIES_XERNEAS = SPECIES_XERNEAS_NEUTRAL,
+ SPECIES_YVELTAL = 717,
+ SPECIES_ZYGARDE_50 = 718,
+ SPECIES_ZYGARDE = SPECIES_ZYGARDE_50,
+ SPECIES_DIANCIE = 719,
+ SPECIES_HOOPA_CONFINED = 720,
+ SPECIES_HOOPA = SPECIES_HOOPA_CONFINED,
+ SPECIES_VOLCANION = 721,
+ SPECIES_ROWLET = 722,
+ SPECIES_DARTRIX = 723,
+ SPECIES_DECIDUEYE = 724,
+ SPECIES_LITTEN = 725,
+ SPECIES_TORRACAT = 726,
+ SPECIES_INCINEROAR = 727,
+ SPECIES_POPPLIO = 728,
+ SPECIES_BRIONNE = 729,
+ SPECIES_PRIMARINA = 730,
+ SPECIES_PIKIPEK = 731,
+ SPECIES_TRUMBEAK = 732,
+ SPECIES_TOUCANNON = 733,
+ SPECIES_YUNGOOS = 734,
+ SPECIES_GUMSHOOS = 735,
+ SPECIES_GRUBBIN = 736,
+ SPECIES_CHARJABUG = 737,
+ SPECIES_VIKAVOLT = 738,
+ SPECIES_CRABRAWLER = 739,
+ SPECIES_CRABOMINABLE = 740,
+ SPECIES_ORICORIO_BAILE = 741,
+ SPECIES_ORICORIO = SPECIES_ORICORIO_BAILE,
+ SPECIES_CUTIEFLY = 742,
+ SPECIES_RIBOMBEE = 743,
+ SPECIES_ROCKRUFF = 744,
+ SPECIES_LYCANROC_MIDDAY = 745,
+ SPECIES_LYCANROC = SPECIES_LYCANROC_MIDDAY,
+ SPECIES_WISHIWASHI_SOLO = 746,
+ SPECIES_WISHIWASHI = SPECIES_WISHIWASHI_SOLO,
+ SPECIES_MAREANIE = 747,
+ SPECIES_TOXAPEX = 748,
+ SPECIES_MUDBRAY = 749,
+ SPECIES_MUDSDALE = 750,
+ SPECIES_DEWPIDER = 751,
+ SPECIES_ARAQUANID = 752,
+ SPECIES_FOMANTIS = 753,
+ SPECIES_LURANTIS = 754,
+ SPECIES_MORELULL = 755,
+ SPECIES_SHIINOTIC = 756,
+ SPECIES_SALANDIT = 757,
+ SPECIES_SALAZZLE = 758,
+ SPECIES_STUFFUL = 759,
+ SPECIES_BEWEAR = 760,
+ SPECIES_BOUNSWEET = 761,
+ SPECIES_STEENEE = 762,
+ SPECIES_TSAREENA = 763,
+ SPECIES_COMFEY = 764,
+ SPECIES_ORANGURU = 765,
+ SPECIES_PASSIMIAN = 766,
+ SPECIES_WIMPOD = 767,
+ SPECIES_GOLISOPOD = 768,
+ SPECIES_SANDYGAST = 769,
+ SPECIES_PALOSSAND = 770,
+ SPECIES_PYUKUMUKU = 771,
+ SPECIES_TYPE_NULL = 772,
+ SPECIES_SILVALLY_NORMAL = 773,
+ SPECIES_SILVALLY = SPECIES_SILVALLY_NORMAL,
+ SPECIES_MINIOR_METEOR_RED = 774,
+ SPECIES_MINIOR_METEOR = SPECIES_MINIOR_METEOR_RED,
+ SPECIES_MINIOR = SPECIES_MINIOR_METEOR,
+ SPECIES_MINIOR_RED = SPECIES_MINIOR_METEOR_RED,
+ SPECIES_KOMALA = 775,
+ SPECIES_TURTONATOR = 776,
+ SPECIES_TOGEDEMARU = 777,
+ SPECIES_MIMIKYU_DISGUISED = 778,
+ SPECIES_MIMIKYU = SPECIES_MIMIKYU_DISGUISED,
+ SPECIES_BRUXISH = 779,
+ SPECIES_DRAMPA = 780,
+ SPECIES_DHELMISE = 781,
+ SPECIES_JANGMO_O = 782,
+ SPECIES_HAKAMO_O = 783,
+ SPECIES_KOMMO_O = 784,
+ SPECIES_TAPU_KOKO = 785,
+ SPECIES_TAPU_LELE = 786,
+ SPECIES_TAPU_BULU = 787,
+ SPECIES_TAPU_FINI = 788,
+ SPECIES_COSMOG = 789,
+ SPECIES_COSMOEM = 790,
+ SPECIES_SOLGALEO = 791,
+ SPECIES_LUNALA = 792,
+ SPECIES_NIHILEGO = 793,
+ SPECIES_BUZZWOLE = 794,
+ SPECIES_PHEROMOSA = 795,
+ SPECIES_XURKITREE = 796,
+ SPECIES_CELESTEELA = 797,
+ SPECIES_KARTANA = 798,
+ SPECIES_GUZZLORD = 799,
+ SPECIES_NECROZMA = 800,
+ SPECIES_MAGEARNA = 801,
+ SPECIES_MARSHADOW = 802,
+ SPECIES_POIPOLE = 803,
+ SPECIES_NAGANADEL = 804,
+ SPECIES_STAKATAKA = 805,
+ SPECIES_BLACEPHALON = 806,
+ SPECIES_ZERAORA = 807,
+ SPECIES_MELTAN = 808,
+ SPECIES_MELMETAL = 809,
+ SPECIES_GROOKEY = 810,
+ SPECIES_THWACKEY = 811,
+ SPECIES_RILLABOOM = 812,
+ SPECIES_SCORBUNNY = 813,
+ SPECIES_RABOOT = 814,
+ SPECIES_CINDERACE = 815,
+ SPECIES_SOBBLE = 816,
+ SPECIES_DRIZZILE = 817,
+ SPECIES_INTELEON = 818,
+ SPECIES_SKWOVET = 819,
+ SPECIES_GREEDENT = 820,
+ SPECIES_ROOKIDEE = 821,
+ SPECIES_CORVISQUIRE = 822,
+ SPECIES_CORVIKNIGHT = 823,
+ SPECIES_BLIPBUG = 824,
+ SPECIES_DOTTLER = 825,
+ SPECIES_ORBEETLE = 826,
+ SPECIES_NICKIT = 827,
+ SPECIES_THIEVUL = 828,
+ SPECIES_GOSSIFLEUR = 829,
+ SPECIES_ELDEGOSS = 830,
+ SPECIES_WOOLOO = 831,
+ SPECIES_DUBWOOL = 832,
+ SPECIES_CHEWTLE = 833,
+ SPECIES_DREDNAW = 834,
+ SPECIES_YAMPER = 835,
+ SPECIES_BOLTUND = 836,
+ SPECIES_ROLYCOLY = 837,
+ SPECIES_CARKOL = 838,
+ SPECIES_COALOSSAL = 839,
+ SPECIES_APPLIN = 840,
+ SPECIES_FLAPPLE = 841,
+ SPECIES_APPLETUN = 842,
+ SPECIES_SILICOBRA = 843,
+ SPECIES_SANDACONDA = 844,
+ SPECIES_CRAMORANT = 845,
+ SPECIES_ARROKUDA = 846,
+ SPECIES_BARRASKEWDA = 847,
+ SPECIES_TOXEL = 848,
+ SPECIES_TOXTRICITY_AMPED = 849,
+ SPECIES_TOXTRICITY = SPECIES_TOXTRICITY_AMPED,
+ SPECIES_SIZZLIPEDE = 850,
+ SPECIES_CENTISKORCH = 851,
+ SPECIES_CLOBBOPUS = 852,
+ SPECIES_GRAPPLOCT = 853,
+ SPECIES_SINISTEA_PHONY = 854,
+ SPECIES_SINISTEA = SPECIES_SINISTEA_PHONY,
+ SPECIES_POLTEAGEIST_PHONY = 855,
+ SPECIES_POLTEAGEIST = SPECIES_POLTEAGEIST_PHONY,
+ SPECIES_HATENNA = 856,
+ SPECIES_HATTREM = 857,
+ SPECIES_HATTERENE = 858,
+ SPECIES_IMPIDIMP = 859,
+ SPECIES_MORGREM = 860,
+ SPECIES_GRIMMSNARL = 861,
+ SPECIES_OBSTAGOON = 862,
+ SPECIES_PERRSERKER = 863,
+ SPECIES_CURSOLA = 864,
+ SPECIES_SIRFETCHD = 865,
+ SPECIES_MR_RIME = 866,
+ SPECIES_RUNERIGUS = 867,
+ SPECIES_MILCERY = 868,
+ SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM = 869,
+ SPECIES_ALCREMIE_STRAWBERRY = SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM,
+ SPECIES_ALCREMIE = SPECIES_ALCREMIE_STRAWBERRY,
+ SPECIES_ALCREMIE_VANILLA_CREAM = SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM,
+ SPECIES_FALINKS = 870,
+ SPECIES_PINCURCHIN = 871,
+ SPECIES_SNOM = 872,
+ SPECIES_FROSMOTH = 873,
+ SPECIES_STONJOURNER = 874,
+ SPECIES_EISCUE_ICE = 875,
+ SPECIES_EISCUE = SPECIES_EISCUE_ICE,
+ SPECIES_INDEEDEE_M = 876,
+ SPECIES_INDEEDEE = SPECIES_INDEEDEE_M,
+ SPECIES_MORPEKO_FULL_BELLY = 877,
+ SPECIES_MORPEKO = SPECIES_MORPEKO_FULL_BELLY,
+ SPECIES_CUFANT = 878,
+ SPECIES_COPPERAJAH = 879,
+ SPECIES_DRACOZOLT = 880,
+ SPECIES_ARCTOZOLT = 881,
+ SPECIES_DRACOVISH = 882,
+ SPECIES_ARCTOVISH = 883,
+ SPECIES_DURALUDON = 884,
+ SPECIES_DREEPY = 885,
+ SPECIES_DRAKLOAK = 886,
+ SPECIES_DRAGAPULT = 887,
+ SPECIES_ZACIAN_HERO = 888,
+ SPECIES_ZACIAN = SPECIES_ZACIAN_HERO,
+ SPECIES_ZAMAZENTA_HERO = 889,
+ SPECIES_ZAMAZENTA = SPECIES_ZAMAZENTA_HERO,
+ SPECIES_ETERNATUS = 890,
+ SPECIES_KUBFU = 891,
+ SPECIES_URSHIFU_SINGLE_STRIKE = 892,
+ SPECIES_URSHIFU = SPECIES_URSHIFU_SINGLE_STRIKE,
+ SPECIES_ZARUDE = 893,
+ SPECIES_REGIELEKI = 894,
+ SPECIES_REGIDRAGO = 895,
+ SPECIES_GLASTRIER = 896,
+ SPECIES_SPECTRIER = 897,
+ SPECIES_CALYREX = 898,
+ SPECIES_WYRDEER = 899,
+ SPECIES_KLEAVOR = 900,
+ SPECIES_URSALUNA = 901,
+ SPECIES_BASCULEGION_M = 902,
+ SPECIES_BASCULEGION = SPECIES_BASCULEGION_M,
+ SPECIES_SNEASLER = 903,
+ SPECIES_OVERQWIL = 904,
+ SPECIES_ENAMORUS_INCARNATE = 905,
+ SPECIES_ENAMORUS = SPECIES_ENAMORUS_INCARNATE,
+ SPECIES_VENUSAUR_MEGA = 906,
+ SPECIES_CHARIZARD_MEGA_X = 907,
+ SPECIES_CHARIZARD_MEGA_Y = 908,
+ SPECIES_BLASTOISE_MEGA = 909,
+ SPECIES_BEEDRILL_MEGA = 910,
+ SPECIES_PIDGEOT_MEGA = 911,
+ SPECIES_ALAKAZAM_MEGA = 912,
+ SPECIES_SLOWBRO_MEGA = 913,
+ SPECIES_GENGAR_MEGA = 914,
+ SPECIES_KANGASKHAN_MEGA = 915,
+ SPECIES_PINSIR_MEGA = 916,
+ SPECIES_GYARADOS_MEGA = 917,
+ SPECIES_AERODACTYL_MEGA = 918,
+ SPECIES_MEWTWO_MEGA_X = 919,
+ SPECIES_MEWTWO_MEGA_Y = 920,
+ SPECIES_AMPHAROS_MEGA = 921,
+ SPECIES_STEELIX_MEGA = 922,
+ SPECIES_SCIZOR_MEGA = 923,
+ SPECIES_HERACROSS_MEGA = 924,
+ SPECIES_HOUNDOOM_MEGA = 925,
+ SPECIES_TYRANITAR_MEGA = 926,
+ SPECIES_SCEPTILE_MEGA = 927,
+ SPECIES_BLAZIKEN_MEGA = 928,
+ SPECIES_SWAMPERT_MEGA = 929,
+ SPECIES_GARDEVOIR_MEGA = 930,
+ SPECIES_SABLEYE_MEGA = 931,
+ SPECIES_MAWILE_MEGA = 932,
+ SPECIES_AGGRON_MEGA = 933,
+ SPECIES_MEDICHAM_MEGA = 934,
+ SPECIES_MANECTRIC_MEGA = 935,
+ SPECIES_SHARPEDO_MEGA = 936,
+ SPECIES_CAMERUPT_MEGA = 937,
+ SPECIES_ALTARIA_MEGA = 938,
+ SPECIES_BANETTE_MEGA = 939,
+ SPECIES_ABSOL_MEGA = 940,
+ SPECIES_GLALIE_MEGA = 941,
+ SPECIES_SALAMENCE_MEGA = 942,
+ SPECIES_METAGROSS_MEGA = 943,
+ SPECIES_LATIAS_MEGA = 944,
+ SPECIES_LATIOS_MEGA = 945,
+ SPECIES_LOPUNNY_MEGA = 946,
+ SPECIES_GARCHOMP_MEGA = 947,
+ SPECIES_LUCARIO_MEGA = 948,
+ SPECIES_ABOMASNOW_MEGA = 949,
+ SPECIES_GALLADE_MEGA = 950,
+ SPECIES_AUDINO_MEGA = 951,
+ SPECIES_DIANCIE_MEGA = 952,
+ SPECIES_RAYQUAZA_MEGA = 953,
+ SPECIES_KYOGRE_PRIMAL = 954,
+ SPECIES_GROUDON_PRIMAL = 955,
+ SPECIES_RATTATA_ALOLA = 956,
+ SPECIES_RATICATE_ALOLA = 957,
+ SPECIES_RAICHU_ALOLA = 958,
+ SPECIES_SANDSHREW_ALOLA = 959,
+ SPECIES_SANDSLASH_ALOLA = 960,
+ SPECIES_VULPIX_ALOLA = 961,
+ SPECIES_NINETALES_ALOLA = 962,
+ SPECIES_DIGLETT_ALOLA = 963,
+ SPECIES_DUGTRIO_ALOLA = 964,
+ SPECIES_MEOWTH_ALOLA = 965,
+ SPECIES_PERSIAN_ALOLA = 966,
+ SPECIES_GEODUDE_ALOLA = 967,
+ SPECIES_GRAVELER_ALOLA = 968,
+ SPECIES_GOLEM_ALOLA = 969,
+ SPECIES_GRIMER_ALOLA = 970,
+ SPECIES_MUK_ALOLA = 971,
+ SPECIES_EXEGGUTOR_ALOLA = 972,
+ SPECIES_MAROWAK_ALOLA = 973,
+ SPECIES_MEOWTH_GALAR = 974,
+ SPECIES_PONYTA_GALAR = 975,
+ SPECIES_RAPIDASH_GALAR = 976,
+ SPECIES_SLOWPOKE_GALAR = 977,
+ SPECIES_SLOWBRO_GALAR = 978,
+ SPECIES_FARFETCHD_GALAR = 979,
+ SPECIES_WEEZING_GALAR = 980,
+ SPECIES_MR_MIME_GALAR = 981,
+ SPECIES_ARTICUNO_GALAR = 982,
+ SPECIES_ZAPDOS_GALAR = 983,
+ SPECIES_MOLTRES_GALAR = 984,
+ SPECIES_SLOWKING_GALAR = 985,
+ SPECIES_CORSOLA_GALAR = 986,
+ SPECIES_ZIGZAGOON_GALAR = 987,
+ SPECIES_LINOONE_GALAR = 988,
+ SPECIES_DARUMAKA_GALAR = 989,
+ SPECIES_DARMANITAN_GALAR_STANDARD = 990,
+ SPECIES_DARMANITAN_GALAR = SPECIES_DARMANITAN_GALAR_STANDARD,
+ SPECIES_YAMASK_GALAR = 991,
+ SPECIES_STUNFISK_GALAR = 992,
-//Hisuian Forms
-#define SPECIES_GROWLITHE_HISUI 993
-#define SPECIES_ARCANINE_HISUI 994
-#define SPECIES_VOLTORB_HISUI 995
-#define SPECIES_ELECTRODE_HISUI 996
-#define SPECIES_TYPHLOSION_HISUI 997
-#define SPECIES_QWILFISH_HISUI 998
-#define SPECIES_SNEASEL_HISUI 999
-#define SPECIES_SAMUROTT_HISUI 1000
-#define SPECIES_LILLIGANT_HISUI 1001
-#define SPECIES_ZORUA_HISUI 1002
-#define SPECIES_ZOROARK_HISUI 1003
-#define SPECIES_BRAVIARY_HISUI 1004
-#define SPECIES_SLIGGOO_HISUI 1005
-#define SPECIES_GOODRA_HISUI 1006
-#define SPECIES_AVALUGG_HISUI 1007
-#define SPECIES_DECIDUEYE_HISUI 1008
+ //Hisuian Forms
+ SPECIES_GROWLITHE_HISUI = 993,
+ SPECIES_ARCANINE_HISUI = 994,
+ SPECIES_VOLTORB_HISUI = 995,
+ SPECIES_ELECTRODE_HISUI = 996,
+ SPECIES_TYPHLOSION_HISUI = 997,
+ SPECIES_QWILFISH_HISUI = 998,
+ SPECIES_SNEASEL_HISUI = 999,
+ SPECIES_SAMUROTT_HISUI = 1000,
+ SPECIES_LILLIGANT_HISUI = 1001,
+ SPECIES_ZORUA_HISUI = 1002,
+ SPECIES_ZOROARK_HISUI = 1003,
+ SPECIES_BRAVIARY_HISUI = 1004,
+ SPECIES_SLIGGOO_HISUI = 1005,
+ SPECIES_GOODRA_HISUI = 1006,
+ SPECIES_AVALUGG_HISUI = 1007,
+ SPECIES_DECIDUEYE_HISUI = 1008,
-// Misc Forms
-#define SPECIES_PIKACHU_COSPLAY 1009
-#define SPECIES_PIKACHU_ROCK_STAR 1010
-#define SPECIES_PIKACHU_BELLE 1011
-#define SPECIES_PIKACHU_POP_STAR 1012
-#define SPECIES_PIKACHU_PHD 1013
-#define SPECIES_PIKACHU_LIBRE 1014
-#define SPECIES_PIKACHU_ORIGINAL 1015
-#define SPECIES_PIKACHU_HOENN 1016
-#define SPECIES_PIKACHU_SINNOH 1017
-#define SPECIES_PIKACHU_UNOVA 1018
-#define SPECIES_PIKACHU_KALOS 1019
-#define SPECIES_PIKACHU_ALOLA 1020
-#define SPECIES_PIKACHU_PARTNER 1021
-#define SPECIES_PIKACHU_WORLD 1022
-#define SPECIES_PICHU_SPIKY_EARED 1023
-#define SPECIES_UNOWN_B 1024
-#define SPECIES_UNOWN_C 1025
-#define SPECIES_UNOWN_D 1026
-#define SPECIES_UNOWN_E 1027
-#define SPECIES_UNOWN_F 1028
-#define SPECIES_UNOWN_G 1029
-#define SPECIES_UNOWN_H 1030
-#define SPECIES_UNOWN_I 1031
-#define SPECIES_UNOWN_J 1032
-#define SPECIES_UNOWN_K 1033
-#define SPECIES_UNOWN_L 1034
-#define SPECIES_UNOWN_M 1035
-#define SPECIES_UNOWN_N 1036
-#define SPECIES_UNOWN_O 1037
-#define SPECIES_UNOWN_P 1038
-#define SPECIES_UNOWN_Q 1039
-#define SPECIES_UNOWN_R 1040
-#define SPECIES_UNOWN_S 1041
-#define SPECIES_UNOWN_T 1042
-#define SPECIES_UNOWN_U 1043
-#define SPECIES_UNOWN_V 1044
-#define SPECIES_UNOWN_W 1045
-#define SPECIES_UNOWN_X 1046
-#define SPECIES_UNOWN_Y 1047
-#define SPECIES_UNOWN_Z 1048
-#define SPECIES_UNOWN_EXCLAMATION 1049
-#define SPECIES_UNOWN_QUESTION 1050
-#define SPECIES_CASTFORM_SUNNY 1051
-#define SPECIES_CASTFORM_RAINY 1052
-#define SPECIES_CASTFORM_SNOWY 1053
-#define SPECIES_DEOXYS_ATTACK 1054
-#define SPECIES_DEOXYS_DEFENSE 1055
-#define SPECIES_DEOXYS_SPEED 1056
-#define SPECIES_BURMY_SANDY 1057
-#define SPECIES_BURMY_TRASH 1058
-#define SPECIES_WORMADAM_SANDY 1059
-#define SPECIES_WORMADAM_TRASH 1060
-#define SPECIES_CHERRIM_SUNSHINE 1061
-#define SPECIES_SHELLOS_EAST 1062
-#define SPECIES_GASTRODON_EAST 1063
-#define SPECIES_ROTOM_HEAT 1064
-#define SPECIES_ROTOM_WASH 1065
-#define SPECIES_ROTOM_FROST 1066
-#define SPECIES_ROTOM_FAN 1067
-#define SPECIES_ROTOM_MOW 1068
-#define SPECIES_DIALGA_ORIGIN 1069
-#define SPECIES_PALKIA_ORIGIN 1070
-#define SPECIES_GIRATINA_ORIGIN 1071
-#define SPECIES_SHAYMIN_SKY 1072
-#define SPECIES_ARCEUS_FIGHTING 1073
-#define SPECIES_ARCEUS_FLYING 1074
-#define SPECIES_ARCEUS_POISON 1075
-#define SPECIES_ARCEUS_GROUND 1076
-#define SPECIES_ARCEUS_ROCK 1077
-#define SPECIES_ARCEUS_BUG 1078
-#define SPECIES_ARCEUS_GHOST 1079
-#define SPECIES_ARCEUS_STEEL 1080
-#define SPECIES_ARCEUS_FIRE 1081
-#define SPECIES_ARCEUS_WATER 1082
-#define SPECIES_ARCEUS_GRASS 1083
-#define SPECIES_ARCEUS_ELECTRIC 1084
-#define SPECIES_ARCEUS_PSYCHIC 1085
-#define SPECIES_ARCEUS_ICE 1086
-#define SPECIES_ARCEUS_DRAGON 1087
-#define SPECIES_ARCEUS_DARK 1088
-#define SPECIES_ARCEUS_FAIRY 1089
-#define SPECIES_BASCULIN_BLUE_STRIPED 1090
-#define SPECIES_BASCULIN_WHITE_STRIPED 1091
-#define SPECIES_DARMANITAN_ZEN 1092
-#define SPECIES_DARMANITAN_GALAR_ZEN 1093
-#define SPECIES_DEERLING_SUMMER 1094
-#define SPECIES_DEERLING_AUTUMN 1095
-#define SPECIES_DEERLING_WINTER 1096
-#define SPECIES_SAWSBUCK_SUMMER 1097
-#define SPECIES_SAWSBUCK_AUTUMN 1098
-#define SPECIES_SAWSBUCK_WINTER 1099
-#define SPECIES_TORNADUS_THERIAN 1100
-#define SPECIES_THUNDURUS_THERIAN 1101
-#define SPECIES_LANDORUS_THERIAN 1102
-#define SPECIES_ENAMORUS_THERIAN 1103
-#define SPECIES_KYUREM_WHITE 1104
-#define SPECIES_KYUREM_BLACK 1105
-#define SPECIES_KELDEO_RESOLUTE 1106
-#define SPECIES_MELOETTA_PIROUETTE 1107
-#define SPECIES_GENESECT_DOUSE 1108
-#define SPECIES_GENESECT_SHOCK 1109
-#define SPECIES_GENESECT_BURN 1110
-#define SPECIES_GENESECT_CHILL 1111
-#define SPECIES_GRENINJA_BOND 1112
-#define SPECIES_GRENINJA_BATTLE_BOND SPECIES_GRENINJA_BOND
-#define SPECIES_GRENINJA_ASH 1113
-#define SPECIES_VIVILLON_POLAR 1114
-#define SPECIES_VIVILLON_TUNDRA 1115
-#define SPECIES_VIVILLON_CONTINENTAL 1116
-#define SPECIES_VIVILLON_GARDEN 1117
-#define SPECIES_VIVILLON_ELEGANT 1118
-#define SPECIES_VIVILLON_MEADOW 1119
-#define SPECIES_VIVILLON_MODERN 1120
-#define SPECIES_VIVILLON_MARINE 1121
-#define SPECIES_VIVILLON_ARCHIPELAGO 1122
-#define SPECIES_VIVILLON_HIGH_PLAINS 1123
-#define SPECIES_VIVILLON_SANDSTORM 1124
-#define SPECIES_VIVILLON_RIVER 1125
-#define SPECIES_VIVILLON_MONSOON 1126
-#define SPECIES_VIVILLON_SAVANNA 1127
-#define SPECIES_VIVILLON_SUN 1128
-#define SPECIES_VIVILLON_OCEAN 1129
-#define SPECIES_VIVILLON_JUNGLE 1130
-#define SPECIES_VIVILLON_FANCY 1131
-#define SPECIES_VIVILLON_POKEBALL 1132
-#define SPECIES_FLABEBE_YELLOW 1133
-#define SPECIES_FLABEBE_ORANGE 1134
-#define SPECIES_FLABEBE_BLUE 1135
-#define SPECIES_FLABEBE_WHITE 1136
-#define SPECIES_FLOETTE_YELLOW 1137
-#define SPECIES_FLOETTE_ORANGE 1138
-#define SPECIES_FLOETTE_BLUE 1139
-#define SPECIES_FLOETTE_WHITE 1140
-#define SPECIES_FLOETTE_ETERNAL 1141
-#define SPECIES_FLORGES_YELLOW 1142
-#define SPECIES_FLORGES_ORANGE 1143
-#define SPECIES_FLORGES_BLUE 1144
-#define SPECIES_FLORGES_WHITE 1145
-#define SPECIES_FURFROU_HEART 1146
-#define SPECIES_FURFROU_STAR 1147
-#define SPECIES_FURFROU_DIAMOND 1148
-#define SPECIES_FURFROU_DEBUTANTE 1149
-#define SPECIES_FURFROU_MATRON 1150
-#define SPECIES_FURFROU_DANDY 1151
-#define SPECIES_FURFROU_LA_REINE 1152
-#define SPECIES_FURFROU_KABUKI 1153
-#define SPECIES_FURFROU_PHARAOH 1154
-#define SPECIES_MEOWSTIC_F 1155
-#define SPECIES_AEGISLASH_BLADE 1156
-#define SPECIES_PUMPKABOO_SMALL 1157
-#define SPECIES_PUMPKABOO_LARGE 1158
-#define SPECIES_PUMPKABOO_SUPER 1159
-#define SPECIES_GOURGEIST_SMALL 1160
-#define SPECIES_GOURGEIST_LARGE 1161
-#define SPECIES_GOURGEIST_SUPER 1162
-#define SPECIES_XERNEAS_ACTIVE 1163
-#define SPECIES_ZYGARDE_10 SPECIES_ZYGARDE_10_AURA_BREAK
-#define SPECIES_ZYGARDE_10_AURA_BREAK 1164
-#define SPECIES_ZYGARDE_10_POWER_CONSTRUCT 1165
-#define SPECIES_ZYGARDE_50_POWER_CONSTRUCT 1166
-#define SPECIES_ZYGARDE_COMPLETE 1167
-#define SPECIES_HOOPA_UNBOUND 1168
-#define SPECIES_ORICORIO_POM_POM 1169
-#define SPECIES_ORICORIO_PAU 1170
-#define SPECIES_ORICORIO_SENSU 1171
-#define SPECIES_ROCKRUFF_OWN_TEMPO 1172
-#define SPECIES_LYCANROC_MIDNIGHT 1173
-#define SPECIES_LYCANROC_DUSK 1174
-#define SPECIES_WISHIWASHI_SCHOOL 1175
-#define SPECIES_SILVALLY_FIGHTING 1176
-#define SPECIES_SILVALLY_FLYING 1177
-#define SPECIES_SILVALLY_POISON 1178
-#define SPECIES_SILVALLY_GROUND 1179
-#define SPECIES_SILVALLY_ROCK 1180
-#define SPECIES_SILVALLY_BUG 1181
-#define SPECIES_SILVALLY_GHOST 1182
-#define SPECIES_SILVALLY_STEEL 1183
-#define SPECIES_SILVALLY_FIRE 1184
-#define SPECIES_SILVALLY_WATER 1185
-#define SPECIES_SILVALLY_GRASS 1186
-#define SPECIES_SILVALLY_ELECTRIC 1187
-#define SPECIES_SILVALLY_PSYCHIC 1188
-#define SPECIES_SILVALLY_ICE 1189
-#define SPECIES_SILVALLY_DRAGON 1190
-#define SPECIES_SILVALLY_DARK 1191
-#define SPECIES_SILVALLY_FAIRY 1192
-#define SPECIES_MINIOR_ORANGE SPECIES_MINIOR_METEOR_ORANGE
-#define SPECIES_MINIOR_YELLOW SPECIES_MINIOR_METEOR_YELLOW
-#define SPECIES_MINIOR_GREEN SPECIES_MINIOR_METEOR_GREEN
-#define SPECIES_MINIOR_BLUE SPECIES_MINIOR_METEOR_BLUE
-#define SPECIES_MINIOR_INDIGO SPECIES_MINIOR_METEOR_INDIGO
-#define SPECIES_MINIOR_VIOLET SPECIES_MINIOR_METEOR_VIOLET
-#define SPECIES_MINIOR_METEOR_ORANGE 1193
-#define SPECIES_MINIOR_METEOR_YELLOW 1194
-#define SPECIES_MINIOR_METEOR_GREEN 1195
-#define SPECIES_MINIOR_METEOR_BLUE 1196
-#define SPECIES_MINIOR_METEOR_INDIGO 1197
-#define SPECIES_MINIOR_METEOR_VIOLET 1198
-#define SPECIES_MINIOR_CORE SPECIES_MINIOR_CORE_RED
-#define SPECIES_MINIOR_CORE_RED 1199
-#define SPECIES_MINIOR_CORE_ORANGE 1200
-#define SPECIES_MINIOR_CORE_YELLOW 1201
-#define SPECIES_MINIOR_CORE_GREEN 1202
-#define SPECIES_MINIOR_CORE_BLUE 1203
-#define SPECIES_MINIOR_CORE_INDIGO 1204
-#define SPECIES_MINIOR_CORE_VIOLET 1205
-#define SPECIES_MIMIKYU_BUSTED 1206
-#define SPECIES_NECROZMA_DUSK_MANE 1207
-#define SPECIES_NECROZMA_DAWN_WINGS 1208
-#define SPECIES_NECROZMA_ULTRA 1209
-#define SPECIES_MAGEARNA_ORIGINAL 1210
-#define SPECIES_CRAMORANT_GULPING 1211
-#define SPECIES_CRAMORANT_GORGING 1212
-#define SPECIES_TOXTRICITY_LOW_KEY 1213
-#define SPECIES_SINISTEA_ANTIQUE 1214
-#define SPECIES_POLTEAGEIST_ANTIQUE 1215
-#define SPECIES_ALCREMIE_RUBY_CREAM SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM
-#define SPECIES_ALCREMIE_MATCHA_CREAM SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM
-#define SPECIES_ALCREMIE_MINT_CREAM SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM
-#define SPECIES_ALCREMIE_LEMON_CREAM SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM
-#define SPECIES_ALCREMIE_SALTED_CREAM SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM
-#define SPECIES_ALCREMIE_RUBY_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL
-#define SPECIES_ALCREMIE_CARAMEL_SWIRL SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL
-#define SPECIES_ALCREMIE_RAINBOW_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL
-#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM 1216
-#define SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM 1217
-#define SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM 1218
-#define SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM 1219
-#define SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM 1220
-#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL 1221
-#define SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL 1222
-#define SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL 1223
-#define SPECIES_EISCUE_NOICE 1224
-#define SPECIES_INDEEDEE_F 1225
-#define SPECIES_MORPEKO_HANGRY 1226
-#define SPECIES_ZACIAN_CROWNED 1227
-#define SPECIES_ZAMAZENTA_CROWNED 1228
-#define SPECIES_ETERNATUS_ETERNAMAX 1229
-#define SPECIES_URSHIFU_RAPID_STRIKE 1230
-#define SPECIES_ZARUDE_DADA 1231
-#define SPECIES_CALYREX_ICE 1232
-#define SPECIES_CALYREX_SHADOW 1233
-#define SPECIES_BASCULEGION_F 1234
-#define SPECIES_ALCREMIE_BERRY SPECIES_ALCREMIE_BERRY_VANILLA_CREAM
-#define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM 1235
-#define SPECIES_ALCREMIE_BERRY_RUBY_CREAM 1236
-#define SPECIES_ALCREMIE_BERRY_MATCHA_CREAM 1237
-#define SPECIES_ALCREMIE_BERRY_MINT_CREAM 1238
-#define SPECIES_ALCREMIE_BERRY_LEMON_CREAM 1239
-#define SPECIES_ALCREMIE_BERRY_SALTED_CREAM 1240
-#define SPECIES_ALCREMIE_BERRY_RUBY_SWIRL 1241
-#define SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL 1242
-#define SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL 1243
-#define SPECIES_ALCREMIE_LOVE SPECIES_ALCREMIE_LOVE_VANILLA_CREAM
-#define SPECIES_ALCREMIE_LOVE_VANILLA_CREAM 1244
-#define SPECIES_ALCREMIE_LOVE_RUBY_CREAM 1245
-#define SPECIES_ALCREMIE_LOVE_MATCHA_CREAM 1246
-#define SPECIES_ALCREMIE_LOVE_MINT_CREAM 1247
-#define SPECIES_ALCREMIE_LOVE_LEMON_CREAM 1248
-#define SPECIES_ALCREMIE_LOVE_SALTED_CREAM 1249
-#define SPECIES_ALCREMIE_LOVE_RUBY_SWIRL 1250
-#define SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL 1251
-#define SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL 1252
-#define SPECIES_ALCREMIE_STAR SPECIES_ALCREMIE_STAR_VANILLA_CREAM
-#define SPECIES_ALCREMIE_STAR_VANILLA_CREAM 1253
-#define SPECIES_ALCREMIE_STAR_RUBY_CREAM 1254
-#define SPECIES_ALCREMIE_STAR_MATCHA_CREAM 1255
-#define SPECIES_ALCREMIE_STAR_MINT_CREAM 1256
-#define SPECIES_ALCREMIE_STAR_LEMON_CREAM 1257
-#define SPECIES_ALCREMIE_STAR_SALTED_CREAM 1258
-#define SPECIES_ALCREMIE_STAR_RUBY_SWIRL 1259
-#define SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL 1260
-#define SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL 1261
-#define SPECIES_ALCREMIE_CLOVER SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM
-#define SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM 1262
-#define SPECIES_ALCREMIE_CLOVER_RUBY_CREAM 1263
-#define SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM 1264
-#define SPECIES_ALCREMIE_CLOVER_MINT_CREAM 1265
-#define SPECIES_ALCREMIE_CLOVER_LEMON_CREAM 1266
-#define SPECIES_ALCREMIE_CLOVER_SALTED_CREAM 1267
-#define SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL 1268
-#define SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL 1269
-#define SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL 1270
-#define SPECIES_ALCREMIE_FLOWER SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM
-#define SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM 1271
-#define SPECIES_ALCREMIE_FLOWER_RUBY_CREAM 1272
-#define SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM 1273
-#define SPECIES_ALCREMIE_FLOWER_MINT_CREAM 1274
-#define SPECIES_ALCREMIE_FLOWER_LEMON_CREAM 1275
-#define SPECIES_ALCREMIE_FLOWER_SALTED_CREAM 1276
-#define SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL 1277
-#define SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL 1278
-#define SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL 1279
-#define SPECIES_ALCREMIE_RIBBON SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM
-#define SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM 1280
-#define SPECIES_ALCREMIE_RIBBON_RUBY_CREAM 1281
-#define SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM 1282
-#define SPECIES_ALCREMIE_RIBBON_MINT_CREAM 1283
-#define SPECIES_ALCREMIE_RIBBON_LEMON_CREAM 1284
-#define SPECIES_ALCREMIE_RIBBON_SALTED_CREAM 1285
-#define SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL 1286
-#define SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL 1287
-#define SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL 1288
+ // Misc Forms
+ SPECIES_PIKACHU_COSPLAY = 1009,
+ SPECIES_PIKACHU_ROCK_STAR = 1010,
+ SPECIES_PIKACHU_BELLE = 1011,
+ SPECIES_PIKACHU_POP_STAR = 1012,
+ SPECIES_PIKACHU_PHD = 1013,
+ SPECIES_PIKACHU_LIBRE = 1014,
+ SPECIES_PIKACHU_ORIGINAL = 1015,
+ SPECIES_PIKACHU_HOENN = 1016,
+ SPECIES_PIKACHU_SINNOH = 1017,
+ SPECIES_PIKACHU_UNOVA = 1018,
+ SPECIES_PIKACHU_KALOS = 1019,
+ SPECIES_PIKACHU_ALOLA = 1020,
+ SPECIES_PIKACHU_PARTNER = 1021,
+ SPECIES_PIKACHU_WORLD = 1022,
+ SPECIES_PICHU_SPIKY_EARED = 1023,
+ SPECIES_UNOWN_B = 1024,
+ SPECIES_UNOWN_C = 1025,
+ SPECIES_UNOWN_D = 1026,
+ SPECIES_UNOWN_E = 1027,
+ SPECIES_UNOWN_F = 1028,
+ SPECIES_UNOWN_G = 1029,
+ SPECIES_UNOWN_H = 1030,
+ SPECIES_UNOWN_I = 1031,
+ SPECIES_UNOWN_J = 1032,
+ SPECIES_UNOWN_K = 1033,
+ SPECIES_UNOWN_L = 1034,
+ SPECIES_UNOWN_M = 1035,
+ SPECIES_UNOWN_N = 1036,
+ SPECIES_UNOWN_O = 1037,
+ SPECIES_UNOWN_P = 1038,
+ SPECIES_UNOWN_Q = 1039,
+ SPECIES_UNOWN_R = 1040,
+ SPECIES_UNOWN_S = 1041,
+ SPECIES_UNOWN_T = 1042,
+ SPECIES_UNOWN_U = 1043,
+ SPECIES_UNOWN_V = 1044,
+ SPECIES_UNOWN_W = 1045,
+ SPECIES_UNOWN_X = 1046,
+ SPECIES_UNOWN_Y = 1047,
+ SPECIES_UNOWN_Z = 1048,
+ SPECIES_UNOWN_EXCLAMATION = 1049,
+ SPECIES_UNOWN_QUESTION = 1050,
+ SPECIES_CASTFORM_SUNNY = 1051,
+ SPECIES_CASTFORM_RAINY = 1052,
+ SPECIES_CASTFORM_SNOWY = 1053,
+ SPECIES_DEOXYS_ATTACK = 1054,
+ SPECIES_DEOXYS_DEFENSE = 1055,
+ SPECIES_DEOXYS_SPEED = 1056,
+ SPECIES_BURMY_SANDY = 1057,
+ SPECIES_BURMY_TRASH = 1058,
+ SPECIES_WORMADAM_SANDY = 1059,
+ SPECIES_WORMADAM_TRASH = 1060,
+ SPECIES_CHERRIM_SUNSHINE = 1061,
+ SPECIES_SHELLOS_EAST = 1062,
+ SPECIES_GASTRODON_EAST = 1063,
+ SPECIES_ROTOM_HEAT = 1064,
+ SPECIES_ROTOM_WASH = 1065,
+ SPECIES_ROTOM_FROST = 1066,
+ SPECIES_ROTOM_FAN = 1067,
+ SPECIES_ROTOM_MOW = 1068,
+ SPECIES_DIALGA_ORIGIN = 1069,
+ SPECIES_PALKIA_ORIGIN = 1070,
+ SPECIES_GIRATINA_ORIGIN = 1071,
+ SPECIES_SHAYMIN_SKY = 1072,
+ SPECIES_ARCEUS_FIGHTING = 1073,
+ SPECIES_ARCEUS_FLYING = 1074,
+ SPECIES_ARCEUS_POISON = 1075,
+ SPECIES_ARCEUS_GROUND = 1076,
+ SPECIES_ARCEUS_ROCK = 1077,
+ SPECIES_ARCEUS_BUG = 1078,
+ SPECIES_ARCEUS_GHOST = 1079,
+ SPECIES_ARCEUS_STEEL = 1080,
+ SPECIES_ARCEUS_FIRE = 1081,
+ SPECIES_ARCEUS_WATER = 1082,
+ SPECIES_ARCEUS_GRASS = 1083,
+ SPECIES_ARCEUS_ELECTRIC = 1084,
+ SPECIES_ARCEUS_PSYCHIC = 1085,
+ SPECIES_ARCEUS_ICE = 1086,
+ SPECIES_ARCEUS_DRAGON = 1087,
+ SPECIES_ARCEUS_DARK = 1088,
+ SPECIES_ARCEUS_FAIRY = 1089,
+ SPECIES_BASCULIN_BLUE_STRIPED = 1090,
+ SPECIES_BASCULIN_WHITE_STRIPED = 1091,
+ SPECIES_DARMANITAN_ZEN = 1092,
+ SPECIES_DARMANITAN_GALAR_ZEN = 1093,
+ SPECIES_DEERLING_SUMMER = 1094,
+ SPECIES_DEERLING_AUTUMN = 1095,
+ SPECIES_DEERLING_WINTER = 1096,
+ SPECIES_SAWSBUCK_SUMMER = 1097,
+ SPECIES_SAWSBUCK_AUTUMN = 1098,
+ SPECIES_SAWSBUCK_WINTER = 1099,
+ SPECIES_TORNADUS_THERIAN = 1100,
+ SPECIES_THUNDURUS_THERIAN = 1101,
+ SPECIES_LANDORUS_THERIAN = 1102,
+ SPECIES_ENAMORUS_THERIAN = 1103,
+ SPECIES_KYUREM_WHITE = 1104,
+ SPECIES_KYUREM_BLACK = 1105,
+ SPECIES_KELDEO_RESOLUTE = 1106,
+ SPECIES_MELOETTA_PIROUETTE = 1107,
+ SPECIES_GENESECT_DOUSE = 1108,
+ SPECIES_GENESECT_SHOCK = 1109,
+ SPECIES_GENESECT_BURN = 1110,
+ SPECIES_GENESECT_CHILL = 1111,
+ SPECIES_GRENINJA_BOND = 1112,
+ SPECIES_GRENINJA_BATTLE_BOND = SPECIES_GRENINJA_BOND,
+ SPECIES_GRENINJA_ASH = 1113,
+ SPECIES_VIVILLON_POLAR = 1114,
+ SPECIES_VIVILLON_TUNDRA = 1115,
+ SPECIES_VIVILLON_CONTINENTAL = 1116,
+ SPECIES_VIVILLON_GARDEN = 1117,
+ SPECIES_VIVILLON_ELEGANT = 1118,
+ SPECIES_VIVILLON_MEADOW = 1119,
+ SPECIES_VIVILLON_MODERN = 1120,
+ SPECIES_VIVILLON_MARINE = 1121,
+ SPECIES_VIVILLON_ARCHIPELAGO = 1122,
+ SPECIES_VIVILLON_HIGH_PLAINS = 1123,
+ SPECIES_VIVILLON_SANDSTORM = 1124,
+ SPECIES_VIVILLON_RIVER = 1125,
+ SPECIES_VIVILLON_MONSOON = 1126,
+ SPECIES_VIVILLON_SAVANNA = 1127,
+ SPECIES_VIVILLON_SUN = 1128,
+ SPECIES_VIVILLON_OCEAN = 1129,
+ SPECIES_VIVILLON_JUNGLE = 1130,
+ SPECIES_VIVILLON_FANCY = 1131,
+ SPECIES_VIVILLON_POKEBALL = 1132,
+ SPECIES_FLABEBE_YELLOW = 1133,
+ SPECIES_FLABEBE_ORANGE = 1134,
+ SPECIES_FLABEBE_BLUE = 1135,
+ SPECIES_FLABEBE_WHITE = 1136,
+ SPECIES_FLOETTE_YELLOW = 1137,
+ SPECIES_FLOETTE_ORANGE = 1138,
+ SPECIES_FLOETTE_BLUE = 1139,
+ SPECIES_FLOETTE_WHITE = 1140,
+ SPECIES_FLOETTE_ETERNAL = 1141,
+ SPECIES_FLORGES_YELLOW = 1142,
+ SPECIES_FLORGES_ORANGE = 1143,
+ SPECIES_FLORGES_BLUE = 1144,
+ SPECIES_FLORGES_WHITE = 1145,
+ SPECIES_FURFROU_HEART = 1146,
+ SPECIES_FURFROU_STAR = 1147,
+ SPECIES_FURFROU_DIAMOND = 1148,
+ SPECIES_FURFROU_DEBUTANTE = 1149,
+ SPECIES_FURFROU_MATRON = 1150,
+ SPECIES_FURFROU_DANDY = 1151,
+ SPECIES_FURFROU_LA_REINE = 1152,
+ SPECIES_FURFROU_KABUKI = 1153,
+ SPECIES_FURFROU_PHARAOH = 1154,
+ SPECIES_MEOWSTIC_F = 1155,
+ SPECIES_AEGISLASH_BLADE = 1156,
+ SPECIES_PUMPKABOO_SMALL = 1157,
+ SPECIES_PUMPKABOO_LARGE = 1158,
+ SPECIES_PUMPKABOO_SUPER = 1159,
+ SPECIES_GOURGEIST_SMALL = 1160,
+ SPECIES_GOURGEIST_LARGE = 1161,
+ SPECIES_GOURGEIST_SUPER = 1162,
+ SPECIES_XERNEAS_ACTIVE = 1163,
+ SPECIES_ZYGARDE_10_AURA_BREAK = 1164,
+ SPECIES_ZYGARDE_10 = SPECIES_ZYGARDE_10_AURA_BREAK,
+ SPECIES_ZYGARDE_10_POWER_CONSTRUCT = 1165,
+ SPECIES_ZYGARDE_50_POWER_CONSTRUCT = 1166,
+ SPECIES_ZYGARDE_COMPLETE = 1167,
+ SPECIES_HOOPA_UNBOUND = 1168,
+ SPECIES_ORICORIO_POM_POM = 1169,
+ SPECIES_ORICORIO_PAU = 1170,
+ SPECIES_ORICORIO_SENSU = 1171,
+ SPECIES_ROCKRUFF_OWN_TEMPO = 1172,
+ SPECIES_LYCANROC_MIDNIGHT = 1173,
+ SPECIES_LYCANROC_DUSK = 1174,
+ SPECIES_WISHIWASHI_SCHOOL = 1175,
+ SPECIES_SILVALLY_FIGHTING = 1176,
+ SPECIES_SILVALLY_FLYING = 1177,
+ SPECIES_SILVALLY_POISON = 1178,
+ SPECIES_SILVALLY_GROUND = 1179,
+ SPECIES_SILVALLY_ROCK = 1180,
+ SPECIES_SILVALLY_BUG = 1181,
+ SPECIES_SILVALLY_GHOST = 1182,
+ SPECIES_SILVALLY_STEEL = 1183,
+ SPECIES_SILVALLY_FIRE = 1184,
+ SPECIES_SILVALLY_WATER = 1185,
+ SPECIES_SILVALLY_GRASS = 1186,
+ SPECIES_SILVALLY_ELECTRIC = 1187,
+ SPECIES_SILVALLY_PSYCHIC = 1188,
+ SPECIES_SILVALLY_ICE = 1189,
+ SPECIES_SILVALLY_DRAGON = 1190,
+ SPECIES_SILVALLY_DARK = 1191,
+ SPECIES_SILVALLY_FAIRY = 1192,
+ SPECIES_MINIOR_METEOR_ORANGE = 1193,
+ SPECIES_MINIOR_METEOR_YELLOW = 1194,
+ SPECIES_MINIOR_METEOR_GREEN = 1195,
+ SPECIES_MINIOR_METEOR_BLUE = 1196,
+ SPECIES_MINIOR_METEOR_INDIGO = 1197,
+ SPECIES_MINIOR_METEOR_VIOLET = 1198,
+ SPECIES_MINIOR_ORANGE = SPECIES_MINIOR_METEOR_ORANGE,
+ SPECIES_MINIOR_YELLOW = SPECIES_MINIOR_METEOR_YELLOW,
+ SPECIES_MINIOR_GREEN = SPECIES_MINIOR_METEOR_GREEN,
+ SPECIES_MINIOR_BLUE = SPECIES_MINIOR_METEOR_BLUE,
+ SPECIES_MINIOR_INDIGO = SPECIES_MINIOR_METEOR_INDIGO,
+ SPECIES_MINIOR_VIOLET = SPECIES_MINIOR_METEOR_VIOLET,
+ SPECIES_MINIOR_CORE_RED = 1199,
+ SPECIES_MINIOR_CORE = SPECIES_MINIOR_CORE_RED,
+ SPECIES_MINIOR_CORE_ORANGE = 1200,
+ SPECIES_MINIOR_CORE_YELLOW = 1201,
+ SPECIES_MINIOR_CORE_GREEN = 1202,
+ SPECIES_MINIOR_CORE_BLUE = 1203,
+ SPECIES_MINIOR_CORE_INDIGO = 1204,
+ SPECIES_MINIOR_CORE_VIOLET = 1205,
+ SPECIES_MIMIKYU_BUSTED = 1206,
+ SPECIES_NECROZMA_DUSK_MANE = 1207,
+ SPECIES_NECROZMA_DAWN_WINGS = 1208,
+ SPECIES_NECROZMA_ULTRA = 1209,
+ SPECIES_MAGEARNA_ORIGINAL = 1210,
+ SPECIES_CRAMORANT_GULPING = 1211,
+ SPECIES_CRAMORANT_GORGING = 1212,
+ SPECIES_TOXTRICITY_LOW_KEY = 1213,
+ SPECIES_SINISTEA_ANTIQUE = 1214,
+ SPECIES_POLTEAGEIST_ANTIQUE = 1215,
+ SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM = 1216,
+ SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM = 1217,
+ SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM = 1218,
+ SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM = 1219,
+ SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM = 1220,
+ SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL = 1221,
+ SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL = 1222,
+ SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL = 1223,
+ SPECIES_ALCREMIE_RUBY_CREAM = SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM,
+ SPECIES_ALCREMIE_MATCHA_CREAM = SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM,
+ SPECIES_ALCREMIE_MINT_CREAM = SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM,
+ SPECIES_ALCREMIE_LEMON_CREAM = SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM,
+ SPECIES_ALCREMIE_SALTED_CREAM = SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM,
+ SPECIES_ALCREMIE_RUBY_SWIRL = SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL,
+ SPECIES_ALCREMIE_CARAMEL_SWIRL = SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL,
+ SPECIES_ALCREMIE_RAINBOW_SWIRL = SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL,
+ SPECIES_EISCUE_NOICE = 1224,
+ SPECIES_INDEEDEE_F = 1225,
+ SPECIES_MORPEKO_HANGRY = 1226,
+ SPECIES_ZACIAN_CROWNED = 1227,
+ SPECIES_ZAMAZENTA_CROWNED = 1228,
+ SPECIES_ETERNATUS_ETERNAMAX = 1229,
+ SPECIES_URSHIFU_RAPID_STRIKE = 1230,
+ SPECIES_ZARUDE_DADA = 1231,
+ SPECIES_CALYREX_ICE = 1232,
+ SPECIES_CALYREX_SHADOW = 1233,
+ SPECIES_BASCULEGION_F = 1234,
+ SPECIES_ALCREMIE_BERRY_VANILLA_CREAM = 1235,
+ SPECIES_ALCREMIE_BERRY = SPECIES_ALCREMIE_BERRY_VANILLA_CREAM,
+ SPECIES_ALCREMIE_BERRY_RUBY_CREAM = 1236,
+ SPECIES_ALCREMIE_BERRY_MATCHA_CREAM = 1237,
+ SPECIES_ALCREMIE_BERRY_MINT_CREAM = 1238,
+ SPECIES_ALCREMIE_BERRY_LEMON_CREAM = 1239,
+ SPECIES_ALCREMIE_BERRY_SALTED_CREAM = 1240,
+ SPECIES_ALCREMIE_BERRY_RUBY_SWIRL = 1241,
+ SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL = 1242,
+ SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL = 1243,
+ SPECIES_ALCREMIE_LOVE_VANILLA_CREAM = 1244,
+ SPECIES_ALCREMIE_LOVE = SPECIES_ALCREMIE_LOVE_VANILLA_CREAM,
+ SPECIES_ALCREMIE_LOVE_RUBY_CREAM = 1245,
+ SPECIES_ALCREMIE_LOVE_MATCHA_CREAM = 1246,
+ SPECIES_ALCREMIE_LOVE_MINT_CREAM = 1247,
+ SPECIES_ALCREMIE_LOVE_LEMON_CREAM = 1248,
+ SPECIES_ALCREMIE_LOVE_SALTED_CREAM = 1249,
+ SPECIES_ALCREMIE_LOVE_RUBY_SWIRL = 1250,
+ SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL = 1251,
+ SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL = 1252,
+ SPECIES_ALCREMIE_STAR_VANILLA_CREAM = 1253,
+ SPECIES_ALCREMIE_STAR = SPECIES_ALCREMIE_STAR_VANILLA_CREAM,
+ SPECIES_ALCREMIE_STAR_RUBY_CREAM = 1254,
+ SPECIES_ALCREMIE_STAR_MATCHA_CREAM = 1255,
+ SPECIES_ALCREMIE_STAR_MINT_CREAM = 1256,
+ SPECIES_ALCREMIE_STAR_LEMON_CREAM = 1257,
+ SPECIES_ALCREMIE_STAR_SALTED_CREAM = 1258,
+ SPECIES_ALCREMIE_STAR_RUBY_SWIRL = 1259,
+ SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL = 1260,
+ SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL = 1261,
+ SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM = 1262,
+ SPECIES_ALCREMIE_CLOVER = SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM,
+ SPECIES_ALCREMIE_CLOVER_RUBY_CREAM = 1263,
+ SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM = 1264,
+ SPECIES_ALCREMIE_CLOVER_MINT_CREAM = 1265,
+ SPECIES_ALCREMIE_CLOVER_LEMON_CREAM = 1266,
+ SPECIES_ALCREMIE_CLOVER_SALTED_CREAM = 1267,
+ SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL = 1268,
+ SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL = 1269,
+ SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL = 1270,
+ SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM = 1271,
+ SPECIES_ALCREMIE_FLOWER = SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM,
+ SPECIES_ALCREMIE_FLOWER_RUBY_CREAM = 1272,
+ SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM = 1273,
+ SPECIES_ALCREMIE_FLOWER_MINT_CREAM = 1274,
+ SPECIES_ALCREMIE_FLOWER_LEMON_CREAM = 1275,
+ SPECIES_ALCREMIE_FLOWER_SALTED_CREAM = 1276,
+ SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL = 1277,
+ SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL = 1278,
+ SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL = 1279,
+ SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM = 1280,
+ SPECIES_ALCREMIE_RIBBON = SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM,
+ SPECIES_ALCREMIE_RIBBON_RUBY_CREAM = 1281,
+ SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM = 1282,
+ SPECIES_ALCREMIE_RIBBON_MINT_CREAM = 1283,
+ SPECIES_ALCREMIE_RIBBON_LEMON_CREAM = 1284,
+ SPECIES_ALCREMIE_RIBBON_SALTED_CREAM = 1285,
+ SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL = 1286,
+ SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL = 1287,
+ SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL = 1288,
-#define GEN9_START SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL
+ GEN9_START = SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL,
-#define SPECIES_SPRIGATITO 1289
-#define SPECIES_FLORAGATO 1290
-#define SPECIES_MEOWSCARADA 1291
-#define SPECIES_FUECOCO 1292
-#define SPECIES_CROCALOR 1293
-#define SPECIES_SKELEDIRGE 1294
-#define SPECIES_QUAXLY 1295
-#define SPECIES_QUAXWELL 1296
-#define SPECIES_QUAQUAVAL 1297
-#define SPECIES_LECHONK 1298
-#define SPECIES_OINKOLOGNE SPECIES_OINKOLOGNE_M
-#define SPECIES_OINKOLOGNE_M 1299
-#define SPECIES_OINKOLOGNE_F 1300
-#define SPECIES_TAROUNTULA 1301
-#define SPECIES_SPIDOPS 1302
-#define SPECIES_NYMBLE 1303
-#define SPECIES_LOKIX 1304
-#define SPECIES_PAWMI 1305
-#define SPECIES_PAWMO 1306
-#define SPECIES_PAWMOT 1307
-#define SPECIES_TANDEMAUS 1308
-#define SPECIES_MAUSHOLD SPECIES_MAUSHOLD_THREE
-#define SPECIES_MAUSHOLD_THREE 1309
-#define SPECIES_MAUSHOLD_FOUR 1310
-#define SPECIES_FIDOUGH 1311
-#define SPECIES_DACHSBUN 1312
-#define SPECIES_SMOLIV 1313
-#define SPECIES_DOLLIV 1314
-#define SPECIES_ARBOLIVA 1315
-#define SPECIES_SQUAWKABILLY SPECIES_SQUAWKABILLY_GREEN
-#define SPECIES_SQUAWKABILLY_GREEN 1316
-#define SPECIES_SQUAWKABILLY_BLUE 1317
-#define SPECIES_SQUAWKABILLY_YELLOW 1318
-#define SPECIES_SQUAWKABILLY_WHITE 1319
-#define SPECIES_NACLI 1320
-#define SPECIES_NACLSTACK 1321
-#define SPECIES_GARGANACL 1322
-#define SPECIES_CHARCADET 1323
-#define SPECIES_ARMAROUGE 1324
-#define SPECIES_CERULEDGE 1325
-#define SPECIES_TADBULB 1326
-#define SPECIES_BELLIBOLT 1327
-#define SPECIES_WATTREL 1328
-#define SPECIES_KILOWATTREL 1329
-#define SPECIES_MASCHIFF 1330
-#define SPECIES_MABOSSTIFF 1331
-#define SPECIES_SHROODLE 1332
-#define SPECIES_GRAFAIAI 1333
-#define SPECIES_BRAMBLIN 1334
-#define SPECIES_BRAMBLEGHAST 1335
-#define SPECIES_TOEDSCOOL 1336
-#define SPECIES_TOEDSCRUEL 1337
-#define SPECIES_KLAWF 1338
-#define SPECIES_CAPSAKID 1339
-#define SPECIES_SCOVILLAIN 1340
-#define SPECIES_RELLOR 1341
-#define SPECIES_RABSCA 1342
-#define SPECIES_FLITTLE 1343
-#define SPECIES_ESPATHRA 1344
-#define SPECIES_TINKATINK 1345
-#define SPECIES_TINKATUFF 1346
-#define SPECIES_TINKATON 1347
-#define SPECIES_WIGLETT 1348
-#define SPECIES_WUGTRIO 1349
-#define SPECIES_BOMBIRDIER 1350
-#define SPECIES_FINIZEN 1351
-#define SPECIES_PALAFIN SPECIES_PALAFIN_ZERO
-#define SPECIES_PALAFIN_ZERO 1352
-#define SPECIES_PALAFIN_HERO 1353
-#define SPECIES_VAROOM 1354
-#define SPECIES_REVAVROOM 1355
-#define SPECIES_CYCLIZAR 1356
-#define SPECIES_ORTHWORM 1357
-#define SPECIES_GLIMMET 1358
-#define SPECIES_GLIMMORA 1359
-#define SPECIES_GREAVARD 1360
-#define SPECIES_HOUNDSTONE 1361
-#define SPECIES_FLAMIGO 1362
-#define SPECIES_CETODDLE 1363
-#define SPECIES_CETITAN 1364
-#define SPECIES_VELUZA 1365
-#define SPECIES_DONDOZO 1366
-#define SPECIES_TATSUGIRI SPECIES_TATSUGIRI_CURLY
-#define SPECIES_TATSUGIRI_CURLY 1367
-#define SPECIES_TATSUGIRI_DROOPY 1368
-#define SPECIES_TATSUGIRI_STRETCHY 1369
-#define SPECIES_ANNIHILAPE 1370
-#define SPECIES_CLODSIRE 1371
-#define SPECIES_FARIGIRAF 1372
-#define SPECIES_DUDUNSPARCE SPECIES_DUDUNSPARCE_TWO_SEGMENT
-#define SPECIES_DUDUNSPARCE_TWO_SEGMENT 1373
-#define SPECIES_DUDUNSPARCE_THREE_SEGMENT 1374
-#define SPECIES_KINGAMBIT 1375
-#define SPECIES_GREAT_TUSK 1376
-#define SPECIES_SCREAM_TAIL 1377
-#define SPECIES_BRUTE_BONNET 1378
-#define SPECIES_FLUTTER_MANE 1379
-#define SPECIES_SLITHER_WING 1380
-#define SPECIES_SANDY_SHOCKS 1381
-#define SPECIES_IRON_TREADS 1382
-#define SPECIES_IRON_BUNDLE 1383
-#define SPECIES_IRON_HANDS 1384
-#define SPECIES_IRON_JUGULIS 1385
-#define SPECIES_IRON_MOTH 1386
-#define SPECIES_IRON_THORNS 1387
-#define SPECIES_FRIGIBAX 1388
-#define SPECIES_ARCTIBAX 1389
-#define SPECIES_BAXCALIBUR 1390
-#define SPECIES_GIMMIGHOUL SPECIES_GIMMIGHOUL_CHEST
-#define SPECIES_GIMMIGHOUL_CHEST 1391
-#define SPECIES_GIMMIGHOUL_ROAMING 1392
-#define SPECIES_GHOLDENGO 1393
-#define SPECIES_WO_CHIEN 1394
-#define SPECIES_CHIEN_PAO 1395
-#define SPECIES_TING_LU 1396
-#define SPECIES_CHI_YU 1397
-#define SPECIES_ROARING_MOON 1398
-#define SPECIES_IRON_VALIANT 1399
-#define SPECIES_KORAIDON 1400
-#define SPECIES_MIRAIDON 1401
-// Paldean Forms
-#define SPECIES_TAUROS_PALDEA_COMBAT 1402
-#define SPECIES_TAUROS_PALDEA_BLAZE 1403
-#define SPECIES_TAUROS_PALDEA_AQUA 1404
-#define SPECIES_WOOPER_PALDEA 1405
-// Scarlet and Violet 1.2.0
-#define SPECIES_WALKING_WAKE 1406
-#define SPECIES_IRON_LEAVES 1407
-// Teal Mask
-#define SPECIES_DIPPLIN 1408
-#define SPECIES_POLTCHAGEIST SPECIES_POLTCHAGEIST_COUNTERFEIT
-#define SPECIES_POLTCHAGEIST_COUNTERFEIT 1409
-#define SPECIES_POLTCHAGEIST_ARTISAN 1410
-#define SPECIES_SINISTCHA SPECIES_SINISTCHA_UNREMARKABLE
-#define SPECIES_SINISTCHA_UNREMARKABLE 1411
-#define SPECIES_SINISTCHA_MASTERPIECE 1412
-#define SPECIES_OKIDOGI 1413
-#define SPECIES_MUNKIDORI 1414
-#define SPECIES_FEZANDIPITI 1415
-#define SPECIES_OGERPON SPECIES_OGERPON_TEAL
-#define SPECIES_OGERPON_TEAL 1416
-#define SPECIES_OGERPON_WELLSPRING 1417
-#define SPECIES_OGERPON_HEARTHFLAME 1418
-#define SPECIES_OGERPON_CORNERSTONE 1419
-#define SPECIES_OGERPON_TEAL_TERA 1420
-#define SPECIES_OGERPON_WELLSPRING_TERA 1421
-#define SPECIES_OGERPON_HEARTHFLAME_TERA 1422
-#define SPECIES_OGERPON_CORNERSTONE_TERA 1423
-#define SPECIES_URSALUNA_BLOODMOON 1424
-// Indigo Disk
-#define SPECIES_ARCHALUDON 1425
-#define SPECIES_HYDRAPPLE 1426
-#define SPECIES_GOUGING_FIRE 1427
-#define SPECIES_RAGING_BOLT 1428
-#define SPECIES_IRON_BOULDER 1429
-#define SPECIES_IRON_CROWN 1430
-#define SPECIES_TERAPAGOS SPECIES_TERAPAGOS_NORMAL
-#define SPECIES_TERAPAGOS_NORMAL 1431
-#define SPECIES_TERAPAGOS_TERASTAL 1432
-#define SPECIES_TERAPAGOS_STELLAR 1433
-#define SPECIES_PECHARUNT 1434
-#define SPECIES_LUGIA_SHADOW 1435
-#define SPECIES_MOTHIM_SANDY 1436
-#define SPECIES_MOTHIM_TRASH 1437
-#define SPECIES_SCATTERBUG_POLAR 1438
-#define SPECIES_SCATTERBUG_TUNDRA 1439
-#define SPECIES_SCATTERBUG_CONTINENTAL 1440
-#define SPECIES_SCATTERBUG_GARDEN 1441
-#define SPECIES_SCATTERBUG_ELEGANT 1442
-#define SPECIES_SCATTERBUG_MEADOW 1443
-#define SPECIES_SCATTERBUG_MODERN 1444
-#define SPECIES_SCATTERBUG_MARINE 1445
-#define SPECIES_SCATTERBUG_ARCHIPELAGO 1446
-#define SPECIES_SCATTERBUG_HIGH_PLAINS 1447
-#define SPECIES_SCATTERBUG_SANDSTORM 1448
-#define SPECIES_SCATTERBUG_RIVER 1449
-#define SPECIES_SCATTERBUG_MONSOON 1450
-#define SPECIES_SCATTERBUG_SAVANNA 1451
-#define SPECIES_SCATTERBUG_SUN 1452
-#define SPECIES_SCATTERBUG_OCEAN 1453
-#define SPECIES_SCATTERBUG_JUNGLE 1454
-#define SPECIES_SCATTERBUG_FANCY 1455
-#define SPECIES_SCATTERBUG_POKEBALL 1456
-#define SPECIES_SPEWPA_POLAR 1457
-#define SPECIES_SPEWPA_TUNDRA 1458
-#define SPECIES_SPEWPA_CONTINENTAL 1459
-#define SPECIES_SPEWPA_GARDEN 1460
-#define SPECIES_SPEWPA_ELEGANT 1461
-#define SPECIES_SPEWPA_MEADOW 1462
-#define SPECIES_SPEWPA_MODERN 1463
-#define SPECIES_SPEWPA_MARINE 1464
-#define SPECIES_SPEWPA_ARCHIPELAGO 1465
-#define SPECIES_SPEWPA_HIGH_PLAINS 1466
-#define SPECIES_SPEWPA_SANDSTORM 1467
-#define SPECIES_SPEWPA_RIVER 1468
-#define SPECIES_SPEWPA_MONSOON 1469
-#define SPECIES_SPEWPA_SAVANNA 1470
-#define SPECIES_SPEWPA_SUN 1471
-#define SPECIES_SPEWPA_OCEAN 1472
-#define SPECIES_SPEWPA_JUNGLE 1473
-#define SPECIES_SPEWPA_FANCY 1474
-#define SPECIES_SPEWPA_POKEBALL 1475
-#define SPECIES_RATICATE_ALOLA_TOTEM 1476
-#define SPECIES_GUMSHOOS_TOTEM 1477
-#define SPECIES_VIKAVOLT_TOTEM 1478
-#define SPECIES_LURANTIS_TOTEM 1479
-#define SPECIES_SALAZZLE_TOTEM 1480
-#define SPECIES_MIMIKYU_TOTEM SPECIES_MIMIKYU_TOTEM_DISGUISED
-#define SPECIES_MIMIKYU_TOTEM_DISGUISED 1481
-#define SPECIES_KOMMO_O_TOTEM 1482
-#define SPECIES_MAROWAK_ALOLA_TOTEM 1483
-#define SPECIES_RIBOMBEE_TOTEM 1484
-#define SPECIES_ARAQUANID_TOTEM 1485
-#define SPECIES_TOGEDEMARU_TOTEM 1486
-#define SPECIES_PIKACHU_STARTER 1487
-#define SPECIES_EEVEE_STARTER 1488
-#define SPECIES_VENUSAUR_GMAX 1489
-#define SPECIES_BLASTOISE_GMAX 1490
-#define SPECIES_CHARIZARD_GMAX 1491
-#define SPECIES_BUTTERFREE_GMAX 1492
-#define SPECIES_PIKACHU_GMAX 1493
-#define SPECIES_MEOWTH_GMAX 1494
-#define SPECIES_MACHAMP_GMAX 1495
-#define SPECIES_GENGAR_GMAX 1496
-#define SPECIES_KINGLER_GMAX 1497
-#define SPECIES_LAPRAS_GMAX 1498
-#define SPECIES_EEVEE_GMAX 1499
-#define SPECIES_SNORLAX_GMAX 1500
-#define SPECIES_GARBODOR_GMAX 1501
-#define SPECIES_MELMETAL_GMAX 1502
-#define SPECIES_RILLABOOM_GMAX 1503
-#define SPECIES_CINDERACE_GMAX 1504
-#define SPECIES_INTELEON_GMAX 1505
-#define SPECIES_CORVIKNIGHT_GMAX 1506
-#define SPECIES_ORBEETLE_GMAX 1507
-#define SPECIES_DREDNAW_GMAX 1508
-#define SPECIES_COALOSSAL_GMAX 1509
-#define SPECIES_FLAPPLE_GMAX 1510
-#define SPECIES_APPLETUN_GMAX 1511
-#define SPECIES_SANDACONDA_GMAX 1512
-#define SPECIES_TOXTRICITY_AMPED_GMAX 1513
-#define SPECIES_TOXTRICITY_LOW_KEY_GMAX 1514
-#define SPECIES_CENTISKORCH_GMAX 1515
-#define SPECIES_HATTERENE_GMAX 1516
-#define SPECIES_GRIMMSNARL_GMAX 1517
-#define SPECIES_ALCREMIE_GMAX 1518
-#define SPECIES_COPPERAJAH_GMAX 1519
-#define SPECIES_DURALUDON_GMAX 1520
-#define SPECIES_URSHIFU_SINGLE_STRIKE_GMAX 1521
-#define SPECIES_URSHIFU_GMAX SPECIES_URSHIFU_SINGLE_STRIKE_GMAX
-#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GMAX SPECIES_URSHIFU_SINGLE_STRIKE_GMAX
-#define SPECIES_URSHIFU_RAPID_STRIKE_GMAX 1522
-#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX SPECIES_URSHIFU_RAPID_STRIKE_GMAX
-#define SPECIES_MIMIKYU_BUSTED_TOTEM 1523
-#define SPECIES_MIMIKYU_TOTEM_BUSTED SPECIES_MIMIKYU_BUSTED_TOTEM
-// Legends Z-A
-#define SPECIES_CLEFABLE_MEGA 1524
-#define SPECIES_VICTREEBEL_MEGA 1525
-#define SPECIES_STARMIE_MEGA 1526
-#define SPECIES_DRAGONITE_MEGA 1527
-#define SPECIES_MEGANIUM_MEGA 1528
-#define SPECIES_FERALIGATR_MEGA 1529
-#define SPECIES_SKARMORY_MEGA 1530
-#define SPECIES_FROSLASS_MEGA 1531
-#define SPECIES_EMBOAR_MEGA 1532
-#define SPECIES_EXCADRILL_MEGA 1533
-#define SPECIES_SCOLIPEDE_MEGA 1534
-#define SPECIES_SCRAFTY_MEGA 1535
-#define SPECIES_EELEKTROSS_MEGA 1536
-#define SPECIES_CHANDELURE_MEGA 1537
-#define SPECIES_CHESNAUGHT_MEGA 1538
-#define SPECIES_DELPHOX_MEGA 1539
-#define SPECIES_GRENINJA_MEGA 1540
-#define SPECIES_PYROAR_MEGA 1541
-#define SPECIES_MALAMAR_MEGA 1542
-#define SPECIES_DRAGALGE_MEGA 1543
-#define SPECIES_HAWLUCHA_MEGA 1544
-#define SPECIES_FLOETTE_MEGA 1545
-#define SPECIES_BARBARACLE_MEGA 1546
-#define SPECIES_ZYGARDE_MEGA 1547
-#define SPECIES_DRAMPA_MEGA 1548
-#define SPECIES_FALINKS_MEGA 1549
-#define SPECIES_HEATRAN_MEGA 1550
-#define SPECIES_DARKRAI_MEGA 1551
-#define SPECIES_ZERAORA_MEGA 1552
-#define SPECIES_RAICHU_MEGA_X 1553
-#define SPECIES_RAICHU_MEGA_Y 1554
-#define SPECIES_CHIMECHO_MEGA 1555
-#define SPECIES_ABSOL_MEGA_Z 1556
-#define SPECIES_STARAPTOR_MEGA 1557
-#define SPECIES_GARCHOMP_MEGA_Z 1558
-#define SPECIES_LUCARIO_MEGA_Z 1559
-#define SPECIES_GOLURK_MEGA 1560
-#define SPECIES_MEOWSTIC_M_MEGA 1561
-#define SPECIES_MEOWSTIC_F_MEGA 1562
-#define SPECIES_CRABOMINABLE_MEGA 1563
-#define SPECIES_GOLISOPOD_MEGA 1564
-#define SPECIES_MAGEARNA_MEGA 1565
-#define SPECIES_MAGEARNA_ORIGINAL_MEGA 1566
-#define SPECIES_SCOVILLAIN_MEGA 1567
-#define SPECIES_BAXCALIBUR_MEGA 1568
-#define SPECIES_TATSUGIRI_CURLY_MEGA 1569
-#define SPECIES_TATSUGIRI_DROOPY_MEGA 1570
-#define SPECIES_TATSUGIRI_STRETCHY_MEGA 1571
-#define SPECIES_GLIMMORA_MEGA 1572
+ SPECIES_SPRIGATITO = 1289,
+ SPECIES_FLORAGATO = 1290,
+ SPECIES_MEOWSCARADA = 1291,
+ SPECIES_FUECOCO = 1292,
+ SPECIES_CROCALOR = 1293,
+ SPECIES_SKELEDIRGE = 1294,
+ SPECIES_QUAXLY = 1295,
+ SPECIES_QUAXWELL = 1296,
+ SPECIES_QUAQUAVAL = 1297,
+ SPECIES_LECHONK = 1298,
+ SPECIES_OINKOLOGNE_M = 1299,
+ SPECIES_OINKOLOGNE = SPECIES_OINKOLOGNE_M,
+ SPECIES_OINKOLOGNE_F = 1300,
+ SPECIES_TAROUNTULA = 1301,
+ SPECIES_SPIDOPS = 1302,
+ SPECIES_NYMBLE = 1303,
+ SPECIES_LOKIX = 1304,
+ SPECIES_PAWMI = 1305,
+ SPECIES_PAWMO = 1306,
+ SPECIES_PAWMOT = 1307,
+ SPECIES_TANDEMAUS = 1308,
+ SPECIES_MAUSHOLD_THREE = 1309,
+ SPECIES_MAUSHOLD = SPECIES_MAUSHOLD_THREE,
+ SPECIES_MAUSHOLD_FOUR = 1310,
+ SPECIES_FIDOUGH = 1311,
+ SPECIES_DACHSBUN = 1312,
+ SPECIES_SMOLIV = 1313,
+ SPECIES_DOLLIV = 1314,
+ SPECIES_ARBOLIVA = 1315,
+ SPECIES_SQUAWKABILLY_GREEN = 1316,
+ SPECIES_SQUAWKABILLY = SPECIES_SQUAWKABILLY_GREEN,
+ SPECIES_SQUAWKABILLY_BLUE = 1317,
+ SPECIES_SQUAWKABILLY_YELLOW = 1318,
+ SPECIES_SQUAWKABILLY_WHITE = 1319,
+ SPECIES_NACLI = 1320,
+ SPECIES_NACLSTACK = 1321,
+ SPECIES_GARGANACL = 1322,
+ SPECIES_CHARCADET = 1323,
+ SPECIES_ARMAROUGE = 1324,
+ SPECIES_CERULEDGE = 1325,
+ SPECIES_TADBULB = 1326,
+ SPECIES_BELLIBOLT = 1327,
+ SPECIES_WATTREL = 1328,
+ SPECIES_KILOWATTREL = 1329,
+ SPECIES_MASCHIFF = 1330,
+ SPECIES_MABOSSTIFF = 1331,
+ SPECIES_SHROODLE = 1332,
+ SPECIES_GRAFAIAI = 1333,
+ SPECIES_BRAMBLIN = 1334,
+ SPECIES_BRAMBLEGHAST = 1335,
+ SPECIES_TOEDSCOOL = 1336,
+ SPECIES_TOEDSCRUEL = 1337,
+ SPECIES_KLAWF = 1338,
+ SPECIES_CAPSAKID = 1339,
+ SPECIES_SCOVILLAIN = 1340,
+ SPECIES_RELLOR = 1341,
+ SPECIES_RABSCA = 1342,
+ SPECIES_FLITTLE = 1343,
+ SPECIES_ESPATHRA = 1344,
+ SPECIES_TINKATINK = 1345,
+ SPECIES_TINKATUFF = 1346,
+ SPECIES_TINKATON = 1347,
+ SPECIES_WIGLETT = 1348,
+ SPECIES_WUGTRIO = 1349,
+ SPECIES_BOMBIRDIER = 1350,
+ SPECIES_FINIZEN = 1351,
+ SPECIES_PALAFIN_ZERO = 1352,
+ SPECIES_PALAFIN = SPECIES_PALAFIN_ZERO,
+ SPECIES_PALAFIN_HERO = 1353,
+ SPECIES_VAROOM = 1354,
+ SPECIES_REVAVROOM = 1355,
+ SPECIES_CYCLIZAR = 1356,
+ SPECIES_ORTHWORM = 1357,
+ SPECIES_GLIMMET = 1358,
+ SPECIES_GLIMMORA = 1359,
+ SPECIES_GREAVARD = 1360,
+ SPECIES_HOUNDSTONE = 1361,
+ SPECIES_FLAMIGO = 1362,
+ SPECIES_CETODDLE = 1363,
+ SPECIES_CETITAN = 1364,
+ SPECIES_VELUZA = 1365,
+ SPECIES_DONDOZO = 1366,
+ SPECIES_TATSUGIRI_CURLY = 1367,
+ SPECIES_TATSUGIRI = SPECIES_TATSUGIRI_CURLY,
+ SPECIES_TATSUGIRI_DROOPY = 1368,
+ SPECIES_TATSUGIRI_STRETCHY = 1369,
+ SPECIES_ANNIHILAPE = 1370,
+ SPECIES_CLODSIRE = 1371,
+ SPECIES_FARIGIRAF = 1372,
+ SPECIES_DUDUNSPARCE_TWO_SEGMENT = 1373,
+ SPECIES_DUDUNSPARCE = SPECIES_DUDUNSPARCE_TWO_SEGMENT,
+ SPECIES_DUDUNSPARCE_THREE_SEGMENT = 1374,
+ SPECIES_KINGAMBIT = 1375,
+ SPECIES_GREAT_TUSK = 1376,
+ SPECIES_SCREAM_TAIL = 1377,
+ SPECIES_BRUTE_BONNET = 1378,
+ SPECIES_FLUTTER_MANE = 1379,
+ SPECIES_SLITHER_WING = 1380,
+ SPECIES_SANDY_SHOCKS = 1381,
+ SPECIES_IRON_TREADS = 1382,
+ SPECIES_IRON_BUNDLE = 1383,
+ SPECIES_IRON_HANDS = 1384,
+ SPECIES_IRON_JUGULIS = 1385,
+ SPECIES_IRON_MOTH = 1386,
+ SPECIES_IRON_THORNS = 1387,
+ SPECIES_FRIGIBAX = 1388,
+ SPECIES_ARCTIBAX = 1389,
+ SPECIES_BAXCALIBUR = 1390,
+ SPECIES_GIMMIGHOUL_CHEST = 1391,
+ SPECIES_GIMMIGHOUL = SPECIES_GIMMIGHOUL_CHEST,
+ SPECIES_GIMMIGHOUL_ROAMING = 1392,
+ SPECIES_GHOLDENGO = 1393,
+ SPECIES_WO_CHIEN = 1394,
+ SPECIES_CHIEN_PAO = 1395,
+ SPECIES_TING_LU = 1396,
+ SPECIES_CHI_YU = 1397,
+ SPECIES_ROARING_MOON = 1398,
+ SPECIES_IRON_VALIANT = 1399,
+ SPECIES_KORAIDON = 1400,
+ SPECIES_MIRAIDON = 1401,
+ // Paldean Forms
+ SPECIES_TAUROS_PALDEA_COMBAT = 1402,
+ SPECIES_TAUROS_PALDEA_BLAZE = 1403,
+ SPECIES_TAUROS_PALDEA_AQUA = 1404,
+ SPECIES_WOOPER_PALDEA = 1405,
+ // Scarlet and Violet 1.2.0
+ SPECIES_WALKING_WAKE = 1406,
+ SPECIES_IRON_LEAVES = 1407,
+ // Teal Mask
+ SPECIES_DIPPLIN = 1408,
+ SPECIES_POLTCHAGEIST_COUNTERFEIT = 1409,
+ SPECIES_POLTCHAGEIST = SPECIES_POLTCHAGEIST_COUNTERFEIT,
+ SPECIES_POLTCHAGEIST_ARTISAN = 1410,
+ SPECIES_SINISTCHA_UNREMARKABLE = 1411,
+ SPECIES_SINISTCHA = SPECIES_SINISTCHA_UNREMARKABLE,
+ SPECIES_SINISTCHA_MASTERPIECE = 1412,
+ SPECIES_OKIDOGI = 1413,
+ SPECIES_MUNKIDORI = 1414,
+ SPECIES_FEZANDIPITI = 1415,
+ SPECIES_OGERPON_TEAL = 1416,
+ SPECIES_OGERPON = SPECIES_OGERPON_TEAL,
+ SPECIES_OGERPON_WELLSPRING = 1417,
+ SPECIES_OGERPON_HEARTHFLAME = 1418,
+ SPECIES_OGERPON_CORNERSTONE = 1419,
+ SPECIES_OGERPON_TEAL_TERA = 1420,
+ SPECIES_OGERPON_WELLSPRING_TERA = 1421,
+ SPECIES_OGERPON_HEARTHFLAME_TERA = 1422,
+ SPECIES_OGERPON_CORNERSTONE_TERA = 1423,
+ SPECIES_URSALUNA_BLOODMOON = 1424,
+ // Indigo Disk
+ SPECIES_ARCHALUDON = 1425,
+ SPECIES_HYDRAPPLE = 1426,
+ SPECIES_GOUGING_FIRE = 1427,
+ SPECIES_RAGING_BOLT = 1428,
+ SPECIES_IRON_BOULDER = 1429,
+ SPECIES_IRON_CROWN = 1430,
+ SPECIES_TERAPAGOS_NORMAL = 1431,
+ SPECIES_TERAPAGOS = SPECIES_TERAPAGOS_NORMAL,
+ SPECIES_TERAPAGOS_TERASTAL = 1432,
+ SPECIES_TERAPAGOS_STELLAR = 1433,
+ SPECIES_PECHARUNT = 1434,
+ SPECIES_LUGIA_SHADOW = 1435,
+ SPECIES_MOTHIM_SANDY = 1436,
+ SPECIES_MOTHIM_TRASH = 1437,
+ SPECIES_SCATTERBUG_POLAR = 1438,
+ SPECIES_SCATTERBUG_TUNDRA = 1439,
+ SPECIES_SCATTERBUG_CONTINENTAL = 1440,
+ SPECIES_SCATTERBUG_GARDEN = 1441,
+ SPECIES_SCATTERBUG_ELEGANT = 1442,
+ SPECIES_SCATTERBUG_MEADOW = 1443,
+ SPECIES_SCATTERBUG_MODERN = 1444,
+ SPECIES_SCATTERBUG_MARINE = 1445,
+ SPECIES_SCATTERBUG_ARCHIPELAGO = 1446,
+ SPECIES_SCATTERBUG_HIGH_PLAINS = 1447,
+ SPECIES_SCATTERBUG_SANDSTORM = 1448,
+ SPECIES_SCATTERBUG_RIVER = 1449,
+ SPECIES_SCATTERBUG_MONSOON = 1450,
+ SPECIES_SCATTERBUG_SAVANNA = 1451,
+ SPECIES_SCATTERBUG_SUN = 1452,
+ SPECIES_SCATTERBUG_OCEAN = 1453,
+ SPECIES_SCATTERBUG_JUNGLE = 1454,
+ SPECIES_SCATTERBUG_FANCY = 1455,
+ SPECIES_SCATTERBUG_POKEBALL = 1456,
+ SPECIES_SPEWPA_POLAR = 1457,
+ SPECIES_SPEWPA_TUNDRA = 1458,
+ SPECIES_SPEWPA_CONTINENTAL = 1459,
+ SPECIES_SPEWPA_GARDEN = 1460,
+ SPECIES_SPEWPA_ELEGANT = 1461,
+ SPECIES_SPEWPA_MEADOW = 1462,
+ SPECIES_SPEWPA_MODERN = 1463,
+ SPECIES_SPEWPA_MARINE = 1464,
+ SPECIES_SPEWPA_ARCHIPELAGO = 1465,
+ SPECIES_SPEWPA_HIGH_PLAINS = 1466,
+ SPECIES_SPEWPA_SANDSTORM = 1467,
+ SPECIES_SPEWPA_RIVER = 1468,
+ SPECIES_SPEWPA_MONSOON = 1469,
+ SPECIES_SPEWPA_SAVANNA = 1470,
+ SPECIES_SPEWPA_SUN = 1471,
+ SPECIES_SPEWPA_OCEAN = 1472,
+ SPECIES_SPEWPA_JUNGLE = 1473,
+ SPECIES_SPEWPA_FANCY = 1474,
+ SPECIES_SPEWPA_POKEBALL = 1475,
+ SPECIES_RATICATE_ALOLA_TOTEM = 1476,
+ SPECIES_GUMSHOOS_TOTEM = 1477,
+ SPECIES_VIKAVOLT_TOTEM = 1478,
+ SPECIES_LURANTIS_TOTEM = 1479,
+ SPECIES_SALAZZLE_TOTEM = 1480,
+ SPECIES_MIMIKYU_TOTEM_DISGUISED = 1481,
+ SPECIES_MIMIKYU_TOTEM = SPECIES_MIMIKYU_TOTEM_DISGUISED,
+ SPECIES_KOMMO_O_TOTEM = 1482,
+ SPECIES_MAROWAK_ALOLA_TOTEM = 1483,
+ SPECIES_RIBOMBEE_TOTEM = 1484,
+ SPECIES_ARAQUANID_TOTEM = 1485,
+ SPECIES_TOGEDEMARU_TOTEM = 1486,
+ SPECIES_PIKACHU_STARTER = 1487,
+ SPECIES_EEVEE_STARTER = 1488,
+ SPECIES_VENUSAUR_GMAX = 1489,
+ SPECIES_BLASTOISE_GMAX = 1490,
+ SPECIES_CHARIZARD_GMAX = 1491,
+ SPECIES_BUTTERFREE_GMAX = 1492,
+ SPECIES_PIKACHU_GMAX = 1493,
+ SPECIES_MEOWTH_GMAX = 1494,
+ SPECIES_MACHAMP_GMAX = 1495,
+ SPECIES_GENGAR_GMAX = 1496,
+ SPECIES_KINGLER_GMAX = 1497,
+ SPECIES_LAPRAS_GMAX = 1498,
+ SPECIES_EEVEE_GMAX = 1499,
+ SPECIES_SNORLAX_GMAX = 1500,
+ SPECIES_GARBODOR_GMAX = 1501,
+ SPECIES_MELMETAL_GMAX = 1502,
+ SPECIES_RILLABOOM_GMAX = 1503,
+ SPECIES_CINDERACE_GMAX = 1504,
+ SPECIES_INTELEON_GMAX = 1505,
+ SPECIES_CORVIKNIGHT_GMAX = 1506,
+ SPECIES_ORBEETLE_GMAX = 1507,
+ SPECIES_DREDNAW_GMAX = 1508,
+ SPECIES_COALOSSAL_GMAX = 1509,
+ SPECIES_FLAPPLE_GMAX = 1510,
+ SPECIES_APPLETUN_GMAX = 1511,
+ SPECIES_SANDACONDA_GMAX = 1512,
+ SPECIES_TOXTRICITY_AMPED_GMAX = 1513,
+ SPECIES_TOXTRICITY_LOW_KEY_GMAX = 1514,
+ SPECIES_CENTISKORCH_GMAX = 1515,
+ SPECIES_HATTERENE_GMAX = 1516,
+ SPECIES_GRIMMSNARL_GMAX = 1517,
+ SPECIES_ALCREMIE_GMAX = 1518,
+ SPECIES_COPPERAJAH_GMAX = 1519,
+ SPECIES_DURALUDON_GMAX = 1520,
+ SPECIES_URSHIFU_SINGLE_STRIKE_GMAX = 1521,
+ SPECIES_URSHIFU_GMAX = SPECIES_URSHIFU_SINGLE_STRIKE_GMAX,
+ SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GMAX = SPECIES_URSHIFU_SINGLE_STRIKE_GMAX,
+ SPECIES_URSHIFU_RAPID_STRIKE_GMAX = 1522,
+ SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX = SPECIES_URSHIFU_RAPID_STRIKE_GMAX,
+ SPECIES_MIMIKYU_BUSTED_TOTEM = 1523,
+ SPECIES_MIMIKYU_TOTEM_BUSTED = SPECIES_MIMIKYU_BUSTED_TOTEM,
+ // Legends Z-A
+ SPECIES_CLEFABLE_MEGA = 1524,
+ SPECIES_VICTREEBEL_MEGA = 1525,
+ SPECIES_STARMIE_MEGA = 1526,
+ SPECIES_DRAGONITE_MEGA = 1527,
+ SPECIES_MEGANIUM_MEGA = 1528,
+ SPECIES_FERALIGATR_MEGA = 1529,
+ SPECIES_SKARMORY_MEGA = 1530,
+ SPECIES_FROSLASS_MEGA = 1531,
+ SPECIES_EMBOAR_MEGA = 1532,
+ SPECIES_EXCADRILL_MEGA = 1533,
+ SPECIES_SCOLIPEDE_MEGA = 1534,
+ SPECIES_SCRAFTY_MEGA = 1535,
+ SPECIES_EELEKTROSS_MEGA = 1536,
+ SPECIES_CHANDELURE_MEGA = 1537,
+ SPECIES_CHESNAUGHT_MEGA = 1538,
+ SPECIES_DELPHOX_MEGA = 1539,
+ SPECIES_GRENINJA_MEGA = 1540,
+ SPECIES_PYROAR_MEGA = 1541,
+ SPECIES_MALAMAR_MEGA = 1542,
+ SPECIES_DRAGALGE_MEGA = 1543,
+ SPECIES_HAWLUCHA_MEGA = 1544,
+ SPECIES_FLOETTE_MEGA = 1545,
+ SPECIES_BARBARACLE_MEGA = 1546,
+ SPECIES_ZYGARDE_MEGA = 1547,
+ SPECIES_DRAMPA_MEGA = 1548,
+ SPECIES_FALINKS_MEGA = 1549,
+ SPECIES_HEATRAN_MEGA = 1550,
+ SPECIES_DARKRAI_MEGA = 1551,
+ SPECIES_ZERAORA_MEGA = 1552,
+ SPECIES_RAICHU_MEGA_X = 1553,
+ SPECIES_RAICHU_MEGA_Y = 1554,
+ SPECIES_CHIMECHO_MEGA = 1555,
+ SPECIES_ABSOL_MEGA_Z = 1556,
+ SPECIES_STARAPTOR_MEGA = 1557,
+ SPECIES_GARCHOMP_MEGA_Z = 1558,
+ SPECIES_LUCARIO_MEGA_Z = 1559,
+ SPECIES_GOLURK_MEGA = 1560,
+ SPECIES_MEOWSTIC_M_MEGA = 1561,
+ SPECIES_MEOWSTIC_F_MEGA = 1562,
+ SPECIES_CRABOMINABLE_MEGA = 1563,
+ SPECIES_GOLISOPOD_MEGA = 1564,
+ SPECIES_MAGEARNA_MEGA = 1565,
+ SPECIES_MAGEARNA_ORIGINAL_MEGA = 1566,
+ SPECIES_SCOVILLAIN_MEGA = 1567,
+ SPECIES_BAXCALIBUR_MEGA = 1568,
+ SPECIES_TATSUGIRI_CURLY_MEGA = 1569,
+ SPECIES_TATSUGIRI_DROOPY_MEGA = 1570,
+ SPECIES_TATSUGIRI_STRETCHY_MEGA = 1571,
+ SPECIES_GLIMMORA_MEGA = 1572,
-#define SPECIES_EGG (SPECIES_GLIMMORA_MEGA + 1)
+ SPECIES_CUSTOM_START = SPECIES_GLIMMORA_MEGA,
+ // Add any custom species between here and SPECIES_CUSTOM_END
+ SPECIES_CUSTOM_END,
-#define NUM_SPECIES SPECIES_EGG
+ SPECIES_EGG = SPECIES_CUSTOM_END,
+ NUM_SPECIES = SPECIES_EGG,
+};
#define SPECIES_SHINY_TAG 5000
diff --git a/include/contest.h b/include/contest.h
index 26fe485cb3..ba04942620 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -87,7 +87,7 @@ enum {
struct ContestPokemon
{
- u16 species;
+ enum Species species;
u8 nickname[POKEMON_NAME_LENGTH + 1];
u8 trainerName[PLAYER_NAME_LENGTH + 1];
u8 trainerGfxId;
@@ -124,8 +124,8 @@ struct ContestTempSave
struct ContestMoveAnimData
{
- u16 species;
- u16 targetSpecies;
+ enum Species species;
+ enum Species targetSpecies;
bool8 hasTargetAnim:1;
u8 isShiny:1;
u8 targetIsShiny:1;
@@ -355,7 +355,7 @@ void SetContestants(enum ContestCategories contestType, u8 rank);
void SetLinkAIContestants(enum ContestCategories contestType, u8 rank, bool32 isPostgame);
u8 GetContestEntryEligibility(struct Pokemon *pkmn);
void CalculateRound1Points(enum ContestCategories contestCategory);
-bool8 IsSpeciesNotUnown(u16 species);
+bool8 IsSpeciesNotUnown(enum Species species);
bool8 Contest_IsMonsTurnDisabled(u8 contestant);
void SaveLinkContestResults(void);
void SortContestants(bool8 useRanking);
diff --git a/include/data.h b/include/data.h
index 7719b58823..9f109c98bb 100644
--- a/include/data.h
+++ b/include/data.h
@@ -63,8 +63,8 @@ struct TrainerMon
const u8 *ev;
u32 iv;
enum Move moves[MAX_MON_MOVES];
- u16 species;
- u16 heldItem;
+ enum Species species;
+ enum Item heldItem;
enum Ability ability;
u8 lvl;
enum PokeBall ball:8;
@@ -228,7 +228,7 @@ extern const struct FollowerMsgInfo gFollowerPoisonedMessages[];
static inline bool8 IsPartnerTrainerId(u16 trainerId)
{
- if (trainerId >= TRAINER_PARTNER(PARTNER_NONE) && trainerId < TRAINER_PARTNER(PARTNER_COUNT))
+ if (trainerId > TRAINER_PARTNER(PARTNER_NONE) && trainerId < TRAINER_PARTNER(PARTNER_COUNT))
return TRUE;
return FALSE;
}
@@ -256,12 +256,17 @@ static inline const struct Trainer *GetTrainerStructFromId(u16 trainerId)
u32 sanitizedTrainerId = 0;
if (gIsDebugBattle) return GetDebugAiTrainer();
sanitizedTrainerId = SanitizeTrainerId(trainerId);
- enum DifficultyLevel difficulty = GetTrainerDifficultyLevel(sanitizedTrainerId);
if (IsPartnerTrainerId(trainerId))
+ {
+ enum DifficultyLevel difficulty = GetBattlePartnerDifficultyLevel(sanitizedTrainerId);
return &gBattlePartners[difficulty][sanitizedTrainerId - TRAINER_PARTNER(PARTNER_NONE)];
+ }
else
+ {
+ enum DifficultyLevel difficulty = GetTrainerDifficultyLevel(sanitizedTrainerId);
return &gTrainers[difficulty][sanitizedTrainerId];
+ }
}
static inline const enum TrainerClassID GetTrainerClassFromId(u16 trainerId)
diff --git a/include/daycare.h b/include/daycare.h
index da473911b8..214e02bf86 100644
--- a/include/daycare.h
+++ b/include/daycare.h
@@ -2,6 +2,7 @@
#define GUARD_DAYCARE_H
#include "constants/daycare.h"
+#include "constants/species.h"
struct RecordMixingDaycareMail
{
@@ -21,10 +22,10 @@ void GetDaycareCost(void);
u8 GetNumLevelsGainedFromDaycare(void);
void TriggerPendingDaycareEgg(void);
void RejectEggFromDayCare(void);
-void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation);
+void CreateEgg(struct Pokemon *mon, enum Species species, bool8 setHotSpringsLocation);
void GiveEggFromDaycare(void);
bool8 ShouldEggHatch(void);
-u16 GetSelectedMonNicknameAndSpecies(void);
+enum Species GetSelectedMonNicknameAndSpecies(void);
void GetDaycareMonNicknames(void);
u8 GetDaycareState(void);
u8 GetDaycareCompatibilityScore(struct DayCare *daycare);
@@ -32,8 +33,8 @@ void SetDaycareCompatibilityString(void);
bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio);
void ShowDaycareLevelMenu(void);
void ChooseSendDaycareMon(void);
-u8 GetEggMovesBySpecies(u16 species, u16 *eggMoves);
-bool8 SpeciesCanLearnEggMove(u16 species, enum Move move);
+u8 GetEggMovesBySpecies(enum Species species, u16 *eggMoves);
+bool8 SpeciesCanLearnEggMove(enum Species species, enum Move move);
void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycareMon);
u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves);
diff --git a/include/decompress.h b/include/decompress.h
index 0e9402a02f..af51a304ef 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -76,11 +76,11 @@ bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet *src
void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer);
-void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, s32 species, u32 personality);
-void HandleLoadSpecialPokePicIsEgg(bool32 isFrontPic, void *dest, s32 species, u32 personality, bool32 isEgg);
+void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, enum Species species, u32 personality);
+void HandleLoadSpecialPokePicIsEgg(bool32 isFrontPic, void *dest, enum Species species, u32 personality, bool32 isEgg);
-void LoadSpecialPokePic(void *dest, s32 species, u32 personality, bool8 isFrontPic);
-void LoadSpecialPokePicIsEgg(void *dest, s32 species, u32 personality, bool8 isFrontPic, bool32 isEgg);
+void LoadSpecialPokePic(void *dest, enum Species species, u32 personality, bool8 isFrontPic);
+void LoadSpecialPokePicIsEgg(void *dest, enum Species species, u32 personality, bool8 isFrontPic, bool32 isEgg);
u32 GetDecompressedDataSize(const u32 *ptr);
bool32 IsCompressedData(const u32 *ptr);
diff --git a/include/dexnav.h b/include/dexnav.h
index 82350f665a..b4bf4a2bff 100644
--- a/include/dexnav.h
+++ b/include/dexnav.h
@@ -79,6 +79,6 @@ u32 CalculateDexNavShinyRolls(void);
void IncrementDexNavChain(void);
bool32 OnStep_DexNavSearch(void);
-extern u16 gDexNavSpecies;
+extern enum Species gDexNavSpecies;
#endif // GUARD_DEXNAV_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index 0b584c8629..923cc99467 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -146,7 +146,7 @@ void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sp
void ObjectEventClearHeldMovement(struct ObjectEvent *objectEvent);
void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *objectEvent);
struct Pokemon *GetFirstLiveMon(void);
-u16 GetOverworldWeatherSpecies(u16 species);
+enum Species GetOverworldWeatherSpecies(enum Species species);
void UpdateFollowingPokemon(void);
void RemoveFollowingPokemon(void);
struct ObjectEvent *GetFollowerObject(void);
@@ -263,7 +263,7 @@ bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup);
const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup);
u8 TrySpawnObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY);
bool8 GetFollowerInfo(u32 *species, bool32 *shiny, bool32 *female);
-const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u32 species, bool32 shiny, bool32 female);
+const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(enum Species species, bool32 shiny, bool32 female);
u16 GetObjectEventFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup);
void CopyObjectGraphicsInfoToSpriteTemplate(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 2b6a030ef3..ffdb73eb18 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -630,6 +630,8 @@ extern const u8 EventScript_SelectWithoutRegisteredItem[];
extern const u8 EventScript_WhiteOut[];
extern const u8 EventScript_AfterWhiteOutMomHeal[];
extern const u8 EventScript_AfterWhiteOutHeal[];
+extern const u8 EventScript_AfterWhiteOutHeal_Frlg[];
+extern const u8 EventScript_AfterWhiteOutHealMsgPreFirstBoss[];
extern const u8 EventScript_ResetMrBriney[];
extern const u8 EventScript_DoLinkRoomExit[];
extern const u8 CableClub_EventScript_TooBusyToNotice[];
diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h
index 52586fc4f5..331f55c16f 100644
--- a/include/evolution_graphics.h
+++ b/include/evolution_graphics.h
@@ -6,8 +6,8 @@ void LoadEvoSparkleSpriteAndPal(void);
u8 EvolutionSparkles_SpiralUpward(u16 palNum);
u8 EvolutionSparkles_ArcDown(void);
u8 EvolutionSparkles_CircleInward(void);
-u8 EvolutionSparkles_SprayAndFlash(u16 species);
-u8 EvolutionSparkles_SprayAndFlash_Trade(u16 species);
+u8 EvolutionSparkles_SprayAndFlash(enum Species species);
+u8 EvolutionSparkles_SprayAndFlash_Trade(enum Species species);
u8 CycleEvolutionMonSprite(u8 preEvoSpriteId, u8 postEvoSpriteId);
#endif // GUARD_EVOLUTION_GRAPHICS_H
diff --git a/include/evolution_scene.h b/include/evolution_scene.h
index 1b8999c775..22a1b24a62 100644
--- a/include/evolution_scene.h
+++ b/include/evolution_scene.h
@@ -1,9 +1,11 @@
#ifndef GUARD_EVOLUTION_SCENE_H
#define GUARD_EVOLUTION_SCENE_H
-void BeginEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u8 partyId);
-void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u8 partyId);
-void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSpriteId, u8 partyId);
+#include "constants/species.h"
+
+void BeginEvolutionScene(struct Pokemon *mon, enum Species postEvoSpecies, bool32 canStopEvo, u8 partyId);
+void EvolutionScene(struct Pokemon *mon, enum Species postEvoSpecies, bool32 canStopEvo, u8 partyId);
+void TradeEvolutionScene(struct Pokemon *mon, enum Species postEvoSpecies, u8 preEvoSpriteId, u8 partyId);
extern void (*gCB2_AfterEvolution)(void);
diff --git a/include/field_effect.h b/include/field_effect.h
index 0bfe15308b..656c5f0c95 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -47,7 +47,7 @@ void SpriteCB_AshLaunch(struct Sprite *sprite);
void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);
void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId);
-u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority);
+u8 CreateMonSprite_PicBox(enum Species species, s16 x, s16 y, u8 subpriority);
void StartEscapeRopeFieldEffect(void);
void FieldEffectFreeGraphicsResources(struct Sprite *sprite);
bool8 IsRockClimbActive(void);
diff --git a/include/field_specials.h b/include/field_specials.h
index a59bff475d..0504f1720f 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -1,6 +1,8 @@
#ifndef GUARD_FIELD_SPECIALS_H
#define GUARD_FIELD_SPECIALS_H
+#include "constants/species.h"
+
extern bool8 gBikeCyclingChallenge;
extern u8 gBikeCollisions;
extern u16 gScrollableMultichoice_ScrollOffset;
@@ -35,7 +37,7 @@ void SetPCBoxToSendMon(u8 boxId);
void PreparePartyForSkyBattle(void);
void GetObjectPosition(u16*, u16*, u32, u32);
bool32 CheckObjectAtXY(u32, u32);
-bool32 CheckPartyHasSpecies(u32);
+bool32 CheckPartyHasSpecies(enum Species);
bool8 CutMoveRuinValleyCheck(void);
void CutMoveOpenDottedHoleDoor(void);
diff --git a/include/frontier_util.h b/include/frontier_util.h
index b7f93932c9..428fb1ee14 100644
--- a/include/frontier_util.h
+++ b/include/frontier_util.h
@@ -1,6 +1,8 @@
#ifndef GUARD_FRONTIER_UTIL_H
#define GUARD_FRONTIER_UTIL_H
+#include "constants/species.h"
+
void CallFrontierUtilFunc(void);
u8 GetFrontierBrainStatus(void);
void CopyFrontierTrainerText(u8 whichText, u16 trainerId);
@@ -18,7 +20,7 @@ void CopyFrontierBrainTrainerName(u8 *dst);
bool8 IsFrontierBrainFemale(void);
void SetFrontierBrainObjEventGfx_2(void);
void CreateFrontierBrainPokemon(void);
-u16 GetFrontierBrainMonSpecies(u8 monId);
+enum Species GetFrontierBrainMonSpecies(u8 monId);
void SetFrontierBrainObjEventGfx(u8 facility);
u16 GetFrontierBrainMonMove(u8 monId, u8 moveSlotId);
u8 GetFrontierBrainMonNature(u8 monId);
diff --git a/include/global.h b/include/global.h
index 58d043d80c..4fe837f2d2 100644
--- a/include/global.h
+++ b/include/global.h
@@ -331,7 +331,7 @@ struct BerryCrush
struct ApprenticeMon
{
- u16 species;
+ enum Species species;
enum Move moves[MAX_MON_MOVES];
enum Item item;
};
@@ -356,8 +356,8 @@ struct Apprentice
struct BattleTowerPokemon
{
- u16 species;
- u16 heldItem;
+ enum Species species;
+ enum Item heldItem;
enum Move moves[MAX_MON_MOVES];
u8 level;
u8 ppBonuses;
@@ -399,8 +399,8 @@ struct EmeraldBattleTowerRecord
struct BattleTowerInterview
{
- u16 playerSpecies;
- u16 opponentSpecies;
+ enum Species playerSpecies;
+ enum Species opponentSpecies;
u8 opponentName[PLAYER_NAME_LENGTH + 1];
u8 opponentMonNickname[VANILLA_POKEMON_NAME_LENGTH + 1];
u8 opponentLanguage;
@@ -630,8 +630,8 @@ struct SecretBaseParty
{
u32 personality[PARTY_SIZE];
enum Move moves[PARTY_SIZE * MAX_MON_MOVES];
- u16 species[PARTY_SIZE];
- u16 heldItems[PARTY_SIZE];
+ enum Species species[PARTY_SIZE];
+ enum Item heldItems[PARTY_SIZE];
u8 levels[PARTY_SIZE];
u8 EVs[PARTY_SIZE];
};
@@ -691,7 +691,7 @@ struct Roamer
{
/*0x00*/ u32 ivs;
/*0x04*/ u32 personality;
- /*0x08*/ u16 species;
+ /*0x08*/ enum Species species;
/*0x0A*/ u16 hp;
/*0x0C*/ u8 level;
/*0x0D*/ u8 statusA;
@@ -838,7 +838,7 @@ struct ContestWinner
{
u32 personality;
u32 trainerId;
- u16 species;
+ enum Species species;
u8 contestCategory;
u8 monName[VANILLA_POKEMON_NAME_LENGTH + 1];
u8 trainerName[PLAYER_NAME_LENGTH + 1];
@@ -852,7 +852,7 @@ struct Mail
/*0x00*/ u16 words[MAIL_WORDS_COUNT];
/*0x12*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x1A*/ u8 trainerId[TRAINER_ID_LENGTH];
- /*0x1E*/ u16 species;
+ /*0x1E*/ enum Species species;
/*0x20*/ enum Item itemId;
};
@@ -998,7 +998,7 @@ struct WonderNews
struct WonderCard
{
u16 flagId; // Event flag (sReceivedGiftFlags) + WONDER_CARD_FLAG_OFFSET
- u16 iconSpecies;
+ enum Species iconSpecies;
u32 idNumber;
u8 type:2; // CARD_TYPE_*
u8 bgType:4;
@@ -1017,7 +1017,7 @@ struct WonderCardMetadata
u16 battlesWon;
u16 battlesLost;
u16 numTrades;
- u16 iconSpecies;
+ enum Species iconSpecies;
u16 stampData[2][MAX_STAMP_CARD_STAMPS]; // First element is STAMP_SPECIES, second is STAMP_ID
};
@@ -1144,7 +1144,7 @@ struct SaveBlock1
/*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT];
/*0x27CA*/ //u8 padding4[2];
/*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT];
- /*0x2B90*/ u16 outbreakPokemonSpecies;
+ /*0x2B90*/ enum Species outbreakPokemonSpecies;
/*0x2B92*/ u8 outbreakLocationMapNum;
/*0x2B93*/ u8 outbreakLocationMapGroup;
/*0x2B94*/ u8 outbreakPokemonLevel;
@@ -1169,7 +1169,8 @@ struct SaveBlock1
#if FREE_LINK_BATTLE_RECORDS == FALSE
/*0x3150*/ struct LinkBattleRecords linkBattleRecords;
#endif //FREE_LINK_BATTLE_RECORDS
- /*0x31A8*/ u8 giftRibbons[GIFT_RIBBONS_COUNT];
+ /*0x31A8*/ u8 giftRibbons[NUM_GIFT_RIBBONS];
+ u8 padding[4];
/*0x31B3*/ struct ExternalEventData externalEventData;
/*0x31C7*/ struct ExternalEventFlags externalEventFlags;
/*0x31DC*/ struct Roamer roamer[ROAMER_COUNT];
diff --git a/include/global.tv.h b/include/global.tv.h
index 1be29673e0..58ef8702c8 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -32,7 +32,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 species;
+ /*0x02*/ enum Species species;
/*0x04*/ u16 words[6];
/*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x18*/ u8 language;
@@ -43,7 +43,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 species;
+ /*0x02*/ enum Species species;
/*0x04*/ u16 words[6];
/*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x18*/ u8 language;
@@ -54,7 +54,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 species;
+ /*0x02*/ enum Species species;
/*0x04*/ u8 friendshipHighNybble:4;
u8 questionAsked:4;
/*0x05*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
@@ -71,7 +71,7 @@ typedef union // size = 0x24
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 words[2];
- /*0x06*/ u16 species;
+ /*0x06*/ enum Species species;
/*0x08*/ u8 filler_08[3];
/*0x0B*/ u8 name[12];
/*0x17*/ u8 language;
@@ -81,13 +81,13 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 species;
+ /*0x02*/ enum Species species;
/*0x04*/ u8 pokemonName[VANILLA_POKEMON_NAME_LENGTH + 1];
/*0x0F*/ u8 trainerName[PLAYER_NAME_LENGTH + 1];
/*0x17*/ u8 unused[3];
/*0x1A*/ u8 random;
/*0x1B*/ u8 random2;
- /*0x1C*/ u16 randomSpecies;
+ /*0x1C*/ enum Species randomSpecies;
/*0x1E*/ u8 language;
/*0x1F*/ u8 pokemonNameLanguage;
} nameRaterShow;
@@ -96,7 +96,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 species;
+ /*0x02*/ enum Species species;
/*0x04*/ u16 words[2];
/*0x08*/ u8 pokemonNickname[VANILLA_POKEMON_NAME_LENGTH + 1];
/*0x13*/ u8 contestCategory:3;
@@ -114,9 +114,9 @@ typedef union // size = 0x24
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
- /*0x0A*/ u16 species;
+ /*0x0A*/ enum Species species;
/*0x0C*/ u8 opponentName[PLAYER_NAME_LENGTH + 1];
- /*0x14*/ u16 defeatedSpecies;
+ /*0x14*/ enum Species defeatedSpecies;
/*0x16*/ u16 numFights;
/*0x18*/ u16 words[1];
/*0x1A*/ u8 btLevel;
@@ -131,14 +131,14 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 losingSpecies;
+ /*0x02*/ enum Species losingSpecies;
/*0x04*/ u8 losingTrainerName[PLAYER_NAME_LENGTH + 1];
/*0x0C*/ u8 loserAppealFlag;
/*0x0D*/ u8 round1Placing;
/*0x0E*/ u8 round2Placing;
/*0x0F*/ u8 winnerAppealFlag;
/*0x10*/ enum Move move;
- /*0x12*/ u16 winningSpecies;
+ /*0x12*/ enum Species winningSpecies;
/*0x14*/ u8 winningTrainerName[PLAYER_NAME_LENGTH + 1];
/*0x1C*/ u8 category;
/*0x1D*/ u8 winningTrainerLanguage;
@@ -164,11 +164,11 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 speciesOpponent;
+ /*0x02*/ enum Species speciesOpponent;
/*0x04*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x0C*/ u8 linkOpponentName[PLAYER_NAME_LENGTH + 1];
/*0x14*/ enum Move move;
- /*0x16*/ u16 speciesPlayer;
+ /*0x16*/ enum Species speciesPlayer;
/*0x18*/ u8 battleType;
/*0x19*/ u8 language;
/*0x1A*/ u8 linkOpponentLanguage;
@@ -211,7 +211,7 @@ typedef union // size = 0x24
/*0x03*/ u8 language2;
/*0x04*/ u8 nickname[VANILLA_POKEMON_NAME_LENGTH + 1];
/*0x0F*/ u8 ball;
- /*0x10*/ u16 species;
+ /*0x10*/ enum Species species;
/*0x12*/ u8 nBallsUsed;
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x1B*/ //u8 padding;
@@ -237,8 +237,8 @@ typedef union // size = 0x24
/*0x01*/ bool8 active;
/*0x02*/ u8 language;
/*0x03*/ u8 filler_03[9];
- /*0x0C*/ u16 species;
- /*0x0E*/ u16 species2;
+ /*0x0C*/ enum Species species;
+ /*0x0E*/ enum Species species2;
/*0x10*/ u8 nBallsUsed;
/*0x11*/ u8 outcome;
/*0x12*/ mapsec_u8_t location;
@@ -252,7 +252,7 @@ typedef union // size = 0x24
/*0x01*/ bool8 active;
/*0x02*/ u8 nBites;
/*0x03*/ u8 nFails;
- /*0x04*/ u16 species;
+ /*0x04*/ enum Species species;
/*0x06*/ u8 language;
/*0x07*/ u8 filler_07[12];
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
@@ -266,7 +266,7 @@ typedef union // size = 0x24
/*0x02*/ u16 numPokeCaught;
/*0x04*/ u16 caughtPoke;
/*0x06*/ u16 steps;
- /*0x08*/ u16 species;
+ /*0x08*/ enum Species species;
/*0x0A*/ mapsec_u8_t location;
/*0x0B*/ u8 language;
/*0x0C*/ u8 filler_0C[7];
@@ -335,12 +335,12 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 lastOpponentSpecies;
+ /*0x02*/ enum Species lastOpponentSpecies;
/*0x04*/ mapsec_u8_t location;
/*0x05*/ u8 outcome;
/*0x06*/ u16 caughtMonBall;
/*0x08*/ u16 balls;
- /*0x0A*/ u16 poke1Species;
+ /*0x0A*/ enum Species poke1Species;
/*0x0C*/ u16 lastUsedMove;
/*0x0E*/ u8 language;
/*0x0F*/ u8 filler_0f[4];
@@ -355,7 +355,7 @@ typedef union // size = 0x24
/*0x02*/ u8 avgLevel;
/*0x03*/ u8 numDecorations;
/*0x04*/ u8 decorations[4];
- /*0x08*/ u16 species;
+ /*0x08*/ enum Species species;
/*0x0A*/ enum Move move;
/*0x0C*/ u8 language;
/*0x0D*/ u8 filler_0d[6];
@@ -380,8 +380,8 @@ typedef union // size = 0x24
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ enum Move move;
- /*0x04*/ u16 foeSpecies;
- /*0x06*/ u16 species;
+ /*0x04*/ enum Species foeSpecies;
+ /*0x06*/ enum Species species;
/*0x08*/ u16 otherMoves[3];
/*0x0E*/ u16 betterMove;
/*0x10*/ u8 nOtherMoves;
@@ -421,10 +421,10 @@ typedef union // size = 0x24
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 winStreak;
- /*0x04*/ u16 species1;
- /*0x06*/ u16 species2;
- /*0x08*/ u16 species3;
- /*0x0A*/ u16 species4;
+ /*0x04*/ enum Species species1;
+ /*0x06*/ enum Species species2;
+ /*0x08*/ enum Species species3;
+ /*0x0A*/ enum Species species4;
/*0x0C*/ u8 language;
/*0x0D*/ u8 facilityAndMode;
/*0x0E*/ u8 filler_0e[5];
@@ -478,7 +478,7 @@ typedef union // size = 0x24
/*0x02*/ u8 unused1;
/*0x03*/ u8 unused3;
/*0x04*/ enum Move moves[MAX_MON_MOVES];
- /*0x0C*/ u16 species;
+ /*0x0C*/ enum Species species;
/*0x0E*/ u16 unused2;
/*0x10*/ u8 locationMapNum;
/*0x11*/ u8 locationMapGroup;
diff --git a/include/graphics.h b/include/graphics.h
index fddc90e074..7ecd951c0c 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -1525,6 +1525,7 @@ extern const u16 gItemIconPalette_GhostTMHM[];
extern const u16 gItemIconPalette_DragonTMHM[];
extern const u16 gItemIconPalette_DarkTMHM[];
extern const u16 gItemIconPalette_SteelTMHM[];
+extern const u16 gItemIconPalette_MysteryTMHM[];
extern const u16 gItemIconPalette_FairyTMHM[];
// Charms
extern const u32 gItemIcon_OvalCharm[];
diff --git a/include/international_string_util.h b/include/international_string_util.h
index ac1a470123..7afe14b08f 100644
--- a/include/international_string_util.h
+++ b/include/international_string_util.h
@@ -13,7 +13,7 @@ int GetStringWidthDifference(int fontId, const u8 *str, int totalWidth, int lett
int GetMaxWidthInMenuTable(const struct MenuAction *actions, int numActions);
int GetMaxWidthInSubsetOfMenuTable(const struct MenuAction *actions, const u8 *actionIds, int numActions);
int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu);
-void CopyMonCategoryText(u16 species, u8 *dest);
+void CopyMonCategoryText(enum Species species, u8 *dest);
u8 *GetStringClearToWidth(u8 *dest, int fontId, const u8 *str, int totalStringWidth);
void PadNameString(u8 *dest, u8 padChar);
void ConvertInternationalPlayerNameStripChar(u8 *str, u8 removeChar);
diff --git a/include/link_rfu.h b/include/link_rfu.h
index aadaf70412..4ecdf25dd4 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -4,6 +4,7 @@
#include "librfu.h"
#include "link.h"
#include "AgbRfu_LinkManager.h"
+#include "constants/species.h"
#define RFUCMD_MASK 0xFF00
@@ -103,7 +104,7 @@ struct __attribute__((packed, aligned(2))) RfuGameData
{
struct RfuGameCompatibilityData compatibility;
u8 partnerInfo[RFU_CHILD_MAX];
- u16 tradeSpecies;
+ enum Species tradeSpecies;
u8 activity:7;
u8 startedActivity:1;
u8 playerGender:1;
@@ -294,7 +295,7 @@ void UpdateGameData_SetActivity(u8 activity, u32 partnerInfo, bool32 startedActi
void CreateTask_RfuReconnectWithParent(const u8 *name, u16 trainerId);
void SetHostRfuWonderFlags(bool32 hasNews, bool32 hasCard);
void ResetHostRfuGameData(void);
-void SetTradeBoardRegisteredMonInfo(u32 type, u32 species, u32 level);
+void SetTradeBoardRegisteredMonInfo(u32 type, enum Species species, u32 level);
void InitializeRfuLinkManager_EnterUnionRoom(void);
void TryConnectToUnionRoomParent(const u8 *name, struct RfuGameData *parent, u8 activity);
bool32 IsUnionRoomListenTaskActive(void);
diff --git a/include/mail.h b/include/mail.h
index 9047ad7ab4..6a24685755 100644
--- a/include/mail.h
+++ b/include/mail.h
@@ -24,7 +24,7 @@ void ClearAllMail(void);
void ClearMail(struct Mail *mail);
bool8 MonHasMail(struct Pokemon *mon);
u8 GiveMailToMonByItemId(struct Pokemon *mon, enum Item itemId);
-u16 SpeciesToMailSpecies(u16 species, u32 personality);
+u16 SpeciesToMailSpecies(enum Species species, u32 personality);
u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer);
u8 GiveMailToMon(struct Pokemon *mon, struct Mail *mail);
void TakeMailFromMon(struct Pokemon *mon);
diff --git a/include/match_call.h b/include/match_call.h
index 468a977a13..5f949b408a 100644
--- a/include/match_call.h
+++ b/include/match_call.h
@@ -21,4 +21,9 @@ void LoadMatchCallWindowGfx(u32 windowId, u32 destOffset, u32 paletteId);
void DrawMatchCallTextBoxBorder(u32 windowId, u32 tileOffset, u32 paletteId);
void RedrawMatchCallTextBoxBorder(void);
+bool32 GetActiveTrainerRematches(u32 matchCallId);
+void SetActiveTrainerRematches(u32 matchCallId, u32 value);
+u32 GetTrainerRematchStepCounter(void);
+void SetTrainerRematchStepCounter(u32 value);
+
#endif //GUARD_MATCH_CALL_H
diff --git a/include/move.h b/include/move.h
index e46a1012b2..4e28562753 100644
--- a/include/move.h
+++ b/include/move.h
@@ -1,7 +1,7 @@
#ifndef GUARD_MOVES_H
#define GUARD_MOVES_H
-#include "generational_changes.h"
+#include "config_changes.h"
#include "contest_effect.h"
#include "constants/battle.h"
#include "constants/battle_factory.h"
@@ -164,7 +164,7 @@ struct MoveInfo
};
} twoTurnAttack;
struct {
- u16 species;
+ enum Species species;
u16 power:9;
u16 numOfHits:7;
} speciesPowerOverride;
diff --git a/include/naming_screen.h b/include/naming_screen.h
index d163117e0d..e0ab5a1698 100644
--- a/include/naming_screen.h
+++ b/include/naming_screen.h
@@ -2,6 +2,7 @@
#define GUARD_NAMING_SCREEN_H
#include "main.h"
+#include "constants/species.h"
enum {
NAMING_SCREEN_PLAYER,
@@ -15,6 +16,6 @@ enum {
extern void BattleMainCB2(void);
-void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback);
+void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpeciesOrPlayerGender, u16 monGender, u32 monPersonality, MainCallback returnCallback);
#endif // GUARD_NAMING_SCREEN_H
diff --git a/include/ow_synchronize.h b/include/ow_synchronize.h
index 83a7ed9c31..7eaf3e1bc6 100644
--- a/include/ow_synchronize.h
+++ b/include/ow_synchronize.h
@@ -9,7 +9,7 @@ enum GeneratedMonOrigin
GIFTMON_ORIGIN
};
-u32 GetSynchronizedNature(enum GeneratedMonOrigin origin, u32 species);
-u32 GetSynchronizedGender(enum GeneratedMonOrigin origin, u32 species);
+u32 GetSynchronizedNature(enum GeneratedMonOrigin origin, enum Species species);
+u32 GetSynchronizedGender(enum GeneratedMonOrigin origin, enum Species species);
#endif // GUARD_OW_SYNCHRONIZE_H
diff --git a/include/pokeball.h b/include/pokeball.h
index 1caf478afa..036cff9275 100644
--- a/include/pokeball.h
+++ b/include/pokeball.h
@@ -26,7 +26,7 @@ extern const struct PokeBallSprite gPokeBalls[];
#define POKEBALL_PLAYER_SLIDEIN 0xFD
u8 DoPokeballSendOutAnimation(enum BattlerId battler, s16 pan, u8 kindOfThrow);
-void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriority, u8 delay, u32 fadePalettes, u16 species);
+void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriority, u8 delay, u32 fadePalettes, enum Species species);
u8 CreateTradePokeballSprite(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 delay, u32 fadePalettes);
void StartHealthboxSlideIn(enum BattlerId battler);
void DoHitAnimHealthboxEffect(enum BattlerId battler);
diff --git a/include/pokedex.h b/include/pokedex.h
index 1eaa557289..788c811282 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -9,10 +9,10 @@ u16 GetNationalPokedexCount(u8 caseID);
u32 GetRegionalPokedexCount(u8 caseID);
u16 GetHoennPokedexCount(u8 caseID);
u16 GetKantoPokedexCount(u8 caseID);
-u8 DisplayCaughtMonDexPage(u16 species, bool32 isShiny, u32 personality);
-u32 Pokedex_CreateCaughtMonSprite(u32 species, s32 x, s32 y);
+u8 DisplayCaughtMonDexPage(enum Species species, bool32 isShiny, u32 personality);
+u32 Pokedex_CreateCaughtMonSprite(enum Species species, s32 x, s32 y);
s8 GetSetPokedexFlag(enum NationalDexOrder nationalDexNo, u8 caseID);
-void DrawFootprint(u8 windowId, u16 species);
+void DrawFootprint(u8 windowId, enum Species species);
u16 CreateMonSpriteFromNationalDexNumber(enum NationalDexOrder nationalNum, s16 x, s16 y, u16 paletteSlot);
bool16 HasAllRegionalMons(void);
bool16 HasAllHoennMons(void);
@@ -20,7 +20,7 @@ bool16 HasAllKantoMons(void);
void ResetPokedexScrollPositions(void);
bool16 HasAllMons(void);
void CB2_OpenPokedex(void);
-void PrintMonMeasurements(u16 species, u32 owned);
+void PrintMonMeasurements(enum Species species, u32 owned);
u8* ConvertMonHeightToString(u32 height);
u8* ConvertMonWeightToString(u32 weight);
diff --git a/include/pokedex_area_screen.h b/include/pokedex_area_screen.h
index ba577d1230..ed4e86bf29 100755
--- a/include/pokedex_area_screen.h
+++ b/include/pokedex_area_screen.h
@@ -11,7 +11,7 @@ enum PokedexAreaScreenState
DEX_UPDATE_AREA_SCREEN
};
-void DisplayPokedexAreaScreen(u16 species, u8 *screenSwitchState, enum TimeOfDay timeOfDay, enum PokedexAreaScreenState areaState);
-void ShowPokedexAreaScreen(u16 species, u8 *screenSwitchState);
+void DisplayPokedexAreaScreen(enum Species species, u8 *screenSwitchState, enum TimeOfDay timeOfDay, enum PokedexAreaScreenState areaState);
+void ShowPokedexAreaScreen(enum Species species, u8 *screenSwitchState);
#endif // GUARD_POKEDEX_AREA_SCREEN_H
diff --git a/include/pokedex_cry_screen.h b/include/pokedex_cry_screen.h
index c44035605f..037e7f323b 100755
--- a/include/pokedex_cry_screen.h
+++ b/include/pokedex_cry_screen.h
@@ -14,7 +14,7 @@ extern u8 gDexCryScreenState;
bool8 LoadCryWaveformWindow(struct CryScreenWindow *window, u8 windowId);
void UpdateCryWaveformWindow(u8 windowId);
-void CryScreenPlayButton(u16 species);
+void CryScreenPlayButton(enum Species species);
bool8 LoadCryMeter(struct CryScreenWindow *window, u8 windowId);
void FreeCryScreen(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index 99577b2a78..bcafa5e417 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -334,7 +334,7 @@ struct Volatiles
struct BattlePokemon
{
- /*0x00*/ u16 species;
+ /*0x00*/ enum Species species;
/*0x02*/ u16 attack;
/*0x04*/ u16 defense;
/*0x06*/ u16 speed;
@@ -472,7 +472,7 @@ struct LevelUpMove
struct FormChange
{
u16 method;
- u16 targetSpecies;
+ enum Species targetSpecies;
u16 param1;
u16 param2;
u16 param3;
@@ -482,7 +482,7 @@ struct FormChange
struct FormChangeContext
{
enum FormChanges method:16;
- u16 currentSpecies;
+ enum Species currentSpecies;
u16 partyItemUsed;
u16 multichoiceSelection;
u16 heldItem;
@@ -578,16 +578,16 @@ void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
void ZeroPlayerPartyMons(void);
void ZeroEnemyPartyMons(void);
-u32 GetMonPersonality(u16 species, u8 gender, u8 nature, u8 unownLetter);
-void CreateMon(struct Pokemon *mon, u16 species, u8 level, u32 personality, struct OriginalTrainerId);
-void CreateRandomMon(struct Pokemon *mon, u16 species, u8 level);
-void CreateRandomMonWithIVs(struct Pokemon *mon, u16 species, u8 level, u8 fixedIv);
-void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u32 personality, struct OriginalTrainerId);
-void CreateMonWithIVs(struct Pokemon *mon, u16 species, u8 level, u32 personality, struct OriginalTrainerId trainerId, u8 fixedIV);
+u32 GetMonPersonality(enum Species species, u8 gender, u8 nature, u8 unownLetter);
+void CreateMon(struct Pokemon *mon, enum Species species, u8 level, u32 personality, struct OriginalTrainerId);
+void CreateRandomMon(struct Pokemon *mon, enum Species species, u8 level);
+void CreateRandomMonWithIVs(struct Pokemon *mon, enum Species species, u8 level, u8 fixedIv);
+void CreateBoxMon(struct BoxPokemon *boxMon, enum Species species, u8 level, u32 personality, struct OriginalTrainerId);
+void CreateMonWithIVs(struct Pokemon *mon, enum Species species, u8 level, u32 personality, struct OriginalTrainerId trainerId, u8 fixedIV);
void SetBoxMonIVs(struct BoxPokemon *mon, u8 fixedIV);
void SetBoxMonPerfectIVs(struct BoxPokemon *mon, u32 numPerfect);
-void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level);
-void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality);
+void CreateMaleMon(struct Pokemon *mon, enum Species species, u8 level);
+void CreateMonWithIVsPersonality(struct Pokemon *mon, enum Species species, u8 level, u32 ivs, u32 personality);
void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src);
void CreateBattleTowerMon_HandleLevel(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50);
void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId);
@@ -617,10 +617,10 @@ u8 CountAliveMonsInBattle(u8 caseId, enum BattlerId battler);
u8 GetDefaultMoveTarget(enum BattlerId battler);
u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
-u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
-bool32 IsPersonalityFemale(u16 species, u32 personality);
+u8 GetGenderFromSpeciesAndPersonality(enum Species species, u32 personality);
+bool32 IsPersonalityFemale(enum Species species, u32 personality);
u32 GetUnownSpeciesId(u32 personality);
-void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, enum BattlerPosition battlerPosition);
+void SetMultiuseSpriteTemplateToPokemon(enum Species speciesTag, enum BattlerPosition battlerPosition);
void SetMultiuseSpriteTemplateToTrainerBack(enum TrainerPicID trainerPicId, enum BattlerPosition battlerPosition);
void SetMultiuseSpriteTemplateToTrainerFront(enum TrainerPicID trainerPicId, enum BattlerPosition battlerPosition);
@@ -646,7 +646,7 @@ u8 CalculateEnemyPartyCount(void);
u8 CalculateEnemyPartyCountInSide(enum BattlerId battler);
u8 GetMonsStateToDoubles(void);
u8 GetMonsStateToDoubles_2(void);
-enum Ability GetAbilityBySpecies(u16 species, u8 abilityNum);
+enum Ability GetAbilityBySpecies(enum Species species, u8 abilityNum);
enum Ability GetMonAbility(struct Pokemon *mon);
void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord);
enum TrainerPicID GetSecretBaseTrainerPicIndex(void);
@@ -666,22 +666,22 @@ u8 GetItemEffectParamOffset(enum BattlerId battler, enum Item itemId, u8 effectB
u8 *UseStatIncreaseItem(enum Item itemId);
u8 GetNature(struct Pokemon *mon);
u8 GetNatureFromPersonality(u32 personality);
-u32 GetGMaxTargetSpecies(u32 species);
+enum Species GetGMaxTargetSpecies(enum Species species);
bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct EvolutionParam *params, struct Pokemon *tradePartner, u32 partyId, bool32 *canStopEvo, enum EvoState evoState);
-u32 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 evolutionItem, struct Pokemon *tradePartner, bool32 *canStopEvo, enum EvoState evoState);
+enum Species GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 evolutionItem, struct Pokemon *tradePartner, bool32 *canStopEvo, enum EvoState evoState);
bool8 IsMonPastEvolutionLevel(struct Pokemon *mon);
-u16 NationalPokedexNumToSpecies(enum NationalDexOrder nationalNum);
+enum Species NationalPokedexNumToSpecies(enum NationalDexOrder nationalNum);
u32 NationalToRegionalOrder(enum NationalDexOrder nationalNum);
enum KantoDexOrder NationalToKantoOrder(enum NationalDexOrder nationalNum);
enum HoennDexOrder NationalToHoennOrder(enum NationalDexOrder nationalNum);
-u32 SpeciesToRegionalPokedexNum(u16 species);
-enum KantoDexOrder SpeciesToKantoPokedexNum(u16 species);
-enum HoennDexOrder SpeciesToHoennPokedexNum(u16 species);
+u32 SpeciesToRegionalPokedexNum(enum Species species);
+enum KantoDexOrder SpeciesToKantoPokedexNum(enum Species species);
+enum HoennDexOrder SpeciesToHoennPokedexNum(enum Species species);
enum NationalDexOrder RegionalToNationalOrder(u32 regionNum);
enum NationalDexOrder KantoToNationalOrder(enum KantoDexOrder kantoNum);
enum NationalDexOrder HoennToNationalOrder(enum HoennDexOrder hoennNum);
void DrawSpindaSpots(u32 personality, u8 *dest, bool32 isSecondFrame);
-void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
+void EvolutionRenameMon(struct Pokemon *mon, enum Species oldSpecies, enum Species newSpecies);
u8 GetPlayerFlankId(void);
u16 GetLinkTrainerFlankId(u8 linkPlayerId);
s32 GetBattlerMultiplayerId(u16 id);
@@ -689,24 +689,24 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
u16 ModifyStatByNature(u8 nature, u16 stat, enum Stat statIndex);
void AdjustFriendship(struct Pokemon *mon, u8 event);
u8 CalculateFriendshipBonuses(struct Pokemon *mon, u32 modifier, enum HoldEffect itemHoldEffect);
-void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
+void MonGainEVs(struct Pokemon *mon, enum Species defeatedSpecies);
u16 GetMonEVCount(struct Pokemon *mon);
bool8 TryIncrementMonLevel(struct Pokemon *mon);
-u8 CanLearnTeachableMove(u16 species, enum Move move);
-u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
-u16 SpeciesToPokedexNum(u16 species);
-bool32 IsSpeciesInRegionalDex(u16 species);
-bool32 IsSpeciesInKantoDex(u16 species);
-bool32 IsSpeciesInHoennDex(u16 species);
+u8 CanLearnTeachableMove(enum Species species, enum Move move);
+u8 GetLevelUpMovesBySpecies(enum Species species, u16 *moves);
+u16 SpeciesToPokedexNum(enum Species species);
+bool32 IsSpeciesInRegionalDex(enum Species species);
+bool32 IsSpeciesInKantoDex(enum Species species);
+bool32 IsSpeciesInHoennDex(enum Species species);
u16 GetBattleBGM(void);
void PlayBattleBGM(void);
void PlayMapChosenOrBattleBGM(u16 songId);
void CreateTask_PlayMapChosenOrBattleBGM(u16 songId);
const u16 *GetMonFrontSpritePal(struct Pokemon *mon);
-const u16 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, u32 personality);
-const u16 *GetMonSpritePalFromSpeciesAndPersonalityIsEgg(u16 species, bool32 isShiny, u32 personality, bool32 isEgg);
-const u16 *GetMonSpritePalFromSpecies(u16 species, bool32 isShiny, bool32 isFemale);
-const u16 *GetMonSpritePalFromSpeciesIsEgg(u16 species, bool32 isShiny, bool32 isFemale, bool32 isEgg);
+const u16 *GetMonSpritePalFromSpeciesAndPersonality(enum Species species, bool32 isShiny, u32 personality);
+const u16 *GetMonSpritePalFromSpeciesAndPersonalityIsEgg(enum Species species, bool32 isShiny, u32 personality, bool32 isEgg);
+const u16 *GetMonSpritePalFromSpecies(enum Species species, bool32 isShiny, bool32 isFemale);
+const u16 *GetMonSpritePalFromSpeciesIsEgg(enum Species species, bool32 isShiny, bool32 isFemale, bool32 isEgg);
bool32 IsMoveHM(enum Move move);
bool32 CannotForgetMove(enum Move move);
s8 GetMonFlavorRelation(struct Pokemon *mon, enum Flavor flavor);
@@ -719,24 +719,24 @@ void SetMonPreventsSwitchingString(void);
void SetWildMonHeldItem(void);
bool8 IsMonShiny(struct Pokemon *mon);
const u8 *GetTrainerPartnerName(void);
-void BattleAnimateFrontSprite(struct Sprite *sprite, u16 species, bool8 noCry, u8 panMode);
-void DoMonFrontSpriteAnimation(struct Sprite *sprite, u16 species, bool8 noCry, u8 panModeAnimFlag);
-void PokemonSummaryDoMonAnimation(struct Sprite *sprite, u16 species, bool8 oneFrame);
+void BattleAnimateFrontSprite(struct Sprite *sprite, enum Species species, bool8 noCry, u8 panMode);
+void DoMonFrontSpriteAnimation(struct Sprite *sprite, enum Species species, bool8 noCry, u8 panModeAnimFlag);
+void PokemonSummaryDoMonAnimation(struct Sprite *sprite, enum Species species, bool8 oneFrame);
void StopPokemonAnimationDelayTask(void);
-void BattleAnimateBackSprite(struct Sprite *sprite, u16 species);
+void BattleAnimateBackSprite(struct Sprite *sprite, enum Species species);
u8 GetOpposingLinkMultiBattlerId(bool8 rightSide, u8 multiplayerId);
enum TrainerPicID FacilityClassToPicIndex(u16 facilityClass);
enum TrainerPicID PlayerGenderToFrontTrainerPicId(enum Gender playerGender);
void HandleSetPokedexFlag(enum NationalDexOrder nationalNum, u8 caseId, u32 personality);
void HandleSetPokedexFlagFromMon(struct Pokemon *mon, u32 caseId);
-bool8 HasTwoFramesAnimation(u16 species);
+bool8 HasTwoFramesAnimation(enum Species species);
struct MonSpritesGfxManager *CreateMonSpritesGfxManager(u8 managerId, u8 mode);
void DestroyMonSpritesGfxManager(u8 managerId);
u8 *MonSpritesGfxManager_GetSpritePtr(u8 managerId, u8 spriteNum);
-u16 GetFormSpeciesId(u16 speciesId, u8 formId);
+u16 GetFormSpeciesId(enum Species speciesId, u8 formId);
u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId);
-u32 GetFormChangeTargetSpecies_Internal(struct FormChangeContext ctx);
-bool32 DoesSpeciesHaveFormChangeMethod(u16 species, enum FormChanges method);
+enum Species GetFormChangeTargetSpecies_Internal(struct FormChangeContext ctx);
+bool32 DoesSpeciesHaveFormChangeMethod(enum Species species, enum FormChanges method);
u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove);
void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv);
void TrySpecialOverworldEvo(void);
@@ -747,23 +747,24 @@ u32 GetMonFriendshipScore(struct Pokemon *pokemon);
u32 GetMonAffectionHearts(struct Pokemon *pokemon);
void UpdateMonPersonality(struct BoxPokemon *boxMon, u32 personality);
u8 CalculatePartyCount(struct Pokemon *party);
-u16 GetSpeciesPreEvolution(u16 species);
+u16 GetSpeciesPreEvolution(enum Species species);
void HealPokemon(struct Pokemon *mon);
void HealBoxPokemon(struct BoxPokemon *boxMon);
void UpdateDaysPassedSinceFormChange(u16 days);
void TrySetDayLimitToFormChange(struct Pokemon *mon);
enum Type CheckDynamicMoveType(struct Pokemon *mon, enum Move move, enum BattlerId battler, enum MonState state);
uq4_12_t GetDynamaxLevelHPMultiplier(u32 dynamaxLevel, bool32 inverseMultiplier);
-u32 GetRegionalFormByRegion(u32 species, u32 region);
-bool32 IsSpeciesForeignRegionalForm(u32 species, u32 currentRegion);
+u32 GetRegionalFormByRegion(enum Species species, u32 region);
+bool32 IsSpeciesForeignRegionalForm(enum Species species, u32 currentRegion);
enum Type GetTeraTypeFromPersonality(struct Pokemon *mon);
bool8 ShouldSkipFriendshipChange(void);
struct Pokemon *GetSavedPlayerPartyMon(u32 index);
u8 *GetSavedPlayerPartyCount(void);
void SavePlayerPartyMon(u32 index, struct Pokemon *mon);
-bool32 IsSpeciesOfType(u32 species, enum Type type);
+bool32 IsSpeciesOfType(enum Species species, enum Type type);
struct BoxPokemon *GetSelectedBoxMonFromPcOrParty(void);
u32 GiveScriptedMonToPlayer(struct Pokemon *mon, u8 slot);
void ChangePokemonNicknameWithCallback(void (*callback)(void));
+bool32 HasShedinjaHPHandling(enum Species species);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 066bddf194..b62d0da28a 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -3,27 +3,27 @@
extern const struct SpritePalette gMonIconPaletteTable[];
-const u8 *GetMonIconTiles(u16 species, u32 personality);
-const u8 *GetMonIconTilesIsEgg(u16 species, u32 personality, bool32 isEgg);
+const u8 *GetMonIconTiles(enum Species species, u32 personality);
+const u8 *GetMonIconTilesIsEgg(enum Species species, u32 personality, bool32 isEgg);
void TryLoadAllMonIconPalettesAtOffset(u16 offset);
-const u8 *GetMonIconPtr(u16 species, u32 personality);
-const u8 *GetMonIconPtrIsEgg(u16 species, u32 personality, bool32 isEgg);
-const u16 *GetValidMonIconPalettePtr(u16 species);
-u16 GetIconSpecies(u16 species, u32 personality);
+const u8 *GetMonIconPtr(enum Species species, u32 personality);
+const u8 *GetMonIconPtrIsEgg(enum Species species, u32 personality, bool32 isEgg);
+const u16 *GetValidMonIconPalettePtr(enum Species species);
+enum Species GetIconSpecies(enum Species species, u32 personality);
u16 GetUnownLetterByPersonality(u32 personality);
-u16 GetIconSpeciesNoPersonality(u16 species);
+enum Species GetIconSpeciesNoPersonality(enum Species species);
void LoadMonIconPalettes(void);
-void LoadMonIconPalette(u16 species);
+void LoadMonIconPalette(enum Species species);
void FreeMonIconPalettes(void);
-u8 CreateMonIconNoPersonality(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority);
-u8 CreateMonIconNoPersonalityIsEgg(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, bool32 isEgg);
-void FreeMonIconPalette(u16 species);
+u8 CreateMonIconNoPersonality(enum Species species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority);
+u8 CreateMonIconNoPersonalityIsEgg(enum Species species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, bool32 isEgg);
+void FreeMonIconPalette(enum Species species);
void FreeAndDestroyMonIconSprite(struct Sprite *sprite);
-u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality);
-u8 CreateMonIconIsEgg(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool32 isEgg);
+u8 CreateMonIcon(enum Species species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality);
+u8 CreateMonIconIsEgg(enum Species species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool32 isEgg);
u8 UpdateMonIconFrame(struct Sprite *sprite);
-void LoadMonIconPalette(u16 species);
-void LoadMonIconPalettePersonality(u16 species, u32 personality);
+void LoadMonIconPalette(enum Species species);
+void LoadMonIconPalettePersonality(enum Species species, u32 personality);
void SpriteCB_MonIcon(struct Sprite *sprite);
void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum);
diff --git a/include/random.h b/include/random.h
index dcf99c7896..3a51c46036 100644
--- a/include/random.h
+++ b/include/random.h
@@ -160,6 +160,8 @@ enum RandomTag
RNG_SECONDARY_EFFECT_3,
RNG_SHED_SKIN,
RNG_SLEEP_TURNS,
+ RNG_TAUNT_TURNS,
+ RNG_ENCORE_TURNS,
RNG_SPEED_TIE,
RNG_STATIC,
RNG_STENCH,
@@ -186,6 +188,7 @@ enum RandomTag
RNG_AI_SWITCH_ABSORBING_STAY_IN,
RNG_AI_SWITCH_NATURAL_CURE,
RNG_AI_SWITCH_REGENERATOR,
+ RNG_AI_SWITCH_INTIMIDATE,
RNG_AI_SWITCH_ENCORE,
RNG_AI_SWITCH_CHOICE_LOCKED,
RNG_AI_SWITCH_STATS_LOWERED,
@@ -241,8 +244,8 @@ enum RandomTag
RNG_FISHING_BITE,
RNG_FISHING_GEN3_STICKY,
RNG_WILD_MON_TARGET,
- RNG_TAUNT,
RNG_AI_FAKE_OUT_SAVE_ALLY,
+ RNG_AI_DMG_ROLL_RANDOM,
};
#define RandomWeighted(tag, ...) \
diff --git a/include/roamer.h b/include/roamer.h
index eac732a74c..b3056ab677 100644
--- a/include/roamer.h
+++ b/include/roamer.h
@@ -12,7 +12,7 @@ bool8 TryStartRoamerEncounter(void);
void UpdateRoamerHPStatus(struct Pokemon *mon);
void SetRoamerInactive(u32 roamerIndex);
void GetRoamerLocation(u32 roamerIndex, u8 *mapGroup, u8 *mapNum);
-bool8 TryAddRoamer(u16 species, u8 level);
+bool8 TryAddRoamer(enum Species species, u8 level);
void MoveAllRoamersToOtherLocationSets(void);
void MoveAllRoamers(void);
diff --git a/include/script_menu.h b/include/script_menu.h
index 7b92de04ea..d2f685d5ca 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -37,7 +37,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, bool8
void DrawMultichoiceMenuInternal(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count);
bool8 ScriptMenu_YesNo(u8 left, u8 top);
bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 columnCount);
-bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y);
+bool8 ScriptMenu_ShowPokemonPic(enum Species species, u8 x, u8 y);
bool8 (*ScriptMenu_HidePokemonPic(void))(void);
int ConvertPixelWidthToTileWidth(int width);
u8 CreateWindowFromRect(u8 x, u8 y, u8 width, u8 height);
diff --git a/include/script_pokemon_util.h b/include/script_pokemon_util.h
index 45735ac2a3..bec3b87f21 100644
--- a/include/script_pokemon_util.h
+++ b/include/script_pokemon_util.h
@@ -1,10 +1,10 @@
#ifndef GUARD_SCRIPT_POKEMON_UTIL_H
#define GUARD_SCRIPT_POKEMON_UTIL_H
-u32 ScriptGiveMon(u16 species, u8 level, enum Item item);
-u8 ScriptGiveEgg(u16 species);
-void CreateScriptedWildMon(u16 species, u8 level, enum Item item);
-void CreateScriptedDoubleWildMon(u16 species, u8 level, enum Item item, u16 species2, u8 level2, enum Item item2);
+u32 ScriptGiveMon(enum Species species, u8 level, enum Item item);
+u8 ScriptGiveEgg(enum Species species);
+void CreateScriptedWildMon(enum Species species, u8 level, enum Item item);
+void CreateScriptedDoubleWildMon(enum Species species, u8 level, enum Item item, enum Species species2, u8 level2, enum Item item2);
void ScriptSetMonMoveSlot(u8 monIndex, enum Move move, u8 slot);
void ReducePlayerPartyToSelectedMons(void);
void HealPlayerParty(void);
diff --git a/include/sound.h b/include/sound.h
index 92fd055649..b82992869c 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -24,13 +24,13 @@ bool8 IsBGMPausedOrStopped(void);
void FadeInBGM(u8 speed);
void FadeOutBGM(u8 speed);
bool8 IsBGMStopped(void);
-void PlayCry_Normal(u16 species, s8 pan);
-void PlayCry_NormalNoDucking(u16 species, s8 pan, s8 volume, u8 priority);
-void PlayCry_ByMode(u16 species, s8 pan, u8 mode);
-void PlayCry_ReleaseDouble(u16 species, s8 pan, u8 mode);
-void PlayCry_Script(u16 species, u8 mode);
-void PlayCry_DuckNoRestore(u16 species, s8 pan, u8 mode);
-void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode);
+void PlayCry_Normal(enum Species species, s8 pan);
+void PlayCry_NormalNoDucking(enum Species species, s8 pan, s8 volume, u8 priority);
+void PlayCry_ByMode(enum Species species, s8 pan, u8 mode);
+void PlayCry_ReleaseDouble(enum Species species, s8 pan, u8 mode);
+void PlayCry_Script(enum Species species, u8 mode);
+void PlayCry_DuckNoRestore(enum Species species, s8 pan, u8 mode);
+void PlayCryInternal(enum Species species, s8 pan, s8 volume, u8 priority, u8 mode);
bool8 IsCryFinished(void);
void StopCryAndClearCrySongs(void);
void StopCry(void);
diff --git a/include/species_info.h b/include/species_info.h
index cdc45ef1fa..16be657726 100644
--- a/include/species_info.h
+++ b/include/species_info.h
@@ -19,7 +19,7 @@ struct Evolution
{
u16 method;
u16 param;
- u16 targetSpecies;
+ enum Species targetSpecies;
const struct EvolutionParam *params;
};
@@ -158,13 +158,13 @@ struct SpeciesInfo /*0xC4*/
extern const struct SpeciesInfo gSpeciesInfo[];
-static inline bool32 IsSpeciesEnabled(u16 species)
+static inline bool32 IsSpeciesEnabled(enum Species species)
{
// This function should not use the GetSpeciesBaseHP function, as the included sanitation will result in an infinite loop
return gSpeciesInfo[species].baseHP > 0 || species == SPECIES_EGG;
}
-static inline u16 SanitizeSpeciesId(u16 species)
+static inline enum Species SanitizeSpeciesId(enum Species species)
{
assertf(species <= NUM_SPECIES && (species == SPECIES_NONE || IsSpeciesEnabled(species)), "invalid species: %d", species)
{
@@ -174,37 +174,37 @@ static inline u16 SanitizeSpeciesId(u16 species)
return species;
}
-static inline u32 GetSpeciesBaseHP(u16 species)
+static inline u32 GetSpeciesBaseHP(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].baseHP;
}
-static inline u32 GetSpeciesBaseAttack(u16 species)
+static inline u32 GetSpeciesBaseAttack(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].baseAttack;
}
-static inline u32 GetSpeciesBaseDefense(u16 species)
+static inline u32 GetSpeciesBaseDefense(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].baseDefense;
}
-static inline u32 GetSpeciesBaseSpAttack(u16 species)
+static inline u32 GetSpeciesBaseSpAttack(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].baseSpAttack;
}
-static inline u32 GetSpeciesBaseSpDefense(u16 species)
+static inline u32 GetSpeciesBaseSpDefense(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].baseSpDefense;
}
-static inline u32 GetSpeciesBaseSpeed(u16 species)
+static inline u32 GetSpeciesBaseSpeed(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].baseSpeed;
}
-static inline u32 GetSpeciesBaseStat(u16 species, u32 statIndex)
+static inline u32 GetSpeciesBaseStat(enum Species species, u32 statIndex)
{
switch (statIndex)
{
@@ -224,7 +224,7 @@ static inline u32 GetSpeciesBaseStat(u16 species, u32 statIndex)
return 0;
}
-static inline u32 GetSpeciesBaseStatTotal(u32 species)
+static inline u32 GetSpeciesBaseStatTotal(enum Species species)
{
return GetSpeciesBaseHP(species)
+ GetSpeciesBaseAttack(species)
@@ -234,57 +234,57 @@ static inline u32 GetSpeciesBaseStatTotal(u32 species)
+ GetSpeciesBaseSpDefense(species);
}
-static inline enum Type GetSpeciesType(u16 species, u8 slot)
+static inline enum Type GetSpeciesType(enum Species species, u8 slot)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].types[slot];
}
-static inline u32 GetSpeciesCatchRate(u16 species)
+static inline u32 GetSpeciesCatchRate(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].catchRate;
}
-static inline u32 GetSpeciesForcedTeraType(u16 species)
+static inline u32 GetSpeciesForcedTeraType(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].forceTeraType;
}
-static inline u32 GetSpeciesExpYield(u16 species)
+static inline u32 GetSpeciesExpYield(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].expYield;
}
-static inline u32 GetSpeciesEVYieldHP(u16 species)
+static inline u32 GetSpeciesEVYieldHP(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].evYield_HP;
}
-static inline u32 GetSpeciesEVYieldAttack(u16 species)
+static inline u32 GetSpeciesEVYieldAttack(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].evYield_Attack;
}
-static inline u32 GetSpeciesEVYieldDefense(u16 species)
+static inline u32 GetSpeciesEVYieldDefense(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].evYield_Defense;
}
-static inline u32 GetSpeciesEVYieldSpAttack(u16 species)
+static inline u32 GetSpeciesEVYieldSpAttack(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].evYield_SpAttack;
}
-static inline u32 GetSpeciesEVYieldSpDefense(u16 species)
+static inline u32 GetSpeciesEVYieldSpDefense(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].evYield_SpDefense;
}
-static inline u32 GetSpeciesEVYieldSpeed(u16 species)
+static inline u32 GetSpeciesEVYieldSpeed(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].evYield_Speed;
}
-static inline u32 GetSpeciesEVYield(u16 species, u32 statIndex)
+static inline u32 GetSpeciesEVYield(enum Species species, u32 statIndex)
{
switch (statIndex)
{
@@ -304,47 +304,47 @@ static inline u32 GetSpeciesEVYield(u16 species, u32 statIndex)
return 0;
}
-static inline u32 GetSpeciesCommonItem(u16 species)
+static inline enum Item GetSpeciesCommonItem(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].itemCommon;
}
-static inline u32 GetSpeciesRareItem(u16 species)
+static inline enum Item GetSpeciesRareItem(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].itemRare;
}
-static inline u32 GetSpeciesGenderRatio(u16 species)
+static inline u32 GetSpeciesGenderRatio(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].genderRatio;
}
-static inline u32 GetSpeciesEggCycles(u16 species)
+static inline u32 GetSpeciesEggCycles(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].eggCycles;
}
-static inline u32 GetSpeciesBaseFriendship(u16 species)
+static inline u32 GetSpeciesBaseFriendship(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].friendship;
}
-static inline enum GrowthRate GetSpeciesGrowthRate(u16 species)
+static inline enum GrowthRate GetSpeciesGrowthRate(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].growthRate;
}
-static inline u32 GetSpeciesEggGroup(u16 species, u8 slot)
+static inline u32 GetSpeciesEggGroup(enum Species species, u8 slot)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].eggGroups[slot];
}
-static inline enum Ability GetSpeciesAbility(u16 species, u8 slot)
+static inline enum Ability GetSpeciesAbility(enum Species species, u8 slot)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].abilities[slot];
}
-static inline const u8 *GetSpeciesCategory(u16 species)
+static inline const u8 *GetSpeciesCategory(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].categoryName[0] == 0)
@@ -352,7 +352,7 @@ static inline const u8 *GetSpeciesCategory(u16 species)
return gSpeciesInfo[species].categoryName;
}
-static inline const u8 *GetSpeciesName(u16 species)
+static inline const u8 *GetSpeciesName(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].speciesName[0] == 0)
@@ -360,7 +360,7 @@ static inline const u8 *GetSpeciesName(u16 species)
return gSpeciesInfo[species].speciesName;
}
-static inline enum PokemonCry GetSpeciesCryId(u16 species)
+static inline enum PokemonCry GetSpeciesCryId(enum Species species)
{
species = SanitizeSpeciesId(species);
if (P_CRIES_ENABLED == FALSE || gSpeciesInfo[species].cryId >= CRY_COUNT)
@@ -368,42 +368,42 @@ static inline enum PokemonCry GetSpeciesCryId(u16 species)
return gSpeciesInfo[species].cryId;
}
-static inline enum NationalDexOrder SpeciesToNationalPokedexNum(u16 species)
+static inline enum NationalDexOrder SpeciesToNationalPokedexNum(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].natDexNum;
}
-static inline u32 GetSpeciesHeight(u16 species)
+static inline u32 GetSpeciesHeight(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].height;
}
-static inline u32 GetSpeciesWeight(u16 species)
+static inline u32 GetSpeciesWeight(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].weight;
}
-static inline u32 GetSpeciesPokedexScale(u16 species)
+static inline u32 GetSpeciesPokedexScale(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].pokemonScale;
}
-static inline u32 GetSpeciesPokedexOffset(u16 species)
+static inline u32 GetSpeciesPokedexOffset(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].pokemonOffset;
}
-static inline u32 GetSpeciesPokedexTrainerScale(u16 species)
+static inline u32 GetSpeciesPokedexTrainerScale(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].trainerScale;
}
-static inline u32 GetSpeciesPokedexTrainerOffset(u16 species)
+static inline u32 GetSpeciesPokedexTrainerOffset(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].trainerOffset;
}
-static inline const u8 *GetSpeciesPokedexDescription(u16 species)
+static inline const u8 *GetSpeciesPokedexDescription(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].description == NULL)
@@ -411,12 +411,12 @@ static inline const u8 *GetSpeciesPokedexDescription(u16 species)
return gSpeciesInfo[species].description;
}
-static inline enum BodyColor GetSpeciesBodyColor(u16 species)
+static inline enum BodyColor GetSpeciesBodyColor(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].bodyColor;
}
-static inline const u32 *GetSpeciesFrontPic(u16 species)
+static inline const u32 *GetSpeciesFrontPic(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].frontPic == NULL)
@@ -424,7 +424,7 @@ static inline const u32 *GetSpeciesFrontPic(u16 species)
return gSpeciesInfo[species].frontPic;
}
-static inline const u32 *GetSpeciesFrontPicFemale(u16 species)
+static inline const u32 *GetSpeciesFrontPicFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
@@ -434,12 +434,12 @@ static inline const u32 *GetSpeciesFrontPicFemale(u16 species)
return GetSpeciesFrontPic(species);
}
-static inline u32 GetSpeciesFrontPicSize(u16 species)
+static inline u32 GetSpeciesFrontPicSize(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].frontPicSize;
}
-static inline u32 GetSpeciesFrontPicSizeFemale(u16 species)
+static inline u32 GetSpeciesFrontPicSizeFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
@@ -449,22 +449,22 @@ static inline u32 GetSpeciesFrontPicSizeFemale(u16 species)
return GetSpeciesFrontPicSize(species);
}
-static inline u32 GetSpeciesFrontPicYOffset(u16 species)
+static inline u32 GetSpeciesFrontPicYOffset(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].frontPicYOffset;
}
-static inline u32 GetSpeciesFrontAnimId(u16 species)
+static inline u32 GetSpeciesFrontAnimId(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].frontAnimId;
}
-static inline u32 GetSpeciesFrontAnimDelay(u16 species)
+static inline u32 GetSpeciesFrontAnimDelay(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].frontAnimDelay;
}
-static inline const union AnimCmd *const *GetSpeciesFrontAnimFrames(u16 species)
+static inline const union AnimCmd *const *GetSpeciesFrontAnimFrames(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].frontAnimFrames != NULL)
@@ -472,37 +472,37 @@ static inline const union AnimCmd *const *GetSpeciesFrontAnimFrames(u16 species)
return gSpeciesInfo[SPECIES_NONE].frontAnimFrames;
}
-static inline u32 GetSpeciesEnemyElevation(u16 species)
+static inline u32 GetSpeciesEnemyElevation(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].enemyMonElevation;
}
-static inline u32 GetSpeciesEnemyShadowXOffset(u16 species)
+static inline u32 GetSpeciesEnemyShadowXOffset(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].enemyShadowXOffset;
}
-static inline u32 GetSpeciesEnemyShadowYOffset(u16 species)
+static inline u32 GetSpeciesEnemyShadowYOffset(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].enemyShadowYOffset;
}
-static inline u32 GetSpeciesEnemyShadowSize(u16 species)
+static inline u32 GetSpeciesEnemyShadowSize(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].enemyShadowSize;
}
-static inline u32 IsSpeciesEnemyShadowSuppressed(u16 species)
+static inline u32 IsSpeciesEnemyShadowSuppressed(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].suppressEnemyShadow;
}
-static inline bool32 IsMonSpriteNotFlipped(u16 species)
+static inline bool32 IsMonSpriteNotFlipped(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].noFlip;
}
-static inline const u32 *GetSpeciesBackPic(u16 species)
+static inline const u32 *GetSpeciesBackPic(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].backPic == NULL)
@@ -510,7 +510,7 @@ static inline const u32 *GetSpeciesBackPic(u16 species)
return gSpeciesInfo[species].backPic;
}
-static inline const u32 *GetSpeciesBackPicFemale(u16 species)
+static inline const u32 *GetSpeciesBackPicFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
@@ -520,12 +520,12 @@ static inline const u32 *GetSpeciesBackPicFemale(u16 species)
return GetSpeciesBackPic(species);
}
-static inline u32 GetSpeciesBackPicSize(u16 species)
+static inline u32 GetSpeciesBackPicSize(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].backPicSize;
}
-static inline u32 GetSpeciesBackPicSizeFemale(u16 species)
+static inline u32 GetSpeciesBackPicSizeFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
@@ -535,12 +535,12 @@ static inline u32 GetSpeciesBackPicSizeFemale(u16 species)
return GetSpeciesBackPicSize(species);
}
-static inline u32 GetSpeciesBackPicYOffset(u16 species)
+static inline u32 GetSpeciesBackPicYOffset(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].backPicYOffset;
}
-static inline enum BackAnim GetSpeciesBackAnimSet(u16 species)
+static inline enum BackAnim GetSpeciesBackAnimSet(enum Species species)
{
if (gSpeciesInfo[species].backAnimId != BACK_ANIM_NONE)
return gSpeciesInfo[species].backAnimId - 1;
@@ -548,7 +548,7 @@ static inline enum BackAnim GetSpeciesBackAnimSet(u16 species)
return BACK_ANIM_NONE;
}
-static inline const u16 *GetSpeciesPalette(u16 species)
+static inline const u16 *GetSpeciesPalette(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].palette == NULL)
@@ -556,7 +556,7 @@ static inline const u16 *GetSpeciesPalette(u16 species)
return gSpeciesInfo[species].palette;
}
-static inline const u16 *GetSpeciesPaletteFemale(u16 species)
+static inline const u16 *GetSpeciesPaletteFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
@@ -566,7 +566,7 @@ static inline const u16 *GetSpeciesPaletteFemale(u16 species)
return GetSpeciesPalette(species);
}
-static inline const u16 *GetSpeciesShinyPalette(u16 species)
+static inline const u16 *GetSpeciesShinyPalette(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].shinyPalette == NULL)
@@ -574,7 +574,7 @@ static inline const u16 *GetSpeciesShinyPalette(u16 species)
return gSpeciesInfo[species].shinyPalette;
}
-static inline const u16 *GetSpeciesShinyPaletteFemale(u16 species)
+static inline const u16 *GetSpeciesShinyPaletteFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
@@ -584,7 +584,7 @@ static inline const u16 *GetSpeciesShinyPaletteFemale(u16 species)
return GetSpeciesShinyPalette(species);
}
-static inline const u8 *GetSpeciesIconSprite(u16 species)
+static inline const u8 *GetSpeciesIconSprite(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].iconSprite == NULL)
@@ -592,7 +592,7 @@ static inline const u8 *GetSpeciesIconSprite(u16 species)
return gSpeciesInfo[species].iconSprite;
}
-static inline const u8 *GetSpeciesIconSpriteFemale(u16 species)
+static inline const u8 *GetSpeciesIconSpriteFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
@@ -602,12 +602,12 @@ static inline const u8 *GetSpeciesIconSpriteFemale(u16 species)
return GetSpeciesIconSprite(species);
}
-static inline u32 GetSpeciesIconPalIndex(u16 species)
+static inline u32 GetSpeciesIconPalIndex(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].iconPalIndex;
}
-static inline u32 GetSpeciesIconPalIndexFemale(u16 species)
+static inline u32 GetSpeciesIconPalIndexFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
@@ -617,77 +617,77 @@ static inline u32 GetSpeciesIconPalIndexFemale(u16 species)
return GetSpeciesIconPalIndex(species);
}
-static inline bool32 IsSpeciesRestrictedLegendary(u16 species)
+static inline bool32 IsSpeciesRestrictedLegendary(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isRestrictedLegendary;
}
-static inline bool32 IsSpeciesSubLegendary(u16 species)
+static inline bool32 IsSpeciesSubLegendary(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isSubLegendary;
}
-static inline bool32 IsSpeciesMythical(u16 species)
+static inline bool32 IsSpeciesMythical(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isMythical;
}
-static inline bool32 IsSpeciesUltraBeast(u16 species)
+static inline bool32 IsSpeciesUltraBeast(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isUltraBeast;
}
-static inline bool32 IsSpeciesParadox(u16 species)
+static inline bool32 IsSpeciesParadox(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isParadox;
}
-static inline bool32 IsSpeciesTotem(u16 species)
+static inline bool32 IsSpeciesTotem(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isTotem;
}
-static inline bool32 IsSpeciesMegaEvolution(u16 species)
+static inline bool32 IsSpeciesMegaEvolution(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isMegaEvolution;
}
-static inline bool32 IsSpeciesPrimalReversion(u16 species)
+static inline bool32 IsSpeciesPrimalReversion(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isPrimalReversion;
}
-static inline bool32 IsSpeciesUltraBurst(u16 species)
+static inline bool32 IsSpeciesUltraBurst(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isUltraBurst;
}
-static inline bool32 IsSpeciesGigantamax(u16 species)
+static inline bool32 IsSpeciesGigantamax(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isGigantamax;
}
-static inline bool32 IsSpeciesTeraForm(u16 species)
+static inline bool32 IsSpeciesTeraForm(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isTeraForm;
}
-static inline bool32 IsSpeciesAlolanForm(u16 species)
+static inline bool32 IsSpeciesAlolanForm(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isAlolanForm;
}
-static inline bool32 IsSpeciesGalarianForm(u16 species)
+static inline bool32 IsSpeciesGalarianForm(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isGalarianForm;
}
-static inline bool32 IsSpeciesHisuianForm(u16 species)
+static inline bool32 IsSpeciesHisuianForm(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isHisuianForm;
}
-static inline bool32 IsSpeciesPaldeanForm(u16 species)
+static inline bool32 IsSpeciesPaldeanForm(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isPaldeanForm;
}
@@ -701,52 +701,52 @@ static inline bool32 IsSpeciesRegionalForm(u32 species)
|| gSpeciesInfo[species].isPaldeanForm;
}
-static inline bool32 IsSpeciesTradeBanned(u16 species)
+static inline bool32 IsSpeciesTradeBanned(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].cannotBeTraded;
}
-static inline u32 GetSpeciesPerfectIVCount(u16 species)
+static inline u32 GetSpeciesPerfectIVCount(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].perfectIVCount;
}
-static inline bool32 IsSpeciesDexForced(u16 species)
+static inline bool32 IsSpeciesDexForced(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].dexForceRequired;
}
-static inline bool32 IsSpeciesFrontierBanned(u16 species)
+static inline bool32 IsSpeciesFrontierBanned(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isFrontierBanned;
}
-static inline bool32 IsSpeciesSkyBattleBanned(u16 species)
+static inline bool32 IsSpeciesSkyBattleBanned(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isSkyBattleBanned;
}
-static inline bool32 IsSpeciesTelekinesisBanned(u16 species)
+static inline bool32 IsSpeciesTelekinesisBanned(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].isTelekinesisBanned;
}
-static inline enum EggIds GetSpeciesEggId(u16 species)
+static inline enum EggIds GetSpeciesEggId(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].eggId;
}
-static inline u32 GetSpeciesPokemonJumpType(u16 species)
+static inline u32 GetSpeciesPokemonJumpType(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].pokemonJumpType;
}
-static inline bool32 IsSpeciesAllowedInPokemonJump(u16 species)
+static inline bool32 IsSpeciesAllowedInPokemonJump(enum Species species)
{
return GetSpeciesPokemonJumpType(species) != PKMN_JUMP_TYPE_NONE;
}
-static inline const struct LevelUpMove *GetSpeciesLevelUpLearnset(u16 species)
+static inline const struct LevelUpMove *GetSpeciesLevelUpLearnset(enum Species species)
{
const struct LevelUpMove *learnset = gSpeciesInfo[SanitizeSpeciesId(species)].levelUpLearnset;
if (learnset == NULL)
@@ -754,7 +754,7 @@ static inline const struct LevelUpMove *GetSpeciesLevelUpLearnset(u16 species)
return learnset;
}
-static inline const u16 *GetSpeciesTeachableLearnset(u16 species)
+static inline const u16 *GetSpeciesTeachableLearnset(enum Species species)
{
const u16 *learnset = gSpeciesInfo[SanitizeSpeciesId(species)].teachableLearnset;
if (learnset == NULL)
@@ -762,7 +762,7 @@ static inline const u16 *GetSpeciesTeachableLearnset(u16 species)
return learnset;
}
-static inline const u16 *GetSpeciesEggMoves(u16 species)
+static inline const u16 *GetSpeciesEggMoves(enum Species species)
{
const u16 *learnset = gSpeciesInfo[SanitizeSpeciesId(species)].eggMoveLearnset;
if (learnset == NULL)
@@ -770,7 +770,7 @@ static inline const u16 *GetSpeciesEggMoves(u16 species)
return learnset;
}
-static inline const struct Evolution *GetSpeciesEvolutions(u16 species)
+static inline const struct Evolution *GetSpeciesEvolutions(enum Species species)
{
const struct Evolution *evolutions = gSpeciesInfo[SanitizeSpeciesId(species)].evolutions;
if (evolutions == NULL)
@@ -778,7 +778,7 @@ static inline const struct Evolution *GetSpeciesEvolutions(u16 species)
return evolutions;
}
-static inline const u16 *GetSpeciesFormTable(u16 species)
+static inline const u16 *GetSpeciesFormTable(enum Species species)
{
const u16 *formTable = gSpeciesInfo[SanitizeSpeciesId(species)].formSpeciesIdTable;
if (formTable == NULL)
@@ -786,7 +786,7 @@ static inline const u16 *GetSpeciesFormTable(u16 species)
return formTable;
}
-static inline const struct FormChange *GetSpeciesFormChanges(u16 species)
+static inline const struct FormChange *GetSpeciesFormChanges(enum Species species)
{
const struct FormChange *formChanges = gSpeciesInfo[SanitizeSpeciesId(species)].formChangeTable;
if (formChanges == NULL)
@@ -794,7 +794,7 @@ static inline const struct FormChange *GetSpeciesFormChanges(u16 species)
return formChanges;
}
-static inline bool32 SpeciesHasGenderDifferences(u16 species)
+static inline bool32 SpeciesHasGenderDifferences(enum Species species)
{
#if P_GENDER_DIFFERENCES
if (gSpeciesInfo[species].frontPicFemale != NULL
@@ -809,19 +809,19 @@ static inline bool32 SpeciesHasGenderDifferences(u16 species)
}
#if P_FOOTPRINTS
-static inline const u8 *GetSpeciesFootprint(u16 species)
+static inline const u8 *GetSpeciesFootprint(enum Species species)
{
return gSpeciesInfo[SanitizeSpeciesId(species)].footprint;
}
#endif // P_FOOTPRINTS
#if OW_POKEMON_OBJECT_EVENTS
-static inline const struct ObjectEventGraphicsInfo *GetSpeciesOverworldData(u16 species)
+static inline const struct ObjectEventGraphicsInfo *GetSpeciesOverworldData(enum Species species)
{
return &gSpeciesInfo[SanitizeSpeciesId(species)].overworldData;
}
-static inline const struct ObjectEventGraphicsInfo *GetSpeciesOverworldDataFemale(u16 species)
+static inline const struct ObjectEventGraphicsInfo *GetSpeciesOverworldDataFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
@@ -831,7 +831,7 @@ static inline const struct ObjectEventGraphicsInfo *GetSpeciesOverworldDataFemal
return GetSpeciesOverworldData(species);
}
-static inline const void *GetSpeciesOverworldPalette(u16 species)
+static inline const void *GetSpeciesOverworldPalette(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].overworldPalette == NULL)
@@ -839,7 +839,7 @@ static inline const void *GetSpeciesOverworldPalette(u16 species)
return gSpeciesInfo[species].overworldPalette;
}
-static inline const u16 *GetSpeciesOverworldPaletteFemale(u16 species)
+static inline const u16 *GetSpeciesOverworldPaletteFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
@@ -849,7 +849,7 @@ static inline const u16 *GetSpeciesOverworldPaletteFemale(u16 species)
return GetSpeciesOverworldPalette(species);
}
-static inline const u16 *GetSpeciesOverworldShinyPalette(u16 species)
+static inline const u16 *GetSpeciesOverworldShinyPalette(enum Species species)
{
species = SanitizeSpeciesId(species);
if (gSpeciesInfo[species].overworldShinyPalette == NULL)
@@ -857,7 +857,7 @@ static inline const u16 *GetSpeciesOverworldShinyPalette(u16 species)
return gSpeciesInfo[species].overworldShinyPalette;
}
-static inline const u16 *GetSpeciesOverworldShinyPaletteFemale(u16 species)
+static inline const u16 *GetSpeciesOverworldShinyPaletteFemale(enum Species species)
{
#if P_GENDER_DIFFERENCES
species = SanitizeSpeciesId(species);
diff --git a/include/test/battle.h b/include/test/battle.h
index 4c482ceccb..06aa7def8b 100644
--- a/include/test/battle.h
+++ b/include/test/battle.h
@@ -550,7 +550,7 @@
#include "battle.h"
#include "battle_anim.h"
#include "data.h"
-#include "generational_changes.h"
+#include "config_changes.h"
#include "item.h"
#include "random.h"
#include "recorded_battle.h"
@@ -1058,8 +1058,8 @@ void TieBreakScore(u32 sourceLine, enum RandomTag rngTag, enum ScoreTieResolutio
void TieBreakTarget(u32 sourceLine, enum TargetTieResolution targetTieRes, u32 value);
void ClearFlagAfterTest(void);
void ClearVarAfterTest(void);
-void OpenPokemon(u32 sourceLine, enum BattleTrainer trainer, u32 species);
-void OpenPokemonMulti(u32 sourceLine, enum BattleTrainer trainer, u32 species);
+void OpenPokemon(u32 sourceLine, enum BattleTrainer trainer, enum Species species);
+void OpenPokemonMulti(u32 sourceLine, enum BattleTrainer trainer, enum Species species);
void ClosePokemon(u32 sourceLine);
void RNGSeed_(u32 sourceLine, rng_value_t seed);
diff --git a/include/test/test.h b/include/test/test.h
index a708067585..9e95d837fa 100644
--- a/include/test/test.h
+++ b/include/test/test.h
@@ -259,7 +259,7 @@ static inline struct Benchmark BenchmarkStop(void)
#define PARAMETRIZE if (gFunctionTestRunnerState->parameters++ == gFunctionTestRunnerState->runParameter)
-#define PARAMETRIZE_LABEL(f, label) if (gFunctionTestRunnerState->parameters++ == gFunctionTestRunnerState->runParameter && (Test_MgbaPrintf(":N%s: " f " (%d/%d)", gTestRunnerState.test->name, label, gFunctionTestRunnerState->runParameter + 1, gFunctionTestRunnerState->parameters), 1))
+#define PARAMETRIZE_LABEL(f, ...) if (gFunctionTestRunnerState->parameters++ == gFunctionTestRunnerState->runParameter && (Test_MgbaPrintf(":N%s: (%d/%d) " f, gTestRunnerState.test->name, gFunctionTestRunnerState->runParameter + 1, gFunctionTestRunnerState->parameters, __VA_ARGS__), 1))
#define SET_RNG(tag, value) SetupRiggedRng(__LINE__, tag, value)
diff --git a/include/trade.h b/include/trade.h
index 6b170d23f1..eeb28ec073 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -15,8 +15,8 @@ extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate;
s32 GetGameProgressForLinkTrade(void);
void CB2_StartCreateTradeMenu(void);
void CB2_LinkTrade(void);
-int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isModernFatefulEncounter);
-int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, enum Type requestedType, u16 playerSpecies, bool8 isModernFatefulEncounter);
+int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, enum Species species2, enum Species species, bool8 isModernFatefulEncounter);
+int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, enum Species playerSpecies2, enum Species partnerSpecies, enum Type requestedType, enum Species playerSpecies, bool8 isModernFatefulEncounter);
int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx);
void InitTradeSequenceBgGpuRegs(void);
void LinkTradeDrawWindow(void);
diff --git a/include/trainer_card.h b/include/trainer_card.h
index e506b5f738..3f672f45db 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -2,6 +2,7 @@
#define GUARD_TRAINER_CARD_H
#include "constants/trainer_card.h"
+#include "constants/species.h"
struct TrainerCard
{
@@ -39,7 +40,7 @@ struct TrainerCard
/*0x4E*/ u8 monIconTint; // FRLG only
/*0x4F*/ u8 unionRoomClass;
/*0x50*/ u8 stickers[TRAINER_CARD_STICKER_TYPES]; // FRLG only
- /*0x54*/ u16 monSpecies[PARTY_SIZE]; // FRLG only
+ /*0x54*/ enum Species monSpecies[PARTY_SIZE]; // FRLG only
// Note: Link players use linkHasAllFrontierSymbols, not the field below,
// which they use for a Wonder Card flag id instead (see CreateTrainerCardInBuffer)
/*0x60*/ bool16 hasAllFrontierSymbols;
diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h
index 6096191713..f56844432a 100644
--- a/include/trainer_pokemon_sprites.h
+++ b/include/trainer_pokemon_sprites.h
@@ -8,8 +8,8 @@
#define F_MON_PIC_NO_AFFINE (1 << 7)
bool16 ResetAllPicSprites(void);
-u16 CreateMonPicSprite_Affine(u16 species, bool8 isShiny, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
-u16 CreateMonPicSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
+u16 CreateMonPicSprite_Affine(enum Species species, bool8 isShiny, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
+u16 CreateMonPicSprite(enum Species species, bool8 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
u16 FreeAndDestroyMonPicSprite(u16 spriteId);
u16 FreeAndDestroyMonPicSpriteNoPalette(u16 spriteId);
u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
@@ -17,6 +17,6 @@ u16 FreeAndDestroyTrainerPicSprite(u16 spriteId);
u16 CreateTrainerCardTrainerPicSprite(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId);
u16 PlayerGenderToFrontTrainerPicId_Debug(enum Gender gender, bool8 getClass);
void CopyTrainerBackspriteFramesToDest(enum TrainerPicID trainerPicId, u8 *dest);
-u16 CreateTrainerCardMonIconSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId);
+u16 CreateTrainerCardMonIconSprite(enum Species species, bool8 isShiny, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId);
#endif // GUARD_TRAINER_POKEMON_SPRITES_H
diff --git a/include/tv.h b/include/tv.h
index 24b3b98208..31114db237 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -1,11 +1,13 @@
#ifndef GUARD_TV_H
#define GUARD_TV_H
+#include "constants/species.h"
+
extern u8 *const gTVStringVarPtrs[3];
void ClearTVShowData(void);
void TryPutBreakingNewsOnAir(void);
-void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIndex, const u16 *movePtr, u16 betterMove);
+void TryPutBattleSeminarOnAir(enum Species foeSpecies, enum Species species, u8 moveIndex, const u16 *movePtr, enum Move betterMove);
void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facilityAndMode);
void DoTVShow(void);
void DoTVShowInSearchOfTrainers(void);
@@ -39,11 +41,11 @@ void IncrementDailyBerryBlender(void);
void SanitizeTVShowsForRuby(TVShow *shows);
void TryPutSafariFanClubOnAir(u8 monsCaught, u8 pokeblocksUsed);
bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, enum Flavor flavor, u8 color, u8 sheen, u8 language);
-void SetPokemonAnglerSpecies(u16 species);
+void SetPokemonAnglerSpecies(enum Species species);
void UpdateTVShowsPerDay(u16 days);
void TryPutPokemonTodayOnAir(void);
void TryPutSecretBaseVisitOnAir(void);
-void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, enum Move move, u16 speciesPlayer, u16 speciesOpponent);
+void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, enum Move move, enum Species speciesPlayer, enum Species speciesOpponent);
void BravoTrainerPokemonProfile_BeforeInterview1(enum Move move);
void InterviewBefore(void);
void InterviewAfter(void);
diff --git a/include/union_room.h b/include/union_room.h
index 5616c106d3..285f613203 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -138,9 +138,9 @@ struct UnionRoomTrade
u16 type;
u32 playerPersonality;
u8 offerPlayerId;
- u16 playerSpecies;
+ enum Species playerSpecies;
u16 playerLevel;
- u16 species;
+ enum Species species;
u16 level;
u32 personality;
};
@@ -148,7 +148,7 @@ struct UnionRoomTrade
extern u8 gPlayerCurrActivity;
extern struct RfuGameCompatibilityData gRfuPartnerCompatibilityData;
-extern u16 gUnionRoomOfferedSpecies;
+extern enum Species gUnionRoomOfferedSpecies;
extern enum Type gUnionRoomRequestedMonType;
u8 CreateTask_CreateTradeMenu(void);
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
index 1c1f55f3b3..db402ee553 100644
--- a/include/wild_encounter.h
+++ b/include/wild_encounter.h
@@ -18,7 +18,7 @@ struct WildPokemon
{
u8 minLevel;
u8 maxLevel;
- u16 species;
+ enum Species species;
};
struct WildPokemonInfo
@@ -60,7 +60,7 @@ bool8 UpdateRepelCounter(void);
bool8 TryDoDoubleWildBattle(void);
bool8 StandardWildEncounter_Debug(void);
u32 CalculateChainFishingShinyRolls(void);
-void CreateWildMon(u16 species, u8 level);
+void CreateWildMon(enum Species species, u8 level);
u16 GetCurrentMapWildMonHeaderId(void);
u32 ChooseWildMonIndex_Land(void);
u32 ChooseWildMonIndex_Water(void);
diff --git a/map_data_rules.mk b/map_data_rules.mk
index 8c071c970c..af2530912d 100755
--- a/map_data_rules.mk
+++ b/map_data_rules.mk
@@ -29,11 +29,11 @@ $(MAPS_OUTDIR)/%/header.inc $(MAPS_OUTDIR)/%/events.inc $(MAPS_OUTDIR)/%/connect
$(MAPJSON) map emerald $< $(LAYOUTS_DIR)/layouts.json $(@D)
-$(MAPS_OUTDIR)/connections.inc $(MAPS_OUTDIR)/groups.inc $(MAPS_OUTDIR)/events.inc $(MAPS_OUTDIR)/headers.inc $(INCLUDECONSTS_OUTDIR)/map_groups.h $(DATA_SRC_SUBDIR)/map_group_count.h: $(MAPS_DIR)/map_groups.json $(MAP_JSONS)
- @$(MAPJSON) groups $(MAP_VERSION) $^ $(MAPS_OUTDIR) $(INCLUDECONSTS_OUTDIR)
+$(MAPS_OUTDIR)/connections.inc $(MAPS_OUTDIR)/groups.inc $(MAPS_OUTDIR)/events.inc $(MAPS_OUTDIR)/headers.inc $(INCLUDECONSTS_OUTDIR)/map_groups.h $(DATA_SRC_SUBDIR)/map_group_count.h: $(MAPS_DIR)/map_groups.json $(MAP_JSONS) .map_version
+ @$(MAPJSON) groups $(MAP_VERSION) $(filter-out .map_version,$^) $(MAPS_OUTDIR) $(INCLUDECONSTS_OUTDIR)
@echo "$(MAPJSON) groups $(MAP_VERSION) $(MAPS_DIR)/map_groups.json $(MAPS_OUTDIR) $(INCLUDECONSTS_OUTDIR)"
-$(LAYOUTS_OUTDIR)/layouts.inc $(LAYOUTS_OUTDIR)/layouts_table.inc $(INCLUDECONSTS_OUTDIR)/layouts.h: $(LAYOUTS_DIR)/layouts.json
+$(LAYOUTS_OUTDIR)/layouts.inc $(LAYOUTS_OUTDIR)/layouts_table.inc $(INCLUDECONSTS_OUTDIR)/layouts.h: $(LAYOUTS_DIR)/layouts.json .map_version
$(MAPJSON) layouts $(MAP_VERSION) $< $(LAYOUTS_OUTDIR) $(INCLUDECONSTS_OUTDIR)
# Generate constants for map events, which depend on data that's distributed across the map.json files.
@@ -41,3 +41,9 @@ $(LAYOUTS_OUTDIR)/layouts.inc $(LAYOUTS_OUTDIR)/layouts_table.inc $(INCLUDECONST
$(INCLUDECONSTS_OUTDIR)/map_event_ids.h: $(MAP_JSONS)
@$(MAPJSON) event_constants emerald $^ $(INCLUDECONSTS_OUTDIR)/map_event_ids.h
@echo "$(MAPJSON) event_constants emerald $(INCLUDECONSTS_OUTDIR)/map_event_ids.h"
+
+.map_version : FORCE
+ (echo "$(MAP_VERSION)" | cmp $@ -) || echo "$(MAP_VERSION)" > .map_version
+
+FORCE:
+.PHONY : FORCE
diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk
index 2088feb763..827e11cea3 100644
--- a/spritesheet_rules.mk
+++ b/spritesheet_rules.mk
@@ -2888,6 +2888,9 @@ $(POKEMONGFXDIR)/cherubi/overworld.4bpp: %.4bpp: %.png
$(POKEMONGFXDIR)/cherrim/overworld.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 4 -mheight 4
+$(POKEMONGFXDIR)/cherrim/sunshine/overworld.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -mwidth 4 -mheight 4
+
$(POKEMONGFXDIR)/shellos/overworld.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 4 -mheight 4
diff --git a/src/apprentice.c b/src/apprentice.c
index 817fda7838..eee40805cb 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -314,7 +314,7 @@ static u16 GetRandomAlternateMove(u8 monId)
u8 i, j;
u8 id;
u8 numLearnsetMoves;
- u16 species;
+ enum Species species;
const struct LevelUpMove *learnset;
bool32 needTMs = FALSE;
enum Move move = MOVE_NONE;
@@ -434,7 +434,7 @@ static bool8 TrySetMove(u8 monId, enum Move move)
return TRUE;
}
-static void GetLatestLearnedMoves(u16 species, u16 *moves)
+static void GetLatestLearnedMoves(enum Species species, u16 *moves)
{
u8 i, j;
u8 level, numLearnsetMoves;
@@ -564,7 +564,7 @@ static void CreateApprenticeMenu(u8 menu)
top = 6;
for (i = 0; i < MULTI_PARTY_SIZE; i++)
{
- u16 species;
+ enum Species species;
u32 speciesTableId;
speciesTableId = APPRENTICE_SPECIES_ID(i);
diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c
index c11b39d8b4..bc88e0988d 100644
--- a/src/battle_ai_main.c
+++ b/src/battle_ai_main.c
@@ -142,6 +142,20 @@ static s32 (*const sBattleAiFuncTable[])(enum BattlerId, enum BattlerId, enum Mo
};
// Functions
+void AIDebugTimerStart()
+{
+ // Set delay timer to count how long it takes for AI to choose action/move
+ gBattleStruct->aiDelayTimer = gMain.vblankCounter1;
+ CycleCountStart();
+}
+
+void AIDebugTimerEnd()
+{
+ // We add to existing to compound multiple calls
+ gBattleStruct->aiDelayFrames += gMain.vblankCounter1 - gBattleStruct->aiDelayTimer;
+ gBattleStruct->aiDelayCycles += CycleCountEnd();
+}
+
void BattleAI_SetupAIData(u8 defaultScoreMoves, enum BattlerId battler)
{
u32 moveLimitations;
@@ -290,8 +304,8 @@ void BattleAI_SetupFlags(void)
// The check is here because wild natural enemies are not symmetrical.
if (B_WILD_NATURAL_ENEMIES && IsDoubleBattle())
{
- u32 speciesLeft = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES);
- u32 speciesRight = GetMonData(&gEnemyParty[1], MON_DATA_SPECIES);
+ enum Species speciesLeft = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES);
+ enum Species speciesRight = GetMonData(&gEnemyParty[1], MON_DATA_SPECIES);
if (IsNaturalEnemy(speciesLeft, speciesRight))
gAiThinkingStruct->aiFlags[B_BATTLER_1] |= AI_FLAG_ATTACKS_PARTNER;
if (IsNaturalEnemy(speciesRight, speciesLeft))
@@ -371,6 +385,9 @@ void ComputeBattlerDecisions(enum BattlerId battler)
gAiLogicData->aiCalcInProgress = TRUE;
+ if (DEBUG_AI_DELAY_TIMER)
+ AIDebugTimerStart();
+
// Setup battler and prediction data
BattleAI_SetupAIData(0xF, battler);
SetupAIPredictionData(battler, SWITCH_MID_BATTLE_OPTIONAL);
@@ -390,6 +407,9 @@ void ComputeBattlerDecisions(enum BattlerId battler)
BattlerChooseNonMoveAction();
ModifySwitchAfterMoveScoring(battler);
+ if (DEBUG_AI_DELAY_TIMER)
+ AIDebugTimerEnd();
+
gAiLogicData->aiCalcInProgress = FALSE;
}
}
@@ -710,8 +730,10 @@ void SetAiLogicDataForTurn(struct AiLogicData *aiData)
if (!(gBattleTypeFlags & BATTLE_TYPE_HAS_AI) && !IsWildMonSmart())
return;
- // Set delay timer to count how long it takes for AI to choose action/move
- gBattleStruct->aiDelayTimer = gMain.vblankCounter1;
+ gAiLogicData->aiCalcInProgress = TRUE;
+
+ if (DEBUG_AI_DELAY_TIMER)
+ AIDebugTimerStart();
aiData->weatherHasEffect = HasWeatherEffect();
weather = AI_GetWeather();
@@ -719,9 +741,6 @@ void SetAiLogicDataForTurn(struct AiLogicData *aiData)
// get/assume all battler data and simulate AI damage
battlersCount = gBattlersCount;
- gAiLogicData->aiCalcInProgress = TRUE;
- if (DEBUG_AI_DELAY_TIMER)
- CycleCountStart();
for (enum BattlerId battlerAtk = 0; battlerAtk < battlersCount; battlerAtk++)
{
if (!IsBattlerAlive(battlerAtk))
@@ -752,15 +771,15 @@ void SetAiLogicDataForTurn(struct AiLogicData *aiData)
}
if (DEBUG_AI_DELAY_TIMER)
- // We add to existing to compound multiple calls
- gBattleStruct->aiDelayCycles += CycleCountEnd();
+ AIDebugTimerEnd();
+
gAiLogicData->aiCalcInProgress = FALSE;
}
enum Ability GetPartyMonAbility(struct Pokemon *mon)
{
// Doesn't have any special handling yet
- u32 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
enum Ability ability = GetSpeciesAbility(species, GetMonData(mon, MON_DATA_ABILITY_NUM));
return ability;
}
@@ -880,7 +899,7 @@ static u32 ChooseMoveOrAction_Doubles(enum BattlerId battler)
for (enum BattlerId battlerIndex = 0; battlerIndex < MAX_BATTLERS_COUNT; battlerIndex++)
{
- if (battlerIndex == battler || gBattleMons[battlerIndex].hp == 0)
+ if (gBattleMons[battlerIndex].hp == 0)
{
actionOrMoveIndex[battlerIndex] = 0xFF;
bestMovePointsForTarget[battlerIndex] = -1;
@@ -990,12 +1009,14 @@ static u32 ChooseMoveOrAction_Doubles(enum BattlerId battler)
static inline bool32 ShouldConsiderMoveForBattler(enum BattlerId battlerAi, enum BattlerId battlerDef, enum Move move)
{
+ enum MoveTarget target = AI_GetBattlerMoveTargetType(battlerAi, move);
if (battlerAi == BATTLE_PARTNER(battlerDef))
{
- enum MoveTarget target = AI_GetBattlerMoveTargetType(battlerAi, move);
if (target == TARGET_BOTH || target == TARGET_OPPONENTS_FIELD)
return FALSE;
}
+ if (!IsBattlerAlly(battlerAi, battlerDef) && target == TARGET_USER_OR_ALLY)
+ return FALSE;
return TRUE;
}
@@ -2341,7 +2362,7 @@ static s32 AI_CheckBadMove(enum BattlerId battlerAtk, enum BattlerId battlerDef,
//TODO
break;
case EFFECT_LOCK_ON:
- if (gBattleMons[battlerDef].volatiles.lockOn
+ if (gBattleMons[battlerAtk].volatiles.battlerWithSureHit == battlerDef + 1
|| aiData->abilities[battlerAtk] == ABILITY_NO_GUARD
|| aiData->abilities[battlerDef] == ABILITY_NO_GUARD
|| DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove))
@@ -3201,8 +3222,8 @@ static s32 AI_DoubleBattle(enum BattlerId battlerAtk, enum BattlerId battlerDef,
bool32 hasTwoOpponents = HasTwoOpponents(battlerAtk);
bool32 hasPartner = HasPartner(battlerAtk);
u32 friendlyFireThreshold = GetFriendlyFireKOThreshold(battlerAtk);
- u32 noOfHitsToKOPartner = GetNoOfHitsToKOBattler(battlerAtk, battlerAtkPartner, gAiThinkingStruct->movesetIndex, AI_ATTACKING, CONSIDER_ENDURE);
- bool32 wouldPartnerFaint = hasPartner && CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, gAiThinkingStruct->movesetIndex, AI_ATTACKING) && !partnerProtecting;
+ u32 noOfHitsToKOPartner = GetNoOfHitsToKOBattler(battlerAtk, battlerAtkPartner, gAiThinkingStruct->movesetIndex, AI_ATTACKING_PARTNER, CONSIDER_ENDURE);
+ bool32 wouldPartnerFaint = hasPartner && CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, gAiThinkingStruct->movesetIndex, AI_ATTACKING_PARTNER) && !partnerProtecting;
bool32 isFriendlyFireOK = !wouldPartnerFaint && (noOfHitsToKOPartner == 0 || noOfHitsToKOPartner > friendlyFireThreshold);
// check what effect partner is using
@@ -3321,12 +3342,17 @@ static s32 AI_DoubleBattle(enum BattlerId battlerAtk, enum BattlerId battlerDef,
if (gBattleMons[battlerAtkPartner].volatiles.dragonCheer
|| gBattleMons[battlerAtkPartner].volatiles.focusEnergy
|| !HasDamagingMove(battlerAtkPartner))
+ {
ADJUST_SCORE(-5);
- else if (atkPartnerHoldEffect == HOLD_EFFECT_SCOPE_LENS
- || IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_DRAGON)
- || GetMoveCriticalHitStage(aiData->partnerMove) > 0
- || HasMoveWithCriticalHitChance(battlerAtkPartner))
+ }
+ else if (!partnerProtecting
+ && (atkPartnerHoldEffect == HOLD_EFFECT_SCOPE_LENS
+ || IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_DRAGON)
+ || GetMoveCriticalHitStage(aiData->partnerMove) > 0
+ || HasMoveWithCriticalHitChance(battlerAtkPartner)))
+ {
ADJUST_SCORE(GOOD_EFFECT);
+ }
break;
case EFFECT_COACHING:
if (!hasPartner
@@ -3468,7 +3494,9 @@ static s32 AI_DoubleBattle(enum BattlerId battlerAtk, enum BattlerId battlerDef,
switch (atkPartnerHoldEffect)
{
case HOLD_EFFECT_WEAKNESS_POLICY:
- if (aiData->effectiveness[battlerAtk][battlerAtkPartner][gAiThinkingStruct->movesetIndex] >= UQ_4_12(2.0) && isFriendlyFireOK)
+ if (!partnerProtecting
+ && aiData->effectiveness[battlerAtk][battlerAtkPartner][gAiThinkingStruct->movesetIndex] >= UQ_4_12(2.0)
+ && isFriendlyFireOK)
{
ADJUST_SCORE(GOOD_EFFECT);
}
@@ -3905,6 +3933,12 @@ static s32 AI_DoubleBattle(enum BattlerId battlerAtk, enum BattlerId battlerDef,
ADJUST_SCORE(WORST_EFFECT);
break;
}
+ case EFFECT_ACUPRESSURE:
+ {
+ ADJUST_SCORE(IncreaseStatUpScore(battlerAtkPartner, BATTLE_OPPOSITE(battlerAtkPartner), STAT_CHANGE_ATK_2));
+ ADJUST_SCORE(IncreaseStatUpScore(battlerAtkPartner, BATTLE_OPPOSITE(battlerAtkPartner), STAT_CHANGE_SPATK_2));
+ break;
+ }
default:
break;
} // attacker move effects
@@ -4089,7 +4123,7 @@ static enum MoveComparisonResult CompareMoveTwoTurnEffect(enum BattlerId battler
static inline bool32 ShouldUseSpreadDamageMove(enum BattlerId battlerAtk, enum Move move, u32 moveIndex, u32 hitsToFaintOpposingBattler)
{
enum BattlerId partnerBattler = BATTLE_PARTNER(battlerAtk);
- u32 noOfHitsToFaintPartner = GetNoOfHitsToKOBattler(battlerAtk, partnerBattler, moveIndex, AI_ATTACKING, CONSIDER_ENDURE);
+ u32 noOfHitsToFaintPartner = GetNoOfHitsToKOBattler(battlerAtk, partnerBattler, moveIndex, AI_ATTACKING_PARTNER, CONSIDER_ENDURE);
u32 friendlyFireThreshold = GetFriendlyFireKOThreshold(battlerAtk);
return (HasPartnerIgnoreFlags(battlerAtk)
&& noOfHitsToFaintPartner != 0 // Immunity check
@@ -4518,6 +4552,7 @@ static s32 AI_CalcMoveEffectScore(enum BattlerId battlerAtk, enum BattlerId batt
case EFFECT_BIDE:
if (aiData->hpPercents[battlerAtk] < 90)
ADJUST_SCORE(-2); // Should be either removed or turned into increasing score
+ break;
// treat as offense booster
case EFFECT_ACUPRESSURE:
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK_2));
@@ -4709,7 +4744,7 @@ static s32 AI_CalcMoveEffectScore(enum BattlerId battlerAtk, enum BattlerId batt
case EFFECT_OHKO:
if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX)
break;
- else if (gBattleMons[battlerAtk].volatiles.lockOn)
+ else if (gBattleMons[battlerAtk].volatiles.battlerWithSureHit == battlerDef + 1)
ADJUST_SCORE(BEST_EFFECT);
break;
case EFFECT_MEAN_LOOK:
diff --git a/src/battle_ai_switch.c b/src/battle_ai_switch.c
index 342d7acd73..45914f6735 100644
--- a/src/battle_ai_switch.c
+++ b/src/battle_ai_switch.c
@@ -35,28 +35,47 @@ struct IncomingHealInfo
static bool32 CanUseSuperEffectiveMoveAgainstOpponents(enum BattlerId battler);
static bool32 FindMonWithFlagsAndSuperEffective(enum BattlerId battler, u16 flags, u32 moduloPercent);
static u32 GetSwitchinHazardsDamage(enum BattlerId battler);
+static u32 GetSwitchinSingleUseItemHealing(enum BattlerId battler, enum BattlerId opposingBattler, s32 currentHP);
static bool32 AI_CanSwitchinAbilityTrapOpponent(enum Ability ability, enum BattlerId opposingBattler);
static u32 GetBattlerTypeMatchup(enum BattlerId opposingBattler, enum BattlerId battler);
static u32 GetSwitchinHitsToKO(s32 damageTaken, enum BattlerId battler, const struct IncomingHealInfo *healInfo, u32 originalHp);
static void GetIncomingHealInfo(enum BattlerId battler, struct IncomingHealInfo *healInfo);
static u32 GetWishHealAmountForBattler(enum BattlerId battler);
+static void SetBattlerStatusForSwitchin(enum BattlerId battler);
+static void SetBattlerStatStagesForSwitchin(enum BattlerId battler, enum BattlerId opposingBattler, u32 fieldStatus);
+static void SetBattlerHPChangeForSwitch(enum BattlerId battler, enum BattlerId opposingBattler);
+static void SetBattlerVolatilesForSwitchin(enum BattlerId battler, u32 weather, u32 fieldStatus);
+bool32 IsSwitchinTSpikesAffected(enum BattlerId battler);
+static bool32 IsOpponentPhysicalAttacker(enum BattlerId battler, enum BattlerId opposingBattler);
+static bool32 CanIntimidateLowerOpponentAtk(enum BattlerId battler, enum BattlerId opposingBattler);
+static bool32 ShouldSwitchIfIntimidateBenefit(enum BattlerId battler);
-static void InitializeSwitchinCandidate(enum BattlerId switchinBattler, struct Pokemon *mon)
+static void InitializeSwitchinCandidate(enum BattlerId switchinBattler, u32 monIndex, struct Pokemon *mon)
{
+ u32 storeCurrBattlerPartyIndex = gBattlerPartyIndexes[switchinBattler]; // Rage Fist fix
PokemonToBattleMon(mon, &gBattleMons[switchinBattler]);
// Setup switchin battler data
gAiThinkingStruct->saved[switchinBattler].saved = TRUE;
SetBattlerAiData(switchinBattler, gAiLogicData);
- SetBattlerFieldStatusForSwitchin(switchinBattler);
+ u32 switchinWeather = AI_GetSwitchinWeather(switchinBattler);
+ u32 switchinFieldStatus = AI_GetSwitchinFieldStatus(switchinBattler);
+ SetBattlerVolatilesForSwitchin(switchinBattler, switchinWeather, switchinFieldStatus);
+ SetBattlerStatusForSwitchin(switchinBattler);
+ gBattlerPartyIndexes[switchinBattler] = monIndex;
+ gAiLogicData->switchInCalc = TRUE;
+
for (enum BattlerId battlerIndex = 0; battlerIndex < gBattlersCount; battlerIndex++)
{
if (switchinBattler == battlerIndex || !IsBattlerAlive(battlerIndex))
continue;
-
- CalcBattlerAiMovesData(gAiLogicData, switchinBattler, battlerIndex, AI_GetSwitchinWeather(switchinBattler), AI_GetSwitchinFieldStatus(switchinBattler));
- CalcBattlerAiMovesData(gAiLogicData, battlerIndex, switchinBattler, AI_GetSwitchinWeather(switchinBattler), AI_GetSwitchinFieldStatus(switchinBattler));
+ SetBattlerStatStagesForSwitchin(switchinBattler, battlerIndex, switchinFieldStatus);
+ SetBattlerHPChangeForSwitch(switchinBattler, battlerIndex);
+ CalcBattlerAiMovesData(gAiLogicData, switchinBattler, battlerIndex, switchinWeather, switchinFieldStatus);
+ CalcBattlerAiMovesData(gAiLogicData, battlerIndex, switchinBattler, switchinWeather, switchinFieldStatus);
}
+ gAiLogicData->switchInCalc = FALSE;
+ gBattlerPartyIndexes[switchinBattler] = storeCurrBattlerPartyIndex;
gAiThinkingStruct->saved[switchinBattler].saved = FALSE;
}
@@ -170,6 +189,10 @@ u32 GetSwitchChance(enum ShouldSwitchScenario shouldSwitchScenario)
return SHOULD_SWITCH_REGENERATOR_PERCENTAGE;
case SHOULD_SWITCH_REGENERATOR_STATS_RAISED:
return SHOULD_SWITCH_REGENERATOR_STATS_RAISED_PERCENTAGE;
+ case SHOULD_SWITCH_INTIMIDATE:
+ return SHOULD_SWITCH_INTIMIDATE_PERCENTAGE;
+ case SHOULD_SWITCH_INTIMIDATE_STATS_RAISED:
+ return SHOULD_SWITCH_INTIMIDATE_STATS_RAISED_PERCENTAGE;
case SHOULD_SWITCH_ENCORE_STATUS:
return SHOULD_SWITCH_ENCORE_STATUS_PERCENTAGE;
case SHOULD_SWITCH_ENCORE_DAMAGE:
@@ -215,6 +238,35 @@ static bool32 AreStatsRaised(enum BattlerId battler)
return (buffedStatsValue > STAY_IN_STATS_RAISED);
}
+bool32 IsSwitchinTSpikesAffected(enum BattlerId battler)
+{
+ enum Ability ability = gAiLogicData->abilities[battler];
+ enum HoldEffect heldItemEffect = gAiLogicData->holdEffects[battler];
+ enum BattlerId opposingBattler = GetOppositeBattler(battler);
+ bool32 ignoreItem = ((gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) || ability == ABILITY_KLUTZ);
+ if (gBattleMons[battler].status1 & STATUS1_ANY)
+ return FALSE;
+ if (IS_BATTLER_ANY_TYPE(battler, TYPE_POISON, TYPE_STEEL))
+ return FALSE;
+ if (ability == ABILITY_IMMUNITY || IsAbilityOnSide(battler, ABILITY_PASTEL_VEIL))
+ return FALSE;
+ if ((heldItemEffect == HOLD_EFFECT_HEAVY_DUTY_BOOTS || heldItemEffect == HOLD_EFFECT_CURE_PSN || heldItemEffect == HOLD_EFFECT_CURE_STATUS) && !ignoreItem)
+ return FALSE;
+ if (!AI_IsBattlerGrounded(battler))
+ return FALSE;
+ if (IsMistyTerrainAffected(battler, ability, heldItemEffect, gFieldStatuses))
+ return FALSE;
+ if (IsLeafGuardProtected(battler, ability))
+ return FALSE;
+ if (IsShieldsDownProtected(battler, ability))
+ return FALSE;
+ if (IsFlowerVeilProtected(battler))
+ return FALSE;
+ if (IsSafeguardProtected(opposingBattler, battler, gAiLogicData->abilities[opposingBattler]))
+ return FALSE;
+ return TRUE;
+}
+
static inline bool32 SetSwitchinAndSwitch(enum BattlerId battler, u32 switchinId)
{
gBattleStruct->AI_monToSwitchIntoId[battler] = switchinId;
@@ -336,7 +388,7 @@ static bool32 ShouldSwitchIfHasBadOdds(enum BattlerId battler)
hasSuperEffectiveMove = TRUE;
// Check if can win 1v1
- hitsToKOPlayer = GetNoOfHitsToKOBattler(battler, opposingBattler, moveIndex, AI_ATTACKING, CONSIDER_ENDURE);
+ hitsToKOPlayer = GetNoOfHitsToKOBattler(battler, opposingBattler, moveIndex, AI_SWITCHIN_ATTACKING, CONSIDER_ENDURE);
if (!canBattlerWin1v1 ) // Once we can win a 1v1 we don't need to track this, but want to run the rest of the function to keep the runtime the same regardless of when we find the winning move
{
isBattlerFirst = AI_IsFaster(battler, opposingBattler, aiMove, expectedMove, CONSIDER_PRIORITY);
@@ -583,7 +635,7 @@ static bool32 FindMonThatAbsorbsOpponentsMove(enum BattlerId battler)
// Only check damage if it's a damaging move
if (!IsBattleMoveStatus(aiMove))
{
- if (!AI_DoesChoiceEffectBlockMove(battler, aiMove) && AI_GetDamage(battler, opposingBattler, moveIndex, AI_ATTACKING, gAiLogicData) > gBattleMons[opposingBattler].hp)
+ if (!AI_DoesChoiceEffectBlockMove(battler, aiMove) && AI_GetDamage(battler, opposingBattler, moveIndex, AI_SWITCHIN_ATTACKING, gAiLogicData) > gBattleMons[opposingBattler].hp)
return FALSE;
}
}
@@ -593,6 +645,7 @@ static bool32 FindMonThatAbsorbsOpponentsMove(enum BattlerId battler)
if (incomingType == TYPE_FIRE)
{
absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_FLASH_FIRE;
+ absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_WELL_BAKED_BODY;
}
if (incomingType == TYPE_WATER)
{
@@ -912,6 +965,103 @@ static bool32 GetHitEscapeTransformState(enum BattlerId battlerAtk, enum Move mo
return isFasterThanAll;
}
+static bool32 IsOpponentPhysicalAttacker(enum BattlerId battler, enum BattlerId opposingBattler)
+{
+ if (!IsBattlerAlive(opposingBattler))
+ return FALSE;
+
+ if (GetBestDmgFromBattler(opposingBattler, battler, AI_DEFENDING) > 0 && HasPhysicalBestMove(opposingBattler, battler, AI_DEFENDING))
+ return TRUE;
+
+ enum Move incomingMove = GetIncomingMove(battler, opposingBattler, gAiLogicData);
+ return incomingMove != MOVE_NONE
+ && incomingMove != MOVE_UNAVAILABLE
+ && GetBattleMoveCategory(incomingMove) == DAMAGE_CATEGORY_PHYSICAL;
+}
+
+static bool32 CanIntimidateLowerOpponentAtk(enum BattlerId battler, enum BattlerId opposingBattler)
+{
+ enum Ability abilityDef = gAiLogicData->abilities[opposingBattler];
+
+ // If Attack is already at -2 or lower, repeated Intimidate cycles aren't worth it.
+ if (gBattleMons[opposingBattler].statStages[STAT_ATK] <= DEFAULT_STAT_STAGE - 2)
+ return FALSE;
+
+ if (gBattleMons[opposingBattler].volatiles.substitute)
+ return FALSE;
+
+ if (gAiLogicData->holdEffects[opposingBattler] == HOLD_EFFECT_CLEAR_AMULET)
+ return FALSE;
+
+ if (gSideStatuses[GetBattlerSide(opposingBattler)] & SIDE_STATUS_MIST)
+ return FALSE;
+
+ if (IS_BATTLER_OF_TYPE(opposingBattler, TYPE_GRASS) && AI_IsAbilityOnSide(opposingBattler, ABILITY_FLOWER_VEIL))
+ return FALSE;
+
+ switch (abilityDef)
+ {
+ case ABILITY_HYPER_CUTTER:
+ case ABILITY_CLEAR_BODY:
+ case ABILITY_FULL_METAL_BODY:
+ case ABILITY_WHITE_SMOKE:
+ return FALSE;
+ default:
+ break;
+ }
+
+ if (GetConfig(B_UPDATED_INTIMIDATE) >= GEN_8)
+ {
+ switch (abilityDef)
+ {
+ case ABILITY_INNER_FOCUS:
+ case ABILITY_SCRAPPY:
+ case ABILITY_OWN_TEMPO:
+ case ABILITY_OBLIVIOUS:
+ return FALSE;
+ default:
+ break;
+ }
+ }
+
+ return TRUE;
+}
+
+static bool32 ShouldSwitchIfIntimidateBenefit(enum BattlerId battler)
+{
+ // Keep Intimidate cycling behavior restricted to smart-switching AI
+ if (!(gAiThinkingStruct->aiFlags[battler] & AI_FLAG_SMART_SWITCHING))
+ return FALSE;
+
+ enum BattlerId opposingBattler = GetOppositeBattler(battler);
+ enum BattlerId opposingPartner = BATTLE_PARTNER(opposingBattler);
+ bool32 hasValidTarget = FALSE;
+
+ if (IsBattlerAlive(opposingBattler))
+ {
+ enum Ability abilityDef = gAiLogicData->abilities[opposingBattler];
+ bool32 canLowerAtk = CanIntimidateLowerOpponentAtk(battler, opposingBattler);
+
+ if (canLowerAtk && (DoesIntimidateRaiseStats(abilityDef) || abilityDef == ABILITY_MIRROR_ARMOR))
+ return FALSE;
+ if (canLowerAtk && IsOpponentPhysicalAttacker(battler, opposingBattler))
+ hasValidTarget = TRUE;
+ }
+
+ if (IsDoubleBattle() && IsBattlerAlive(opposingPartner))
+ {
+ enum Ability abilityDef = gAiLogicData->abilities[opposingPartner];
+ bool32 canLowerAtk = CanIntimidateLowerOpponentAtk(battler, opposingPartner);
+
+ if (canLowerAtk && (DoesIntimidateRaiseStats(abilityDef) || abilityDef == ABILITY_MIRROR_ARMOR))
+ return FALSE;
+ if (canLowerAtk && IsOpponentPhysicalAttacker(battler, opposingPartner))
+ hasValidTarget = TRUE;
+ }
+
+ return hasValidTarget;
+}
+
static bool32 ShouldSwitchIfAbilityBenefit(enum BattlerId battler)
{
bool32 hasStatRaised = AnyUsefulStatIsRaised(battler);
@@ -949,20 +1099,21 @@ static bool32 ShouldSwitchIfAbilityBenefit(enum BattlerId battler)
return FALSE;
+ case ABILITY_INTIMIDATE:
+ // TODO: In ShouldSwitch cleanup, gate Intimidate cycling behind "stay in instead if the current mon wins the 1v1" to avoid duplicating Bad Odds logic here.
+ if (ShouldSwitchIfIntimidateBenefit(battler)
+ && gAiLogicData->mostSuitableMonId[battler] != PARTY_SIZE
+ && (hasStatRaised ? RandomPercentage(RNG_AI_SWITCH_INTIMIDATE, GetSwitchChance(SHOULD_SWITCH_INTIMIDATE_STATS_RAISED)) : RandomPercentage(RNG_AI_SWITCH_INTIMIDATE, GetSwitchChance(SHOULD_SWITCH_INTIMIDATE))))
+ break;
+
+ return FALSE;
+
case ABILITY_ZERO_TO_HERO:
{
enum Move hitEscapeMove = MOVE_NONE;
- for (u32 moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
- {
- enum Move move = gBattleMons[battler].moves[moveIndex];
-
- if (move != MOVE_NONE && GetMoveEffect(move) == EFFECT_HIT_ESCAPE)
- {
- hitEscapeMove = move;
- break;
- }
- }
+ if (GetBattlerMoveIndexWithEffect(battler, EFFECT_HIT_ESCAPE) < MAX_MON_MOVES)
+ hitEscapeMove = gBattleMons[battler].moves[GetBattlerMoveIndexWithEffect(battler, EFFECT_HIT_ESCAPE)];
// Prefer to use a hit escape move if Palafin will move first and can hit
if (hitEscapeMove != MOVE_NONE && GetHitEscapeTransformState(battler, hitEscapeMove))
@@ -1038,7 +1189,7 @@ static bool32 FindMonWithFlagsAndSuperEffective(enum BattlerId battler, u16 flag
for (u32 monIndex = firstId; monIndex < lastId; monIndex++)
{
- u16 species;
+ enum Species species;
enum Ability monAbility;
uq4_12_t typeMultiplier;
u16 moveFlags = 0;
@@ -1484,6 +1635,51 @@ bool32 IsSwitchinValid(enum BattlerId battler)
return TRUE;
}
+static u32 GetSwitchinSingleUseItemHealing(enum BattlerId battler, enum BattlerId opposingBattler, s32 currentHP)
+{
+ enum Item aiItem = gAiLogicData->items[battler];
+ u32 maxHP = gBattleMons[battler].maxHP;
+ s32 itemHeal = 0;
+
+ // Check if we're at a single use healing item threshold
+ if (currentHP <= 0
+ || gAiLogicData->abilities[battler] == ABILITY_KLUTZ
+ || (gAiLogicData->abilities[opposingBattler] == ABILITY_UNNERVE && GetItemPocket(aiItem) == POCKET_BERRIES))
+ return itemHeal;
+
+ switch (GetItemHoldEffect(aiItem))
+ {
+ case HOLD_EFFECT_RESTORE_HP:
+ if (currentHP < maxHP / 2)
+ itemHeal = GetItemHoldEffectParam(aiItem);
+ break;
+ case HOLD_EFFECT_RESTORE_PCT_HP:
+ if (currentHP < maxHP / 2)
+ {
+ itemHeal = maxHP / GetItemHoldEffectParam(aiItem);
+ if (itemHeal == 0)
+ itemHeal = 1;
+ }
+ break;
+ case HOLD_EFFECT_CONFUSE_SPICY:
+ case HOLD_EFFECT_CONFUSE_DRY:
+ case HOLD_EFFECT_CONFUSE_SWEET:
+ case HOLD_EFFECT_CONFUSE_BITTER:
+ case HOLD_EFFECT_CONFUSE_SOUR:
+ if (currentHP < maxHP / CONFUSE_BERRY_HP_FRACTION)
+ {
+ itemHeal = maxHP / GetItemHoldEffectParam(aiItem);
+ if (itemHeal == 0)
+ itemHeal = 1;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return itemHeal;
+}
+
// Gets hazard damage
static u32 GetSwitchinHazardsDamage(enum BattlerId battler)
{
@@ -1677,7 +1873,6 @@ static u32 GetSwitchinRecurringDamage(enum BattlerId battler)
static u32 GetSwitchinStatusDamage(enum BattlerId battler)
{
u8 tSpikesLayers = gSideTimers[GetBattlerSide(battler)].toxicSpikesAmount;
- enum HoldEffect heldItemEffect = gAiLogicData->holdEffects[battler];
u32 status = gBattleMons[battler].status1;
enum Ability ability = gAiLogicData->abilities[battler];
u32 maxHP = gBattleMons[battler].maxHP;
@@ -1725,13 +1920,7 @@ static u32 GetSwitchinStatusDamage(enum BattlerId battler)
// Apply hypothetical poisoning from Toxic Spikes, which means the first turn of damage already added in GetSwitchinHazardsDamage
// Do this last to skip one iteration of Poison / Toxic damage, and start counting Toxic damage one turn later.
- if (tSpikesLayers != 0 && (!IS_BATTLER_ANY_TYPE(battler, TYPE_POISON, TYPE_STEEL)
- && ability != ABILITY_IMMUNITY && ability != ABILITY_POISON_HEAL && ability != ABILITY_PASTEL_VEIL
- && status == 0
- && !(heldItemEffect == HOLD_EFFECT_HEAVY_DUTY_BOOTS
- && (((gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) || ability == ABILITY_KLUTZ)))
- && heldItemEffect != HOLD_EFFECT_CURE_PSN && heldItemEffect != HOLD_EFFECT_CURE_STATUS
- && AI_IsBattlerGrounded(battler)))
+ if (tSpikesLayers != 0 && IsSwitchinTSpikesAffected(battler))
{
if (tSpikesLayers == 1)
{
@@ -1773,7 +1962,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, enum BattlerId battler, const st
u32 statusDamage = GetSwitchinStatusDamage(battler);
u32 hitsToKO = 0;
u16 maxHP = gBattleMons[battler].maxHP, item = gAiLogicData->items[battler], heldItemEffect = GetItemHoldEffect(item);
- u8 weatherDuration = gBattleStruct->weatherDuration, holdEffectParam = GetItemHoldEffectParam(item);
+ u8 weatherDuration = gBattleStruct->weatherDuration;
enum BattlerId opposingBattler = GetOppositeBattler(battler);
enum Ability opposingAbility = gAiLogicData->abilities[opposingBattler], ability = gAiLogicData->abilities[battler];
bool32 usedSingleUseHealingItem = FALSE, opponentCanBreakMold = IsMoldBreakerTypeAbility(opposingBattler, opposingAbility);
@@ -1807,37 +1996,9 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, enum BattlerId battler, const st
currentHP = currentHP - weatherImpact;
// Check if we're at a single use healing item threshold
- if (currentHP > 0 && gAiLogicData->abilities[battler] != ABILITY_KLUTZ && usedSingleUseHealingItem == FALSE
- && !(opposingAbility == ABILITY_UNNERVE && GetItemPocket(item) == POCKET_BERRIES))
+ if (usedSingleUseHealingItem == FALSE)
{
- switch (heldItemEffect)
- {
- case HOLD_EFFECT_RESTORE_HP:
- if (currentHP < maxHP / 2)
- singleUseItemHeal = holdEffectParam;
- break;
- case HOLD_EFFECT_RESTORE_PCT_HP:
- if (currentHP < maxHP / 2)
- {
- singleUseItemHeal = maxHP / holdEffectParam;
- if (singleUseItemHeal == 0)
- singleUseItemHeal = 1;
- }
- break;
- case HOLD_EFFECT_CONFUSE_SPICY:
- case HOLD_EFFECT_CONFUSE_DRY:
- case HOLD_EFFECT_CONFUSE_SWEET:
- case HOLD_EFFECT_CONFUSE_BITTER:
- case HOLD_EFFECT_CONFUSE_SOUR:
- if (currentHP < maxHP / CONFUSE_BERRY_HP_FRACTION)
- {
- singleUseItemHeal = maxHP / holdEffectParam;
- if (singleUseItemHeal == 0)
- singleUseItemHeal = 1;
- }
- break;
- }
-
+ singleUseItemHeal = GetSwitchinSingleUseItemHealing(battler, opposingBattler, currentHP);
// If we used one, apply it without overcapping our maxHP
if (singleUseItemHeal > 0)
{
@@ -1971,7 +2132,7 @@ static s32 GetMaxDamagePlayerCouldDealToSwitchin(enum BattlerId battler, enum Ba
playerMove = SMART_SWITCHING_OMNISCIENT ? gBattleMons[opposingBattler].moves[moveIndex] : playerMoves[moveIndex];
if (playerMove != MOVE_NONE && !IsBattleMoveStatus(playerMove) && GetMoveEffect(playerMove) != EFFECT_FOCUS_PUNCH && gBattleMons[opposingBattler].pp[moveIndex] > 0)
{
- damageTaken = AI_GetDamage(opposingBattler, battler, moveIndex, AI_DEFENDING, gAiLogicData);
+ damageTaken = AI_GetDamage(opposingBattler, battler, moveIndex, AI_SWITCHIN_DEFENDING, gAiLogicData);
if (playerMove == gBattleStruct->choicedMove[opposingBattler]) // If player is choiced, only care about the choice locked move
{
*bestPlayerMove = playerMove;
@@ -2002,7 +2163,7 @@ static s32 GetMaxPriorityDamagePlayerCouldDealToSwitchin(enum BattlerId battler,
if (GetBattleMovePriority(opposingBattler, gAiLogicData->abilities[opposingBattler], playerMove) > 0
&& playerMove != MOVE_NONE && !IsBattleMoveStatus(playerMove) && GetMoveEffect(playerMove) != EFFECT_FOCUS_PUNCH && gBattleMons[opposingBattler].pp[moveIndex] > 0)
{
- damageTaken = AI_GetDamage(opposingBattler, battler, moveIndex, AI_DEFENDING, gAiLogicData);
+ damageTaken = AI_GetDamage(opposingBattler, battler, moveIndex, AI_SWITCHIN_DEFENDING, gAiLogicData);
if (playerMove == gBattleStruct->choicedMove[opposingBattler]) // If player is choiced, only care about the choice locked move
{
*bestPlayerPriorityMove = playerMove;
@@ -2138,7 +2299,7 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId,
}
validMonIds |= (1u << monIndex);
- InitializeSwitchinCandidate(battler, &party[monIndex]);
+ InitializeSwitchinCandidate(battler, monIndex, &party[monIndex]);
u32 originalHp = gBattleMons[battler].hp;
@@ -2168,8 +2329,8 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId,
continue;
aiMove = gBattleMons[battler].moves[moveIndex];
- damageDealt = AI_GetDamage(battler, opposingBattler, moveIndex, AI_ATTACKING, gAiLogicData);
- hitsToKOPlayer = GetNoOfHitsToKOBattler(battler, opposingBattler, moveIndex, AI_ATTACKING, CONSIDER_ENDURE);
+ damageDealt = AI_GetDamage(battler, opposingBattler, moveIndex, AI_SWITCHIN_ATTACKING, gAiLogicData);
+ hitsToKOPlayer = GetNoOfHitsToKOBattler(battler, opposingBattler, moveIndex, AI_SWITCHIN_ATTACKING, CONSIDER_ENDURE);
// Offensive switchin decisions are based on which whether switchin moves first and whether it can win a 1v1
isSwitchinFirst = AI_IsFaster(battler, opposingBattler, aiMove, bestPlayerMove, CONSIDER_PRIORITY);
@@ -2395,7 +2556,7 @@ static u32 GetBestMonVanilla(struct Pokemon *party, int firstId, int lastId, enu
continue;
}
validMonIds |= (1u << monIndex);
- InitializeSwitchinCandidate(battler, &party[monIndex]);
+ InitializeSwitchinCandidate(battler, monIndex, &party[monIndex]);
// While not really invalid per se, not really wise to switch into this mon
if (gAiLogicData->abilities[battler] == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler))
@@ -2427,7 +2588,7 @@ static u32 GetBestMonVanilla(struct Pokemon *party, int firstId, int lastId, enu
// Best damage
if (aiMove != MOVE_NONE && !IsBattleMoveStatus(aiMove))
{
- u32 aiDmg = AI_GetDamage(battler, opposingBattler, moveIndex, AI_ATTACKING, gAiLogicData);
+ u32 aiDmg = AI_GetDamage(battler, opposingBattler, moveIndex, AI_SWITCHIN_ATTACKING, gAiLogicData);
if (aiDmg > bestDamage)
{
bestDamage = aiDmg;
@@ -2557,7 +2718,7 @@ u32 AI_SelectRevivalBlessingMon(enum BattlerId battler)
bool32 isAceMon = IsAceMon(battler, monIndex);
- InitializeSwitchinCandidate(battler, &party[monIndex]);
+ InitializeSwitchinCandidate(battler, monIndex, &party[monIndex]);
gBattleMons[battler].hp = gBattleMons[battler].maxHP / 2; // Revival Blessing restores half HP
gBattleMons[battler].status1 = 0;
@@ -2572,7 +2733,7 @@ u32 AI_SelectRevivalBlessingMon(enum BattlerId battler)
if (aiMove == MOVE_NONE || gBattleMons[battler].pp[moveIndex] == 0)
continue;
- s32 damage = AI_GetDamage(battler, opposingBattler, moveIndex, AI_ATTACKING, gAiLogicData);
+ s32 damage = AI_GetDamage(battler, opposingBattler, moveIndex, AI_SWITCHIN_ATTACKING, gAiLogicData);
if (damage > bestDamage)
bestDamage = damage;
}
@@ -2607,3 +2768,196 @@ u32 AI_SelectRevivalBlessingMon(enum BattlerId battler)
return bestMonId;
}
+
+static void SetBattlerStatusForSwitchin(enum BattlerId battler)
+{
+ u32 tSpikesLayers = gSideTimers[GetBattlerSide(battler)].toxicSpikesAmount;
+ if (tSpikesLayers != 0 && IsSwitchinTSpikesAffected(battler))
+ {
+ if (tSpikesLayers == 1)
+ gBattleMons[battler].status1 = STATUS1_POISON;
+ if (tSpikesLayers == 2)
+ {
+ gBattleMons[battler].status1 = STATUS1_TOXIC_POISON;
+ gBattleMons[battler].status1 += STATUS1_TOXIC_TURN(1);
+ }
+ }
+}
+
+static void SetBattlerStatStagesForSwitchin(enum BattlerId battler, enum BattlerId opposingBattler, u32 fieldStatus)
+{
+ u32 aiAbility = gAiLogicData->abilities[battler];
+ enum Item aiItem = gAiLogicData->items[battler];
+ bool32 isStickyWebsAffected = (IsHazardOnSide(GetBattlerSide(battler), HAZARDS_STICKY_WEB) && IsBattlerAffectedByHazards(battler, GetItemHoldEffect(aiItem), FALSE) && IsBattlerGrounded(battler, gAiLogicData->abilities[battler], GetItemHoldEffect(aiItem)));
+ bool32 opponentStatDrop = FALSE;
+
+ // Ability stat changes
+ switch(aiAbility)
+ {
+ case ABILITY_INTREPID_SWORD:
+ gBattleMons[battler].statStages[STAT_ATK] += 1;
+ break;
+ case ABILITY_DAUNTLESS_SHIELD:
+ gBattleMons[battler].statStages[STAT_DEF] += 1;
+ break;
+ case ABILITY_SUPREME_OVERLORD:
+ break;
+ case ABILITY_DOWNLOAD:
+ gBattleMons[battler].statStages[GetDownloadStat(battler)] += 1;
+ break;
+ case ABILITY_INTIMIDATE:
+ if (CanLowerStat(battler, opposingBattler, gAiLogicData, STAT_ATK))
+ {
+ if (gAiLogicData->abilities[opposingBattler] == ABILITY_CONTRARY)
+ {
+ gBattleMons[opposingBattler].statStages[STAT_ATK] += 1;
+ }
+ else
+ {
+ opponentStatDrop = TRUE;
+ gBattleMons[opposingBattler].statStages[STAT_ATK] -= 1;
+ if (gAiLogicData->abilities[opposingBattler] == ABILITY_DEFIANT)
+ gBattleMons[opposingBattler].statStages[STAT_ATK] += 2;
+ if (gAiLogicData->abilities[opposingBattler] == ABILITY_COMPETITIVE)
+ gBattleMons[opposingBattler].statStages[STAT_SPATK] += 2;
+ }
+ }
+ break;
+ case ABILITY_SUPERSWEET_SYRUP:
+ if (CanLowerStat(battler, opposingBattler, gAiLogicData, STAT_EVASION))
+ {
+ if (gAiLogicData->abilities[opposingBattler] == ABILITY_CONTRARY)
+ {
+ gBattleMons[opposingBattler].statStages[STAT_EVASION] += 1;
+ }
+ else
+ {
+ opponentStatDrop = TRUE;
+ gBattleMons[opposingBattler].statStages[STAT_EVASION] -= 1;
+ if (gAiLogicData->abilities[opposingBattler] == ABILITY_DEFIANT)
+ gBattleMons[opposingBattler].statStages[STAT_ATK] += 2;
+ if (gAiLogicData->abilities[opposingBattler] == ABILITY_COMPETITIVE)
+ gBattleMons[opposingBattler].statStages[STAT_SPATK] += 2;
+ }
+ }
+ break;
+ case ABILITY_WIND_RIDER:
+ if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_TAILWIND)
+ gBattleMons[battler].statStages[STAT_ATK] += 1;
+ break;
+ case ABILITY_DEFIANT:
+ if (isStickyWebsAffected)
+ gBattleMons[battler].statStages[STAT_ATK] += 2;
+ break;
+ case ABILITY_COMPETITIVE:
+ if (isStickyWebsAffected)
+ gBattleMons[battler].statStages[STAT_SPATK] += 2;
+ break;
+ case ABILITY_CONTRARY:
+ if (isStickyWebsAffected)
+ gBattleMons[battler].statStages[STAT_SPEED] += 1;
+ default:
+ break;
+ }
+
+ // Item stat changes
+ switch(GetItemHoldEffect(aiItem))
+ {
+ case HOLD_EFFECT_TERRAIN_SEED:
+ {
+ u32 seedParam = GetItemHoldEffectParam(aiItem);
+ if ((seedParam == HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN && (fieldStatus & STATUS_FIELD_ELECTRIC_TERRAIN))
+ || (seedParam == HOLD_EFFECT_PARAM_GRASSY_TERRAIN && (fieldStatus & STATUS_FIELD_GRASSY_TERRAIN))
+ || (seedParam == HOLD_EFFECT_PARAM_MISTY_TERRAIN && (fieldStatus & STATUS_FIELD_MISTY_TERRAIN))
+ || (seedParam == HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN && (fieldStatus & STATUS_FIELD_PSYCHIC_TERRAIN)))
+ gBattleMons[battler].statStages[STAT_DEF] += 1;
+ break;
+ }
+ case HOLD_EFFECT_ATTACK_UP:
+ if (HasEnoughHpToEatBerry(battler, aiAbility, GetItemHoldEffectParam(aiItem), aiItem))
+ gBattleMons[battler].statStages[STAT_ATK] += 1;
+ break;
+ case HOLD_EFFECT_DEFENSE_UP:
+ if (HasEnoughHpToEatBerry(battler, aiAbility, GetItemHoldEffectParam(aiItem), aiItem))
+ gBattleMons[battler].statStages[STAT_DEF] += 1;
+ break;
+ case HOLD_EFFECT_SPEED_UP:
+ if (HasEnoughHpToEatBerry(battler, aiAbility, GetItemHoldEffectParam(aiItem), aiItem))
+ gBattleMons[battler].statStages[STAT_SPEED] += 1;
+ break;
+ case HOLD_EFFECT_SP_ATTACK_UP:
+ if (HasEnoughHpToEatBerry(battler, aiAbility, GetItemHoldEffectParam(aiItem), aiItem))
+ gBattleMons[battler].statStages[STAT_SPATK] += 1;
+ break;
+ case HOLD_EFFECT_SP_DEFENSE_UP:
+ if (HasEnoughHpToEatBerry(battler, aiAbility, GetItemHoldEffectParam(aiItem), aiItem))
+ gBattleMons[battler].statStages[STAT_SPDEF] += 1;
+ break;
+ case HOLD_EFFECT_ROOM_SERVICE:
+ if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM)
+ gBattleMons[battler].statStages[STAT_SPEED] -= 1;
+ case HOLD_EFFECT_MIRROR_HERB:
+ if (opponentStatDrop && gAiLogicData->abilities[opposingBattler] == ABILITY_DEFIANT)
+ gBattleMons[battler].statStages[STAT_ATK] += 2;
+ if (opponentStatDrop && gAiLogicData->abilities[opposingBattler] == ABILITY_COMPETITIVE)
+ gBattleMons[battler].statStages[STAT_SPATK] += 2;
+ break;
+ default:
+ break;
+ }
+
+ // Hazard stat changes
+ if (isStickyWebsAffected && GetItemHoldEffect(aiItem) != HOLD_EFFECT_WHITE_HERB)
+ gBattleMons[battler].statStages[STAT_SPEED] -= 1;
+}
+
+static void SetBattlerHPChangeForSwitch(enum BattlerId battler, enum BattlerId opposingBattler)
+{
+ s32 maxHP = gBattleMons[battler].maxHP;
+ s32 currentHP = gBattleMons[battler].hp - GetSwitchinHazardsDamage(battler);
+ s32 itemHeal = GetSwitchinSingleUseItemHealing(battler, opposingBattler, currentHP);
+
+ if (itemHeal > 0)
+ {
+ if ((currentHP + itemHeal) > maxHP)
+ currentHP = maxHP;
+ else
+ currentHP = currentHP + itemHeal;
+ }
+ gBattleMons[battler].hp = currentHP;
+}
+
+// Set potential field effect from ability for switch in
+static void SetBattlerVolatilesForSwitchin(enum BattlerId battler, u32 weather, u32 fieldStatus)
+{
+ enum Item aiItem = gAiLogicData->items[battler];
+ switch (gAiLogicData->abilities[battler])
+ {
+ case ABILITY_VESSEL_OF_RUIN:
+ gBattleMons[battler].volatiles.vesselOfRuin = TRUE;
+ break;
+ case ABILITY_SWORD_OF_RUIN:
+ gBattleMons[battler].volatiles.swordOfRuin = TRUE;
+ break;
+ case ABILITY_TABLETS_OF_RUIN:
+ gBattleMons[battler].volatiles.tabletsOfRuin = TRUE;
+ break;
+ case ABILITY_BEADS_OF_RUIN:
+ gBattleMons[battler].volatiles.beadsOfRuin = TRUE;
+ break;
+ case ABILITY_QUARK_DRIVE:
+ if ((fieldStatus & STATUS_FIELD_ELECTRIC_TERRAIN) || GetItemHoldEffect(aiItem) == HOLD_EFFECT_BOOSTER_ENERGY)
+ gBattleMons[battler].volatiles.boosterEnergyActivated = TRUE;
+ break;
+ case ABILITY_PROTOSYNTHESIS:
+ if (((weather & B_WEATHER_SUN) && HasWeatherEffect()) || GetItemHoldEffect(aiItem) == HOLD_EFFECT_BOOSTER_ENERGY)
+ gBattleMons[battler].volatiles.boosterEnergyActivated = TRUE;
+ break;
+ case ABILITY_WIND_POWER:
+ if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_TAILWIND)
+ gBattleMons[battler].volatiles.chargeTimer = 2;
+ break;
+ default:
+ break;
+ }
+}
diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c
index a3e21385eb..c43862d739 100644
--- a/src/battle_ai_util.c
+++ b/src/battle_ai_util.c
@@ -23,6 +23,7 @@
#include "constants/moves.h"
#include "constants/items.h"
+static void AI_SetBattlerTurnOrder(u8 *aiTurnOrder);
static u32 GetAIEffectGroup(enum BattleMoveEffects effect);
static u32 GetAIEffectGroupFromMove(enum BattlerId battler, enum Move move);
@@ -90,6 +91,23 @@ enum MoveTarget AI_GetBattlerMoveTargetType(enum BattlerId battler, enum Move mo
return GetMoveTarget(move);
}
+u32 AI_GetDefaultDamageRollForContext(enum BattlerId battlerAtk, enum BattlerId battlerDef, u32 moveIndex, struct AiLogicData *aiData, u32 aiRoll)
+{
+ switch (aiRoll)
+ {
+ case AI_ROLL_MIN:
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum;
+ case AI_ROLL_MEDIAN:
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].median;
+ case AI_ROLL_MAX:
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum;
+ case AI_ROLL_RANDOM:
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].random;
+ default:
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].median; // Default assumes it deals median damage
+ }
+}
+
u32 AI_GetDamage(enum BattlerId battlerAtk, enum BattlerId battlerDef, u32 moveIndex, enum DamageCalcContext calcContext, struct AiLogicData *aiData)
{
if (calcContext == AI_ATTACKING && BattlerHasAi(battlerAtk))
@@ -98,7 +116,7 @@ u32 AI_GetDamage(enum BattlerId battlerAtk, enum BattlerId battlerDef, u32 moveI
return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum;
if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) // Conservative assumes it deals min damage
return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum;
- return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].median; // Default assumes it deals median damage
+ return AI_GetDefaultDamageRollForContext(battlerAtk, battlerDef, moveIndex, aiData, GetConfig(AI_ROLL_ATTACKING));
}
else if (calcContext == AI_DEFENDING && BattlerHasAi(battlerDef))
{
@@ -106,7 +124,39 @@ u32 AI_GetDamage(enum BattlerId battlerAtk, enum BattlerId battlerDef, u32 moveI
return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum;
if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) // Conservative assumes it takes max damage
return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum;
- return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].median; // Default assumes it takes median damage
+ return AI_GetDefaultDamageRollForContext(battlerAtk, battlerDef, moveIndex, aiData, AI_ROLL_DEFENDING);
+ }
+ else if (calcContext == AI_SWITCHIN_ATTACKING && BattlerHasAi(battlerAtk))
+ {
+ if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE)) // Risky assumes it deals max damage
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum;
+ if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) // Conservative assumes it deals min damage
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum;
+ return AI_GetDefaultDamageRollForContext(battlerAtk, battlerDef, moveIndex, aiData, AI_ROLL_SWITCHIN_ATTACKING);
+ }
+ else if (calcContext == AI_SWITCHIN_DEFENDING && BattlerHasAi(battlerDef))
+ {
+ if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE)) // Risky assumes it takes min damage
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum;
+ if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) // Conservative assumes it takes max damage
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum;
+ return AI_GetDefaultDamageRollForContext(battlerAtk, battlerDef, moveIndex, aiData, AI_ROLL_SWITCHIN_DEFENDING);
+ }
+ else if (calcContext == AI_SHOULD_SETUP_DEFENDING && BattlerHasAi(battlerDef))
+ {
+ if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE)) // Risky assumes it takes min damage
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum;
+ if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) // Conservative assumes it takes max damage
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum;
+ return AI_GetDefaultDamageRollForContext(battlerAtk, battlerDef, moveIndex, aiData, AI_ROLL_SHOULD_SETUP_DEFENDING);
+ }
+ else if (calcContext == AI_ATTACKING_PARTNER && BattlerHasAi(battlerAtk))
+ {
+ if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE)) // Risky assumes it deals max damage
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum;
+ if ((gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) && !(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)) // Conservative assumes it deals min damage
+ return aiData->simulatedDmg[battlerAtk][battlerDef][moveIndex].minimum;
+ return AI_GetDefaultDamageRollForContext(battlerAtk, battlerDef, moveIndex, aiData, AI_ROLL_ATTACKING_PARTNER);
}
else
{
@@ -298,7 +348,7 @@ bool32 ShouldRecordStatusMove(enum Move move)
return RandomPercentage(RNG_AI_ASSUME_ALL_STATUS, ASSUME_ALL_STATUS_ODDS) && IsBattleMoveStatus(move);
}
-static bool32 ShouldFailForIllusion(u32 illusionSpecies, enum BattlerId battlerId)
+static bool32 ShouldFailForIllusion(enum Species illusionSpecies, enum BattlerId battlerId)
{
u32 learnsetMoveIndex;
const struct LevelUpMove *learnset;
@@ -338,7 +388,7 @@ void SetBattlerData(enum BattlerId battlerId)
{
if (!BattlerHasAi(battlerId) && gAiThinkingStruct->saved[battlerId].saved)
{
- u32 species, illusionSpecies;
+ enum Species species, illusionSpecies;
enum BattleSide side = GetBattlerSide(battlerId);
// Simulate Illusion
@@ -437,10 +487,10 @@ bool32 IsBattlerTrapped(enum BattlerId battlerAtk, enum BattlerId battlerDef)
&& (B_SHADOW_TAG_ESCAPE >= GEN_4 && gAiLogicData->abilities[battlerDef] != ABILITY_SHADOW_TAG))
return TRUE;
if (AI_IsAbilityOnSide(battlerAtk, ABILITY_ARENA_TRAP)
- && AI_IsBattlerGrounded(battlerAtk))
+ && AI_IsBattlerGrounded(battlerDef))
return TRUE;
if (AI_IsAbilityOnSide(battlerAtk, ABILITY_MAGNET_PULL)
- && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_STEEL))
+ && IS_BATTLER_OF_TYPE(battlerDef, TYPE_STEEL))
return TRUE;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && CountUsablePartyMons(battlerDef) == 0)
@@ -561,6 +611,14 @@ static inline s32 DmgRoll(s32 dmg)
return dmg;
}
+static inline s32 RandomRollDmg(s32 dmg)
+{
+ u32 randomRollPercentage = RandomUniform(RNG_AI_DMG_ROLL_RANDOM, MIN_ROLL_PERCENTAGE, MAX_ROLL_PERCENTAGE);
+ dmg *= randomRollPercentage;
+ dmg /= 100;
+ return dmg;
+}
+
bool32 IsDamageMoveUnusable(struct BattleContext *ctx)
{
enum Ability battlerDefAbility;
@@ -671,6 +729,8 @@ static inline s32 GetDamageByRollType(s32 dmg, enum DamageRollType rollType)
return LowestRollDmg(dmg);
else if (rollType == DMG_ROLL_HIGHEST)
return HighestRollDmg(dmg);
+ else if (rollType == DMG_ROLL_RANDOM)
+ return RandomRollDmg(dmg);
else
return DmgRoll(dmg);
}
@@ -689,12 +749,13 @@ static inline void AI_RestoreBattlerTypes(enum BattlerId battlerAtk, enum Type *
gBattleMons[battlerAtk].types[2] = types[2];
}
-static inline void CalcDynamicMoveDamage(struct BattleContext *ctx, u16 *medianDamage, u16 *minimumDamage, u16 *maximumDamage)
+static inline void CalcDynamicMoveDamage(struct BattleContext *ctx, u16 *medianDamage, u16 *minimumDamage, u16 *maximumDamage, u16 *randomDamage)
{
enum BattleMoveEffects effect = GetMoveEffect(ctx->move);
u16 median = *medianDamage;
u16 minimum = *minimumDamage;
u16 maximum = *maximumDamage;
+ u16 random = *randomDamage;
u32 strikeCount = GetMoveStrikeCount(ctx->move);
@@ -708,7 +769,7 @@ static inline void CalcDynamicMoveDamage(struct BattleContext *ctx, u16 *medianD
median = 0;
for (i = 0; i < partyCount; i++)
median += CalculateMoveDamage(ctx);
- maximum = minimum = median;
+ maximum = minimum = median = random;
gBattleStruct->beatUpSlot = 0;
}
else if (strikeCount > 1 && effect != EFFECT_TRIPLE_KICK)
@@ -716,6 +777,7 @@ static inline void CalcDynamicMoveDamage(struct BattleContext *ctx, u16 *medianD
median *= strikeCount;
minimum *= strikeCount;
maximum *= strikeCount;
+ random *= strikeCount;
}
else if (IsMultiHitMove(ctx->move))
{
@@ -724,12 +786,14 @@ static inline void CalcDynamicMoveDamage(struct BattleContext *ctx, u16 *medianD
median *= GetMoveSpeciesPowerOverride_NumOfHits(ctx->move);
minimum *= GetMoveSpeciesPowerOverride_NumOfHits(ctx->move);
maximum *= GetMoveSpeciesPowerOverride_NumOfHits(ctx->move);
+ random *= GetMoveSpeciesPowerOverride_NumOfHits(ctx->move);
}
else if (ctx->abilityAtk == ABILITY_SKILL_LINK)
{
median *= 5;
minimum *= 5;
maximum *= 5;
+ random *= 5;
}
else if (ctx->holdEffectAtk == HOLD_EFFECT_LOADED_DICE)
{
@@ -737,12 +801,14 @@ static inline void CalcDynamicMoveDamage(struct BattleContext *ctx, u16 *medianD
median /= 2;
minimum *= 4;
maximum *= 5;
+ random *= RandomUniform(RNG_AI_DMG_ROLL_RANDOM, 4, 5);
}
else
{
median *= 3;
minimum *= 2;
maximum *= 5;
+ random *= RandomUniform(RNG_AI_DMG_ROLL_RANDOM, 2, 5);
}
}
else if (ctx->abilityAtk == ABILITY_PARENTAL_BOND
@@ -752,6 +818,7 @@ static inline void CalcDynamicMoveDamage(struct BattleContext *ctx, u16 *medianD
median += median / (B_PARENTAL_BOND_DMG >= GEN_7 ? 4 : 2);
minimum += minimum / (B_PARENTAL_BOND_DMG >= GEN_7 ? 4 : 2);
maximum += maximum / (B_PARENTAL_BOND_DMG >= GEN_7 ? 4 : 2);
+ random += random / (B_PARENTAL_BOND_DMG >= GEN_7 ? 4 : 2);
}
if (median == 0)
@@ -760,10 +827,13 @@ static inline void CalcDynamicMoveDamage(struct BattleContext *ctx, u16 *medianD
minimum = 1;
if (maximum == 0)
maximum = 1;
+ if (random == 0)
+ random = 1;
*medianDamage = median;
*minimumDamage = minimum;
*maximumDamage = maximum;
+ *randomDamage = random;
}
static inline bool32 ShouldCalcCritDamage(struct BattleContext *ctx)
@@ -879,6 +949,7 @@ struct SimulatedDamage AI_CalcDamage(enum Move move, enum BattlerId battlerAtk,
ctx.abilityDef = AI_GetMoldBreakerSanitizedAbility(battlerAtk, ctx.abilityAtk, aiData->abilities[battlerDef], ctx.holdEffectDef, move);
ctx.isCrit = ShouldCalcCritDamage(&ctx);
ctx.typeEffectivenessModifier = CalcTypeEffectivenessMultiplier(&ctx);
+ AI_SetBattlerTurnOrder(ctx.aiTurnOrder);
u32 movePower = GetMovePower(move);
@@ -891,7 +962,7 @@ struct SimulatedDamage AI_CalcDamage(enum Move move, enum BattlerId battlerAtk,
s32 fixedDamage = DoFixedDamageMoveCalc(&ctx);
if (fixedDamage != INT32_MAX)
{
- simDamage.minimum = simDamage.median = simDamage.maximum = fixedDamage;
+ simDamage.minimum = simDamage.median = simDamage.maximum = simDamage.random = fixedDamage;
}
else if (moveEffect == EFFECT_TRIPLE_KICK)
{
@@ -904,11 +975,14 @@ struct SimulatedDamage AI_CalcDamage(enum Move move, enum BattlerId battlerAtk,
damageByRollType = GetDamageByRollType(oneTripleKickHit, DMG_ROLL_LOWEST);
simDamage.minimum += AI_ApplyModifiersAfterDmgRoll(&ctx, damageByRollType);
- damageByRollType = GetDamageByRollType(oneTripleKickHit, DMG_ROLL_DEFAULT);
+ damageByRollType = GetDamageByRollType(oneTripleKickHit, DMG_ROLL_MEDIAN);
simDamage.median += AI_ApplyModifiersAfterDmgRoll(&ctx, damageByRollType);
damageByRollType = GetDamageByRollType(oneTripleKickHit, DMG_ROLL_HIGHEST);
simDamage.maximum += AI_ApplyModifiersAfterDmgRoll(&ctx, damageByRollType);
+
+ damageByRollType = GetDamageByRollType(oneTripleKickHit, DMG_ROLL_RANDOM);
+ simDamage.random += AI_ApplyModifiersAfterDmgRoll(&ctx, damageByRollType);
}
}
else
@@ -918,15 +992,18 @@ struct SimulatedDamage AI_CalcDamage(enum Move move, enum BattlerId battlerAtk,
simDamage.minimum = GetDamageByRollType(damage, DMG_ROLL_LOWEST);
simDamage.minimum = AI_ApplyModifiersAfterDmgRoll(&ctx, simDamage.minimum);
- simDamage.median = GetDamageByRollType(damage, DMG_ROLL_DEFAULT);
+ simDamage.median = GetDamageByRollType(damage, DMG_ROLL_MEDIAN);
simDamage.median = AI_ApplyModifiersAfterDmgRoll(&ctx, simDamage.median);
simDamage.maximum = GetDamageByRollType(damage, DMG_ROLL_HIGHEST);
simDamage.maximum = AI_ApplyModifiersAfterDmgRoll(&ctx, simDamage.maximum);
+
+ simDamage.random = GetDamageByRollType(damage, DMG_ROLL_RANDOM);
+ simDamage.random = AI_ApplyModifiersAfterDmgRoll(&ctx, simDamage.random);
}
if (GetActiveGimmick(battlerAtk) != GIMMICK_Z_MOVE)
- CalcDynamicMoveDamage(&ctx, &simDamage.median, &simDamage.minimum, &simDamage.maximum);
+ CalcDynamicMoveDamage(&ctx, &simDamage.median, &simDamage.minimum, &simDamage.maximum, &simDamage.random);
AI_RestoreBattlerTypes(battlerAtk, types);
}
@@ -935,6 +1012,7 @@ struct SimulatedDamage AI_CalcDamage(enum Move move, enum BattlerId battlerAtk,
simDamage.minimum = 0;
simDamage.median = 0;
simDamage.maximum = 0;
+ simDamage.random = 0;
}
// convert multiper to AI_EFFECTIVENESS_xX
@@ -1254,7 +1332,7 @@ static bool32 AI_IsMoveEffectInMinus(enum BattlerId battlerAtk, enum BattlerId b
// Checks if one of the moves has side effects or perks, assuming equal dmg or equal no of hits to KO
enum MoveComparisonResult CompareMoveEffects(enum Move move1, enum Move move2, enum BattlerId battlerAtk, enum BattlerId battlerDef, s32 noOfHitsToKo)
{
- bool32 effect1, effect2;
+ bool32 effect1minus, effect1plus, effect2minus, effect2plus;
enum Ability defAbility = gAiLogicData->abilities[battlerDef];
enum Ability atkAbility = gAiLogicData->abilities[battlerAtk];
@@ -1272,18 +1350,24 @@ enum MoveComparisonResult CompareMoveEffects(enum Move move1, enum Move move2, e
}
// Check additional effects.
- effect1 = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move1, noOfHitsToKo);
- effect2 = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move2, noOfHitsToKo);
- if (effect2 && !effect1)
+ gAiThinkingStruct->movesetIndex = GetMoveIndex(battlerAtk, move1);
+ effect1minus = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move1, noOfHitsToKo);
+ effect1plus = AI_IsMoveEffectInPlus(battlerAtk, battlerDef, move1, noOfHitsToKo);
+
+ gAiThinkingStruct->movesetIndex = GetMoveIndex(battlerAtk, move2);
+ effect2plus = AI_IsMoveEffectInPlus(battlerAtk, battlerDef, move2, noOfHitsToKo);
+ effect2minus = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move2, noOfHitsToKo);
+
+ gAiThinkingStruct->movesetIndex = 0;
+
+ if (effect2minus && !effect1minus)
return MOVE_WON_COMPARISON;
- if (effect1 && !effect2)
+ if (effect1minus && !effect2minus)
return MOVE_LOST_COMPARISON;
- effect1 = AI_IsMoveEffectInPlus(battlerAtk, battlerDef, move1, noOfHitsToKo);
- effect2 = AI_IsMoveEffectInPlus(battlerAtk, battlerDef, move2, noOfHitsToKo);
- if (effect2 && !effect1)
+ if (effect2plus && !effect1plus)
return MOVE_LOST_COMPARISON;
- if (effect1 && !effect2)
+ if (effect1plus && !effect2plus)
return MOVE_WON_COMPARISON;
return MOVE_NEUTRAL_COMPARISON;
@@ -1474,14 +1558,14 @@ bool32 CanTargetFaintAi(enum BattlerId battlerDef, enum BattlerId battlerAtk)
return FALSE;
}
-u32 NoOfHitsForTargetToFaintBattler(enum BattlerId battlerDef, enum BattlerId battlerAtk, enum AiConsiderEndure considerEndure)
+u32 NoOfHitsForTargetToFaintBattler(enum BattlerId battlerDef, enum BattlerId battlerAtk, enum DamageCalcContext calcContext, enum AiConsiderEndure considerEndure)
{
u32 currNumberOfHits;
u32 leastNumberOfHits = UNKNOWN_NO_OF_HITS;
for (u32 moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
{
- currNumberOfHits = GetNoOfHitsToKOBattler(battlerDef, battlerAtk, moveIndex, AI_DEFENDING, considerEndure);
+ currNumberOfHits = GetNoOfHitsToKOBattler(battlerDef, battlerAtk, moveIndex, calcContext, considerEndure);
if (currNumberOfHits != 0)
{
if (currNumberOfHits < leastNumberOfHits)
@@ -1528,7 +1612,7 @@ void GetBestDmgMovesFromBattler(enum BattlerId battlerAtk, enum BattlerId battle
{
for (u32 moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++)
{
- if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, moveIndex, AI_ATTACKING))
+ if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, moveIndex, calcContext))
bestMoves[countBestMoves++] = moves[moveIndex];
}
}
@@ -1574,7 +1658,7 @@ bool32 IsBestDmgMove(enum BattlerId battlerAtk, enum BattlerId battlerDef, enum
enum Move bestMoves[MAX_MON_MOVES] = {MOVE_NONE};
u32 index = GetMoveIndex(battlerAtk, move);
- if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, index, AI_ATTACKING))
+ if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, index, calcContext))
return TRUE;
GetBestDmgMovesFromBattler(battlerAtk, battlerDef, calcContext, bestMoves);
@@ -1857,6 +1941,7 @@ u32 AI_GetSwitchinWeather(enum BattlerId battler)
case ABILITY_DRIZZLE:
return B_WEATHER_RAIN_NORMAL;
case ABILITY_DROUGHT:
+ case ABILITY_ORICHALCUM_PULSE:
return B_WEATHER_SUN_NORMAL;
case ABILITY_SAND_STREAM:
return B_WEATHER_SANDSTORM;
@@ -2101,10 +2186,8 @@ bool32 ShouldTryOHKO(enum BattlerId battlerAtk, enum BattlerId battlerDef, enum
if (!DoesBattlerIgnoreAbilityChecks(battlerAtk, atkAbility, move) && defAbility == ABILITY_STURDY)
return FALSE;
- if (((gBattleMons[battlerDef].volatiles.lockOn
- && gBattleMons[battlerDef].volatiles.battlerWithSureHit == battlerAtk)
- || atkAbility == ABILITY_NO_GUARD || defAbility == ABILITY_NO_GUARD)
- && gBattleMons[battlerAtk].level >= gBattleMons[battlerDef].level)
+ bool32 sureHit = (gBattleMons[battlerAtk].volatiles.battlerWithSureHit == battlerDef + 1) || atkAbility == ABILITY_NO_GUARD || defAbility == ABILITY_NO_GUARD;
+ if (sureHit && gBattleMons[battlerAtk].level >= gBattleMons[battlerDef].level)
{
return TRUE;
}
@@ -2446,7 +2529,7 @@ bool32 CanIndexMoveFaintTarget(enum BattlerId battlerAtk, enum BattlerId battler
enum Move *moves = gBattleMons[battlerAtk].moves;
if (IsDoubleBattle() && battlerDef == BATTLE_PARTNER(battlerAtk))
- dmg = gAiLogicData->simulatedDmg[battlerAtk][battlerDef][moveIndex].maximum; // Attacking partner, be careful
+ dmg = AI_GetDamage(battlerAtk, battlerDef, moveIndex, AI_ATTACKING_PARTNER, gAiLogicData); // Attacking partner, be careful
else
dmg = AI_GetDamage(battlerAtk, battlerDef, moveIndex, calcContext, gAiLogicData);
@@ -3931,7 +4014,7 @@ static inline bool32 RecoveryEnablesWinning1v1(enum BattlerId battlerAtk, enum B
{
if (!CanTargetFaintAi(battlerDef, battlerAtk)
&& GetBestDmgFromBattler(battlerDef, battlerAtk, AI_DEFENDING) < healAmount
- && NoOfHitsForTargetToFaintBattler(battlerDef, battlerAtk, CONSIDER_ENDURE) < NoOfHitsForTargetToFaintBattlerWithMod(battlerDef, battlerAtk, healAmount))
+ && NoOfHitsForTargetToFaintBattler(battlerDef, battlerAtk, AI_DEFENDING, CONSIDER_ENDURE) < NoOfHitsForTargetToFaintBattlerWithMod(battlerDef, battlerAtk, healAmount))
return TRUE; // target can't faint attacker and is dealing less damage than we're healing
else if (!CanTargetFaintAi(battlerDef, battlerAtk) && gAiLogicData->hpPercents[battlerAtk] < ENABLE_RECOVERY_THRESHOLD && RandomPercentage(RNG_AI_SHOULD_RECOVER, SHOULD_RECOVER_CHANCE))
return TRUE; // target can't faint attacker at all, generally safe
@@ -4517,28 +4600,6 @@ void FreeRestoreAiLogicData(struct AiLogicData *savedAiLogicData)
Free(savedAiLogicData);
}
-// Set potential field effect from ability for switch in
-void SetBattlerFieldStatusForSwitchin(enum BattlerId battler)
-{
- switch (gAiLogicData->abilities[battler])
- {
- case ABILITY_VESSEL_OF_RUIN:
- gBattleMons[battler].volatiles.vesselOfRuin = TRUE;
- break;
- case ABILITY_SWORD_OF_RUIN:
- gBattleMons[battler].volatiles.swordOfRuin = TRUE;
- break;
- case ABILITY_TABLETS_OF_RUIN:
- gBattleMons[battler].volatiles.tabletsOfRuin = TRUE;
- break;
- case ABILITY_BEADS_OF_RUIN:
- gBattleMons[battler].volatiles.beadsOfRuin = TRUE;
- break;
- default:
- break;
- }
-}
-
// party logic
s32 CountUsablePartyMons(enum BattlerId battlerId)
{
@@ -4815,7 +4876,7 @@ static u32 GetStagesOfStatChange(enum StatChange statChange)
static enum AIScore IncreaseStatUpScoreInternal(enum BattlerId battlerAtk, enum BattlerId battlerDef, enum StatChange statChange, bool32 considerContrary)
{
enum AIScore tempScore = NO_INCREASE;
- u32 noOfHitsToFaint = NoOfHitsForTargetToFaintBattler(battlerDef, battlerAtk, DONT_CONSIDER_ENDURE);
+ u32 noOfHitsToFaint = NoOfHitsForTargetToFaintBattler(battlerDef, battlerAtk, AI_SHOULD_SETUP_DEFENDING, DONT_CONSIDER_ENDURE);
enum Move predictedMoveSpeedCheck = GetIncomingMoveSpeedCheck(battlerAtk, battlerDef, gAiLogicData);
bool32 aiIsFaster = AI_IsFaster(battlerAtk, battlerDef, MOVE_NONE, predictedMoveSpeedCheck, DONT_CONSIDER_PRIORITY); // Don't care about the priority of our setup move, care about outspeeding otherwise
bool32 shouldSetUp = ((noOfHitsToFaint >= 2 && aiIsFaster) || (noOfHitsToFaint >= 3 && !aiIsFaster) || noOfHitsToFaint == UNKNOWN_NO_OF_HITS);
@@ -5863,8 +5924,9 @@ bool32 DoesIntimidateRaiseStats(enum Ability ability)
case ABILITY_CONTRARY:
case ABILITY_DEFIANT:
case ABILITY_GUARD_DOG:
- case ABILITY_RATTLED:
return TRUE;
+ case ABILITY_RATTLED:
+ return GetConfig(B_UPDATED_INTIMIDATE) >= GEN_8;
default:
return FALSE;
}
@@ -6429,3 +6491,22 @@ bool32 IsPartyMonPlannedToBeSwitchedInByPartner(u32 partyIndex, enum BattlerId b
return TRUE;
return FALSE;
}
+
+static void AI_SetBattlerTurnOrder(u8 *aiTurnOrder)
+{
+ for (u32 battler = 0; battler < gBattlersCount; battler++)
+ aiTurnOrder[battler] = battler;
+
+ for (u32 i = 0; i < gBattlersCount; i++)
+ {
+ for (u32 j = 0; j < gBattlersCount; j++)
+ {
+ if (AI_WhoStrikesFirst(aiTurnOrder[i], aiTurnOrder[j], MOVE_NONE, MOVE_NONE, DONT_CONSIDER_PRIORITY) == AI_IS_FASTER)
+ {
+ u32 temp = aiTurnOrder[i];
+ aiTurnOrder[i] = aiTurnOrder[j];
+ aiTurnOrder[j] = temp;
+ }
+ }
+ }
+}
diff --git a/src/battle_anim.c b/src/battle_anim.c
index f6def03d50..365367b0f2 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -119,7 +119,7 @@ EWRAM_DATA static u8 sAnimBackgroundFadeState = 0;
EWRAM_DATA u16 gAnimMoveIndex = 0;
EWRAM_DATA enum BattlerId gBattleAnimAttacker = 0;
EWRAM_DATA enum BattlerId gBattleAnimTarget = 0;
-EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA enum Species gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {SPECIES_NONE};
EWRAM_DATA u8 gAnimCustomPanning = 0;
EWRAM_DATA static bool8 sAnimHideHpBoxes = FALSE;
diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c
index f68e8d2347..2af74516bd 100644
--- a/src/battle_anim_dark.c
+++ b/src/battle_anim_dark.c
@@ -907,7 +907,7 @@ void AnimTask_MetallicShine(u8 taskId)
{
CMD_ARGS(permanent, useColor, color);
- u16 species;
+ enum Species species;
u8 spriteId;
u8 newSpriteId;
u16 paletteNum;
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index 0be9dee447..45dafc8a62 100644
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -3372,7 +3372,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
{
bool8 isBackPic, isShiny;
u32 personality;
- u16 species;
+ enum Species species;
s16 xOffset;
u32 priority;
u8 spriteId;
@@ -5259,7 +5259,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
{
u8 spriteId, spriteId2;
int personality;
- u16 species;
+ enum Species species;
u8 subpriority;
bool8 isBackPic, isShiny;
s16 x;
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index 5cd03eb29c..fcb7f14146 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -79,7 +79,7 @@ static const struct SpriteSheet sSpriteSheets_MoveEffectMons[] =
u8 GetBattlerSpriteCoord(enum BattlerId battler, u8 coordType)
{
u8 retVal;
- u16 species;
+ enum Species species;
struct Pokemon *mon, *illusionMon;
struct BattleSpriteInfo *spriteInfo;
@@ -130,7 +130,7 @@ u8 GetBattlerSpriteCoord(enum BattlerId battler, u8 coordType)
return retVal;
}
-u8 GetBattlerYDelta(enum BattlerId battler, u16 species)
+u8 GetBattlerYDelta(enum BattlerId battler, enum Species species)
{
u32 personality;
struct BattleSpriteInfo *spriteInfo;
@@ -168,14 +168,14 @@ u8 GetBattlerYDelta(enum BattlerId battler, u16 species)
return ret;
}
-u8 GetBattlerElevation(enum BattlerId battler, u16 species)
+u8 GetBattlerElevation(enum BattlerId battler, enum Species species)
{
if (!IsOnPlayerSide(battler) && !IsContest())
return GetSpeciesEnemyElevation(species);
return 0;
}
-u8 GetBattlerSpriteFinal_Y(enum BattlerId battler, u16 species, bool8 a3)
+u8 GetBattlerSpriteFinal_Y(enum BattlerId battler, enum Species species, bool32 a3)
{
u16 offset;
u8 y;
@@ -202,7 +202,7 @@ u8 GetBattlerSpriteFinal_Y(enum BattlerId battler, u16 species, bool8 a3)
u8 GetBattlerSpriteCoord2(enum BattlerId battler, u8 coordType)
{
- u16 species;
+ enum Species species;
struct BattleSpriteInfo *spriteInfo;
if (coordType == BATTLER_COORD_Y_PIC_OFFSET || coordType == BATTLER_COORD_Y_PIC_OFFSET_DEFAULT)
@@ -250,7 +250,7 @@ u8 GetSubstituteSpriteDefault_Y(enum BattlerId battler)
u8 GetBattlerYCoordWithElevation(enum BattlerId battler)
{
- u16 species;
+ enum Species species;
u8 y;
struct BattleSpriteInfo *spriteInfo;
@@ -1863,7 +1863,7 @@ static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
{
struct BattleSpriteInfo *spriteInfo;
enum BattlerId battler = gSprites[spriteId].data[0];
- u16 species;
+ enum Species species;
u16 i;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
@@ -2033,7 +2033,7 @@ u8 GetBattlerSpriteBGPriorityRank(enum BattlerId battler)
}
// Create Pokรฉmon sprite to be used for a move animation effect (e.g. Role Play / Snatch)
-u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, enum BattlerId battler)
+u8 CreateAdditionalMonSpriteForMoveAnim(enum Species species, bool32 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool32 isShiny, enum BattlerId battler)
{
u8 spriteId;
u16 sheet = LoadSpriteSheet(&sSpriteSheets_MoveEffectMons[id]);
@@ -2081,7 +2081,7 @@ void DestroySpriteAndFreeResources_(struct Sprite *sprite)
s16 GetBattlerSpriteCoordAttr(enum BattlerId battler, u8 attr)
{
- u16 species;
+ enum Species species;
u32 personality;
int ret;
u8 size;
@@ -2233,7 +2233,7 @@ void SetToPartnerPositions(enum BattlerId battler, bool8 respectMonPicOffsets, s
*y = returnY;
}
-u8 CreateInvisibleSpriteCopy(int battler, u8 spriteId, int species)
+u8 CreateInvisibleSpriteCopy(enum BattlerId battler, u8 spriteId, enum Species species)
{
u8 newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
gSprites[newSpriteId] = gSprites[spriteId];
diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c
index 1232bb3ac5..cc5c80abbe 100644
--- a/src/battle_anim_sound_tasks.c
+++ b/src/battle_anim_sound_tasks.c
@@ -133,7 +133,7 @@ static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId)
void SoundTask_PlayCryHighPitch(u8 taskId)
{
- u16 species = 0;
+ enum Species species = 0;
s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
enum AnimBattler animBattler = gBattleAnimArgs[0];
if (IsContest())
@@ -186,7 +186,7 @@ void SoundTask_PlayCryHighPitch(u8 taskId)
void SoundTask_PlayDoubleCry(u8 taskId)
{
- u16 species = 0;
+ enum Species species = 0;
s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
enum AnimBattler animBattler = gBattleAnimArgs[0];
if (IsContest())
@@ -252,7 +252,7 @@ void SoundTask_PlayDoubleCry(u8 taskId)
static void SoundTask_PlayDoubleCry_Step(u8 taskId)
{
- u16 species = gTasks[taskId].data[1];
+ enum Species species = gTasks[taskId].data[1];
s8 pan = gTasks[taskId].data[2];
if (gTasks[taskId].data[9] < 2)
@@ -295,7 +295,7 @@ void SoundTask_WaitForCry(u8 taskId)
void SoundTask_PlayNormalCry(u8 taskId)
{
- u16 species = (GetIllusionMonSpecies(gBattleAnimAttacker) != SPECIES_NONE) ? GetIllusionMonSpecies(gBattleAnimAttacker) : gAnimBattlerSpecies[gBattleAnimAttacker];
+ enum Species species = (GetIllusionMonSpecies(gBattleAnimAttacker) != SPECIES_NONE) ? GetIllusionMonSpecies(gBattleAnimAttacker) : gAnimBattlerSpecies[gBattleAnimAttacker];
PlayCry_ByMode(species, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER), CRY_MODE_NORMAL);
gTasks[taskId].func = SoundTask_WaitForCry;
}
@@ -307,7 +307,7 @@ void SoundTask_PlayNormalCry(u8 taskId)
void SoundTask_PlayCryWithEcho(u8 taskId)
{
- u16 species;
+ enum Species species;
s8 pan;
gTasks[taskId].tLastCry = gBattleAnimArgs[0];
@@ -329,14 +329,14 @@ void SoundTask_PlayCryWithEcho(u8 taskId)
void SoundTask_PlayDynamaxCry(u8 taskId)
{
- u16 species = (GetIllusionMonSpecies(gBattleAnimAttacker) != SPECIES_NONE) ? GetIllusionMonSpecies(gBattleAnimAttacker) : gAnimBattlerSpecies[gBattleAnimAttacker];
+ enum Species species = (GetIllusionMonSpecies(gBattleAnimAttacker) != SPECIES_NONE) ? GetIllusionMonSpecies(gBattleAnimAttacker) : gAnimBattlerSpecies[gBattleAnimAttacker];
PlayCry_ByMode(species, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER), CRY_MODE_DYNAMAX);
gTasks[taskId].func = SoundTask_WaitForCry;
}
static void SoundTask_PlayCryWithEcho_Step(u8 taskId)
{
- u16 species = gTasks[taskId].tSpecies;
+ enum Species species = gTasks[taskId].tSpecies;
s8 pan = gTasks[taskId].tPan;
// Note the cases are not in order of execution
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
index 20d3558e46..6456dcb323 100644
--- a/src/battle_anim_utility_funcs.c
+++ b/src/battle_anim_utility_funcs.c
@@ -19,7 +19,7 @@ struct AnimStatsChangeData
enum BattlerId battler2;
bool8 hidBattler2;
s16 data[8];
- u16 species;
+ enum Species species;
};
static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = {0};
@@ -248,7 +248,7 @@ static void AnimMonTrace(struct Sprite *sprite)
// Only used by Curse for non-Ghost mons
void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId)
{
- u16 species;
+ enum Species species;
int spriteId, newSpriteId;
u16 var0;
u32 bg1Cnt;
@@ -770,7 +770,7 @@ void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId)
void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, enum BattlerId battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u16 *palette)
{
- u16 species;
+ enum Species species;
u8 spriteId, spriteId2;
u32 bg1Cnt;
struct BattleAnimBgData animBgData;
diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c
index 7b92b5744c..37b70a4d2b 100644
--- a/src/battle_controller_oak_old_man.c
+++ b/src/battle_controller_oak_old_man.c
@@ -846,7 +846,7 @@ static void OakOldManHandlePlaySE(enum BattlerId battler)
static void OakOldManHandleFaintingCry(enum BattlerId battler)
{
- u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
PlayCry_Normal(species, 25);
OakOldManBufferExecCompleted(battler);
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 79dbd9fdec..a95233f0ee 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -461,9 +461,12 @@ static void OpponentHandleChooseMove(enum BattlerId battler)
u32 chosenMove = moveInfo->moves[chosenMoveIndex];
enum MoveTarget target = GetBattlerMoveTargetType(battler, chosenMove);
- if (target == TARGET_USER || target == TARGET_USER_OR_ALLY)
+ if (target == TARGET_USER)
gBattlerTarget = battler;
+ if (target == TARGET_ALLY)
+ gBattlerTarget = BATTLE_PARTNER(battler);
+
if (target == TARGET_BOTH)
{
gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
@@ -499,6 +502,10 @@ static void OpponentHandleChooseMove(enum BattlerId battler)
{
BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_EXEC_SCRIPT, (chosenMoveIndex) | (battler << 8));
}
+ else if (moveTarget == TARGET_ALLY)
+ {
+ BtlController_EmitTwoReturnValues(battler, B_COMM_TO_ENGINE, B_ACTION_EXEC_SCRIPT, (chosenMoveIndex) | (BATTLE_PARTNER(battler) << 8));
+ }
else if (IsDoubleBattle())
{
enum BattlerId targetBattler;
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 795a7aad51..b6b875ea9d 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -718,6 +718,8 @@ void HandleInputChooseMove(enum BattlerId battler)
if (isUserOrAlly)
gMultiUsePlayerCursor = battler;
+ else if (moveTarget == TARGET_ALLY)
+ gMultiUsePlayerCursor = BATTLE_PARTNER(battler);
else
gMultiUsePlayerCursor = GetOpposingSideBattler(battler);
@@ -1422,7 +1424,7 @@ static void Task_GiveExpToMon(u8 taskId)
if (GetBattlerCoordsIndex(battler) == BATTLE_COORDS_DOUBLES || monId != gBattlerPartyIndexes[battler]) // Give exp without moving the expbar.
{
struct Pokemon *mon = &gPlayerParty[monId];
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u8 level = GetMonData(mon, MON_DATA_LEVEL);
u32 currExp = GetMonData(mon, MON_DATA_EXP);
u32 nextLvlExp = gExperienceTables[GetSpeciesGrowthRate(species)][level + 1];
@@ -1469,7 +1471,7 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId)
enum BattlerId battler = gTasks[taskId].tExpTask_battler;
struct Pokemon *mon = &gPlayerParty[monIndex];
u8 level = GetMonData(mon, MON_DATA_LEVEL);
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u32 exp = GetMonData(mon, MON_DATA_EXP);
enum GrowthRate growthRate = GetSpeciesGrowthRate(species);
u32 currLvlExp = gExperienceTables[growthRate][level];
@@ -1486,7 +1488,7 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId)
static void Task_GiveExpWithExpBar(u8 taskId)
{
u32 level, expAfterGain;
- u16 species;
+ enum Species species;
u32 oldMaxHP;
s32 currExp, expOnNextLvl, newExpPoints;
@@ -1709,7 +1711,7 @@ static void MoveSelectionDisplayPpNumber(enum BattlerId battler)
static void MoveSelectionDisplayMoveType(enum BattlerId battler)
{
u8 *txtPtr, *end;
- u32 speciesId = gBattleMons[battler].species;
+ enum Species speciesId = gBattleMons[battler].species;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]);
txtPtr = StringCopy(gDisplayedStringBattle, gText_MoveInterfaceType);
enum Move move = moveInfo->moves[gMoveSelectionCursor[battler]];
@@ -2002,8 +2004,6 @@ static void HandleChooseActionAfterDma3(enum BattlerId battler)
gBattle_BG0_Y = DISPLAY_HEIGHT;
if (gBattleStruct->aiDelayTimer != 0)
{
- gBattleStruct->aiDelayFrames = gMain.vblankCounter1 - gBattleStruct->aiDelayTimer;
- gBattleStruct->aiDelayTimer = 0;
if (DEBUG_AI_DELAY_TIMER)
{
static const u8 sFramesText[] = _(" frames thinking\n");
@@ -2016,6 +2016,8 @@ static void HandleChooseActionAfterDma3(enum BattlerId battler)
StringAppend(gDisplayedStringBattle, sCyclesText);
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
}
+ gBattleStruct->aiDelayTimer = 0;
+ gBattleStruct->aiDelayFrames = 0;
}
gBattlerControllerFuncs[battler] = HandleInputChooseAction;
}
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index 4756097acb..e15ed35188 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -343,7 +343,7 @@ static void SafariHandleChoosePokemon(enum BattlerId battler)
// Player is not a pokemon, so it can't really faint in the Safari anyway.
static void SafariHandleFaintingCry(enum BattlerId battler)
{
- u16 species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES);
+ enum Species species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES);
PlayCry_Normal(species, 25);
BtlController_Complete(battler);
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 36f51935f8..427da044ae 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -358,7 +358,7 @@ static void WallyHandleChooseItem(enum BattlerId battler)
// Wally's Pokรฉmon during the tutorial is never intended to faint, so that's probably why it's different here.
static void WallyHandleFaintingCry(enum BattlerId battler)
{
- u16 species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES);
+ enum Species species = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES);
PlayCry_Normal(species, 25);
BtlController_Complete(battler);
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index a7c338fcf4..7c8acd16c4 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -385,7 +385,7 @@ static void InitBtlControllersInternal(void)
bool32 IsValidForBattle(struct Pokemon *mon)
{
- u32 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
return (species != SPECIES_NONE
&& species != SPECIES_EGG
&& GetMonData(mon, MON_DATA_HP) != 0
@@ -394,7 +394,7 @@ bool32 IsValidForBattle(struct Pokemon *mon)
bool32 IsValidForBattleButDead(struct Pokemon *mon)
{
- u32 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
return (species != SPECIES_NONE
&& species != SPECIES_EGG
&& GetMonData(mon, MON_DATA_IS_EGG) == FALSE);
@@ -1993,7 +1993,7 @@ static bool8 ShouldDoSlideInAnim(enum BattlerId battler)
void StartSendOutAnim(enum BattlerId battler, bool32 dontClearTransform, bool32 dontClearSubstituteBit, bool32 doSlideIn)
{
- u16 species;
+ enum Species species;
struct Pokemon *mon = GetBattlerMon(battler);
u32 sendoutType;
@@ -2337,7 +2337,7 @@ void BtlController_HandleLoadMonSprite(enum BattlerId battler)
{
u32 y;
struct Pokemon *mon = GetBattlerMon(battler);
- u16 species = GetBattlerVisualSpecies(battler);
+ enum Species species = GetBattlerVisualSpecies(battler);
if (gBattleTypeFlags & BATTLE_TYPE_GHOST && GetBattlerSide(battler) == B_SIDE_OPPONENT)
{
@@ -3059,7 +3059,7 @@ static void AnimateMonAfterKnockout(enum BattlerId battler)
static void LaunchKOAnimation(enum BattlerId battlerId, u16 animId, bool32 isFront)
{
- u32 species = GetBattlerVisualSpecies(battlerId);
+ enum Species species = GetBattlerVisualSpecies(battlerId);
u32 spriteId = gBattlerSpriteIds[battlerId];
gBattleStruct->battlerKOAnimsRunning++;
@@ -3081,7 +3081,7 @@ static void LaunchKOAnimation(enum BattlerId battlerId, u16 animId, bool32 isFro
static u32 ReturnAnimIdForBattler(bool32 wasPlayerSideKnockedOut, u32 specificBattler)
{
- u32 species = GetBattlerVisualSpecies(specificBattler);
+ enum Species species = GetBattlerVisualSpecies(specificBattler);
if (wasPlayerSideKnockedOut)
return GetSpeciesFrontAnimId(species);
else
diff --git a/src/battle_debug.c b/src/battle_debug.c
index 0a0130ba88..7da90d746a 100644
--- a/src/battle_debug.c
+++ b/src/battle_debug.c
@@ -1068,7 +1068,7 @@ static void Task_ShowAiParty(u8 taskId)
aiMons = gAiPartyData->mons[GetBattlerSide(data->aiBattlerId)];
for (i = 0; i < gAiPartyData->count[GetBattlerSide(data->aiBattlerId)]; i++)
{
- u16 species = SPECIES_NONE; // Question mark
+ enum Species species = SPECIES_NONE; // Question mark
if (aiMons[i].wasSentInBattle && aiMons[i].species)
species = aiMons[i].species;
data->spriteIds.aiPartyIcons[i] = CreateMonIcon(species, SpriteCallbackDummy, (i * 41) + 15, 7, 1, 0);
diff --git a/src/battle_dome.c b/src/battle_dome.c
index 58803c1c26..81ee77467a 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -1911,7 +1911,7 @@ static void InitDomeTrainers(void)
{
int i, j, k;
int monLevel;
- int species[FRONTIER_PARTY_SIZE];
+ enum Species species[FRONTIER_PARTY_SIZE];
int monTypesBits, monTypesCount;
int trainerId;
int monId;
@@ -1919,9 +1919,9 @@ static void InitDomeTrainers(void)
int *statValues;
u8 ivs = 0;
- species[0] = 0;
- species[1] = 0;
- species[2] = 0;
+ species[0] = SPECIES_NONE;
+ species[1] = SPECIES_NONE;
+ species[2] = SPECIES_NONE;
rankingScores = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT);
statValues = AllocZeroed(sizeof(int) * NUM_STATS);
@@ -2132,7 +2132,7 @@ static void CalcDomeMonStats(const struct TrainerMon *fmon, int level, u8 ivs, i
evs[i] = 0;
}
- if (fmon->species == SPECIES_SHEDINJA)
+ if (HasShedinjaHPHandling(fmon->species))
{
stats[STAT_HP] = 1;
}
@@ -4017,7 +4017,7 @@ static bool32 IsDomeStatusMoveEffect(enum Move move)
static bool32 IsDomeRareMove(enum Move move)
{
u16 i, j;
- u16 species = 0;
+ enum Species species = SPECIES_NONE;
for (i = 0; i < NUM_SPECIES; i++)
{
if (!IsSpeciesEnabled(i))
@@ -5125,7 +5125,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
for (k = 0; k < FRONTIER_PARTY_SIZE; k++)
{
u32 personality = 0;
- u32 targetSpecies = 0;
+ enum Species targetSpecies = SPECIES_NONE;
enum Ability targetAbility = ABILITY_NONE;
uq4_12_t typeMultiplier = 0;
do
@@ -5724,7 +5724,7 @@ static void InitRandomTourneyTreeResults(void)
{
int i, j, k;
int monLevel;
- int species[FRONTIER_PARTY_SIZE];
+ enum Species species[FRONTIER_PARTY_SIZE];
int monTypesBits;
int trainerId;
int monId;
@@ -5735,9 +5735,9 @@ static void InitRandomTourneyTreeResults(void)
int *statValues;
u8 ivs = 0;
- species[0] = 0;
- species[1] = 0;
- species[2] = 0;
+ species[0] = SPECIES_NONE;
+ species[1] = SPECIES_NONE;
+ species[2] = SPECIES_NONE;
if ((gSaveBlock2Ptr->frontier.domeLvlMode != -gSaveBlock2Ptr->frontier.domeBattleMode) && gSaveBlock2Ptr->frontier.challengeStatus != CHALLENGE_STATUS_SAVING)
return;
@@ -5894,7 +5894,7 @@ static void DecideRoundWinners(u8 roundId)
int i;
int moveSlot, monId1, monId2;
int tournamentId1, tournamentId2;
- int species;
+ enum Species species;
int points1 = 0, points2 = 0;
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c
index 2ffa7852dd..0affb177ee 100644
--- a/src/battle_dynamax.c
+++ b/src/battle_dynamax.c
@@ -26,7 +26,7 @@ static enum MaxPowerTier GetMaxPowerTier(enum Move move);
struct GMaxMove
{
- u16 species;
+ enum Species species;
enum Type moveType;
u16 gmaxMove;
};
@@ -72,7 +72,7 @@ static const struct GMaxMove sGMaxMoveTable[] =
// Returns whether a battler can Dynamax.
bool32 CanDynamax(enum BattlerId battler)
{
- u16 species = GetBattlerVisualSpecies(battler);
+ enum Species species = GetBattlerVisualSpecies(battler);
enum HoldEffect holdEffect = GetBattlerHoldEffectIgnoreNegation(battler);
// Prevents Zigzagoon from dynamaxing in vanilla.
@@ -131,8 +131,10 @@ bool32 IsGigantamaxed(enum BattlerId battler)
// Applies the HP Multiplier for Dynamaxed Pokemon and Raid Bosses.
void ApplyDynamaxHPMultiplier(struct Pokemon* mon)
{
- if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA)
+ if (HasShedinjaHPHandling(GetMonData(mon, MON_DATA_SPECIES)))
+ {
return;
+ }
else
{
uq4_12_t multiplier = GetDynamaxLevelHPMultiplier(GetMonData(mon, MON_DATA_DYNAMAX_LEVEL), FALSE);
@@ -146,8 +148,10 @@ void ApplyDynamaxHPMultiplier(struct Pokemon* mon)
// Returns the non-Dynamax HP of a Pokemon.
u32 GetNonDynamaxHP(enum BattlerId battler)
{
- if (GetActiveGimmick(battler) != GIMMICK_DYNAMAX || gBattleMons[battler].species == SPECIES_SHEDINJA)
+ if (GetActiveGimmick(battler) != GIMMICK_DYNAMAX || HasShedinjaHPHandling(gBattleMons[battler].species))
+ {
return gBattleMons[battler].hp;
+ }
else
{
struct Pokemon *mon = GetBattlerMon(battler);
@@ -160,8 +164,10 @@ u32 GetNonDynamaxHP(enum BattlerId battler)
// Returns the non-Dynamax Max HP of a Pokemon.
u32 GetNonDynamaxMaxHP(enum BattlerId battler)
{
- if (GetActiveGimmick(battler) != GIMMICK_DYNAMAX || gBattleMons[battler].species == SPECIES_SHEDINJA)
+ if (GetActiveGimmick(battler) != GIMMICK_DYNAMAX || HasShedinjaHPHandling(gBattleMons[battler].species))
+ {
return gBattleMons[battler].maxHP;
+ }
else
{
struct Pokemon *mon = GetBattlerMon(battler);
@@ -238,8 +244,8 @@ static enum Move GetTypeBasedMaxMove(enum BattlerId battler, enum Type type)
{
// Gigantamax check
u32 i;
- u32 species = gBattleMons[battler].species;
- u32 targetSpecies = species;
+ enum Species species = gBattleMons[battler].species;
+ enum Species targetSpecies = species;
enum Ability ability = GetBattlerAbility(battler);
if (!IsSpeciesGigantamax(species))
diff --git a/src/battle_end_turn.c b/src/battle_end_turn.c
index f2e5a30d8f..c709281e61 100644
--- a/src/battle_end_turn.c
+++ b/src/battle_end_turn.c
@@ -60,8 +60,8 @@ static bool32 HandleEndTurnVarious(enum BattlerId battler)
if (gBattleMons[i].volatiles.throatChopTimer > 0)
gBattleMons[i].volatiles.throatChopTimer--;
- if (gBattleMons[i].volatiles.lockOn > 0)
- gBattleMons[i].volatiles.lockOn--;
+ if (gBattleMons[i].volatiles.lockOn > 0 && --gBattleMons[i].volatiles.lockOn == 0)
+ gBattleMons[i].volatiles.battlerWithSureHit = 0;
if (B_CHARGE < GEN_9 && gBattleMons[i].volatiles.chargeTimer > 0)
gBattleMons[i].volatiles.chargeTimer--;
diff --git a/src/battle_factory.c b/src/battle_factory.c
index e457dcf82d..b7f5eb3cc9 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -235,7 +235,7 @@ static void SetPerformedRentalSwap(void)
static void GenerateOpponentMons(void)
{
int i, j, k;
- u16 species[FRONTIER_PARTY_SIZE];
+ enum Species species[FRONTIER_PARTY_SIZE];
u16 heldItems[FRONTIER_PARTY_SIZE];
int firstMonId = 0;
u16 trainerId = 0;
@@ -390,8 +390,8 @@ static void GenerateInitialRentalMons(void)
u8 factoryBattleMode;
u8 rentalRank;
u16 monId;
- u16 currSpecies;
- u16 species[PARTY_SIZE];
+ enum Species currSpecies;
+ enum Species species[PARTY_SIZE];
u16 monIds[PARTY_SIZE];
u16 heldItems[PARTY_SIZE];
@@ -490,7 +490,7 @@ static void GetOpponentMostCommonMonType(void)
typeCounts[i] = 0;
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
- u32 species = gFacilityTrainerMons[gFrontierTempParty[i]].species;
+ enum Species species = gFacilityTrainerMons[gFrontierTempParty[i]].species;
typeCounts[GetSpeciesType(species, 0)]++;
if (GetSpeciesType(species, 0) != GetSpeciesType(species, 1))
typeCounts[GetSpeciesType(species, 1)]++;
@@ -654,8 +654,8 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle)
void FillFactoryBrainParty(void)
{
int i, j, k;
- u16 species[FRONTIER_PARTY_SIZE];
- u16 heldItems[FRONTIER_PARTY_SIZE];
+ enum Species species[FRONTIER_PARTY_SIZE];
+ enum Item heldItems[FRONTIER_PARTY_SIZE];
int monLevel;
u8 fixedIV;
u32 otId;
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index e37eb10e89..0eecce4f24 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -1831,7 +1831,7 @@ static void Select_PrintRentalPkmnString(void)
static void Select_PrintMonSpecies(void)
{
- u16 species;
+ enum Species species;
u8 x;
u8 monId = sFactorySelectScreen->cursorPos;
@@ -1948,7 +1948,7 @@ static u8 Select_OptionOthers(void)
static void Select_PrintMonCategory(void)
{
- u16 species;
+ enum Species species;
u8 text[30];
u8 x;
u8 monId = sFactorySelectScreen->cursorPos;
@@ -1968,7 +1968,7 @@ static void Select_CreateMonSprite(void)
{
u8 monId = sFactorySelectScreen->cursorPos;
struct Pokemon *mon = &sFactorySelectScreen->mons[monId].monData;
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY);
bool8 isShiny = GetMonData(mon, MON_DATA_IS_SHINY);
@@ -1987,7 +1987,7 @@ static void Select_SetMonPicAnimating(bool8 animating)
static void Select_ReshowMonSprite(void)
{
struct Pokemon *mon;
- u16 species;
+ enum Species species;
u32 personality;
bool8 isShiny;
@@ -2017,7 +2017,7 @@ static void Select_CreateChosenMonsSprites(void)
if (sFactorySelectScreen->mons[j].selectedId == i + 1)
{
struct Pokemon *mon = &sFactorySelectScreen->mons[j].monData;
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY);
bool8 isShiny = GetMonData(mon, MON_DATA_IS_SHINY);
@@ -2209,7 +2209,7 @@ static void Select_SetWinRegs(s16 mWin0H, s16 nWin0H, s16 mWin0V, s16 nWin0V)
static bool32 Select_AreSpeciesValid(u16 monId)
{
u8 i, j;
- u32 species = gFacilityTrainerMons[monId].species;
+ enum Species species = gFacilityTrainerMons[monId].species;
u8 selectState = sFactorySelectScreen->selectingMonsState;
for (i = 1; i < selectState; i++)
@@ -3728,7 +3728,7 @@ static void Swap_PrintPkmnSwap(void)
static void Swap_PrintMonSpecies(void)
{
- u16 species;
+ enum Species species;
u8 x;
FillWindowPixelBuffer(SWAP_WIN_SPECIES, PIXEL_FILL(0));
@@ -3828,7 +3828,7 @@ static void Swap_PrintOneActionString(u8 which)
// For printing the species name once its selected. Keep the current fade but don't keep fading in and out
static void Swap_PrintMonSpeciesAtFade(void)
{
- u16 species;
+ enum Species species;
u8 x;
u16 pal[5];
@@ -3862,7 +3862,7 @@ static void Swap_PrintMonSpeciesAtFade(void)
// Reprints the species name over the faded one after a transition
static void Swap_PrintMonSpeciesForTransition(void)
{
- u16 species;
+ enum Species species;
u8 x;
LoadPalette(sSwapText_Pal, BG_PLTT_ID(PALNUM_FADE_TEXT), sizeof(sSwapText_Pal));
@@ -3888,7 +3888,7 @@ static void Swap_PrintMonSpeciesForTransition(void)
static void Swap_PrintMonCategory(void)
{
- u16 species;
+ enum Species species;
u8 text[30];
u8 x;
u8 monId = sFactorySwapScreen->cursorPos;
@@ -4029,7 +4029,7 @@ static void OpenMonPic(u8 *spriteId, bool8 *animating, bool8 swapScreen)
static void Swap_ShowSummaryMonSprite(void)
{
struct Pokemon *mon;
- u16 species;
+ enum Species species;
u32 personality;
bool8 isShiny;
@@ -4113,7 +4113,7 @@ static void Swap_TaskCantHaveSameMons(u8 taskId)
static bool8 Swap_AlreadyHasSameSpecies(u8 monId)
{
u8 i;
- u16 species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES);
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
@@ -4245,9 +4245,9 @@ static void Task_CloseMonPic(u8 taskId)
static void Swap_CreateMonSprite(void)
{
struct Pokemon *mon;
- u16 species;
+ enum Species species;
u32 personality;
- bool8 isShiny;
+ bool32 isShiny;
if (!sFactorySwapScreen->inEnemyScreen)
mon = &gPlayerParty[sFactorySwapScreen->cursorPos];
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 41e99d2a5f..16ee3fe4c6 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -685,7 +685,7 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, enum BattlerId battler)
}
}
-void BattleGfxSfxDummy2(u16 species)
+void BattleGfxSfxDummy2(enum Species species)
{
}
@@ -1160,7 +1160,7 @@ void CreateEnemyShadowSprite(enum BattlerId battler)
{
if (B_ENEMY_MON_SHADOW_STYLE >= GEN_4 && P_GBA_STYLE_SPECIES_GFX == FALSE)
{
- u16 species = GetBattlerVisualSpecies(battler);
+ enum Species species = GetBattlerVisualSpecies(battler);
u8 size = GetSpeciesEnemyShadowSize(species);
gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdPrimary = CreateSprite(&gSpriteTemplate_EnemyShadow,
@@ -1255,7 +1255,7 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
bool8 invisible = FALSE;
enum BattlerId battler = shadowSprite->tBattlerId;
struct Sprite *battlerSprite = &gSprites[gBattlerSpriteIds[battler]];
- u16 transformSpecies = SanitizeSpeciesId(gBattleSpritesDataPtr->battlerData[battler].transformSpecies);
+ enum Species transformSpecies = SanitizeSpeciesId(gBattleSpritesDataPtr->battlerData[battler].transformSpecies);
if (!battlerSprite->inUse || !IsBattlerSpritePresent(battler))
{
@@ -1283,7 +1283,7 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
}
else if (B_ENEMY_MON_SHADOW_STYLE >= GEN_4 && P_GBA_STYLE_SPECIES_GFX == FALSE)
{
- u16 species = GetBattlerVisualSpecies(battler);
+ enum Species species = GetBattlerVisualSpecies(battler);
xOffset = GetSpeciesEnemyShadowXOffset(species) + (shadowSprite->tSpriteSide == SPRITE_SIDE_LEFT ? -16 : 16);
yOffset = GetSpeciesEnemyShadowYOffset(species) + 16;
size = GetSpeciesEnemyShadowSize(species);
@@ -1310,7 +1310,7 @@ void SpriteCB_SetInvisible(struct Sprite *sprite)
sprite->invisible = TRUE;
}
-void SetBattlerShadowSpriteCallback(enum BattlerId battler, u16 species)
+void SetBattlerShadowSpriteCallback(enum BattlerId battler, enum Species species)
{
if (B_ENEMY_MON_SHADOW_STYLE >= GEN_4 && P_GBA_STYLE_SPECIES_GFX == FALSE)
{
@@ -1458,7 +1458,7 @@ bool32 ShouldPlayNormalMonCry(struct Pokemon *mon)
return TRUE;
}
-void DecompressGhostFrontPic(u32 battler)
+void DecompressGhostFrontPic(enum BattlerId battler)
{
u16 palOffset;
enum BattlerPosition position = GetBattlerPosition(battler);
diff --git a/src/battle_hold_effects.c b/src/battle_hold_effects.c
index 3d28fd0527..f607a437da 100644
--- a/src/battle_hold_effects.c
+++ b/src/battle_hold_effects.c
@@ -189,7 +189,7 @@ static enum ItemEffect TryKingsRock(enum BattlerId battlerAtk, enum BattlerId ba
enum ItemEffect effect = ITEM_NO_EFFECT;
if (!IsBattlerAlive(battlerDef)
- || !IsBattlerTurnDamaged(battlerDef)
+ || !IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
|| MoveIgnoresKingsRock(gCurrentMove)
|| MoveHasAdditionalEffect(gCurrentMove, MOVE_EFFECT_FLINCH))
return effect;
@@ -216,7 +216,7 @@ static enum ItemEffect TryAirBalloon(enum BattlerId battler, ActivationTiming ti
if (timing == IsOnTargetHitActivation)
{
- if (IsBattlerTurnDamaged(battler))
+ if (IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES))
{
BattleScriptCall(BattleScript_AirBalloonMsgPop);
effect = ITEM_EFFECT_OTHER;
@@ -237,7 +237,7 @@ static enum ItemEffect TryRockyHelmet(enum BattlerId battlerDef, enum BattlerId
enum ItemEffect effect = ITEM_NO_EFFECT;
enum Ability ability = GetBattlerAbility(battlerAtk);
- if (IsBattlerTurnDamaged(battlerDef)
+ if (IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battlerAtk)
&& !CanBattlerAvoidContactEffects(battlerAtk, battlerDef, ability, GetBattlerHoldEffect(battlerAtk), gCurrentMove)
&& !IsAbilityAndRecord(battlerAtk, ability, ABILITY_MAGIC_GUARD))
@@ -256,7 +256,7 @@ static enum ItemEffect TryWeaknessPolicy(enum BattlerId battlerDef)
enum ItemEffect effect = ITEM_NO_EFFECT;
if (IsBattlerAlive(battlerDef)
- && IsBattlerTurnDamaged(battlerDef)
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& gBattleStruct->moveResultFlags[battlerDef] & MOVE_RESULT_SUPER_EFFECTIVE)
{
BattleScriptCall(BattleScript_WeaknessPolicy);
@@ -271,7 +271,7 @@ static enum ItemEffect TrySnowball(enum BattlerId battlerDef)
enum ItemEffect effect = ITEM_NO_EFFECT;
if (IsBattlerAlive(battlerDef)
- && IsBattlerTurnDamaged(battlerDef)
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& GetBattleMoveType(gCurrentMove) == TYPE_ICE)
{
BattleScriptCall(BattleScript_TargetItemStatRaise);
@@ -287,7 +287,7 @@ static enum ItemEffect TryLuminousMoss(enum BattlerId battlerDef)
enum ItemEffect effect = ITEM_NO_EFFECT;
if (IsBattlerAlive(battlerDef)
- && IsBattlerTurnDamaged(battlerDef)
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& GetBattleMoveType(gCurrentMove) == TYPE_WATER)
{
BattleScriptCall(BattleScript_TargetItemStatRaise);
@@ -303,7 +303,7 @@ static enum ItemEffect TryCellBattery(enum BattlerId battlerDef)
enum ItemEffect effect = ITEM_NO_EFFECT;
if (IsBattlerAlive(battlerDef)
- && IsBattlerTurnDamaged(battlerDef)
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& GetBattleMoveType(gCurrentMove) == TYPE_ELECTRIC)
{
BattleScriptCall(BattleScript_TargetItemStatRaise);
@@ -319,7 +319,7 @@ static enum ItemEffect TryAbsorbBulb(enum BattlerId battlerDef)
enum ItemEffect effect = ITEM_NO_EFFECT;
if (IsBattlerAlive(battlerDef)
- && IsBattlerTurnDamaged(battlerDef)
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& GetBattleMoveType(gCurrentMove) == TYPE_WATER)
{
effect = ITEM_STATS_CHANGE;
@@ -335,7 +335,7 @@ static enum ItemEffect TryJabocaBerry(enum BattlerId battlerDef, enum BattlerId
enum ItemEffect effect = ITEM_NO_EFFECT;
if (IsBattlerAlive(battlerAtk)
- && IsBattlerTurnDamaged(battlerDef)
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& !DoesSubstituteBlockMove(battlerAtk, battlerDef, gCurrentMove)
&& IsBattleMovePhysical(gCurrentMove)
&& !IsAbilityAndRecord(battlerAtk, GetBattlerAbility(battlerAtk), ABILITY_MAGIC_GUARD))
@@ -357,7 +357,7 @@ static enum ItemEffect TryRowapBerry(enum BattlerId battlerDef, enum BattlerId b
enum ItemEffect effect = ITEM_NO_EFFECT;
if (IsBattlerAlive(battlerAtk)
- && IsBattlerTurnDamaged(battlerDef)
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& !DoesSubstituteBlockMove(battlerAtk, battlerDef, gCurrentMove)
&& IsBattleMoveSpecial(gCurrentMove)
&& !IsAbilityAndRecord(battlerAtk, GetBattlerAbility(battlerAtk), ABILITY_MAGIC_GUARD))
@@ -380,7 +380,7 @@ static enum ItemEffect TrySetEnigmaBerry(enum BattlerId battlerDef, enum Battler
if (IsBattlerAlive(battlerDef)
&& !DoesSubstituteBlockMove(battlerAtk, battlerDef, gCurrentMove)
- && ((IsBattlerTurnDamaged(battlerDef) && gBattleStruct->moveResultFlags[battlerDef] & MOVE_RESULT_SUPER_EFFECTIVE) || gBattleScripting.overrideBerryRequirements)
+ && ((IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES) && gBattleStruct->moveResultFlags[battlerDef] & MOVE_RESULT_SUPER_EFFECTIVE) || gBattleScripting.overrideBerryRequirements)
&& !(gBattleScripting.overrideBerryRequirements && gBattleMons[battlerDef].hp == gBattleMons[battlerDef].maxHP)
&& !(B_HEAL_BLOCKING >= GEN_5 && gBattleMons[battlerDef].volatiles.healBlock))
{
@@ -479,7 +479,8 @@ static enum ItemEffect TryThroatSpray(enum BattlerId battlerAtk)
if (IsSoundMove(gCurrentMove)
&& gMultiHitCounter == 0
&& IsBattlerAlive(battlerAtk)
- && IsAnyTargetTurnDamaged(battlerAtk)
+ && !gBattleStruct->unableToUseMove
+ && (IsAnyTargetTurnDamaged(battlerAtk, INCLUDING_SUBSTITUTES) || (GetBattleMoveCategory(gCurrentMove) == DAMAGE_CATEGORY_STATUS && IsAnyTargetAffected()))
&& CompareStat(battlerAtk, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN, GetBattlerAbility(battlerAtk))
&& !NoAliveMonsForEitherParty()) // Don't activate if battle will end
{
@@ -501,7 +502,7 @@ static enum ItemEffect DamagedStatBoostBerryEffect(enum BattlerId battlerDef, en
if (gBattleScripting.overrideBerryRequirements
|| (!DoesSubstituteBlockMove(battlerAtk, battlerDef, gCurrentMove)
&& GetBattleMoveCategory(gCurrentMove) == category
- && IsBattlerTurnDamaged(battlerDef)))
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)))
{
if (GetBattlerAbility(battlerDef) == ABILITY_RIPEN)
SET_STATCHANGER(statId, 2, FALSE);
@@ -523,7 +524,7 @@ static enum ItemEffect TryShellBell(enum BattlerId battlerAtk)
if (gBattleScripting.savedDmg > 0
&& !gBattleStruct->unableToUseMove
- && (IsAnyTargetTurnDamaged(battlerAtk) || gBattleScripting.savedDmg > 0)
+ && (IsAnyTargetTurnDamaged(battlerAtk, INCLUDING_SUBSTITUTES) || gBattleScripting.savedDmg > 0)
&& !IsBattlerAtMaxHp(battlerAtk)
&& IsBattlerAlive(battlerAtk)
&& GetMoveEffect(gCurrentMove) != EFFECT_PAIN_SPLIT
@@ -544,7 +545,7 @@ static enum ItemEffect TryLifeOrb(enum BattlerId battlerAtk)
if (IsBattlerAlive(battlerAtk)
&& !gBattleStruct->unableToUseMove
- && (IsAnyTargetTurnDamaged(battlerAtk) || gBattleScripting.savedDmg > 0)
+ && (IsAnyTargetTurnDamaged(battlerAtk, INCLUDING_SUBSTITUTES) || gBattleScripting.savedDmg > 0)
&& !IsAbilityAndRecord(battlerAtk, GetBattlerAbility(battlerAtk), ABILITY_MAGIC_GUARD)
&& GetMoveEffect(gCurrentMove) != EFFECT_PAIN_SPLIT
&& !IsFutureSightAttackerInParty(battlerAtk, gBattlerTarget, gCurrentMove))
@@ -561,7 +562,7 @@ static enum ItemEffect TryStickyBarbOnTargetHit(enum BattlerId battlerDef, enum
{
enum ItemEffect effect = ITEM_NO_EFFECT;
- if (IsBattlerTurnDamaged(battlerDef)
+ if (IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& !CanBattlerAvoidContactEffects(battlerAtk, battlerDef, GetBattlerAbility(battlerAtk), GetBattlerHoldEffect(battlerAtk), gCurrentMove)
&& !DoesSubstituteBlockMove(battlerAtk, battlerDef, gCurrentMove)
&& IsBattlerAlive(battlerAtk)
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 53ed8dc0f2..cbae28243c 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -1980,7 +1980,7 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
if (!isDoubles && (elementId == HEALTHBOX_EXP_BAR || elementId == HEALTHBOX_ALL))
{
- u16 species;
+ enum Species species;
u32 exp, currLevelExp;
s32 currExpBarValue, maxExpBarValue;
u8 level;
diff --git a/src/battle_main.c b/src/battle_main.c
index 1a2300fb6f..b93ca63e3b 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -635,7 +635,7 @@ static void CB2_InitBattleInternal(void)
#define BUFFER_PARTY_VS_SCREEN_STATUS(party, flags, i) \
for ((i) = 0; (i) < PARTY_SIZE; (i)++) \
{ \
- u16 species = GetMonData(&(party)[(i)], MON_DATA_SPECIES_OR_EGG); \
+ enum Species species = GetMonData(&(party)[(i)], MON_DATA_SPECIES_OR_EGG); \
u16 hp = GetMonData(&(party)[(i)], MON_DATA_HP); \
u32 status = GetMonData(&(party)[(i)], MON_DATA_STATUS); \
\
@@ -1888,7 +1888,7 @@ void ModifyPersonalityForNature(u32 *personality, u32 newNature)
*personality -= (diff * sign);
}
-u32 GeneratePersonalityForGender(u32 gender, u32 species)
+u32 GeneratePersonalityForGender(u32 gender, enum Species species)
{
u8 genderRatio = GetSpeciesGenderRatio(species);
if (gender == MON_GENDERLESS)
@@ -2740,7 +2740,7 @@ void SpriteCB_FaintOpponentMon(struct Sprite *sprite)
{
enum BattlerId battler = sprite->sBattler;
u32 personality = GetMonData(GetBattlerMon(battler), MON_DATA_PERSONALITY);
- u16 species;
+ enum Species species;
u8 yOffset;
if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies != 0)
@@ -3181,11 +3181,9 @@ void SwitchInClearSetData(enum BattlerId battler, struct Volatiles *volatilesCop
{
if (gBattleMons[i].volatiles.escapePrevention && gBattleMons[i].volatiles.battlerPreventingEscape == battler)
gBattleMons[i].volatiles.escapePrevention = FALSE;
- if (gBattleMons[i].volatiles.lockOn && gBattleMons[i].volatiles.battlerWithSureHit == battler)
- {
- gBattleMons[i].volatiles.lockOn = 0;
+
+ if (gBattleMons[i].volatiles.battlerWithSureHit == battler + 1)
gBattleMons[i].volatiles.battlerWithSureHit = 0;
- }
}
}
if (effect != EFFECT_BATON_PASS || GetConfig(B_BATON_PASS_TRAPPING) >= GEN_5)
@@ -3211,15 +3209,6 @@ void SwitchInClearSetData(enum BattlerId battler, struct Volatiles *volatilesCop
*/
enum BattlerId i;
- for (i = 0; i < gBattlersCount; i++)
- {
- if (!IsBattlerAlly(battler, i)
- && gBattleMons[i].volatiles.lockOn != 0
- && (gBattleMons[i].volatiles.battlerWithSureHit == battler))
- {
- gBattleMons[i].volatiles.lockOn = 0;
- }
- }
if (gBattleMons[battler].volatiles.powerTrick)
SWAP(gBattleMons[battler].attack, gBattleMons[battler].defense, i);
}
@@ -3245,7 +3234,6 @@ void SwitchInClearSetData(enum BattlerId battler, struct Volatiles *volatilesCop
if (effect == EFFECT_BATON_PASS)
{
gBattleMons[battler].volatiles.substituteHP = volatilesCopy->substituteHP;
- gBattleMons[battler].volatiles.battlerWithSureHit = volatilesCopy->battlerWithSureHit;
gBattleMons[battler].volatiles.perishSongTimer = volatilesCopy->perishSongTimer;
gBattleMons[battler].volatiles.battlerPreventingEscape = volatilesCopy->battlerPreventingEscape;
gBattleMons[battler].volatiles.embargoTimer = volatilesCopy->embargoTimer;
@@ -3337,6 +3325,8 @@ void FaintClearSetData(enum BattlerId battler)
for (enum BattlerId i = 0; i < gBattlersCount; i++)
{
+ if (gBattleMons[i].volatiles.battlerWithSureHit == battler + 1)
+ gBattleMons[i].volatiles.battlerWithSureHit = 0;
if (gBattleMons[i].volatiles.escapePrevention && gBattleMons[i].volatiles.battlerPreventingEscape == battler)
gBattleMons[i].volatiles.escapePrevention = FALSE;
if (gBattleMons[i].volatiles.infatuation == INFATUATED_WITH(battler))
@@ -3980,7 +3970,7 @@ void BattleTurnPassed(void)
{
if (gSideTimers[i].retaliateTimer > 0)
gSideTimers[i].retaliateTimer--;
- }
+ }
gFieldStatuses &= ~STATUS_FIELD_ION_DELUGE;
@@ -5678,7 +5668,7 @@ static void TryEvolvePokemon(void)
bool32 canStopEvo = TRUE;
enum EvolutionMode mode = EVO_MODE_BATTLE_SPECIAL;
u32 evolutionItemArg = i;
- u32 species = GetEvolutionTargetSpecies(&gPlayerParty[i], mode, evolutionItemArg, NULL, &canStopEvo, CHECK_EVO);
+ enum Species species = GetEvolutionTargetSpecies(&gPlayerParty[i], mode, evolutionItemArg, NULL, &canStopEvo, CHECK_EVO);
sTriedEvolving |= 1u << i;
if (species == SPECIES_NONE && (gLeveledUpInBattle & (1u << i)))
@@ -5816,7 +5806,8 @@ enum Type GetDynamicMoveType(struct Pokemon *mon, enum Move move, enum BattlerId
{
enum Type moveType = GetMoveType(move);
enum BattleMoveEffects moveEffect = GetMoveEffect(move);
- u32 species, heldItem;
+ enum Species species;
+ enum Item heldItem;
enum Type type1, type2, type3;
enum Ability ability;
enum HoldEffect holdEffect;
@@ -5949,6 +5940,8 @@ enum Type GetDynamicMoveType(struct Pokemon *mon, enum Move move, enum BattlerId
case SPECIES_TAUROS_PALDEA_BLAZE:
case SPECIES_TAUROS_PALDEA_AQUA:
return GetSpeciesType(species, 1);
+ default:
+ break;
}
break;
case EFFECT_IVY_CUDGEL:
@@ -5961,6 +5954,8 @@ enum Type GetDynamicMoveType(struct Pokemon *mon, enum Move move, enum BattlerId
case SPECIES_OGERPON_CORNERSTONE:
case SPECIES_OGERPON_CORNERSTONE_TERA:
return GetSpeciesType(species, 1);
+ default:
+ break;
}
break;
case EFFECT_NATURAL_GIFT:
diff --git a/src/battle_message.c b/src/battle_message.c
index eb4dc0a143..912829e01c 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -215,12 +215,12 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_HITXTIMES] = COMPOUND_STRING("The Pokรฉmon was hit {B_BUFF1} time(s)!"), //SV has dynamic plural here
[STRINGID_PKMNFELLASLEEP] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} fell asleep!"),
[STRINGID_PKMNMADESLEEP] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_BUFF1} made {B_EFF_NAME_WITH_PREFIX2} sleep!"), //not in gen 5+, ability popup
- [STRINGID_PKMNALREADYASLEEP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is already asleep!"),
+ [STRINGID_PKMNALREADYASLEEP] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} is already asleep!"),
[STRINGID_PKMNALREADYASLEEP2] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is already asleep!"),
[STRINGID_PKMNWASPOISONED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was poisoned!"),
[STRINGID_PKMNPOISONEDBY] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was poisoned by {B_SCR_NAME_WITH_PREFIX2}'s {B_BUFF1}!"), //not in gen 5+, ability popup
[STRINGID_PKMNHURTBYPOISON] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} was hurt by its poisoning!"),
- [STRINGID_PKMNALREADYPOISONED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is already poisoned!"),
+ [STRINGID_PKMNALREADYPOISONED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} is already poisoned!"),
[STRINGID_PKMNBADLYPOISONED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was badly poisoned!"),
[STRINGID_PKMNENERGYDRAINED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} had its energy drained!"),
[STRINGID_PKMNWASBURNED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was burned!"),
@@ -234,7 +234,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNWASPARALYZED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} is paralyzed, so it may be unable to move!"),
[STRINGID_PKMNWASPARALYZEDBY] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_BUFF1} paralyzed {B_EFF_NAME_WITH_PREFIX2}, so it may be unable to move!"), //not in gen 5+, ability popup
[STRINGID_PKMNISPARALYZED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} couldn't move because it's paralyzed!"),
- [STRINGID_PKMNISALREADYPARALYZED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is already paralyzed!"),
+ [STRINGID_PKMNISALREADYPARALYZED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} is already paralyzed!"),
[STRINGID_PKMNHEALEDPARALYSIS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} was cured of paralysis!"),
[STRINGID_STATSWONTINCREASE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} won't go any higher!"),
[STRINGID_STATSWONTDECREASE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1} won't go any lower!"),
@@ -262,10 +262,10 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNISGLOWING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} became cloaked in a harsh light!"),
[STRINGID_PKMNFLEWHIGH] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} flew up high!"),
[STRINGID_PKMNDUGHOLE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} burrowed its way under the ground!"),
- [STRINGID_PKMNSQUEEZEDBYBIND] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} was squeezed by {B_ATK_NAME_WITH_PREFIX2}!"),
- [STRINGID_PKMNTRAPPEDINVORTEX] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} became trapped in the vortex!"),
- [STRINGID_PKMNWRAPPEDBY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} was wrapped by {B_ATK_NAME_WITH_PREFIX2}!"),
- [STRINGID_PKMNCLAMPED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} clamped down on {B_DEF_NAME_WITH_PREFIX2}!"),
+ [STRINGID_PKMNSQUEEZEDBYBIND] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was squeezed by {B_SCR_NAME_WITH_PREFIX2}!"),
+ [STRINGID_PKMNTRAPPEDINVORTEX] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} became trapped in the vortex!"),
+ [STRINGID_PKMNWRAPPEDBY] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was wrapped by {B_SCR_NAME_WITH_PREFIX2}!"),
+ [STRINGID_PKMNCLAMPED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} clamped down on {B_EFF_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNHURTBY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is hurt by {B_BUFF1}!"),
[STRINGID_PKMNFREEDFROM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} was freed from {B_BUFF1}!"),
[STRINGID_PKMNCRASHED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} kept going and crashed!"),
@@ -282,7 +282,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNFASTASLEEP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is fast asleep."),
[STRINGID_PKMNWOKEUP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} woke up!"),
[STRINGID_PKMNWOKEUPINUPROAR] = COMPOUND_STRING("The uproar woke {B_EFF_NAME_WITH_PREFIX2}!"),
- [STRINGID_PKMNCAUSEDUPROAR] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} caused an uproar!"),
+ [STRINGID_PKMNCAUSEDUPROAR] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} caused an uproar!"),
[STRINGID_PKMNMAKINGUPROAR] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is making an uproar!"),
[STRINGID_PKMNCALMEDDOWN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} calmed down."),
[STRINGID_PKMNSTOCKPILED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} stockpiled {B_BUFF1}!"),
@@ -485,7 +485,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_USINGITEMSTATOFPKMNFELL] = COMPOUND_STRING("Using {B_LAST_ITEM}, the {B_BUFF1} of {B_SCR_NAME_WITH_PREFIX2} {B_BUFF2}fell!"),
[STRINGID_PKMNUSEDXTOGETPUMPED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} used the {B_LAST_ITEM} to get pumped!"),
[STRINGID_PKMNSXMADEYUSELESS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_SCR_ABILITY} made {B_CURRENT_MOVE} useless!"), //not in gen 5+, ability popup
- [STRINGID_PKMNTRAPPEDBYSANDTOMB] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} became trapped by the quicksand!"),
+ [STRINGID_PKMNTRAPPEDBYSANDTOMB] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} became trapped by the quicksand!"),
[STRINGID_EMPTYSTRING4] = COMPOUND_STRING(""),
[STRINGID_ABOOSTED] = COMPOUND_STRING(" a boosted"),
[STRINGID_PKMNSXINTENSIFIEDSUN] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_SCR_ABILITY} intensified the sun's rays!"), //not in gen 5+, ability popup
@@ -552,7 +552,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNLEVITATEDONELECTROMAGNETISM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} levitated with electromagnetism!"),
[STRINGID_PKMNTWISTEDDIMENSIONS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} twisted the dimensions!"),
[STRINGID_POINTEDSTONESFLOAT] = COMPOUND_STRING("Pointed stones float in the air around {B_DEF_TEAM2} team!"),
- [STRINGID_TRAPPEDBYSWIRLINGMAGMA] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} became trapped by swirling magma!"),
+ [STRINGID_TRAPPEDBYSWIRLINGMAGMA] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} became trapped by swirling magma!"),
[STRINGID_VANISHEDINSTANTLY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} vanished instantly!"),
[STRINGID_PROTECTEDTEAM] = COMPOUND_STRING("{B_CURRENT_MOVE} protected {B_ATK_TEAM2} team!"),
[STRINGID_SHAREDITSGUARD] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} shared its guard with the target!"),
@@ -564,7 +564,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_FELLSTRAIGHTDOWN] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} fell straight down!"),
[STRINGID_TARGETCHANGEDTYPE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} transformed into the {B_BUFF1} type!"),
[STRINGID_KINDOFFER] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} took the kind offer!"),
- [STRINGID_RESETSTARGETSSTATLEVELS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s stat changes were removed!"),
+ [STRINGID_RESETSTARGETSSTATLEVELS] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}'s stat changes were removed!"),
[STRINGID_ALLYSWITCHPOSITION] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} and {B_SCR_NAME_WITH_PREFIX2} switched places!"),
[STRINGID_REFLECTTARGETSTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} became the same type as {B_DEF_NAME_WITH_PREFIX2}!"),
[STRINGID_EMBARGOENDS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} can use items again!"),
@@ -586,7 +586,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_GRASSYTERRAINENDS] = COMPOUND_STRING("The grass disappeared from the battlefield."),
[STRINGID_TARGETABILITYSTATRAISE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} {B_BUFF2}raised its {B_BUFF1}!"),
[STRINGID_TARGETSSTATWASMAXEDOUT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} maxed its {B_BUFF1}!"),
- [STRINGID_ATTACKERABILITYSTATRAISE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_SCR_ABILITY} {B_BUFF2}raised its {B_BUFF1}!"),
+ [STRINGID_ATTACKERABILITYSTATRAISE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} {B_BUFF2}raised its {B_BUFF1}!"),
[STRINGID_POISONHEALHPUP] = COMPOUND_STRING("The poisoning healed {B_ATK_NAME_WITH_PREFIX2} a little bit!"), //don't think this message is displayed anymore
[STRINGID_BADDREAMSDMG] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is tormented!"),
[STRINGID_MOLDBREAKERENTERS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} breaks the mold!"),
@@ -639,12 +639,12 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_MEGAEVOEVOLVED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} has Mega Evolved into Mega {B_BUFF1}!"),
[STRINGID_DRASTICALLY] = gText_drastically,
[STRINGID_SEVERELY] = gText_severely,
- [STRINGID_INFESTATION] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} has been afflicted with an infestation by {B_ATK_NAME_WITH_PREFIX2}!"),
+ [STRINGID_INFESTATION] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} has been afflicted with an infestation by {B_SCR_NAME_WITH_PREFIX2}!"),
[STRINGID_NOEFFECTONTARGET] = COMPOUND_STRING("It won't have any effect on {B_DEF_NAME_WITH_PREFIX2}!"),
- [STRINGID_BURSTINGFLAMESHIT] = COMPOUND_STRING("The bursting flames hit {B_SCR_NAME_WITH_PREFIX2}!"),
+ [STRINGID_BURSTINGFLAMESHIT] = COMPOUND_STRING("The bursting flames hit {B_EFF_NAME_WITH_PREFIX2}!"),
[STRINGID_BESTOWITEMGIVING] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} received {B_LAST_ITEM} from {B_ATK_NAME_WITH_PREFIX2}!"),
[STRINGID_THIRDTYPEADDED] = COMPOUND_STRING("{B_BUFF1} type was added to {B_DEF_NAME_WITH_PREFIX2}!"),
- [STRINGID_FELLFORFEINT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} fell for the feint!"),
+ [STRINGID_FELLFORFEINT] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} fell for the feint!"),
[STRINGID_POKEMONCANNOTUSEMOVE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} cannot use {B_CURRENT_MOVE}!"),
[STRINGID_COVEREDINPOWDER] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is covered in powder!"),
[STRINGID_POWDEREXPLODES] = COMPOUND_STRING("When the flame touched the powder on the Pokรฉmon, it exploded!"),
@@ -671,7 +671,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_BUGBITE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} stole and ate its target's {B_LAST_ITEM}!"),
[STRINGID_ILLUSIONWOREOFF] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s illusion wore off!"),
[STRINGID_ATTACKERCUREDTARGETSTATUS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} cured {B_DEF_NAME_WITH_PREFIX2}'s problem!"),
- [STRINGID_ATTACKERLOSTFIRETYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} burned itself out!"),
+ [STRINGID_ATTACKERLOSTFIRETYPE] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} burned itself out!"),
[STRINGID_HEALERCURE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY} cured {B_SCR_NAME_WITH_PREFIX2}'s problem!"),
[STRINGID_SCRIPTINGABILITYSTATRAISE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_SCR_ABILITY} {B_BUFF2}raised its {B_BUFF1}!"),
[STRINGID_RECEIVERABILITYTAKEOVER] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_SCR_ABILITY} was taken over!"),
@@ -724,7 +724,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNREVERTEDTOPRIMAL] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s Primal Reversion! It reverted to its primal state!"),
[STRINGID_BUTPOKEMONCANTUSETHEMOVE] = COMPOUND_STRING("But {B_ATK_NAME_WITH_PREFIX2} can't use the move!"),
[STRINGID_BUTHOOPACANTUSEIT] = COMPOUND_STRING("But {B_ATK_NAME_WITH_PREFIX2} can't use it the way it is now!"),
- [STRINGID_BROKETHROUGHPROTECTION] = COMPOUND_STRING("It broke through {B_DEF_NAME_WITH_PREFIX2}'s protection!"),
+ [STRINGID_BROKETHROUGHPROTECTION] = COMPOUND_STRING("It broke through {B_EFF_NAME_WITH_PREFIX2}'s protection!"),
[STRINGID_ABILITYALLOWSONLYMOVE] = COMPOUND_STRING("{B_ATK_ABILITY} only allows the use of {B_CURRENT_MOVE}!\p"),
[STRINGID_SWAPPEDABILITIES] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} swapped Abilities with its target!"),
[STRINGID_PASTELVEILENTERS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} was cured of its poisoning!"),
@@ -738,7 +738,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_NEUTRALIZINGGASOVER] = COMPOUND_STRING("The effects of the neutralizing gas wore off!"),
[STRINGID_TARGETTOOHEAVY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is too heavy to be lifted!"),
[STRINGID_PKMNTOOKTARGETHIGH] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} took {B_DEF_NAME_WITH_PREFIX2} into the sky!"),
- [STRINGID_PKMNINSNAPTRAP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} got trapped by a snap trap!"),
+ [STRINGID_PKMNINSNAPTRAP] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} got trapped by a snap trap!"),
[STRINGID_METEORBEAMCHARGING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is overflowing with space power!"),
[STRINGID_HEATUPBEAK] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} started heating up its beak!"),
[STRINGID_COURTCHANGE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} swapped the battle effects affecting each side of the field!"),
@@ -756,7 +756,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_ATTACKERHEALEDITSBURN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} cured its burn through sheer determination so you wouldn't worry!"),
[STRINGID_ATTACKERMELTEDTHEICE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} melted the ice with its fiery determination so you wouldn't worry!"),
[STRINGID_TARGETTOUGHEDITOUT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} toughed it out so you wouldn't feel sad!"),
- [STRINGID_ATTACKERLOSTELECTRICTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} used up all its electricity!"),
+ [STRINGID_ATTACKERLOSTELECTRICTYPE] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} used up all its electricity!"),
[STRINGID_ATTACKERSWITCHEDSTATWITHTARGET] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} switched {B_BUFF1} with its target!"),
[STRINGID_BEINGHITCHARGEDPKMNWITHPOWER] = COMPOUND_STRING("Being hit by {B_CURRENT_MOVE} charged {B_DEF_NAME_WITH_PREFIX2} with power!"),
[STRINGID_SUNLIGHTACTIVATEDABILITY] = COMPOUND_STRING("The harsh sunlight activated {B_SCR_NAME_WITH_PREFIX2}'s Protosynthesis!"),
@@ -777,7 +777,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_ITEMRESTOREDSPECIESHEALTH] = COMPOUND_STRING("{B_BUFF1} had its HP restored."),
[STRINGID_ITEMCUREDSPECIESSTATUS] = COMPOUND_STRING("{B_BUFF1} had its status healed!"),
[STRINGID_ITEMRESTOREDSPECIESPP] = COMPOUND_STRING("{B_BUFF1} had its PP restored!"),
- [STRINGID_THUNDERCAGETRAPPED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} trapped {B_DEF_NAME_WITH_PREFIX2}!"),
+ [STRINGID_THUNDERCAGETRAPPED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} trapped {B_EFF_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNHURTBYFROSTBITE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} was hurt by its frostbite!"),
[STRINGID_PKMNGOTFROSTBITE] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} got frostbite!"),
[STRINGID_PKMNSITEMHEALEDFROSTBITE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_LAST_ITEM} cured its frostbite!"),
@@ -794,20 +794,20 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_ULTRABURSTCOMPLETED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} regained its true power through Ultra Burst!"),
[STRINGID_TEAMGAINEDEXP] = COMPOUND_STRING("The rest of your team gained Exp. Points thanks to the Exp. Share!\p"),
[STRINGID_CURRENTMOVECANTSELECT] = COMPOUND_STRING("{B_BUFF1} cannot be used!\p"),
- [STRINGID_TARGETISBEINGSALTCURED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is being salt cured!"),
+ [STRINGID_TARGETISBEINGSALTCURED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} is being salt cured!"),
[STRINGID_TARGETISHURTBYSALTCURE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is hurt by {B_BUFF1}!"),
- [STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} got covered in sticky candy syrup!"),
+ [STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} got covered in sticky candy syrup!"),
[STRINGID_SHARPSTEELFLOATS] = COMPOUND_STRING("Sharp-pointed pieces of steel started floating around {B_DEF_TEAM2} Pokรฉmon!"),
[STRINGID_SHARPSTEELDMG] = COMPOUND_STRING("The sharp steel bit into {B_DEF_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNBLEWAWAYSHARPSTEEL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} blew away sharp steel!"),
[STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM] = COMPOUND_STRING("The pieces of steel surrounding {B_ATK_TEAM2} Pokรฉmon disappeared!"),
- [STRINGID_TEAMTRAPPEDWITHVINES] = COMPOUND_STRING("{B_DEF_TEAM1} Pokรฉmon got trapped with vines!"),
+ [STRINGID_TEAMTRAPPEDWITHVINES] = COMPOUND_STRING("{B_EFF_TEAM1} Pokรฉmon got trapped with vines!"),
[STRINGID_PKMNHURTBYVINES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is hurt by G-Max Vine Lash's ferocious beating!"),
- [STRINGID_TEAMCAUGHTINVORTEX] = COMPOUND_STRING("{B_DEF_TEAM1} Pokรฉmon got caught in a vortex of water!"),
+ [STRINGID_TEAMCAUGHTINVORTEX] = COMPOUND_STRING("{B_EFF_TEAM1} Pokรฉmon got caught in a vortex of water!"),
[STRINGID_PKMNHURTBYVORTEX] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is hurt by G-Max Cannonade's vortex!"),
- [STRINGID_TEAMSURROUNDEDBYFIRE] = COMPOUND_STRING("{B_DEF_TEAM1} Pokรฉmon were surrounded by fire!"),
+ [STRINGID_TEAMSURROUNDEDBYFIRE] = COMPOUND_STRING("{B_EFF_TEAM1} Pokรฉmon were surrounded by fire!"),
[STRINGID_PKMNBURNINGUP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is burning up within G-Max Wildfire's flames!"),
- [STRINGID_TEAMSURROUNDEDBYROCKS] = COMPOUND_STRING("{B_DEF_TEAM1} Pokรฉmon became surrounded by rocks!"),
+ [STRINGID_TEAMSURROUNDEDBYROCKS] = COMPOUND_STRING("{B_EFF_TEAM1} Pokรฉmon became surrounded by rocks!"),
[STRINGID_PKMNHURTBYROCKSTHROWN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is hurt by rocks thrown out by G-Max Volcalith!"),
[STRINGID_MOVEBLOCKEDBYDYNAMAX] = COMPOUND_STRING("The move was blocked by the power of Dynamax!"),
[STRINGID_ZEROTOHEROTRANSFORMATION] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} underwent a heroic transformation!"),
@@ -824,7 +824,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_HOSPITALITYRESTORATION] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} drank down all the matcha that {B_SCR_NAME_WITH_PREFIX2} made!"),
[STRINGID_ELECTROSHOTCHARGING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} absorbed electricity!"),
[STRINGID_ITEMWASUSEDUP] = COMPOUND_STRING("The {B_LAST_ITEM} was used upโฆ"),
- [STRINGID_ATTACKERLOSTITSTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} lost its {B_BUFF1} type!"),
+ [STRINGID_ATTACKERLOSTITSTYPE] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} lost its {B_BUFF1} type!"),
[STRINGID_SHEDITSTAIL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} shed its tail to create a decoy!"),
[STRINGID_CLOAKEDINAHARSHLIGHT] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} became cloaked in a harsh light!"),
[STRINGID_SUPERSWEETAROMAWAFTS] = COMPOUND_STRING("A supersweet aroma is wafting from the syrup covering {B_ATK_NAME_WITH_PREFIX2}!"),
@@ -1057,6 +1057,12 @@ const u16 gProtectLikeUsedStringIds[] =
[B_MSG_PROTECTED_TEAM] = STRINGID_PROTECTEDTEAM,
};
+const u16 gBrokeProtectionStringIds[] =
+{
+ [B_MSG_FEINT] = STRINGID_FELLFORFEINT,
+ [B_MSG_HYPERSPACE_FURY] = STRINGID_BROKETHROUGHPROTECTION,
+};
+
const u16 gReflectLightScreenSafeguardStringIds[] =
{
[B_MSG_SIDE_STATUS_FAILED] = STRINGID_BUTITFAILED,
diff --git a/src/battle_move_resolution.c b/src/battle_move_resolution.c
index bb30806e06..5a1e7fbfcb 100644
--- a/src/battle_move_resolution.c
+++ b/src/battle_move_resolution.c
@@ -824,6 +824,9 @@ static bool32 HandleMoveTargetRedirection(enum MoveTarget moveTarget)
enum BattlerId battler;
for (battler = 0; battler < gBattlersCount; battler++)
{
+ if (!IsBattlerAlive(battler) || gBattlerAttacker == battler)
+ continue;
+
ability = GetBattlerAbility(battler);
if ((B_REDIRECT_ABILITY_ALLIES >= GEN_4 || !IsBattlerAlly(gBattlerAttacker, battler))
&& battler != gBattlerAttacker
@@ -1098,7 +1101,7 @@ static enum CancelerResult CancelerMoveFailure(struct BattleContext *ctx)
case EFFECT_FLING:
if (!CanFling(ctx->battlerAtk, ctx->abilityAtk))
battleScript = BattleScript_ButItFailed;
- else // set fling item
+ else // for Fling message
gLastUsedItem = gBattleMons[ctx->battlerAtk].item;
break;
case EFFECT_FAIL_IF_NOT_ARG_TYPE:
@@ -1700,9 +1703,13 @@ static enum CancelerResult CancelerTargetFailure(struct BattleContext *ctx)
ctx->updateFlags = TRUE;
ctx->runScript = TRUE;
- while (gBattleStruct->eventState.atkCancelerBattler < gBattlersCount)
+ while (gBattleStruct->eventState.atkCancelerBattler < MAX_BATTLERS_COUNT)
{
- ctx->battlerDef = gBattleStruct->eventState.atkCancelerBattler++;
+ ctx->battlerDef = GetTargetBySlot(ctx->battlerAtk, gBattleStruct->eventState.atkCancelerBattler);
+ gBattleStruct->eventState.atkCancelerBattler++;
+
+ if (!IsDoubleBattle() && ctx->battlerDef >= gBattlersCount)
+ continue;
if (ShouldSkipFailureCheckOnBattler(ctx->battlerAtk, ctx->battlerDef, FALSE))
continue;
@@ -1712,12 +1719,10 @@ static enum CancelerResult CancelerTargetFailure(struct BattleContext *ctx)
if (moveTarget == TARGET_OPPONENTS_FIELD)
{
- if (CanBattlerBounceBackMove(ctx))
+ if (!IsSemiInvulnerable(ctx->battlerDef, CHECK_ALL) && CanBattlerBounceBackMove(ctx))
gBattleStruct->moveResultFlags[ctx->battlerDef] |= MOVE_RESULT_FAILED;
- continue;
}
-
- if (IsBattlerUnaffectedByMove(ctx->battlerDef)) // immune but targeted
+ else if (IsBattlerUnaffectedByMove(ctx->battlerDef)) // immune but targeted
{
BattleScriptCall(BattleScript_DoesntAffectScripting);
targetAvoidedAttack = TRUE;
@@ -1781,7 +1786,7 @@ static enum CancelerResult CancelerTargetFailure(struct BattleContext *ctx)
gBattleStruct->moveResultFlags[ctx->battlerDef] = MOVE_RESULT_FAILED;
gBattlerAbility = ctx->battlerDef;
RecordAbilityBattle(ctx->battlerDef, ctx->abilityDef);
- BattleScriptCall(BattleScript_AbilityPopUp);
+ BattleScriptCall(BattleScript_NoEffectivenessAbility);
targetAvoidedAttack = TRUE;
}
else if (ctx->airBalloonBlocked)
@@ -1937,7 +1942,7 @@ static enum CancelerResult CancelerMultihitMoves(struct BattleContext *ctx)
for (i = 0; i < PARTY_SIZE; i++)
{
- u32 species = GetMonData(&party[i], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&party[i], MON_DATA_SPECIES);
if (species != SPECIES_NONE
&& GetMonData(&party[i], MON_DATA_HP)
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -2057,15 +2062,25 @@ static enum MoveEndResult MoveEndProtectLikeEffect(void)
{
enum MoveEndResult result = MOVEEND_RESULT_CONTINUE;
u32 temp = 0;
+ enum Ability abilityAtk = GetBattlerAbility(gBattlerAttacker);
+ enum HoldEffect holdEffectAtk = GetBattlerHoldEffect(gBattlerAttacker);
+ enum ProtectMethod method = gProtectStructs[gBattlerTarget].protected;
if (gProtectStructs[gBattlerAttacker].chargingTurn
- || CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), gCurrentMove))
+ || CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, abilityAtk, holdEffectAtk, gCurrentMove))
+ {
+ gBattleScripting.moveendState++;
+ return result;
+ }
+
+ if (method != PROTECT_MAX_GUARD
+ && abilityAtk == ABILITY_UNSEEN_FIST
+ && IsMoveMakingContact(gBattlerAttacker, gBattlerTarget, abilityAtk, holdEffectAtk, gCurrentMove))
{
gBattleScripting.moveendState++;
return result;
}
- enum ProtectMethod method = gProtectStructs[gBattlerTarget].protected;
switch (method)
{
case PROTECT_SPIKY_SHIELD:
@@ -2120,7 +2135,7 @@ static enum MoveEndResult MoveEndProtectLikeEffect(void)
// Not strictly a protect effect, but works the same way
if (IsBattlerUsingBeakBlast(gBattlerTarget)
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& CanBeBurned(gBattlerAttacker, gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)))
{
gBattleMons[gBattlerAttacker].status1 = STATUS1_BURN;
@@ -2187,7 +2202,7 @@ static enum MoveEndResult MoveEndAbsorb(void)
case EFFECT_ABSORB:
case EFFECT_DREAM_EATER:
if (gBattleStruct->moveDamage[gBattlerTarget] > 0
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, INCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerAttacker))
{
s32 healAmount = (gBattleStruct->moveDamage[gBattlerTarget] * GetMoveAbsorbPercentage(gCurrentMove) / 100);
@@ -2227,7 +2242,7 @@ static enum MoveEndResult MoveEndRage(void)
&& IsBattlerAlive(gBattlerTarget)
&& gBattlerAttacker != gBattlerTarget
&& !IsBattlerAlly(gBattlerAttacker, gBattlerTarget)
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& !IsBattleMoveStatus(gCurrentMove)
&& CompareStat(gBattlerTarget, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN, GetBattlerAbility(gBattlerTarget)))
{
@@ -2479,7 +2494,7 @@ static enum MoveEndResult MoveEndFaintBlock(void)
break;
case FAINT_BLOCK_TRY_DESTINY_BOND: // Checked before FAINT_BLOCK_FAINT_TARGET but occurs after since volatiles are cleared on faint
if (gBattleMons[gBattlerTarget].volatiles.destinyBond
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerAttacker)
&& GetActiveGimmick(gBattlerAttacker) != GIMMICK_DYNAMAX
&& !IsBattlerAlly(gBattlerAttacker, gBattlerTarget))
@@ -2490,7 +2505,7 @@ static enum MoveEndResult MoveEndFaintBlock(void)
break;
case FAINT_BLOCK_TRY_GRUDGE: // Checked before FAINT_BLOCK_FAINT_TARGET but occurs after since volatiles are cleared on faint
if (gBattleMons[gBattlerTarget].volatiles.grudge
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerAttacker)
&& !IsBattlerAlly(gBattlerAttacker, gBattlerTarget)
&& !IsZMove(gCurrentMove)
@@ -2803,7 +2818,7 @@ static enum MoveEndResult MoveEndDefrost(void)
continue;
if (!(gBattleMons[battler].status1 & STATUS1_ICY_ANY)
- || !IsBattlerTurnDamaged(battler)
+ || !IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES)
|| !IsBattlerAlive(battler))
continue;
@@ -2868,7 +2883,7 @@ static enum MoveEndResult MoveEndMoveBlock(void)
if (gBattleMons[gBattlerTarget].item != ITEM_NONE
&& IsBattlerAlive(gBattlerAttacker)
&& !(B_KNOCK_OFF_REMOVAL >= GEN_5 && side == B_SIDE_PLAYER && !(gBattleTypeFlags & BATTLE_TYPE_TRAINER))
- && IsAnyTargetTurnDamaged(gBattlerAttacker)
+ && IsAnyTargetTurnDamaged(gBattlerAttacker, EXCLUDING_SUBSTITUTES)
&& !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)
&& CanBattlerGetOrLoseItem(gBattlerTarget, gBattlerAttacker, gBattleMons[gBattlerTarget].item)
&& !NoAliveMonsForEitherParty())
@@ -2907,7 +2922,7 @@ static enum MoveEndResult MoveEndMoveBlock(void)
}
break;
case EFFECT_STEAL_ITEM:
- if (!IsAnyTargetTurnDamaged(gBattlerAttacker)
+ if (!IsAnyTargetTurnDamaged(gBattlerAttacker, EXCLUDING_SUBSTITUTES)
|| gBattleMons[gBattlerAttacker].item != ITEM_NONE
|| gBattleMons[gBattlerTarget].item == ITEM_NONE
|| !IsBattlerAlive(gBattlerAttacker)
@@ -2937,7 +2952,7 @@ static enum MoveEndResult MoveEndMoveBlock(void)
}
break;
case EFFECT_HIT_SWITCH_TARGET:
- if (IsAnyTargetTurnDamaged(gBattlerAttacker)
+ if (IsAnyTargetTurnDamaged(gBattlerAttacker, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerTarget)
&& IsBattlerAlive(gBattlerAttacker)
&& gBattleMons[BATTLE_PARTNER(gBattlerTarget)].volatiles.semiInvulnerable != STATE_COMMANDER)
@@ -2968,7 +2983,7 @@ static enum MoveEndResult MoveEndMoveBlock(void)
break;
case EFFECT_SMACK_DOWN:
if (!IsBattlerGrounded(gBattlerTarget, GetBattlerAbility(gBattlerTarget), GetBattlerHoldEffect(gBattlerTarget))
- && IsAnyTargetTurnDamaged(gBattlerAttacker)
+ && IsAnyTargetTurnDamaged(gBattlerAttacker, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerTarget)
&& !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove))
{
@@ -3015,7 +3030,7 @@ static enum MoveEndResult MoveEndMoveBlock(void)
}
break;
case EFFECT_RECOIL:
- if (IsAnyTargetTurnDamaged(gBattlerAttacker) && IsBattlerAlive(gBattlerAttacker) && gBattleStruct->moveDamage[gBattlerTarget] > 0)
+ if (IsAnyTargetTurnDamaged(gBattlerAttacker, INCLUDING_SUBSTITUTES) && IsBattlerAlive(gBattlerAttacker) && gBattleStruct->moveDamage[gBattlerTarget] > 0)
{
enum Ability ability = GetBattlerAbility(gBattlerAttacker);
if (IsAbilityAndRecord(gBattlerAttacker, ability, ABILITY_ROCK_HEAD)
@@ -3029,7 +3044,7 @@ static enum MoveEndResult MoveEndMoveBlock(void)
}
break;
case EFFECT_CHLOROBLAST:
- if (IsAnyTargetTurnDamaged(gBattlerAttacker) && IsBattlerAlive(gBattlerAttacker))
+ if (IsAnyTargetTurnDamaged(gBattlerAttacker, INCLUDING_SUBSTITUTES) && IsBattlerAlive(gBattlerAttacker))
{
enum Ability ability = GetBattlerAbility(gBattlerAttacker);
if (IsAbilityAndRecord(gBattlerAttacker, ability, ABILITY_ROCK_HEAD)
@@ -3044,7 +3059,7 @@ static enum MoveEndResult MoveEndMoveBlock(void)
}
break;
case EFFECT_RAPID_SPIN:
- if (IsAnyTargetTurnDamaged(gBattlerAttacker) && IsBattlerAlive(gBattlerAttacker))
+ if (IsAnyTargetTurnDamaged(gBattlerAttacker, INCLUDING_SUBSTITUTES) && IsBattlerAlive(gBattlerAttacker))
{
BattleScriptCall(BattleScript_RapidSpinAway);
result = MOVEEND_RESULT_RUN_SCRIPT;
@@ -3053,7 +3068,7 @@ static enum MoveEndResult MoveEndMoveBlock(void)
case EFFECT_FELL_STINGER:
if (IsBattlerAlive(gBattlerAttacker)
&& !IsBattlerAlive(gBattlerTarget)
- && IsAnyTargetTurnDamaged(gBattlerAttacker)
+ && IsAnyTargetTurnDamaged(gBattlerAttacker, EXCLUDING_SUBSTITUTES)
&& !NoAliveMonsForEitherParty()
&& CompareStat(gBattlerAttacker, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN, GetBattlerAbility(gBattlerAttacker)))
{
@@ -3066,18 +3081,18 @@ static enum MoveEndResult MoveEndMoveBlock(void)
break;
case EFFECT_STONE_AXE:
if (!IsHazardOnSide(side, HAZARDS_STEALTH_ROCK)
- && IsAnyTargetTurnDamaged(gBattlerAttacker)
+ && IsAnyTargetTurnDamaged(gBattlerAttacker, INCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerAttacker))
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_POINTEDSTONESFLOAT;
BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_StealthRockActivates;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectStealthRock;
result = MOVEEND_RESULT_RUN_SCRIPT;
}
break;
case EFFECT_CEASELESS_EDGE:
if (gSideTimers[side].spikesAmount < 3
- && IsAnyTargetTurnDamaged(gBattlerAttacker)
+ && IsAnyTargetTurnDamaged(gBattlerAttacker, INCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerAttacker))
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SPIKESSCATTERED;
@@ -3089,14 +3104,14 @@ static enum MoveEndResult MoveEndMoveBlock(void)
else
{
BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_SpikesActivates;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectSpikes;
result = MOVEEND_RESULT_RUN_SCRIPT;
}
}
break;
case EFFECT_SCALE_SHOT:
if (IsBattlerAlive(gBattlerAttacker)
- && IsAnyTargetTurnDamaged(gBattlerAttacker))
+ && IsAnyTargetTurnDamaged(gBattlerAttacker, INCLUDING_SUBSTITUTES))
{
BattleScriptCall(BattleScript_DefDownSpeedUp);
result = MOVEEND_RESULT_RUN_SCRIPT;
@@ -3145,7 +3160,7 @@ static enum MoveEndResult MoveEndShellTrap(void)
// Set ShellTrap to activate after the attacker's turn if target was hit by a physical move.
if (GetMoveEffect(gChosenMoveByBattler[battlerDef]) == EFFECT_SHELL_TRAP
&& IsBattleMovePhysical(gCurrentMove)
- && IsBattlerTurnDamaged(battlerDef)
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& gProtectStructs[battlerDef].physicalBattlerId == gBattlerAttacker)
{
gProtectStructs[battlerDef].shellTrap = TRUE;
@@ -3194,7 +3209,7 @@ static enum MoveEndResult MoveEndKeeMarangaHpThresholdItemTarget(void)
static bool32 TryRedCard(enum BattlerId battlerAtk, enum BattlerId redCardBattler, enum Move move)
{
if (!IsBattlerAlive(redCardBattler)
- || !IsBattlerTurnDamaged(redCardBattler)
+ || !IsBattlerTurnDamaged(redCardBattler, EXCLUDING_SUBSTITUTES)
|| DoesSubstituteBlockMove(battlerAtk, redCardBattler, move)
|| !CanBattlerSwitch(battlerAtk))
return FALSE;
@@ -3216,7 +3231,7 @@ static bool32 TryRedCard(enum BattlerId battlerAtk, enum BattlerId redCardBattle
static bool32 TryEjectButton(enum BattlerId battlerAtk, u32 ejectButtonBattler)
{
- if (!IsBattlerTurnDamaged(ejectButtonBattler)
+ if (!IsBattlerTurnDamaged(ejectButtonBattler, EXCLUDING_SUBSTITUTES)
|| !IsBattlerAlive(ejectButtonBattler)
|| !CanBattlerSwitch(ejectButtonBattler))
return FALSE;
@@ -3363,7 +3378,7 @@ static enum MoveEndResult MoveEndHitEscape(void)
if (GetMoveEffect(gCurrentMove) == EFFECT_HIT_ESCAPE
&& !gBattleStruct->unableToUseMove
- && IsAnyTargetTurnDamaged(gBattlerAttacker)
+ && IsAnyTargetTurnDamaged(gBattlerAttacker, INCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerAttacker)
&& !NoAliveMonsForBattlerSide(gBattlerTarget))
{
@@ -3392,7 +3407,7 @@ static enum MoveEndResult MoveEndPickpocket(void)
&& !IsBattlerUnaffectedByMove(battlerDef)
&& GetBattlerAbility(battlerDef) == ABILITY_PICKPOCKET
&& IsMoveMakingContact(gBattlerAttacker, battlerDef, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), gCurrentMove)
- && IsBattlerTurnDamaged(battlerDef)
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& !DoesSubstituteBlockMove(gBattlerAttacker, battlerDef, gCurrentMove)
&& IsBattlerAlive(battlerDef)
&& gBattleMons[battlerDef].item == ITEM_NONE
@@ -3489,7 +3504,7 @@ static enum MoveEndResult MoveEndThirdMoveBlock(void)
switch (moveEffect)
{
case EFFECT_STEEL_ROLLER:
- if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY && IsAnyTargetTurnDamaged(gBattlerAttacker))
+ if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY && IsAnyTargetTurnDamaged(gBattlerAttacker, INCLUDING_SUBSTITUTES))
{
BattleScriptCall(BattleScript_RemoveTerrain);
result = MOVEEND_RESULT_RUN_SCRIPT;
@@ -3499,7 +3514,7 @@ static enum MoveEndResult MoveEndThirdMoveBlock(void)
if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY
&& gLastPrintedMoves[gBattlerAttacker] == gCurrentMove
&& IsBattlerAlive(gBattlerAttacker)
- && IsAnyTargetTurnDamaged(gBattlerAttacker))
+ && IsAnyTargetTurnDamaged(gBattlerAttacker, INCLUDING_SUBSTITUTES))
{
BattleScriptCall(BattleScript_RemoveTerrain);
result = MOVEEND_RESULT_RUN_SCRIPT;
diff --git a/src/battle_partner.c b/src/battle_partner.c
index 19b99aee61..1cc7a8e800 100644
--- a/src/battle_partner.c
+++ b/src/battle_partner.c
@@ -12,10 +12,12 @@
#include "constants/abilities.h"
#include "constants/battle_ai.h"
+#if !TESTING
const struct Trainer gBattlePartners[DIFFICULTY_COUNT][PARTNER_COUNT] =
{
#include "data/battle_partners.h"
};
+#endif
#define STEVEN_OTID 61226
diff --git a/src/battle_pike.c b/src/battle_pike.c
index b771cabefa..0b92bcd149 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -34,7 +34,7 @@ struct PikeRoomNPC
struct PikeWildMon
{
- u16 species;
+ enum Species species;
u8 levelDelta;
u16 moves[MAX_MON_MOVES];
};
@@ -83,7 +83,7 @@ static void PrepareTwoTrainers(void);
static void TryHealMons(u8 healCount);
static void Task_DoStatusInflictionScreenFlash(u8 taskId);
static bool8 AtLeastTwoAliveMons(void);
-static u8 SpeciesToPikeMonId(u16 species);
+static u8 SpeciesToPikeMonId(enum Species species);
static bool8 CanEncounterWildMon(u8 monLevel);
static u8 GetPikeQueenFightType(u8);
static bool8 StatusInflictionFadeOut(struct Task *task);
@@ -844,7 +844,7 @@ static bool8 DoesAbilityPreventStatus(struct Pokemon *mon, u32 status)
return ret;
}
-static bool8 DoesTypePreventStatus(u16 species, u32 status)
+static bool8 DoesTypePreventStatus(enum Species species, u32 status)
{
bool8 ret = FALSE;
@@ -881,7 +881,7 @@ static bool8 TryInflictRandomStatus(void)
u8 count;
u8 indices[FRONTIER_PARTY_SIZE];
u32 status;
- u16 species;
+ enum Species species;
bool8 statusChosen;
struct Pokemon *mon;
@@ -1635,7 +1635,7 @@ static bool8 CanEncounterWildMon(u8 enemyMonLevel)
return TRUE;
}
-static u8 SpeciesToPikeMonId(u16 species)
+static u8 SpeciesToPikeMonId(enum Species species)
{
u8 ret;
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index 3adab6a237..59241b34be 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -38,6 +38,7 @@
#include "constants/layouts.h"
#include "constants/metatile_labels.h"
#include "constants/moves.h"
+#include "constants/species.h"
#include "constants/trainers.h"
#define NUM_LAYOUT_OFFSETS 8
@@ -46,7 +47,7 @@ extern const struct MapLayout *const gMapLayouts[];
struct PyramidWildMon
{
- u16 species;
+ enum Species species;
u8 lvl;
u8 abilityNum;
u16 moves[MAX_MON_MOVES];
@@ -1357,11 +1358,14 @@ static void MarkPyramidTrainerAsBattled(u16 trainerId)
#if BATTLE_PYRAMID_RANDOM_ENCOUNTERS == TRUE
// check if given species evolved from a specific evolutionary stone
// if nItems is passed as 0, it will check for any EVO_ITEM case
-static bool32 CheckBattlePyramidEvoRequirement(u16 species, const u16 *evoItems, u8 nItems)
+static bool32 CheckBattlePyramidEvoRequirement(enum Species species, const u16 *evoItems, u8 nItems)
{
u32 i, j, k;
for (i = 0; i < NUM_SPECIES; i++)
{
+ if (!IsSpeciesEnabled(i))
+ continue;
+
const struct Evolution *evolutions = GetSpeciesEvolutions(i);
if (evolutions == NULL)
continue;
@@ -1398,7 +1402,7 @@ void GenerateBattlePyramidWildMon(void)
u32 lvl = gSaveBlock2Ptr->frontier.lvlMode;
u16 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] / 7) % TOTAL_PYRAMID_ROUNDS;
const struct BattlePyramidRequirement *reqs = &sBattlePyramidRequirementsByRound[round];
- u16 species;
+ enum Species species;
u32 bstLim;
u16 *moves = NULL;
u16 *abilities = NULL;
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 5ba5faa71c..999ac15a13 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -49,7 +49,7 @@
#include "pokenav.h"
#include "menu_specialized.h"
#include "data.h"
-#include "generational_changes.h"
+#include "config_changes.h"
#include "move.h"
#include "constants/abilities.h"
#include "constants/battle_anim.h"
@@ -1387,7 +1387,7 @@ static void Cmd_multihitresultmessage(void)
static inline bool32 DoesBattlerNegateDamage(enum BattlerId battler)
{
- u32 species = gBattleMons[battler].species;
+ enum Species species = gBattleMons[battler].species;
enum Ability ability = GetBattlerAbility(battler);
if (gBattleMons[battler].volatiles.transformed)
@@ -2392,21 +2392,8 @@ static inline bool32 IgnoreTargetingForMoveEffect(enum MoveEffect moveEffect) //
case MOVE_EFFECT_ELECTRIC_TERRAIN:
case MOVE_EFFECT_PSYCHIC_TERRAIN:
case MOVE_EFFECT_DEFOG:
- case MOVE_EFFECT_REFLECT:
- case MOVE_EFFECT_LIGHT_SCREEN:
- case MOVE_EFFECT_AURORA_VEIL:
- case MOVE_EFFECT_GRAVITY:
- case MOVE_EFFECT_HEAL_TEAM:
- case MOVE_EFFECT_AROMATHERAPY:
- case MOVE_EFFECT_RECYCLE_BERRIES:
case MOVE_EFFECT_ION_DELUGE:
case MOVE_EFFECT_HAZE:
- case MOVE_EFFECT_RAISE_TEAM_ATTACK:
- case MOVE_EFFECT_RAISE_TEAM_DEFENSE:
- case MOVE_EFFECT_RAISE_TEAM_SPEED:
- case MOVE_EFFECT_RAISE_TEAM_SP_ATK:
- case MOVE_EFFECT_RAISE_TEAM_SP_DEF:
- case MOVE_EFFECT_CRIT_PLUS_SIDE:
case MOVE_EFFECT_LOWER_ATTACK_SIDE:
case MOVE_EFFECT_LOWER_DEFENSE_SIDE:
case MOVE_EFFECT_LOWER_SPEED_SIDE:
@@ -2435,6 +2422,26 @@ static inline bool32 IgnoreTargetingForMoveEffect(enum MoveEffect moveEffect) //
}
}
+static bool32 DoesSubstituteBlockMoveEffectOnTarget(enum BattlerId battlerAtk, enum BattlerId battlerDef, enum MoveEffect moveEffect)
+{
+ if (battlerAtk == battlerDef)
+ return FALSE;
+
+ if (moveEffect != MOVE_EFFECT_BUG_BITE && IgnoreTargetingForMoveEffect(moveEffect))
+ return FALSE;
+
+ if (moveEffect == MOVE_EFFECT_CORE_ENFORCER)
+ return FALSE;
+
+ if (moveEffect == MOVE_EFFECT_BREAK_SCREEN)
+ return FALSE;
+
+ if (DoesSubstituteBlockMove(battlerAtk, battlerDef, gCurrentMove))
+ return TRUE;
+
+ return FALSE;
+}
+
void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum MoveEffect moveEffect, const u8 *battleScript, enum SetMoveEffectFlags effectFlags)
{
enum Ability abilities[MAX_BATTLERS_COUNT] = {ABILITY_NONE};
@@ -2445,12 +2452,12 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
bool32 primary = effectFlags & EFFECT_PRIMARY;
bool32 certain = effectFlags & EFFECT_CERTAIN;
bool32 affectsUser = (battlerAtk == effectBattler);
- bool32 mirrorArmorReflected = (abilities[gBattlerTarget] == ABILITY_MIRROR_ARMOR);
+ bool32 mirrorArmorReflected = (!affectsUser && abilities[effectBattler] == ABILITY_MIRROR_ARMOR);
union StatChangeFlags flags = {0};
if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT
- && IsBattlerAlive(gBattlerTarget)
- && IsFinalStrikeEffect(moveEffect))
+ && IsBattlerAlive(effectBattler)
+ && IsFinalStrikeEffect(moveEffect))
{
gBattlescriptCurrInstr = battleScript;
return;
@@ -2463,11 +2470,11 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
moveEffect = MOVE_EFFECT_NONE;
else if (!primary
&& IsSheerForceAffected(gCurrentMove, abilities[battlerAtk])
- && !(moveEffect == MOVE_EFFECT_ORDER_UP && gBattleStruct->battlerState[gBattlerAttacker].commanderSpecies != SPECIES_NONE))
+ && !(moveEffect == MOVE_EFFECT_ORDER_UP && gBattleStruct->battlerState[battlerAtk].commanderSpecies != SPECIES_NONE))
moveEffect = MOVE_EFFECT_NONE;
- else if (!IsBattlerAlive(gEffectBattler) && !IgnoreTargetingForMoveEffect(moveEffect))
+ else if (!IsBattlerAlive(effectBattler) && !IgnoreTargetingForMoveEffect(moveEffect))
moveEffect = MOVE_EFFECT_NONE;
- else if (DoesSubstituteBlockMove(gBattlerAttacker, gEffectBattler, gCurrentMove) && !affectsUser)
+ else if (DoesSubstituteBlockMoveEffectOnTarget(battlerAtk, effectBattler, moveEffect))
moveEffect = MOVE_EFFECT_NONE;
gBattleScripting.moveEffect = moveEffect; // ChangeStatBuffs still needs the global moveEffect
@@ -2484,19 +2491,19 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
case MOVE_EFFECT_PARALYSIS:
case MOVE_EFFECT_TOXIC:
case MOVE_EFFECT_FROSTBITE:
- if (IsSafeguardProtected(gBattlerAttacker, gEffectBattler, GetBattlerAbility(gBattlerAttacker)) && !primary)
+ if (IsSafeguardProtected(battlerAtk, effectBattler, abilities[battlerAtk]) && !primary)
{
gBattlescriptCurrInstr = battleScript;
}
else if (CanSetNonVolatileStatus(
- gBattlerAttacker,
- gEffectBattler,
- abilities[gBattlerAttacker],
- abilities[gBattlerTarget],
+ battlerAtk,
+ effectBattler,
+ abilities[battlerAtk],
+ abilities[effectBattler],
moveEffect,
CHECK_TRIGGER))
{
- SetNonVolatileStatus(gBattlerAttacker, gEffectBattler, moveEffect, battleScript, TRIGGER_ON_MOVE);
+ SetNonVolatileStatus(battlerAtk, effectBattler, moveEffect, battleScript, TRIGGER_ON_MOVE);
}
else
{
@@ -2504,13 +2511,13 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_CONFUSION:
- if (!CanBeConfused(gBattlerAttacker, gEffectBattler))
+ if (!CanBeConfused(battlerAtk, effectBattler))
{
gBattlescriptCurrInstr = battleScript;
}
else
{
- gBattleMons[gEffectBattler].volatiles.confusionTurns = RandomUniform(RNG_CONFUSION_TURNS, 2, B_CONFUSION_TURNS); // 2-5 turns
+ gBattleMons[effectBattler].volatiles.confusionTurns = RandomUniform(RNG_CONFUSION_TURNS, 2, B_CONFUSION_TURNS); // 2-5 turns
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectConfusion;
}
@@ -2523,8 +2530,8 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
if (primary || certain)
{
gLastUsedAbility = ABILITY_INNER_FOCUS;
- gBattlerAbility = gEffectBattler;
- RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS);
+ gBattlerAbility = effectBattler;
+ RecordAbilityBattle(effectBattler, ABILITY_INNER_FOCUS);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_FlinchPrevention;
}
@@ -2533,14 +2540,14 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = battleScript;
}
}
- else if (gBattleMons[gEffectBattler].volatiles.flinched)
+ else if (gBattleMons[effectBattler].volatiles.flinched)
{
gBattlescriptCurrInstr = battleScript;
}
- else if (!HasBattlerActedThisTurn(gEffectBattler)
- && GetActiveGimmick(gEffectBattler) != GIMMICK_DYNAMAX)
+ else if (!HasBattlerActedThisTurn(effectBattler)
+ && GetActiveGimmick(effectBattler) != GIMMICK_DYNAMAX)
{
- gBattleMons[gEffectBattler].volatiles.flinched = TRUE;
+ gBattleMons[effectBattler].volatiles.flinched = TRUE;
gBattlescriptCurrInstr = battleScript;
}
else
@@ -2549,11 +2556,11 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_UPROAR:
- if (!gBattleMons[gEffectBattler].volatiles.uproarTurns)
+ if (!gBattleMons[effectBattler].volatiles.uproarTurns)
{
- gBattleMons[gEffectBattler].volatiles.multipleTurns = TRUE;
- gLockedMoves[gEffectBattler] = gCurrentMove;
- gBattleMons[gEffectBattler].volatiles.uproarTurns = B_UPROAR_TURNS >= GEN_5
+ gBattleMons[effectBattler].volatiles.multipleTurns = TRUE;
+ gLockedMoves[effectBattler] = gCurrentMove;
+ gBattleMons[effectBattler].volatiles.uproarTurns = B_UPROAR_TURNS >= GEN_5
? B_UPROAR_TURN_COUNT - 2
: RandomUniform(RNG_CONFUSION_TURNS, 2, B_UPROAR_TURN_COUNT);
@@ -2567,11 +2574,11 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
case MOVE_EFFECT_PAYDAY:
// Don't scatter coins on the second hit of Parental Bond
- if (IsOnPlayerSide(gBattlerAttacker) && gSpecialStatuses[gBattlerAttacker].parentalBondState!= PARENTAL_BOND_2ND_HIT)
+ if (IsOnPlayerSide(battlerAtk) && gSpecialStatuses[battlerAtk].parentalBondState != PARENTAL_BOND_2ND_HIT)
{
u16 payday = gPaydayMoney;
- enum MoveTarget moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove);
- gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 5);
+ enum MoveTarget moveTarget = GetBattlerMoveTargetType(battlerAtk, gCurrentMove);
+ gPaydayMoney += (gBattleMons[battlerAtk].level * 5);
if (payday > gPaydayMoney)
gPaydayMoney = 0xFFFF;
@@ -2591,7 +2598,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_HAPPY_HOUR:
- if (IsOnPlayerSide(gBattlerAttacker) && !gBattleStruct->moneyMultiplierMove)
+ if (IsOnPlayerSide(battlerAtk) && !gBattleStruct->moneyMultiplierMove)
{
gBattleStruct->moneyMultiplier *= 2;
gBattleStruct->moneyMultiplierMove = 1;
@@ -2615,16 +2622,16 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
}
case MOVE_EFFECT_WRAP:
- if (gBattleMons[gEffectBattler].volatiles.wrapped)
+ if (gBattleMons[effectBattler].volatiles.wrapped)
{
gBattlescriptCurrInstr = battleScript;
}
else
{
- SetWrapTurns(gEffectBattler, GetBattlerHoldEffect(gBattlerAttacker));
- gBattleMons[gEffectBattler].volatiles.wrapped = TRUE;
- gBattleMons[gEffectBattler].volatiles.wrappedMove = gCurrentMove;
- gBattleMons[gEffectBattler].volatiles.wrappedBy = gBattlerAttacker;
+ SetWrapTurns(effectBattler, GetBattlerHoldEffect(battlerAtk));
+ gBattleMons[effectBattler].volatiles.wrapped = TRUE;
+ gBattleMons[effectBattler].volatiles.wrappedMove = gCurrentMove;
+ gBattleMons[effectBattler].volatiles.wrappedBy = battlerAtk;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectWrap;
}
@@ -2662,7 +2669,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
case MOVE_EFFECT_ACC_MINUS_1:
case MOVE_EFFECT_EVS_MINUS_1:
flags.certain = affectsUser;
- if (mirrorArmorReflected && !affectsUser)
+ if (mirrorArmorReflected)
flags.allowPtr = TRUE;
else
flags.updateMoveEffect = TRUE;
@@ -2718,7 +2725,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
case MOVE_EFFECT_ACC_MINUS_2:
case MOVE_EFFECT_EVS_MINUS_2:
flags.certain = affectsUser;
- if (mirrorArmorReflected && !affectsUser)
+ if (mirrorArmorReflected)
flags.allowPtr = TRUE;
else
flags.updateMoveEffect = TRUE;
@@ -2745,28 +2752,28 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
if (B_SKIP_RECHARGE == GEN_1 && !IsBattlerAlive(gBattlerTarget)) // Skip recharge if gen 1 and foe is KO'd
break;
- gBattleMons[gEffectBattler].volatiles.rechargeTimer = 2;
- gLockedMoves[gEffectBattler] = gCurrentMove;
+ gBattleMons[effectBattler].volatiles.rechargeTimer = 2;
+ gLockedMoves[effectBattler] = gCurrentMove;
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_RAGE:
- gBattleMons[gBattlerAttacker].volatiles.rage = TRUE;
+ gBattleMons[battlerAtk].volatiles.rage = TRUE;
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_PREVENT_ESCAPE:
- if (!gBattleMons[gBattlerTarget].volatiles.escapePrevention) // Do we need to check if the status is already set?
+ if (!gBattleMons[effectBattler].volatiles.escapePrevention) // Do we need to check if the status is already set?
{
- gBattleMons[gBattlerTarget].volatiles.escapePrevention = TRUE;
- gBattleMons[gBattlerTarget].volatiles.battlerPreventingEscape = gBattlerAttacker;
+ gBattleMons[effectBattler].volatiles.escapePrevention = TRUE;
+ gBattleMons[effectBattler].volatiles.battlerPreventingEscape = battlerAtk;
}
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_NIGHTMARE:
- gBattleMons[gBattlerTarget].volatiles.nightmare = TRUE;
+ gBattleMons[effectBattler].volatiles.nightmare = TRUE;
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_GLAIVE_RUSH:
- gBattleMons[gBattlerAttacker].volatiles.glaiveRush = TRUE;
+ gBattleMons[battlerAtk].volatiles.glaiveRush = TRUE;
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_ALL_STATS_UP:
@@ -2792,51 +2799,49 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
case MOVE_EFFECT_RECOIL_HP_25: // Struggle
{
- s32 recoil = (gBattleMons[gEffectBattler].maxHP) / 4;
+ s32 recoil = (gBattleMons[effectBattler].maxHP) / 4;
if (recoil == 0)
recoil = 1;
- if (abilities[gEffectBattler] == ABILITY_PARENTAL_BOND)
- recoil *= 2;
- SetPassiveDamageAmount(gEffectBattler, recoil);
- TryUpdateEvolutionTracker(IF_RECOIL_DAMAGE_GE, gBattleStruct->passiveHpUpdate[gBattlerAttacker], MOVE_NONE);
+ SetPassiveDamageAmount(effectBattler, recoil);
+ TryUpdateEvolutionTracker(IF_RECOIL_DAMAGE_GE, gBattleStruct->passiveHpUpdate[battlerAtk], MOVE_NONE);
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_MoveEffectRecoil;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectRecoilHP25;
break;
}
case MOVE_EFFECT_THRASH:
// Petal Dance doesn't lock mons that copy the move with Dancer
- if (gSpecialStatuses[gEffectBattler].dancerUsedMove || gBattleMons[gEffectBattler].volatiles.rampageTurns)
+ if (gSpecialStatuses[effectBattler].dancerUsedMove || gBattleMons[effectBattler].volatiles.rampageTurns)
{
gBattlescriptCurrInstr = battleScript;
}
else
{
- gBattleMons[gEffectBattler].volatiles.multipleTurns = TRUE;
- gLockedMoves[gEffectBattler] = gCurrentMove;
- gBattleMons[gEffectBattler].volatiles.rampageTurns = RandomUniform(RNG_RAMPAGE_TURNS, 2, B_RAMPAGE_TURNS);
+ gBattleMons[effectBattler].volatiles.multipleTurns = TRUE;
+ gLockedMoves[effectBattler] = gCurrentMove;
+ gBattleMons[effectBattler].volatiles.rampageTurns = RandomUniform(RNG_RAMPAGE_TURNS, 2, B_RAMPAGE_TURNS);
}
break;
case MOVE_EFFECT_CLEAR_SMOG:
for (i = 0; i < NUM_BATTLE_STATS; i++)
{
- if (gBattleMons[gEffectBattler].statStages[i] != DEFAULT_STAT_STAGE)
+ if (gBattleMons[effectBattler].statStages[i] != DEFAULT_STAT_STAGE)
break;
}
- if (IsBattlerTurnDamaged(gEffectBattler) && i != NUM_BATTLE_STATS)
+ if (IsBattlerTurnDamaged(effectBattler, EXCLUDING_SUBSTITUTES) && i != NUM_BATTLE_STATS)
{
for (i = 0; i < NUM_BATTLE_STATS; i++)
- gBattleMons[gEffectBattler].statStages[i] = DEFAULT_STAT_STAGE;
+ gBattleMons[effectBattler].statStages[i] = DEFAULT_STAT_STAGE;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectClearSmog;
}
break;
case MOVE_EFFECT_FLAME_BURST:
- if (IsBattlerAlive(BATTLE_PARTNER(gBattlerTarget))
- && !IsSemiInvulnerable(BATTLE_PARTNER(gBattlerTarget), CHECK_ALL)
- && GetBattlerAbility(BATTLE_PARTNER(gBattlerTarget)) != ABILITY_MAGIC_GUARD)
+ if (IsBattlerAlive(BATTLE_PARTNER(effectBattler))
+ && !IsSemiInvulnerable(BATTLE_PARTNER(effectBattler), CHECK_ALL)
+ && GetBattlerAbility(BATTLE_PARTNER(effectBattler)) != ABILITY_MAGIC_GUARD)
{
- enum BattlerId partnerTarget = BATTLE_PARTNER(gBattlerTarget);
- gBattleScripting.battler = partnerTarget;
+ enum BattlerId partnerTarget = BATTLE_PARTNER(effectBattler);
+ gEffectBattler = partnerTarget;
SetPassiveDamageAmount(partnerTarget, gBattleMons[partnerTarget].maxHP / 16);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectFlameBurst;
@@ -2844,24 +2849,26 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
case MOVE_EFFECT_FEINT:
i = FALSE; // Remove Protect if any
- if (gProtectStructs[gBattlerTarget].protected != PROTECT_NONE
- && gProtectStructs[gBattlerTarget].protected != PROTECT_MAX_GUARD)
+ if (gProtectStructs[effectBattler].protected != PROTECT_NONE
+ && gProtectStructs[effectBattler].protected != PROTECT_MAX_GUARD)
{
- gProtectStructs[gBattlerTarget].protected = PROTECT_NONE;
+ gProtectStructs[effectBattler].protected = PROTECT_NONE;
i = TRUE;
}
- if (GetProtectType(gProtectStructs[BATTLE_PARTNER(gBattlerTarget)].protected) == PROTECT_TYPE_SIDE)
+ if (GetProtectType(gProtectStructs[BATTLE_PARTNER(effectBattler)].protected) == PROTECT_TYPE_SIDE)
{
- gProtectStructs[BATTLE_PARTNER(gBattlerTarget)].protected = PROTECT_NONE;
+ gProtectStructs[BATTLE_PARTNER(effectBattler)].protected = PROTECT_NONE;
i = TRUE;
}
if (i)
{
BattleScriptPush(battleScript);
+ gBattlescriptCurrInstr = BattleScript_MoveEffectFeint;
+
if (GetMoveEffect(gCurrentMove) == EFFECT_HYPERSPACE_FURY)
- gBattlescriptCurrInstr = BattleScript_HyperspaceFuryRemoveProtect;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_HYPERSPACE_FURY;
else
- gBattlescriptCurrInstr = BattleScript_MoveEffectFeint;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FEINT;
}
break;
case MOVE_EFFECT_V_CREATE:
@@ -2872,7 +2879,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_CORE_ENFORCER:
- if (HasBattlerActedThisTurn(gBattlerTarget)
+ if (HasBattlerActedThisTurn(effectBattler)
&& !NoAliveMonsForEitherParty())
{
BattleScriptPush(battleScript);
@@ -2880,61 +2887,62 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_THROAT_CHOP:
- if (gBattleMons[gEffectBattler].volatiles.throatChopTimer == 0)
+ if (gBattleMons[effectBattler].volatiles.throatChopTimer == 0)
{
- gBattleMons[gEffectBattler].volatiles.throatChopTimer = B_THROAT_CHOP_TIMER;
+ gBattleMons[effectBattler].volatiles.throatChopTimer = B_THROAT_CHOP_TIMER;
gBattlescriptCurrInstr = battleScript;
}
break;
case MOVE_EFFECT_INCINERATE:
- if (((gBattleMons[gEffectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[gEffectBattler].item <= LAST_BERRY_INDEX)
- || (B_INCINERATE_GEMS >= GEN_6 && GetBattlerHoldEffect(gEffectBattler) == HOLD_EFFECT_GEMS))
- && abilities[gEffectBattler] != ABILITY_STICKY_HOLD)
+ if (((gBattleMons[effectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[effectBattler].item <= LAST_BERRY_INDEX)
+ || (B_INCINERATE_GEMS >= GEN_6 && GetBattlerHoldEffect(effectBattler) == HOLD_EFFECT_GEMS))
+ && abilities[effectBattler] != ABILITY_STICKY_HOLD)
{
- gLastUsedItem = gBattleMons[gEffectBattler].item;
- gBattleMons[gEffectBattler].item = ITEM_NONE;
- CheckSetUnburden(gEffectBattler);
+ gLastUsedItem = gBattleMons[effectBattler].item;
+ gBattleMons[effectBattler].item = ITEM_NONE;
+ CheckSetUnburden(effectBattler);
- BtlController_EmitSetMonData(gEffectBattler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].item), &gBattleMons[gEffectBattler].item);
- MarkBattlerForControllerExec(gEffectBattler);
+ BtlController_EmitSetMonData(effectBattler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[effectBattler].item), &gBattleMons[effectBattler].item);
+ MarkBattlerForControllerExec(effectBattler);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectIncinerate;
}
break;
case MOVE_EFFECT_BUG_BITE:
- if (GetBattlerHoldEffect(gEffectBattler) == HOLD_EFFECT_JABOCA_BERRY)
+ if (GetBattlerHoldEffect(effectBattler) == HOLD_EFFECT_JABOCA_BERRY)
{
// jaboca berry triggers instead of being stolen
gBattlescriptCurrInstr = battleScript;
}
- else if (GetItemPocket(gBattleMons[gEffectBattler].item) == POCKET_BERRIES
+ else if (GetItemPocket(gBattleMons[effectBattler].item) == POCKET_BERRIES
&& abilities[effectBattler] != ABILITY_STICKY_HOLD)
{
// target loses their berry
- gLastUsedItem = gBattleMons[gEffectBattler].item;
- gBattleMons[gEffectBattler].item = ITEM_NONE;
- CheckSetUnburden(gEffectBattler);
+ gLastUsedItem = gBattleMons[effectBattler].item;
+ gBattleMons[effectBattler].item = ITEM_NONE;
+ CheckSetUnburden(effectBattler);
- BtlController_EmitSetMonData(gEffectBattler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].item), &gBattleMons[gEffectBattler].item);
- MarkBattlerForControllerExec(gEffectBattler);
+ BtlController_EmitSetMonData(effectBattler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[effectBattler].item), &gBattleMons[effectBattler].item);
+ MarkBattlerForControllerExec(effectBattler);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectBugBite;
}
break;
case MOVE_EFFECT_TRAP_BOTH:
- if (!(gBattleMons[gBattlerTarget].volatiles.escapePrevention || gBattleMons[gBattlerAttacker].volatiles.escapePrevention))
+ if (!(gBattleMons[effectBattler].volatiles.escapePrevention || gBattleMons[battlerAtk].volatiles.escapePrevention))
{
+ if (!gBattleMons[effectBattler].volatiles.escapePrevention)
+ gBattleMons[effectBattler].volatiles.battlerPreventingEscape = battlerAtk;
+
+ if (!gBattleMons[battlerAtk].volatiles.escapePrevention)
+ gBattleMons[battlerAtk].volatiles.battlerPreventingEscape = effectBattler;
+
+ gBattleMons[effectBattler].volatiles.escapePrevention = TRUE;
+ gBattleMons[battlerAtk].volatiles.escapePrevention = TRUE;
+
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_BothCanNoLongerEscape;
}
- if (!gBattleMons[gBattlerTarget].volatiles.escapePrevention)
- gBattleMons[gBattlerTarget].volatiles.battlerPreventingEscape = gBattlerAttacker;
-
- if (!gBattleMons[gBattlerAttacker].volatiles.escapePrevention)
- gBattleMons[gBattlerAttacker].volatiles.battlerPreventingEscape = gBattlerTarget;
-
- gBattleMons[gBattlerTarget].volatiles.escapePrevention = TRUE;
- gBattleMons[gBattlerAttacker].volatiles.escapePrevention = TRUE;
break;
case MOVE_EFFECT_REMOVE_ARG_TYPE:
{
@@ -2953,7 +2961,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = BattleScript_RemoveGenericType;
break;
}
- RemoveBattlerType(gEffectBattler, type);
+ RemoveBattlerType(effectBattler, type);
break;
}
case MOVE_EFFECT_ROUND:
@@ -2961,63 +2969,64 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_DIRE_CLAW:
- if (!gBattleMons[gEffectBattler].status1)
+ if (!gBattleMons[effectBattler].status1)
{
static const u8 sDireClawEffects[] = { MOVE_EFFECT_POISON, MOVE_EFFECT_PARALYSIS, MOVE_EFFECT_SLEEP };
SetMoveEffect(battlerAtk, effectBattler, RandomElement(RNG_DIRE_CLAW, sDireClawEffects), battleScript, effectFlags);
}
break;
case MOVE_EFFECT_STEALTH_ROCK:
- if (!IsHazardOnSide(GetBattlerSide(gEffectBattler), HAZARDS_STEALTH_ROCK))
+ if (!IsHazardOnSide(GetBattlerSide(effectBattler), HAZARDS_STEALTH_ROCK))
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_POINTEDSTONESFLOAT;
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_StealthRockActivates;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectStealthRock;
}
break;
case MOVE_EFFECT_SYRUP_BOMB:
- if (!gBattleMons[gEffectBattler].volatiles.syrupBomb)
+ if (!gBattleMons[effectBattler].volatiles.syrupBomb)
{
- struct Pokemon *mon = GetBattlerMon(gBattlerAttacker);
+ struct Pokemon *mon = GetBattlerMon(battlerAtk);
- gBattleMons[gEffectBattler].volatiles.syrupBomb = TRUE;
- gBattleMons[gEffectBattler].volatiles.stickySyrupedBy = gBattlerAttacker;
- gBattleMons[gEffectBattler].volatiles.syrupBombTimer = B_SYRUP_BOMB_TIMER;
- gBattleMons[gEffectBattler].volatiles.syrupBombIsShiny = IsMonShiny(mon);
+ gBattleMons[effectBattler].volatiles.syrupBomb = TRUE;
+ gBattleMons[effectBattler].volatiles.stickySyrupedBy = battlerAtk;
+ gBattleMons[effectBattler].volatiles.syrupBombTimer = B_SYRUP_BOMB_TIMER;
+ gBattleMons[effectBattler].volatiles.syrupBombIsShiny = IsMonShiny(mon);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_SyrupBombActivates;
}
break;
case MOVE_EFFECT_SECRET_POWER:
- if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
+ if (IsBattlerAlive(battlerAtk))
{
- switch (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
+ moveEffect = gBattleEnvironmentInfo[gBattleEnvironment].secretPowerEffect;
+ if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
{
- case STATUS_FIELD_MISTY_TERRAIN:
- moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1;
- break;
- case STATUS_FIELD_GRASSY_TERRAIN:
- moveEffect = MOVE_EFFECT_SLEEP;
- break;
- case STATUS_FIELD_ELECTRIC_TERRAIN:
- moveEffect = MOVE_EFFECT_PARALYSIS;
- break;
- case STATUS_FIELD_PSYCHIC_TERRAIN:
- moveEffect = MOVE_EFFECT_SPD_MINUS_1;
- break;
- default:
- moveEffect = MOVE_EFFECT_PARALYSIS;
- break;
+ switch (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
+ {
+ case STATUS_FIELD_MISTY_TERRAIN:
+ moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1;
+ break;
+ case STATUS_FIELD_GRASSY_TERRAIN:
+ moveEffect = MOVE_EFFECT_SLEEP;
+ break;
+ case STATUS_FIELD_ELECTRIC_TERRAIN:
+ moveEffect = MOVE_EFFECT_PARALYSIS;
+ break;
+ case STATUS_FIELD_PSYCHIC_TERRAIN:
+ moveEffect = MOVE_EFFECT_SPD_MINUS_1;
+ break;
+ default:
+ moveEffect = MOVE_EFFECT_PARALYSIS;
+ break;
+ }
}
- }
- else
- {
- SetMoveEffect(battlerAtk, effectBattler, gBattleEnvironmentInfo[gBattleEnvironment].secretPowerEffect, battleScript, effectFlags);
+ SetMoveEffect(battlerAtk, effectBattler, moveEffect, battleScript, effectFlags);
}
break;
case MOVE_EFFECT_PSYCHIC_NOISE:
{
- enum BattlerId battler = IsAbilityOnSide(gEffectBattler, ABILITY_AROMA_VEIL);
+ enum BattlerId battler = IsAbilityOnSide(effectBattler, ABILITY_AROMA_VEIL);
if (battler)
{
@@ -3025,19 +3034,19 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_AromaVeilProtectsRet;
}
- else if (!gBattleMons[gEffectBattler].volatiles.healBlock)
+ else if (!gBattleMons[effectBattler].volatiles.healBlock)
{
- gBattleMons[gEffectBattler].volatiles.healBlock = TRUE;
- gBattleMons[gEffectBattler].volatiles.healBlockTimer = 2;
+ gBattleMons[effectBattler].volatiles.healBlock = TRUE;
+ gBattleMons[effectBattler].volatiles.healBlockTimer = 2;
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_EffectPsychicNoise;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectPsychicNoise;
}
break;
}
case MOVE_EFFECT_TERA_BLAST:
- if (GetActiveGimmick(gEffectBattler) == GIMMICK_TERA
- && GetBattlerTeraType(gEffectBattler) == TYPE_STELLAR
- && !NoAliveMonsForEitherParty())
+ if (GetActiveGimmick(effectBattler) == GIMMICK_TERA
+ && GetBattlerTeraType(effectBattler) == TYPE_STELLAR
+ && !NoAliveMonsForEitherParty())
{
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_LowerAtkSpAtk;
@@ -3047,7 +3056,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
{
enum Stat stat = 0;
bool32 commanderAffected = TRUE;
- switch (gBattleStruct->battlerState[gEffectBattler].commanderSpecies)
+ switch (gBattleStruct->battlerState[effectBattler].commanderSpecies)
{
case SPECIES_TATSUGIRI_CURLY:
stat = STAT_ATK;
@@ -3098,66 +3107,66 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = BattleScript_MoveEffectHaze;
break;
case MOVE_EFFECT_LEECH_SEED:
- if (!IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_GRASS) && !gBattleMons[gBattlerTarget].volatiles.leechSeed)
+ if (!IS_BATTLER_OF_TYPE(effectBattler, TYPE_GRASS) && !gBattleMons[effectBattler].volatiles.leechSeed)
{
- gBattleMons[gBattlerTarget].volatiles.leechSeed = LEECHSEEDED_BY(gBattlerAttacker);
+ gBattleMons[effectBattler].volatiles.leechSeed = LEECHSEEDED_BY(battlerAtk);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectLeechSeed;
}
break;
case MOVE_EFFECT_REFLECT:
- if (TrySetReflect(gBattlerAttacker))
+ if (TrySetReflect(effectBattler))
{
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_MoveEffectReflect;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectScreens;
}
break;
case MOVE_EFFECT_LIGHT_SCREEN:
- if (TrySetLightScreen(gBattlerAttacker))
+ if (TrySetLightScreen(effectBattler))
{
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_MoveEffectLightScreen;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectScreens;
}
break;
case MOVE_EFFECT_SALT_CURE:
- if (!gBattleMons[gBattlerTarget].volatiles.saltCure)
+ if (!gBattleMons[effectBattler].volatiles.saltCure)
{
- gBattleMons[gBattlerTarget].volatiles.saltCure = TRUE;
+ gBattleMons[effectBattler].volatiles.saltCure = TRUE;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectSaltCure;
}
break;
case MOVE_EFFECT_EERIE_SPELL:
- if (gLastMoves[gBattlerTarget] != MOVE_NONE && gLastMoves[gBattlerTarget] != 0xFFFF)
+ if (gLastMoves[effectBattler] != MOVE_NONE && gLastMoves[effectBattler] != 0xFFFF)
{
u32 i;
for (i = 0; i < MAX_MON_MOVES; i++)
{
- if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i])
+ if (gLastMoves[effectBattler] == gBattleMons[effectBattler].moves[i])
break;
}
- if (i != MAX_MON_MOVES && gBattleMons[gBattlerTarget].pp[i] != 0)
+ if (i != MAX_MON_MOVES && gBattleMons[effectBattler].pp[i] != 0)
{
u32 ppToDeduct = 3;
- if (gBattleMons[gBattlerTarget].pp[i] < ppToDeduct)
- ppToDeduct = gBattleMons[gBattlerTarget].pp[i];
+ if (gBattleMons[effectBattler].pp[i] < ppToDeduct)
+ ppToDeduct = gBattleMons[effectBattler].pp[i];
- PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBattlerTarget])
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[effectBattler])
ConvertIntToDecimalStringN(gBattleTextBuff2, ppToDeduct, STR_CONV_MODE_LEFT_ALIGN, 1);
PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 1, ppToDeduct)
- gBattleMons[gBattlerTarget].pp[i] -= ppToDeduct;
- if (!(gBattleMons[gBattlerTarget].volatiles.mimickedMoves & (1u << i))
- && !(gBattleMons[gBattlerTarget].volatiles.transformed))
+ gBattleMons[effectBattler].pp[i] -= ppToDeduct;
+ if (!(gBattleMons[effectBattler].volatiles.mimickedMoves & (1u << i))
+ && !(gBattleMons[effectBattler].volatiles.transformed))
{
- BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[gBattlerTarget].pp[i]), &gBattleMons[gBattlerTarget].pp[i]);
- MarkBattlerForControllerExec(gBattlerTarget);
+ BtlController_EmitSetMonData(effectBattler, B_COMM_TO_CONTROLLER, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[effectBattler].pp[i]), &gBattleMons[effectBattler].pp[i]);
+ MarkBattlerForControllerExec(effectBattler);
}
- if (gBattleMons[gBattlerTarget].pp[i] == 0)
- CancelMultiTurnMoves(gBattlerTarget);
+ if (gBattleMons[effectBattler].pp[i] == 0)
+ CancelMultiTurnMoves(effectBattler);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectEerieSpell;
@@ -3165,7 +3174,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_FLING:
- if (CanFling(gBattlerAttacker, abilities[gBattlerAttacker]) || gBattleStruct->flungItem == FLUNG_ITEM_REMOVED)
+ if (CanFling(battlerAtk, abilities[battlerAtk]) || gBattleStruct->flungItem == FLUNG_ITEM_REMOVED)
{
enum Item item = ITEM_NONE;
@@ -3173,10 +3182,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
{
case FLUNG_ITEM_NONE:
gBattleStruct->flungItem = FLUNG_ITEM_REMOVE;
- if (GetMoveEffect(gCurrentMove) != EFFECT_FLING)
- item = gBattleStruct->flingItem = gLastUsedItem = gBattleMons[gBattlerAttacker].item;
- else
- item = gBattleStruct->flingItem = gLastUsedItem;
+ item = gLastUsedItem = gBattleStruct->flingItem = gBattleMons[battlerAtk].item;
break;
case FLUNG_ITEM_REMOVE:
case FLUNG_ITEM_REMOVED:
@@ -3194,7 +3200,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
}
- if (IsMoveEffectBlockedByTarget(abilities[gBattlerTarget]))
+ if (IsMoveEffectBlockedByTarget(abilities[effectBattler]))
{
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_FlingBlockedByShieldDust;
@@ -3206,24 +3212,24 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
switch (holdEffect)
{
case HOLD_EFFECT_FLAME_ORB:
- SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_BURN, gBattlescriptCurrInstr, NO_FLAGS);
+ SetMoveEffect(battlerAtk, effectBattler, MOVE_EFFECT_BURN, gBattlescriptCurrInstr, NO_FLAGS);
break;
case HOLD_EFFECT_TOXIC_ORB:
- SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_TOXIC, gBattlescriptCurrInstr, NO_FLAGS);
+ SetMoveEffect(battlerAtk, effectBattler, MOVE_EFFECT_TOXIC, gBattlescriptCurrInstr, NO_FLAGS);
break;
case HOLD_EFFECT_LIGHT_BALL:
- SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_PARALYSIS, gBattlescriptCurrInstr, NO_FLAGS);
+ SetMoveEffect(battlerAtk, effectBattler, MOVE_EFFECT_PARALYSIS, gBattlescriptCurrInstr, NO_FLAGS);
break;
case HOLD_EFFECT_TYPE_POWER:
if (GetItemSecondaryId(item) == TYPE_POISON)
- SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_POISON, gBattlescriptCurrInstr, NO_FLAGS);
+ SetMoveEffect(battlerAtk, effectBattler, MOVE_EFFECT_POISON, gBattlescriptCurrInstr, NO_FLAGS);
break;
case HOLD_EFFECT_FLINCH:
- SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_FLINCH, gBattlescriptCurrInstr, NO_FLAGS);
+ SetMoveEffect(battlerAtk, effectBattler, MOVE_EFFECT_FLINCH, gBattlescriptCurrInstr, NO_FLAGS);
break;
case HOLD_EFFECT_MENTAL_HERB:
case HOLD_EFFECT_WHITE_HERB:
- ItemBattleEffects(gBattlerTarget, 0, holdEffect, IsOnFlingActivation);
+ ItemBattleEffects(effectBattler, 0, holdEffect, IsOnFlingActivation);
break;
default:
break;
@@ -3340,11 +3346,11 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
default:
break;
}
- if (TryChangeBattleWeather(gBattlerAttacker, weather, ABILITY_NONE))
+ if (TryChangeBattleWeather(battlerAtk, weather, ABILITY_NONE))
{
gBattleCommunication[MULTISTRING_CHOOSER] = msg;
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_EffectSetWeather;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectSetWeather;
}
break;
}
@@ -3375,10 +3381,10 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
default:
break;
}
- if (TryChangeBattleTerrain(gBattlerAttacker, statusFlag))
+ if (TryChangeBattleTerrain(battlerAtk, statusFlag))
{
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_EffectSetTerrain;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectSetTerrain;
}
break;
}
@@ -3387,7 +3393,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
case MOVE_EFFECT_WILDFIRE:
case MOVE_EFFECT_VOLCALITH:
{
- u8 side = GetBattlerSide(gBattlerTarget);
+ u8 side = GetBattlerSide(effectBattler);
if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES))
{
u32 moveType = GetMoveType(gCurrentMove);
@@ -3396,22 +3402,22 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gSideTimers[side].damageNonTypesType = moveType;
BattleScriptPush(battleScript);
ChooseDamageNonTypesString(moveType);
- gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectDamageNonTypes;
}
break;
}
case MOVE_EFFECT_STEELSURGE:
- if (!IsHazardOnSide(GetBattlerSide(gBattlerTarget), HAZARDS_STEELSURGE))
+ if (!IsHazardOnSide(GetBattlerSide(effectBattler), HAZARDS_STEELSURGE))
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SHARPSTEELFLOATS;
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_EffectSteelsurge;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectSteelsurge;
}
break;
case MOVE_EFFECT_DEFOG:
- if (gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_SCREEN_ANY
- || AreAnyHazardsOnSide(GetBattlerSide(gBattlerTarget))
- || AreAnyHazardsOnSide(GetBattlerSide(gBattlerAttacker))
+ if (gSideStatuses[GetBattlerSide(effectBattler)] & SIDE_STATUS_SCREEN_ANY
+ || AreAnyHazardsOnSide(GetBattlerSide(effectBattler))
+ || AreAnyHazardsOnSide(GetBattlerSide(battlerAtk))
|| gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
{
BattleScriptPush(battleScript);
@@ -3419,16 +3425,16 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_AURORA_VEIL:
- if (!(gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_AURORA_VEIL))
+ if (!(gSideStatuses[GetBattlerSide(effectBattler)] & SIDE_STATUS_AURORA_VEIL))
{
- gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_AURORA_VEIL;
- if (GetBattlerHoldEffect(gBattlerAttacker) == HOLD_EFFECT_LIGHT_CLAY)
- gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 8;
+ gSideStatuses[GetBattlerSide(effectBattler)] |= SIDE_STATUS_AURORA_VEIL;
+ if (GetBattlerHoldEffect(effectBattler) == HOLD_EFFECT_LIGHT_CLAY)
+ gSideTimers[GetBattlerSide(effectBattler)].auroraVeilTimer = 8;
else
- gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 5;
+ gSideTimers[GetBattlerSide(effectBattler)].auroraVeilTimer = 5;
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD;
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_MoveEffectAuroraVeil;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectScreens;
}
break;
case MOVE_EFFECT_GRAVITY:
@@ -3437,7 +3443,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gFieldStatuses |= STATUS_FIELD_GRAVITY;
gFieldTimers.gravityTimer = 5;
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_EffectGravitySuccess;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectGravity;
}
break;
case MOVE_EFFECT_SANDBLAST_SIDE:
@@ -3445,14 +3451,14 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
// Affects both opponents, but doesn't print strings so we can handle it here.
for (enum BattlerId battler = 0; battler < MAX_BATTLERS_COUNT; ++battler)
{
- if (!IsBattlerAlly(battler, gBattlerTarget))
+ if (!IsBattlerAlly(battler, effectBattler))
continue;
if (!gBattleMons[battler].volatiles.wrapped)
{
gBattleMons[battler].volatiles.wrapped = TRUE;
- SetWrapTurns(battler, GetBattlerHoldEffect(gBattlerAttacker));
+ SetWrapTurns(battler, GetBattlerHoldEffect(battlerAtk));
// The Wrap effect does not expire when the user switches, so here's some cheese.
- gBattleMons[battler].volatiles.wrappedBy = gBattlerTarget;
+ gBattleMons[battler].volatiles.wrappedBy = effectBattler;
if (moveEffect == MOVE_EFFECT_SANDBLAST_SIDE)
gBattleMons[battler].volatiles.wrappedMove = MOVE_SAND_TOMB;
else
@@ -3461,21 +3467,21 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_YAWN_FOE:
- if (gBattleMons[gBattlerTarget].volatiles.yawn == 0
- && CanBeSlept(gBattlerTarget, gBattlerTarget, abilities[gBattlerTarget], BLOCKED_BY_SLEEP_CLAUSE)
- && RandomPercentage(RNG_G_MAX_SNOOZE, 50))
+ if (gBattleMons[effectBattler].volatiles.yawn == 0
+ && CanBeSlept(battlerAtk, effectBattler, abilities[effectBattler], BLOCKED_BY_SLEEP_CLAUSE)
+ && RandomPercentage(RNG_G_MAX_SNOOZE, 50))
{
- gBattleMons[gBattlerTarget].volatiles.yawn = 2;
+ gBattleMons[effectBattler].volatiles.yawn = 2;
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_MoveEffectYawnSide;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectYawnFoe;
}
break;
case MOVE_EFFECT_SPITE:
- if (gLastMoves[gBattlerTarget] != MOVE_NONE
- && gLastMoves[gBattlerTarget] != MOVE_UNAVAILABLE)
+ if (gLastMoves[effectBattler] != MOVE_NONE
+ && gLastMoves[effectBattler] != MOVE_UNAVAILABLE)
{
BattleScriptPush(battleScript);
- gBattlescriptCurrInstr = BattleScript_EffectTryReducePP;
+ gBattlescriptCurrInstr = BattleScript_MoveEffectSpite;
}
break;
case MOVE_EFFECT_PARALYZE_SIDE:
@@ -3495,10 +3501,10 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = BattleScript_EffectEffectSporeSide;
break;
case MOVE_EFFECT_CONFUSE_PAY_DAY_SIDE:
- if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && IsOnPlayerSide(battlerAtk))
{
u32 payday = gPaydayMoney;
- gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 100);
+ gPaydayMoney += (gBattleMons[battlerAtk].level * 100);
if (payday > gPaydayMoney)
gPaydayMoney = 0xFFFF;
gBattleCommunication[CURSOR_POSITION] = 1; // add "Coins scattered." message
@@ -3521,10 +3527,10 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = BattleScript_EffectMeanLookSide;
break;
case MOVE_EFFECT_CRIT_PLUS_SIDE:
- if (gBattleMons[gBattlerAttacker].volatiles.bonusCritStages < 3)
- gBattleMons[gBattlerAttacker].volatiles.bonusCritStages++;
- if (gBattleMons[BATTLE_PARTNER(gBattlerAttacker)].volatiles.bonusCritStages < 3)
- gBattleMons[BATTLE_PARTNER(gBattlerAttacker)].volatiles.bonusCritStages++;
+ if (gBattleMons[effectBattler].volatiles.bonusCritStages < 3)
+ gBattleMons[effectBattler].volatiles.bonusCritStages++;
+ if (gBattleMons[BATTLE_PARTNER(effectBattler)].volatiles.bonusCritStages < 3)
+ gBattleMons[BATTLE_PARTNER(effectBattler)].volatiles.bonusCritStages++;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_EffectRaiseCritAlliesAnim;
break;
@@ -3546,13 +3552,13 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
case MOVE_EFFECT_REMOVE_STATUS:
{
u32 argStatus = GetMoveEffectArg_Status(gCurrentMove);
- if ((gBattleMons[gEffectBattler].status1 & argStatus)
- && (NumAffectedSpreadMoveTargets() > 1 || !IsMoveEffectBlockedByTarget(abilities[gEffectBattler])))
+ if ((gBattleMons[effectBattler].status1 & argStatus)
+ && (NumAffectedSpreadMoveTargets() > 1 || !IsMoveEffectBlockedByTarget(abilities[effectBattler])))
{
- gBattleScripting.battler = gEffectBattler;
- gBattleMons[gEffectBattler].status1 &= ~(argStatus);
- BtlController_EmitSetMonData(gEffectBattler, 0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBattler].status1);
- MarkBattlerForControllerExec(gEffectBattler);
+ gBattleScripting.battler = effectBattler;
+ gBattleMons[effectBattler].status1 &= ~(argStatus);
+ BtlController_EmitSetMonData(effectBattler, 0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[effectBattler].status1);
+ MarkBattlerForControllerExec(effectBattler);
BattleScriptPush(battleScript);
switch (argStatus)
@@ -3561,7 +3567,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal;
break;
case STATUS1_SLEEP:
- TryDeactivateSleepClause(GetBattlerSide(gEffectBattler), gBattlerPartyIndexes[gBattlerTarget]);
+ TryDeactivateSleepClause(GetBattlerSide(effectBattler), gBattlerPartyIndexes[effectBattler]);
gBattlescriptCurrInstr = BattleScript_TargetWokeUp;
break;
case STATUS1_BURN:
@@ -3586,7 +3592,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
if (B_BRICK_BREAK >= GEN_4)
i = GetBattlerSide(gBattlerTarget); // From Gen 4 onwards, Brick Break can remove screens on the user's side if used on an ally
else
- i = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
+ i = GetBattlerSide(battlerAtk) ^ BIT_SIDE;
if (gSideStatuses[i] & SIDE_STATUS_SCREEN_ANY)
{
@@ -3614,26 +3620,26 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_STEAL_STATS:
- if (gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)
+ if (gBattleStruct->moveResultFlags[effectBattler] & MOVE_RESULT_NO_EFFECT)
break;
- bool32 contrary = abilities[gBattlerAttacker] == ABILITY_CONTRARY;
+ bool32 contrary = abilities[battlerAtk] == ABILITY_CONTRARY;
gBattleStruct->stolenStats[0] = 0; // Stats to steal.
gBattleScripting.animArg1 = 0;
for (enum Stat stat = STAT_ATK; stat < NUM_BATTLE_STATS; stat++)
{
- if (gBattleMons[gBattlerTarget].statStages[stat] > DEFAULT_STAT_STAGE && gBattleMons[gBattlerAttacker].statStages[stat] != MAX_STAT_STAGE)
+ if (gBattleMons[effectBattler].statStages[stat] > DEFAULT_STAT_STAGE && gBattleMons[battlerAtk].statStages[stat] != MAX_STAT_STAGE)
{
bool32 byTwo = FALSE;
gBattleStruct->stolenStats[0] |= (1 << (stat));
// Store by how many stages to raise the stat.
- gBattleStruct->stolenStats[stat] = gBattleMons[gBattlerTarget].statStages[stat] - DEFAULT_STAT_STAGE;
+ gBattleStruct->stolenStats[stat] = gBattleMons[effectBattler].statStages[stat] - DEFAULT_STAT_STAGE;
- while (gBattleMons[gBattlerAttacker].statStages[stat] + gBattleStruct->stolenStats[stat] > MAX_STAT_STAGE)
+ while (gBattleMons[battlerAtk].statStages[stat] + gBattleStruct->stolenStats[stat] > MAX_STAT_STAGE)
gBattleStruct->stolenStats[stat]--;
- gBattleMons[gBattlerTarget].statStages[stat] = DEFAULT_STAT_STAGE;
+ gBattleMons[effectBattler].statStages[stat] = DEFAULT_STAT_STAGE;
if (gBattleStruct->stolenStats[stat] >= 2)
byTwo++;
@@ -3676,7 +3682,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
else
{
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattleStruct->beatUpSpecies[gBattleStruct->beatUpSlot])
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, battlerAtk, gBattleStruct->beatUpSpecies[gBattleStruct->beatUpSlot])
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_BeatUpAttackMessage;
}
@@ -3777,7 +3783,7 @@ static void SetToxicChainPriority(void)
if (abilityAtk == ABILITY_TOXIC_CHAIN
&& IsBattlerAlive(gBattlerTarget)
&& CanBePoisoned(gBattlerAttacker, gBattlerTarget, abilityAtk, GetBattlerAbility(gBattlerTarget))
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& RandomWeighted(RNG_TOXIC_CHAIN, 7, 3))
gBattleStruct->toxicChainPriority = TRUE;
}
@@ -6250,6 +6256,8 @@ static void Cmd_getmoneyreward(void)
}
money = sWhiteOutBadgeMoney[count] * sPartyLevel;
}
+ if (!IsEnoughMoney(&gSaveBlock1Ptr->money, money))
+ money = GetMoney(&gSaveBlock1Ptr->money);
RemoveMoney(&gSaveBlock1Ptr->money, money);
}
@@ -6416,19 +6424,13 @@ static void Cmd_futuresighttargetfailure(void)
static u32 GetPossibleNextTarget(u32 currTarget)
{
u32 i = 0;
- const u8 targetOrder[MAX_BATTLERS_COUNT] = {
- gBattlerAttacker,
- BATTLE_PARTNER(gBattlerAttacker),
- LEFT_FOE(gBattlerAttacker),
- RIGHT_FOE(gBattlerAttacker),
- };
// currTarget allows for a starting point without relying on values for previous targets being set
if (currTarget != MAX_BATTLERS_COUNT)
{
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- if (targetOrder[i] == currTarget)
+ if (GetTargetBySlot(gBattlerAttacker, i) == currTarget)
break;
}
i++; // next target after finding currTarget
@@ -6436,7 +6438,8 @@ static u32 GetPossibleNextTarget(u32 currTarget)
while (i < MAX_BATTLERS_COUNT)
{
- enum BattlerId battler = targetOrder[i++];
+ enum BattlerId battler = GetTargetBySlot(gBattlerAttacker, i);
+ i++;
if (!IsBattlerAlive(battler))
continue;
@@ -6839,7 +6842,7 @@ static void PutMonIconOnLvlUpBanner(void)
struct SpritePalette iconPalSheet;
struct Pokemon *mon = &gPlayerParty[gBattleStruct->expGetterMonId];
- u32 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY);
iconSheet.data = GetMonIconPtr(species, personality);
@@ -8816,11 +8819,23 @@ static void Cmd_trysetencore(void)
if (gBattleMons[gBattlerTarget].volatiles.encoredMove != GetBattlerChosenMove(gBattlerTarget))
gBattleStruct->moveTarget[gBattlerTarget] = SetRandomTarget(gBattlerTarget);
- // Encore always lasts 3 turns, but we need to account for a scenario where Encore changes the move during the same turn.
- if (HasBattlerActedThisTurn(gBattlerTarget))
- gBattleMons[gBattlerTarget].volatiles.encoreTimer = B_ENCORE_TIMER;
+ u8 turns;
+ if (GetConfig(B_ENCORE_TURNS) >= GEN_5)
+ {
+ turns = B_ENCORE_TIMER; // 4 turns
+ if (!HasBattlerActedThisTurn(gBattlerTarget))
+ turns--; // If the target hasn't yet moved this turn, Encore lasts for only three turns.
+ }
+ else if (GetConfig(B_ENCORE_TURNS) >= GEN_4)
+ {
+ turns = RandomUniform(RNG_ENCORE_TURNS, 3, 7);
+ }
else
- gBattleMons[gBattlerTarget].volatiles.encoreTimer = B_ENCORE_TIMER - 1;
+ {
+ turns = RandomUniform(RNG_ENCORE_TURNS, 2, 6);
+ }
+
+ gBattleMons[gBattlerTarget].volatiles.encoreTimer = turns;
gBattlescriptCurrInstr = cmd->nextInstr;
}
}
@@ -8923,9 +8938,17 @@ static void Cmd_settypetorandomresistance(void)
static void Cmd_setalwayshitflag(void)
{
CMD_ARGS();
- gBattleMons[gBattlerTarget].volatiles.lockOn = 2;
- gBattleMons[gBattlerTarget].volatiles.battlerWithSureHit = gBattlerAttacker;
- gBattlescriptCurrInstr = cmd->nextInstr;
+
+ if (gBattleMons[gBattlerAttacker].volatiles.battlerWithSureHit == 0)
+ {
+ gBattleMons[gBattlerAttacker].volatiles.lockOn = 2;
+ gBattleMons[gBattlerAttacker].volatiles.battlerWithSureHit = gBattlerTarget + 1;
+ gBattlescriptCurrInstr = cmd->nextInstr;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BattleScript_ButItFailed;
+ }
}
// Sketch
@@ -9131,7 +9154,7 @@ static void Cmd_healpartystatus(void)
for (i = 0; i < PARTY_SIZE; i++)
{
- u16 species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG);
u8 abilityNum = GetMonData(&party[i], MON_DATA_ABILITY_NUM);
if (species != SPECIES_NONE && species != SPECIES_EGG)
@@ -9679,15 +9702,15 @@ static void Cmd_settaunt(void)
else if (gBattleMons[gBattlerTarget].volatiles.tauntTimer == 0)
{
u8 turns;
- if (B_TAUNT_TURNS >= GEN_5)
+ if (GetConfig(B_TAUNT_TURNS) >= GEN_5)
{
turns = B_TAUNT_TIMER - 1; // 4 turns
if (!HasBattlerActedThisTurn(gBattlerTarget))
turns--; // If the target hasn't yet moved this turn, Taunt lasts for only three turns (source: Bulbapedia)
}
- else if (B_TAUNT_TURNS >= GEN_4)
+ else if (GetConfig(B_TAUNT_TURNS) >= GEN_4)
{
- turns = RandomUniform(RNG_TAUNT, 3, B_TAUNT_TIMER);
+ turns = RandomUniform(RNG_TAUNT_TURNS, 3, B_TAUNT_TIMER);
}
else
{
@@ -9979,6 +10002,7 @@ static void HandleRoomMove(u32 statusFlag, u16 *timer, u8 stringId)
if (gFieldStatuses & statusFlag)
{
gFieldStatuses &= ~statusFlag;
+ *timer = 0;
gBattleCommunication[MULTISTRING_CHOOSER] = stringId + 1;
}
else
@@ -10236,7 +10260,8 @@ static void Cmd_pickup(void)
CMD_ARGS();
u32 i, j;
- u16 species, heldItem;
+ enum Species species;
+ enum Item heldItem;
u8 lvlDivBy10;
enum Ability ability;
@@ -10537,7 +10562,8 @@ static void FinalizeCapture(void)
{
u32 ballId = ItemIdToBallId(gLastThrownBall);
enum NationalDexOrder natDexNo = SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species);
- if (GetConfig(B_CRITICAL_CAPTURE_IF_OWNED) >= GEN_9 && GetSetPokedexFlag(natDexNo, FLAG_GET_CAUGHT))
+ if ((GetConfig(B_CRITICAL_CAPTURE_IF_OWNED) >= GEN_9 && GetSetPokedexFlag(natDexNo, FLAG_GET_CAUGHT))
+ || IsCriticalCapture())
{
gBattleSpritesDataPtr->animationData->isCriticalCapture = TRUE;
gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = TRUE;
@@ -10922,6 +10948,9 @@ static void Cmd_handleballthrow(void)
if (gBattleResults.catchAttempts[ballId] < 255)
gBattleResults.catchAttempts[ballId]++;
+ gBattleSpritesDataPtr->animationData->isCriticalCapture = FALSE;
+ gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = FALSE;
+
//Master Ball check occurs before critical capture check
if (odds == CAPTURE_GUARANTEED)
{
@@ -10932,9 +10961,6 @@ static void Cmd_handleballthrow(void)
u8 shakes;
u8 maxShakes;
- gBattleSpritesDataPtr->animationData->isCriticalCapture = FALSE;
- gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = FALSE;
-
if (CriticalCapture(odds))
{
maxShakes = BALL_1_SHAKE; // critical capture doesn't guarantee capture
@@ -10959,8 +10985,6 @@ static void Cmd_handleballthrow(void)
if (shakes == maxShakes) // mon caught, copy of the code above
{
- if (IsCriticalCapture())
- gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = TRUE;
FinalizeCapture();
return;
}
@@ -10998,7 +11022,7 @@ static void Cmd_givecaughtmon(void)
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_NO_MESSSAGE_SKIP;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_NO_MESSAGE_SKIP;
gBattleCommunication[MULTIUSE_STATE] = GIVECAUGHTMON_GIVE_AND_SHOW_MSG;
}
break;
@@ -11132,7 +11156,7 @@ static void Cmd_givecaughtmon(void)
gSelectedMonPartyId = PARTY_SIZE;
gBattleCommunication[MULTIUSE_STATE] = 0;
- if (gBattleCommunication[MULTISTRING_CHOOSER] == B_MSG_NO_MESSSAGE_SKIP)
+ if (gBattleCommunication[MULTISTRING_CHOOSER] == B_MSG_NO_MESSAGE_SKIP)
gBattlescriptCurrInstr = cmd->passInstr;
else
gBattlescriptCurrInstr = cmd->nextInstr;
@@ -11149,7 +11173,7 @@ static void Cmd_trysetcaughtmondexflags(void)
CMD_ARGS(const u8 *failInstr);
struct Pokemon *caughtMon = GetBattlerMon(GetCatchingBattler());
- u32 species = GetMonData(caughtMon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(caughtMon, MON_DATA_SPECIES);
u32 personality = GetMonData(caughtMon, MON_DATA_PERSONALITY);
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
@@ -11169,7 +11193,7 @@ static void Cmd_displaydexinfo(void)
u32 caughtBattler = GetCatchingBattler();
struct Pokemon *mon = GetBattlerMon(caughtBattler);
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
switch (gBattleCommunication[0])
{
@@ -11923,7 +11947,7 @@ u8 GetFirstFaintedPartyIndex(enum BattlerId battler)
// Loop through to find fainted battler.
for (i = start; i < end; ++i)
{
- u32 species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG);
if (species != SPECIES_NONE
&& species != SPECIES_EGG
&& GetMonData(&party[i], MON_DATA_HP) == 0)
@@ -12160,10 +12184,11 @@ void BS_ItemRestorePP(void)
void BS_TryRevertWeatherForm(void)
{
NATIVE_ARGS();
- if (IsBattlerAlive(gBattlerTarget)
- && TryBattleFormChange(gBattlerTarget, FORM_CHANGE_BATTLE_WEATHER, GetBattlerAbility(gBattlerTarget)))
+ enum BattlerId battler = gBattlersBySpeed[gEffectBattler];
+ if (IsBattlerAlive(battler)
+ && TryBattleFormChange(battler, FORM_CHANGE_BATTLE_WEATHER, GetBattlerAbility(battler)))
{
- gBattleScripting.battler = gBattlerTarget;
+ gBattleScripting.battler = battler;
BattleScriptPush(cmd->nextInstr);
gBattlescriptCurrInstr = BattleScript_TargetFormChangeWithStringNoPopup;
return;
@@ -12249,7 +12274,7 @@ void BS_JumpIfTerrainAffected(void)
void BS_TryReflectType(void)
{
NATIVE_ARGS(const u8 *failInstr);
- u16 targetBaseSpecies = GET_BASE_SPECIES_ID(gBattleMons[gBattlerTarget].species);
+ enum Species targetBaseSpecies = GET_BASE_SPECIES_ID(gBattleMons[gBattlerTarget].species);
enum Type targetTypes[3];
GetBattlerTypes(gBattlerTarget, FALSE, targetTypes);
@@ -12942,7 +12967,8 @@ static void UpdatePokeFlutePartyStatus(struct Pokemon* party, u8 position)
s32 i;
enum BattlerId battler;
u32 monToCheck, status;
- u16 species, abilityNum;
+ enum Species species;
+ u16 abilityNum;
monToCheck = 0;
for (i = 0; i < PARTY_SIZE; i++)
{
@@ -13938,15 +13964,16 @@ void BS_SwitchinAbilities(void)
enum BattlerId battler = GetBattlerForBattleScript(cmd->battler);
enum Ability ability = GetBattlerAbility(battler);
gBattlescriptCurrInstr = cmd->nextInstr;
- AbilityBattleEffects(ABILITYEFFECT_TERA_SHIFT, battler, ability, MOVE_NONE, TRUE);
- AbilityBattleEffects(ABILITYEFFECT_NEUTRALIZINGGAS, battler, ability, MOVE_NONE, TRUE);
- AbilityBattleEffects(ABILITYEFFECT_UNNERVE, battler, ability, MOVE_NONE, TRUE);
- AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, battler, ability, MOVE_NONE, TRUE);
- AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, battler, ability, MOVE_NONE, TRUE);
- AbilityBattleEffects(ABILITYEFFECT_COMMANDER, battler, ability, MOVE_NONE, TRUE);
- AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, battler, ability, MOVE_NONE, TRUE);
- AbilityBattleEffects(ABILITYEFFECT_ON_TERRAIN, battler, ability, MOVE_NONE, TRUE);
- AbilityBattleEffects(ABILITYEFFECT_OPPORTUNIST, battler, ability, MOVE_NONE, TRUE);
+ if (AbilityBattleEffects(ABILITYEFFECT_TERA_SHIFT, battler, ability, MOVE_NONE, TRUE)
+ || AbilityBattleEffects(ABILITYEFFECT_NEUTRALIZINGGAS, battler, ability, MOVE_NONE, TRUE)
+ || AbilityBattleEffects(ABILITYEFFECT_UNNERVE, battler, ability, MOVE_NONE, TRUE)
+ || AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, battler, ability, MOVE_NONE, TRUE)
+ || AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, battler, ability, MOVE_NONE, TRUE)
+ || AbilityBattleEffects(ABILITYEFFECT_COMMANDER, battler, ability, MOVE_NONE, TRUE)
+ || AbilityBattleEffects(ABILITYEFFECT_ON_WEATHER, battler, ability, MOVE_NONE, TRUE)
+ || AbilityBattleEffects(ABILITYEFFECT_ON_TERRAIN, battler, ability, MOVE_NONE, TRUE)
+ || AbilityBattleEffects(ABILITYEFFECT_OPPORTUNIST, battler, ability, MOVE_NONE, TRUE))
+ return;
}
void BS_InstantHpDrop(void)
@@ -14771,7 +14798,7 @@ void BS_JumpIfWeatherAffected(void)
void BS_JumpIfSpecies(void)
{
- NATIVE_ARGS(u16 species, const u8 *jumpInstr);
+ NATIVE_ARGS(enum Species species, const u8 *jumpInstr);
if (gBattleMons[gBattlerAttacker].species == cmd->species)
gBattlescriptCurrInstr = cmd->jumpInstr;
else
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 79c3935532..92b5c74941 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -598,7 +598,7 @@ void StartGroudonKyogreBattle(void)
void StartRegiBattle(void)
{
enum BattleTransition transitionId;
- u16 species;
+ enum Species species;
LockPlayerFieldControls();
gMain.savedCallback = CB2_EndScriptedWildBattle;
@@ -803,7 +803,7 @@ static u16 GetSumOfPlayerPartyLevel(u8 numMons)
for (i = 0; i < PARTY_SIZE; i++)
{
- u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG);
if (species != SPECIES_EGG && species != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0)
{
@@ -2130,4 +2130,3 @@ void SetMultiTrainerBattle(struct ScriptContext *ctx)
TRAINER_BATTLE_PARAM.defeatTextB = (u8*)ScriptReadWord(ctx);
gPartnerTrainerId = TRAINER_PARTNER(ScriptReadHalfword(ctx));
};
-
diff --git a/src/battle_switch_in.c b/src/battle_switch_in.c
index 8399ec18b1..afefb49d93 100644
--- a/src/battle_switch_in.c
+++ b/src/battle_switch_in.c
@@ -5,7 +5,7 @@
#include "battle_scripts.h"
#include "battle_switch_in.h"
#include "battle_controllers.h"
-#include "generational_changes.h"
+#include "config_changes.h"
#include "constants/battle.h"
#include "constants/moves.h"
diff --git a/src/battle_tent.c b/src/battle_tent.c
index a5547da46b..dd66126a82 100644
--- a/src/battle_tent.c
+++ b/src/battle_tent.c
@@ -294,10 +294,10 @@ static void GenerateInitialRentalMons(void)
s32 i, j;
u8 firstMonId;
u16 monSetId;
- u16 currSpecies;
- u16 species[PARTY_SIZE];
+ enum Species currSpecies;
+ enum Species species[PARTY_SIZE];
u16 monIds[PARTY_SIZE];
- u16 heldItems[PARTY_SIZE];
+ enum Item heldItems[PARTY_SIZE];
firstMonId = 0;
gFacilityTrainers = gSlateportBattleTentTrainers;
@@ -355,8 +355,8 @@ static void GenerateOpponentMons(void)
u16 trainerId;
s32 i, j, k;
const u16 *monSet;
- u16 species[FRONTIER_PARTY_SIZE];
- u16 heldItems[FRONTIER_PARTY_SIZE];
+ enum Species species[FRONTIER_PARTY_SIZE];
+ enum Item heldItems[FRONTIER_PARTY_SIZE];
s32 numMons = 0;
gFacilityTrainers = gSlateportBattleTentTrainers;
diff --git a/src/battle_tower.c b/src/battle_tower.c
index c5062a3941..98bc7e1e35 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -1176,14 +1176,14 @@ static void BattleTowerNop2(void)
static void GetApprenticeMultiPartnerParty(u16 trainerId)
{
s32 i, count;
- u32 validSpecies[MULTI_PARTY_SIZE];
- u16 species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES);
- u16 species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES);
+ enum Species validSpecies[MULTI_PARTY_SIZE];
+ enum Species species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES);
+ enum Species species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES);
count = 0;
for (i = 0; i < MULTI_PARTY_SIZE; i++)
{
- u16 apprenticeSpecies = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[i].species;
+ enum Species apprenticeSpecies = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[i].species;
if (apprenticeSpecies != species1 && apprenticeSpecies != species2)
{
validSpecies[count] = i;
@@ -1201,10 +1201,10 @@ static void GetApprenticeMultiPartnerParty(u16 trainerId)
static void GetRecordMixFriendMultiPartnerParty(u16 trainerId)
{
s32 i, count;
- u32 validSpecies[3];
+ enum Species validSpecies[3];
enum FrontierLevelMode lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u16 species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES);
- u16 species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES);
+ enum Species species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES);
+ enum Species species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES);
count = 0;
for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++)
@@ -1376,7 +1376,7 @@ static void LoadMultiPartnerCandidatesData(void)
static void GetPotentialPartnerMoveAndSpecies(u16 trainerId, u16 monId)
{
enum Move move = MOVE_NONE;
- u16 species = SPECIES_NONE;
+ enum Species species = SPECIES_NONE;
SetFacilityPtrsGetLevel();
if (trainerId != TRAINER_EREADER)
@@ -2129,7 +2129,7 @@ void TrySetLinkBattleTowerEnemyPartyLevel(void)
for (u32 i = 0; i < PARTY_SIZE; i++)
{
- u32 species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES);
if (species)
{
SetMonData(&gEnemyParty[i], MON_DATA_EXP, &gExperienceTables[GetSpeciesGrowthRate(species)][enemyLevel]);
diff --git a/src/battle_tv.c b/src/battle_tv.c
index a4b76ee3b6..a5e8f30427 100644
--- a/src/battle_tv.c
+++ b/src/battle_tv.c
@@ -660,13 +660,13 @@ void BattleTv_SetDataBasedOnAnimation(u8 animationId)
void TryPutLinkBattleTvShowOnAir(void)
{
- u16 playerBestSpecies = 0, opponentBestSpecies = 0;
+ enum Species playerBestSpecies = 0, opponentBestSpecies = 0;
s16 playerBestSum = 0, opponentBestSum = SHRT_MAX;
u8 playerBestMonId = 0, opponentBestMonId = 0;
struct BattleTvMovePoints *movePoints = NULL;
u8 countPlayer = 0, countOpponent = 0;
s16 sum = 0;
- u16 species = SPECIES_NONE;
+ enum Species species = SPECIES_NONE;
enum Move move = MOVE_NONE;
s32 i, j;
int zero = 0, one = 1; //needed for matching
@@ -1307,7 +1307,7 @@ static void TrySetBattleSeminarShow(void)
{
if (i != gMoveSelectionCursor[gBattlerAttacker] && dmgByMove[i] > dmgByMove[gMoveSelectionCursor[gBattlerAttacker]])
{
- u16 opponentSpecies, playerSpecies;
+ enum Species opponentSpecies, playerSpecies;
s32 bestMoveId;
if (gMoveSelectionCursor[gBattlerAttacker] != 0)
diff --git a/src/battle_util.c b/src/battle_util.c
index ec0284cee1..dafdc22277 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -11,7 +11,7 @@
#include "battle_z_move.h"
#include "battle_gimmick.h"
#include "battle_hold_effects.h"
-#include "generational_changes.h"
+#include "config_changes.h"
#include "party_menu.h"
#include "pokemon.h"
#include "international_string_util.h"
@@ -271,7 +271,7 @@ bool32 EndOrContinueWeather(void)
// Gen5+
static u32 CalcBeatUpPower(void)
{
- u32 species = gBattleStruct->beatUpSpecies[gBattleStruct->beatUpSlot++];
+ enum Species species = gBattleStruct->beatUpSpecies[gBattleStruct->beatUpSlot++];
// FIXME: Why call CalcBeatUpPower when 'beatUpSlot' is OOB?
if (species == 0xFFFF)
return 0;
@@ -283,7 +283,7 @@ static s32 CalcBeatUpDamage(struct BattleContext *ctx)
{
u32 partyIndex = gBattleStruct->beatUpSpecies[gBattleStruct->beatUpSlot++];
struct Pokemon *party = GetBattlerParty(ctx->battlerAtk);
- u32 species = GetMonData(&party[partyIndex], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&party[partyIndex], MON_DATA_SPECIES);
u32 levelFactor = GetMonData(&party[partyIndex], MON_DATA_LEVEL) * 2 / 5 + 2;
s32 dmg = GetSpeciesBaseAttack(species);
@@ -1113,6 +1113,38 @@ bool32 IsLastMonToMove(enum BattlerId battler)
return TRUE;
}
+static u32 GetAiTurnOrder(u8 *aiTurnOrder, enum BattlerId battler)
+{
+ for (u32 i = 0; i < gBattlersCount; i++)
+ {
+ if (aiTurnOrder[i] == battler)
+ return i;
+ }
+ return 0;
+}
+
+static bool32 Ai_AttackerMovesAfterTarget(struct BattleContext *ctx)
+{
+ return GetAiTurnOrder(ctx->aiTurnOrder, ctx->battlerAtk) > GetAiTurnOrder(ctx->aiTurnOrder, ctx->battlerDef);
+}
+
+static bool32 Ai_AttackerMovesLast(struct BattleContext *ctx)
+{
+ u32 numAliveBattlers = 0;
+ u32 battlerTurnOrder = GetAiTurnOrder(ctx->aiTurnOrder, ctx->battlerAtk);
+
+ for (enum BattlerId battler = B_BATTLER_0; battler < gBattlersCount; battler++)
+ {
+ if (IsBattlerAlive(battler))
+ numAliveBattlers++;
+ }
+
+ if (battlerTurnOrder >= numAliveBattlers - 1)
+ return TRUE;
+
+ return FALSE;
+}
+
bool32 ShouldDefiantCompetitiveActivate(enum BattlerId battler, enum Ability ability)
{
enum BattleSide side = GetBattlerSide(battler);
@@ -1693,7 +1725,7 @@ u8 GetImprisonedMovesCount(enum BattlerId battler, enum Move move)
u32 GetBattlerAffectionHearts(enum BattlerId battler)
{
struct Pokemon *mon = GetBattlerMon(battler);
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
if (!IsOnPlayerSide(battler))
return AFFECTION_NO_HEARTS;
@@ -2240,7 +2272,7 @@ u32 NumFaintedBattlersByAttacker(enum BattlerId battlerAtk)
if (battler == battlerAtk)
continue;
- if (IsBattlerTurnDamaged(battler) && !IsBattlerAlive(battler))
+ if (IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES) && !IsBattlerAlive(battler))
numMonsFainted++;
}
@@ -3002,8 +3034,8 @@ static bool32 TryDancer(void)
// Set target for other Dancer mons; set bit so that mon cannot activate Dancer off of its own move
if (!gSpecialStatuses[gBattlerAttacker].dancerUsedMove)
{
- gBattleScripting.savedBattler = gBattlerTarget | 0x4;
- gBattleScripting.savedBattler |= (gBattlerAttacker << 4);
+ gBattleStruct->dancerSavedTarget = gBattlerTarget;
+ gBattleStruct->dancerSavedAttacker = gBattlerAttacker;
gSpecialStatuses[gBattlerAttacker].dancerUsedMove = TRUE;
}
@@ -3020,11 +3052,11 @@ static bool32 TryDancer(void)
RecordAbilityBattle(gBattlerAttacker, ABILITY_DANCER);
// Set the target to the original target of the mon that first used a Dance move
- gBattlerTarget = gBattleScripting.savedBattler & 0x3;
+ gBattlerTarget = gBattleStruct->dancerSavedTarget;
// Make sure that the target isn't an ally - if it is, target the original user
if (IsBattlerAlly(gBattlerTarget, gBattlerAttacker))
- gBattlerTarget = (gBattleScripting.savedBattler & 0xF0) >> 4;
+ gBattlerTarget = gBattleStruct->dancerSavedAttacker;
BattleScriptExecute(BattleScript_DancerActivates);
return TRUE;
@@ -3040,7 +3072,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
u32 side = 0;
u32 i = 0, j = 0;
u32 partner = 0;
- u32 speciesForm = SPECIES_NONE;
+ enum Species speciesForm = SPECIES_NONE;
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
return 0;
@@ -3239,28 +3271,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
case ABILITY_DOWNLOAD:
if (shouldAbilityTrigger)
{
- enum Stat statId;
- enum BattlerId opposingBattler;
- u32 opposingDef = 0, opposingSpDef = 0;
-
- opposingBattler = BATTLE_OPPOSITE(battler);
- for (i = 0; i < 2; opposingBattler ^= BIT_FLANK, i++)
- {
- if (IsBattlerAlive(opposingBattler))
- {
- opposingDef += gBattleMons[opposingBattler].defense
- * gStatStageRatios[gBattleMons[opposingBattler].statStages[STAT_DEF]][0]
- / gStatStageRatios[gBattleMons[opposingBattler].statStages[STAT_DEF]][1];
- opposingSpDef += gBattleMons[opposingBattler].spDefense
- * gStatStageRatios[gBattleMons[opposingBattler].statStages[STAT_SPDEF]][0]
- / gStatStageRatios[gBattleMons[opposingBattler].statStages[STAT_SPDEF]][1];
- }
- }
-
- if (opposingDef < opposingSpDef)
- statId = STAT_ATK;
- else
- statId = STAT_SPATK;
+ enum Stat statId = GetDownloadStat(battler);
if (CompareStat(battler, statId, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility))
{
@@ -3449,7 +3460,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_TERAFORM_ZERO:
- if (gBattleMons[battler].species == SPECIES_TERAPAGOS_STELLAR)
+ if (shouldAbilityTrigger && gBattleMons[battler].species == SPECIES_TERAPAGOS_STELLAR)
{
BattleScriptCall(BattleScript_ActivateTeraformZero);
effect++;
@@ -3606,7 +3617,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITYEFFECT_SWITCH_IN_FORM_CHANGE:
- if (TryBattleFormChange(battler, FORM_CHANGE_BATTLE_HP_PERCENT_SEND_OUT, ability))
+ if (shouldAbilityTrigger && TryBattleFormChange(battler, FORM_CHANGE_BATTLE_HP_PERCENT_SEND_OUT, ability))
{
gBattleScripting.battler = battler;
// To prevent the new form's ability from pop up
@@ -3818,7 +3829,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
switch (gLastUsedAbility)
{
case ABILITY_COLOR_CHANGE:
- if (IsBattlerTurnDamaged(battler)
+ if (IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& !IS_BATTLER_OF_TYPE(battler, moveType)
&& move != MOVE_STRUGGLE
@@ -3833,7 +3844,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_BERSERK:
- if (IsBattlerTurnDamaged(battler)
+ if (IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& HadMoreThanHalfHpNowDoesnt(battler)
&& CompareStat(battler, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility))
@@ -3845,7 +3856,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_ANGER_SHELL:
- if (IsBattlerTurnDamaged(battler)
+ if (IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& HadMoreThanHalfHpNowDoesnt(battler))
{
@@ -3862,7 +3873,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
switch (gLastUsedAbility)
{
case ABILITY_JUSTIFIED:
- if (IsBattlerTurnDamaged(battler)
+ if (IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& moveType == TYPE_DARK
&& CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility))
@@ -3874,7 +3885,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_RATTLED:
- if (IsBattlerTurnDamaged(battler)
+ if (IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& (moveType == TYPE_DARK || moveType == TYPE_BUG || moveType == TYPE_GHOST)
&& CompareStat(battler, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility))
@@ -3886,7 +3897,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_WATER_COMPACTION:
- if (IsBattlerTurnDamaged(battler)
+ if (IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& moveType == TYPE_WATER
&& CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility))
@@ -3899,7 +3910,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
break;
case ABILITY_STAMINA:
if (gBattlerAttacker != gBattlerTarget
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility))
{
@@ -3910,7 +3921,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_WEAK_ARMOR:
- if (IsBattlerTurnDamaged(battler)
+ if (IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& IsBattleMovePhysical(gCurrentMove)
&& (CompareStat(battler, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility) // Don't activate if both Speed and Defense cannot be raised.
@@ -3924,7 +3935,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_CURSED_BODY:
- if (IsBattlerTurnDamaged(gBattlerTarget)
+ if (IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& gBattleMons[gBattlerAttacker].volatiles.disabledMove == MOVE_NONE
&& IsBattlerAlive(gBattlerAttacker)
&& !IsAbilityOnSide(gBattlerAttacker, ABILITY_AROMA_VEIL)
@@ -3941,7 +3952,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
case ABILITY_LINGERING_AROMA:
case ABILITY_MUMMY:
if (IsBattlerAlive(gBattlerAttacker)
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), move)
&& gBattleMons[gBattlerAttacker].volatiles.overwrittenAbility != GetBattlerAbility(gBattlerTarget)
&& gBattleMons[gBattlerAttacker].ability != ABILITY_MUMMY
@@ -3964,7 +3975,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
break;
case ABILITY_WANDERING_SPIRIT:
if (IsBattlerAlive(gBattlerAttacker)
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), move)
&& !(GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX)
&& !gAbilitiesInfo[gBattleMons[gBattlerAttacker].ability].cantBeSwapped)
@@ -3991,7 +4002,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
break;
case ABILITY_ANGER_POINT:
if (gSpecialStatuses[battler].criticalHit
- && IsBattlerTurnDamaged(battler)
+ && IsBattlerTurnDamaged(battler, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility))
{
@@ -4005,7 +4016,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
if (IsBattlerAlive(gBattlerAttacker)
&& (CompareStat(gBattlerAttacker, STAT_SPEED, MIN_STAT_STAGE, CMP_GREATER_THAN, gLastUsedAbility) || GetBattlerAbility(gBattlerAttacker) == ABILITY_MIRROR_ARMOR)
&& !gBattleStruct->unableToUseMove
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), move))
{
SET_STATCHANGER(STAT_SPEED, 1, TRUE);
@@ -4018,12 +4029,19 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
case ABILITY_IRON_BARBS:
if (IsBattlerAlive(gBattlerAttacker)
&& !gBattleStruct->unableToUseMove
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), move))
{
- SetPassiveDamageAmount(gBattlerAttacker, GetNonDynamaxMaxHP(gBattlerAttacker) / (B_ROUGH_SKIN_DMG >= GEN_4 ? 8 : 16));
- PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility);
- BattleScriptCall(BattleScript_RoughSkinActivates);
+ if (!IsAbilityAndRecord(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), ABILITY_MAGIC_GUARD))
+ {
+ PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility);
+ SetPassiveDamageAmount(gBattlerAttacker, GetNonDynamaxMaxHP(gBattlerAttacker) / (B_ROUGH_SKIN_DMG >= GEN_4 ? 8 : 16));
+ BattleScriptCall(BattleScript_RoughSkinActivates);
+ }
+ else
+ {
+ BattleScriptCall(BattleScript_AbilityPopUp);
+ }
effect++;
}
break;
@@ -4091,7 +4109,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
if (i < sleep
&& IsBattlerAlive(gBattlerAttacker)
&& !gBattleStruct->unableToUseMove
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& CanBeSlept(gBattlerTarget, gBattlerAttacker, abilityAtk, NOT_BLOCKED_BY_SLEEP_CLAUSE)
&& !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, abilityAtk, holdEffectAtk, move))
{
@@ -4115,7 +4133,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
enum Ability abilityAtk = GetBattlerAbility(gBattlerAttacker);
if (IsBattlerAlive(gBattlerAttacker)
&& !gBattleStruct->unableToUseMove
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& CanBePoisoned(gBattlerTarget, gBattlerAttacker, gLastUsedAbility, abilityAtk)
&& !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, abilityAtk, GetBattlerHoldEffect(gBattlerAttacker), move))
{
@@ -4137,7 +4155,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
enum Ability abilityAtk = GetBattlerAbility(gBattlerAttacker);
if (IsBattlerAlive(gBattlerAttacker)
&& !gBattleStruct->unableToUseMove
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& CanBeParalyzed(gBattlerTarget, gBattlerAttacker, abilityAtk)
&& !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, abilityAtk, GetBattlerHoldEffect(gBattlerAttacker), move))
{
@@ -4155,7 +4173,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
if (IsBattlerAlive(gBattlerAttacker)
&& !gBattleStruct->unableToUseMove
&& !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), move)
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& CanBeBurned(gBattlerTarget, gBattlerAttacker, GetBattlerAbility(gBattlerAttacker))
&& (GetConfig(B_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_FLAME_BODY, 30) : RandomChance(RNG_FLAME_BODY, 1, 3)))
{
@@ -4170,7 +4188,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
case ABILITY_CUTE_CHARM:
if (IsBattlerAlive(gBattlerAttacker)
&& !gBattleStruct->unableToUseMove
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerTarget)
&& (GetConfig(B_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_CUTE_CHARM, 30) : RandomChance(RNG_CUTE_CHARM, 1, 3))
&& !(gBattleMons[gBattlerAttacker].volatiles.infatuation)
@@ -4185,7 +4203,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_ILLUSION:
- if (gBattleStruct->illusion[gBattlerTarget].state == ILLUSION_ON && IsBattlerTurnDamaged(gBattlerTarget))
+ if (gBattleStruct->illusion[gBattlerTarget].state == ILLUSION_ON && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES))
{
gBattleScripting.battler = gBattlerTarget;
BattleScriptCall(BattleScript_IllusionOff);
@@ -4193,7 +4211,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_COTTON_DOWN:
- if (IsBattlerTurnDamaged(gBattlerTarget))
+ if (IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES))
{
gEffectBattler = gBattlerTarget;
// Will ability popup activate if there is only one target?
@@ -4202,7 +4220,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_STEAM_ENGINE:
- if (IsBattlerTurnDamaged(gBattlerTarget)
+ if (IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& CompareStat(battler, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility)
&& (moveType == TYPE_FIRE || moveType == TYPE_WATER))
@@ -4215,7 +4233,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
break;
case ABILITY_SAND_SPIT:
if (!gBattleStruct->unableToUseMove
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& !(gBattleWeather & B_WEATHER_SANDSTORM && HasWeatherEffect()))
{
if (gBattleWeather & B_WEATHER_PRIMAL_ANY && HasWeatherEffect())
@@ -4233,7 +4251,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
break;
case ABILITY_PERISH_BODY:
if (!gBattleStruct->unableToUseMove
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(battler)
&& !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), move)
&& !gBattleMons[gBattlerAttacker].volatiles.perishSong)
@@ -4251,7 +4269,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
break;
case ABILITY_SEED_SOWER:
if (!gBattleStruct->unableToUseMove
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerTarget)
&& TryChangeBattleTerrain(gBattlerTarget, STATUS_FIELD_GRASSY_TERRAIN))
{
@@ -4260,7 +4278,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
}
break;
case ABILITY_THERMAL_EXCHANGE:
- if (IsBattlerTurnDamaged(gBattlerTarget)
+ if (IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerTarget)
&& CompareStat(gBattlerTarget, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility)
&& moveType == TYPE_FIRE)
@@ -4277,7 +4295,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
// fall through
case ABILITY_ELECTROMORPHOSIS:
if (!gBattleStruct->unableToUseMove
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& IsBattlerAlive(gBattlerTarget))
{
BattleScriptCall(BattleScript_WindPowerActivates);
@@ -4288,7 +4306,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
if (!gBattleStruct->isSkyBattle
&& !gBattleStruct->unableToUseMove
&& IsBattleMovePhysical(gCurrentMove)
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& (gSideTimers[GetBattlerSide(gBattlerAttacker)].toxicSpikesAmount != 2))
{
SaveBattlerTarget(gBattlerTarget);
@@ -4311,7 +4329,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
&& !gBattleStruct->unableToUseMove
&& CanBePoisoned(gBattlerAttacker, gBattlerTarget, gLastUsedAbility, GetBattlerAbility(gBattlerTarget))
&& IsMoveMakingContact(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), move)
- && IsBattlerTurnDamaged(gBattlerTarget) // Need to actually hit the target
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES) // Need to actually hit the target
&& RandomPercentage(RNG_POISON_TOUCH, 30))
{
gEffectBattler = gBattlerTarget;
@@ -4338,7 +4356,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
if (IsBattlerAlive(gBattlerTarget)
&& !gBattleStruct->unableToUseMove
&& RandomChance(RNG_STENCH, 1, 10)
- && IsBattlerTurnDamaged(gBattlerTarget)
+ && IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
&& !MoveHasAdditionalEffect(gCurrentMove, MOVE_EFFECT_FLINCH))
{
SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_FLINCH, gBattlescriptCurrInstr, EFFECT_PRIMARY);
@@ -4365,7 +4383,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
speciesForm = gBattleMons[gBattlerTarget].species;
if (gBattleStruct->unableToUseMove
- || !IsBattlerTurnDamaged(gBattlerTarget)
+ || !IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
|| !TryBattleFormChange(gBattlerTarget, FORM_CHANGE_BATTLE_HIT_BY_MOVE_CATEGORY, ability))
break;
@@ -4427,7 +4445,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
{
if (gBattleMons[battlerDef].item != ITEM_NONE
&& battlerDef != battler
- && IsBattlerTurnDamaged(battlerDef)
+ && IsBattlerTurnDamaged(battlerDef, EXCLUDING_SUBSTITUTES)
&& CanStealItem(battler, battlerDef, gBattleMons[battlerDef].item)
&& !GetBattlerPartyState(battlerDef)->isKnockedOff
&& !DoesSubstituteBlockMove(battler, battlerDef, move)
@@ -6251,7 +6269,7 @@ static inline u32 CalcMoveBasePower(struct BattleContext *ctx)
basePower *= 2;
break;
case EFFECT_TRUMP_CARD:
- i = GetMoveSlot(gBattleMons[battlerAtk].moves, move);
+ i = GetMoveSlot(gBattleMons[battlerAtk].moves, ctx->chosenMove);
if (i != MAX_MON_MOVES)
{
if (gBattleMons[battlerAtk].pp[i] >= ARRAY_COUNT(sTrumpCardPowerTable))
@@ -6324,14 +6342,28 @@ static inline u32 CalcMoveBasePower(struct BattleContext *ctx)
}
break;
case EFFECT_PAYBACK:
- if (HasBattlerActedThisTurn(battlerDef)
+ if (ctx->aiCalc)
+ {
+ if (Ai_AttackerMovesAfterTarget(ctx))
+ basePower *= 2;
+ }
+ else if (HasBattlerActedThisTurn(battlerDef)
&& (B_PAYBACK_SWITCH_BOOST < GEN_5 || gBattleStruct->battlerState[battlerDef].isFirstTurn != 2))
+ {
basePower *= 2;
+ }
break;
case EFFECT_BOLT_BEAK:
- if (!HasBattlerActedThisTurn(battlerDef)
- || gBattleStruct->battlerState[battlerDef].isFirstTurn == 2)
+ if (ctx->aiCalc)
+ {
+ if (!Ai_AttackerMovesAfterTarget(ctx))
+ basePower *= 2;
+ }
+ else if (!HasBattlerActedThisTurn(battlerDef)
+ || gBattleStruct->battlerState[battlerDef].isFirstTurn == 2)
+ {
basePower *= 2;
+ }
break;
case EFFECT_FUSION_COMBO:
if (move == gLastUsedMove)
@@ -6438,9 +6470,12 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct BattleContext *ctx)
modifier = uq4_12_multiply(modifier, UQ_4_12(2.0));
break;
case EFFECT_RETALIATE:
- if (gSideTimers[atkSide].retaliateTimer == 1)
+ {
+ u32 retaliateTimer = gSideTimers[atkSide].retaliateTimer;
+ if (retaliateTimer == 1 || (gAiLogicData->switchInCalc && retaliateTimer == 2))
modifier = uq4_12_multiply(modifier, UQ_4_12(2.0));
break;
+ }
case EFFECT_SOLAR_BEAM:
if ((GetConfig(B_SANDSTORM_SOLAR_BEAM) >= GEN_3 && IsBattlerWeatherAffected(ctx->holdEffectAtk, ctx->weather, B_WEATHER_LOW_LIGHT))
|| IsBattlerWeatherAffected(ctx->holdEffectAtk, ctx->weather, (B_WEATHER_RAIN | B_WEATHER_ICY_ANY | B_WEATHER_FOG))) // Excludes Sandstorm
@@ -6527,8 +6562,18 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct BattleContext *ctx)
modifier = uq4_12_multiply(modifier, UQ_4_12(0.75));
break;
case ABILITY_ANALYTIC:
- if (IsLastMonToMove(battlerAtk) && moveEffect != EFFECT_FUTURE_SIGHT)
- modifier = uq4_12_multiply(modifier, UQ_4_12(1.3));
+ if (moveEffect == EFFECT_FUTURE_SIGHT)
+ break;
+
+ if (ctx->aiCalc)
+ {
+ if (Ai_AttackerMovesLast(ctx))
+ modifier = uq4_12_multiply(modifier, UQ_4_12(1.3));
+ }
+ else if (IsLastMonToMove(battlerAtk))
+ {
+ modifier = uq4_12_multiply(modifier, UQ_4_12(1.3));
+ }
break;
case ABILITY_TOUGH_CLAWS:
if (IsMoveMakingContact(battlerAtk, battlerDef, ctx->abilityAtk, ctx->holdEffectAtk, ctx->move))
@@ -7029,7 +7074,7 @@ static inline u32 CalcAttackStat(struct BattleContext *ctx)
return uq4_12_multiply_by_int_half_down(modifier, atkStat);
}
-static bool32 CanEvolve(u32 species)
+static bool32 CanEvolve(enum Species species)
{
u32 i;
const struct Evolution *evolutions = GetSpeciesEvolutions(species);
@@ -7199,7 +7244,7 @@ static inline u32 CalcDefenseStat(struct BattleContext *ctx)
break;
case HOLD_EFFECT_EVIOLITE:
{
- u16 species = gBattleMons[battlerDef].species;
+ enum Species species = gBattleMons[battlerDef].species;
if (gBattleMons[battlerDef].volatiles.transformed && gBattleMons[battlerDef].volatiles.transformedMonSpecies != SPECIES_NONE)
species = gBattleMons[battlerDef].volatiles.transformedMonSpecies;
if (CanEvolve(species))
@@ -7720,6 +7765,7 @@ s32 DoFixedDamageMoveCalc(struct BattleContext *ctx)
return dmg;
gBattleStruct->moveResultFlags[ctx->battlerDef] &= ~(MOVE_RESULT_NOT_VERY_EFFECTIVE | MOVE_RESULT_SUPER_EFFECTIVE);
+ gSpecialStatuses[ctx->battlerDef].criticalHit = FALSE;
if (dmg == 0)
dmg = 1;
@@ -7752,7 +7798,7 @@ static inline s32 DoFutureSightAttackDamageCalcVars(struct BattleContext *ctx)
struct Pokemon *party = GetBattlerParty(battlerAtk);
struct Pokemon *partyMon = &party[gBattleStruct->futureSight[battlerDef].partyIndex];
u32 partyMonLevel = GetMonData(partyMon, MON_DATA_LEVEL);
- u32 partyMonSpecies = GetMonData(partyMon, MON_DATA_SPECIES);
+ enum Species partyMonSpecies = GetMonData(partyMon, MON_DATA_SPECIES);
gBattleMovePower = GetMovePower(move);
if (IsBattleMovePhysical(move))
@@ -8140,7 +8186,7 @@ static inline void MulByTypeEffectiveness(struct BattleContext *ctx, uq4_12_t *m
*modifier = uq4_12_multiply(*modifier, mod);
}
-static inline void TryNoticeIllusionInTypeEffectiveness(enum Move move, enum Type moveType, enum BattlerId battlerAtk, enum BattlerId battlerDef, uq4_12_t resultingModifier, u32 illusionSpecies)
+static inline void TryNoticeIllusionInTypeEffectiveness(enum Move move, enum Type moveType, enum BattlerId battlerAtk, enum BattlerId battlerDef, uq4_12_t resultingModifier, enum Species illusionSpecies)
{
// Check if the type effectiveness would've been different if the pokemon really had the types as the disguise.
uq4_12_t presumedModifier = UQ_4_12(1.0);
@@ -8190,7 +8236,7 @@ void UpdateMoveResultFlags(uq4_12_t modifier, u16 *resultFlags)
static inline uq4_12_t CalcTypeEffectivenessMultiplierInternal(struct BattleContext *ctx, uq4_12_t modifier)
{
- u32 illusionSpecies;
+ enum Species illusionSpecies;
enum Type types[3];
GetBattlerTypes(ctx->battlerDef, FALSE, types);
@@ -8291,7 +8337,7 @@ uq4_12_t CalcTypeEffectivenessMultiplier(struct BattleContext *ctx)
return modifier;
}
-uq4_12_t CalcPartyMonTypeEffectivenessMultiplier(enum Move move, u16 speciesDef, enum Ability abilityDef)
+uq4_12_t CalcPartyMonTypeEffectivenessMultiplier(enum Move move, enum Species speciesDef, enum Ability abilityDef)
{
uq4_12_t modifier = UQ_4_12(1.0);
enum Type moveType = GetBattleMoveType(move);
@@ -8346,7 +8392,7 @@ uq4_12_t GetOverworldTypeEffectiveness(struct Pokemon *mon, enum Type moveType)
ctx.moveType = moveType;
ctx.updateFlags = FALSE;
- u32 speciesDef = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species speciesDef = GetMonData(mon, MON_DATA_SPECIES);
enum Type type1 = GetSpeciesType(speciesDef, 0);
enum Type type2 = GetSpeciesType(speciesDef, 1);
@@ -8429,7 +8475,7 @@ bool32 IsPartnerMonFromSameTrainer(enum BattlerId battler)
return !(gBattleTypeFlags & BATTLE_TYPE_MULTI);
}
-bool32 DoesSpeciesUseHoldItemToChangeForm(u16 species, u16 heldItemId)
+bool32 DoesSpeciesUseHoldItemToChangeForm(enum Species species, u16 heldItemId)
{
u32 i;
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
@@ -8591,9 +8637,9 @@ bool32 IsBattlerInTeraForm(enum BattlerId battler)
return (IsSpeciesTeraForm(gBattleMons[battler].species));
}
-u32 GetBattleFormChangeTargetSpecies(enum BattlerId battler, enum FormChanges method, enum Ability ability)
+enum Species GetBattleFormChangeTargetSpecies(enum BattlerId battler, enum FormChanges method, enum Ability ability)
{
- u32 species = gBattleMons[battler].species;
+ enum Species species = gBattleMons[battler].species;
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
if (formChanges == NULL)
@@ -8676,8 +8722,8 @@ bool32 TryBattleFormChange(enum BattlerId battler, enum FormChanges method, enum
if (!CanBattlerFormChange(battler, method))
return FALSE;
- u32 currentSpecies = GetMonData(mon, MON_DATA_SPECIES);
- u32 targetSpecies = GetBattleFormChangeTargetSpecies(battler, method, ability);
+ enum Species currentSpecies = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species targetSpecies = GetBattleFormChangeTargetSpecies(battler, method, ability);
struct PartyState *battlePartyState = GetBattlerPartyState(battler);
// If the battle ends, and there's not a specified species to change back to,
@@ -8739,27 +8785,31 @@ bool32 DoBattlersShareType(enum BattlerId battler1, enum BattlerId battler2)
bool32 CanBattlerGetOrLoseItem(enum BattlerId fromBattler, enum BattlerId battler, enum Item itemId)
{
- u16 species = gBattleMons[fromBattler].species;
+ enum Species fromSpecies = gBattleMons[fromBattler].species;
+ enum Species otherSpecies = gBattleMons[battler].species;
+
enum HoldEffect holdEffect = GetItemHoldEffect(itemId); // Raw hold effect
if (ItemIsMail(itemId))
return FALSE;
else if (itemId == ITEM_ENIGMA_BERRY_E_READER)
return FALSE;
- else if (DoesSpeciesUseHoldItemToChangeForm(species, itemId))
+ else if (DoesSpeciesUseHoldItemToChangeForm(fromSpecies, itemId))
return FALSE;
else if (holdEffect == HOLD_EFFECT_Z_CRYSTAL)
return FALSE;
else if (holdEffect == HOLD_EFFECT_BOOSTER_ENERGY
- && (IsSpeciesParadox(gBattleMons[fromBattler].species) || IsSpeciesParadox(gBattleMons[battler].species)))
+ && (IsSpeciesParadox(fromSpecies) || IsSpeciesParadox(otherSpecies)))
+ return FALSE;
+ else if (holdEffect == HOLD_EFFECT_OGERPON_MASK && GET_BASE_SPECIES_ID(fromSpecies) == SPECIES_OGERPON)
return FALSE;
else
return TRUE;
}
-u32 GetBattlerVisualSpecies(enum BattlerId battler)
+enum Species GetBattlerVisualSpecies(enum BattlerId battler)
{
- u32 illusionSpecies = GetIllusionMonSpecies(battler);
+ enum Species illusionSpecies = GetIllusionMonSpecies(battler);
if (illusionSpecies != SPECIES_NONE)
return illusionSpecies;
return gBattleMons[battler].species;
@@ -8792,7 +8842,7 @@ void ClearIllusionMon(enum BattlerId battler)
memset(&gBattleStruct->illusion[battler], 0, sizeof(gBattleStruct->illusion[battler]));
}
-u32 GetIllusionMonSpecies(enum BattlerId battler)
+enum Species GetIllusionMonSpecies(enum BattlerId battler)
{
struct Pokemon *illusionMon = GetIllusionMonPtr(battler);
if (illusionMon != NULL)
@@ -8828,7 +8878,7 @@ u32 GetIllusionMonPartyId(struct Pokemon *party, struct Pokemon *mon, struct Pok
&& GetMonData(&party[id], MON_DATA_HP)
&& !GetMonData(&party[id], MON_DATA_IS_EGG))
{
- u32 species = GetMonData(&party[id], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&party[id], MON_DATA_SPECIES);
if (species == SPECIES_TERAPAGOS_STELLAR || (species >= SPECIES_OGERPON_TEAL_TERA && species <= SPECIES_OGERPON_CORNERSTONE_TERA))
continue;
if (&party[id] != mon && &party[id] != partnerMon)
@@ -9600,7 +9650,7 @@ bool32 MoveIsAffectedBySheerForce(enum Move move)
bool32 CanMonParticipateInSkyBattle(struct Pokemon *mon)
{
- u32 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u32 monAbilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM);
bool32 hasLevitateAbility = GetSpeciesAbility(species, monAbilityNum) == ABILITY_LEVITATE;
@@ -9904,7 +9954,7 @@ bool32 HasWeatherEffect(void)
void UpdateStallMons(void)
{
- if (IsBattlerTurnDamaged(gBattlerTarget) || GetMoveCategory(gCurrentMove) == DAMAGE_CATEGORY_STATUS)
+ if (IsBattlerTurnDamaged(gBattlerTarget, INCLUDING_SUBSTITUTES) || GetMoveCategory(gCurrentMove) == DAMAGE_CATEGORY_STATUS)
return;
struct BattleContext ctx = {0};
@@ -10212,7 +10262,7 @@ bool32 CanMoveSkipAccuracyCalc(enum BattlerId battlerAtk, enum BattlerId battler
enum Ability ability = ABILITY_NONE;
enum BattleMoveEffects moveEffect = GetMoveEffect(move);
- if ((gBattleMons[battlerDef].volatiles.lockOn && gBattleMons[battlerDef].volatiles.battlerWithSureHit == battlerAtk)
+ if (gBattleMons[battlerAtk].volatiles.battlerWithSureHit == battlerDef + 1
|| CanMoveSkipAccuracyCheck(battlerAtk, move)
|| gBattleMons[battlerDef].volatiles.glaiveRush)
{
@@ -10435,7 +10485,7 @@ bool32 DoesOHKOMoveMissTarget(struct BattleCalcValues *cv)
{
lands = NO_HIT;
}
- else if ((gBattleMons[cv->battlerDef].volatiles.lockOn && gBattleMons[cv->battlerDef].volatiles.battlerWithSureHit == cv->battlerAtk)
+ else if (gBattleMons[cv->battlerAtk].volatiles.battlerWithSureHit == cv->battlerDef + 1
|| IsAbilityAndRecord(cv->battlerAtk, cv->abilities[cv->battlerAtk], ABILITY_NO_GUARD)
|| IsAbilityAndRecord(cv->battlerDef, cv->abilities[cv->battlerDef], ABILITY_NO_GUARD))
{
@@ -10502,7 +10552,7 @@ static bool32 CanBreakThroughSemiInvulnerablityInternal(enum BattlerId battlerAt
return TRUE;
if (abilityAtk == ABILITY_NO_GUARD || abilityDef == ABILITY_NO_GUARD)
return TRUE;
- if (gBattleMons[battlerDef].volatiles.lockOn && gBattleMons[battlerDef].volatiles.battlerWithSureHit == battlerAtk)
+ if (gBattleMons[battlerAtk].volatiles.battlerWithSureHit == battlerDef + 1)
return TRUE;
}
@@ -10618,13 +10668,13 @@ void CheckSetUnburden(enum BattlerId battler)
gBattleMons[battler].volatiles.unburdenActive = TRUE;
}
-bool32 IsAnyTargetTurnDamaged(enum BattlerId battlerAtk)
+bool32 IsAnyTargetTurnDamaged(enum BattlerId battlerAtk, enum SubCheck subCheck)
{
for (enum BattlerId battlerDef = 0; battlerDef < gBattlersCount; battlerDef++)
{
if (battlerDef == battlerAtk)
continue;
- if (IsBattlerTurnDamaged(battlerDef))
+ if (IsBattlerTurnDamaged(battlerDef, subCheck))
return TRUE;
}
return FALSE;
@@ -10885,7 +10935,25 @@ void SetOrClearRageVolatile(void)
gBattleMons[gBattlerAttacker].volatiles.rage = FALSE;
}
-bool32 IsNaturalEnemy(u32 speciesAttacker, u32 speciesTarget)
+enum BattlerId GetTargetBySlot(enum BattlerId battlerAtk, enum BattlerId battlerDef)
+{
+ switch (battlerDef)
+ {
+ case B_BATTLER_0:
+ return battlerAtk;
+ case B_BATTLER_1:
+ return BATTLE_PARTNER(battlerAtk);
+ case B_BATTLER_2:
+ return LEFT_FOE(battlerAtk);
+ case B_BATTLER_3:
+ return RIGHT_FOE(battlerAtk);
+ default:
+ errorf("Illegal battler");
+ return B_BATTLER_0;
+ }
+}
+
+bool32 IsNaturalEnemy(enum Species speciesAttacker, enum Species speciesTarget)
{
if (B_WILD_NATURAL_ENEMIES != TRUE)
return FALSE;
@@ -10909,3 +10977,28 @@ bool32 IsNaturalEnemy(u32 speciesAttacker, u32 speciesTarget)
}
return FALSE;
}
+
+enum Stat GetDownloadStat(enum BattlerId battler)
+{
+ enum BattlerId opposingBattler;
+ u32 opposingDef = 0, opposingSpDef = 0;
+
+ opposingBattler = BATTLE_OPPOSITE(battler);
+ for (u32 i = 0; i < 2; opposingBattler ^= BIT_FLANK, i++)
+ {
+ if (IsBattlerAlive(opposingBattler))
+ {
+ opposingDef += gBattleMons[opposingBattler].defense
+ * gStatStageRatios[gBattleMons[opposingBattler].statStages[STAT_DEF]][0]
+ / gStatStageRatios[gBattleMons[opposingBattler].statStages[STAT_DEF]][1];
+ opposingSpDef += gBattleMons[opposingBattler].spDefense
+ * gStatStageRatios[gBattleMons[opposingBattler].statStages[STAT_SPDEF]][0]
+ / gStatStageRatios[gBattleMons[opposingBattler].statStages[STAT_SPDEF]][1];
+ }
+ }
+
+ if (opposingDef < opposingSpDef)
+ return STAT_ATK;
+ else
+ return STAT_SPATK;
+}
diff --git a/src/battle_z_move.c b/src/battle_z_move.c
index 113c37f8e4..e8bd0091da 100644
--- a/src/battle_z_move.c
+++ b/src/battle_z_move.c
@@ -227,7 +227,7 @@ bool32 TryChangeZTrigger(enum BattlerId battler, u32 moveIndex)
return viableZMove;
}
-enum Move GetSignatureZMove(enum Move move, u32 species, enum Item item)
+enum Move GetSignatureZMove(enum Move move, enum Species species, enum Item item)
{
u32 i;
diff --git a/src/berry.c b/src/berry.c
index 80fa2c431b..ebf49d8196 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -29,7 +29,7 @@ static u8 GetWeedingBonusByBerryType(u8);
static u8 GetPestsBonusByBerryType(u8);
static void SetTreeMutations(u8 id, u8 berry);
static u8 GetTreeMutationValue(u8 id);
-static u16 GetBerryPestSpecies(u8 berryId);
+static enum Species GetBerryPestSpecies(u8 berryId);
static void TryForWeeds(struct BerryTree *tree);
static void TryForPests(struct BerryTree *tree);
static void AddTreeBonus(struct BerryTree *tree, u8 bonus);
@@ -2286,7 +2286,7 @@ bool8 ObjectEventInteractionBerryHasWeed(void)
bool8 ObjectEventInteractionBerryHasPests(void)
{
- u16 species;
+ enum Species species;
if (!OW_BERRY_PESTS || !gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(gSelectedObjectEvent)].pests)
return FALSE;
species = GetBerryPestSpecies(gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(gSelectedObjectEvent)].berry);
@@ -2405,7 +2405,12 @@ static u8 TryForMutation(u8 berryTreeId, u8 berry)
{
x2 = gObjectEvents[j].currentCoords.x;
y2 = gObjectEvents[j].currentCoords.y;
- if (Random() % 100 < (OW_BERRY_MUTATION_CHANCE * (mulch == ITEM_TO_MULCH(ITEM_SURPRISE_MULCH) || mulch == ITEM_TO_MULCH(ITEM_AMAZE_MULCH))) && (
+ u32 rate = OW_BERRY_MUTATION_CHANCE;
+
+ if (mulch == ITEM_TO_MULCH(ITEM_SURPRISE_MULCH) || mulch == ITEM_TO_MULCH(ITEM_AMAZE_MULCH))
+ rate *= 2;
+
+ if (Random() % 100 < rate && (
(x1 == x2 && y1 == y2 - 1) ||
(x1 == x2 && y1 == y2 + 1) ||
(x1 == x2 - 1 && y1 == y2) ||
@@ -2458,7 +2463,7 @@ static void SetTreeMutations(u8 id, u8 berry)
#endif
}
-static u16 GetBerryPestSpecies(u8 berryId)
+static enum Species GetBerryPestSpecies(u8 berryId)
{
#if OW_BERRY_PESTS == TRUE
const struct Berry *berry = GetBerryInfo(berryId);
diff --git a/src/generational_changes.c b/src/config_changes.c
similarity index 79%
rename from src/generational_changes.c
rename to src/config_changes.c
index af9676831e..06e5b6ab6a 100644
--- a/src/generational_changes.c
+++ b/src/config_changes.c
@@ -1,16 +1,19 @@
#include "global.h"
-#include "generational_changes.h"
+#include "config_changes.h"
#include "malloc.h"
-#include "constants/generational_changes.h"
+#include "constants/config_changes.h"
#include "config/pokerus.h"
+#include "config/ai.h"
#define UNPACK_BATTLE_CONFIG_GEN_CHANGES(_name, _field, ...) ._field = _name,
#define UNPACK_POKEMON_CONFIG_GEN_CHANGES(_name, _field, ...) ._field = P_##_name,
+#define UNPACK_AI_CONFIG_CHANGES(_name, _field, ...) ._field = _name,
-const struct GenChanges sConfigChanges =
+const struct ConfigChanges sConfigChanges =
{
BATTLE_CONFIG_DEFINITIONS(UNPACK_BATTLE_CONFIG_GEN_CHANGES)
POKEMON_CONFIG_DEFINITIONS(UNPACK_POKEMON_CONFIG_GEN_CHANGES)
+ AI_CONFIG_DEFINITIONS(UNPACK_AI_CONFIG_CHANGES)
/* Expands to:
.critChance = B_CRIT_CHANCE,
.critMultiplier = B_CRIT_MULTIPLIER,
@@ -18,7 +21,7 @@ const struct GenChanges sConfigChanges =
};
#if TESTING
-EWRAM_DATA struct GenChanges *gConfigChangesTestOverride = NULL;
+EWRAM_DATA struct ConfigChanges *gConfigChangesTestOverride = NULL;
#define UNPACK_CONFIG_OVERRIDE_GETTERS(_name, _field, ...) case CONFIG_##_name: return gConfigChangesTestOverride->_field;
#define UNPACK_CONFIG_GETTERS(_name, _field, ...) case CONFIG_##_name: return sConfigChanges._field;
#define UNPACK_CONFIG_CLAMPER(_name, _field, _typeMaxValue, ...) case CONFIG_##_name: clampedValue = min(GET_CONFIG_MAXIMUM(_typeMaxValue), newValue); break;
@@ -34,15 +37,16 @@ EWRAM_DATA struct GenChanges *gConfigChangesTestOverride = NULL;
// Gets the value of a volatile status flag for a certain battler
// Primarily used for the debug menu and scripts. Outside of it explicit references are preferred
-u32 GetConfigInternal(enum ConfigTag _genConfig)
+u32 GetConfigInternal(enum ConfigTag _config)
{
#if TESTING
if (gConfigChangesTestOverride == NULL)
{
- switch (_genConfig)
+ switch (_config)
{
BATTLE_CONFIG_DEFINITIONS(UNPACK_CONFIG_GETTERS)
POKEMON_CONFIG_DEFINITIONS(UNPACK_CONFIG_GETTERS)
+ AI_CONFIG_DEFINITIONS(UNPACK_CONFIG_GETTERS)
/* Expands to:
case CONFIG_CRIT_CHANCE:
return gConfigChangesTestOverride->critChance;
@@ -54,10 +58,11 @@ u32 GetConfigInternal(enum ConfigTag _genConfig)
else
#endif
{
- switch (_genConfig)
+ switch (_config)
{
BATTLE_CONFIG_DEFINITIONS(UNPACK_CONFIG_OVERRIDE_GETTERS)
POKEMON_CONFIG_DEFINITIONS(UNPACK_CONFIG_OVERRIDE_GETTERS)
+ AI_CONFIG_DEFINITIONS(UNPACK_CONFIG_OVERRIDE_GETTERS)
/* Expands to:
case CONFIG_CRIT_CHANCE:
return sConfigChanges.critChance;
@@ -69,13 +74,14 @@ u32 GetConfigInternal(enum ConfigTag _genConfig)
}
#if TESTING
-u32 GetClampedValue(enum ConfigTag _genConfig, u32 newValue)
+u32 GetClampedValue(enum ConfigTag _config, u32 newValue)
{
u32 clampedValue = 0;
- switch (_genConfig)
+ switch (_config)
{
BATTLE_CONFIG_DEFINITIONS(UNPACK_CONFIG_CLAMPER)
POKEMON_CONFIG_DEFINITIONS(UNPACK_CONFIG_CLAMPER)
+ AI_CONFIG_DEFINITIONS(UNPACK_CONFIG_CLAMPER)
default:
return 0;
}
@@ -83,15 +89,16 @@ u32 GetClampedValue(enum ConfigTag _genConfig, u32 newValue)
}
#endif
-void SetConfig(enum ConfigTag _genConfig, u32 _value)
+void SetConfig(enum ConfigTag _config, u32 _value)
{
#if TESTING
// Clamping is done here instead of the switch due to an internal compiler error!
- u32 clampedValue = GetClampedValue(_genConfig, _value);
- switch (_genConfig)
+ u32 clampedValue = GetClampedValue(_config, _value);
+ switch (_config)
{
BATTLE_CONFIG_DEFINITIONS(UNPACK_CONFIG_SETTERS)
POKEMON_CONFIG_DEFINITIONS(UNPACK_CONFIG_SETTERS)
+ AI_CONFIG_DEFINITIONS(UNPACK_CONFIG_SETTERS)
/* Expands to:
#if TESTING
case CONFIG_CRIT_CHANCE:
diff --git a/src/contest.c b/src/contest.c
index 41955bf22e..22960ef43b 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -98,9 +98,9 @@ static void PrintContestantMonName(u8);
static void PrintContestantMonNameWithColor(u8, u8);
static u8 CreateJudgeSprite(void);
static u8 CreateJudgeSpeechBubbleSprite(void);
-static u8 CreateContestantSprite(u16, bool8, u32, u32);
+static u8 CreateContestantSprite(enum Species, bool8, u32, u32);
static void PrintContestMoveDescription(enum Move move);
-static u16 SanitizeSpecies(u16);
+static enum Species SanitizeSpecies(enum Species);
static void ContestClearGeneralTextWindow(void);
static enum Move GetChosenMove(u8);
static void GetAllChosenMoves(void);
@@ -3150,7 +3150,7 @@ static u8 CreateJudgeSpeechBubbleSprite(void)
return spriteId;
}
-static u8 CreateContestantSprite(u16 species, bool8 isShiny, u32 personality, u32 index)
+static u8 CreateContestantSprite(enum Species species, bool8 isShiny, u32 personality, u32 index)
{
u8 spriteId;
species = SanitizeSpecies(species);
@@ -3176,7 +3176,7 @@ static u8 CreateContestantSprite(u16 species, bool8 isShiny, u32 personality, u3
return spriteId;
}
-bool8 IsSpeciesNotUnown(u16 species)
+bool8 IsSpeciesNotUnown(enum Species species)
{
if (species == SPECIES_UNOWN)
return FALSE;
@@ -5310,7 +5310,7 @@ static u16 SanitizeMove(enum Move move)
return move;
}
-static u16 SanitizeSpecies(u16 species)
+static enum Species SanitizeSpecies(enum Species species)
{
assertf(species < NUM_SPECIES, "invalid species: %d", species)
{
@@ -5323,7 +5323,7 @@ static u16 SanitizeSpecies(u16 species)
static void SetMoveSpecificAnimData(u8 contestant)
{
enum Move move = SanitizeMove(eContestantStatus[contestant].currMove);
- u16 species = SanitizeSpecies(gContestMons[contestant].species);
+ enum Species species = SanitizeSpecies(gContestMons[contestant].species);
u8 targetContestant;
memset(&gContestResources->moveAnim->species, 0, 20);
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 9c541cb321..6b68803490 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -335,7 +335,7 @@ static void VBlankCB_ContestPainting(void)
TransferPlttBuffer();
}
-static void InitContestMonPixels(u16 species, bool8 backPic)
+static void InitContestMonPixels(enum Species species, bool8 backPic)
{
const void *pal = GetMonSpritePalFromSpeciesAndPersonality(species, gContestPaintingWinner->isShiny, gContestPaintingWinner->personality);
memcpy(gContestPaintingMonPalette, pal, PLTT_SIZE_4BPP);
diff --git a/src/contest_util.c b/src/contest_util.c
index 7ce1dad8e0..a7c780aed6 100644
--- a/src/contest_util.c
+++ b/src/contest_util.c
@@ -868,7 +868,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
{
int i;
u8 spriteId;
- u16 species;
+ enum Species species;
bool8 isShiny;
u32 personality;
@@ -1081,7 +1081,7 @@ static void Task_FlashStarsAndHearts(u8 taskId)
sContestResults->data->pointsFlashing = TRUE;
}
-static void LoadContestMonIcon(u16 species, u8 monIndex, u8 srcOffset, u8 useDmaNow, u32 personality)
+static void LoadContestMonIcon(enum Species species, u8 monIndex, u8 srcOffset, u8 useDmaNow, u32 personality)
{
const u8 *iconPtr;
u16 var0, var1;
@@ -2559,7 +2559,7 @@ bool8 IsContestDebugActive(void)
void ShowContestEntryMonPic(void)
{
u32 personality;
- u16 species;
+ enum Species species;
u8 spriteId;
u8 taskId;
u8 left, top;
diff --git a/src/credits_frlg.c b/src/credits_frlg.c
index b704283c41..fda0378ec0 100644
--- a/src/credits_frlg.c
+++ b/src/credits_frlg.c
@@ -1191,7 +1191,7 @@ static void LoadCreditsMonPic(u8 whichMon)
CopyWindowToVram(2, COPYWIN_GFX);
}
-static u16 GetCreditsMonSpecies(u8 whichMon)
+static enum Species GetCreditsMonSpecies(u8 whichMon)
{
switch (whichMon)
{
diff --git a/src/data.c b/src/data.c
index cd123026cd..571790509f 100644
--- a/src/data.c
+++ b/src/data.c
@@ -226,6 +226,7 @@ const union AnimCmd *const gAnims_Trainer[] ={
sAnim_GeneralFrame0,
};
+#if !TESTING
const struct Trainer gTrainers[DIFFICULTY_COUNT][TRAINERS_COUNT] =
{
#if IS_FRLG
@@ -234,5 +235,6 @@ const struct Trainer gTrainers[DIFFICULTY_COUNT][TRAINERS_COUNT] =
#include "data/trainers.h"
#endif
};
+#endif
#include "data/text/follower_messages.h"
diff --git a/src/data/debug_trainers.party b/src/data/debug_trainers.party
index 4a57d2c35e..2604f57c3a 100644
--- a/src/data/debug_trainers.party
+++ b/src/data/debug_trainers.party
@@ -30,7 +30,7 @@ EVs: 252 Atk / 252 Def / 6 SpA
=== DEBUG_TRAINER_AI ===
Name: Debugger
-AI: Basic Trainer
+AI: Smart Trainer
Class: Rival
Battle Type: Singles
Pic: Steven
diff --git a/src/data/graphics/items.h b/src/data/graphics/items.h
index 0fdb0cf8b3..733e354e81 100644
--- a/src/data/graphics/items.h
+++ b/src/data/graphics/items.h
@@ -1756,6 +1756,8 @@ const u16 gItemIconPalette_DarkTMHM[] = INCBIN_U16("graphics/items/icon_palettes
const u16 gItemIconPalette_SteelTMHM[] = INCBIN_U16("graphics/items/icon_palettes/steel_tm_hm.gbapal");
+const u16 gItemIconPalette_MysteryTMHM[] = INCBIN_U16("graphics/items/icon_palettes/mystery_tm_hm.gbapal");
+
const u16 gItemIconPalette_FairyTMHM[] = INCBIN_U16("graphics/items/icon_palettes/fairy_tm_hm.gbapal");
// Charms
diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h
index 2cdbeb2681..b2506c56f6 100644
--- a/src/data/graphics/pokemon.h
+++ b/src/data/graphics/pokemon.h
@@ -14942,12 +14942,12 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_
#if OW_POKEMON_OBJECT_EVENTS
const u32 gObjectEventPic_CherrimOvercast[] = INCBIN_COMP("graphics/pokemon/cherrim/overworld.4bpp");
- // const u32 gObjectEventPic_CherrimSunshine[] = INCBIN_COMP("graphics/pokemon/cherrim/sunshine/overworld.4bpp");
+ const u32 gObjectEventPic_CherrimSunshine[] = INCBIN_COMP("graphics/pokemon/cherrim/sunshine/overworld.4bpp");
#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE
const u16 gOverworldPalette_CherrimOvercast[] = INCBIN_U16("graphics/pokemon/cherrim/overworld_normal.gbapal");
- // const u16 gOverworldPalette_CherrimSunshine[] = INCBIN_U16("graphics/pokemon/cherrim/sunshine/overworld_normal.gbapal");
+ const u16 gOverworldPalette_CherrimSunshine[] = INCBIN_U16("graphics/pokemon/cherrim/sunshine/overworld_normal.gbapal");
const u16 gShinyOverworldPalette_CherrimOvercast[] = INCBIN_U16("graphics/pokemon/cherrim/overworld_shiny.gbapal");
- // const u16 gShinyOverworldPalette_CherrimSunshine[] = INCBIN_U16("graphics/pokemon/cherrim/sunshine/overworld_shiny.gbapal");
+ const u16 gShinyOverworldPalette_CherrimSunshine[] = INCBIN_U16("graphics/pokemon/cherrim/sunshine/overworld_shiny.gbapal");
#endif //OW_PKMN_OBJECTS_SHARE_PALETTES
#endif //OW_POKEMON_OBJECT_EVENTS
#endif //P_FAMILY_CHERUBI
diff --git a/src/data/heal_locations.json b/src/data/heal_locations.json
index 868f996513..ad1e5f1d20 100644
--- a/src/data/heal_locations.json
+++ b/src/data/heal_locations.json
@@ -196,7 +196,7 @@
"respawn_x": 8,
"respawn_y": 5,
"respawn_map": "MAP_PALLET_TOWN_PLAYERS_HOUSE_1F",
- "respawn_npc": "LOCALID_MOM"
+ "respawn_npc": "LOCALID_PLAYERS_HOUSE_1F_MOM"
},
{
"id": "HEAL_LOCATION_VIRIDIAN_CITY",
diff --git a/src/data/lilycove_lady.h b/src/data/lilycove_lady.h
index f8c2498963..42596cba15 100644
--- a/src/data/lilycove_lady.h
+++ b/src/data/lilycove_lady.h
@@ -1,11 +1,12 @@
#include "constants/event_objects.h"
#include "constants/items.h"
#include "constants/moves.h"
+#include "constants/species.h"
struct LilycoveContestLadyValues
{
u16 monGfxId;
- u16 monSpecies;
+ enum Species monSpecies;
const u8 *monName;
const u8 *categoryName;
const u8 *contestName;
diff --git a/src/data/moves_info.h b/src/data/moves_info.h
index c28555a3cc..9707e45809 100644
--- a/src/data/moves_info.h
+++ b/src/data/moves_info.h
@@ -6141,8 +6141,16 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
{
.name = COMPOUND_STRING("Encore"),
.description = COMPOUND_STRING(
+ #if B_ENCORE_TURNS >= GEN_5
"Makes the foe repeat its\n"
"last move over 3 turns."),
+ #elif B_ENCORE_TURNS >= GEN_4
+ "Makes the foe repeat its\n"
+ "last move over 3-7 turns."),
+ #else
+ "Makes the foe repeat its\n"
+ "last move over 2-6 turns."),
+ #endif
.effect = EFFECT_ENCORE,
.power = 0,
.type = TYPE_NORMAL,
@@ -17593,6 +17601,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.metronomeBanned = TRUE,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_LIGHT_SCREEN,
+ .self = TRUE,
}),
.battleAnimScript = gBattleAnimMove_GlitzyGlow,
},
@@ -17615,6 +17624,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.metronomeBanned = TRUE,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_REFLECT,
+ .self = TRUE,
}),
.battleAnimScript = gBattleAnimMove_BaddyBad,
},
@@ -17682,6 +17692,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.metronomeBanned = TRUE,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_AROMATHERAPY,
+ .self = TRUE,
}),
.battleAnimScript = gBattleAnimMove_SparklySwirl,
},
@@ -22096,6 +22107,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_MaxKnuckle,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RAISE_TEAM_ATTACK,
+ .self = TRUE,
}),
},
@@ -22156,6 +22168,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_MaxOoze,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RAISE_TEAM_SP_ATK,
+ .self = TRUE,
}),
},
@@ -22196,6 +22209,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_MaxAirstream,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RAISE_TEAM_SPEED,
+ .self = TRUE,
}),
},
@@ -22297,6 +22311,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_MaxQuake,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RAISE_TEAM_SP_DEF,
+ .self = TRUE,
}),
},
@@ -22357,6 +22372,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_MaxSteelspike,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RAISE_TEAM_DEFENSE,
+ .self = TRUE,
}),
},
@@ -22497,6 +22513,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxChiStrike,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_CRIT_PLUS_SIDE,
+ .self = TRUE,
}),
},
@@ -22557,6 +22574,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxResonance,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_AURORA_VEIL,
+ .self = TRUE,
}),
},
@@ -22597,6 +22615,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxReplenish,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RECYCLE_BERRIES,
+ .self = TRUE,
}),
},
@@ -22740,6 +22759,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxGravitas,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_GRAVITY,
+ .self = TRUE,
}),
},
@@ -22820,6 +22840,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxSweetness,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_AROMATHERAPY,
+ .self = TRUE,
}),
},
@@ -22941,6 +22962,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxFinale,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_HEAL_TEAM,
+ .self = TRUE,
}),
},
diff --git a/src/data/object_events/object_event_pic_tables_followers.h b/src/data/object_events/object_event_pic_tables_followers.h
index 4339d4c683..e859946a8e 100644
--- a/src/data/object_events/object_event_pic_tables_followers.h
+++ b/src/data/object_events/object_event_pic_tables_followers.h
@@ -3294,9 +3294,9 @@ static const struct SpriteFrameImage sPicTable_Cherubi[] = {
static const struct SpriteFrameImage sPicTable_CherrimOvercast[] = {
overworld_ascending_frames(gObjectEventPic_CherrimOvercast, 4, 4),
};
-/*static const struct SpriteFrameImage sPicTable_CherrimSunshine[] = {
+static const struct SpriteFrameImage sPicTable_CherrimSunshine[] = {
overworld_ascending_frames(gObjectEventPic_CherrimSunshine, 4, 4),
-};*/
+};
#endif //P_FAMILY_CHERUBI
#if P_FAMILY_SHELLOS
diff --git a/src/data/party_menu.h b/src/data/party_menu.h
index c87f4539d8..baf6cb7b2d 100644
--- a/src/data/party_menu.h
+++ b/src/data/party_menu.h
@@ -576,7 +576,7 @@ static const struct WindowTemplate sWindowTemplate_FirstBattleOakVoiceover =
.bg = 2,
.tilemapLeft = 2,
.tilemapTop = 15,
- .width = 26,
+ .width = 27,
.height = 4,
.paletteNum = 14,
.baseBlock = 0x1DF,
diff --git a/src/data/pokemon/species_info/gen_4_families.h b/src/data/pokemon/species_info/gen_4_families.h
index 9122bda366..eddf9ad144 100644
--- a/src/data/pokemon/species_info/gen_4_families.h
+++ b/src/data/pokemon/species_info/gen_4_families.h
@@ -2973,6 +2973,15 @@ const struct SpeciesInfo gSpeciesInfoGen4[] =
.pokemonJumpType = PKMN_JUMP_TYPE_FAST,
SHADOW(1, 2, SHADOW_SIZE_S)
FOOTPRINT(Cherrim)
+ OVERWORLD(
+ sPicTable_CherrimSunshine,
+ SIZE_32x32,
+ SHADOW_SIZE_M,
+ TRACKS_FOOT,
+ sAnimTable_Following,
+ gOverworldPalette_CherrimSunshine,
+ gShinyOverworldPalette_CherrimSunshine
+ )
.levelUpLearnset = sCherrimLevelUpLearnset,
.teachableLearnset = sCherrimTeachableLearnset,
.formSpeciesIdTable = sCherrimFormSpeciesIdTable,
diff --git a/src/data/types_info.h b/src/data/types_info.h
index ea962b4a44..92e1477e51 100644
--- a/src/data/types_info.h
+++ b/src/data/types_info.h
@@ -53,6 +53,8 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] =
.name = _("None"),
.generic = _("a move"),
.palette = 15, // Uses TYPE_MYSTERY's icon
+ .zMove = MOVE_BREAKNECK_BLITZ,
+ .maxMove = MOVE_MAX_STRIKE,
.teraTypeRGBValue = RGB_WHITE,
.damageCategory = DAMAGE_CATEGORY_PHYSICAL,
.paletteTMHM = gItemIconPalette_NormalTMHM,
@@ -261,8 +263,11 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] =
.name = _("???"),
.generic = _("a ??? move"),
.palette = 15,
+ .zMove = MOVE_BREAKNECK_BLITZ,
+ .maxMove = MOVE_MAX_STRIKE,
.teraTypeRGBValue = RGB_WHITE,
- .damageCategory = DAMAGE_CATEGORY_SPECIAL,
+ .damageCategory = DAMAGE_CATEGORY_PHYSICAL,
+ .paletteTMHM = gItemIconPalette_MysteryTMHM,
.useSecondTypeIconPalette = FALSE,
.isSpecialCaseType = TRUE,
.isHiddenPowerType = FALSE,
@@ -473,6 +478,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] =
.zMove = MOVE_BREAKNECK_BLITZ,
.maxMove = MOVE_MAX_STRIKE,
.teraTypeRGBValue = RGB(10, 18, 27),
+ .damageCategory = DAMAGE_CATEGORY_SPECIAL,
.paletteTMHM = gItemIconPalette_NormalTMHM, // failsafe
.useSecondTypeIconPalette = FALSE,
.isSpecialCaseType = TRUE,
diff --git a/src/daycare.c b/src/daycare.c
index fa6ea2cada..c511ab4649 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -32,10 +32,10 @@
#define IS_DITTO(species) (GetSpeciesEggGroup(species, 0) == EGG_GROUP_DITTO || GetSpeciesEggGroup(species, 1) == EGG_GROUP_DITTO)
static void ClearDaycareMonMail(struct DaycareMail *mail);
-static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
+static void SetInitialEggData(struct Pokemon *mon, enum Species species, struct DayCare *daycare);
static void DaycarePrintMonInfo(u8 windowId, u32 daycareSlotId, u8 y);
static u8 ModifyBreedingScoreForOvalCharm(u8 score);
-static u16 GetEggSpecies(u16 species);
+static enum Species GetEggSpecies(enum Species species);
// RAM buffers used to assist with BuildEggMoveset()
EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0};
@@ -87,9 +87,9 @@ static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
};
static const struct {
- u16 currSpecies;
+ enum Species currSpecies;
enum Item item;
- u16 babySpecies;
+ enum Species babySpecies;
} sIncenseBabyTable[] =
{
// Regular offspring, Item, Incense Offspring
@@ -195,8 +195,8 @@ static void TransferEggMoves(void)
for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
- u16 moveLearnerSpecies = GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[i].mon, MON_DATA_SPECIES);
- u16 eggSpecies = GetEggSpecies(moveLearnerSpecies);
+ enum Species moveLearnerSpecies = GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[i].mon, MON_DATA_SPECIES);
+ enum Species eggSpecies = GetEggSpecies(moveLearnerSpecies);
if (!GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[i].mon, MON_DATA_SANITY_HAS_SPECIES))
continue;
@@ -221,7 +221,7 @@ static void TransferEggMoves(void)
// Go through other Daycare mons
for (k = 0; k < DAYCARE_MON_COUNT; k++)
{
- u16 moveTeacherSpecies = GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[k].mon, MON_DATA_SPECIES);
+ enum Species moveTeacherSpecies = GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[k].mon, MON_DATA_SPECIES);
if (k == i || !GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[k].mon, MON_DATA_SANITY_HAS_SPECIES))
continue;
@@ -384,7 +384,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DaycareMon *daycareMon)
static u16 TakeSelectedPokemonMonFromDaycareShiftSlots(struct DayCare *daycare, u8 slotId)
{
- u16 species = TakeSelectedPokemonFromDaycare(&daycare->mons[slotId]);
+ enum Species species = TakeSelectedPokemonFromDaycare(&daycare->mons[slotId]);
ShiftDaycareSlots(daycare);
return species;
}
@@ -491,7 +491,7 @@ static void UNUSED ClearAllDaycareData(struct DayCare *daycare)
// Determines what the species of an Egg would be based on the given species.
// It determines this by working backwards through the evolution chain of the
// given species.
-static u16 GetEggSpecies(u16 species)
+static enum Species GetEggSpecies(enum Species species)
{
int i, j, k;
bool8 found;
@@ -714,8 +714,8 @@ static void InheritPokeball(struct Pokemon *egg, struct BoxPokemon *father, stru
enum PokeBall inheritBall = BALL_POKE;
enum PokeBall fatherBall = GetBoxMonData(father, MON_DATA_POKEBALL);
enum PokeBall motherBall = GetBoxMonData(mother, MON_DATA_POKEBALL);
- u16 fatherSpecies = GetBoxMonData(father, MON_DATA_SPECIES);
- u16 motherSpecies = GetBoxMonData(mother, MON_DATA_SPECIES);
+ enum Species fatherSpecies = GetBoxMonData(father, MON_DATA_SPECIES);
+ enum Species motherSpecies = GetBoxMonData(mother, MON_DATA_SPECIES);
if (fatherBall == BALL_MASTER || fatherBall == BALL_CHERISH || fatherBall == BALL_STRANGE)
fatherBall = BALL_POKE;
@@ -743,7 +743,7 @@ static void InheritAbility(struct Pokemon *egg, struct BoxPokemon *father, struc
{
enum Ability fatherAbility = GetBoxMonData(father, MON_DATA_ABILITY_NUM);
enum Ability motherAbility = GetBoxMonData(mother, MON_DATA_ABILITY_NUM);
- u16 motherSpecies = GetBoxMonData(mother, MON_DATA_SPECIES);
+ enum Species motherSpecies = GetBoxMonData(mother, MON_DATA_SPECIES);
enum Ability inheritAbility = motherAbility;
if (motherSpecies == SPECIES_DITTO)
@@ -770,7 +770,7 @@ static void InheritAbility(struct Pokemon *egg, struct BoxPokemon *father, struc
u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
{
u16 numEggMoves;
- u16 species;
+ enum Species species;
u32 i;
const u16 *eggMoveLearnset;
@@ -787,7 +787,7 @@ u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
return numEggMoves;
}
-u8 GetEggMovesBySpecies(u16 species, u16 *eggMoves)
+u8 GetEggMovesBySpecies(enum Species species, u16 *eggMoves)
{
u16 numEggMoves;
const u16 *eggMoveLearnset;
@@ -805,7 +805,7 @@ u8 GetEggMovesBySpecies(u16 species, u16 *eggMoves)
return numEggMoves;
}
-bool8 SpeciesCanLearnEggMove(u16 species, enum Move move) //Move search PokedexPlus HGSS_Ui
+bool8 SpeciesCanLearnEggMove(enum Species species, enum Move move) //Move search PokedexPlus HGSS_Ui
{
u32 i;
const u16 *eggMoveLearnset = GetSpeciesEggMoves(species);
@@ -946,7 +946,7 @@ void RejectEggFromDayCare(void)
RemoveEggFromDayCare(&gSaveBlock1Ptr->daycare);
}
-static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare)
+static void AlterEggSpeciesWithIncenseItem(enum Species *species, struct DayCare *daycare)
{
u32 i;
enum Item motherItem, fatherItem;
@@ -975,7 +975,8 @@ static const struct {
static void GiveMoveIfItem(struct Pokemon *mon, struct DayCare *daycare)
{
- u16 i, species = GetMonData(mon, MON_DATA_SPECIES);
+ u16 i;
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
enum Item motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM);
enum Item fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM);
@@ -993,11 +994,11 @@ static void GiveMoveIfItem(struct Pokemon *mon, struct DayCare *daycare)
STATIC_ASSERT(P_SCATTERBUG_LINE_FORM_BREED == SPECIES_SCATTERBUG_ICY_SNOW || (P_SCATTERBUG_LINE_FORM_BREED >= SPECIES_SCATTERBUG_POLAR && P_SCATTERBUG_LINE_FORM_BREED <= SPECIES_SCATTERBUG_POKEBALL), ScatterbugLineFormBreedMustBeAValidScatterbugForm);
-static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parentSlots)
+static enum Species DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parentSlots)
{
u32 i;
- u32 species[DAYCARE_MON_COUNT];
- u32 eggSpecies, parentSpecies;
+ enum Species species[DAYCARE_MON_COUNT];
+ enum Species eggSpecies, parentSpecies;
bool32 hasMotherEverstone, hasFatherEverstone, motherIsForeign, fatherIsForeign;
bool32 motherEggSpecies, fatherEggSpecies;
u32 currentRegion = GetCurrentRegion();
@@ -1075,7 +1076,7 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent
static void _GiveEggFromDaycare(struct DayCare *daycare)
{
struct Pokemon egg;
- u16 species;
+ enum Species species;
u8 parentSlots[DAYCARE_MON_COUNT] = {0};
bool8 isEgg;
@@ -1102,7 +1103,7 @@ static void _GiveEggFromDaycare(struct DayCare *daycare)
RemoveEggFromDayCare(daycare);
}
-void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
+void CreateEgg(struct Pokemon *mon, enum Species species, bool8 setHotSpringsLocation)
{
u8 metLevel;
enum PokeBall ball;
@@ -1130,7 +1131,7 @@ void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
}
-static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare)
+static void SetInitialEggData(struct Pokemon *mon, enum Species species, struct DayCare *daycare)
{
u32 personality;
enum PokeBall ball;
@@ -1246,7 +1247,7 @@ static void _GetDaycareMonNicknames(struct DayCare *daycare)
}
}
-u16 GetSelectedMonNicknameAndSpecies(void)
+enum Species GetSelectedMonNicknameAndSpecies(void)
{
struct BoxPokemon *boxmon = GetSelectedBoxMonFromPcOrParty();
GetBoxMonNickname(boxmon, gStringVar1);
@@ -1306,7 +1307,7 @@ u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
{
u32 i;
u16 eggGroups[DAYCARE_MON_COUNT][EGG_GROUPS_PER_MON];
- u16 species[DAYCARE_MON_COUNT];
+ enum Species species[DAYCARE_MON_COUNT];
u32 trainerIds[DAYCARE_MON_COUNT];
u32 genders[DAYCARE_MON_COUNT];
diff --git a/src/debug.c b/src/debug.c
index 1825cc6752..cd11ca357c 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -26,6 +26,7 @@
#include "m4a.h"
#include "main.h"
#include "main_menu.h"
+#include "match_call.h"
#include "malloc.h"
#include "map_name_popup.h"
#include "menu.h"
@@ -208,7 +209,7 @@ struct DebugMenuOption
struct DebugMonData
{
- u16 species;
+ enum Species species;
u8 level;
bool8 isShiny:1;
u8 nature:5;
@@ -1082,18 +1083,18 @@ static u8 Debug_GenerateListTrainerMenu(void)
}
break;
case 6:
- if (I_VS_SEEKER_CHARGING || !isRealFight || rematchTableId == -1)
+ if (FREE_MATCH_CALL || I_VS_SEEKER_CHARGING || !isRealFight || rematchTableId == -1)
{
noDraw = TRUE;
break;
}
- if (gSaveBlock1Ptr->trainerRematches[rematchTableId])
+ if (GetActiveTrainerRematches(rematchTableId))
StringCopy(gStringVar1, COMPOUND_STRING("{COLOR GREEN} TRUE"));
else
StringCopy(gStringVar1, COMPOUND_STRING("{COLOR RED} FALSE"));
break;
case 8:
- if (I_VS_SEEKER_CHARGING == 0)
+ if (FREE_MATCH_CALL || I_VS_SEEKER_CHARGING == 0)
noDraw = TRUE;
break;
}
@@ -2140,12 +2141,12 @@ static void DebugAction_Trainers_SetRematch(u8 taskId)
static void DebugAction_Trainers_SetRematchReadiness(u8 taskId)
{
- if (gSaveBlock1Ptr->trainerRematches[sDebugMenuListData->data[1]] == -1)
+ if (sDebugMenuListData->data[1] == -1)
return;
- if (gSaveBlock1Ptr->trainerRematches[sDebugMenuListData->data[1]])
- gSaveBlock1Ptr->trainerRematches[sDebugMenuListData->data[1]] = FALSE;
+ if (GetActiveTrainerRematches(sDebugMenuListData->data[1]))
+ SetActiveTrainerRematches(sDebugMenuListData->data[1], FALSE);
else
- gSaveBlock1Ptr->trainerRematches[sDebugMenuListData->data[1]] = TRUE;
+ SetActiveTrainerRematches(sDebugMenuListData->data[1], TRUE);
}
static void DebugAction_Trainers_TryBattle(u8 taskId)
@@ -2192,7 +2193,7 @@ static void DebugAction_Trainers_TryBattle(u8 taskId)
static void DebugAction_Trainers_RechargeVsSeeker(u8 taskId)
{
- gSaveBlock1Ptr->trainerRematchStepCounter = VSSEEKER_RECHARGE_STEPS;
+ SetTrainerRematchStepCounter(VSSEEKER_RECHARGE_STEPS);
MapResetTrainerRematches(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
ScriptContext_SetupScript(EventScript_VsSeekerChargingDone);
Debug_DestroyMenu_Full(taskId);
@@ -2421,7 +2422,7 @@ static void DebugAction_FlagsVars_PokedexFlags_All(u8 taskId)
static void DebugAction_FlagsVars_PokedexFlags_Reset(u8 taskId)
{
int boxId, boxPosition, partyId;
- u16 species;
+ enum Species species;
// Reset Pokedex to emtpy
memset(&gSaveBlock1Ptr->dexCaught, 0, sizeof(gSaveBlock1Ptr->dexCaught));
@@ -2783,7 +2784,7 @@ static void ResetMonDataStruct(struct DebugMonData *sDebugMonData)
#define tIterator data[7]
#define tIsEgg data[8]
-static void Debug_Display_SpeciesInfo(u32 species, u32 number, u32 digit, u8 windowId)
+static void Debug_Display_SpeciesInfo(enum Species species, u32 number, u32 digit, u8 windowId)
{
u8 *end;
StringCopy(gStringVar2, gText_DigitIndicator[digit]);
@@ -2944,7 +2945,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId)
{
PlaySE(SE_SELECT);
Debug_HandleInput_Numeric(taskId, 1, NUM_SPECIES - 1, DEBUG_NUMBER_DIGITS_ITEMS);
- u32 species = gTasks[taskId].tInput;
+ enum Species species = gTasks[taskId].tInput;
if (!IsSpeciesEnabled(species))
species = SPECIES_NONE;
Debug_Display_SpeciesInfo(species, gTasks[taskId].tInput, gTasks[taskId].tDigit, gTasks[taskId].tSubWindowId);
@@ -3502,7 +3503,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu
u8 iv_val;
u8 EVs[NUM_STATS];
u8 ev_val;
- u16 species = sDebugMonData->species;
+ enum Species species = sDebugMonData->species;
u8 level = sDebugMonData->level;
bool8 isShiny = sDebugMonData->isShiny;
u8 nature = sDebugMonData->nature;
@@ -3745,7 +3746,7 @@ static void DebugAction_PCBag_Fill_PCBoxes_Fast(u8 taskId) //Credit: Sierraffini
{
int boxId, boxPosition;
struct BoxPokemon boxMon;
- u16 species = SPECIES_BULBASAUR;
+ enum Species species = SPECIES_BULBASAUR;
u8 speciesName[POKEMON_NAME_LENGTH + 1];
CreateBoxMon(&boxMon, species, 100, Random32(), OTID_STRUCT_PLAYER_ID);
@@ -3776,7 +3777,7 @@ static void DebugAction_PCBag_Fill_PCBoxes_Slow(u8 taskId)
{
int boxId, boxPosition;
struct BoxPokemon boxMon;
- u32 species = SPECIES_BULBASAUR;
+ enum Species species = SPECIES_BULBASAUR;
bool8 spaceAvailable = FALSE;
for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++)
@@ -4685,7 +4686,7 @@ static void DebugAction_Party_HealParty(u8 taskId)
void DebugNative_GetAbilityNames(void)
{
- u32 species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES);
StringCopy(gStringVar1, gAbilitiesInfo[GetAbilityBySpecies(species, 0)].name);
StringCopy(gStringVar2, gAbilitiesInfo[GetAbilityBySpecies(species, 1)].name);
StringCopy(gStringVar3, gAbilitiesInfo[GetAbilityBySpecies(species, 2)].name);
@@ -4910,6 +4911,8 @@ static void DebugAction_Party_BattleSingle(u8 taskId)
CreateNPCTrainerPartyFromTrainer(gEnemyParty, GetDebugAiTrainer(), FALSE, BATTLE_TYPE_TRAINER);
gBattleTypeFlags = BATTLE_TYPE_TRAINER;
+ if (sDebugTrainers[DIFFICULTY_NORMAL][DEBUG_TRAINER_AI].battleType == TRAINER_BATTLE_TYPE_DOUBLES)
+ gBattleTypeFlags |= BATTLE_TYPE_DOUBLE;
gDebugAIFlags = sDebugTrainers[DIFFICULTY_NORMAL][DEBUG_TRAINER_AI].aiFlags;
gIsDebugBattle = TRUE;
gBattleEnvironment = BattleSetup_GetEnvironmentId();
diff --git a/src/decompress.c b/src/decompress.c
index 3373e7072c..7c83242317 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -249,12 +249,12 @@ void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffe
DecompressDataWithHeaderWram(src->data, buffer);
}
-void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, s32 species, u32 personality)
+void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, enum Species species, u32 personality)
{
LoadSpecialPokePicIsEgg(dest, species, personality, isFrontPic, FALSE);
}
-void HandleLoadSpecialPokePicIsEgg(bool32 isFrontPic, void *dest, s32 species, u32 personality, bool32 isEgg)
+void HandleLoadSpecialPokePicIsEgg(bool32 isFrontPic, void *dest, enum Species species, u32 personality, bool32 isEgg)
{
LoadSpecialPokePicIsEgg(dest, species, personality, isFrontPic, isEgg);
}
@@ -1129,12 +1129,12 @@ static bool32 isModeSymDelta(enum CompressionMode mode)
return FALSE;
}
-void LoadSpecialPokePic(void *dest, s32 species, u32 personality, bool8 isFrontPic)
+void LoadSpecialPokePic(void *dest, enum Species species, u32 personality, bool8 isFrontPic)
{
LoadSpecialPokePicIsEgg(dest, species, personality, isFrontPic, FALSE);
}
-void LoadSpecialPokePicIsEgg(void *dest, s32 species, u32 personality, bool8 isFrontPic, bool32 isEgg)
+void LoadSpecialPokePicIsEgg(void *dest, enum Species species, u32 personality, bool8 isFrontPic, bool32 isEgg)
{
species = SanitizeSpeciesId(species);
if (species == SPECIES_UNOWN)
diff --git a/src/dexnav.c b/src/dexnav.c
index 2956a1d35a..35460c7492 100644
--- a/src/dexnav.c
+++ b/src/dexnav.c
@@ -86,9 +86,9 @@ enum Statuses
struct DexNavSearch
{
- u16 species;
- u16 moves[MAX_MON_MOVES];
- u16 heldItem;
+ enum Species species;
+ enum Move moves[MAX_MON_MOVES];
+ enum Item heldItem;
u8 abilityNum;
u8 potential;
u8 searchLevel;
@@ -119,9 +119,9 @@ struct DexNavGUI
MainCallback savedCallback;
u8 state;
u8 cursorSpriteId;
- u16 landSpecies[LAND_WILD_COUNT];
- u16 waterSpecies[WATER_WILD_COUNT];
- u16 hiddenSpecies[HIDDEN_WILD_COUNT];
+ enum Species landSpecies[LAND_WILD_COUNT];
+ enum Species waterSpecies[WATER_WILD_COUNT];
+ enum Species hiddenSpecies[HIDDEN_WILD_COUNT];
u8 cursorRow;
u8 cursorCol;
u8 environment;
@@ -135,7 +135,7 @@ struct DexNavGUI
EWRAM_DATA static struct DexNavSearch *sDexNavSearchDataPtr = NULL;
EWRAM_DATA static struct DexNavGUI *sDexNavUiDataPtr = NULL;
EWRAM_DATA static u8 *sBg1TilemapBuffer = NULL;
-EWRAM_DATA u16 gDexNavSpecies = SPECIES_NONE;
+EWRAM_DATA enum Species gDexNavSpecies = SPECIES_NONE;
//// Function Declarations
//GUI
@@ -144,13 +144,13 @@ static void Task_DexNavMain(u8 taskId);
static void PrintCurrentSpeciesInfo(void);
// SEARCH
static bool8 TryStartHiddenMonFieldEffect(enum EncounterType environment, u8 xSize, u8 ySize, bool8 smallScan);
-static void DexNavGenerateMoveset(u16 species, u8 searchLevel, u8 encounterLevel, u16 *moveDst);
-static u16 DexNavGenerateHeldItem(u16 species, u8 searchLevel);
-static u8 DexNavGetAbilityNum(u16 species, u8 searchLevel);
+static void DexNavGenerateMoveset(enum Species species, u8 searchLevel, u8 encounterLevel, u16 *moveDst);
+static u16 DexNavGenerateHeldItem(enum Species species, u8 searchLevel);
+static u8 DexNavGetAbilityNum(enum Species species, u8 searchLevel);
static u8 DexNavGeneratePotential(u8 searchLevel);
-static u8 DexNavTryGenerateMonLevel(u16 species, enum EncounterType environment);
-static u8 GetEncounterLevelFromMapData(u16 species, enum EncounterType environment);
-static void CreateDexNavWildMon(u16 species, u8 potential, u8 level, u8 abilityNum, enum Item item, enum Move *moves);
+static u8 DexNavTryGenerateMonLevel(enum Species species, enum EncounterType environment);
+static u8 GetEncounterLevelFromMapData(enum Species species, enum EncounterType environment);
+static void CreateDexNavWildMon(enum Species species, u8 potential, u8 level, u8 abilityNum, enum Item item, enum Move *moves);
static u8 GetPlayerDistance(s16 x, s16 y);
static u8 DexNavPickTile(enum EncounterType environment, u8 xSize, u8 ySize, bool8 smallScan);
static void DexNavProximityUpdate(void);
@@ -410,7 +410,7 @@ static s16 GetSearchWindowY(void)
}
#define SPECIES_ICON_X 28
-static void DrawDexNavSearchMonIcon(u16 species, u8 *dst, bool8 owned)
+static void DrawDexNavSearchMonIcon(enum Species species, u8 *dst, bool8 owned)
{
u8 spriteId;
@@ -449,7 +449,7 @@ static void AddSearchWindow(u8 width)
#define SEARCH_ARROW_X (WINDOW_MOVE_NAME_X + 90)
#define SEARCH_ARROW_Y 0
-static void AddSearchWindowText(u16 species, u8 proximity, u8 searchLevel, bool8 hidden)
+static void AddSearchWindowText(enum Species species, u8 proximity, u8 searchLevel, bool8 hidden)
{
u8 windowId = sDexNavSearchDataPtr->windowId;
@@ -511,7 +511,7 @@ static void AddSearchWindowText(u16 species, u8 proximity, u8 searchLevel, bool8
#define SEARCH_WINDOW_WIDTH 28
-static void DrawSearchWindow(u16 species, u8 potential, bool8 hidden)
+static void DrawSearchWindow(enum Species species, u8 potential, bool8 hidden)
{
u8 searchLevel = sDexNavSearchDataPtr->searchLevel;
@@ -779,7 +779,7 @@ static void LoadSearchIconData(void)
LoadCompressedSpriteSheetUsingHeap(&sHiddenMonIconSpriteSheet);
}
-static u8 GetSearchLevel(u16 species)
+static u8 GetSearchLevel(enum Species species)
{
u8 searchLevel;
#if USE_DEXNAV_SEARCH_LEVELS == TRUE
@@ -792,7 +792,7 @@ static u8 GetSearchLevel(u16 species)
static void SetUpDexNavSearch(void)
{
- u16 species = sDexNavSearchDataPtr->species;
+ enum Species species = sDexNavSearchDataPtr->species;
u8 searchLevel = GetSearchLevel(species);
// init sprites
@@ -837,7 +837,7 @@ static void DexNavSearchBail(const u8 *script)
ScriptContext_SetupScript(script);
}
-static bool8 InitDexNavSearch(u32 species, u32 environment)
+static bool8 InitDexNavSearch(enum Species species, u32 environment)
{
sDexNavSearchDataPtr = AllocZeroed(sizeof(struct DexNavSearch));
if (sDexNavSearchDataPtr == NULL)
@@ -924,7 +924,7 @@ static void DexNavUpdateDirectionArrow(void)
static void DexNavDrawIcons(void)
{
- u16 species = sDexNavSearchDataPtr->species;
+ enum Species species = sDexNavSearchDataPtr->species;
DrawSearchWindow(species, sDexNavSearchDataPtr->potential, FALSE);
DrawDexNavSearchMonIcon(species, &sDexNavSearchDataPtr->iconSpriteId, GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT));
@@ -995,7 +995,7 @@ static u8 GetMovementProximityBySearchLevel(void)
static void RevealHiddenMon(void)
{
- u16 species = sDexNavSearchDataPtr->species;
+ enum Species species = sDexNavSearchDataPtr->species;
// remove owned icon if it exists
if (sDexNavSearchDataPtr->ownedIconSpriteId != MAX_SPRITES)
@@ -1179,7 +1179,7 @@ static void DexNavUpdateSearchWindow(u8 proximity, u8 searchLevel)
//////////////////////////////
//// DEXNAV MON GENERATOR ////
//////////////////////////////
-static void CreateDexNavWildMon(u16 species, u8 potential, u8 level, u8 abilityNum, enum Item item, enum Move *moves)
+static void CreateDexNavWildMon(enum Species species, u8 potential, u8 level, u8 abilityNum, enum Item item, enum Move *moves)
{
struct Pokemon *mon = &gEnemyParty[0];
@@ -1202,7 +1202,7 @@ static void CreateDexNavWildMon(u16 species, u8 potential, u8 level, u8 abilityN
// gets a random level of the species based on map data.
//if it was a hidden encounter, updates the environment it is to be found from the wildheader encounterRate
-static u8 DexNavTryGenerateMonLevel(u16 species, enum EncounterType environment)
+static u8 DexNavTryGenerateMonLevel(enum Species species, enum EncounterType environment)
{
u8 levelBase = GetEncounterLevelFromMapData(species, environment);
u8 levelBonus = gSaveBlock3Ptr->dexNavChain / 5;
@@ -1219,7 +1219,7 @@ static u8 DexNavTryGenerateMonLevel(u16 species, enum EncounterType environment)
return levelBase + levelBonus;
}
-static void DexNavGenerateMoveset(u16 species, u8 searchLevel, u8 encounterLevel, u16 *moveDst)
+static void DexNavGenerateMoveset(enum Species species, u8 searchLevel, u8 encounterLevel, u16 *moveDst)
{
bool8 genMove = FALSE;
u16 randVal = Random() % 100;
@@ -1274,7 +1274,7 @@ static void DexNavGenerateMoveset(u16 species, u8 searchLevel, u8 encounterLevel
}
}
-static u16 DexNavGenerateHeldItem(u16 species, u8 searchLevel)
+static u16 DexNavGenerateHeldItem(enum Species species, u8 searchLevel)
{
u16 randVal = Random() % 100;
u8 searchLevelInfluence = searchLevel >> 1;
@@ -1302,7 +1302,7 @@ static u16 DexNavGenerateHeldItem(u16 species, u8 searchLevel)
return ITEM_NONE;
}
-static u8 DexNavGetAbilityNum(u16 species, u8 searchLevel)
+static u8 DexNavGetAbilityNum(enum Species species, u8 searchLevel)
{
bool8 genAbility = FALSE;
u16 randVal = Random() % 100;
@@ -1463,7 +1463,7 @@ static u8 DexNavGeneratePotential(u8 searchLevel)
return 0; // No potential
}
-static u8 GetEncounterLevelFromMapData(u16 species, enum EncounterType environment)
+static u8 GetEncounterLevelFromMapData(enum Species species, enum EncounterType environment)
{
u32 headerId = GetCurrentMapWildMonHeaderId();
enum TimeOfDay timeOfDay;
@@ -1718,7 +1718,7 @@ static bool8 CapturedAllLandMons(u32 headerId)
static bool8 CapturedAllWaterMons(u32 headerId)
{
u32 i;
- u16 species;
+ enum Species species;
u8 count = 0;
enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_WATER);
@@ -1751,7 +1751,7 @@ static bool8 CapturedAllWaterMons(u32 headerId)
static bool8 CapturedAllHiddenMons(u32 headerId)
{
u32 i;
- u16 species;
+ enum Species species;
u8 count = 0;
enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_HIDDEN);
@@ -1852,7 +1852,7 @@ static void DexNavFadeAndExit(void)
SetMainCallback2(DexNav_MainCB);
}
-static bool8 SpeciesInArray(u16 species, u8 section)
+static bool8 SpeciesInArray(enum Species species, u8 section)
{
u32 i;
enum NationalDexOrder dexNum = SpeciesToNationalPokedexNum(species);
@@ -1893,7 +1893,7 @@ static void DexNavLoadEncounterData(void)
u8 grassIndex = 0;
u8 waterIndex = 0;
u8 hiddenIndex = 0;
- u16 species;
+ enum Species species;
u32 i;
u32 headerId = GetCurrentMapWildMonHeaderId();
enum TimeOfDay timeOfDay;
@@ -1944,7 +1944,7 @@ static void DexNavLoadEncounterData(void)
}
}
-static void TryDrawIconInSlot(u16 species, s16 x, s16 y)
+static void TryDrawIconInSlot(enum Species species, s16 x, s16 y)
{
if (species == SPECIES_NONE || species > NUM_SPECIES)
CreateNoDataIcon(x, y); //'X' in slot
@@ -1958,7 +1958,7 @@ static void DrawSpeciesIcons(void)
{
s16 x, y;
u32 i;
- u16 species;
+ enum Species species;
LoadCompressedSpriteSheetUsingHeap(&sNoDataIconSpriteSheet);
for (i = 0; i < LAND_WILD_COUNT; i++)
@@ -1991,9 +1991,9 @@ static void DrawSpeciesIcons(void)
}
}
-static u16 DexNavGetSpecies(void)
+static enum Species DexNavGetSpecies(void)
{
- u16 species;
+ enum Species species;
switch (sDexNavUiDataPtr->cursorRow)
{
@@ -2067,7 +2067,7 @@ static void SetTypeIconPosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
static void PrintCurrentSpeciesInfo(void)
{
- u16 species = DexNavGetSpecies();
+ enum Species species = DexNavGetSpecies();
enum NationalDexOrder dexNum = SpeciesToNationalPokedexNum(species);
enum Type type1, type2;
@@ -2145,7 +2145,7 @@ static void PrintMapName(void)
CopyWindowToVram(WINDOW_REGISTERED, 3);
}
-static void PrintSearchableSpecies(u16 species)
+static void PrintSearchableSpecies(enum Species species)
{
FillWindowPixelBuffer(WINDOW_REGISTERED, PIXEL_FILL(TEXT_COLOR_TRANSPARENT));
PutWindowTilemap(WINDOW_REGISTERED);
@@ -2314,7 +2314,7 @@ static void Task_DexNavWaitFadeIn(u8 taskId)
static void Task_DexNavMain(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- u16 species;
+ enum Species species;
if (IsSEPlaying())
return;
@@ -2479,7 +2479,7 @@ bool32 TryFindHiddenPokemon(void)
// hidden pokemon
u32 headerId = GetCurrentMapWildMonHeaderId();
u8 index;
- u16 species;
+ enum Species species;
enum EncounterType environment;
enum TimeOfDay timeOfDay = GetTimeOfDayForEncounters(headerId, WILD_AREA_HIDDEN);
@@ -2612,7 +2612,7 @@ static void DrawHiddenSearchWindow(u8 width)
static void DexNavDrawHiddenIcons(void)
{
- u16 species = sDexNavSearchDataPtr->species;
+ enum Species species = sDexNavSearchDataPtr->species;
DrawHiddenSearchWindow(12);
DrawSearchIcon();
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 7f6c35ba5f..855cb6913c 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -212,7 +212,7 @@ static void SetRectangleCursorPos_GroupMode(s8, s8);
static void SetRectangleCursorPos_AlphabetMode(s8, s8);
static void SpriteCB_WordSelectCursor(struct Sprite *);
static void SetWordSelectCursorPos(u8, u8);
-static bool8 EasyChatIsNationalPokedexEnabled(void);
+static bool32 EasyChatIsNationalPokedexEnabled(void);
static u16 GetRandomUnlockedEasyChatPokemon(void);
static void SetUnlockedEasyChatGroups(void);
static void SetUnlockedWordsByAlphabet(void);
@@ -220,8 +220,8 @@ static u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
static u8 IsEasyChatWordUnlocked(u16);
static u16 SetSelectedWordGroup_GroupMode(u16);
static u16 SetSelectedWordGroup_AlphabetMode(u16);
-static bool8 IsEasyChatIndexAndGroupUnlocked(u16, u8);
-static int IsRestrictedWordSpecies(u16);
+static bool32 IsEasyChatIndexAndGroupUnlocked(u16, u8);
+static bool32 IsRestrictedWordSpecies(enum Species);
static void DoQuizAnswerEasyChatScreen(void);
static void DoQuizQuestionEasyChatScreen(void);
static void DoQuizSetAnswerEasyChatScreen(void);
@@ -5483,7 +5483,7 @@ static u16 UNUSED GetRandomUnlockedTrendySaying(void)
return EC_EMPTY_WORD;
}
-static bool8 EasyChatIsNationalPokedexEnabled(void)
+static bool32 EasyChatIsNationalPokedexEnabled(void)
{
return IsNationalPokedexEnabled();
}
@@ -5761,7 +5761,7 @@ static bool8 IsEasyChatGroupUnlocked2(u8 groupId)
return FALSE;
}
-static bool8 IsEasyChatIndexAndGroupUnlocked(u16 wordIndex, u8 groupId)
+static bool32 IsEasyChatIndexAndGroupUnlocked(u16 wordIndex, u8 groupId)
{
switch (groupId)
{
@@ -5783,7 +5783,7 @@ static bool8 IsEasyChatIndexAndGroupUnlocked(u16 wordIndex, u8 groupId)
// Pokรฉmon words in EC_GROUP_POKEMON_NATIONAL are always allowed (assuming the group is unlocked)
// unless they are in this group. If they are in this group (just Deoxys), they must also have been seen.
-static int IsRestrictedWordSpecies(u16 species)
+static bool32 IsRestrictedWordSpecies(enum Species species)
{
u32 i;
for (i = 0; i < ARRAY_COUNT(sRestrictedWordSpecies); i++)
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 4fb654954b..0303cb2fb4 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -60,7 +60,7 @@ struct EggHatchData
u8 windowId;
u8 unused_9;
u8 unused_A;
- u16 species;
+ enum Species species;
u8 textColor[3];
};
@@ -307,7 +307,7 @@ static const s16 sEggShardVelocities[][2] =
static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
{
- u16 species;
+ enum Species species;
u32 personality, pokerus;
enum PokeBall ball;
u8 i, friendship, language, gameMet, markings, isModernFatefulEncounter;
@@ -356,7 +356,8 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
static void AddHatchedMonToParty(u8 id)
{
u8 isEgg = 0x46; // ?
- enum NationalDexOrder species;
+ enum Species species;
+ enum NationalDexOrder nationalDexNum;
u8 name[POKEMON_NAME_LENGTH + 1];
u16 metLevel;
metloc_u8_t metLocation;
@@ -369,9 +370,9 @@ static void AddHatchedMonToParty(u8 id)
StringCopy(name, GetSpeciesName(species));
SetMonData(mon, MON_DATA_NICKNAME, name);
- species = SpeciesToNationalPokedexNum(species);
- GetSetPokedexFlag(species, FLAG_SET_SEEN);
- GetSetPokedexFlag(species, FLAG_SET_CAUGHT);
+ nationalDexNum = SpeciesToNationalPokedexNum(species);
+ GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN);
+ GetSetPokedexFlag(nationalDexNum, FLAG_SET_CAUGHT);
GetMonNickname(mon, gStringVar1);
@@ -419,7 +420,7 @@ static u8 EggHatchCreateMonSprite(u8 useAlt, u8 state, u8 partyId, u16 *speciesL
u8 position = 0;
u8 spriteId = 0;
struct Pokemon *mon = NULL;
- u16 species = SPECIES_NONE;
+ enum Species species = SPECIES_NONE;
if (useAlt == FALSE)
{
@@ -532,7 +533,7 @@ static void CB2_LoadEggHatch(void)
break;
case 3:
{
- u32 species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyId], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyId], MON_DATA_SPECIES);
if (GetSpeciesEggId(species) != EGG_ID_NONE)
{
u32 *tempSprite = malloc_and_decompress(gEggDatas[GetSpeciesEggId(species)].eggHatchGfx, NULL);
@@ -632,7 +633,7 @@ static void Task_EggHatchPlayBGM(u8 taskId)
static void CB2_EggHatch(void)
{
- u16 species;
+ enum Species species;
u8 gender;
u32 personality;
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 088a9d8a33..dd4eadffe2 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -199,7 +199,7 @@ static void SetSpriteDataForNormalStep(struct Sprite *, enum Direction, u8);
static void InitSpriteForFigure8Anim(struct Sprite *);
static bool8 AnimateSpriteInFigure8(struct Sprite *);
enum Direction GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2);
-static void FollowerSetGraphics(struct ObjectEvent *objEvent, u32 species, bool32 shiny, bool32 female);
+static void FollowerSetGraphics(struct ObjectEvent *objEvent, enum Species species, bool32 shiny, bool32 female);
static void ObjectEventSetGraphics(struct ObjectEvent *, const struct ObjectEventGraphicsInfo *);
static void SpriteCB_VirtualObject(struct Sprite *);
static void DoShadowFieldEffect(struct ObjectEvent *);
@@ -211,14 +211,14 @@ static u8 DoJumpSpriteMovement(struct Sprite *);
static u8 DoJumpSpecialSpriteMovement(struct Sprite *);
static void CreateLevitateMovementTask(struct ObjectEvent *);
static void DestroyLevitateMovementTask(u8);
-static u32 LoadDynamicFollowerPalette(u32 species, bool32 shiny, bool32 female);
-const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u32 species, bool32 shiny, bool32 female);
+static u32 LoadDynamicFollowerPalette(enum Species species, bool32 shiny, bool32 female);
+const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(enum Species species, bool32 shiny, bool32 female);
static bool8 NpcTakeStep(struct Sprite *);
static bool8 AreElevationsCompatible(u8, u8);
static void CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(u16 graphicsId, u16 movementType, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables);
-static u16 GetGraphicsIdForMon(u32 species, bool32 shiny, bool32 female);
-static u16 GetUnownSpecies(struct Pokemon *mon);
+static u16 GetGraphicsIdForMon(enum Species species, bool32 shiny, bool32 female);
+static enum Species GetUnownSpecies(struct Pokemon *mon);
static const struct SpriteFrameImage sPicTable_PechaBerryTree[];
@@ -1985,7 +1985,7 @@ static void UNUSED MakeSpriteTemplateFromObjectEventTemplate(const struct Object
// also can write palette tag to the template
static u32 LoadDynamicFollowerPaletteFromGraphicsId(u16 graphicsId, struct SpriteTemplate *template)
{
- u16 species = graphicsId & OBJ_EVENT_MON_SPECIES_MASK;
+ enum Species species = graphicsId & OBJ_EVENT_MON_SPECIES_MASK;
bool32 shiny = graphicsId & OBJ_EVENT_MON_SHINY;
bool32 female = graphicsId & OBJ_EVENT_MON_FEMALE;
u8 paletteNum = LoadDynamicFollowerPalette(species, shiny, female);
@@ -2115,7 +2115,7 @@ struct Pokemon *GetFirstLiveMon(void)
for (i = 0; i < PARTY_SIZE; i++)
{
struct Pokemon *mon = &gPlayerParty[i];
- u32 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_NONE)
continue;
@@ -2143,7 +2143,7 @@ struct ObjectEvent *GetFollowerObject(void)
}
// Return graphicsInfo for a pokemon species & form
-const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u32 species, bool32 shiny, bool32 female)
+const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(enum Species species, bool32 shiny, bool32 female)
{
const struct ObjectEventGraphicsInfo *graphicsInfo = NULL;
#if OW_POKEMON_OBJECT_EVENTS
@@ -2172,7 +2172,7 @@ const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u32 species, bool32
}
// Find, or load, the palette for the specified pokemon info
-static u32 LoadDynamicFollowerPalette(u32 species, bool32 shiny, bool32 female)
+static u32 LoadDynamicFollowerPalette(enum Species species, bool32 shiny, bool32 female)
{
u32 paletteNum;
// Use standalone palette, unless entry is OOB or NULL (fallback to front-sprite-based)
@@ -2226,7 +2226,7 @@ static u32 LoadDynamicFollowerPalette(u32 species, bool32 shiny, bool32 female)
}
// Set graphics & sprite for a follower object event by species & shininess.
-static void FollowerSetGraphics(struct ObjectEvent *objEvent, u32 species, bool32 shiny, bool32 female)
+static void FollowerSetGraphics(struct ObjectEvent *objEvent, enum Species species, bool32 shiny, bool32 female)
{
const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, shiny, female);
ObjectEventSetGraphics(objEvent, graphicsInfo);
@@ -2246,7 +2246,7 @@ static void FollowerSetGraphics(struct ObjectEvent *objEvent, u32 species, bool3
// Intended to be used for mid-movement form changes, etc.
static void RefreshFollowerGraphics(struct ObjectEvent *objEvent)
{
- u32 species = OW_SPECIES(objEvent);
+ enum Species species = OW_SPECIES(objEvent);
bool32 shiny = OW_SHINY(objEvent);
bool32 female = OW_FEMALE(objEvent);
const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, shiny, female);
@@ -2288,7 +2288,7 @@ static void RefreshFollowerGraphics(struct ObjectEvent *objEvent)
}
}
-u16 GetOverworldWeatherSpecies(u16 species)
+enum Species GetOverworldWeatherSpecies(enum Species species)
{
u32 i;
u32 weather = GetCurrentWeather();
@@ -2417,7 +2417,7 @@ bool32 IsFollowerVisible(void)
|| MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior));
}
-static bool8 SpeciesHasType(u16 species, u8 type)
+static bool8 SpeciesHasType(enum Species species, u8 type)
{
return GetSpeciesType(species, 0) == type || GetSpeciesType(species, 1) == type;
}
@@ -2465,7 +2465,7 @@ static enum Direction FindMetatileBehaviorWithinRange(s32 x, s32 y, u32 mb, u8 d
}
// Check a single follower message condition
-bool32 CheckMsgCondition(const struct MsgCondition *cond, struct Pokemon *mon, u32 species, struct ObjectEvent *obj)
+bool32 CheckMsgCondition(const struct MsgCondition *cond, struct Pokemon *mon, enum Species species, struct ObjectEvent *obj)
{
u32 multi;
if (species == SPECIES_NONE)
@@ -2531,7 +2531,7 @@ bool32 CheckMsgCondition(const struct MsgCondition *cond, struct Pokemon *mon, u
// Check if follower info can be displayed in the current situation;
// i.e, if all its conditions match
-bool32 CheckMsgInfo(const struct FollowerMsgInfoExtended *info, struct Pokemon *mon, u32 species, struct ObjectEvent *obj)
+bool32 CheckMsgInfo(const struct FollowerMsgInfoExtended *info, struct Pokemon *mon, enum Species species, struct ObjectEvent *obj)
{
u32 i;
@@ -11606,7 +11606,7 @@ bool8 MovementAction_WalkSlowStairsRight_Step1(struct ObjectEvent *objectEvent,
return FALSE;
}
-static u16 GetGraphicsIdForMon(u32 species, bool32 shiny, bool32 female)
+static u16 GetGraphicsIdForMon(enum Species species, bool32 shiny, bool32 female)
{
u16 graphicsId = species + OBJ_EVENT_MON;
if (shiny)
@@ -11616,7 +11616,7 @@ static u16 GetGraphicsIdForMon(u32 species, bool32 shiny, bool32 female)
return graphicsId;
}
-static u16 GetUnownSpecies(struct Pokemon *mon)
+static enum Species GetUnownSpecies(struct Pokemon *mon)
{
u32 form = GET_UNOWN_LETTER(mon->box.personality);
if (form == 0)
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
index 4f211a3350..4ab76ede6d 100644
--- a/src/evolution_graphics.c
+++ b/src/evolution_graphics.c
@@ -410,7 +410,7 @@ static void Task_Sparkles_CircleInward_End(u8 taskId)
#define tSpecies data[2] // Never read
-u8 EvolutionSparkles_SprayAndFlash(u16 species)
+u8 EvolutionSparkles_SprayAndFlash(enum Species species)
{
u8 taskId = CreateTask(Task_Sparkles_SprayAndFlash_Init, 0);
gTasks[taskId].tSpecies = species;
@@ -461,7 +461,7 @@ static void Task_Sparkles_SprayAndFlash_End(u8 taskId)
}
// Separate from EvolutionSparkles_SprayAndFlash for difference in fade color
-u8 EvolutionSparkles_SprayAndFlash_Trade(u16 species)
+u8 EvolutionSparkles_SprayAndFlash_Trade(enum Species species)
{
u8 taskId = CreateTask(Task_Sparkles_SprayAndFlashTrade_Init, 0);
gTasks[taskId].tSpecies = species;
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index ed6ff3fae8..21c47fc278 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -60,7 +60,7 @@ static void CB2_TradeEvolutionSceneUpdate(void);
static void EvoDummyFunc(void);
static void VBlankCB_EvolutionScene(void);
static void VBlankCB_TradeEvolutionScene(void);
-static void EvoScene_DoMonAnimAndCry(u8 monSpriteId, u16 speciesId);
+static void EvoScene_DoMonAnimAndCry(u8 monSpriteId, enum Species speciesId);
static bool32 EvoScene_IsMonAnimFinished(u8 monSpriteId);
static void StartBgAnimation(bool8 isLink);
static void StopBgAnimation(void);
@@ -180,8 +180,8 @@ static void Task_BeginEvolutionScene(u8 taskId)
case 1:
if (!gPaletteFade.active)
{
- u16 postEvoSpecies;
- bool8 canStopEvo;
+ enum Species postEvoSpecies;
+ bool32 canStopEvo;
u8 partyId;
mon = &gPlayerParty[gTasks[taskId].tPartyId];
@@ -196,7 +196,7 @@ static void Task_BeginEvolutionScene(u8 taskId)
}
}
-void BeginEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u8 partyId)
+void BeginEvolutionScene(struct Pokemon *mon, enum Species postEvoSpecies, bool32 canStopEvo, u8 partyId)
{
u8 taskId = CreateTask(Task_BeginEvolutionScene, 0);
gTasks[taskId].tState = 0;
@@ -206,10 +206,10 @@ void BeginEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopE
SetMainCallback2(CB2_BeginEvolutionScene);
}
-void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u8 partyId)
+void EvolutionScene(struct Pokemon *mon, enum Species postEvoSpecies, bool32 canStopEvo, u8 partyId)
{
u8 name[POKEMON_NAME_BUFFER_SIZE];
- u16 currSpecies;
+ enum Species currSpecies;
u32 personality;
bool32 isShiny;
u8 id;
@@ -311,10 +311,10 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u
static void CB2_EvolutionSceneLoadGraphics(void)
{
u8 id;
- u16 postEvoSpecies;
+ enum Species postEvoSpecies;
u32 personality;
struct Pokemon *mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId];
- bool8 isShiny;
+ bool32 isShiny;
postEvoSpecies = gTasks[sEvoStructPtr->evoTaskId].tPostEvoSpecies;
isShiny = GetMonData(mon, MON_DATA_IS_SHINY);
@@ -385,7 +385,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
mon = &gEnemyParty[TRADEMON_FROM_PC];
else
mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId];
- u16 postEvoSpecies = gTasks[sEvoStructPtr->evoTaskId].tPostEvoSpecies;
+ enum Species postEvoSpecies = gTasks[sEvoStructPtr->evoTaskId].tPostEvoSpecies;
switch (gMain.state)
{
@@ -467,13 +467,13 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
}
}
-void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSpriteId, u8 partyId)
+void TradeEvolutionScene(struct Pokemon *mon, enum Species postEvoSpecies, u8 preEvoSpriteId, u8 partyId)
{
u8 name[POKEMON_NAME_BUFFER_SIZE];
- u16 currSpecies;
+ enum Species currSpecies;
u32 personality;
u8 id;
- bool8 isShiny;
+ bool32 isShiny;
GetMonData(mon, MON_DATA_NICKNAME, name);
StringCopy_Nickname(gStringVar1, name);
@@ -547,7 +547,7 @@ static void CB2_TradeEvolutionSceneUpdate(void)
RunTasks();
}
-static void CreateShedinja(u32 preEvoSpecies, u32 postEvoSpecies, struct Pokemon *mon)
+static void CreateShedinja(enum Species preEvoSpecies, enum Species postEvoSpecies, struct Pokemon *mon)
{
u32 data = 0;
enum Item ball = ITEM_POKE_BALL;
@@ -1716,7 +1716,7 @@ static void RestoreBgAfterAnim(void)
Free(sBgAnimPal);
}
-static void EvoScene_DoMonAnimAndCry(u8 monSpriteId, u16 speciesId)
+static void EvoScene_DoMonAnimAndCry(u8 monSpriteId, enum Species speciesId)
{
DoMonFrontSpriteAnimation(&gSprites[monSpriteId], speciesId, FALSE, 0);
}
diff --git a/src/field_effect.c b/src/field_effect.c
index 75d3e689be..b67652f458 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -192,7 +192,7 @@ static void AnimateIndoorShowMonBg(struct Task *);
static bool8 SlideIndoorBannerOnscreen(struct Task *);
static bool8 SlideIndoorBannerOffscreen(struct Task *);
-static u8 InitFieldMoveMonSprite(u32, bool8, u32);
+static u8 InitFieldMoveMonSprite(enum Species, bool8, u32);
static void SpriteCB_FieldMoveMonSlideOnscreen(struct Sprite *);
static void SpriteCB_FieldMoveMonWaitAfterCry(struct Sprite *);
static void SpriteCB_FieldMoveMonSlideOffscreen(struct Sprite *);
@@ -1015,7 +1015,7 @@ u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority)
return CreateSprite(&sSpriteTemplate_NewGameBirch, x, y, subpriority);
}
-u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority)
+u8 CreateMonSprite_PicBox(enum Species species, s16 x, s16 y, u8 subpriority)
{
s32 spriteId = CreateMonPicSprite(species, FALSE, 0x8000, TRUE, x, y, 0, species);
PreservePaletteInWeather(IndexOfSpritePaletteTag(species) + 0x10);
@@ -1025,7 +1025,7 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority)
return spriteId;
}
-u8 CreateMonSprite_FieldMove(u16 species, bool8 isShiny, u32 personality, s16 x, s16 y, u8 subpriority)
+u8 CreateMonSprite_FieldMove(enum Species species, bool8 isShiny, u32 personality, s16 x, s16 y, u8 subpriority)
{
u16 spriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, x, y, 0, species);
PreservePaletteInWeather(gSprites[spriteId].oam.paletteNum + 0x10);
@@ -3267,7 +3267,7 @@ static bool8 SlideIndoorBannerOffscreen(struct Task *task)
#undef tBgOffset
#undef tMonSpriteId
-static u8 InitFieldMoveMonSprite(u32 species, bool8 isShiny, u32 personality)
+static u8 InitFieldMoveMonSprite(enum Species species, bool8 isShiny, u32 personality)
{
bool16 noDucking;
u8 monSprite;
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 492a5fc7b7..0ecaaa0a72 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -837,7 +837,7 @@ bool32 CanTriggerSpinEvolution()
{
for (u32 i = 0; i < PARTY_SIZE; i++)
{
- u16 species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_OVERWORLD_SPECIAL, 0, NULL, &canStopEvo, CHECK_EVO);
+ enum Species species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_OVERWORLD_SPECIAL, 0, NULL, &canStopEvo, CHECK_EVO);
if (species != SPECIES_NONE)
{
return TRUE;
diff --git a/src/field_poison.c b/src/field_poison.c
index 31b951b50e..bb57b61490 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -21,7 +21,7 @@
static bool32 IsMonValidSpecies(struct Pokemon *pokemon)
{
- u16 species = GetMonData(pokemon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(pokemon, MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_NONE || species == SPECIES_EGG)
return FALSE;
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 19de7da4de..792df979a0 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -1454,9 +1454,21 @@ static void Task_RushInjuredPokemonToCenter(u8 taskId)
{
DestroyTask(taskId);
if (gTasks[taskId].tIsPlayerHouse)
+ {
+ if (IS_FRLG)
+ StringCopy(gStringVar1, COMPOUND_STRING("PROF. OAK"));
+ else
+ StringCopy(gStringVar1, COMPOUND_STRING("PROF. BIRCH"));
ScriptContext_SetupScript(EventScript_AfterWhiteOutMomHeal);
+ }
+ else if (IS_FRLG)
+ {
+ ScriptContext_SetupScript(EventScript_AfterWhiteOutHeal_Frlg);
+ }
else
+ {
ScriptContext_SetupScript(EventScript_AfterWhiteOutHeal);
+ }
}
break;
}
diff --git a/src/field_specials.c b/src/field_specials.c
index ad20a10faa..315df6e451 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -167,7 +167,7 @@ static void AnimateElevatorWindowView(u16 nfloors, bool8 direction);
static void Task_AnimateElevatorWindowView(u8 taskId);
static void Task_RunPokemonLeagueLightingEffect(u8 taskId);
static void Task_CancelPokemonLeagueLightingEffect(u8 taskId);
-static u16 SampleResortGorgeousMon(void);
+static enum Species SampleResortGorgeousMon(void);
static u16 SampleResortGorgeousReward(void);
static void Task_ShakeScreen(u8 taskId);
static void Task_EndScreenShake(u8 taskId);
@@ -1335,7 +1335,7 @@ bool8 CheckLeadMonTough(void)
void IsGrassTypeInParty(void)
{
u8 i;
- u16 species;
+ enum Species species;
struct Pokemon *pokemon;
for (i = 0; i < PARTY_SIZE; i++)
{
@@ -1638,12 +1638,12 @@ u8 GetLeadMonIndex(void)
return 0;
}
-u16 ScriptGetPartyMonSpecies(void)
+enum Species ScriptGetPartyMonSpecies(void)
{
return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES_OR_EGG, NULL);
}
-u16 ScriptGetSelectedMonSpecies(void)
+enum Species ScriptGetSelectedMonSpecies(void)
{
struct BoxPokemon *boxmon = GetSelectedBoxMonFromPcOrParty();
return GetBoxMonData(boxmon, MON_DATA_SPECIES_OR_EGG);
@@ -4456,7 +4456,7 @@ bool32 CheckObjectAtXY(u32 x, u32 y)
return FALSE;
}
-bool32 CheckPartyHasSpecies(u32 givenSpecies)
+bool32 CheckPartyHasSpecies(enum Species givenSpecies)
{
u32 partyIndex;
@@ -4623,7 +4623,7 @@ u8 GetLeadMonFriendship(void)
return 0;
}
-enum Move GetFirstPartnerMove(u16 species)
+enum Move GetFirstPartnerMove(enum Species species)
{
switch (species)
{
@@ -5583,7 +5583,7 @@ void UpdateLoreleiDollCollection(void)
void SampleResortGorgeousMonAndReward(void)
{
- u16 requestedSpecies = VarGet(VAR_RESORT_GORGEOUS_REQUESTED_MON);
+ enum Species requestedSpecies = VarGet(VAR_RESORT_GORGEOUS_REQUESTED_MON);
if (requestedSpecies == SPECIES_NONE || requestedSpecies == 0xFFFF)
{
VarSet(VAR_RESORT_GORGEOUS_REQUESTED_MON, SampleResortGorgeousMon());
@@ -5593,10 +5593,10 @@ void SampleResortGorgeousMonAndReward(void)
StringCopy(gStringVar1, GetSpeciesName(VarGet(VAR_RESORT_GORGEOUS_REQUESTED_MON)));
}
-static u16 SampleResortGorgeousMon(void)
+static enum Species SampleResortGorgeousMon(void)
{
u16 i;
- u16 species;
+ enum Species species;
for (i = 0; i < 100; i++)
{
species = (Random() % (NUM_SPECIES - 1)) + 1;
@@ -5729,7 +5729,7 @@ void ForcePlayerToStartSurfing(void)
void UpdateTrainerCardPhotoIcons(void)
{
- u16 species[PARTY_SIZE];
+ enum Species species[PARTY_SIZE];
u32 personality[PARTY_SIZE];
u8 i;
u8 partyCount;
diff --git a/src/field_weather.c b/src/field_weather.c
index 069e50debc..2b2c172047 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -247,8 +247,8 @@ static void UpdateWeatherForms(void)
for (i = 0; i < PARTY_SIZE; i++)
{
struct Pokemon *mon = &gPlayerParty[i];
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
- u16 targetSpecies = GetOverworldWeatherSpecies(species);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species targetSpecies = GetOverworldWeatherSpecies(species);
if (species != targetSpecies)
{
SetMonData(mon, MON_DATA_SPECIES, &targetSpecies);
diff --git a/src/frontier_util.c b/src/frontier_util.c
index cf6e46d77c..e925b99396 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -46,8 +46,8 @@
struct FrontierBrainMon
{
- u16 species;
- u16 heldItem;
+ enum Species species;
+ enum Item heldItem;
u8 fixedIV;
u8 nature;
u8 evs[NUM_STATS];
@@ -2028,7 +2028,7 @@ static void CheckBattleTypeFlag(void)
gSpecialVar_Result = FALSE;
}
-static void AppendCaughtBannedMonSpeciesName(u16 species, u8 count, s32 numBannedMonsCaught)
+static void AppendCaughtBannedMonSpeciesName(enum Species species, u8 count, s32 numBannedMonsCaught)
{
if (count == 1)
;
@@ -2043,7 +2043,7 @@ static void AppendCaughtBannedMonSpeciesName(u16 species, u8 count, s32 numBanne
StringAppend(gStringVar1, GetSpeciesName(species));
}
-static void AppendIfValid(u16 species, u16 heldItem, u16 hp, enum FrontierLevelMode lvlMode, u8 monLevel, u16 *speciesArray, u16 *itemsArray, u8 *count)
+static void AppendIfValid(enum Species species, u16 heldItem, u16 hp, enum FrontierLevelMode lvlMode, u8 monLevel, u16 *speciesArray, u16 *itemsArray, u8 *count)
{
s32 i = 0;
@@ -2112,7 +2112,7 @@ static void CheckPartyIneligibility(void)
numEligibleMons = 0;
do
{
- u16 species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES_OR_EGG);
enum Item heldItem = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM);
u8 level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
u16 hp = GetMonData(&gPlayerParty[monId], MON_DATA_HP);
@@ -2136,7 +2136,7 @@ static void CheckPartyIneligibility(void)
if (numEligibleMons < toChoose)
{
u32 i, j;
- u32 baseSpecies = 0;
+ enum Species baseSpecies = 0;
u32 totalCaughtBanned = 0;
u32 totalPartyBanned = 0;
u32 partyBanned[PARTY_SIZE] = {0};
@@ -2155,7 +2155,7 @@ static void CheckPartyIneligibility(void)
for (i = 0; i < PARTY_SIZE; i++)
{
- u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_EGG || species == SPECIES_NONE)
continue;
if (IsSpeciesFrontierBanned(GET_BASE_SPECIES_ID(species)))
@@ -2648,7 +2648,7 @@ void CreateFrontierBrainPokemon(void)
}
}
-u16 GetFrontierBrainMonSpecies(u8 monId)
+enum Species GetFrontierBrainMonSpecies(u8 monId)
{
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
s32 symbol = GetFronterBrainSymbol();
@@ -3352,7 +3352,10 @@ static u16 *MakeCaughtBannesSpeciesList(u32 totalBannedSpecies)
u16 *list = AllocZeroed(sizeof(u16) * totalBannedSpecies);
for (u32 i = 0; i < NUM_SPECIES; i++)
{
- u32 baseSpecies = GET_BASE_SPECIES_ID(i);
+ if (!IsSpeciesEnabled(i))
+ continue;
+
+ enum Species baseSpecies = GET_BASE_SPECIES_ID(i);
if (baseSpecies == i && IsSpeciesFrontierBanned(baseSpecies))
{
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(baseSpecies), FLAG_GET_CAUGHT))
diff --git a/src/heal_location.c b/src/heal_location.c
index 0cec17233c..73f2e036d0 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -102,4 +102,5 @@ void SetWhiteoutRespawnWarpAndHealerNPC(struct WarpData *warp)
warp->x = sWhiteoutRespawnHealCenterMapIdxs[healLocationId - 1][2];
warp->y = sWhiteoutRespawnHealCenterMapIdxs[healLocationId - 1][3];
gSpecialVar_LastTalked = healNpcLocalId;
+ gSpecialVar_0x800B = healNpcLocalId;
}
diff --git a/src/international_string_util.c b/src/international_string_util.c
index 9aac5c9d3f..46c3d2ead7 100644
--- a/src/international_string_util.c
+++ b/src/international_string_util.c
@@ -82,7 +82,7 @@ int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu)
return finalWidth;
}
-void CopyMonCategoryText(u16 species, u8 *dest)
+void CopyMonCategoryText(enum Species species, u8 *dest)
{
u8 *str = StringCopy(dest, GetSpeciesCategory(species));
*str = CHAR_SPACE;
diff --git a/src/intro_frlg.c b/src/intro_frlg.c
index 57ffb2e4e1..3164a8317f 100644
--- a/src/intro_frlg.c
+++ b/src/intro_frlg.c
@@ -8,6 +8,7 @@
#include "load_save.h"
#include "m4a.h"
#include "main.h"
+#include "intro_frlg.h"
#include "malloc.h"
#include "menu.h"
#include "new_game.h"
diff --git a/src/line_break.c b/src/line_break.c
index 72f8d9d4ac..cacb9833de 100644
--- a/src/line_break.c
+++ b/src/line_break.c
@@ -295,7 +295,7 @@ void BreakSubStringAutomatic(u8 *src, u32 maxWidth, u32 screenLines, u8 fontId,
currWordIndex++;
while (currWordIndex < numWords)
{
- if (currLineWidth + spaceWidth + allWords[currWordIndex].width > maxWidth)
+ if (currLineWidth + spaceWidth + allWords[currWordIndex].width + ((toggleScrollPrompt == SHOW_SCROLL_PROMPT) ? SCROLL_PROMPT_WIDTH : 0) > maxWidth)
{
// go to next line
currLineIndex++;
diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c
index a75cce2f2a..facfdfabd7 100644
--- a/src/link_rfu_2.c
+++ b/src/link_rfu_2.c
@@ -2068,7 +2068,7 @@ void SetHostRfuWonderFlags(bool32 hasNews, bool32 hasCard)
gHostRfuGameData.compatibility.hasCard = hasCard;
}
-void SetTradeBoardRegisteredMonInfo(u32 type, u32 species, u32 level)
+void SetTradeBoardRegisteredMonInfo(u32 type, enum Species species, u32 level)
{
gHostRfuGameData.tradeType = type;
gHostRfuGameData.tradeSpecies = species;
diff --git a/src/mail.c b/src/mail.c
index e43a9300d2..d7a6beab9d 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -447,7 +447,7 @@ static const struct MailLayout sMailLayouts_Tall[] = {
void ReadMail(struct Mail *mail, MainCallback exitCallback, bool8 hasText)
{
u16 buffer[2];
- u16 species;
+ enum Species species;
sMailRead = AllocZeroed(sizeof(*sMailRead));
sMailRead->language = GAME_LANGUAGE;
diff --git a/src/mail_data.c b/src/mail_data.c
index 53af7e4ee9..3a0647e03f 100644
--- a/src/mail_data.c
+++ b/src/mail_data.c
@@ -46,7 +46,7 @@ u8 GiveMailToMonByItemId(struct Pokemon *mon, enum Item itemId)
{
u8 heldItem[2];
u8 id, i;
- u16 species;
+ enum Species species;
u32 personality;
heldItem[0] = itemId;
@@ -80,11 +80,11 @@ u8 GiveMailToMonByItemId(struct Pokemon *mon, enum Item itemId)
return MAIL_NONE;
}
-u16 SpeciesToMailSpecies(u16 species, u32 personality)
+u16 SpeciesToMailSpecies(enum Species species, u32 personality)
{
if (species == SPECIES_UNOWN)
{
- u32 species = GetUnownLetterByPersonality(personality) + UNOWN_OFFSET;
+ enum Species species = GetUnownLetterByPersonality(personality) + UNOWN_OFFSET;
return species;
}
diff --git a/src/match_call.c b/src/match_call.c
index db27c575ef..55e9f4a9ee 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -1777,7 +1777,7 @@ static u8 GetWaterEncounterSlot(void)
static void PopulateSpeciesFromTrainerLocation(int matchCallId, u8 *destStr)
{
- u16 species[2];
+ enum Species species[2];
int numSpecies;
u8 slot;
int i = 0;
@@ -2041,3 +2041,35 @@ void DrawMatchCallTextBoxBorder(u32 windowId, u32 tileOffset, u32 paletteId)
{
DrawMatchCallTextBoxBorder_Internal(windowId, tileOffset, paletteId);
}
+
+u32 GetTrainerRematchStepCounter(void)
+{
+#if FREE_MATCH_CALL == FALSE
+ return gSaveBlock1Ptr->trainerRematchStepCounter;
+#else
+ return 0;
+#endif
+}
+
+void SetTrainerRematchStepCounter(u32 value)
+{
+#if FREE_MATCH_CALL == FALSE
+ gSaveBlock1Ptr->trainerRematchStepCounter = value;
+#endif
+}
+
+u32 GetActiveTrainerRematches(u32 matchCallId)
+{
+#if FREE_MATCH_CALL == FALSE
+ return gSaveBlock1Ptr->trainerRematches[matchCallId];
+#else
+ return 0;
+#endif
+}
+
+void SetActiveTrainerRematches(u32 matchCallId, u32 value)
+{
+#if FREE_MATCH_CALL == FALSE
+ gSaveBlock1Ptr->trainerRematches[matchCallId] = value;
+#endif
+}
diff --git a/src/menu.c b/src/menu.c
index c3fadaeca6..f48f6a815e 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1844,12 +1844,12 @@ static void UNUSED UnusedBlitBitmapRect(const struct Bitmap *src, struct Bitmap
}
}
-static void UNUSED LoadMonIconPalAtOffset(u8 palOffset, u16 speciesId)
+static void UNUSED LoadMonIconPalAtOffset(u8 palOffset, enum Species speciesId)
{
LoadPalette(GetValidMonIconPalettePtr(speciesId), palOffset, PLTT_SIZE_4BPP);
}
-static void UNUSED DrawMonIconAtPos(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y)
+static void UNUSED DrawMonIconAtPos(u8 windowId, enum Species speciesId, u32 personality, u16 x, u16 y)
{
BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality), x, y, 32, 32);
}
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index 4dd46f0804..bc53f93058 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -1076,8 +1076,8 @@ void GetConditionMenuMonGfx(void *tilesDst, void *palDst, u16 boxId, u16 monId,
if (partyId != numMons)
{
- u16 species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
- bool8 isShiny = GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_SHINY, NULL);
+ enum Species species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
+ bool32 isShiny = GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_SHINY, NULL);
u32 personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL);
bool32 isEgg = GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_EGG, NULL);
diff --git a/src/move_relearner.c b/src/move_relearner.c
index 86bfe537f9..29ab1ba9fc 100644
--- a/src/move_relearner.c
+++ b/src/move_relearner.c
@@ -1170,7 +1170,7 @@ static void SortMovesAlphabetically(u16 *moves, u32 numMoves)
static u32 GetRelearnerLevelUpMoves(struct BoxPokemon *mon, u16 *moves)
{
u32 numMoves = 0;
- u32 species = GetBoxMonData(mon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetBoxMonData(mon, MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_EGG)
return 0;
@@ -1212,7 +1212,7 @@ static u32 GetRelearnerEggMoves(struct BoxPokemon *mon, u16 *moves)
if (!FlagGet(P_FLAG_EGG_MOVES) && !P_ENABLE_MOVE_RELEARNERS)
return 0;
- u32 species = GetBoxMonData(mon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetBoxMonData(mon, MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_EGG)
return 0;
@@ -1243,7 +1243,7 @@ static u32 GetRelearnerTMMoves(struct BoxPokemon *mon, u16 *moves)
if (!P_TM_MOVES_RELEARNER && !P_ENABLE_MOVE_RELEARNERS)
return 0;
- u32 species = GetBoxMonData(mon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetBoxMonData(mon, MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_EGG)
return 0;
@@ -1279,7 +1279,7 @@ static u32 GetRelearnerTutorMoves(struct BoxPokemon *mon, u16 *moves)
if (!FlagGet(P_FLAG_TUTOR_MOVES) && !P_ENABLE_MOVE_RELEARNERS)
return 0;
- u32 species = GetBoxMonData(mon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetBoxMonData(mon, MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_EGG)
return 0;
@@ -1329,7 +1329,7 @@ bool32 CanBoxMonRelearnMoves(struct BoxPokemon *boxMon, enum MoveRelearnerStates
static bool32 HasRelearnerLevelUpMoves(struct BoxPokemon *boxMon)
{
- u32 species = GetBoxMonData(boxMon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetBoxMonData(boxMon, MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_EGG)
return FALSE;
@@ -1361,7 +1361,7 @@ static bool32 HasRelearnerEggMoves(struct BoxPokemon *boxMon)
if (!FlagGet(P_FLAG_EGG_MOVES) && !P_ENABLE_MOVE_RELEARNERS)
return FALSE;
- u32 species = GetBoxMonData(boxMon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetBoxMonData(boxMon, MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_EGG)
return FALSE;
@@ -1388,7 +1388,7 @@ static bool32 HasRelearnerTMMoves(struct BoxPokemon *boxMon)
if (!P_TM_MOVES_RELEARNER && !P_ENABLE_MOVE_RELEARNERS)
return FALSE;
- u32 species = GetBoxMonData(boxMon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetBoxMonData(boxMon, MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_EGG)
return FALSE;
@@ -1419,7 +1419,7 @@ static bool32 HasRelearnerTutorMoves(struct BoxPokemon *boxMon)
if (!FlagGet(P_FLAG_TUTOR_MOVES) && !P_ENABLE_MOVE_RELEARNERS)
return FALSE;
- u32 species = GetBoxMonData(boxMon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetBoxMonData(boxMon, MON_DATA_SPECIES_OR_EGG);
if (species == SPECIES_EGG)
return FALSE;
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 067414a5f8..38e132101e 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -314,8 +314,8 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
{
struct Mail mail;
struct Pokemon pokemon;
- u16 species;
- u16 heldItem;
+ enum Species species;
+ enum Item heldItem;
u32 data = ScriptReadWord(ctx) - ctx->mOffset + ctx->mScriptBase;
void *pokemonPtr = (void *)data;
void *mailPtr = (void *)(data + sizeof(struct Pokemon));
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 611c852322..4eb0dc4988 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -177,7 +177,7 @@ struct NamingScreenData
const struct NamingScreenTemplate *template;
u8 templateNum;
u8 *destBuffer;
- u16 monSpecies;
+ enum Species monSpecies;
u16 monGender;
u32 monPersonality;
MainCallback returnCallback;
@@ -400,7 +400,7 @@ static bool8 IsWideLetter(u8);
static const u8 sText_MoveOkBack[] = _("{DPAD_NONE}MOVE {A_BUTTON}OK {B_BUTTON}BACK");
-void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback)
+void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpeciesOrPlayerGender, u16 monGender, u32 monPersonality, MainCallback returnCallback)
{
sNamingScreen = Alloc(sizeof(struct NamingScreenData));
if (!sNamingScreen)
@@ -410,7 +410,7 @@ void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGende
else
{
sNamingScreen->templateNum = templateNum;
- sNamingScreen->monSpecies = monSpecies;
+ sNamingScreen->monSpecies = monSpeciesOrPlayerGender;
sNamingScreen->monGender = monGender;
sNamingScreen->monPersonality = monPersonality;
sNamingScreen->destBuffer = destBuffer;
@@ -1404,7 +1404,7 @@ static void NamingScreen_CreatePlayerIcon(void)
u16 rivalGfxId;
u8 spriteId;
- rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, sNamingScreen->monSpecies);
+ rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, (enum Gender)sNamingScreen->monSpecies);
spriteId = CreateObjectGraphicsSprite(rivalGfxId, SpriteCallbackDummy, 56, 37, 0);
gSprites[spriteId].oam.priority = 3;
StartSpriteAnim(&gSprites[spriteId], ANIM_STD_GO_SOUTH);
diff --git a/src/overworld.c b/src/overworld.c
index 795dfed4a7..1d8a3fd4b7 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -222,7 +222,7 @@ EWRAM_DATA static struct WarpData sFixedDiveWarp = {0};
EWRAM_DATA static struct WarpData sFixedHoleWarp = {0};
EWRAM_DATA static mapsec_u16_t sLastMapSectionId = 0;
EWRAM_DATA static struct InitialPlayerAvatarState sInitialPlayerAvatarState = {0};
-EWRAM_DATA static u16 sAmbientCrySpecies = 0;
+EWRAM_DATA static enum Species sAmbientCrySpecies = SPECIES_NONE;
EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE;
EWRAM_DATA static u8 sHoursOverride = 0; // used to override apparent time of day hours
EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0};
diff --git a/src/ow_abilities.c b/src/ow_abilities.c
index be6b5fee7a..b395378b8e 100644
--- a/src/ow_abilities.c
+++ b/src/ow_abilities.c
@@ -4,13 +4,13 @@
#include "random.h"
#include "constants/pokemon.h"
-static UNUSED bool32 HasHalfChance(u32 species);
-static UNUSED bool32 HasTwoThirdsChance(u32 species);
-static UNUSED bool32 IsFalse(u32 species);
-static UNUSED bool32 IsTrue(u32 species);
-static UNUSED bool32 IsTrueIfUndiscoveredEggGroup(u32 species);
+static UNUSED bool32 HasHalfChance(enum Species species);
+static UNUSED bool32 HasTwoThirdsChance(enum Species species);
+static UNUSED bool32 IsFalse(enum Species species);
+static UNUSED bool32 IsTrue(enum Species species);
+static UNUSED bool32 IsTrueIfUndiscoveredEggGroup(enum Species species);
-const static bool32 (*sSynchronizeModes[]) (u32) =
+const static bool32 (*sSynchronizeModes[])(enum Species) =
{
#if OW_SYNCHRONIZE_NATURE == GEN_3
[WILDMON_ORIGIN] = HasHalfChance,
@@ -45,7 +45,7 @@ const static bool32 (*sSynchronizeModes[]) (u32) =
#endif
};
-const static bool32 (*sCuteCharmModes[]) (u32) =
+const static bool32 (*sCuteCharmModes[])(enum Species) =
{
[WILDMON_ORIGIN] = HasTwoThirdsChance,
[STATIC_WILDMON_ORIGIN] = HasTwoThirdsChance,
@@ -53,27 +53,27 @@ const static bool32 (*sCuteCharmModes[]) (u32) =
[GIFTMON_ORIGIN] = IsFalse,
};
-static UNUSED bool32 HasHalfChance(u32 species)
+static UNUSED bool32 HasHalfChance(enum Species species)
{
return Random() % 2;
}
-static UNUSED bool32 HasTwoThirdsChance(u32 species)
+static UNUSED bool32 HasTwoThirdsChance(enum Species species)
{
return Random() % 3;
}
-static UNUSED bool32 IsFalse(u32 species)
+static UNUSED bool32 IsFalse(enum Species species)
{
return FALSE;
}
-static UNUSED bool32 IsTrue(u32 species)
+static UNUSED bool32 IsTrue(enum Species species)
{
return TRUE;
}
-static UNUSED bool32 IsTrueIfUndiscoveredEggGroup(u32 species)
+static UNUSED bool32 IsTrueIfUndiscoveredEggGroup(enum Species species)
{
return (GetSpeciesEggGroup(species, 0) == EGG_GROUP_NO_EGGS_DISCOVERED);
}
@@ -90,7 +90,7 @@ static bool32 IsCuteCharmActive(void)
&& GetMonAbility(&gPlayerParty[0]) == ABILITY_CUTE_CHARM));
}
-u32 GetSynchronizedNature(enum GeneratedMonOrigin origin, u32 species)
+u32 GetSynchronizedNature(enum GeneratedMonOrigin origin, enum Species species)
{
if (!IsSynchronizeActive())
return NATURE_RANDOM;
@@ -99,7 +99,7 @@ u32 GetSynchronizedNature(enum GeneratedMonOrigin origin, u32 species)
return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % NUM_NATURES;
}
-u32 GetSynchronizedGender(enum GeneratedMonOrigin origin, u32 species)
+u32 GetSynchronizedGender(enum GeneratedMonOrigin origin, enum Species species)
{
if (!IsCuteCharmActive())
return MON_GENDER_RANDOM;
diff --git a/src/palette.c b/src/palette.c
index b858462bbf..ec8f43ef2f 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -220,7 +220,7 @@ void ResetPaletteFadeControl(void)
static u8 UpdateTimeOfDayPaletteFade(void)
{
u32 timePalettes;
- u16 copyPalettes;
+ u32 copyPalettes;
u16 *src;
u16 *dst;
diff --git a/src/party_menu.c b/src/party_menu.c
index f465ff7f20..bcf3230cd2 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -276,14 +276,14 @@ static enum CanMoveBeLearned CanTeachMove(struct Pokemon *, enum Move);
static void DisplayPartyPokemonBarDetail(u8, const u8 *, u8, const u8 *);
static void DisplayPartyPokemonBarDetailToFit(u8 windowId, const u8 *str, u8 color, const u8 *align, u32 width);
static void DisplayPartyPokemonLevel(u8, struct PartyMenuBox *);
-static void DisplayPartyPokemonGender(u8, u16, u8 *, struct PartyMenuBox *);
+static void DisplayPartyPokemonGender(u8, enum Species, u8 *, struct PartyMenuBox *);
static void DisplayPartyPokemonHP(u16 hp, u16 maxHp, struct PartyMenuBox *menuBox);
static void DisplayPartyPokemonMaxHP(u16, struct PartyMenuBox *);
static void DisplayPartyPokemonHPBar(u16, u16, struct PartyMenuBox *);
-static void CreatePartyMonIconSpriteParameterized(u16 species, u32 pid, bool32 isEgg, struct PartyMenuBox *menuBox, u8 priority);
-static void CreatePartyMonHeldItemSpriteParameterized(u16, enum Item, struct PartyMenuBox *);
-static void CreatePartyMonPokeballSpriteParameterized(u16, struct PartyMenuBox *);
-static void CreatePartyMonStatusSpriteParameterized(u16, u8, struct PartyMenuBox *);
+static void CreatePartyMonIconSpriteParameterized(enum Species species, u32 pid, bool32 isEgg, struct PartyMenuBox *menuBox, u8 priority);
+static void CreatePartyMonHeldItemSpriteParameterized(enum Species, enum Item, struct PartyMenuBox *);
+static void CreatePartyMonPokeballSpriteParameterized(enum Species, struct PartyMenuBox *);
+static void CreatePartyMonStatusSpriteParameterized(enum Species, u8, struct PartyMenuBox *);
// These next 4 functions are essentially redundant with the above 4
// The only difference is that rather than receive the data directly they retrieve it from the mon struct
static void CreatePartyMonHeldItemSprite(struct Pokemon *, struct PartyMenuBox *);
@@ -377,7 +377,7 @@ static void DisplayCantUseSurfMessage(void);
static void Task_FieldMoveExitAreaYesNo(u8);
static void Task_HandleFieldMoveExitAreaYesNoInput(u8);
static void Task_FieldMoveWaitForFade(u8);
-static u16 GetFieldMoveMonSpecies(void);
+static enum Species GetFieldMoveMonSpecies(void);
static void UpdatePartyMonHPBar(u8, struct Pokemon *);
static void SpriteCB_UpdatePartyMonIcon(struct Sprite *);
static void SpriteCB_BouncePartyMonIcon(struct Sprite *);
@@ -2538,7 +2538,7 @@ static void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct Pa
DisplayPartyPokemonGender(GetMonGender(mon), GetMonData(mon, MON_DATA_SPECIES), nickname, menuBox);
}
-static void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct PartyMenuBox *menuBox)
+static void DisplayPartyPokemonGender(u8 gender, enum Species species, u8 *nickname, struct PartyMenuBox *menuBox)
{
u8 palOffset = BG_PLTT_ID(GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM));
@@ -3886,8 +3886,8 @@ static void CursorCb_Store(u8 taskId)
// Register mon for the Trading Board in Union Room
static void CursorCb_Register(u8 taskId)
{
- u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES_OR_EGG);
- u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
+ enum Species species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
u8 isModernFatefulEncounter = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MODERN_FATEFUL_ENCOUNTER);
switch (CanRegisterMonForTradingBoard(*(struct RfuGameCompatibilityData *)GetHostRfuGameData(), species2, species, isModernFatefulEncounter))
@@ -3916,8 +3916,8 @@ static void CursorCb_Register(u8 taskId)
static void CursorCb_Trade1(u8 taskId)
{
- u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES_OR_EGG);
- u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
+ enum Species species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
u8 isModernFatefulEncounter = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MODERN_FATEFUL_ENCOUNTER);
u32 stringId = GetUnionRoomTradeMessageId(*(struct RfuGameCompatibilityData *)GetHostRfuGameData(), gRfuPartnerCompatibilityData, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, isModernFatefulEncounter);
@@ -4173,7 +4173,7 @@ static void Task_FieldMoveWaitForFade(u8 taskId)
}
}
-static u16 GetFieldMoveMonSpecies(void)
+static enum Species GetFieldMoveMonSpecies(void)
{
return GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
}
@@ -4297,13 +4297,13 @@ bool32 SetUpFieldMove_Dive(void)
static void CreatePartyMonIconSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox, u32 slot)
{
- u32 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
bool32 isEgg = GetMonData(mon, MON_DATA_IS_EGG);
CreatePartyMonIconSpriteParameterized(species, GetMonData(mon, MON_DATA_PERSONALITY), isEgg, menuBox, 1);
UpdatePartyMonHPBar(menuBox->monSpriteId, mon);
}
-static void CreatePartyMonIconSpriteParameterized(u16 species, u32 pid, bool32 isEgg, struct PartyMenuBox *menuBox, u8 priority)
+static void CreatePartyMonIconSpriteParameterized(enum Species species, u32 pid, bool32 isEgg, struct PartyMenuBox *menuBox, u8 priority)
{
if (species != SPECIES_NONE)
{
@@ -4391,7 +4391,7 @@ static void CreatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBo
}
}
-static void CreatePartyMonHeldItemSpriteParameterized(u16 species, enum Item item, struct PartyMenuBox *menuBox)
+static void CreatePartyMonHeldItemSpriteParameterized(enum Species species, enum Item item, struct PartyMenuBox *menuBox)
{
if (species != SPECIES_NONE)
{
@@ -4489,7 +4489,7 @@ static void CreatePartyMonPokeballSprite(struct Pokemon *mon, struct PartyMenuBo
menuBox->pokeballSpriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, menuBox->spriteCoords[6], menuBox->spriteCoords[7], 8);
}
-static void CreatePartyMonPokeballSpriteParameterized(u16 species, struct PartyMenuBox *menuBox)
+static void CreatePartyMonPokeballSpriteParameterized(enum Species species, struct PartyMenuBox *menuBox)
{
if (species != SPECIES_NONE)
{
@@ -4554,7 +4554,7 @@ static void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox
}
}
-static void CreatePartyMonStatusSpriteParameterized(u16 species, u8 status, struct PartyMenuBox *menuBox)
+static void CreatePartyMonStatusSpriteParameterized(enum Species species, u8 status, struct PartyMenuBox *menuBox)
{
if (species != SPECIES_NONE)
{
@@ -4744,7 +4744,7 @@ static void GetMedicineItemEffectMessage(enum Item item, u32 statusCured)
static bool32 NotUsingHPEVItemOnShedinja(struct Pokemon *mon, enum Item item)
{
- if (GetItemEffectType(item) == ITEM_EFFECT_HP_EV && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA)
+ if (GetItemEffectType(item) == ITEM_EFFECT_HP_EV && HasShedinjaHPHandling(GetMonData(mon, MON_DATA_SPECIES)))
return FALSE;
return TRUE;
}
@@ -5243,7 +5243,7 @@ static u16 ItemEffectToMonEv(struct Pokemon *mon, u8 effectType)
switch (effectType)
{
case ITEM_EFFECT_HP_EV:
- if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_SHEDINJA)
+ if (!HasShedinjaHPHandling(GetMonData(mon, MON_DATA_SPECIES)))
return GetMonData(mon, MON_DATA_HP_EV);
break;
case ITEM_EFFECT_ATK_EV:
@@ -5742,7 +5742,7 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task)
PlaySE(SE_SELECT);
if (cannotUseEffect)
{
- u32 targetSpecies = SPECIES_NONE;
+ enum Species targetSpecies = SPECIES_NONE;
bool32 canStopEvo = TRUE;
// Resets values to 0 so other means of teaching moves doesn't overwrite levels
@@ -5934,7 +5934,7 @@ static void CB2_ReturnToPartyMenuUsingRareCandy(void)
static void PartyMenuTryEvolution(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
- u32 targetSpecies = SPECIES_NONE;
+ enum Species targetSpecies = SPECIES_NONE;
bool32 canStopEvo = TRUE;
// Resets values to 0 so other means of teaching moves doesn't overwrite levels
@@ -6188,7 +6188,7 @@ void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task)
static void Task_TryItemUseFusionChange(u8 taskId);
static void SpriteCB_FormChangeIconMosaic(struct Sprite *sprite);
-u8 IsFusionMon(u16 species)
+u8 IsFusionMon(enum Species species)
{
u16 i;
const struct Fusion *itemFusion = gFusionTablePointers[species];
@@ -6267,7 +6267,7 @@ bool32 DoesMonHaveAnyMoves(struct Pokemon *mon)
bool32 TryItemUseFusionChange(u8 taskId, TaskFunc task)
{
- u16 targetSpecies = gTasks[taskId].fusionResult;
+ enum Species targetSpecies = gTasks[taskId].fusionResult;
s8 *slotPtr = GetCurrentPartySlotPtr();
*slotPtr = gTasks[taskId].firstFusionSlot;
if (gTasks[taskId].fusionType == FUSE_MON)
@@ -6316,7 +6316,7 @@ static void RestoreFusionMon(struct Pokemon *mon)
}
}
-static void DeleteInvalidFusionMoves(struct Pokemon *mon, u32 species)
+static void DeleteInvalidFusionMoves(struct Pokemon *mon, enum Species species)
{
for (u32 i = 0; i < MAX_MON_MOVES; i++)
{
@@ -6395,7 +6395,7 @@ static void Task_TryItemUseFusionChange(u8 taskId)
struct Sprite *icon = &gSprites[sPartyMenuBoxes[gTasks[taskId].firstFusionSlot].monSpriteId];
struct Pokemon *mon2;
struct Sprite *icon2 = &gSprites[sPartyMenuBoxes[gTasks[taskId].secondFusionSlot].monSpriteId];
- u16 targetSpecies;
+ enum Species targetSpecies;
switch (gTasks[taskId].tState)
{
@@ -6531,7 +6531,7 @@ void ItemUseCB_Fusion(u8 taskId, TaskFunc taskFunc)
{
u16 i;
struct Task *task = &gTasks[taskId];
- u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
const struct Fusion *itemFusion = gFusionTablePointers[species];
PlaySE(SE_SELECT);
@@ -6866,7 +6866,7 @@ void TryItemHoldFormChange(struct Pokemon *mon, s8 slotId)
{
if (TryFormChange(mon, FORM_CHANGE_ITEM_HOLD))
{
- u32 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
PlayCry_NormalNoDucking(species, 0, CRY_VOLUME_RS, CRY_VOLUME_RS);
FreeAndDestroyMonIconSprite(&gSprites[sPartyMenuBoxes[slotId].monSpriteId]);
CreatePartyMonIconSpriteParameterized(species, GetMonData(mon, MON_DATA_PERSONALITY), FALSE, &sPartyMenuBoxes[slotId], 1);
@@ -7255,7 +7255,7 @@ static u8 CheckBattleEntriesAndGetMessage(void)
maxBattlers = GetMaxBattleEntries();
for (i = 0; i < maxBattlers - 1; i++)
{
- u16 species = GetMonData(&party[order[i] - 1], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&party[order[i] - 1], MON_DATA_SPECIES);
enum Item item = GetMonData(&party[order[i] - 1], MON_DATA_HELD_ITEM);
for (j = i + 1; j < maxBattlers; j++)
{
diff --git a/src/pokeball.c b/src/pokeball.c
index de3bb97fe0..c8d9f5e4a7 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -732,7 +732,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
{
u8 wantedCry = gTasks[taskId].tCryTaskWantedCry;
s8 pan = gTasks[taskId].tCryTaskPan;
- u16 species = gTasks[taskId].tCryTaskSpecies;
+ enum Species species = gTasks[taskId].tCryTaskSpecies;
enum BattlerId battler = gTasks[taskId].tCryTaskBattler;
u8 monSpriteId = gTasks[taskId].tCryTaskMonSpriteId;
struct Pokemon *mon = (void *)(u32)((gTasks[taskId].tCryTaskMonPtr1 << 16) | (u16)(gTasks[taskId].tCryTaskMonPtr2));
@@ -1117,7 +1117,7 @@ static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 spritePalNum, u
#define sTrigIdx data[7]
// Pokรฉ Ball in Birch intro, and when receiving via trade
-void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriority, u8 delay, u32 fadePalettes, u16 species)
+void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriority, u8 delay, u32 fadePalettes, enum Species species)
{
u8 spriteId;
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index 9426b59f9b..bd77a0ee3e 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -55,7 +55,7 @@ struct PokeblockFeed
u8 animId;
u8 unused2;
bool8 noMonFlip;
- u16 species;
+ enum Species species;
u16 monAnimLength;
u16 timer;
u8 nature;
@@ -649,7 +649,7 @@ static void HandleInitBackgrounds(void)
static bool8 LoadMonAndSceneGfx(struct Pokemon *mon)
{
- u16 species;
+ enum Species species;
u32 personality;
bool32 isShiny;
@@ -837,7 +837,7 @@ static void Task_FadeOutPokeblockFeed(u8 taskId)
static u8 CreateMonSprite(struct Pokemon *mon)
{
- u16 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, MON_X, MON_Y, 2);
sPokeblockFeed->species = species;
diff --git a/src/pokedex.c b/src/pokedex.c
index c030f03564..2225ede052 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -283,9 +283,9 @@ static void PrintUnknownMonMeasurements(void);
static u8* GetUnknownMonHeightString(void);
static u8* GetUnknownMonWeightString(void);
static u8* ReplaceDecimalSeparator(const u8* originalString);
-static void PrintOwnedMonMeasurements(u16 species);
-static void PrintOwnedMonHeight(u16 species);
-static void PrintOwnedMonWeight(u16 species);
+static void PrintOwnedMonMeasurements(enum Species species);
+static void PrintOwnedMonHeight(enum Species species);
+static void PrintOwnedMonWeight(enum Species species);
static u8* ConvertMonHeightToImperialString(u32 height);
static u8* ConvertMonHeightToMetricString(u32 height);
static u8* ConvertMonWeightToImperialString(u32 weight);
@@ -2752,12 +2752,12 @@ static u8 ClearMonSprites(void)
return FALSE;
}
-static u16 GetPokemonSpriteToDisplay(u16 species)
+static u16 GetPokemonSpriteToDisplay(u16 index)
{
- if (species >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[species].dexNum == 0xFFFF)
+ if (index >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[index].dexNum == 0xFFFF)
return 0xFFFF;
- else if (sPokedexView->pokedexList[species].seen)
- return sPokedexView->pokedexList[species].dexNum;
+ else if (sPokedexView->pokedexList[index].seen)
+ return sPokedexView->pokedexList[index].dexNum;
else
return 0;
}
@@ -4007,7 +4007,7 @@ static void HighlightSubmenuScreenSelectBarItem(u8 a, u16 b)
#define tPersonalityLo 14
#define tPersonalityHi 15
-u8 DisplayCaughtMonDexPage(u16 species, bool32 isShiny, u32 personality)
+u8 DisplayCaughtMonDexPage(enum Species species, bool32 isShiny, u32 personality)
{
u8 taskId = 0;
if (POKEDEX_PLUS_HGSS)
@@ -4030,7 +4030,7 @@ static void LoadDexMonPalette(u32 taskId, bool32 isShiny)
LoadPalette(paletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP);
}
-u32 Pokedex_CreateCaughtMonSprite(u32 species, s32 x, s32 y)
+u32 Pokedex_CreateCaughtMonSprite(enum Species species, s32 x, s32 y)
{
u32 spriteId;
@@ -4044,7 +4044,7 @@ u32 Pokedex_CreateCaughtMonSprite(u32 species, s32 x, s32 y)
static void Task_DisplayCaughtMonDexPage(u8 taskId)
{
u8 spriteId;
- u16 species = gTasks[taskId].tSpecies;
+ enum Species species = gTasks[taskId].tSpecies;
enum NationalDexOrder dexNum = SpeciesToNationalPokedexNum(species);
switch (gTasks[taskId].tState)
@@ -4185,7 +4185,7 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry)
{
u8 str[0x10];
u8 str2[0x30];
- u16 species;
+ enum Species species;
const u8 *name;
const u8 *category;
const u8 *description;
@@ -4225,7 +4225,7 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry)
PrintInfoScreenText(description, GetStringCenterAlignXOffset(FONT_NORMAL, description, DISPLAY_WIDTH), 95);
}
-void PrintMonMeasurements(u16 species, u32 owned)
+void PrintMonMeasurements(enum Species species, u32 owned)
{
u32 x = GetMeasurementTextPositions(DEX_HEADER_X);
u32 yTop = GetMeasurementTextPositions(DEX_Y_TOP);
@@ -4312,13 +4312,13 @@ static u8* ReplaceDecimalSeparator(const u8* originalString)
return modifiedString;
}
-static void PrintOwnedMonMeasurements(u16 species)
+static void PrintOwnedMonMeasurements(enum Species species)
{
PrintOwnedMonHeight(species);
PrintOwnedMonWeight(species);
}
-static void PrintOwnedMonHeight(u16 species)
+static void PrintOwnedMonHeight(enum Species species)
{
u32 height = GetSpeciesHeight(species);
u8* heightString;
@@ -4340,7 +4340,7 @@ u8* ConvertMonHeightToString(u32 height)
return ConvertMonHeightToMetricString(height);
}
-static void PrintOwnedMonWeight(u16 species)
+static void PrintOwnedMonWeight(enum Species species)
{
u32 weight = GetSpeciesWeight(species);
u8* weightString;
@@ -4808,7 +4808,7 @@ static void UNUSED PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top)
#define NUM_FOOTPRINT_TILES 4
-void DrawFootprint(u8 windowId, u16 species)
+void DrawFootprint(u8 windowId, enum Species species)
{
u8 ALIGNED(4) footprint4bpp[TILE_SIZE_4BPP * NUM_FOOTPRINT_TILES];
const u8 *footprintGfx = NULL;
@@ -4887,7 +4887,7 @@ static u16 GetNextPosition(u8 direction, u16 position, u16 min, u16 max)
// Unown and Spinda use the personality of the first seen individual of that species
// All others use personality 0
-static u32 GetPokedexMonPersonality(u16 species)
+static u32 GetPokedexMonPersonality(enum Species species)
{
if (species == SPECIES_UNOWN || species == SPECIES_SPINDA)
{
@@ -4904,8 +4904,8 @@ static u32 GetPokedexMonPersonality(u16 species)
u16 CreateMonSpriteFromNationalDexNumber(enum NationalDexOrder nationalNum, s16 x, s16 y, u16 paletteSlot)
{
- nationalNum = NationalPokedexNumToSpecies(nationalNum);
- return CreateMonPicSprite(nationalNum, FALSE, GetPokedexMonPersonality(nationalNum), TRUE, x, y, paletteSlot, TAG_NONE);
+ enum Species species = NationalPokedexNumToSpecies(nationalNum);
+ return CreateMonPicSprite(species, FALSE, GetPokedexMonPersonality(species), TRUE, x, y, paletteSlot, TAG_NONE);
}
static u16 GetPokemonScaleFromNationalDexNumber(u16 nationalNum)
@@ -4935,7 +4935,7 @@ static u16 CreateSizeScreenTrainerPic(u16 species, s16 x, s16 y, s8 paletteSlot)
static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, enum BodyColor bodyColor, enum Type type1, enum Type type2)
{
- u16 species;
+ enum Species species;
u16 i;
u16 resultsCount;
enum Type types[2];
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
index 7698d99ff3..509aec05ba 100644
--- a/src/pokedex_area_screen.c
+++ b/src/pokedex_area_screen.c
@@ -88,7 +88,7 @@ struct
/*0x004*/ MainCallback prev; // unused
/*0x008*/ MainCallback next; // unused
/*0x00C*/ u16 state; // unused
- /*0x00E*/ u16 species;
+ /*0x00E*/ enum Species species;
/*0x010*/ struct OverworldArea overworldAreasWithMons[MAX_AREA_HIGHLIGHTS];
/*0x110*/ u16 numOverworldAreas;
/*0x112*/ u16 numSpecialAreas;
@@ -116,13 +116,13 @@ struct
EWRAM_DATA u8 gAreaTimeOfDay = 0;
-static void FindMapsWithMon(u16);
+static void FindMapsWithMon(enum Species);
static void BuildAreaGlowTilemap(void);
static void SetAreaHasMon(u16, u16);
static void SetSpecialMapHasMon(u16, u16);
static mapsec_u16_t GetRegionMapSectionId(u8, u8);
-static bool8 MapHasSpecies(const struct WildEncounterTypes *, u16);
-static bool8 MonListHasSpecies(const struct WildPokemonInfo *, u16, u16);
+static bool8 MapHasSpecies(const struct WildEncounterTypes *, enum Species);
+static bool8 MonListHasSpecies(const struct WildPokemonInfo *, enum Species, u16);
static void DoAreaGlow(void);
static void Task_ShowPokedexAreaScreen(u8 taskId);
static void Task_UpdatePokedexAreaScreen(u8 taskId);
@@ -293,7 +293,7 @@ static bool8 DrawAreaGlow(void)
return TRUE;
}
-static void FindMapsWithMon(u16 species)
+static void FindMapsWithMon(enum Species species)
{
enum RegionMapType currentRegionMapType;
u16 i;
@@ -437,7 +437,7 @@ static mapsec_u16_t GetRegionMapSectionId(u8 mapGroup, u8 mapNum)
return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId;
}
-static bool8 MapHasSpecies(const struct WildEncounterTypes *info, u16 species)
+static bool8 MapHasSpecies(const struct WildEncounterTypes *info, enum Species species)
{
u32 headerId = GetCurrentMapWildMonHeaderId();
u8 currentMapGroup = gWildMonHeaders[headerId].mapGroup;
@@ -467,7 +467,7 @@ static bool8 MapHasSpecies(const struct WildEncounterTypes *info, u16 species)
return FALSE;
}
-static bool8 MonListHasSpecies(const struct WildPokemonInfo *info, u16 species, u16 size)
+static bool8 MonListHasSpecies(const struct WildPokemonInfo *info, enum Species species, u16 size)
{
u16 i;
if (info != NULL)
@@ -719,7 +719,7 @@ bool32 ShouldShowAreaUnknownLabel(void)
#define tState data[0]
-void DisplayPokedexAreaScreen(u16 species, u8 *screenSwitchState, enum TimeOfDay timeOfDay, enum PokedexAreaScreenState areaState)
+void DisplayPokedexAreaScreen(enum Species species, u8 *screenSwitchState, enum TimeOfDay timeOfDay, enum PokedexAreaScreenState areaState)
{
u8 taskId;
diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
index 554652b902..6c88394a19 100644
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -44,12 +44,12 @@ struct PokedexCryScreen
u8 waveformPreviousY;
u16 unk; // Never read
u8 playStartPos;
- u16 species;
+ enum Species species;
u8 cryOverrideCountdown;
u8 cryRepeatDelay;
};
-static void PlayCryScreenCry(u16);
+static void PlayCryScreenCry(enum Species);
static void BufferCryWaveformSegment(void);
static void DrawWaveformFlatline(void);
static void AdvancePlayhead(u8);
@@ -322,7 +322,7 @@ void UpdateCryWaveformWindow(u8 windowId)
sDexCryScreen->cryState++;
}
-void CryScreenPlayButton(u16 species)
+void CryScreenPlayButton(enum Species species)
{
if (gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_PAUSE && !sDexCryScreen->cryOverrideCountdown)
{
@@ -343,7 +343,7 @@ void CryScreenPlayButton(u16 species)
}
}
-static void PlayCryScreenCry(u16 species)
+static void PlayCryScreenCry(enum Species species)
{
PlayCry_NormalNoDucking(species, 0, CRY_VOLUME_RS, CRY_PRIORITY_NORMAL);
sDexCryScreen->cryState = 1;
@@ -575,4 +575,3 @@ static void SetCryMeterNeedleTarget(s8 offset)
sCryMeterNeedle->targetRotation = rotation;
sCryMeterNeedle->moveIncrement = NEEDLE_MOVE_INCREMENT;
}
-
diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c
index f651bd26b6..54ddc0dad1 100644
--- a/src/pokedex_plus_hgss.c
+++ b/src/pokedex_plus_hgss.c
@@ -286,6 +286,9 @@ static const u32 sPokedexPlusHGSS_ScreenSearchNational_Tilemap[] = INCBIN_U32("g
#define MON_PAGE_X 48
#define MON_PAGE_Y 56
+// Width of pixels one line of text in the species box can be
+#define STATS_PAGE_SPECIES_MAX_WIDTH 55
+
static EWRAM_DATA struct PokedexView *sPokedexView = NULL;
static EWRAM_DATA u16 sLastSelectedPokemon = 0;
static EWRAM_DATA u8 sPokeBallRotation = 0;
@@ -336,7 +339,7 @@ struct PokedexListItem
struct PokemonStats
{
- u16 species;
+ enum Species species;
u8 genderRatio;
u8 baseHP;
u8 baseSpeed;
@@ -367,7 +370,7 @@ struct EvoScreenData
{
bool8 fromEvoPage;
u8 numAllEvolutions;
- u16 targetSpecies[10];
+ enum Species targetSpecies[10];
u8 numSeen;
bool8 seen[10];
u8 menuPos;
@@ -412,7 +415,7 @@ struct PokedexView
struct PokemonStats sPokemonStats;
struct EvoScreenData sEvoScreenData;
struct FromScreenData sFormScreenData;
- u16 formSpecies;
+ enum Species formSpecies;
u16 selectedMonSpriteId;
u16 pokeBallRotationStep;
u16 pokeBallRotationBackup;
@@ -569,8 +572,8 @@ static void Task_LoadEvolutionScreen(u8 taskId);
static void Task_HandleEvolutionScreenInput(u8 taskId);
static void Task_SwitchScreensFromEvolutionScreen(u8 taskId);
static void Task_ExitEvolutionScreen(u8 taskId);
-static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u32 *depth_i, u32 alreadyPrintedIcons[], u32 *icon_depth_i, u32 numLines);
-static u8 PrintPreEvolutions(u8 taskId, u16 species);
+static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, enum Species species, u8 depth, u32 *depth_i, u32 alreadyPrintedIcons[], u32 *icon_depth_i, u32 numLines);
+static u8 PrintPreEvolutions(u8 taskId, enum Species species);
//Stat bars on scrolling screens
static void TryDestroyStatBars(void);
static void TryDestroyStatBarsBg(void);
@@ -582,7 +585,7 @@ static void SpriteCB_StatBarsBg(struct Sprite *sprite);
//Forms screen
static void Task_LoadFormsScreen(u8 taskId);
static void Task_HandleFormsScreenInput(u8 taskId);
-static void PrintForms(u8 taskId, u16 species);
+static void PrintForms(u8 taskId, enum Species species);
static void Task_SwitchScreensFromFormsScreen(u8 taskId);
static void Task_ExitFormsScreen(u8 taskId);
@@ -595,8 +598,12 @@ static u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum);
//Evo screen
u32 GetSpeciesNameFontId(u32 nameWidth);
u32 GetSpeciesNameWidthInChars(const u8 *speciesName);
-bool32 IsSpeciesAlcremie(u32 targetSpecies);
+bool32 IsSpeciesAlcremie(enum Species targetSpecies);
bool32 IsItemSweet(enum Item item);
+static void TryLoadDarkModeArrowPalette(void);
+
+//Cry screen
+static void FillCryMeterWindowTilemapWithBg(void);
//Stat bars by DizzyEgg
#define TAG_STAT_BAR 4097
@@ -1140,6 +1147,7 @@ static const struct CompressedSpriteSheet sInterfaceSpriteSheet[] =
static const struct SpritePalette sInterfaceSpritePalette[] =
{
{sPokedexPlusHGSS_Default_Pal, TAG_DEX_INTERFACE},
+ {sPokedexPlusHGSS_Default_dark_Pal, TAG_DEX_INTERFACE},
{0}
};
@@ -2377,7 +2385,7 @@ static bool8 LoadPokedexListPage(u8 page)
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
LoadCompressedSpriteSheet(&sInterfaceSpriteSheet[HGSS_DECAPPED]);
- LoadSpritePalettes(sInterfaceSpritePalette);
+ LoadSpritePalette(&sInterfaceSpritePalette[HGSS_DARK_MODE]);
LoadSpritePalettes(sStatBarSpritePal);
CreateInterfaceSprites(page);
gMain.state++;
@@ -3027,12 +3035,12 @@ static u8 ClearMonSprites(void)
return FALSE;
}
-static u16 GetPokemonSpriteToDisplay(u16 species)
+static u16 GetPokemonSpriteToDisplay(u16 index)
{
- if (species >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[species].dexNum == 0xFFFF)
+ if (index >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[index].dexNum == 0xFFFF)
return 0xFFFF;
- else if (sPokedexView->pokedexList[species].seen)
- return sPokedexView->pokedexList[species].dexNum;
+ else if (sPokedexView->pokedexList[index].seen)
+ return sPokedexView->pokedexList[index].dexNum;
else
return 0;
}
@@ -3580,7 +3588,7 @@ static void CreateStatBars(struct PokedexListItem *dexMon)
u8 *gfx = Alloc(64 * 64);
static const u8 sBarsYOffset[] = {3, 13, 23, 33, 43, 53};
struct SpriteSheet sheet = {gfx, 64 * 64, TAG_STAT_BAR};
- u32 species = NationalPokedexNumToSpecies(dexMon->dexNum);
+ enum Species species = NationalPokedexNumToSpecies(dexMon->dexNum);
memcpy(gfx, sStatBarsGfx, sizeof(sStatBarsGfx));
for (i = 0; i < NUM_STATS; i++)
@@ -4061,7 +4069,7 @@ static void UNUSED HighlightScreenSelectBarItem(u8 selectedScreen, u16 unused)
void Task_DisplayCaughtMonDexPageHGSS(u8 taskId)
{
u8 spriteId;
- u16 species;
+ enum Species species;
enum NationalDexOrder dexNum;
if (!POKEDEX_PLUS_HGSS) return; // prevents the compiler from emitting static .rodata
@@ -4183,7 +4191,7 @@ static void Task_ExitCaughtMonPage(u8 taskId)
{
if (!gPaletteFade.active)
{
- u16 species;
+ enum Species species;
u32 otId;
u32 personality;
u8 paletteNum;
@@ -4270,6 +4278,15 @@ static void PrintInfoScreenTextSmall(const u8* str, u8 fontId, u8 left, u8 top)
AddTextPrinterParameterized4(0, fontId, left, top, 0, 0, color, 0, str);
}
+static void PrintStatsScreenTextSmallNarrower(u8 windowId, const u8* str, u8 left, u8 top)
+{
+ u8 color[3];
+ color[0] = TEXT_COLOR_TRANSPARENT;
+ color[1] = TEXT_DYNAMIC_COLOR_6;
+ color[2] = TEXT_COLOR_LIGHT_GRAY;
+
+ AddTextPrinterParameterized4(windowId, FONT_SMALL_NARROWER, left, top, 0, 0, color, 0, str);
+}
static void UNUSED PrintInfoScreenTextSmallWhite(const u8* str, u8 left, u8 top)
{
u8 color[3];
@@ -4319,7 +4336,7 @@ static void SetTypeIconPosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
sprite->y = y + 8;
SetSpriteInvisibility(spriteArrayId, FALSE);
}
-static void PrintCurrentSpeciesTypeInfo(u8 newEntry, u16 species)
+static void PrintCurrentSpeciesTypeInfo(u8 newEntry, enum Species species)
{
enum Type type1, type2;
@@ -4371,7 +4388,7 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry)
{
u8 str[16];
u8 str2[32];
- u16 species;
+ enum Species species;
const u8 *name;
const u8 *category;
const u8 *description;
@@ -4486,7 +4503,7 @@ static u8 PrintCryScreenSpeciesName(u8 windowId, u16 num, u8 left, u8 top)
// Unown and Spinda use the personality of the first seen individual of that species
// All others use personality 0
-static u32 GetPokedexMonPersonality(u16 species)
+static u32 GetPokedexMonPersonality(enum Species species)
{
if (species == SPECIES_UNOWN || species == SPECIES_SPINDA)
{
@@ -4503,7 +4520,7 @@ static u32 GetPokedexMonPersonality(u16 species)
static u16 CreateMonSpriteFromNationalDexNumberHGSS(u16 nationalNum, s16 x, s16 y, u16 paletteSlot)
{
- u32 species = NationalPokedexNumToSpeciesHGSS(nationalNum);
+ enum Species species = NationalPokedexNumToSpeciesHGSS(nationalNum);
return CreateMonPicSprite(species, FALSE, GetPokedexMonPersonality(species), TRUE, x, y, paletteSlot, TAG_NONE);
}
@@ -4730,7 +4747,7 @@ static void ResetStatsWindows(void)
static void SaveMonDataInStruct(void)
{
- u16 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
+ enum Species species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
u8 differentEVs = 0;
u8 i;
@@ -4830,7 +4847,7 @@ static void Task_LoadStatsScreen(u8 taskId)
if (gTasks[taskId].data[1] == 0)
{
//Icon
- u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
+ enum Species species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
u32 personality = GetPokedexMonPersonality(species);
FreeMonIconPalettes(); //Free space for new pallete
LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon
@@ -5012,7 +5029,7 @@ static void PrintStatsScreen_DestroyMoveItemIcon(u8 taskId)
static bool8 CalculateMoves(void)
{
- u16 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
+ enum Species species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
u16 statsMovesEgg[EGG_MOVES_ARRAY_COUNT] = {0};
@@ -5028,7 +5045,7 @@ static bool8 CalculateMoves(void)
// Egg moves
if (HGSS_SHOW_EGG_MOVES_FOR_EVOS)
{
- u16 preSpecies = species;
+ enum Species preSpecies = species;
while (preSpecies != SPECIES_NONE)
{
numEggMoves = GetEggMovesBySpecies(preSpecies, statsMovesEgg);
@@ -5058,13 +5075,13 @@ static bool8 CalculateMoves(void)
return TRUE;
}
-static enum Move GetSelectedMove(u32 species, u32 selected)
+static enum Move GetSelectedMove(enum Species species, u32 selected)
{
if (selected < sPokedexView->numEggMoves)
{
if (!HGSS_SHOW_EGG_MOVES_FOR_EVOS)
return GetSpeciesEggMoves(species)[selected];
- u16 preSpecies = species;
+ enum Species preSpecies = species;
while (GetSpeciesPreEvolution(preSpecies) != SPECIES_NONE)
preSpecies = GetSpeciesPreEvolution(preSpecies);
return GetSpeciesEggMoves(preSpecies)[selected];
@@ -5084,7 +5101,7 @@ static void PrintStatsScreen_Moves_Top(u8 taskId)
u8 moves_y = 3;
enum Item item = ITEM_MASTER_BALL;
- u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
+ enum Species species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
u32 selected = sPokedexView->moveSelected;
enum Move move = GetSelectedMove(species, selected);
//Moves selected from move max
@@ -5162,7 +5179,7 @@ static void PrintStatsScreen_Moves_Description(u8 taskId)
u8 moves_x = 5;
u8 moves_y = 5;
- u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
+ enum Species species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
enum Move move = GetSelectedMove(species, sPokedexView->moveSelected);
//Move description
@@ -5205,7 +5222,7 @@ static void PrintStatsScreen_Moves_Bottom(u8 taskId)
u8 contest_appeal = 0;
u8 contest_jam = 0;
- u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
+ enum Species species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
enum Move move = GetSelectedMove(species, sPokedexView->moveSelected);
//Power + Accuracy
@@ -5255,14 +5272,18 @@ static void PrintStatsScreen_Moves_Bottom(u8 taskId)
static void PrintStatsScreen_NameGender(u8 taskId, u32 num, u32 value)
{
u8 str[16];
- u16 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
+ enum Species species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
u8 base_x = 38;
u8 base_y = 0;
u8 gender_x, gender_y;
//Name
- PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, GetSpeciesName(species), base_x, base_y);
+ const u8 *name = GetSpeciesName(species);
+ if (GetStringWidth(FONT_SMALL, name, 0) <= STATS_PAGE_SPECIES_MAX_WIDTH)
+ PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, name, base_x, base_y);
+ else
+ PrintStatsScreenTextSmallNarrower(WIN_STATS_NAME_GENDER, name, base_x, base_y);
//Number
if (value == 0)
@@ -5899,7 +5920,7 @@ static void ResetEvoScreenDataStruct(void)
static void GetSeenFlagTargetSpecies(void)
{
u8 i;
- u16 species;
+ enum Species species;
for (i = 0; i < sPokedexView->sEvoScreenData.numAllEvolutions; i++)
{
species = sPokedexView->sEvoScreenData.targetSpecies[i];
@@ -5955,7 +5976,7 @@ static void Task_LoadEvolutionScreen(u8 taskId)
case 3:
if (gTasks[taskId].data[1] == 0)
{
- u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
+ enum Species species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
u32 personality = GetPokedexMonPersonality(species);
sPokedexView->selectedScreen = EVO_SCREEN;
ResetEvoScreenDataStruct();
@@ -5978,6 +5999,7 @@ static void Task_LoadEvolutionScreen(u8 taskId)
gTasks[taskId].data[3] = 0;
PrintEvolutionTargetSpeciesAndMethod(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), 0, &depth, alreadyPrintedIcons, &iconDepth, 0);
LoadSpritePalette(&gSpritePalette_Arrow);
+ TryLoadDarkModeArrowPalette();
GetSeenFlagTargetSpecies();
if (sPokedexView->sEvoScreenData.numAllEvolutions > 0 && sPokedexView->sEvoScreenData.numSeen > 0)
{
@@ -6079,7 +6101,7 @@ static void Task_HandleEvolutionScreenInput(u8 taskId)
if (JOY_NEW(A_BUTTON))
{
- u16 targetSpecies = sPokedexView->sEvoScreenData.targetSpecies[sPokedexView->sEvoScreenData.menuPos];
+ enum Species targetSpecies = sPokedexView->sEvoScreenData.targetSpecies[sPokedexView->sEvoScreenData.menuPos];
enum NationalDexOrder dexNum = SpeciesToNationalPokedexNum(targetSpecies);
if (sPokedexView->isSearchResults && sPokedexView->originalSearchSelectionNum == 0)
sPokedexView->originalSearchSelectionNum = sPokedexListItem->dexNum;
@@ -6133,7 +6155,7 @@ static void Task_HandleEvolutionScreenInput(u8 taskId)
}
}
-static void HandleTargetSpeciesPrintText(u32 targetSpecies, u32 base_x, u32 base_y, u32 base_y_offset, u32 base_i)
+static void HandleTargetSpeciesPrintText(enum Species targetSpecies, u32 base_x, u32 base_y, u32 base_y_offset, u32 base_i)
{
bool32 seen = GetSetPokedexFlag(SpeciesToNationalPokedexNum(targetSpecies), FLAG_GET_SEEN);
u32 fontId = GetSpeciesNameFontId(GetSpeciesNameWidthInChars(GetSpeciesName(targetSpecies)));
@@ -6146,7 +6168,7 @@ static void HandleTargetSpeciesPrintText(u32 targetSpecies, u32 base_x, u32 base
PrintInfoScreenTextSmall(gStringVar3, fontId, base_x, base_y + base_y_offset*base_i); //evolution mon name
}
-static void HandleTargetSpeciesPrintIcon(u8 taskId, u16 targetSpecies, u8 base_i, u8 iterations)
+static void HandleTargetSpeciesPrintIcon(u8 taskId, enum Species targetSpecies, u8 base_i, u8 iterations)
{
u32 personality = GetPokedexMonPersonality(targetSpecies);
LoadMonIconPalettePersonality(targetSpecies, personality); //Loads pallete for current mon
@@ -6157,9 +6179,9 @@ static void HandleTargetSpeciesPrintIcon(u8 taskId, u16 targetSpecies, u8 base_i
gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0;
}
-static void CreateCaughtBallEvolutionScreen(u16 targetSpecies, u8 x, u8 y, u16 unused)
+static void CreateCaughtBallEvolutionScreen(enum Species targetSpecies, u8 x, u8 y, u16 unused)
{
- bool8 owned = GetSetPokedexFlag(SpeciesToNationalPokedexNum(targetSpecies), FLAG_GET_CAUGHT);
+ bool32 owned = GetSetPokedexFlag(SpeciesToNationalPokedexNum(targetSpecies), FLAG_GET_CAUGHT);
if (owned)
BlitBitmapToWindow(0, sCaughtBall_Gfx, x, y-1, 8, 16);
else
@@ -6169,9 +6191,9 @@ static void CreateCaughtBallEvolutionScreen(u16 targetSpecies, u8 x, u8 y, u16 u
}
}
-static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 species, u8 base_x, u8 base_y, u8 base_y_offset, u8 base_i)
+static void HandlePreEvolutionSpeciesPrint(u8 taskId, enum Species preSpecies, enum Species species, u8 base_x, u8 base_y, u8 base_y_offset, u8 base_i)
{
- bool8 seen = GetSetPokedexFlag(SpeciesToNationalPokedexNum(preSpecies), FLAG_GET_SEEN);
+ bool32 seen = GetSetPokedexFlag(SpeciesToNationalPokedexNum(preSpecies), FLAG_GET_SEEN);
StringCopy(gStringVar1, GetSpeciesName(species)); //evolution mon name
@@ -6200,7 +6222,7 @@ static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 specie
}
}
-static bool32 HasTwoPreEvolutions(u32 species)
+static bool32 HasTwoPreEvolutions(enum Species species)
{
switch (species)
{
@@ -6211,7 +6233,7 @@ static bool32 HasTwoPreEvolutions(u32 species)
}
}
-static u8 PrintPreEvolutions(u8 taskId, u16 species)
+static u8 PrintPreEvolutions(u8 taskId, enum Species species)
{
u16 i;
u16 j;
@@ -6224,7 +6246,7 @@ static u8 PrintPreEvolutions(u8 taskId, u16 species)
u16 preEvolutionTwo = 0;
u8 numPreEvolutions = 0;
- u16 baseFormSpecies;
+ enum Species baseFormSpecies;
sPokedexView->sEvoScreenData.isMega = FALSE;
//Check if it's a mega
@@ -6373,7 +6395,7 @@ u32 GetSpeciesNameWidthInChars(const u8 *speciesName)
return i;
}
-bool32 IsSpeciesAlcremie(u32 targetSpecies)
+bool32 IsSpeciesAlcremie(enum Species targetSpecies)
{
return GET_BASE_SPECIES_ID(targetSpecies) == SPECIES_ALCREMIE;
}
@@ -6383,13 +6405,13 @@ bool32 IsItemSweet(enum Item item)
return item >= ITEM_STRAWBERRY_SWEET && item <= ITEM_RIBBON_SWEET;
}
-static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u32 *depth_i, u32 alreadyPrintedIcons[], u32 *icon_depth_i, u32 numLines)
+static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, enum Species species, u8 depth, u32 *depth_i, u32 alreadyPrintedIcons[], u32 *icon_depth_i, u32 numLines)
{
int i;
u32 depth_x = 4;
u32 depth_offset = 8 * (depth + 1);
int fontId;
- u16 targetSpecies = 0;
+ enum Species targetSpecies = 0;
bool8 left = TRUE;
u32 base_x = 21;
u32 base_y = 51;
@@ -6878,7 +6900,7 @@ static void Task_LoadFormsScreen(u8 taskId)
if (gTasks[taskId].data[1] == 0)
{
//Icon
- u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
+ enum Species species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum);
u32 personality = GetPokedexMonPersonality(species);
FreeMonIconPalettes(); //Free space for new pallete
LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon
@@ -6894,6 +6916,7 @@ static void Task_LoadFormsScreen(u8 taskId)
gTasks[taskId].data[3] = 0;
PrintForms(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum));
LoadSpritePalette(&gSpritePalette_Arrow);
+ TryLoadDarkModeArrowPalette();
gMain.state++;
break;
case 5:
@@ -7008,7 +7031,7 @@ static void Task_HandleFormsScreenInput(u8 taskId)
if (JOY_NEW(A_BUTTON))
{
u8 formId = sPokedexView->sFormScreenData.formIds[menuPos];
- u16 formSpecies = GetFormSpeciesId(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), formId);
+ enum Species formSpecies = GetFormSpeciesId(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), formId);
if (sPokedexView->isSearchResults && sPokedexView->originalSearchSelectionNum == 0)
sPokedexView->originalSearchSelectionNum = sPokedexListItem->dexNum;
@@ -7035,7 +7058,7 @@ static void Task_HandleFormsScreenInput(u8 taskId)
#define FORM_SPECIES_END (0xffff)
-static void PrintForms(u8 taskId, u16 species)
+static void PrintForms(u8 taskId, enum Species species)
{
u8 i;
u8 j = 1;
@@ -7214,6 +7237,7 @@ static void Task_LoadCryScreen(u8 taskId)
cryMeter.yPos = 3;
if (LoadCryMeter(&cryMeter, 3))
gMain.state++;
+ FillCryMeterWindowTilemapWithBg();
CopyWindowToVram(WIN_VU_METER, COPYWIN_GFX);
CopyWindowToVram(WIN_INFO, COPYWIN_FULL);
CopyBgTilemapBufferToVram(0);
@@ -7430,11 +7454,21 @@ static void LoadPlayArrowPalette(bool8 cryPlaying)
{
u16 color;
- if (cryPlaying)
- color = RGB(18, 28, 0);
+ if (!HGSS_DARK_MODE)
+ {
+ if (cryPlaying)
+ color = RGB(29, 9, 4);
+ else
+ color = RGB(18, 2, 4);
+ }
else
- color = RGB(15, 21, 0);
- LoadPalette(&color, BG_PLTT_ID(5) + 13, PLTT_SIZEOF(1));
+ {
+ if (cryPlaying)
+ color = RGB(9, 9, 9);
+ else
+ color = RGB(3, 3, 3);
+ }
+ LoadPalette(&color, BG_PLTT_ID(0) + 11, PLTT_SIZEOF(1));
}
static void Task_HandleSizeScreenInput(u8 taskId)
@@ -7731,7 +7765,7 @@ static void Task_ClosePokedexFromSearchResultsStartMenu(u8 taskId)
//************************************
static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, enum BodyColor bodyColor, enum Type type1, enum Type type2)
{
- u16 species;
+ enum Species species;
u16 i;
u16 resultsCount;
enum Type types[2];
@@ -7848,6 +7882,13 @@ static u8 LoadSearchMenu(void)
return CreateTask(Task_LoadSearchMenu, 0);
}
+static void PrintSearchTextToFit(const u8 *str, u32 x, u32 y, u32 width)
+{
+ static const u8 color[3] = { TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_DARK_GRAY };
+ u32 fontId = GetFontIdToFit(str, FONT_NORMAL, 0, width);
+ AddTextPrinterParameterized4(0, fontId, x, y, 0, 0, color, TEXT_SKIP_DRAW, str);
+}
+
static void PrintSearchText(const u8 *str, u32 x, u32 y)
{
u8 color[3];
@@ -7919,7 +7960,7 @@ static void Task_LoadSearchMenu(u8 taskId)
break;
case 1:
LoadCompressedSpriteSheet(&sInterfaceSpriteSheet[HGSS_DECAPPED]);
- LoadSpritePalettes(sInterfaceSpritePalette);
+ LoadSpritePalette(&sInterfaceSpritePalette[HGSS_DARK_MODE]);
LoadSpritePalettes(sStatBarSpritePal);
CreateSearchParameterScrollArrows(taskId);
for (i = 0; i < NUM_TASK_DATA; i++)
@@ -8483,10 +8524,10 @@ static void PrintSelectedSearchParameters(u8 taskId)
PrintSearchText(sDexSearchColorOptions[searchParamId].title, 0x2D, 0x21);
searchParamId = gTasks[taskId].tCursorPos_TypeLeft + gTasks[taskId].tScrollOffset_TypeLeft;
- PrintSearchText(sDexSearchTypeOptions[searchParamId].title, 0x2D, 0x31);
+ PrintSearchTextToFit(sDexSearchTypeOptions[searchParamId].title, 0x2D, 0x31, 38);
searchParamId = gTasks[taskId].tCursorPos_TypeRight + gTasks[taskId].tScrollOffset_TypeRight;
- PrintSearchText(sDexSearchTypeOptions[searchParamId].title, 0x5D, 0x31);
+ PrintSearchTextToFit(sDexSearchTypeOptions[searchParamId].title, 0x5D, 0x31, 38);
searchParamId = gTasks[taskId].tCursorPos_Order + gTasks[taskId].tScrollOffset_Order;
PrintSearchText(sDexOrderOptions[searchParamId].title, 0x2D, 0x41);
@@ -8720,3 +8761,33 @@ static void ClearSearchParameterBoxText(void)
{
ClearSearchMenuRect(144, 8, 96, 96);
}
+
+static void TryLoadDarkModeArrowPalette(void)
+{
+ if (!HGSS_DARK_MODE)
+ return;
+
+ u32 index = IndexOfSpritePaletteTag(gSpritePalette_Arrow.tag);
+ u32 colorArrow = RGB2GBA(72, 72, 72);
+ u32 colorOutline = RGB2GBA(24, 24, 24);
+
+ LoadPalette(&colorArrow, OBJ_PLTT_ID(index) + 1, sizeof(colorArrow));
+ LoadPalette(&colorOutline, OBJ_PLTT_ID(index) + 2, sizeof(colorOutline));
+}
+
+static void FillCryMeterWindowTilemapWithBg(void)
+{
+ // This fills the window behind the 'VU' text on the cry meter.
+ // It is filled with blank tiles, showing as black.
+
+ struct Window windowLocal = gWindows[WIN_VU_METER];
+
+ FillBgTilemapBufferRect(
+ 3,
+ 0,
+ windowLocal.window.tilemapLeft,
+ windowLocal.window.tilemapTop,
+ windowLocal.window.width,
+ windowLocal.window.height,
+ windowLocal.window.paletteNum);
+}
diff --git a/src/pokemon.c b/src/pokemon.c
index c64a7e8cff..80575d2c9e 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -79,7 +79,7 @@ extern u16 gSpecialVar_ItemId;
struct SpeciesItem
{
- u16 species;
+ enum Species species;
enum Item item;
};
@@ -1289,18 +1289,18 @@ void ZeroEnemyPartyMons(void)
ZeroMonData(&gEnemyParty[i]);
}
-void CreateRandomMon(struct Pokemon *mon, u16 species, u8 level)
+void CreateRandomMon(struct Pokemon *mon, enum Species species, u8 level)
{
CreateRandomMonWithIVs(mon, species, level, USE_RANDOM_IVS);
}
-void CreateRandomMonWithIVs(struct Pokemon *mon, u16 species, u8 level, u8 fixedIv)
+void CreateRandomMonWithIVs(struct Pokemon *mon, enum Species species, u8 level, u8 fixedIv)
{
CreateMonWithIVs(mon, species, level, Random32(), OTID_STRUCT_PLAYER_ID, fixedIv);
GiveMonInitialMoveset(mon);
}
-void CreateMon(struct Pokemon *mon, u16 species, u8 level, u32 personality, struct OriginalTrainerId trainerId)
+void CreateMon(struct Pokemon *mon, enum Species species, u8 level, u32 personality, struct OriginalTrainerId trainerId)
{
u32 mail;
ZeroMonData(mon);
@@ -1310,7 +1310,7 @@ void CreateMon(struct Pokemon *mon, u16 species, u8 level, u32 personality, stru
SetMonData(mon, MON_DATA_MAIL, &mail);
}
-void CreateMonWithIVs(struct Pokemon *mon, u16 species, u8 level, u32 personality, struct OriginalTrainerId trainerId, u8 fixedIV)
+void CreateMonWithIVs(struct Pokemon *mon, enum Species species, u8 level, u32 personality, struct OriginalTrainerId trainerId, u8 fixedIV)
{
CreateMon(mon, species, level, personality, trainerId);
SetBoxMonIVs(&mon->box, fixedIV);
@@ -1330,7 +1330,7 @@ void SetBoxMonIVs(struct BoxPokemon *mon, u8 fixedIV)
u32 iv;
u32 ivRandom = Random32();
- u32 species = GetBoxMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetBoxMonData(mon, MON_DATA_SPECIES);
value = (u16)ivRandom;
iv = value & MAX_IV_MASK;
@@ -1381,7 +1381,7 @@ void SetBoxMonPerfectIVs(struct BoxPokemon *mon, u32 numPerfect)
}
}
-void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u32 personality, struct OriginalTrainerId trainerId)
+void CreateBoxMon(struct BoxPokemon *boxMon, enum Species species, u8 level, u32 personality, struct OriginalTrainerId trainerId)
{
u8 speciesName[POKEMON_NAME_LENGTH + 1];
u32 value;
@@ -1486,7 +1486,7 @@ static bool32 IsValidGender(u32 gender)
}
}
-u32 GetMonPersonality(u16 species, u8 gender, u8 nature, u8 unownLetter)
+u32 GetMonPersonality(enum Species species, u8 gender, u8 nature, u8 unownLetter)
{
u32 personality, actualLetter;
@@ -1518,14 +1518,14 @@ u32 GetMonPersonality(u16 species, u8 gender, u8 nature, u8 unownLetter)
}
// This is only used to create Wally's Ralts.
-void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level)
+void CreateMaleMon(struct Pokemon *mon, enum Species species, u8 level)
{
u32 personality = GetMonPersonality(species, MON_MALE, NATURE_RANDOM, RANDOM_UNOWN_LETTER);
CreateMonWithIVs(mon, species, level, personality, OTID_STRUCT_PLAYER_ID, USE_RANDOM_IVS);
GiveMonInitialMoveset(mon);
}
-void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality)
+void CreateMonWithIVsPersonality(struct Pokemon *mon, enum Species species, u8 level, u32 ivs, u32 personality)
{
CreateMon(mon, species, level, personality, OTID_STRUCT_PLAYER_ID);
SetMonData(mon, MON_DATA_IVS, &ivs);
@@ -1715,7 +1715,7 @@ void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerP
GetMonData(mon, MON_DATA_NICKNAME10, dest->nickname);
}
-static void CreateEventMon(struct Pokemon *mon, u16 species, u8 level, u32 personality, struct OriginalTrainerId otId)
+static void CreateEventMon(struct Pokemon *mon, enum Species species, u8 level, u32 personality, struct OriginalTrainerId otId)
{
bool32 isModernFatefulEncounter = TRUE;
@@ -1813,7 +1813,7 @@ void CalculateMonStats(struct Pokemon *mon)
{
s32 oldMaxHP = GetMonData(mon, MON_DATA_MAX_HP);
s32 currentHP = GetMonData(mon, MON_DATA_HP);
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u8 friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
s32 level = GetLevelFromMonExp(mon);
s32 newMaxHP;
@@ -1856,7 +1856,7 @@ void CalculateMonStats(struct Pokemon *mon)
return;
#endif
- if (species == SPECIES_SHEDINJA)
+ if (HasShedinjaHPHandling(species))
{
newMaxHP = 1;
}
@@ -1910,7 +1910,7 @@ u8 GetLevelFromMonExp(struct Pokemon *mon)
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon)
{
- u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
+ enum Species species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
u32 exp = GetBoxMonData(boxMon, MON_DATA_EXP);
s32 level = 1;
enum GrowthRate growthRate = GetSpeciesGrowthRate(species);
@@ -1998,7 +1998,7 @@ void GiveMonInitialMoveset(struct Pokemon *mon)
void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon) //Credit: AsparagusEduardo
{
- u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
+ enum Species species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
s32 level = GetLevelFromBoxMonExp(boxMon);
s32 i;
enum Move moves[MAX_MON_MOVES] = {MOVE_NONE};
@@ -2055,7 +2055,7 @@ void GiveMonDefaultMove(struct Pokemon *mon, u32 slot)
void GiveBoxMonDefaultMove(struct BoxPokemon *boxMon, u32 slot)
{
enum Move move = MOVE_NONE;
- u32 species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
+ enum Species species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species);
s32 level = GetLevelFromBoxMonExp(boxMon);
for (u32 i = 0; learnset[i].move != LEVEL_UP_MOVE_END; i++)
@@ -2088,7 +2088,7 @@ void GiveBoxMonDefaultMove(struct BoxPokemon *boxMon, u32 slot)
enum Move MonTryLearningNewMoveAtLevel(struct Pokemon *mon, bool32 firstMove, u32 level)
{
enum Move retVal = MOVE_NONE;
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species);
// since you can learn more than one move per level
@@ -2261,13 +2261,13 @@ u8 GetMonGender(struct Pokemon *mon)
u8 GetBoxMonGender(struct BoxPokemon *boxMon)
{
- u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
+ enum Species species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
u32 personality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
return GetGenderFromSpeciesAndPersonality(species, personality);
}
-u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
+u8 GetGenderFromSpeciesAndPersonality(enum Species species, u32 personality)
{
u8 genderRatio = GetSpeciesGenderRatio(species);
switch (genderRatio)
@@ -2284,7 +2284,7 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
return MON_MALE;
}
-bool32 IsPersonalityFemale(u16 species, u32 personality)
+bool32 IsPersonalityFemale(enum Species species, u32 personality)
{
return GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE;
}
@@ -2298,7 +2298,7 @@ u32 GetUnownSpeciesId(u32 personality)
return unownLetter + SPECIES_UNOWN_B - 1;
}
-void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, enum BattlerPosition battlerPosition)
+void SetMultiuseSpriteTemplateToPokemon(enum Species speciesTag, enum BattlerPosition battlerPosition)
{
if (gMonSpritesGfxPtr != NULL)
gMultiuseSpriteTemplate = gMonSpritesGfxPtr->templates[battlerPosition];
@@ -3535,7 +3535,7 @@ u8 GetMonsStateToDoubles_2(void)
for (i = 0; i < PARTY_SIZE; i++)
{
- u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG);
if (species != SPECIES_EGG && species != SPECIES_NONE
&& GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0)
aliveCount++;
@@ -3547,7 +3547,7 @@ u8 GetMonsStateToDoubles_2(void)
return (aliveCount > 1) ? PLAYER_HAS_TWO_USABLE_MONS : PLAYER_HAS_ONE_USABLE_MON;
}
-enum Ability GetAbilityBySpecies(u16 species, u8 abilityNum)
+enum Ability GetAbilityBySpecies(enum Species species, u8 abilityNum)
{
int i;
@@ -3574,7 +3574,7 @@ enum Ability GetAbilityBySpecies(u16 species, u8 abilityNum)
enum Ability GetMonAbility(struct Pokemon *mon)
{
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u8 abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM);
return GetAbilityBySpecies(species, abilityNum);
}
@@ -4072,7 +4072,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, enum Item item, u8 partyIndex,
case 7: // ITEM4_EVO_STONE
{
bool32 canStopEvo = TRUE;
- u32 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_ITEM_USE, item, NULL, &canStopEvo, CHECK_EVO);
+ enum Species targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_ITEM_USE, item, NULL, &canStopEvo, CHECK_EVO);
if (targetSpecies != SPECIES_NONE)
{
@@ -4455,7 +4455,7 @@ u8 GetNatureFromPersonality(u32 personality)
return personality % NUM_NATURES;
}
-u32 GetGMaxTargetSpecies(u32 species)
+enum Species GetGMaxTargetSpecies(enum Species species)
{
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
u32 i;
@@ -4483,7 +4483,7 @@ bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct Evoluti
enum Item removeBagItem = ITEM_NONE;
u32 removeBagItemCount = 0;
u32 evolutionTracker = GetMonData(mon, MON_DATA_EVOLUTION_TRACKER, 0);
- u32 partnerSpecies;
+ enum Species partnerSpecies;
enum Item partnerHeldItem;
enum HoldEffect partnerHoldEffect;
@@ -4635,7 +4635,7 @@ bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct Evoluti
case IF_TYPE_IN_PARTY:
for (j = 0; j < PARTY_SIZE; j++)
{
- u16 currSpecies = GetMonData(&gPlayerParty[j], MON_DATA_SPECIES);
+ enum Species currSpecies = GetMonData(&gPlayerParty[j], MON_DATA_SPECIES);
if (GetSpeciesType(currSpecies, 0) == params[i].arg1
|| GetSpeciesType(currSpecies, 1) == params[i].arg1)
{
@@ -4796,11 +4796,11 @@ bool32 DoesMonMeetAdditionalConditions(struct Pokemon *mon, const struct Evoluti
return TRUE;
}
-u32 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 evolutionItem, struct Pokemon *tradePartner, bool32 *canStopEvo, enum EvoState evoState)
+enum Species GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16 evolutionItem, struct Pokemon *tradePartner, bool32 *canStopEvo, enum EvoState evoState)
{
int i;
- u32 targetSpecies = SPECIES_NONE;
- u32 species = GetMonData(mon, MON_DATA_SPECIES, 0);
+ enum Species targetSpecies = SPECIES_NONE;
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES, 0);
enum Item heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, 0);
u32 level = GetMonData(mon, MON_DATA_LEVEL, 0);
enum HoldEffect holdEffect;
@@ -4995,7 +4995,7 @@ u32 GetEvolutionTargetSpecies(struct Pokemon *mon, enum EvolutionMode mode, u16
bool8 IsMonPastEvolutionLevel(struct Pokemon *mon)
{
int i;
- u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES, 0);
u8 level = GetMonData(mon, MON_DATA_LEVEL, 0);
const struct Evolution *evolutions = GetSpeciesEvolutions(species);
@@ -5019,12 +5019,12 @@ bool8 IsMonPastEvolutionLevel(struct Pokemon *mon)
return FALSE;
}
-u16 NationalPokedexNumToSpecies(enum NationalDexOrder nationalNum)
+enum Species NationalPokedexNumToSpecies(enum NationalDexOrder nationalNum)
{
- u16 species;
+ enum Species species;
if (!nationalNum)
- return 0;
+ return SPECIES_NONE;
species = 1;
@@ -5032,7 +5032,7 @@ u16 NationalPokedexNumToSpecies(enum NationalDexOrder nationalNum)
species++;
if (species == NUM_SPECIES)
- return NATIONAL_DEX_NONE;
+ return SPECIES_NONE;
return GET_BASE_SPECIES_ID(species);
}
@@ -5080,21 +5080,21 @@ enum HoennDexOrder NationalToHoennOrder(enum NationalDexOrder nationalNum)
return hoennNum + 1;
}
-u32 SpeciesToRegionalPokedexNum(u16 species)
+u32 SpeciesToRegionalPokedexNum(enum Species species)
{
if (IS_FRLG)
return SpeciesToKantoPokedexNum(species);
return SpeciesToHoennPokedexNum(species);
}
-enum KantoDexOrder SpeciesToKantoPokedexNum(u16 species)
+enum KantoDexOrder SpeciesToKantoPokedexNum(enum Species species)
{
if (!species)
return 0;
return NationalToKantoOrder(SpeciesToNationalPokedexNum(species));
}
-enum HoennDexOrder SpeciesToHoennPokedexNum(u16 species)
+enum HoennDexOrder SpeciesToHoennPokedexNum(enum Species species)
{
if (!species)
return 0;
@@ -5224,7 +5224,7 @@ void DrawSpindaSpots(u32 personality, u8 *dest, bool32 isSecondFrame)
}
}
-void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies)
+void EvolutionRenameMon(struct Pokemon *mon, enum Species oldSpecies, enum Species newSpecies)
{
u8 language;
GetMonData(mon, MON_DATA_NICKNAME, gStringVar1);
@@ -5306,7 +5306,8 @@ u16 ModifyStatByNature(u8 nature, u16 stat, enum Stat statIndex)
void AdjustFriendship(struct Pokemon *mon, u8 event)
{
- u16 species, heldItem;
+ enum Species species;
+ enum Item heldItem;
enum HoldEffect holdEffect;
s8 mod;
@@ -5393,7 +5394,7 @@ u8 CalculateFriendshipBonuses(struct Pokemon *mon, u32 modifier, enum HoldEffect
return bonus;
}
-void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
+void MonGainEVs(struct Pokemon *mon, enum Species defeatedSpecies)
{
u8 evs[NUM_STATS];
u16 evIncrease = 0;
@@ -5477,7 +5478,7 @@ u16 GetMonEVCount(struct Pokemon *mon)
bool8 TryIncrementMonLevel(struct Pokemon *mon)
{
- u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES, 0);
u8 nextLevel = GetMonData(mon, MON_DATA_LEVEL, 0) + 1;
u32 expPoints = GetMonData(mon, MON_DATA_EXP, 0);
enum GrowthRate growthRate = GetSpeciesGrowthRate(species);
@@ -5497,7 +5498,7 @@ bool8 TryIncrementMonLevel(struct Pokemon *mon)
}
}
-u8 CanLearnTeachableMove(u16 species, enum Move move)
+u8 CanLearnTeachableMove(enum Species species, enum Move move)
{
const u16 *teachableLearnset = GetSpeciesTeachableLearnset(species);
if (species == SPECIES_EGG)
@@ -5510,7 +5511,7 @@ u8 CanLearnTeachableMove(u16 species, enum Move move)
return FALSE;
}
-u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves)
+u8 GetLevelUpMovesBySpecies(enum Species species, u16 *moves)
{
u8 numMoves = 0;
int i;
@@ -5522,7 +5523,7 @@ u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves)
return numMoves;
}
-u16 SpeciesToPokedexNum(u16 species)
+u16 SpeciesToPokedexNum(enum Species species)
{
if (IsNationalPokedexEnabled())
{
@@ -5537,14 +5538,14 @@ u16 SpeciesToPokedexNum(u16 species)
}
}
-bool32 IsSpeciesInRegionalDex(u16 species)
+bool32 IsSpeciesInRegionalDex(enum Species species)
{
if (IS_FRLG)
return IsSpeciesInKantoDex(species);
return IsSpeciesInHoennDex(species);
}
-bool32 IsSpeciesInKantoDex(u16 species)
+bool32 IsSpeciesInKantoDex(enum Species species)
{
if (SpeciesToKantoPokedexNum(species) > KANTO_DEX_COUNT)
return FALSE;
@@ -5552,7 +5553,7 @@ bool32 IsSpeciesInKantoDex(u16 species)
return TRUE;
}
-bool32 IsSpeciesInHoennDex(u16 species)
+bool32 IsSpeciesInHoennDex(enum Species species)
{
if (SpeciesToHoennPokedexNum(species) > HOENN_DEX_COUNT)
return FALSE;
@@ -5692,29 +5693,29 @@ static void Task_PlayMapChosenOrBattleBGM(u8 taskId)
const u16 *GetMonFrontSpritePal(struct Pokemon *mon)
{
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
bool32 isShiny = GetMonData(mon, MON_DATA_IS_SHINY);
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY);
bool32 isEgg = GetMonData(mon, MON_DATA_IS_EGG);
return GetMonSpritePalFromSpeciesAndPersonalityIsEgg(species, isShiny, personality, isEgg);
}
-const u16 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, u32 personality)
+const u16 *GetMonSpritePalFromSpeciesAndPersonality(enum Species species, bool32 isShiny, u32 personality)
{
return GetMonSpritePalFromSpeciesIsEgg(species, isShiny, IsPersonalityFemale(species, personality), FALSE);
}
-const u16 *GetMonSpritePalFromSpeciesAndPersonalityIsEgg(u16 species, bool32 isShiny, u32 personality, bool32 isEgg)
+const u16 *GetMonSpritePalFromSpeciesAndPersonalityIsEgg(enum Species species, bool32 isShiny, u32 personality, bool32 isEgg)
{
return GetMonSpritePalFromSpeciesIsEgg(species, isShiny, IsPersonalityFemale(species, personality), isEgg);
}
-const u16 *GetMonSpritePalFromSpecies(u16 species, bool32 isShiny, bool32 isFemale)
+const u16 *GetMonSpritePalFromSpecies(enum Species species, bool32 isShiny, bool32 isFemale)
{
return GetMonSpritePalFromSpeciesIsEgg(species, isShiny, isFemale, FALSE);
}
-const u16 *GetMonSpritePalFromSpeciesIsEgg(u16 species, bool32 isShiny, bool32 isFemale, bool32 isEgg)
+const u16 *GetMonSpritePalFromSpeciesIsEgg(enum Species species, bool32 isShiny, bool32 isFemale, bool32 isEgg)
{
species = SanitizeSpeciesId(species);
@@ -5833,7 +5834,7 @@ void SetMonPreventsSwitchingString(void)
BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4, sizeof(gStringVar4));
}
-static s32 GetWildMonTableIdInAlteringCave(u16 species)
+static s32 GetWildMonTableIdInAlteringCave(enum Species species)
{
s32 i;
for (i = 0; i < (s32) ARRAY_COUNT(sAlteringCaveWildMonHeldItems); i++)
@@ -5861,7 +5862,7 @@ void SetWildMonHeldItem(void)
if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_PIKE)))
{
u16 rnd;
- u16 species;
+ enum Species species;
u16 count = (WILD_DOUBLE_BATTLE) ? 2 : 1;
u16 i;
bool32 itemHeldBoost = CanFirstMonBoostHeldItemRarity();
@@ -5960,7 +5961,7 @@ static void Task_PokemonSummaryAnimateAfterDelay(u8 taskId)
}
}
-void BattleAnimateFrontSprite(struct Sprite *sprite, u16 species, bool8 noCry, u8 panMode)
+void BattleAnimateFrontSprite(struct Sprite *sprite, enum Species species, bool8 noCry, u8 panMode)
{
if (gHitMarker & HITMARKER_NO_ANIMATIONS && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
DoMonFrontSpriteAnimation(sprite, species, noCry, panMode | SKIP_FRONT_ANIM);
@@ -5968,7 +5969,7 @@ void BattleAnimateFrontSprite(struct Sprite *sprite, u16 species, bool8 noCry, u
DoMonFrontSpriteAnimation(sprite, species, noCry, panMode);
}
-void DoMonFrontSpriteAnimation(struct Sprite *sprite, u16 species, bool8 noCry, u8 panModeAnimFlag)
+void DoMonFrontSpriteAnimation(struct Sprite *sprite, enum Species species, bool8 noCry, u8 panModeAnimFlag)
{
s8 pan;
switch (panModeAnimFlag & (u8)~SKIP_FRONT_ANIM) // Exclude anim flag to get pan mode
@@ -6015,7 +6016,7 @@ void DoMonFrontSpriteAnimation(struct Sprite *sprite, u16 species, bool8 noCry,
}
}
-void PokemonSummaryDoMonAnimation(struct Sprite *sprite, u16 species, bool8 oneFrame)
+void PokemonSummaryDoMonAnimation(struct Sprite *sprite, enum Species species, bool8 oneFrame)
{
if (!oneFrame && HasTwoFramesAnimation(species))
StartSpriteAnim(sprite, 1);
@@ -6043,7 +6044,7 @@ void StopPokemonAnimationDelayTask(void)
DestroyTask(delayTaskId);
}
-void BattleAnimateBackSprite(struct Sprite *sprite, u16 species)
+void BattleAnimateBackSprite(struct Sprite *sprite, enum Species species)
{
if (gHitMarker & HITMARKER_NO_ANIMATIONS && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
{
@@ -6139,7 +6140,7 @@ void HandleSetPokedexFlagFromMon(struct Pokemon *mon, u32 caseId)
HandleSetPokedexFlag(nationalNum, caseId, personality);
}
-bool8 HasTwoFramesAnimation(u16 species)
+bool8 HasTwoFramesAnimation(enum Species species)
{
return P_TWO_FRAME_FRONT_SPRITES
&& GetSpeciesFrontAnimFrames(species) != sAnims_SingleFramePlaceHolder
@@ -6338,7 +6339,7 @@ u8 *MonSpritesGfxManager_GetSpritePtr(u8 managerId, u8 spriteNum)
}
}
-u16 GetFormSpeciesId(u16 speciesId, u8 formId)
+u16 GetFormSpeciesId(enum Species speciesId, u8 formId)
{
if (GetSpeciesFormTable(speciesId) != NULL)
return GetSpeciesFormTable(speciesId)[formId];
@@ -6362,9 +6363,9 @@ u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId)
}
// Returns the current species if no form change is possible
-u32 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, enum FormChanges method)
+enum Species GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, enum FormChanges method)
{
- u32 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL);
+ enum Species species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL);
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
if (formChanges == NULL)
@@ -6385,15 +6386,15 @@ u32 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, enum FormChanges
}
// Returns the current species if no form change is possible
-u32 GetFormChangeTargetSpecies(struct Pokemon *mon, enum FormChanges method)
+enum Species GetFormChangeTargetSpecies(struct Pokemon *mon, enum FormChanges method)
{
return GetFormChangeTargetSpeciesBoxMon(&mon->box, method);
}
-u32 GetFormChangeTargetSpecies_Internal(struct FormChangeContext ctx)
+enum Species GetFormChangeTargetSpecies_Internal(struct FormChangeContext ctx)
{
u32 i;
- u32 targetSpecies = ctx.currentSpecies;
+ enum Species targetSpecies = ctx.currentSpecies;
const struct FormChange *formChanges = GetSpeciesFormChanges(ctx.currentSpecies);
if (formChanges == NULL)
@@ -6615,7 +6616,7 @@ u32 GetFormChangeTargetSpecies_Internal(struct FormChangeContext ctx)
void TrySetDayLimitToFormChange(struct Pokemon *mon)
{
u32 i;
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
for (i = 0; formChanges != NULL && formChanges[i].method != FORM_CHANGE_TERMINATOR; i++)
@@ -6628,7 +6629,7 @@ void TrySetDayLimitToFormChange(struct Pokemon *mon)
}
}
-bool32 DoesSpeciesHaveFormChangeMethod(u16 species, enum FormChanges method)
+bool32 DoesSpeciesHaveFormChangeMethod(enum Species species, enum FormChanges method)
{
u32 i;
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
@@ -6644,7 +6645,7 @@ bool32 DoesSpeciesHaveFormChangeMethod(u16 species, enum FormChanges method)
u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove)
{
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u8 level = GetMonData(mon, MON_DATA_LEVEL);
const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species);
@@ -6700,7 +6701,7 @@ void TryScriptEvolution(void)
for (i = 0; i < PARTY_SIZE; i++)
{
- u32 targetSpecies = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_SCRIPT_TRIGGER, 0, NULL, &canStopEvo, CHECK_EVO);
+ enum Species targetSpecies = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_SCRIPT_TRIGGER, 0, NULL, &canStopEvo, CHECK_EVO);
if (targetSpecies != SPECIES_NONE && !(sTriedEvolving & (1u << i)))
{
@@ -6731,7 +6732,7 @@ void TrySpecialOverworldEvo(void)
for (i = 0; i < PARTY_SIZE; i++)
{
- u32 targetSpecies = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_OVERWORLD_SPECIAL, 0, NULL, &canStopEvo, CHECK_EVO);
+ enum Species targetSpecies = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_OVERWORLD_SPECIAL, 0, NULL, &canStopEvo, CHECK_EVO);
if (targetSpecies != SPECIES_NONE && !(sTriedEvolving & (1u << i)))
{
@@ -6777,8 +6778,8 @@ bool32 TryFormChange(struct Pokemon *mon, enum FormChanges method)
|| GetMonData(mon, MON_DATA_SPECIES_OR_EGG, 0) == SPECIES_EGG)
return FALSE;
- u32 currentSpecies = GetMonData(mon, MON_DATA_SPECIES);
- u32 targetSpecies = GetFormChangeTargetSpecies(mon, method);
+ enum Species currentSpecies = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species targetSpecies = GetFormChangeTargetSpecies(mon, method);
struct PartyState *battlePartyState = GetBattlerPartyStateByPokemon(mon);
// If the battle ends, and there's not a specified species to change back to,
@@ -6815,8 +6816,8 @@ bool32 TryBoxMonFormChange(struct BoxPokemon *boxMon, enum FormChanges method)
|| GetBoxMonData(boxMon, MON_DATA_SPECIES_OR_EGG, 0) == SPECIES_EGG)
return FALSE;
- u32 currentSpecies = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL);
- u32 targetSpecies = GetFormChangeTargetSpeciesBoxMon(boxMon, method);
+ enum Species currentSpecies = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL);
+ enum Species targetSpecies = GetFormChangeTargetSpeciesBoxMon(boxMon, method);
assertf(targetSpecies != SPECIES_NONE, "form change target returned NONE. cur:%d, method:%d", currentSpecies, method)
{
@@ -6834,7 +6835,7 @@ bool32 TryBoxMonFormChange(struct BoxPokemon *boxMon, enum FormChanges method)
void TryToSetBattleFormChangeMoves(struct Pokemon *mon, enum FormChanges method)
{
int i, j;
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
if (formChanges == NULL
@@ -6962,7 +6963,7 @@ void HealBoxPokemon(struct BoxPokemon *boxMon)
BoxMonRestorePP(boxMon);
}
-u16 GetSpeciesPreEvolution(u16 species)
+u16 GetSpeciesPreEvolution(enum Species species)
{
int i, j;
@@ -6977,7 +6978,7 @@ u16 GetSpeciesPreEvolution(u16 species)
for (j = 0; evolutions[j].method != EVOLUTIONS_END; j++)
{
- if (SanitizeSpeciesId(evolutions[j].targetSpecies) == species)
+ if (IsSpeciesEnabled(evolutions[j].targetSpecies) && SanitizeSpeciesId(evolutions[j].targetSpecies) == species)
return i;
}
}
@@ -6991,7 +6992,7 @@ void UpdateDaysPassedSinceFormChange(u16 days)
for (i = 0; i < PARTY_SIZE; i++)
{
struct Pokemon *mon = &gPlayerParty[i];
- u32 currentSpecies = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species currentSpecies = GetMonData(mon, MON_DATA_SPECIES);
u8 daysSinceFormChange;
if (currentSpecies == SPECIES_NONE)
@@ -7028,7 +7029,7 @@ uq4_12_t GetDynamaxLevelHPMultiplier(u32 dynamaxLevel, bool32 inverseMultiplier)
return UQ_4_12(1.5 + 0.05 * dynamaxLevel);
}
-bool32 IsSpeciesRegionalFormFromRegion(u32 species, u32 region)
+bool32 IsSpeciesRegionalFormFromRegion(enum Species species, u32 region)
{
switch (region)
{
@@ -7040,7 +7041,7 @@ bool32 IsSpeciesRegionalFormFromRegion(u32 species, u32 region)
}
}
-bool32 SpeciesHasRegionalForm(u32 species)
+bool32 SpeciesHasRegionalForm(enum Species species)
{
u32 formId;
const u16 *formTable = GetSpeciesFormTable(species);
@@ -7052,10 +7053,10 @@ bool32 SpeciesHasRegionalForm(u32 species)
return FALSE;
}
-u32 GetRegionalFormByRegion(u32 species, u32 region)
+u32 GetRegionalFormByRegion(enum Species species, u32 region)
{
u32 formId = 0;
- u32 firstFoundSpecies = 0;
+ enum Species firstFoundSpecies = 0;
const u16 *formTable = GetSpeciesFormTable(species);
if (formTable != NULL)
@@ -7074,7 +7075,7 @@ u32 GetRegionalFormByRegion(u32 species, u32 region)
return species;
}
-bool32 IsSpeciesForeignRegionalForm(u32 species, u32 currentRegion)
+bool32 IsSpeciesForeignRegionalForm(enum Species species, u32 currentRegion)
{
u32 i;
for (i = 0; i < REGIONS_COUNT; i++)
@@ -7107,7 +7108,7 @@ void SavePlayerPartyMon(u32 index, struct Pokemon *mon)
gSaveBlock1Ptr->playerParty[index] = *mon;
}
-bool32 IsSpeciesOfType(u32 species, enum Type type)
+bool32 IsSpeciesOfType(enum Species species, enum Type type)
{
if (GetSpeciesType(species, 0) == type
|| GetSpeciesType(species, 1) == type)
@@ -7167,3 +7168,12 @@ void ChangePokemonNicknameWithCallback(void (*callback)(void))
GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStringVar2);
DoNamingScreen(NAMING_SCREEN_NICKNAME, gStringVar2, GetBoxMonData(boxMon, MON_DATA_SPECIES), GetBoxMonGender(boxMon), GetBoxMonData(boxMon, MON_DATA_PERSONALITY), callback);
}
+
+bool32 HasShedinjaHPHandling(enum Species species)
+{
+ if (species == SPECIES_SHEDINJA)
+ return TRUE;
+ if (P_BASE_HP_1_SHEDINJA_HANDLING && GetSpeciesBaseHP(species) == 1)
+ return TRUE;
+ return FALSE;
+}
diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c
index f526f90f45..b2994b5df6 100644
--- a/src/pokemon_icon.c
+++ b/src/pokemon_icon.c
@@ -134,12 +134,12 @@ static const u16 sSpriteImageSizes[3][4] =
},
};
-u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality)
+u8 CreateMonIcon(enum Species species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality)
{
return CreateMonIconIsEgg(species, callback, x, y, subpriority, personality, FALSE);
}
-u8 CreateMonIconIsEgg(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool32 isEgg)
+u8 CreateMonIconIsEgg(enum Species species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool32 isEgg)
{
u8 spriteId;
struct MonIconSpriteTemplate iconTemplate =
@@ -177,11 +177,11 @@ u8 CreateMonIconIsEgg(u16 species, void (*callback)(struct Sprite *), s16 x, s16
}
-u8 CreateMonIconNoPersonality(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
+u8 CreateMonIconNoPersonality(enum Species species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
{
return CreateMonIconNoPersonalityIsEgg(species, callback, x, y, subpriority, FALSE);
}
-u8 CreateMonIconNoPersonalityIsEgg(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, bool32 isEgg)
+u8 CreateMonIconNoPersonalityIsEgg(enum Species species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, bool32 isEgg)
{
u8 spriteId;
struct MonIconSpriteTemplate iconTemplate =
@@ -202,7 +202,7 @@ u8 CreateMonIconNoPersonalityIsEgg(u16 species, void (*callback)(struct Sprite *
return spriteId;
}
-u16 GetIconSpecies(u16 species, u32 personality)
+enum Species GetIconSpecies(enum Species species, u32 personality)
{
species = SanitizeSpeciesId(species);
if (species == SPECIES_UNOWN)
@@ -218,7 +218,7 @@ u16 GetUnownLetterByPersonality(u32 personality)
return GET_UNOWN_LETTER(personality);
}
-u16 GetIconSpeciesNoPersonality(u16 species)
+enum Species GetIconSpeciesNoPersonality(enum Species species)
{
species = SanitizeSpeciesId(species);
@@ -227,12 +227,12 @@ u16 GetIconSpeciesNoPersonality(u16 species)
return GetIconSpecies(species, 0);
}
-const u8 *GetMonIconPtr(u16 species, u32 personality)
+const u8 *GetMonIconPtr(enum Species species, u32 personality)
{
return GetMonIconPtrIsEgg(species, personality, FALSE);
}
-const u8 *GetMonIconPtrIsEgg(u16 species, u32 personality, bool32 isEgg)
+const u8 *GetMonIconPtrIsEgg(enum Species species, u32 personality, bool32 isEgg)
{
return GetMonIconTilesIsEgg(GetIconSpecies(species, personality), personality, isEgg);
}
@@ -249,14 +249,14 @@ void LoadMonIconPalettes(void)
LoadSpritePalette(&gMonIconPaletteTable[i]);
}
-void LoadMonIconPalette(u16 species)
+void LoadMonIconPalette(enum Species species)
{
u8 palIndex = GetSpeciesIconPalIndex(species);
if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF)
LoadSpritePalette(&gMonIconPaletteTable[palIndex]);
}
-void LoadMonIconPalettePersonality(u16 species, u32 personality)
+void LoadMonIconPalettePersonality(enum Species species, u32 personality)
{
u8 palIndex;
if (IsPersonalityFemale(species, personality))
@@ -275,7 +275,7 @@ void FreeMonIconPalettes(void)
FreeSpritePaletteByTag(gMonIconPaletteTable[i].tag);
}
-void FreeMonIconPalette(u16 species)
+void FreeMonIconPalette(enum Species species)
{
u8 palIndex = GetSpeciesIconPalIndex(species);
FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag);
@@ -286,12 +286,12 @@ void SpriteCB_MonIcon(struct Sprite *sprite)
UpdateMonIconFrame(sprite);
}
-const u8 *GetMonIconTiles(u16 species, u32 personality)
+const u8 *GetMonIconTiles(enum Species species, u32 personality)
{
return GetMonIconTilesIsEgg(species, personality, FALSE);
}
-const u8 *GetMonIconTilesIsEgg(u16 species, u32 personality, bool32 isEgg)
+const u8 *GetMonIconTilesIsEgg(enum Species species, u32 personality, bool32 isEgg)
{
const u8 *iconSprite;
@@ -329,7 +329,7 @@ void TryLoadAllMonIconPalettesAtOffset(u16 offset)
}
}
-const u16 *GetValidMonIconPalettePtr(u16 species)
+const u16 *GetValidMonIconPalettePtr(enum Species species)
{
return gMonIconPaletteTable[GetSpeciesIconPalIndex(species)].data;
}
diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c
index ae390f1d04..c9a878d617 100755
--- a/src/pokemon_jump.c
+++ b/src/pokemon_jump.c
@@ -2216,7 +2216,7 @@ void IsPokemonJumpSpeciesInParty(void)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES))
{
- u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG);
if (IsSpeciesAllowedInPokemonJump(species))
{
gSpecialVar_Result = TRUE;
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index ca13e3ede4..fa573402ab 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -39,8 +39,7 @@ static const struct UnknownStruct sBigMonSizeTable[] =
{ 1700, 1, -26 },
};
-// - 4 for unused gift ribbon bits in MON_DATA_UNUSED_RIBBONS
-static const u8 sGiftRibbonsMonDataIds[GIFT_RIBBONS_COUNT - 4] =
+static const u8 sGiftRibbonsMonDataIds[NUM_GIFT_RIBBONS] =
{
MON_DATA_MARINE_RIBBON, MON_DATA_LAND_RIBBON, MON_DATA_SKY_RIBBON,
MON_DATA_COUNTRY_RIBBON, MON_DATA_NATIONAL_RIBBON, MON_DATA_EARTH_RIBBON,
@@ -85,7 +84,7 @@ static u8 TranslateBigMonSizeTableIndex(u16 a)
return i;
}
-static u32 GetMonSize(u16 species, u16 b)
+static u32 GetMonSize(enum Species species, u16 b)
{
u64 unk2;
u64 unk4;
@@ -124,7 +123,7 @@ static u8* ReturnHeightStringNoWhitespace(u32 size)
return heightStr;
}
-static u8 CompareMonSize(u16 species, u16 *sizeRecord)
+static u8 CompareMonSize(enum Species species, u16 *sizeRecord)
{
if (gSpecialVar_Result == 0xFF)
{
@@ -159,7 +158,7 @@ static u8 CompareMonSize(u16 species, u16 *sizeRecord)
}
// Stores species name in gStringVar1, trainer's name in gStringVar2, and size in gStringVar3
-static void GetMonSizeRecordInfo(u16 species, u16 *sizeRecord)
+static void GetMonSizeRecordInfo(enum Species species, u16 *sizeRecord)
{
u32 size = GetMonSize(species, *sizeRecord);
@@ -259,7 +258,7 @@ void GiveGiftRibbonToParty(u8 index, u8 ribbonId)
u8 array[ARRAY_COUNT(sGiftRibbonsMonDataIds)];
memcpy(array, sGiftRibbonsMonDataIds, sizeof(sGiftRibbonsMonDataIds));
- if (index < GIFT_RIBBONS_COUNT && ribbonId <= MAX_GIFT_RIBBON)
+ if (index < NUM_GIFT_RIBBONS && ribbonId <= MAX_GIFT_RIBBON)
{
gSaveBlock1Ptr->giftRibbons[index] = ribbonId;
for (i = 0; i < PARTY_SIZE; i++)
diff --git a/src/pokemon_sprite_visualizer.c b/src/pokemon_sprite_visualizer.c
index 13b560051d..dd921e1aa8 100644
--- a/src/pokemon_sprite_visualizer.c
+++ b/src/pokemon_sprite_visualizer.c
@@ -519,7 +519,7 @@ static void PrintInstructionsOnWindow(struct PokemonSpriteVisualizer *data)
{
u8 fontId = FONT_SMALL;
u8 x = 2;
- u16 species = data->modifyArrows.currValue;
+ enum Species species = IsSpeciesEnabled(data->modifyArrows.currValue) ? SanitizeSpeciesId(data->modifyArrows.currValue) : SPECIES_NONE;
u8 textBottom[] = _("BACK:\nFRONT:\nBG:$");
u8 textBottomForms[] = _("BACK:\nFRONT:\nBG:\nFORMS:$");
@@ -575,7 +575,8 @@ static void SetStructPtr(u8 taskId, void *ptr)
static void PrintDigitChars(struct PokemonSpriteVisualizer *data)
{
s32 i;
- u16 species = data->modifyArrows.currValue;
+ enum Species species = IsSpeciesEnabled(data->modifyArrows.currValue) ? data->modifyArrows.currValue : SPECIES_NONE;
+
u8 text[MODIFY_DIGITS_MAX + POKEMON_NAME_LENGTH + 8];
for (i = 0; i < data->modifyArrows.maxDigits; i++)
@@ -782,7 +783,7 @@ static void UpdateBattlerValue(struct PokemonSpriteVisualizer *data)
}
}
-static void BattleLoadOpponentMonSpriteGfxCustom(u16 species, bool8 isFemale, bool8 isShiny, enum BattlerId battler)
+static void BattleLoadOpponentMonSpriteGfxCustom(enum Species species, bool8 isFemale, bool8 isShiny, enum BattlerId battler)
{
const u16 *palette = GetMonSpritePalFromSpecies(species, isShiny, isFemale);
u16 paletteOffset = OBJ_PLTT_ID(battler);
@@ -793,9 +794,10 @@ static void BattleLoadOpponentMonSpriteGfxCustom(u16 species, bool8 isFemale, bo
static void SetConstSpriteValues(struct PokemonSpriteVisualizer *data)
{
- data->constSpriteValues.frontPicCoords = GetSpeciesFrontPicYOffset(data->currentmonId);
- data->constSpriteValues.frontElevation = GetSpeciesEnemyElevation(data->currentmonId);
- data->constSpriteValues.backPicCoords = GetSpeciesBackPicYOffset(data->currentmonId);
+ enum Species species = IsSpeciesEnabled(data->currentmonId) ? SanitizeSpeciesId(data->currentmonId) : SPECIES_NONE;
+ data->constSpriteValues.frontPicCoords = GetSpeciesFrontPicYOffset(species);
+ data->constSpriteValues.frontElevation = GetSpeciesEnemyElevation(species);
+ data->constSpriteValues.backPicCoords = GetSpeciesBackPicYOffset(species);
}
static void ResetOffsetSpriteValues(struct PokemonSpriteVisualizer *data)
@@ -809,17 +811,17 @@ static void ResetShadowSettings(struct PokemonSpriteVisualizer *data)
{
if (B_ENEMY_MON_SHADOW_STYLE <= GEN_3 || P_GBA_STYLE_SPECIES_GFX == TRUE)
return;
-
- data->shadowSettings.definedX = GetSpeciesEnemyShadowXOffset(data->currentmonId);
- data->shadowSettings.definedY = GetSpeciesEnemyShadowYOffset(data->currentmonId);
- data->shadowSettings.definedSize = GetSpeciesEnemyShadowSize(data->currentmonId);
+ enum Species species = IsSpeciesEnabled(data->currentmonId) ? SanitizeSpeciesId(data->currentmonId) : SPECIES_NONE;
+ data->shadowSettings.definedX = GetSpeciesEnemyShadowXOffset(species);
+ data->shadowSettings.definedY = GetSpeciesEnemyShadowYOffset(species);
+ data->shadowSettings.definedSize = GetSpeciesEnemyShadowSize(species);
data->shadowSettings.overrideX = data->shadowSettings.definedX;
data->shadowSettings.overrideY = data->shadowSettings.definedY;
data->shadowSettings.overrideSize = data->shadowSettings.definedSize;
}
-static u8 GetBattlerSpriteFinal_YCustom(u16 species, s8 offset_picCoords, s8 offset_elevation)
+static u8 GetBattlerSpriteFinal_YCustom(enum Species species, s8 offset_picCoords, s8 offset_elevation)
{
u16 offset;
u8 y;
@@ -909,7 +911,7 @@ static void SpriteCB_Follower(struct Sprite *sprite)
static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonSpriteVisualizer *data)
{
bool8 invisible = FALSE;
- u16 species = SanitizeSpeciesId(data->currentmonId);
+ enum Species species = IsSpeciesEnabled(data->currentmonId) ? SanitizeSpeciesId(data->currentmonId) : SPECIES_NONE;
if (B_ENEMY_MON_SHADOW_STYLE >= GEN_4 && P_GBA_STYLE_SPECIES_GFX == FALSE)
{
@@ -1039,7 +1041,7 @@ static void DrawFollowerSprite(struct PokemonSpriteVisualizer *data)
if (!OW_POKEMON_OBJECT_EVENTS)
return;
- u16 species = SanitizeSpeciesId(data->currentmonId);
+ enum Species species = IsSpeciesEnabled(data->currentmonId) ? SanitizeSpeciesId(data->currentmonId) : SPECIES_NONE;
u16 graphicsId = species + OBJ_EVENT_MON;
if (data->isShiny)
graphicsId += OBJ_EVENT_MON_SHINY;
@@ -1210,7 +1212,7 @@ void CB2_Pokemon_Sprite_Visualizer(void)
u8 taskId;
const u16 *palette;
struct PokemonSpriteVisualizer *data;
- u16 species;
+ enum Species species;
s16 offset_y;
u8 front_x = sBattlerCoords[0][1].x;
u8 front_y;
@@ -1267,7 +1269,7 @@ void CB2_Pokemon_Sprite_Visualizer(void)
SetStructPtr(taskId, data);
data->currentmonId = SPECIES_BULBASAUR;
- species = SanitizeSpeciesId(data->currentmonId);
+ species = IsSpeciesEnabled(data->currentmonId) ? SanitizeSpeciesId(data->currentmonId) : SPECIES_NONE;
//Print instructions
PrintInstructionsOnWindow(data);
@@ -1384,7 +1386,7 @@ static void ResetBGs_PokemonSpriteVisualizer(u16 a)
static void ApplyOffsetSpriteValues(struct PokemonSpriteVisualizer *data)
{
- u16 species = SanitizeSpeciesId(data->currentmonId);
+ enum Species species = IsSpeciesEnabled(data->currentmonId) ? SanitizeSpeciesId(data->currentmonId) : SPECIES_NONE;
//Back
gSprites[data->backspriteId].y = VISUALIZER_MON_BACK_Y + GetSpeciesBackPicYOffset(species) + data->offsetsSpriteValues.offset_back_picCoords;
//Front
@@ -1397,7 +1399,7 @@ static void ApplyOffsetSpriteValues(struct PokemonSpriteVisualizer *data)
static void UpdateSubmenuOneOptionValue(u8 taskId, bool8 increment)
{
struct PokemonSpriteVisualizer *data = GetStructPtr(taskId);
- u16 species = SanitizeSpeciesId(data->currentmonId);
+ enum Species species = IsSpeciesEnabled(data->currentmonId) ? SanitizeSpeciesId(data->currentmonId) : SPECIES_NONE;
u8 option = data->submenuYpos[1];
switch (option)
@@ -1482,7 +1484,7 @@ static void UpdateSubmenuOneOptionValue(u8 taskId, bool8 increment)
static void UpdateSubmenuTwoOptionValue(u8 taskId, bool8 increment)
{
struct PokemonSpriteVisualizer *data = GetStructPtr(taskId);
- u16 species = SanitizeSpeciesId(data->currentmonId);
+ enum Species species = IsSpeciesEnabled(data->currentmonId) ? SanitizeSpeciesId(data->currentmonId) : SPECIES_NONE;
u8 option = data->submenuYpos[2];
s8 offset;
u8 y;
@@ -1702,7 +1704,7 @@ static void OpenSubmenu(u32 submenu, u8 taskId)
static void HandleInput_PokemonSpriteVisualizer(u8 taskId)
{
struct PokemonSpriteVisualizer *data = GetStructPtr(taskId);
- u16 species = SanitizeSpeciesId(data->currentmonId);
+ enum Species species = IsSpeciesEnabled(data->currentmonId) ? SanitizeSpeciesId(data->currentmonId) : SPECIES_NONE;
struct Sprite *Frontsprite = &gSprites[data->frontspriteId];
struct Sprite *Backsprite = &gSprites[data->backspriteId];
@@ -1986,7 +1988,7 @@ static void HandleInput_PokemonSpriteVisualizer(u8 taskId)
static void ReloadPokemonSprites(struct PokemonSpriteVisualizer *data)
{
const u16 *palette;
- u16 species = SanitizeSpeciesId(data->currentmonId);
+ enum Species species = IsSpeciesEnabled(data->currentmonId) ? SanitizeSpeciesId(data->currentmonId) : SPECIES_NONE;
s16 offset_y;
u8 front_x = sBattlerCoords[0][1].x;
u8 front_y;
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 336c2c1398..1e92cb02f2 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -443,8 +443,8 @@ struct PokemonStorageSystemData
struct Sprite **shiftMonSpritePtr;
struct Sprite **releaseMonSpritePtr;
u16 numIconsPerSpecies[MAX_MON_ICONS];
- u16 iconSpeciesList[MAX_MON_ICONS];
- u16 boxSpecies[IN_BOX_COUNT];
+ enum Species iconSpeciesList[MAX_MON_ICONS];
+ enum Species boxSpecies[IN_BOX_COUNT];
u32 boxPersonalities[IN_BOX_COUNT];
bool8 boxIsEgg[IN_BOX_COUNT];
u8 incomingBoxId;
@@ -480,7 +480,7 @@ struct PokemonStorageSystemData
u8 cursorPalNums[2];
const u16 *displayMonPalette;
u32 displayMonPersonality;
- u16 displayMonSpecies;
+ enum Species displayMonSpecies;
u16 displayMonItemId;
u16 displayUnusedVar;
bool8 setMosaic;
@@ -633,7 +633,7 @@ static void ReshowReleaseMon(void);
static bool8 ResetReleaseMonSpritePtr(void);
static void SetMovingMonPriority(u8);
static void SpriteCB_HeldMon(struct Sprite *);
-static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 oamPriority, u8 subpriority, bool32 isEgg);
+static struct Sprite *CreateMonIconSprite(enum Species species, u32 personality, s16 x, s16 y, u8 oamPriority, u8 subpriority, bool32 isEgg);
static void DestroyBoxMonIcon(struct Sprite *);
// Pokรฉmon data
@@ -837,7 +837,7 @@ static bool8 IsDisplayMosaicActive(void);
static void ShowYesNoWindow(s8);
static void UpdateCloseBoxButtonTilemap(bool8);
static void PrintMessage(u8 id);
-static void LoadDisplayMonGfx(u16 species, u32 pid, bool32 isEgg);
+static void LoadDisplayMonGfx(enum Species species, u32 pid, bool32 isEgg);
static void SpriteCB_DisplayMonMosaic(struct Sprite *);
static void SetPartySlotTilemap(u8, bool8);
@@ -3994,7 +3994,7 @@ static void CreateDisplayMonSprite(void)
}
}
-static void LoadDisplayMonGfx(u16 species, u32 pid, bool32 isEgg)
+static void LoadDisplayMonGfx(enum Species species, u32 pid, bool32 isEgg)
{
if (sStorage->displayMonSprite == NULL)
return;
@@ -4451,7 +4451,7 @@ static u8 GetMonIconPriorityByCursorPos(void)
static void CreateMovingMonIcon(void)
{
u32 personality = GetMonData(&sStorage->movingMon, MON_DATA_PERSONALITY);
- u16 species = GetMonData(&sStorage->movingMon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(&sStorage->movingMon, MON_DATA_SPECIES);
u8 priority = GetMonIconPriorityByCursorPos();
bool32 isEgg = GetMonData(&sStorage->movingMon, MON_DATA_IS_EGG);
@@ -4474,7 +4474,7 @@ static void InitBoxMonSprites(u8 boxId)
{
u8 boxPosition;
u16 i, j, count;
- u16 species;
+ enum Species species;
u32 personality;
count = 0;
@@ -4507,7 +4507,7 @@ static void InitBoxMonSprites(u8 boxId)
static void CreateBoxMonIconAtPos(u8 boxPosition)
{
- u16 species = GetCurrentBoxMonData(boxPosition, MON_DATA_SPECIES);
+ enum Species species = GetCurrentBoxMonData(boxPosition, MON_DATA_SPECIES);
bool32 isEgg = GetCurrentBoxMonData(boxPosition, MON_DATA_IS_EGG);
if (species != SPECIES_NONE)
@@ -4744,7 +4744,7 @@ static void SetBoxMonIconObjMode(u8 boxPosition, u8 objMode)
static void CreatePartyMonsSprites(bool8 visible)
{
u16 i, count;
- u16 species = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES);
bool32 isEgg = GetMonData(&gPlayerParty[0], MON_DATA_IS_EGG);
u32 personality = GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY);
@@ -5103,7 +5103,7 @@ static void SpriteCB_HeldMon(struct Sprite *sprite)
sprite->y = sStorage->cursorSprite->y + sStorage->cursorSprite->y2 + 4;
}
-static u16 TryLoadMonIconTiles(u16 species, u32 personality, bool32 isEgg)
+static u16 TryLoadMonIconTiles(enum Species species, u32 personality, bool32 isEgg)
{
u16 i, offset;
@@ -5143,7 +5143,7 @@ static u16 TryLoadMonIconTiles(u16 species, u32 personality, bool32 isEgg)
return offset;
}
-static void RemoveSpeciesFromIconList(u16 species)
+static void RemoveSpeciesFromIconList(enum Species species)
{
u16 i;
bool8 hasFemale = FALSE;
@@ -5168,7 +5168,7 @@ static void RemoveSpeciesFromIconList(u16 species)
}
}
-static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 oamPriority, u8 subpriority, bool32 isEgg)
+static struct Sprite *CreateMonIconSprite(enum Species species, u32 personality, s16 x, s16 y, u8 oamPriority, u8 subpriority, bool32 isEgg)
{
u16 tileNum;
u8 spriteId;
@@ -6802,7 +6802,7 @@ s16 CompactPartySlots(void)
for (i = 0, last = 0; i < PARTY_SIZE; i++)
{
- u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
if (species != SPECIES_NONE)
{
if (i != last)
@@ -7719,7 +7719,7 @@ static u8 SetSelectionMenuTexts(void)
static bool8 SetMenuTexts_Mon(void)
{
- u16 species = GetSpeciesAtCursorPosition();
+ enum Species species = GetSpeciesAtCursorPosition();
switch (sStorage->boxOption)
{
@@ -8536,7 +8536,7 @@ static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn)
static void MultiMove_SetIconToBg(u8 x, u8 y)
{
u8 position = x + (IN_BOX_COLUMNS * y);
- u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES);
+ enum Species species = GetCurrentBoxMonData(position, MON_DATA_SPECIES);
u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY);
bool32 isEgg = GetCurrentBoxMonData(position, MON_DATA_IS_EGG);
@@ -8562,7 +8562,7 @@ static void MultiMove_SetIconToBg(u8 x, u8 y)
static void MultiMove_ClearIconFromBg(u8 x, u8 y)
{
u8 position = x + (IN_BOX_COLUMNS * y);
- u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetCurrentBoxMonData(position, MON_DATA_SPECIES_OR_EGG);
if (species != SPECIES_NONE)
{
@@ -10050,8 +10050,8 @@ static void TilemapUtil_Draw(u8 id)
void UpdateSpeciesSpritePSS(struct BoxPokemon *boxMon)
{
- u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
- bool8 isShiny = GetBoxMonData(boxMon, MON_DATA_IS_SHINY);
+ enum Species species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
+ bool32 isShiny = GetBoxMonData(boxMon, MON_DATA_IS_SHINY);
u32 pid = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
bool32 isEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG);
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index e2e73964d5..ce4944e3fa 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -133,8 +133,8 @@ static EWRAM_DATA struct PokemonSummaryScreenData
/*0x0C*/ struct Pokemon currentMon;
/*0x70*/ struct PokeSummary
{
- u16 species; // 0x0
- u16 species2; // 0x2
+ enum Species species; // 0x0
+ enum Species species2; // 0x2
u8 isEgg:1; // 0x4
u8 isShiny:1;
u8 padding:6;
@@ -247,7 +247,7 @@ static void ResetWindows(void);
static void PrintMonInfo(void);
static void PrintNotEggInfo(void);
static void PrintEggInfo(void);
-static void PrintGenderSymbol(struct Pokemon *, u16);
+static void PrintGenderSymbol(struct Pokemon *, enum Species);
static void PrintPageNamesAndStats(void);
static void PutPageWindowTilemaps(u8);
static void ClearPageWindowTilemaps(u8);
@@ -3347,7 +3347,7 @@ static void PrintEggInfo(void)
ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
-static void PrintGenderSymbol(struct Pokemon *mon, u16 species)
+static void PrintGenderSymbol(struct Pokemon *mon, enum Species species)
{
if (species != SPECIES_NIDORAN_M && species != SPECIES_NIDORAN_F)
{
@@ -4389,7 +4389,7 @@ static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible)
static void HidePageSpecificSprites(void)
{
- // Keeps Pok๏ฟฝmon, caught ball and status sprites visible.
+ // Keeps Pokรฉmon, caught ball and status sprites visible.
u8 i;
for (i = SPRITE_ARR_ID_TYPE; i < ARRAY_COUNT(sMonSummaryScreen->spriteIds); i++)
diff --git a/src/pokenav_conditions.c b/src/pokenav_conditions.c
index c110c3fdd4..056357710d 100644
--- a/src/pokenav_conditions.c
+++ b/src/pokenav_conditions.c
@@ -536,7 +536,7 @@ static void ConditionGraphDrawMonPic(s16 listId, u8 loadId)
u32 boxId = monListPtr->monData[listId].boxId;
u32 monId = monListPtr->monData[listId].monId;
- u32 species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
+ enum Species species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
bool32 isShiny = GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_SHINY, NULL);
u32 personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL);
bool32 isEgg = GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_EGG, NULL);
diff --git a/src/pokenav_ribbons_summary.c b/src/pokenav_ribbons_summary.c
index 182949d73b..142e861c7c 100644
--- a/src/pokenav_ribbons_summary.c
+++ b/src/pokenav_ribbons_summary.c
@@ -403,7 +403,7 @@ static void GetMonNicknameLevelGender(u8 *nick, u8 *level, u8 *gender)
StringGet_Nickname(nick);
}
-static void GetMonSpeciesPersonalityShiny(u16 *species, u32 *personality, bool8 *isShiny)
+static void GetMonSpeciesPersonalityShiny(enum Species *species, u32 *personality, bool32 *isShiny)
{
struct Pokenav_RibbonsSummaryList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
struct PokenavMonList *mons = list->monList;
@@ -946,9 +946,9 @@ static void PrintRibbonsMonListIndex(struct Pokenav_RibbonsSummaryMenu *menu)
static void ResetSpritesAndDrawMonFrontPic(struct Pokenav_RibbonsSummaryMenu *menu)
{
- u16 species;
+ enum Species species;
u32 personality;
- bool8 isShiny;
+ bool32 isShiny;
GetMonSpeciesPersonalityShiny(&species, &personality, &isShiny);
ResetAllPicSprites();
@@ -966,9 +966,10 @@ static void DestroyRibbonsMonFrontPic(struct Pokenav_RibbonsSummaryMenu *menu)
// x is given as either MON_SPRITE_X_ON or MON_SPRITE_X_OFF (but ignored and MON_SPRITE_X_ON is used)
static u16 DrawRibbonsMonFrontPic(s32 x, s32 y)
{
- u16 species, spriteId;
+ enum Species species;
+ u16 spriteId;
u32 personality;
- bool8 isShiny;
+ bool32 isShiny;
GetMonSpeciesPersonalityShiny(&species, &personality, &isShiny);
spriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, MON_SPRITE_X_ON, MON_SPRITE_Y, 15, TAG_NONE);
diff --git a/src/pokerus.c b/src/pokerus.c
index 1ec3ff81b1..b489cf9c1e 100644
--- a/src/pokerus.c
+++ b/src/pokerus.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "event_data.h"
-#include "generational_changes.h"
+#include "config_changes.h"
#include "pokemon.h"
#include "pokerus.h"
#include "random.h"
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 29609dc23a..c52fe8c626 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -136,7 +136,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
case 19:
{
enum BattlerId opponentBattler;
- u16 species;
+ enum Species species;
LoadAndCreateEnemyShadowSprites();
@@ -316,7 +316,7 @@ void CreateBattlerSprite(enum BattlerId battler)
return;
if (gBattleScripting.monCaught) // Don't create opponent sprite if it has been caught.
return;
- u32 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
SetMultiuseSpriteTemplateToPokemon(species, position);
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler));
@@ -353,7 +353,7 @@ void CreateBattlerSprite(enum BattlerId battler)
struct Pokemon *mon = GetBattlerMon(battler);
if (!IsValidForBattle(mon))
return;
- u32 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
SetMultiuseSpriteTemplateToPokemon(species, position);
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler));
diff --git a/src/roamer.c b/src/roamer.c
index 2dce1dc5ed..44ff88d810 100644
--- a/src/roamer.c
+++ b/src/roamer.c
@@ -98,7 +98,7 @@ void MoveAllRoamers(void)
RoamerMove(i);
}
-static void CreateInitialRoamerMon(u8 index, u16 species, u8 level)
+static void CreateInitialRoamerMon(u8 index, enum Species species, u8 level)
{
ClearRoamerLocationHistory(index);
u32 personality = GetMonPersonality(species,
@@ -137,7 +137,7 @@ static u8 GetFirstInactiveRoamerIndex(void)
return ROAMER_COUNT;
}
-bool8 TryAddRoamer(u16 species, u8 level)
+bool8 TryAddRoamer(enum Species species, u8 level)
{
u8 index = GetFirstInactiveRoamerIndex();
diff --git a/src/scrcmd.c b/src/scrcmd.c
index ce22da1985..f95f7b0952 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1999,7 +1999,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx)
bool8 ScrCmd_showmonpic(struct ScriptContext *ctx)
{
- u16 species = VarGet(ScriptReadHalfword(ctx));
+ enum Species species = VarGet(ScriptReadHalfword(ctx));
u8 x = ScriptReadByte(ctx);
u8 y = ScriptReadByte(ctx);
@@ -2116,7 +2116,7 @@ bool8 ScrCmd_vmessage(struct ScriptContext *ctx)
bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx)
{
u8 stringVarIndex = ScriptReadByte(ctx);
- u16 species = VarGet(ScriptReadHalfword(ctx)) & OBJ_EVENT_MON_SPECIES_MASK; // ignore possible shiny / form bits
+ enum Species species = VarGet(ScriptReadHalfword(ctx)) & OBJ_EVENT_MON_SPECIES_MASK; // ignore possible shiny / form bits
Script_RequestEffects(SCREFF_V1);
@@ -2132,7 +2132,7 @@ bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx)
u8 *dest = sScriptStringVars[stringVarIndex];
u8 partyIndex = GetLeadMonIndex();
- u32 species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES);
StringCopy(dest, GetSpeciesName(species));
return FALSE;
}
@@ -2285,7 +2285,7 @@ bool8 ScrCmd_bufferboxname(struct ScriptContext *ctx)
bool8 ScrCmd_giveegg(struct ScriptContext *ctx)
{
- u16 species = VarGet(ScriptReadHalfword(ctx));
+ enum Species species = VarGet(ScriptReadHalfword(ctx));
Script_RequestEffects(SCREFF_V1 | SCREFF_SAVE);
@@ -2320,7 +2320,7 @@ bool8 ScrCmd_checkfieldmove(struct ScriptContext *ctx)
move = FieldMove_GetMoveId(fieldMove);
for (u32 i = 0; i < PARTY_SIZE; i++)
{
- u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
+ enum Species species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
if (!species)
break;
if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && MonKnowsMove(&gPlayerParty[i], move) == TRUE)
@@ -2515,10 +2515,10 @@ bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx)
bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx)
{
- u16 species = ScriptReadHalfword(ctx);
+ enum Species species = ScriptReadHalfword(ctx);
u8 level = ScriptReadByte(ctx);
enum Item item = ScriptReadHalfword(ctx);
- u16 species2 = ScriptReadHalfword(ctx);
+ enum Species species2 = ScriptReadHalfword(ctx);
u8 level2 = ScriptReadByte(ctx);
enum Item item2 = ScriptReadHalfword(ctx);
@@ -2716,7 +2716,7 @@ bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx)
bool8 ScrCmd_playmoncry(struct ScriptContext *ctx)
{
- u16 species = VarGet(ScriptReadHalfword(ctx));
+ enum Species species = VarGet(ScriptReadHalfword(ctx));
u16 mode = VarGet(ScriptReadHalfword(ctx));
Script_RequestEffects(SCREFF_V1 | SCREFF_HARDWARE);
@@ -3138,7 +3138,7 @@ bool8 Scrcmd_getsetpokedexflag(struct ScriptContext *ctx)
bool8 Scrcmd_checkspecies(struct ScriptContext *ctx)
{
- u32 givenSpecies = VarGet(ScriptReadHalfword(ctx));
+ enum Species givenSpecies = VarGet(ScriptReadHalfword(ctx));
Script_RequestEffects(SCREFF_V1);
@@ -3149,7 +3149,7 @@ bool8 Scrcmd_checkspecies(struct ScriptContext *ctx)
bool8 Scrcmd_checkspecies_choose(struct ScriptContext *ctx)
{
- u32 givenSpecies = VarGet(ScriptReadHalfword(ctx));
+ enum Species givenSpecies = VarGet(ScriptReadHalfword(ctx));
Script_RequestEffects(SCREFF_V1);
diff --git a/src/script_menu.c b/src/script_menu.c
index 3e8230db30..07be9c4967 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -966,7 +966,7 @@ static void Task_PokemonPicWindow(u8 taskId)
}
}
-bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y)
+bool8 ScriptMenu_ShowPokemonPic(enum Species species, u8 x, u8 y)
{
u8 taskId;
u8 spriteId;
diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c
index 2a592dc7de..af995259c1 100644
--- a/src/script_pokemon_util.c
+++ b/src/script_pokemon_util.c
@@ -63,7 +63,7 @@ static void HealPlayerBoxes(void)
}
}
-u8 ScriptGiveEgg(u16 species)
+u8 ScriptGiveEgg(enum Species species)
{
struct Pokemon mon;
u8 isEgg;
@@ -97,7 +97,7 @@ static bool32 CheckPartyMonHasHeldItem(enum Item item)
for (i = 0; i < PARTY_SIZE; i++)
{
- u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG);
if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == item)
return TRUE;
}
@@ -113,7 +113,7 @@ bool8 DoesPartyHaveEnigmaBerry(void)
return hasItem;
}
-void CreateScriptedWildMon(u16 species, u8 level, enum Item item)
+void CreateScriptedWildMon(enum Species species, u8 level, enum Item item)
{
u8 heldItem[2];
@@ -131,7 +131,7 @@ void CreateScriptedWildMon(u16 species, u8 level, enum Item item)
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem);
}
}
-void CreateScriptedDoubleWildMon(u16 species1, u8 level1, enum Item item1, u16 species2, u8 level2, enum Item item2)
+void CreateScriptedDoubleWildMon(enum Species species1, u8 level1, enum Item item1, enum Species species2, u8 level2, enum Item item2)
{
u8 heldItem1[2];
u8 heldItem2[2];
@@ -358,7 +358,7 @@ void SetTeraType(struct ScriptContext *ctx)
* if side/slot are assigned, it will create the mon at the assigned party location
* if slot == PARTY_SIZE, it will give the mon to first available party or storage slot
*/
-static u32 ScriptGiveMonParameterized(u8 side, u8 slot, u16 species, u8 level, enum Item item, enum PokeBall ball, u8 nature, u8 abilityNum, u8 gender, u16 *evs, u16 *ivs, enum Move *moves, enum ShinyMode shinyMode, bool8 gmaxFactor, enum Type teraType, u8 dmaxLevel)
+static u32 ScriptGiveMonParameterized(u8 side, u8 slot, enum Species species, u8 level, enum Item item, enum PokeBall ball, u8 nature, u8 abilityNum, u8 gender, u16 *evs, u16 *ivs, enum Move *moves, enum ShinyMode shinyMode, bool8 gmaxFactor, enum Type teraType, u8 dmaxLevel)
{
struct Pokemon mon;
u32 i;
@@ -473,7 +473,7 @@ static u32 ScriptGiveMonParameterized(u8 side, u8 slot, u16 species, u8 level, e
return MON_GIVEN_TO_PARTY;
}
-u32 ScriptGiveMon(u16 species, u8 level, enum Item item)
+u32 ScriptGiveMon(enum Species species, u8 level, enum Item item)
{
struct Pokemon mon;
u8 heldItem[2];
@@ -513,7 +513,7 @@ void ScrCmd_createmon(struct ScriptContext *ctx)
{
u8 side = ScriptReadByte(ctx);
u8 slot = ScriptReadByte(ctx);
- u16 species = VarGet(ScriptReadHalfword(ctx));
+ enum Species species = VarGet(ScriptReadHalfword(ctx));
u8 level = VarGet(ScriptReadHalfword(ctx));
u32 flags = ScriptReadWord(ctx);
@@ -653,7 +653,7 @@ void Script_SetStatus1(struct ScriptContext *ctx)
if (slot >= PARTY_SIZE)
{
- u16 species;
+ enum Species species;
for (slot = 0; slot < PARTY_SIZE; slot++)
{
diff --git a/src/sound.c b/src/sound.c
index 1944c4bf59..988732b827 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -310,7 +310,7 @@ bool8 IsBGMStopped(void)
return FALSE;
}
-void PlayCry_Normal(u16 species, s8 pan)
+void PlayCry_Normal(enum Species species, s8 pan)
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 85);
PlayCryInternal(species, pan, CRY_VOLUME, CRY_PRIORITY_NORMAL, CRY_MODE_NORMAL);
@@ -318,13 +318,13 @@ void PlayCry_Normal(u16 species, s8 pan)
RestoreBGMVolumeAfterPokemonCry();
}
-void PlayCry_NormalNoDucking(u16 species, s8 pan, s8 volume, u8 priority)
+void PlayCry_NormalNoDucking(enum Species species, s8 pan, s8 volume, u8 priority)
{
PlayCryInternal(species, pan, volume, priority, CRY_MODE_NORMAL);
}
// Assuming it's not CRY_MODE_DOUBLES, this is equivalent to PlayCry_Normal except it allows other modes.
-void PlayCry_ByMode(u16 species, s8 pan, u8 mode)
+void PlayCry_ByMode(enum Species species, s8 pan, u8 mode)
{
if (mode == CRY_MODE_DOUBLES)
{
@@ -340,7 +340,7 @@ void PlayCry_ByMode(u16 species, s8 pan, u8 mode)
}
// Used when releasing multiple Pokรฉmon at once in battle.
-void PlayCry_ReleaseDouble(u16 species, s8 pan, u8 mode)
+void PlayCry_ReleaseDouble(enum Species species, s8 pan, u8 mode)
{
if (mode == CRY_MODE_DOUBLES)
{
@@ -355,7 +355,7 @@ void PlayCry_ReleaseDouble(u16 species, s8 pan, u8 mode)
}
// Duck the BGM but don't restore it. Not present in R/S
-void PlayCry_DuckNoRestore(u16 species, s8 pan, u8 mode)
+void PlayCry_DuckNoRestore(enum Species species, s8 pan, u8 mode)
{
if (mode == CRY_MODE_DOUBLES)
{
@@ -369,7 +369,7 @@ void PlayCry_DuckNoRestore(u16 species, s8 pan, u8 mode)
}
}
-void PlayCry_Script(u16 species, u8 mode)
+void PlayCry_Script(enum Species species, u8 mode)
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 85);
PlayCryInternal(species, 0, CRY_VOLUME, CRY_PRIORITY_NORMAL, mode);
@@ -377,7 +377,7 @@ void PlayCry_Script(u16 species, u8 mode)
RestoreBGMVolumeAfterPokemonCry();
}
-void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode)
+void PlayCryInternal(enum Species species, s8 pan, s8 volume, u8 priority, u8 mode)
{
bool32 reverse;
u32 release;
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 123defed23..7b3b66fe7f 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -44,7 +44,7 @@ static void Task_DeclineStarter(u8 taskId);
static void Task_MoveStarterChooseCursor(u8 taskId);
static void Task_CreateStarterLabel(u8 taskId);
static void CreateStarterPokemonLabel(u8 selection);
-static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y);
+static u8 CreatePokemonFrontSprite(enum Species species, u8 x, u8 y);
static void SpriteCB_SelectionHand(struct Sprite *sprite);
static void SpriteCB_Pokeball(struct Sprite *sprite);
static void SpriteCB_StarterPokemon(struct Sprite *sprite);
@@ -574,7 +574,7 @@ static void CreateStarterPokemonLabel(u8 selection)
s32 width;
u8 labelLeft, labelRight, labelTop, labelBottom;
- u16 species = GetStarterPokemon(selection);
+ enum Species species = GetStarterPokemon(selection);
CopyMonCategoryText(species, categoryText);
speciesName = GetSpeciesName(species);
@@ -625,7 +625,7 @@ static void Task_CreateStarterLabel(u8 taskId)
gTasks[taskId].func = Task_HandleStarterChooseInput;
}
-static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
+static u8 CreatePokemonFrontSprite(enum Species species, u8 x, u8 y)
{
u8 spriteId;
diff --git a/src/text.c b/src/text.c
index f06df2873f..351c8d8471 100644
--- a/src/text.c
+++ b/src/text.c
@@ -480,7 +480,10 @@ bool32 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, voi
sTempTextPrinter.textSpeed = speed;
if (printerTemplate->type == SPRITE_TEXT_PRINTER)
- printerTemplate->firstSprite = printerTemplate->spriteId;
+ {
+ sTempTextPrinter.printerTemplate.firstSprite = printerTemplate->spriteId;
+ sTempTextPrinter.printerTemplate.firstSpriteInRow = printerTemplate->spriteId;
+ }
GenerateFontHalfRowLookupTable(printerTemplate->color);
diff --git a/src/trade.c b/src/trade.c
index c786759d54..3a4be3f66d 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -150,7 +150,7 @@ enum SignalStatus {
struct InGameTrade {
u8 nickname[POKEMON_NAME_LENGTH + 1];
- u16 species;
+ enum Species species;
u8 ivs[NUM_STATS];
u8 abilityNum;
u32 otId;
@@ -161,7 +161,7 @@ struct InGameTrade {
u8 otName[TRAINER_NAME_LENGTH + 1];
u8 otGender;
u8 sheen;
- u16 requestedSpecies;
+ enum Species requestedSpecies;
};
static EWRAM_DATA u8 *sMenuTextTileBuffer = NULL;
@@ -202,7 +202,8 @@ static EWRAM_DATA struct {
u8 partnerCursorPosition;
u16 linkData[20];
u8 timer;
- u8 giftRibbons[GIFT_RIBBONS_COUNT];
+ u8 giftRibbons[NUM_GIFT_RIBBONS];
+ u8 padding[4];
u8 filler_B4[0x81C];
struct {
bool8 active;
@@ -247,7 +248,7 @@ static EWRAM_DATA struct {
u16 gbaScale;
u16 alpha;
bool8 isLinkTrade;
- u16 monSpecies[2];
+ enum Species monSpecies[2];
u16 cachedMapMusic;
u8 textColors[3];
u8 filler_F9;
@@ -1157,7 +1158,7 @@ static bool8 BufferTradeParties(void)
for (i = 0, mon = gEnemyParty; i < PARTY_SIZE; mon++, i++)
{
u8 name[POKEMON_NAME_LENGTH + 1];
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
if (species != SPECIES_NONE)
{
@@ -1559,7 +1560,7 @@ static void CB_ShowTradeMonSummaryScreen(void)
static u8 CheckValidityOfTradeMons(u8 *aliveMons, u8 playerPartyCount, u8 playerMonIdx, u8 partnerMonIdx)
{
int i;
- u16 partnerSpecies;
+ enum Species partnerSpecies;
u8 hasLiveMon = 0;
// Make sure mon to be traded isn't player's last alive mon
@@ -2384,8 +2385,8 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int
{
int i, numMonsLeft;
struct LinkPlayer *partner;
- u32 species[PARTY_SIZE];
- u32 species2[PARTY_SIZE];
+ enum Species species[PARTY_SIZE];
+ enum Species species2[PARTY_SIZE];
for (i = 0; i < partyCount; i++)
{
@@ -2483,7 +2484,7 @@ s32 GetGameProgressForLinkTrade(void)
return TRADE_BOTH_PLAYERS_READY;
}
-int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, enum Type requestedType, u16 playerSpecies, bool8 isModernFatefulEncounter)
+int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, enum Species playerSpecies2, enum Species partnerSpecies, enum Type requestedType, enum Species playerSpecies, bool8 isModernFatefulEncounter)
{
bool8 playerHasNationalDex = player.hasNationalDex;
bool8 playerCanLinkNationally = player.canLinkNationally;
@@ -2545,7 +2546,7 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf
return UR_TRADE_MSG_NONE;
}
-int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 species2, u16 species, bool8 isModernFatefulEncounter)
+int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, enum Species species2, enum Species species, bool8 isModernFatefulEncounter)
{
bool8 hasNationalDex = player.hasNationalDex;
@@ -2571,7 +2572,7 @@ int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 sp
int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
{
int i, version, versions, canTradeAnyMon, numMonsLeft;
- int speciesArray[PARTY_SIZE];
+ enum Species speciesArray[PARTY_SIZE];
// Make Eggs not count for numMonsLeft
for (i = 0; i < gPlayerPartyCount; i++)
@@ -2766,7 +2767,8 @@ static u32 TradeGetMultiplayerId(void)
static void LoadTradeMonPic(struct Pokemon *mon, u8 state)
{
- u32 species, personality;
+ enum Species species;
+ u32 personality;
u32 whichParty = state / 2;
species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
switch (state % 2)
@@ -3061,7 +3063,7 @@ static void UpdatePokedexForReceivedMon(u8 partyIdx)
if (!GetMonData(mon, MON_DATA_IS_EGG))
{
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY);
enum NationalDexOrder dexNum = SpeciesToNationalPokedexNum(species);
GetSetPokedexFlag(dexNum, FLAG_SET_SEEN);
@@ -4625,12 +4627,12 @@ static void GetInGameTradeMail(struct Mail *mail, const struct InGameTrade *trad
mail->itemId = trade->heldItem;
}
-u16 GetTradeSpecies(void)
+enum Species GetTradeSpecies(void)
{
struct BoxPokemon *boxmon = GetSelectedBoxMonFromPcOrParty();
if (GetBoxMonData(boxmon, MON_DATA_IS_EGG))
return SPECIES_NONE;
- u32 species = GetBoxMonData(boxmon, MON_DATA_SPECIES);
+ enum Species species = GetBoxMonData(boxmon, MON_DATA_SPECIES);
return species;
}
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index 05c60d9221..292c99f99d 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -962,7 +962,7 @@ u8 GetTrainerEncounterMusicIdInTrainerHill(u16 trainerId)
static void SetTrainerHillMonLevel(struct Pokemon *mon, u8 level)
{
- u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
u32 exp = gExperienceTables[GetSpeciesGrowthRate(species)][level];
SetMonData(mon, MON_DATA_EXP, &exp);
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
index 7b251cef8b..15462235a8 100644
--- a/src/trainer_pokemon_sprites.c
+++ b/src/trainer_pokemon_sprites.c
@@ -61,7 +61,7 @@ static bool16 DecompressPic(u16 picId, u32 personality, bool8 isFrontPic, u8 *de
{
if (!isTrainer)
{
- u16 species = picId;
+ enum Species species = picId;
LoadSpecialPokePic(dest, species, personality, isFrontPic);
}
else
@@ -175,7 +175,7 @@ static u16 CreatePicSprite(u16 species, bool8 isShiny, u32 personality, bool8 is
return spriteId;
}
-u16 CreateMonPicSprite_Affine(u16 species, bool8 isShiny, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
+u16 CreateMonPicSprite_Affine(enum Species species, bool8 isShiny, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
{
u8 *framePics;
struct SpriteFrameImage *images;
@@ -302,7 +302,7 @@ static u16 CreateTrainerCardSprite(u16 species, bool8 isShiny, u32 personality,
return 0xFFFF;
}
-u16 CreateMonPicSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
+u16 CreateMonPicSprite(enum Species species, bool8 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
{
return CreatePicSprite(species, isShiny, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE);
}
@@ -317,13 +317,13 @@ u16 FreeAndDestroyMonPicSpriteNoPalette(u16 spriteId)
return FreeAndDestroyPicSpriteInternal(spriteId, FALSE);
}
-static u16 UNUSED LoadMonPicInWindow(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId)
+static u16 UNUSED LoadMonPicInWindow(enum Species species, bool8 isShiny, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId)
{
return LoadPicSpriteInWindow(species, isShiny, personality, isFrontPic, paletteSlot, windowId, FALSE);
}
// Unused, FRLG only
-u16 CreateTrainerCardMonIconSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId)
+u16 CreateTrainerCardMonIconSprite(enum Species species, bool8 isShiny, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId)
{
return CreateTrainerCardSprite(species, isShiny, personality, isFrontPic, destX, destY, paletteSlot, windowId, FALSE);
}
diff --git a/src/trainer_pools.c b/src/trainer_pools.c
index 4589372b29..75b2031fd7 100644
--- a/src/trainer_pools.c
+++ b/src/trainer_pools.c
@@ -173,7 +173,7 @@ static u32 PickMonFromPool(const struct Trainer *trainer, u8 *poolIndexArray, u3
return monIndex;
u32 chosenTags = trainer->party[monIndex].tags;
- u16 chosenSpecies = trainer->party[monIndex].species;
+ enum Species chosenSpecies = trainer->party[monIndex].species;
enum Item chosenItem = trainer->party[monIndex].heldItem;
enum NationalDexOrder chosenNatDex = SpeciesToNationalPokedexNum(chosenSpecies);
// If tag was required, change pool rule to account for the required tag already being picked
@@ -201,7 +201,7 @@ static u32 PickMonFromPool(const struct Trainer *trainer, u8 *poolIndexArray, u3
if (poolIndexArray[currIndex] != POOL_SLOT_DISABLED)
{
u32 currentTags = trainer->party[poolIndexArray[currIndex]].tags;
- u16 currentSpecies = trainer->party[poolIndexArray[currIndex]].species;
+ enum Species currentSpecies = trainer->party[poolIndexArray[currIndex]].species;
enum Item currentItem = trainer->party[poolIndexArray[currIndex]].heldItem;
enum NationalDexOrder currentNatDex = SpeciesToNationalPokedexNum(currentSpecies);
if (currentTags & tagsToEliminate)
diff --git a/src/trainer_slide.c b/src/trainer_slide.c
index 7e4db155da..c8f5841b3d 100644
--- a/src/trainer_slide.c
+++ b/src/trainer_slide.c
@@ -70,6 +70,10 @@ static const u8* const sFrontierTrainerSlides[DIFFICULTY_COUNT][FRONTIER_TRAINER
},
};
+#define TRAINER_RED_TEST 1
+#define TRAINER_LEAF_TEST 2
+#define PARTNER_STEVEN_TEST 1
+
static const u8* const sTestTrainerSlides[DIFFICULTY_COUNT][MAX_TRAINERS_COUNT_EMERALD + PARTNER_COUNT][TRAINER_SLIDE_COUNT] =
{
#include "../test/battle/trainer_slides.h"
@@ -106,7 +110,7 @@ static u32 GetPartyMonCount(u32 firstId, u32 lastId, enum BattleSide side, bool3
{
for (u32 i = firstId; i < lastId; i++)
{
- u32 species = GetMonData(&party[sMultiBattleOrder[i]], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&party[sMultiBattleOrder[i]], MON_DATA_SPECIES_OR_EGG);
if (species != SPECIES_NONE
&& species != SPECIES_EGG
&& (!onlyAlive || GetMonData(&party[sMultiBattleOrder[i]], MON_DATA_HP)))
@@ -119,7 +123,7 @@ static u32 GetPartyMonCount(u32 firstId, u32 lastId, enum BattleSide side, bool3
{
for (u32 i = firstId; i < lastId; i++)
{
- u32 species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG);
+ enum Species species = GetMonData(&party[i], MON_DATA_SPECIES_OR_EGG);
if (species != SPECIES_NONE
&& species != SPECIES_EGG
&& (!onlyAlive || GetMonData(&party[i], MON_DATA_HP)))
diff --git a/src/tv.c b/src/tv.c
index 8884bfd69b..ae7473a49f 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -66,7 +66,7 @@ enum {
COMMON_DATA s8 sCurTVShowSlot = 0;
static s8 sTVShowMixingCurSlot;
-static EWRAM_DATA u16 sPokemonAnglerSpecies = 0;
+static EWRAM_DATA enum Species sPokemonAnglerSpecies = SPECIES_NONE;
static EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0;
static EWRAM_DATA u16 sFindThatGamerCoinsSpent = 0;
static EWRAM_DATA u8 sFindThatGamerWhichGame = SLOT_MACHINE;
@@ -88,7 +88,7 @@ static s8 FindFirstEmptyNormalTVShowSlot(TVShow *);
static void TryReplaceOldTVShowOfKind(u8);
static void InterviewBefore_BravoTrainerPkmnProfile(void);
static void InterviewBefore_NameRater(void);
-static u16 GetRandomDifferentSpeciesSeenByPlayer(u16);
+static enum Species GetRandomDifferentSpeciesSeenByPlayer(enum Species);
static void Script_FindFirstEmptyNormalTVShowSlot(void);
static void CompactTVShowArray(TVShow *);
static s8 GetFirstEmptyPokeNewsSlot(PokeNews *);
@@ -106,7 +106,7 @@ static bool8 TryMixNormalTVShow(TVShow *, TVShow *, u8);
static bool8 TryMixRecordMixTVShow(TVShow *, TVShow *, u8);
static bool8 TryMixOutbreakTVShow(TVShow *, TVShow *, u8);
static void DeactivateShow(u8 showIdx);
-static void DeactivateShowIfNotSeenSpecies(u16, u8);
+static void DeactivateShowIfNotSeenSpecies(enum Species, u8);
static void SetMixedPokeNews(PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT]);
static void ClearInvalidPokeNews(void);
static void ClearPokeNewsIfGameNotComplete(void);
@@ -189,7 +189,7 @@ static const u8 sText_Roulette[] = _("ROULETTE");
static const u8 sText_Jackpot[] = _("jackpot");
static const struct {
- u16 species;
+ enum Species species;
u16 moves[MAX_MON_MOVES];
u8 level;
u8 location;
@@ -1246,7 +1246,7 @@ static void InterviewAfter_ContestLiveUpdates(void)
}
}
-void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, enum Move move, u16 speciesPlayer, u16 speciesOpponent)
+void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, enum Move move, enum Species speciesPlayer, enum Species speciesOpponent)
{
TVShow *show;
u8 name[32];
@@ -1769,7 +1769,7 @@ static void TryPutFishingAdviceOnAir(void)
}
}
-void SetPokemonAnglerSpecies(u16 species)
+void SetPokemonAnglerSpecies(enum Species species)
{
sPokemonAnglerSpecies = species;
}
@@ -2024,7 +2024,7 @@ static void SecretBaseVisit_CalculatePartyData(TVShow *show)
struct
{
enum Move move;
- u16 species;
+ enum Species species;
u8 level;
} secretBaseVisitMonsTemp[PARTY_SIZE] = {0};
@@ -2163,7 +2163,7 @@ void TryPutLotteryWinnerReportOnAir(void)
}
}
-void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIndex, const u16 *movePtr, u16 betterMove)
+void TryPutBattleSeminarOnAir(enum Species foeSpecies, enum Species species, u8 moveIndex, const u16 *movePtr, enum Move betterMove)
{
TVShow *show;
u8 i;
@@ -3040,17 +3040,17 @@ static void CompactTVShowArray(TVShow *shows)
}
}
-static u16 GetRandomDifferentSpeciesAndNameSeenByPlayer(u8 varIdx, u16 excludedSpecies)
+static enum Species GetRandomDifferentSpeciesAndNameSeenByPlayer(u8 varIdx, enum Species excludedSpecies)
{
- u16 species = GetRandomDifferentSpeciesSeenByPlayer(excludedSpecies);
+ enum Species species = GetRandomDifferentSpeciesSeenByPlayer(excludedSpecies);
StringCopy(gTVStringVarPtrs[varIdx], GetSpeciesName(species));
return species;
}
-static u16 GetRandomDifferentSpeciesSeenByPlayer(u16 excludedSpecies)
+static enum Species GetRandomDifferentSpeciesSeenByPlayer(enum Species excludedSpecies)
{
- u16 species = Random() % (NUM_SPECIES - 1) + 1;
- u16 initSpecies = species;
+ enum Species species = Random() % (NUM_SPECIES - 1) + 1;
+ enum Species initSpecies = species;
while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN) != TRUE || species == excludedSpecies)
{
@@ -3148,7 +3148,7 @@ static u8 GetRandomNameRaterStateFromName(TVShow *show)
return nameSum & 7;
}
-static void GetNicknameSubstring(u8 varIdx, u8 whichPosition, u8 charParam, u16 whichString, u16 species, TVShow *show)
+static void GetNicknameSubstring(u8 varIdx, u8 whichPosition, u8 charParam, u16 whichString, enum Species species, TVShow *show)
{
u8 buff[16];
u8 i;
@@ -3586,7 +3586,8 @@ static s8 FindInactiveShowInArray(TVShow *tvShows)
static void DeactivateShowsWithUnseenSpecies(void)
{
u16 i;
- u16 species;
+ enum Species species;
+ u16 facilityAndMode;
for (i = 0; i < LAST_TVSHOW_IDX; i++)
{
@@ -3673,9 +3674,8 @@ static void DeactivateShowsWithUnseenSpecies(void)
DeactivateShowIfNotSeenSpecies(species, i);
species = (&gSaveBlock1Ptr->tvShows[i])->frontier.species2;
DeactivateShowIfNotSeenSpecies(species, i);
- // Species var re-used here
- species = (&gSaveBlock1Ptr->tvShows[i])->frontier.facilityAndMode;
- switch (species)
+ facilityAndMode = (&gSaveBlock1Ptr->tvShows[i])->frontier.facilityAndMode;
+ switch (facilityAndMode)
{
case FRONTIER_SHOW_TOWER_MULTIS:
case FRONTIER_SHOW_TOWER_LINK_MULTIS:
@@ -3732,7 +3732,7 @@ static void DeactivateShow(u8 showIdx)
gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE;
}
-static void DeactivateShowIfNotSeenSpecies(u16 species, u8 showIdx)
+static void DeactivateShowIfNotSeenSpecies(enum Species species, u8 showIdx)
{
if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN))
gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE;
diff --git a/src/type_icons.c b/src/type_icons.c
index c43657231c..f4acb69543 100644
--- a/src/type_icons.c
+++ b/src/type_icons.c
@@ -15,10 +15,10 @@ static void LoadTypeIconsPerBattler(enum BattlerId, u32);
static bool32 UseDoubleBattleCoords(u32);
static enum Type GetMonPublicType(enum BattlerId, u32);
-static bool32 ShouldHideUncaughtType(u32 species);
-static bool32 ShouldHideUnseenType(u32 species);
-static enum Type GetMonDefensiveTeraType(struct Pokemon *, struct Pokemon *, enum BattlerId, u32, u32, u32);
-static bool32 IsIllusionActiveAndTypeUnchanged(struct Pokemon *, u32, enum BattlerId);
+static bool32 ShouldHideUncaughtType(enum Species species);
+static bool32 ShouldHideUnseenType(enum Species species);
+static enum Type GetMonDefensiveTeraType(struct Pokemon *, struct Pokemon *, enum BattlerId, u32, enum Species, enum Species);
+static bool32 IsIllusionActiveAndTypeUnchanged(struct Pokemon *, enum Species, enum BattlerId);
static void CreateSpriteFromType(u32, bool32, enum Type[], u32, enum BattlerId);
static bool32 ShouldSkipSecondType(enum Type[], u32);
@@ -237,7 +237,7 @@ void LoadTypeIcons(enum BattlerId battler)
u32 position;
struct Pokemon* mon = GetBattlerMon(battler);
- u32 species = GetMonData(mon, MON_DATA_SPECIES);
+ enum Species species = GetMonData(mon, MON_DATA_SPECIES);
if (B_SHOW_TYPES == SHOW_TYPES_NEVER
|| (B_SHOW_TYPES == SHOW_TYPES_SEEN && !GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN)))
@@ -294,9 +294,9 @@ static bool32 UseDoubleBattleCoords(u32 position)
static enum Type GetMonPublicType(enum BattlerId battlerId, u32 typeNum)
{
struct Pokemon *mon = GetBattlerMon(battlerId);
- u32 monSpecies = GetMonData(mon,MON_DATA_SPECIES,NULL);
+ enum Species monSpecies = GetMonData(mon,MON_DATA_SPECIES,NULL);
struct Pokemon *monIllusion;
- u32 illusionSpecies;
+ enum Species illusionSpecies;
if (ShouldHideUncaughtType(monSpecies) || ShouldHideUnseenType(monSpecies))
return TYPE_MYSTERY;
@@ -313,7 +313,7 @@ static enum Type GetMonPublicType(enum BattlerId battlerId, u32 typeNum)
return gBattleMons[battlerId].types[typeNum];
}
-static bool32 ShouldHideUncaughtType(u32 species)
+static bool32 ShouldHideUncaughtType(enum Species species)
{
if (B_SHOW_TYPES != SHOW_TYPES_CAUGHT)
return FALSE;
@@ -324,7 +324,7 @@ static bool32 ShouldHideUncaughtType(u32 species)
return TRUE;
}
-static bool32 ShouldHideUnseenType(u32 species)
+static bool32 ShouldHideUnseenType(enum Species species)
{
if (B_SHOW_TYPES != SHOW_TYPES_SEEN)
return FALSE;
@@ -335,10 +335,10 @@ static bool32 ShouldHideUnseenType(u32 species)
return TRUE;
}
-static enum Type GetMonDefensiveTeraType(struct Pokemon *mon, struct Pokemon *monIllusion, enum BattlerId battlerId, u32 typeNum, u32 illusionSpecies, u32 monSpecies)
+static enum Type GetMonDefensiveTeraType(struct Pokemon *mon, struct Pokemon *monIllusion, enum BattlerId battlerId, u32 typeNum, enum Species illusionSpecies, enum Species monSpecies)
{
enum Type teraType = GetBattlerTeraType(battlerId);
- u32 targetSpecies;
+ enum Species targetSpecies;
if (teraType != TYPE_STELLAR)
return teraType;
@@ -348,7 +348,7 @@ static enum Type GetMonDefensiveTeraType(struct Pokemon *mon, struct Pokemon *mo
return GetSpeciesType(targetSpecies, typeNum);
}
-static bool32 IsIllusionActiveAndTypeUnchanged(struct Pokemon *monIllusion, u32 monSpecies, enum BattlerId battlerId)
+static bool32 IsIllusionActiveAndTypeUnchanged(struct Pokemon *monIllusion, enum Species monSpecies, enum BattlerId battlerId)
{
u32 typeNum;
diff --git a/src/union_room.c b/src/union_room.c
index 39c83b4f7b..a6637aab74 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -204,8 +204,8 @@ static EWRAM_DATA union
struct WirelessLink_URoom *uRoom;
} sWirelessLinkMain = {};
EWRAM_DATA struct RfuGameCompatibilityData gRfuPartnerCompatibilityData = {};
-EWRAM_DATA u16 gUnionRoomOfferedSpecies = 0;
-EWRAM_DATA enum Type gUnionRoomRequestedMonType = 0;
+EWRAM_DATA enum Species gUnionRoomOfferedSpecies = SPECIES_NONE;
+EWRAM_DATA enum Type gUnionRoomRequestedMonType = TYPE_NONE;
static EWRAM_DATA struct UnionRoomTrade sUnionRoomTrade = {};
static struct WirelessLink_Leader *sLeader;
@@ -270,7 +270,7 @@ static void GetURoomActivityRejectMsg(u8 *, s32, u32);
static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct RfuPlayer *);
static void GetURoomActivityStartMsg(u8 *, u8);
static void UR_ClearBg0(void);
-static s32 IsRequestedTradeInPlayerParty(enum Type, u32);
+static s32 IsRequestedTradeInPlayerParty(enum Type, enum Species);
static bool32 UR_PrintFieldMessage(const u8 *);
static s32 GetChatLeaderActionRequestMessage(u8 *, u32, u16 *, struct WirelessLink_URoom *);
static void Task_InitUnionRoom(u8 taskId);
@@ -4110,7 +4110,7 @@ static void ItemPrintFunc_EmptyList(u8 windowId, u32 itemId, u8 y)
static void TradeBoardPrintItemInfo(u8 windowId, u8 y, struct RfuGameData *data, const u8 *playerName, u8 colorIdx)
{
u8 levelStr[4];
- u16 species = data->tradeSpecies;
+ enum Species species = data->tradeSpecies;
enum Type type = data->tradeType;
u8 level = data->tradeLevel;
@@ -4181,7 +4181,7 @@ static s32 GetUnionRoomPlayerGender(s32 playerIdx, struct RfuPlayerList *list)
return list->players[playerIdx].rfu.data.playerGender;
}
-static s32 IsRequestedTradeInPlayerParty(enum Type type, u32 species)
+static s32 IsRequestedTradeInPlayerParty(enum Type type, enum Species species)
{
s32 i;
@@ -4248,7 +4248,7 @@ static void GetURoomActivityStartMsg(u8 *dst, u8 acitivty)
static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *activityData, struct WirelessLink_URoom *uroom)
{
s32 result = 0;
- u16 species = SPECIES_NONE;
+ enum Species species = SPECIES_NONE;
s32 i;
switch (activityData[0])
@@ -4380,10 +4380,10 @@ static void RegisterTradeMon(u32 monId, struct UnionRoomTrade *trade)
static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade *trade, u8 multiplayerId)
{
u16 response = 0;
- u16 species;
+ enum Species species;
u32 personality;
u32 cur_personality;
- u16 cur_species;
+ enum Species cur_species;
s32 i;
if (multiplayerId == 0)
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 26b796c365..115932b799 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -51,7 +51,7 @@ static void FeebasSeedRng(u16 seed);
static bool8 IsWildLevelAllowedByRepel(u8 level);
static void ApplyFluteEncounterRateMod(u32 *encRate);
static void ApplyCleanseTagEncounterRateMod(u32 *encRate);
-static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, u16 species, enum WildPokemonArea area);
+static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, enum Species species, enum WildPokemonArea area);
#ifdef BUGFIX
static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, enum Type type, enum Ability ability, u8 *monIndex, u32 size);
#else
@@ -444,7 +444,7 @@ enum TimeOfDay GetTimeOfDayForEncounters(u32 headerId, enum WildPokemonArea area
return GenConfigTimeOfDay(timeOfDay);
}
-static u8 PickWildMonNature(u32 species)
+static u8 PickWildMonNature(enum Species species)
{
u8 i;
struct Pokeblock *safariPokeblock;
@@ -469,7 +469,7 @@ static u8 PickWildMonNature(u32 species)
return GetSynchronizedNature(WILDMON_ORIGIN, species);
}
-void CreateWildMon(u16 species, u8 level)
+void CreateWildMon(enum Species species, u8 level)
{
ZeroEnemyPartyMons();
u32 personality = GetMonPersonality(species, GetSynchronizedGender(WILDMON_ORIGIN, species), PickWildMonNature(species), RANDOM_UNOWN_LETTER);
@@ -544,7 +544,7 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, enum
static u16 GenerateFishingWildMon(const struct WildPokemonInfo *wildMonInfo, u8 rod)
{
u8 wildMonIndex = ChooseWildMonIndex_Fishing(rod);
- u16 wildMonSpecies = wildMonInfo->wildPokemon[wildMonIndex].species;
+ enum Species wildMonSpecies = wildMonInfo->wildPokemon[wildMonIndex].species;
u8 level = ChooseWildMonLevel(wildMonInfo->wildPokemon, wildMonIndex, WILD_AREA_FISHING);
UpdateChainFishingStreak();
@@ -930,7 +930,7 @@ bool8 DoesCurrentMapHaveFishingMons(void)
void FishingWildEncounter(u8 rod)
{
- u16 species;
+ enum Species species;
u32 headerId;
enum TimeOfDay timeOfDay;
@@ -1110,7 +1110,7 @@ static bool8 TryGetRandomWildMonIndexByType(const struct WildPokemon *wildMon, e
#include "data.h"
-static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, u16 species, enum WildPokemonArea area)
+static u8 GetMaxLevelOfSpeciesInWildTable(const struct WildPokemon *wildMon, enum Species species, enum WildPokemonArea area)
{
u8 i, maxLevel = 0, numMon = 0;
diff --git a/test/battle/ability/forecast.c b/test/battle/ability/forecast.c
index 782482d9c7..906b92f8e5 100644
--- a/test/battle/ability/forecast.c
+++ b/test/battle/ability/forecast.c
@@ -454,3 +454,30 @@ DOUBLE_BATTLE_TEST("Forecast reverts Castform back after Teraform Zero clears we
EXPECT_EQ(playerRight->species, SPECIES_CASTFORM_NORMAL);
}
}
+
+DOUBLE_BATTLE_TEST("Forecast: All Forecast mons revert on the field if Primal Weather is removed due to fainting")
+{
+ GIVEN {
+ PLAYER(SPECIES_KYOGRE) { Speed(20); HP(1); Item(ITEM_BLUE_ORB); }
+ PLAYER(SPECIES_CASTFORM) { Speed(10); Ability(ABILITY_FORECAST); }
+ OPPONENT(SPECIES_CASTFORM) { Speed(40); Ability(ABILITY_FORECAST); }
+ OPPONENT(SPECIES_CASTFORM) { Speed(30); Ability(ABILITY_FORECAST); }
+ } WHEN {
+ TURN { MOVE(opponentLeft, MOVE_POUND, target: playerLeft); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_PRIMAL_REVERSION, playerLeft);
+
+ ABILITY_POPUP(opponentLeft, ABILITY_FORECAST);
+ ABILITY_POPUP(opponentRight, ABILITY_FORECAST);
+ ABILITY_POPUP(playerRight, ABILITY_FORECAST);
+
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, opponentLeft);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, opponentRight);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, playerRight);
+ } THEN {
+ EXPECT_EQ(opponentLeft->species, SPECIES_CASTFORM_NORMAL);
+ EXPECT_EQ(opponentRight->species, SPECIES_CASTFORM_NORMAL);
+ EXPECT_EQ(playerRight->species, SPECIES_CASTFORM_NORMAL);
+ }
+}
+
diff --git a/test/battle/ability/levitate.c b/test/battle/ability/levitate.c
index 0a58cbbd0a..42b3597646 100644
--- a/test/battle/ability/levitate.c
+++ b/test/battle/ability/levitate.c
@@ -11,6 +11,7 @@ SINGLE_BATTLE_TEST("Levitate activates when targeted by ground type moves")
TURN { MOVE(opponent, MOVE_MUD_SLAP); }
} SCENE {
ABILITY_POPUP(player, ABILITY_LEVITATE);
+ MESSAGE("It doesn't affect Lunatoneโฆ");
}
}
diff --git a/test/battle/ability/lightning_rod.c b/test/battle/ability/lightning_rod.c
index c87b69bcd7..a9dcac38e9 100644
--- a/test/battle/ability/lightning_rod.c
+++ b/test/battle/ability/lightning_rod.c
@@ -130,3 +130,21 @@ DOUBLE_BATTLE_TEST("Lightning Rod absorbs moves that targets all battlers but do
HP_BAR(playerRight);
}
}
+
+DOUBLE_BATTLE_TEST("Lightning Rod doesn't activate if user has fainted")
+{
+ GIVEN {
+ ASSUME(GetMoveType(MOVE_SPARK) == TYPE_ELECTRIC);
+ PLAYER(SPECIES_WOBBUFFET);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_RAICHU) { HP(1); Ability(ABILITY_LIGHTNING_ROD); }
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_POUND, target: opponentRight); MOVE(playerRight, MOVE_SPARK, target: opponentLeft); }
+ } SCENE {
+ NONE_OF {
+ MESSAGE("The opposing Raichu's Lightning Rod took the attack");
+ ABILITY_POPUP(opponentRight, ABILITY_LIGHTNING_ROD);
+ }
+ }
+}
diff --git a/test/battle/ability/magic_bounce.c b/test/battle/ability/magic_bounce.c
index cac4ee4c0a..cb72c60ebc 100644
--- a/test/battle/ability/magic_bounce.c
+++ b/test/battle/ability/magic_bounce.c
@@ -175,3 +175,21 @@ SINGLE_BATTLE_TEST("Magic Bounce bounced back status moves can not be bounced ba
STATUS_ICON(player, badPoison: TRUE);
}
}
+
+SINGLE_BATTLE_TEST("Magic Bounce can't reflect back Stealth Rock from a semi-invulnerable posistion even with No Guard")
+{
+ GIVEN {
+ ASSUME(GetMoveTarget(MOVE_STEALTH_ROCK) == TARGET_OPPONENTS_FIELD);
+ ASSUME(GetMoveEffect(MOVE_DIG) == EFFECT_SEMI_INVULNERABLE);
+ PLAYER(SPECIES_MACHAMP) { Ability(ABILITY_NO_GUARD); }
+ OPPONENT(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_DIG); MOVE(player, MOVE_STEALTH_ROCK); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_DIG, opponent);
+ NOT ABILITY_POPUP(opponent, ABILITY_MAGIC_BOUNCE);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, player);
+ MESSAGE("Pointed stones float in the air around the opposing team!");
+ }
+}
+
diff --git a/test/battle/ability/magic_guard.c b/test/battle/ability/magic_guard.c
index 7c080c1fa5..11e21971de 100644
--- a/test/battle/ability/magic_guard.c
+++ b/test/battle/ability/magic_guard.c
@@ -44,3 +44,19 @@ SINGLE_BATTLE_TEST("Magic Guard does not ignore speed stat changes caused by par
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
}
}
+
+SINGLE_BATTLE_TEST("Magic Guard prevents Rough Skin damage")
+{
+ GIVEN {
+ ASSUME(MoveMakesContact(MOVE_POUND));
+ PLAYER(SPECIES_CLEFABLE) { Ability(ABILITY_MAGIC_GUARD); }
+ OPPONENT(SPECIES_CARVANHA) { Ability(ABILITY_ROUGH_SKIN); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_POUND); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, player);
+ HP_BAR(opponent);
+ ABILITY_POPUP(opponent, ABILITY_ROUGH_SKIN);
+ NOT HP_BAR(player);
+ }
+}
diff --git a/test/battle/ability/unseen_fist.c b/test/battle/ability/unseen_fist.c
index da5880c042..d72ade2c50 100644
--- a/test/battle/ability/unseen_fist.c
+++ b/test/battle/ability/unseen_fist.c
@@ -5,6 +5,12 @@ ASSUMPTIONS
{
ASSUME(MoveMakesContact(MOVE_SCRATCH));
ASSUME(GetMoveEffect(MOVE_PROTECT) == EFFECT_PROTECT);
+ ASSUME(GetMoveEffect(MOVE_KINGS_SHIELD) == EFFECT_PROTECT);
+ ASSUME(GetMoveEffect(MOVE_SPIKY_SHIELD) == EFFECT_PROTECT);
+ ASSUME(GetMoveEffect(MOVE_BANEFUL_BUNKER) == EFFECT_PROTECT);
+ ASSUME(GetMoveEffect(MOVE_BURNING_BULWARK) == EFFECT_PROTECT);
+ ASSUME(GetMoveEffect(MOVE_OBSTRUCT) == EFFECT_PROTECT);
+ ASSUME(GetMoveEffect(MOVE_SILK_TRAP) == EFFECT_PROTECT);
}
TO_DO_BATTLE_TEST("TODO: Write Unseen Fist (Ability) test titles")
@@ -33,3 +39,38 @@ SINGLE_BATTLE_TEST("Unseen Fist ignores Protect when user has Protective Pads, b
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_MACH_PUNCH, player);
}
}
+
+SINGLE_BATTLE_TEST("Unseen Fist bypasses protect effects without triggering their contact effects")
+{
+ enum Move protectMove = MOVE_NONE;
+ u8 loweredStat = 0;
+
+ PARAMETRIZE { protectMove = MOVE_SPIKY_SHIELD; loweredStat = 0; }
+ PARAMETRIZE { protectMove = MOVE_KINGS_SHIELD; loweredStat = STAT_ATK; }
+ PARAMETRIZE { protectMove = MOVE_BANEFUL_BUNKER; loweredStat = 0; }
+ PARAMETRIZE { protectMove = MOVE_BURNING_BULWARK; loweredStat = 0; }
+ PARAMETRIZE { protectMove = MOVE_OBSTRUCT; loweredStat = STAT_DEF; }
+ PARAMETRIZE { protectMove = MOVE_SILK_TRAP; loweredStat = STAT_SPEED; }
+
+ GIVEN {
+ PLAYER(SPECIES_URSHIFU) { Ability(ABILITY_UNSEEN_FIST); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, protectMove); MOVE(player, MOVE_SCRATCH); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, protectMove, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
+ HP_BAR(opponent);
+ NONE_OF {
+ HP_BAR(player);
+ STATUS_ICON(player, STATUS1_POISON);
+ STATUS_ICON(player, STATUS1_BURN);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
+ }
+ } THEN {
+ EXPECT_EQ(player->hp, player->maxHP);
+ EXPECT_EQ(player->status1, STATUS1_NONE);
+ if (loweredStat != 0)
+ EXPECT_EQ(player->statStages[loweredStat], DEFAULT_STAT_STAGE);
+ }
+}
diff --git a/test/battle/ability/wonder_guard.c b/test/battle/ability/wonder_guard.c
index 673b6c113a..c193b8cc7a 100644
--- a/test/battle/ability/wonder_guard.c
+++ b/test/battle/ability/wonder_guard.c
@@ -1,4 +1,48 @@
#include "global.h"
#include "test/battle.h"
-TO_DO_BATTLE_TEST("TODO: Write Wonder Guard (Ability) test titles")
+SINGLE_BATTLE_TEST("Wonder Guard activates when targeted by moves not super effective against it")
+{
+ enum Move move;
+ PARAMETRIZE { move = MOVE_POUND; }
+ PARAMETRIZE { move = MOVE_WATER_GUN; }
+ PARAMETRIZE { move = MOVE_THUNDERSHOCK; }
+ PARAMETRIZE { move = MOVE_LEAFAGE; }
+ PARAMETRIZE { move = MOVE_POWDER_SNOW; }
+ PARAMETRIZE { move = MOVE_KARATE_CHOP; }
+ PARAMETRIZE { move = MOVE_SLUDGE; }
+ PARAMETRIZE { move = MOVE_MUD_SLAP; }
+ PARAMETRIZE { move = MOVE_CONFUSION; }
+ PARAMETRIZE { move = MOVE_BUG_BITE; }
+ PARAMETRIZE { move = MOVE_DRAGONBREATH; }
+ PARAMETRIZE { move = MOVE_METAL_CLAW; }
+ PARAMETRIZE { move = MOVE_FAIRY_WIND; }
+ GIVEN {
+ PLAYER(SPECIES_SHEDINJA) { Ability(ABILITY_WONDER_GUARD); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, move); }
+ } SCENE {
+ ABILITY_POPUP(player, ABILITY_WONDER_GUARD);
+ MESSAGE("It doesn't affect Shedinjaโฆ");
+ }
+}
+
+SINGLE_BATTLE_TEST("Wonder Guard does not activate when targeted by moves super effective against it")
+{
+ enum Move move;
+ PARAMETRIZE { move = MOVE_EMBER; }
+ PARAMETRIZE { move = MOVE_PECK; }
+ PARAMETRIZE { move = MOVE_ROCK_THROW; }
+ PARAMETRIZE { move = MOVE_ASTONISH; }
+ PARAMETRIZE { move = MOVE_PURSUIT; }
+ GIVEN {
+ PLAYER(SPECIES_SHEDINJA) { Ability(ABILITY_WONDER_GUARD); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, move); }
+ } SCENE {
+ MESSAGE("It's super effective!");
+ MESSAGE("Shedinja fainted!");
+ }
+}
diff --git a/test/battle/ai/ai.c b/test/battle/ai/ai.c
index a95ce1f766..81c2deda27 100644
--- a/test/battle/ai/ai.c
+++ b/test/battle/ai/ai.c
@@ -197,14 +197,14 @@ AI_SINGLE_BATTLE_TEST("AI prefers Earthquake over Drill Run if both require the
}
}
-AI_SINGLE_BATTLE_TEST("AI prefers a weaker move over a one with a downside effect if both require the same number of hits to ko")
+AI_SINGLE_BATTLE_TEST("AI prefers a weaker move over one with a downside effect if both require the same number of hits to ko")
{
enum Move move1 = MOVE_NONE, move2 = MOVE_NONE, move3 = MOVE_NONE, move4 = MOVE_NONE;
enum Move expectedMove;
u16 hp, turns;
// Both moves require the same number of turns but Flamethrower will be chosen over Overheat (powerful effect)
- PARAMETRIZE { move1 = MOVE_OVERHEAT; move2 = MOVE_FLAMETHROWER; hp = 300; expectedMove = MOVE_FLAMETHROWER; turns = 2; }
+ PARAMETRIZE { move1 = MOVE_OVERHEAT; move2 = MOVE_FLAMETHROWER; hp = 320; expectedMove = MOVE_FLAMETHROWER; turns = 2; }
// Overheat kill in least amount of turns
PARAMETRIZE { move1 = MOVE_OVERHEAT; move2 = MOVE_FLAMETHROWER; hp = 250; expectedMove = MOVE_OVERHEAT; turns = 1; }
@@ -1007,7 +1007,7 @@ AI_SINGLE_BATTLE_TEST("AI has a chance to prioritize last chance priority damage
GIVEN {
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
PLAYER(SPECIES_CAMERUPT) { Speed(2); Moves(MOVE_FLAMETHROWER, MOVE_CELEBRATE); }
- OPPONENT(SPECIES_FLOATZEL) { Level(90); Speed(1); HP(1); Moves(MOVE_WAVE_CRASH, MOVE_AQUA_JET); }
+ OPPONENT(SPECIES_FLOATZEL) { Level(85); Speed(1); HP(1); Moves(MOVE_WAVE_CRASH, MOVE_AQUA_JET); }
} WHEN {
TURN { MOVE(player, MOVE_CELEBRATE); EXPECT_MOVE(opponent, MOVE_AQUA_JET); }
}
@@ -1270,3 +1270,101 @@ AI_SINGLE_BATTLE_TEST("AI will not try to withstand hit with absorbing move if i
TURN { MOVE(player, MOVE_DRAGON_RAGE); EXPECT_MOVE(opponent, MOVE_ENERGY_BALL); }
}
}
+
+AI_DOUBLE_BATTLE_TEST("AI can use Acupressure on its ally")
+{
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
+ PLAYER(SPECIES_WYNAUT) { HP(1); Moves(MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_ACUPRESSURE); }
+ OPPONENT(SPECIES_WYNAUT) { Moves(MOVE_SCRATCH); }
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); EXPECT_MOVE(opponentRight, MOVE_SCRATCH, target:playerRight); EXPECT_MOVE(opponentLeft, MOVE_ACUPRESSURE, target:opponentRight); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_ACUPRESSURE, opponentLeft);
+ }
+}
+
+AI_SINGLE_BATTLE_TEST("AI's comparison of damaging moves correctly reads moveset indexes for effects")
+{
+ u32 move = MOVE_NONE;
+ PARAMETRIZE { move = MOVE_TACKLE; }
+ PARAMETRIZE { move = MOVE_DUAL_CHOP; }
+ 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 | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_RAPIDASH_GALAR){ Level(64); HP(1); Nature(NATURE_TIMID); Moves(MOVE_TACKLE);}
+ OPPONENT(SPECIES_HAXORUS){ Level(64); Nature(NATURE_JOLLY); Ability(ABILITY_MOLD_BREAKER); Moves(move, MOVE_EARTHQUAKE, MOVE_POISON_JAB); }
+ } WHEN {
+ TURN {
+ MOVE(player, MOVE_TACKLE);
+ if (move == MOVE_TACKLE)
+ SCORE_EQ_VAL(opponent, MOVE_TACKLE, 104);
+ else if (move == MOVE_DUAL_CHOP)
+ SCORE_EQ_VAL(opponent, MOVE_DUAL_CHOP, 60);
+ SCORE_EQ_VAL(opponent, MOVE_EARTHQUAKE, 104);
+ SCORE_EQ_VAL(opponent, MOVE_POISON_JAB, 105);
+ }
+ }
+}
+
+AI_SINGLE_BATTLE_TEST("Bolt Beak damage will be correctly seen by AI (singles)")
+{
+ u32 playerSpeed, aiSpeed;
+
+ PARAMETRIZE { playerSpeed = 20; aiSpeed = 10; }
+ PARAMETRIZE { playerSpeed = 10; aiSpeed = 20; }
+
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
+ PLAYER(SPECIES_STARMIE) { Speed(playerSpeed); Moves(MOVE_PROTECT, MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_ZAPDOS) { Speed(aiSpeed); Moves(MOVE_BOLT_BEAK, MOVE_THUNDER); }
+ } WHEN {
+ if (playerSpeed > aiSpeed) {
+ TURN { MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_THUNDER); }
+ TURN { EXPECT_MOVE(opponent, MOVE_THUNDER); }
+ } else {
+ TURN { MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_BOLT_BEAK); }
+ TURN { EXPECT_MOVE(opponent, MOVE_BOLT_BEAK); }
+ }
+ }
+}
+
+AI_DOUBLE_BATTLE_TEST("Bolt Beak damage will be correctly seen by AI (doubles)")
+{
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(1); Moves(MOVE_PROTECT, MOVE_CELEBRATE); }
+ PLAYER(SPECIES_WOBBUFFET) { Speed(3); Moves(MOVE_PROTECT, MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_ZAPDOS) { Speed(2); Moves(MOVE_BOLT_BEAK, MOVE_THUNDER); }
+ OPPONENT(SPECIES_ZAPDOS) { Speed(4); Moves(MOVE_BOLT_BEAK, MOVE_THUNDER); }
+ TIE_BREAK_TARGET(TARGET_TIE_HI, 0);
+ } WHEN {
+ TURN {
+ MOVE(playerLeft, MOVE_PROTECT);
+ MOVE(playerRight, MOVE_PROTECT);
+ SCORE_EQ_VAL(opponentLeft, MOVE_BOLT_BEAK, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE, target:playerLeft);
+ SCORE_EQ_VAL(opponentLeft, MOVE_BOLT_BEAK, AI_SCORE_DEFAULT, target:playerRight);
+ SCORE_EQ_VAL(opponentLeft, MOVE_THUNDER, AI_SCORE_DEFAULT, target:playerLeft);
+ SCORE_EQ_VAL(opponentLeft, MOVE_THUNDER, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE, target:playerRight);
+ SCORE_EQ_VAL(opponentRight, MOVE_BOLT_BEAK, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE, target:playerLeft);
+ SCORE_EQ_VAL(opponentRight, MOVE_BOLT_BEAK, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE, target:playerRight);
+ SCORE_EQ_VAL(opponentRight, MOVE_THUNDER, AI_SCORE_DEFAULT, target:playerLeft);
+ SCORE_EQ_VAL(opponentRight, MOVE_THUNDER, AI_SCORE_DEFAULT, target:playerRight);
+ EXPECT_MOVE(opponentLeft, MOVE_THUNDER, target:playerRight);
+ EXPECT_MOVE(opponentRight, MOVE_BOLT_BEAK, target:playerRight);
+ }
+ TURN {
+ SCORE_EQ_VAL(opponentLeft, MOVE_BOLT_BEAK, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE, target:playerLeft);
+ SCORE_EQ_VAL(opponentLeft, MOVE_BOLT_BEAK, AI_SCORE_DEFAULT, target:playerRight);
+ SCORE_EQ_VAL(opponentLeft, MOVE_THUNDER, AI_SCORE_DEFAULT, target:playerLeft);
+ SCORE_EQ_VAL(opponentLeft, MOVE_THUNDER, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE, target:playerRight);
+ SCORE_EQ_VAL(opponentRight, MOVE_BOLT_BEAK, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE, target:playerLeft);
+ SCORE_EQ_VAL(opponentRight, MOVE_BOLT_BEAK, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE, target:playerRight);
+ SCORE_EQ_VAL(opponentRight, MOVE_THUNDER, AI_SCORE_DEFAULT, target:playerLeft);
+ SCORE_EQ_VAL(opponentRight, MOVE_THUNDER, AI_SCORE_DEFAULT, target:playerRight);
+ EXPECT_MOVE(opponentLeft, MOVE_THUNDER, target:playerRight);
+ EXPECT_MOVE(opponentRight, MOVE_BOLT_BEAK, target:playerRight);
+ }
+ }
+}
diff --git a/test/battle/ai/ai_calc_best_move_score.c b/test/battle/ai/ai_calc_best_move_score.c
index 7fd3ff546b..a3efc06ad0 100644
--- a/test/battle/ai/ai_calc_best_move_score.c
+++ b/test/battle/ai/ai_calc_best_move_score.c
@@ -285,3 +285,24 @@ AI_SINGLE_BATTLE_TEST("Fillet Away AI handling")
TURN { MOVE(player, move); EXPECT_MOVE(opponent, move == MOVE_SCALD ? MOVE_FILLET_AWAY : MOVE_AQUA_CUTTER); }
}
}
+
+AI_SINGLE_BATTLE_TEST("Retaliate sees damage correctly on the field")
+{
+ 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 | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_WOBBUFFET) { Level(50); HP(100); Nature(NATURE_QUIRKY); Ability(ABILITY_TELEPATHY); Speed(58); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_RATTATA){ Level(1); HP(1); Nature(NATURE_QUIRKY); Speed(1); Moves(MOVE_TACKLE);}
+ OPPONENT(SPECIES_KANGASKHAN) { Level(50); Nature(NATURE_QUIRKY); Ability(ABILITY_INNER_FOCUS); Speed(251); Moves(MOVE_RETALIATE, MOVE_SLASH); }
+ } WHEN {
+ TURN {
+ MOVE(player, MOVE_TACKLE);
+ EXPECT_MOVE(opponent, MOVE_TACKLE);
+ EXPECT_SEND_OUT(opponent, 1);
+ }
+ TURN {
+ MOVE(player, MOVE_TACKLE);
+ SCORE_EQ_VAL(opponent, MOVE_RETALIATE, (AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE + FAST_KILL));
+ SCORE_EQ_VAL(opponent, MOVE_SLASH, (AI_SCORE_DEFAULT));
+ }
+ }
+}
diff --git a/test/battle/ai/ai_doubles.c b/test/battle/ai/ai_doubles.c
index f540e881c2..82cee7a8cb 100644
--- a/test/battle/ai/ai_doubles.c
+++ b/test/battle/ai/ai_doubles.c
@@ -708,16 +708,33 @@ AI_DOUBLE_BATTLE_TEST("AI sees corresponding absorbing abilities on partners")
GIVEN {
ASSUME(GetMoveTarget(MOVE_DISCHARGE) == TARGET_FOES_AND_ALLY);
- AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_HP_AWARE);
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
PLAYER(SPECIES_ZIGZAGOON);
PLAYER(SPECIES_ZIGZAGOON);
- OPPONENT(SPECIES_SLAKING) { Moves(move, MOVE_SCRATCH); }
+ OPPONENT(SPECIES_SLAKING) { Moves(move, MOVE_CONSTRICT); }
OPPONENT(species) { HP(1); Ability(ability); Moves(MOVE_POUND, MOVE_EMBER, MOVE_ROUND); }
} WHEN {
if (ability != ABILITY_CLOUD_NINE)
TURN { EXPECT_MOVE(opponentLeft, move); }
else
- TURN { EXPECT_MOVE(opponentLeft, MOVE_SCRATCH); }
+ TURN { EXPECT_MOVE(opponentLeft, MOVE_CONSTRICT); }
+ }
+}
+
+AI_DOUBLE_BATTLE_TEST("AI sees random rolls correctly")
+{
+ PASSES_RANDOMLY(3, 15, RNG_AI_DMG_ROLL_RANDOM); // Slaking KOs with 3 rolls
+ GIVEN {
+ WITH_CONFIG(AI_ROLL_ATTACKING, AI_ROLL_RANDOM);
+ ASSUME(GetMoveTarget(MOVE_DISCHARGE) == TARGET_FOES_AND_ALLY);
+ ASSUME(GetMoveType(MOVE_DISCHARGE) == TYPE_ELECTRIC);
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
+ PLAYER(SPECIES_ZIGZAGOON);
+ PLAYER(SPECIES_ZIGZAGOON);
+ OPPONENT(SPECIES_SLAKING) { Moves(MOVE_DISCHARGE, MOVE_SCRATCH); }
+ OPPONENT(SPECIES_PIKACHU) { HP(1); Ability(ABILITY_LIGHTNING_ROD); Moves(MOVE_SCRATCH); }
+ } WHEN {
+ TURN { EXPECT_MOVE(opponentLeft, MOVE_SCRATCH); }
}
}
diff --git a/test/battle/ai/ai_switching.c b/test/battle/ai/ai_switching.c
index 1375ff2ea0..ad6d1e4c2a 100644
--- a/test/battle/ai/ai_switching.c
+++ b/test/battle/ai/ai_switching.c
@@ -1199,6 +1199,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has an
enum Move move;
enum Ability absorbingAbility;
PARAMETRIZE { aiMon = SPECIES_NINETALES; absorbingAbility = ABILITY_FLASH_FIRE; move = MOVE_FLAMETHROWER; }
+ PARAMETRIZE { aiMon = SPECIES_DACHSBUN; absorbingAbility = ABILITY_WELL_BAKED_BODY; move = MOVE_FLAMETHROWER; }
PARAMETRIZE { aiMon = SPECIES_MANTINE; absorbingAbility = ABILITY_WATER_ABSORB; move = MOVE_SURF; }
PARAMETRIZE { aiMon = SPECIES_TOXICROAK; absorbingAbility = ABILITY_DRY_SKIN; move = MOVE_SURF; }
PARAMETRIZE { aiMon = SPECIES_GASTRODON; absorbingAbility = ABILITY_STORM_DRAIN; move = MOVE_SURF; }
@@ -1273,6 +1274,105 @@ AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch out if it has <= 66% HP remaini
}
}
+AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out to cycle Intimidate when facing a physical attacker")
+{
+ PASSES_RANDOMLY(SHOULD_SWITCH_INTIMIDATE_PERCENTAGE, 100, RNG_AI_SWITCH_INTIMIDATE);
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_TACKLE); EXPECT_SWITCH(opponent, 1); }
+ }
+}
+
+AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not cycle Intimidate when target blocks or punishes Attack drops")
+{
+ u32 Species = SPECIES_NONE;
+ enum Ability ability;
+ PARAMETRIZE { Species = SPECIES_TENTACRUEL; ability = ABILITY_CLEAR_BODY; }
+ PARAMETRIZE { Species = SPECIES_BRAVIARY; ability = ABILITY_DEFIANT; }
+
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING);
+ PLAYER(Species) { Ability(ability); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); }
+ }
+}
+
+AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not cycle Intimidate when target is a special attacker")
+{
+ GIVEN {
+ 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_WATER_GUN); }
+ OPPONENT(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_WATER_GUN); EXPECT_MOVE(opponent, MOVE_TACKLE); }
+ }
+}
+
+AI_DOUBLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out to cycle Intimidate in doubles when at least one target is valid")
+{
+ PASSES_RANDOMLY(SHOULD_SWITCH_INTIMIDATE_PERCENTAGE, 100, RNG_AI_SWITCH_INTIMIDATE);
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_WATER_GUN); }
+ OPPONENT(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentRight); EXPECT_SWITCH(opponentLeft, 2); }
+ }
+}
+
+AI_DOUBLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not cycle Intimidate in doubles when both targets block Attack drops")
+{
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_TENTACRUEL) { Ability(ABILITY_CLEAR_BODY); Moves(MOVE_TACKLE); }
+ PLAYER(SPECIES_KINGLER) { Ability(ABILITY_HYPER_CUTTER); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); MOVE(playerRight, MOVE_TACKLE, target: opponentRight); EXPECT_MOVE(opponentLeft, MOVE_TACKLE); }
+ }
+}
+
+AI_DOUBLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not cycle Intimidate in doubles when one target punishes stat drops")
+{
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_BRAVIARY) { Ability(ABILITY_DEFIANT); Moves(MOVE_TACKLE); }
+ PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); MOVE(playerRight, MOVE_TACKLE, target: opponentRight); EXPECT_MOVE(opponentLeft, MOVE_TACKLE); }
+ }
+}
+
+AI_DOUBLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not cycle Intimidate in doubles when both targets are special attackers")
+{
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_WATER_GUN); }
+ PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_WATER_GUN); }
+ OPPONENT(SPECIES_ARCANINE) { Ability(ABILITY_INTIMIDATE); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_TACKLE); }
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_WATER_GUN, target: opponentLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentRight); EXPECT_MOVE(opponentLeft, MOVE_TACKLE); }
+ }
+}
+
AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has been Encore'd into a status move")
{
PASSES_RANDOMLY(SHOULD_SWITCH_ENCORE_STATUS_PERCENTAGE, 100, RNG_AI_SWITCH_ENCORE);
@@ -2205,8 +2305,8 @@ AI_MULTI_BATTLE_TEST("AI will not switch out if the opposite battler is absent a
MULTI_OPPONENT_B(SPECIES_WYNAUT) { Speed(2); HP(41); }
} WHEN {
TURN {
- EXPECT_MOVE(opponentLeft, MOVE_BODY_SLAM, target: playerLeft);
- EXPECT_MOVE(playerRight, MOVE_SHADOW_BALL, target: opponentRight);
+ EXPECT_MOVE(opponentLeft, MOVE_BODY_SLAM, target: playerLeft);
+ EXPECT_MOVE(playerRight, MOVE_SHADOW_BALL, target: opponentRight);
}
TURN {
EXPECT_MOVE(opponentLeft, MOVE_DRAGON_RAGE, target: playerRight);
@@ -2215,6 +2315,19 @@ AI_MULTI_BATTLE_TEST("AI will not switch out if the opposite battler is absent a
}
}
+AI_SINGLE_BATTLE_TEST("Rage Fist stacks are seen properly for switch logic")
+{
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_VICTINI) { Level(70); Speed(2); Ability(ABILITY_VICTORY_STAR); Moves(MOVE_V_CREATE, MOVE_PSYCHIC); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Level(1); Speed(1); HP(1); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_GROUDON) { Level(85); Speed(3); Moves(MOVE_PRECIPICE_BLADES); }
+ OPPONENT(SPECIES_ANNIHILAPE) { Level(85); Speed(3); Moves(MOVE_RAGE_FIST); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_PSYCHIC); EXPECT_SEND_OUT(opponent, 1); }
+ }
+}
+
AI_DOUBLE_BATTLE_TEST("AI can switch out both mons on the same turn in double battles")
{
PASSES_RANDOMLY(SHOULD_SWITCH_ALL_MOVES_BAD_PERCENTAGE, 100, RNG_AI_SWITCH_ALL_MOVES_BAD);
@@ -2230,3 +2343,73 @@ AI_DOUBLE_BATTLE_TEST("AI can switch out both mons on the same turn in double ba
TURN { EXPECT_SWITCH(opponentLeft, 2); EXPECT_SWITCH(opponentRight, 3); }
}
}
+
+AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI sees stat stage changes on switchin when doing switching calcs")
+{
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_LUXIO) { Speed(2); Ability(ABILITY_GUTS); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Speed(1); HP(1); MaxHP(100); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_LUXIO) { Speed(1); Ability(ABILITY_GUTS); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_LUXIO) { Speed(1); Ability(ABILITY_INTIMIDATE); Moves(MOVE_SCRATCH); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_SCRATCH); EXPECT_SEND_OUT(opponent, 2); }
+ }
+}
+
+AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI sees status changes on switchin when doing switching calcs")
+{
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_ZIGZAGOON) { Speed(2); HP(1); MaxHP(100); Moves(MOVE_TOXIC_SPIKES); }
+ PLAYER(SPECIES_LUXIO) { Speed(2); Ability(ABILITY_GUTS); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Speed(1); HP(1); MaxHP(100); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_LUXIO) { Speed(1); Ability(ABILITY_INTIMIDATE); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_LUXIO) { Speed(1); Ability(ABILITY_GUTS); Moves(MOVE_SCRATCH); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_TOXIC_SPIKES); EXPECT_MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); }
+ TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_SCRATCH); EXPECT_SEND_OUT(opponent, 2); }
+ }
+}
+
+AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI sees volate changes on switchin when doing switching calcs")
+{
+ GIVEN {
+ ASSUME(GetItemHoldEffect(ITEM_BOOSTER_ENERGY) == HOLD_EFFECT_BOOSTER_ENERGY);
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_ROARING_MOON) { Speed(2); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Speed(1); HP(1); MaxHP(100); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_ROARING_MOON) { Speed(1); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_ROARING_MOON) { Speed(1); Moves(MOVE_SCRATCH); Item(ITEM_BOOSTER_ENERGY); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_SCRATCH); EXPECT_MOVE(opponent, MOVE_SCRATCH); EXPECT_SEND_OUT(opponent, 2); }
+ }
+}
+
+AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI sees HP changes on switchin when doing switchin calcs")
+{
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_ZIGZAGOON) { Speed(2); HP(1); MaxHP(100); Moves(MOVE_SPIKES); }
+ PLAYER(SPECIES_BLAZIKEN) { Speed(2); HP(130); MaxHP(400); Ability(ABILITY_SPEED_BOOST); Moves(MOVE_EMBER); }
+ OPPONENT(SPECIES_ZIGZAGOON) { Speed(1); HP(1); MaxHP(100); Moves(MOVE_SCRATCH); }
+ OPPONENT(SPECIES_BLAZIKEN) { Speed(1); HP(180); MaxHP(400); Ability(ABILITY_SPEED_BOOST); Moves(MOVE_EMBER); }
+ OPPONENT(SPECIES_BLAZIKEN) { Speed(1); HP(180); MaxHP(400); Ability(ABILITY_BLAZE); Moves(MOVE_EMBER); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_SPIKES); EXPECT_MOVE(opponent, MOVE_SCRATCH); SEND_OUT(player, 1); }
+ TURN { MOVE(player, MOVE_EMBER); EXPECT_MOVE(opponent, MOVE_SCRATCH); EXPECT_SEND_OUT(opponent, 2); }
+ }
+}
+
+AI_SINGLE_BATTLE_TEST("Retaliate sees damage correctly for post ko switch in")
+{
+ GIVEN {
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_OMNISCIENT);
+ PLAYER(SPECIES_GABITE) { Level(50); Speed(2);}
+ OPPONENT(SPECIES_ZIGZAGOON) { Level(1); Speed(3); HP(1); Moves(MOVE_TACKLE); }
+ OPPONENT(SPECIES_GROUDON) { Level(85); Speed(3); Moves(MOVE_PRECIPICE_BLADES); }
+ OPPONENT(SPECIES_STOUTLAND) { Level(50); Speed(3); Moves(MOVE_RETALIATE); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_TACKLE); EXPECT_SEND_OUT(opponent, 2); }
+ }
+}
diff --git a/test/battle/crit_chance.c b/test/battle/crit_chance.c
index 9e5aed9974..86fa4d4d21 100644
--- a/test/battle/crit_chance.c
+++ b/test/battle/crit_chance.c
@@ -47,3 +47,30 @@ SINGLE_BATTLE_TEST("Crit Chance: Raising critical hit rate to 3 guarantees a cri
MESSAGE("A critical hit!");
}
}
+
+#define CRIT_MESSAGE "A critical hit!"
+SINGLE_BATTLE_TEST("Crit Change: Fixed damage moves don't print a crit message")
+{
+ enum Move move;
+ PARAMETRIZE { move = MOVE_SCRATCH; }
+ PARAMETRIZE { move = MOVE_DRAGON_RAGE; }
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_LASER_FOCUS) == EFFECT_LASER_FOCUS);
+ ASSUME(GetMoveEffect(MOVE_DRAGON_RAGE) == EFFECT_FIXED_HP_DAMAGE);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_LASER_FOCUS); }
+ TURN { MOVE(player, move); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_LASER_FOCUS, player);
+ ANIMATION(ANIM_TYPE_MOVE, move, player);
+ if (move == MOVE_SCRATCH) {
+ MESSAGE(CRIT_MESSAGE);
+ }
+ else {
+ NOT MESSAGE(CRIT_MESSAGE);
+ }
+ }
+}
+#undef CRIT_MESSAGE
diff --git a/test/battle/gimmick/dynamax.c b/test/battle/gimmick/dynamax.c
index 4e91eb51c8..399caefd5a 100644
--- a/test/battle/gimmick/dynamax.c
+++ b/test/battle/gimmick/dynamax.c
@@ -736,7 +736,7 @@ DOUBLE_BATTLE_TEST("Dynamax: Max Knuckle raises both allies' attack")
{
s16 damage[4];
GIVEN {
- ASSUME(MoveHasAdditionalEffect(MOVE_MAX_KNUCKLE, MOVE_EFFECT_RAISE_TEAM_ATTACK));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_MAX_KNUCKLE, MOVE_EFFECT_RAISE_TEAM_ATTACK));
ASSUME(GetMoveCategory(MOVE_CLOSE_COMBAT) == DAMAGE_CATEGORY_PHYSICAL);
ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL);
PLAYER(SPECIES_WOBBUFFET);
@@ -1309,7 +1309,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Replenish recycles allies' berries 50\% of th
{
PASSES_RANDOMLY(1, 2, RNG_G_MAX_REPLENISH);
GIVEN {
- ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_REPLENISH, MOVE_EFFECT_RECYCLE_BERRIES));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_REPLENISH, MOVE_EFFECT_RECYCLE_BERRIES));
ASSUME(GetItemHoldEffect(ITEM_APICOT_BERRY) == HOLD_EFFECT_SP_DEFENSE_UP);
PLAYER(SPECIES_SNORLAX) { Item(ITEM_APICOT_BERRY); GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MUNCHLAX) { Item(ITEM_APICOT_BERRY); Ability(ABILITY_THICK_FAT); }
@@ -1364,7 +1364,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Finale heals allies by 1/6 of their health")
{
s16 damage1, damage2;
GIVEN {
- ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_FINALE, MOVE_EFFECT_HEAL_TEAM));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_FINALE, MOVE_EFFECT_HEAL_TEAM));
PLAYER(SPECIES_ALCREMIE) { HP(1); GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MILCERY) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET);
@@ -1386,7 +1386,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Sweetness cures allies' status conditions")
{
u32 j;
GIVEN {
- ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_SWEETNESS, MOVE_EFFECT_AROMATHERAPY));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_SWEETNESS, MOVE_EFFECT_AROMATHERAPY));
PLAYER(SPECIES_APPLETUN) { Status1(STATUS1_POISON); GigantamaxFactor(TRUE); }
PLAYER(SPECIES_APPLIN) { Status1(STATUS1_POISON); }
PLAYER(SPECIES_APPLIN) { Status1(STATUS1_POISON); }
@@ -1440,7 +1440,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Chi Strike boosts allies' crit chance by 1 st
u32 j;
GIVEN {
WITH_CONFIG(B_CRIT_CHANCE, GEN_6);
- ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_CHI_STRIKE, MOVE_EFFECT_CRIT_PLUS_SIDE));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_CHI_STRIKE, MOVE_EFFECT_CRIT_PLUS_SIDE));
PLAYER(SPECIES_MACHAMP) { GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MACHOP);
OPPONENT(SPECIES_WOBBUFFET);
@@ -1722,7 +1722,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Finale heals allies by 1/6 of their health, e
{
s16 damage1, damage2;
GIVEN {
- ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_FINALE, MOVE_EFFECT_HEAL_TEAM));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_FINALE, MOVE_EFFECT_HEAL_TEAM));
PLAYER(SPECIES_ALCREMIE) { HP(1); GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MILCERY) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
@@ -1744,7 +1744,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Replenish recycles allies' berries 50\% of th
{
PASSES_RANDOMLY(1, 2, RNG_G_MAX_REPLENISH);
GIVEN {
- ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_REPLENISH, MOVE_EFFECT_RECYCLE_BERRIES));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_REPLENISH, MOVE_EFFECT_RECYCLE_BERRIES));
ASSUME(GetItemHoldEffect(ITEM_APICOT_BERRY) == HOLD_EFFECT_SP_DEFENSE_UP);
PLAYER(SPECIES_SNORLAX) { Item(ITEM_APICOT_BERRY); GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MUNCHLAX) { Item(ITEM_APICOT_BERRY); Ability(ABILITY_THICK_FAT); }
diff --git a/test/battle/gimmick/zmove.c b/test/battle/gimmick/zmove.c
index cabfb60481..b0464e8ca3 100644
--- a/test/battle/gimmick/zmove.c
+++ b/test/battle/gimmick/zmove.c
@@ -598,6 +598,24 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Genesis Supernova sets up psychic terrain")
}
}
+SINGLE_BATTLE_TEST("(Z-MOVE) Genesis Supernova sets up psychic terrain when the target is behind a Substitute")
+{
+ GIVEN {
+ ASSUME(MoveHasAdditionalEffect(MOVE_GENESIS_SUPERNOVA, MOVE_EFFECT_PSYCHIC_TERRAIN));
+ PLAYER(SPECIES_MEW) { Item(ITEM_MEWNIUM_Z); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_PSYCHIC, gimmick: GIMMICK_Z_MOVE); }
+ TURN { MOVE(player, MOVE_QUICK_ATTACK); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_GENESIS_SUPERNOVA, player);
+ SUB_HIT(opponent);
+ NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); }
+ MESSAGE("The opposing Wobbuffet is protected by the Psychic Terrain!");
+ }
+}
+
SINGLE_BATTLE_TEST("(Z-MOVE) Splintered Stormshards removes terrain")
{
GIVEN {
@@ -616,6 +634,25 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Splintered Stormshards removes terrain")
}
}
+SINGLE_BATTLE_TEST("(Z-MOVE) Splintered Stormshards removes terrain when the target is behind a Substitute")
+{
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_SPLINTERED_STORMSHARDS) == EFFECT_ICE_SPINNER);
+ PLAYER(SPECIES_LYCANROC_DUSK) { Item(ITEM_LYCANIUM_Z); }
+ OPPONENT(SPECIES_TAPU_LELE) { Ability(ABILITY_PSYCHIC_SURGE); HP(1000); MaxHP(1000); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_STONE_EDGE, gimmick: GIMMICK_Z_MOVE); }
+ TURN { MOVE(player, MOVE_QUICK_ATTACK); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, opponent);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SPLINTERED_STORMSHARDS, player);
+ SUB_HIT(opponent);
+ MESSAGE("The weirdness disappeared from the battlefield!");
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player);
+ }
+}
+
SINGLE_BATTLE_TEST("(Z-MOVE) Clangorous Soulblaze boosts all the user's stats by one stage")
{
GIVEN {
diff --git a/test/battle/hold_effect/throat_spray.c b/test/battle/hold_effect/throat_spray.c
index 4a270597c6..1dda2c701f 100644
--- a/test/battle/hold_effect/throat_spray.c
+++ b/test/battle/hold_effect/throat_spray.c
@@ -4,7 +4,6 @@
ASSUMPTIONS
{
ASSUME(GetItemHoldEffect(ITEM_THROAT_SPRAY) == HOLD_EFFECT_THROAT_SPRAY);
- ASSUME(IsSoundMove(MOVE_HYPER_VOICE) == TRUE);
}
DOUBLE_BATTLE_TEST("Throat Spray activates after both hits of a spread move")
@@ -12,6 +11,7 @@ DOUBLE_BATTLE_TEST("Throat Spray activates after both hits of a spread move")
s16 firstHit, secondHit;
GIVEN {
+ ASSUME(IsSoundMove(MOVE_HYPER_VOICE) == TRUE);
ASSUME(GetMoveTarget(MOVE_HYPER_VOICE) == TARGET_BOTH);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); }
PLAYER(SPECIES_WYNAUT);
@@ -29,12 +29,51 @@ DOUBLE_BATTLE_TEST("Throat Spray activates after both hits of a spread move")
}
}
+DOUBLE_BATTLE_TEST("Throat Spray activates after both hits of a spread move, even if one foe protects")
+{
+ GIVEN {
+ ASSUME(IsSoundMove(MOVE_BOOMBURST) == TRUE);
+ ASSUME(GetMoveTarget(MOVE_BOOMBURST) == TARGET_FOES_AND_ALLY);
+ PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); }
+ PLAYER(SPECIES_WYNAUT);
+ OPPONENT(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_BOOMBURST); MOVE(opponentRight, MOVE_PROTECT);}
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_BOOMBURST, playerLeft);
+ HP_BAR(opponentLeft);
+ HP_BAR(playerRight);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft);
+ }
+}
+
+DOUBLE_BATTLE_TEST("Throat Spray does not activate if both foes take no damage from a move that targets both")
+{
+ GIVEN {
+ ASSUME(IsSoundMove(MOVE_HYPER_VOICE) == TRUE);
+ ASSUME(GetMoveTarget(MOVE_HYPER_VOICE) == TARGET_BOTH);
+ PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); }
+ PLAYER(SPECIES_WYNAUT);
+ OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_SOUNDPROOF); }
+ OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_SOUNDPROOF); }
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_HYPER_VOICE);}
+ } SCENE {
+ NONE_OF {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, playerLeft);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft);
+ }
+ }
+}
+
SINGLE_BATTLE_TEST("Throat Spray increases Sp. Atk by one stage")
{
s16 normalHit;
s16 boostedHit;
GIVEN {
+ ASSUME(IsSoundMove(MOVE_HYPER_VOICE) == TRUE);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@@ -56,34 +95,52 @@ SINGLE_BATTLE_TEST("Throat Spray activates when a sound move is used")
enum Move move;
PARAMETRIZE { move = MOVE_SWIFT; }
- PARAMETRIZE { move = MOVE_HYPER_VOICE; }
+ PARAMETRIZE { move = MOVE_HOWL; }
+ PARAMETRIZE { move = MOVE_ECHOED_VOICE; }
GIVEN {
- ASSUME(IsSoundMove(MOVE_SWIFT) != IsSoundMove(MOVE_HYPER_VOICE));
+ ASSUME(IsSoundMove(MOVE_HOWL) == TRUE);
+ ASSUME(IsSoundMove(MOVE_ECHOED_VOICE) == TRUE);
+ ASSUME(IsSoundMove(MOVE_SWIFT) == FALSE);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, move); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, move, player);
- if (move == MOVE_HYPER_VOICE)
+ if (move == MOVE_HOWL)
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
+ else if (move == MOVE_ECHOED_VOICE)
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
else
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
}
}
+
+
SINGLE_BATTLE_TEST("Throat Spray does not activate if move fails")
{
GIVEN {
+ ASSUME(IsSoundMove(MOVE_PARTING_SHOT) == TRUE);
+ ASSUME(IsSoundMove(MOVE_TORCH_SONG) == TRUE);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
- TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_HYPER_VOICE); }
+ TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_PARTING_SHOT); }
+ TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_CELEBRATE); }
+ TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_TORCH_SONG); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, opponent);
NONE_OF {
- ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_PARTING_SHOT, player);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
+ }
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, opponent);
+ NONE_OF {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TORCH_SONG, player);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
}
}
@@ -92,6 +149,7 @@ SINGLE_BATTLE_TEST("Throat Spray does not activate if move fails")
SINGLE_BATTLE_TEST("Throat Spray does not activate if user flinches")
{
GIVEN {
+ ASSUME(IsSoundMove(MOVE_HYPER_VOICE) == TRUE);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@@ -105,9 +163,28 @@ SINGLE_BATTLE_TEST("Throat Spray does not activate if user flinches")
}
}
+SINGLE_BATTLE_TEST("Throat Spray does not activate if user flinches with status move")
+{
+ GIVEN {
+ ASSUME(IsSoundMove(MOVE_HYPER_VOICE) == TRUE);
+ PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_THROAT_SPRAY); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_FAKE_OUT); MOVE(player, MOVE_HOWL); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_FAKE_OUT, opponent);
+ NONE_OF {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, player);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
+ }
+ }
+}
+
+
SINGLE_BATTLE_TEST("Throat Spray is not blocked by Sheer Force")
{
GIVEN {
+ ASSUME(IsSoundMove(MOVE_BUG_BUZZ) == TRUE);
PLAYER(SPECIES_NIDOKING) { Ability(ABILITY_SHEER_FORCE); Item(ITEM_THROAT_SPRAY); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
diff --git a/test/battle/move_effect/absorb.c b/test/battle/move_effect/absorb.c
index b6a39d05ed..7eb55c253d 100644
--- a/test/battle/move_effect/absorb.c
+++ b/test/battle/move_effect/absorb.c
@@ -104,7 +104,24 @@ SINGLE_BATTLE_TEST("Absorb does not drain any HP if user flinched")
}
}
-TO_DO_BATTLE_TEST("Absorb recovers 50% of the damage dealt to a Substitute");
+SINGLE_BATTLE_TEST("Absorb recovers 50% of the damage dealt to a Substitute")
+{
+ u16 damage;
+ s16 healing;
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_ABSORB); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, opponent);
+ SUB_HIT(player, captureDamage: &damage);
+ HP_BAR(opponent, captureDamage: &healing);
+ } THEN {
+ EXPECT_MUL_EQ(damage, Q_4_12(-0.5), healing);
+ }
+}
SINGLE_BATTLE_TEST("Absorb does not drain any HP if user does 0 damage")
{
diff --git a/test/battle/move_effect/ceaseless_edge.c b/test/battle/move_effect/ceaseless_edge.c
index 288045945f..97e9fcd73d 100644
--- a/test/battle/move_effect/ceaseless_edge.c
+++ b/test/battle/move_effect/ceaseless_edge.c
@@ -94,3 +94,20 @@ SINGLE_BATTLE_TEST("Ceaseless Edge does not set up hazards if target was not hit
}
}
}
+
+SINGLE_BATTLE_TEST("Ceaseless Edge will set up rocks if the target is behind a Substitute")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ PLAYER(SPECIES_WYNAUT);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_CEASELESS_EDGE); }
+ TURN { SWITCH(player, 1); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CEASELESS_EDGE, opponent);
+ SUB_HIT(player);
+ HP_BAR(player);
+ }
+}
diff --git a/test/battle/move_effect/chloroblast.c b/test/battle/move_effect/chloroblast.c
index cd81496934..30bbd76d42 100644
--- a/test/battle/move_effect/chloroblast.c
+++ b/test/battle/move_effect/chloroblast.c
@@ -156,3 +156,18 @@ SINGLE_BATTLE_TEST("Chloroblast is not affected by Reckless", s16 damage)
EXPECT_EQ(results[0].damage, results[1].damage);
}
}
+
+SINGLE_BATTLE_TEST("Chloroblast has recoil if the target is behind a Substitute")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET) { HP(400); MaxHP(400); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_CHLOROBLAST); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CHLOROBLAST, opponent);
+ SUB_HIT(player);
+ HP_BAR(opponent, damage: 200);
+ }
+}
diff --git a/test/battle/move_effect/core_enforcer.c b/test/battle/move_effect/core_enforcer.c
new file mode 100644
index 0000000000..a8b45b108b
--- /dev/null
+++ b/test/battle/move_effect/core_enforcer.c
@@ -0,0 +1,54 @@
+#include "global.h"
+#include "test/battle.h"
+
+SINGLE_BATTLE_TEST("Core Enforcer suppresses the ability of targets that have already acted")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WEEZING) { Ability(ABILITY_LEVITATE); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_CORE_ENFORCER); }
+ TURN { MOVE(player, MOVE_EARTHQUAKE); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CORE_ENFORCER, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, player);
+ HP_BAR(opponent);
+ }
+}
+
+SINGLE_BATTLE_TEST("Core Enforcer doesn't suppresses the ability of targets that haven't acted")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WEEZING) { Ability(ABILITY_LEVITATE); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_CORE_ENFORCER); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_EARTHQUAKE); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CORE_ENFORCER, player);
+ HP_BAR(opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ NONE_OF {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, player);
+ HP_BAR(opponent);
+ }
+ }
+}
+
+SINGLE_BATTLE_TEST("Core Enforcer suppresses the ability of targets that have already acted that are behind Substitutes")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WEEZING) { Ability(ABILITY_LEVITATE); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_CORE_ENFORCER); }
+ TURN { MOVE(player, MOVE_EARTHQUAKE); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CORE_ENFORCER, player);
+ SUB_HIT(opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, player);
+ SUB_HIT(opponent);
+ }
+}
diff --git a/test/battle/move_effect/encore.c b/test/battle/move_effect/encore.c
index 64cf73f224..a9a038da10 100644
--- a/test/battle/move_effect/encore.c
+++ b/test/battle/move_effect/encore.c
@@ -6,7 +6,7 @@ ASSUMPTIONS
ASSUME(GetMoveEffect(MOVE_ENCORE) == EFFECT_ENCORE);
}
-SINGLE_BATTLE_TEST("Encore forces consecutive move uses for 3 turns: Encore used before move")
+SINGLE_BATTLE_TEST("Encore forces consecutive move uses for 3 turns: Encore used before move (Gen5+)")
{
struct BattlePokemon *encoreUser = NULL;
struct BattlePokemon *encoreTarget = NULL;
@@ -14,14 +14,14 @@ SINGLE_BATTLE_TEST("Encore forces consecutive move uses for 3 turns: Encore used
PARAMETRIZE { encoreUser = opponent; encoreTarget = player; speedPlayer = 10; speedOpponent = 20; }
PARAMETRIZE { encoreUser = player; encoreTarget = opponent; speedPlayer = 20; speedOpponent = 10; }
GIVEN {
- WITH_CONFIG(B_ENCORE_TARGET, GEN_3);
+ WITH_CONFIG(B_ENCORE_TURNS, GEN_5);
PLAYER(SPECIES_WOBBUFFET) { Speed(speedPlayer); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(speedOpponent); }
} WHEN {
TURN { MOVE(encoreUser, MOVE_CELEBRATE); MOVE(encoreTarget, MOVE_CELEBRATE); }
TURN { MOVE(encoreUser, MOVE_ENCORE); MOVE(encoreTarget, MOVE_CELEBRATE); }
- TURN { FORCED_MOVE(encoreTarget); }
- TURN { FORCED_MOVE(encoreTarget); }
+ TURN { MOVE(encoreTarget, MOVE_CELEBRATE); }
+ TURN { MOVE(encoreTarget, MOVE_CELEBRATE); }
TURN { MOVE(encoreTarget, MOVE_SPLASH); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, encoreUser);
@@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Encore forces consecutive move uses for 3 turns: Encore used
}
}
-SINGLE_BATTLE_TEST("Encore forces consecutive move uses for 3 turns for player: Encore used after move")
+SINGLE_BATTLE_TEST("Encore forces consecutive move uses for 4 turns: Encore used after move (Gen5+)")
{
struct BattlePokemon *encoreUser = NULL;
struct BattlePokemon *encoreTarget = NULL;
@@ -42,14 +42,14 @@ SINGLE_BATTLE_TEST("Encore forces consecutive move uses for 3 turns for player:
PARAMETRIZE { encoreUser = opponent; encoreTarget = player; speedPlayer = 20; speedOpponent = 10; }
PARAMETRIZE { encoreUser = player; encoreTarget = opponent; speedPlayer = 10; speedOpponent = 20; }
GIVEN {
- WITH_CONFIG(B_ENCORE_TARGET, GEN_3);
+ WITH_CONFIG(B_ENCORE_TURNS, GEN_5);
PLAYER(SPECIES_WOBBUFFET) { Speed(speedPlayer); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(speedOpponent); }
} WHEN {
TURN { MOVE(encoreTarget, MOVE_CELEBRATE); MOVE(encoreUser, MOVE_ENCORE); }
- TURN { FORCED_MOVE(encoreTarget); }
- TURN { FORCED_MOVE(encoreTarget); }
- TURN { FORCED_MOVE(encoreTarget); }
+ TURN { MOVE(encoreTarget, MOVE_CELEBRATE); }
+ TURN { MOVE(encoreTarget, MOVE_CELEBRATE); }
+ TURN { MOVE(encoreTarget, MOVE_CELEBRATE); }
TURN { MOVE(encoreTarget, MOVE_SPLASH); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, encoreTarget);
@@ -124,8 +124,127 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be encored immediately after
}
}
-TO_DO_BATTLE_TEST("Encore's effect ends if the encored move runs out of PP");
-TO_DO_BATTLE_TEST("Encore lasts for 2-6 turns (Gen 2-3)");
-TO_DO_BATTLE_TEST("Encore lasts for 3-7 turns (Gen 4)");
-TO_DO_BATTLE_TEST("Encore lasts for 3 turns (Gen 5+)");
-TO_DO_BATTLE_TEST("Encore randomly chooses an opponent target");
+SINGLE_BATTLE_TEST("Encore's effect ends if the encored move runs out of PP")
+{
+ GIVEN {
+ WITH_CONFIG(B_ENCORE_TURNS, GEN_5);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(1); MovesWithPP({MOVE_SCRATCH, 2}, {MOVE_CELEBRATE, 10}); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_ENCORE, MOVE_CELEBRATE); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
+ MESSAGE("Wobbuffet ended its encore!");
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ }
+}
+
+// NOTE: AI test is required to validate RNG range without MOVE/FORCED_MOVE invalids; there may be a better approach.
+AI_SINGLE_BATTLE_TEST("Encore lasts for 2-6 turns (Gen 2-3)")
+{
+ u32 count, turns;
+
+ PARAMETRIZE { turns = 2; }
+ PARAMETRIZE { turns = 3; }
+ PARAMETRIZE { turns = 4; }
+ PARAMETRIZE { turns = 5; }
+ PARAMETRIZE { turns = 6; }
+ PASSES_RANDOMLY(1, 5, RNG_ENCORE_TURNS);
+ GIVEN {
+ WITH_CONFIG(B_ENCORE_TURNS, GEN_3);
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(1); Moves(MOVE_ENCORE, MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_CELEBRATE); }
+ } WHEN {
+ TURN { EXPECT_MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_ENCORE); }
+ for (count = 0; count < turns - 1; ++count)
+ TURN { MOVE(player, MOVE_CELEBRATE); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, player);
+ for (count = 0; count < turns - 1; ++count)
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ MESSAGE("The opposing Wobbuffet ended its encore!");
+ }
+}
+
+AI_SINGLE_BATTLE_TEST("Encore lasts for 3-7 turns (Gen 4)")
+{
+ u32 count, turns;
+
+ PARAMETRIZE { turns = 3; }
+ PARAMETRIZE { turns = 4; }
+ PARAMETRIZE { turns = 5; }
+ PARAMETRIZE { turns = 6; }
+ PARAMETRIZE { turns = 7; }
+ PASSES_RANDOMLY(1, 5, RNG_ENCORE_TURNS);
+ GIVEN {
+ WITH_CONFIG(B_ENCORE_TURNS, GEN_4);
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(1); Moves(MOVE_ENCORE, MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_CELEBRATE); }
+ } WHEN {
+ TURN { EXPECT_MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_ENCORE); }
+ for (count = 0; count < turns - 1; ++count)
+ TURN { MOVE(player, MOVE_CELEBRATE); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, player);
+ for (count = 0; count < turns - 1; ++count)
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ MESSAGE("The opposing Wobbuffet ended its encore!");
+ }
+}
+
+DOUBLE_BATTLE_TEST("Encore randomly chooses an opponent target (Gen 2-4)")
+{
+ GIVEN {
+ WITH_CONFIG(B_ENCORE_TARGET, GEN_4);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(3); Moves(MOVE_TACKLE, MOVE_CELEBRATE); }
+ PLAYER(SPECIES_WOBBUFFET) { Speed(1); Moves(MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(4); Moves(MOVE_ENCORE, MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_CELEBRATE); }
+ } WHEN {
+ TURN {
+ MOVE(opponentLeft, MOVE_CELEBRATE);
+ MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft);
+ }
+ TURN {
+ MOVE(opponentLeft, MOVE_ENCORE, target: playerLeft, WITH_RNG(RNG_RANDOM_TARGET, 1));
+ MOVE(playerLeft, MOVE_CELEBRATE);
+ }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponentLeft);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft, target: opponentRight);
+ HP_BAR(opponentRight);
+ }
+}
+
+DOUBLE_BATTLE_TEST("Encore allows choosing an opponent target (Gen 5+)")
+{
+ GIVEN {
+ WITH_CONFIG(B_ENCORE_TARGET, GEN_5);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(3); Moves(MOVE_TACKLE, MOVE_CELEBRATE); }
+ PLAYER(SPECIES_WOBBUFFET) { Speed(1); Moves(MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(4); Moves(MOVE_ENCORE, MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_CELEBRATE); }
+ } WHEN {
+ TURN {
+ MOVE(opponentLeft, MOVE_CELEBRATE);
+ MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft);
+ }
+ TURN {
+ MOVE(opponentLeft, MOVE_ENCORE, target: playerLeft);
+ MOVE(playerLeft, MOVE_TACKLE, target: opponentRight);
+ }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponentLeft);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft, target: opponentRight);
+ HP_BAR(opponentRight);
+ }
+}
diff --git a/test/battle/move_effect/heal_bell.c b/test/battle/move_effect/heal_bell.c
index cc883e54d2..95478cd3dd 100644
--- a/test/battle/move_effect/heal_bell.c
+++ b/test/battle/move_effect/heal_bell.c
@@ -5,7 +5,7 @@ ASSUMPTIONS
{
ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL);
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
- ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
}
DOUBLE_BATTLE_TEST("Sparkly Swirl cures the entire party")
diff --git a/test/battle/move_effect/hit_escape.c b/test/battle/move_effect/hit_escape.c
index b4e3e2f4e5..b244c4b161 100644
--- a/test/battle/move_effect/hit_escape.c
+++ b/test/battle/move_effect/hit_escape.c
@@ -207,3 +207,17 @@ SINGLE_BATTLE_TEST("Hit Escape: U-turn will fail to switch if the user faints")
HP_BAR(opponent);
}
}
+
+SINGLE_BATTLE_TEST("Hit Escape: U-turn will switch if the target is behind a Substitute")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WYNAUT);
+ } WHEN {
+ TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_U_TURN); SEND_OUT(opponent, 1); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, opponent);
+ }
+}
diff --git a/test/battle/move_effect/ice_spinner.c b/test/battle/move_effect/ice_spinner.c
index 82bf1c7d41..032da8a51d 100644
--- a/test/battle/move_effect/ice_spinner.c
+++ b/test/battle/move_effect/ice_spinner.c
@@ -125,3 +125,20 @@ AI_SINGLE_BATTLE_TEST("Ice Spinner can be chosen by AI regardless if there is a
}
}
}
+
+SINGLE_BATTLE_TEST("Ice Spinner will remove terrain if target is behind a Substitute")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_GRASSY_TERRAIN); }
+ TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_ICE_SPINNER); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_GRASSY_TERRAIN, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_ICE_SPINNER, opponent);
+ SUB_HIT(player);
+ NOT HP_BAR(player);
+ }
+}
diff --git a/test/battle/move_effect/knock_off.c b/test/battle/move_effect/knock_off.c
index 8e46ee3151..f8b3f21037 100644
--- a/test/battle/move_effect/knock_off.c
+++ b/test/battle/move_effect/knock_off.c
@@ -437,3 +437,73 @@ SINGLE_BATTLE_TEST("Knock Off does not activate if the item was previously consu
EXPECT(opponent->item == ITEM_NONE);
}
}
+
+SINGLE_BATTLE_TEST("Knock Off does knock off Ogerpon masks from Pokemon that aren't Ogerpon")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_HEARTHFLAME_MASK); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_KNOCK_OFF); }
+ } SCENE {
+ MESSAGE("Wobbuffet knocked off the opposing Wobbuffet's Hearthflame Mask!");
+ } THEN {
+ EXPECT(opponent->item == ITEM_NONE);
+ }
+}
+
+SINGLE_BATTLE_TEST("Knock Off doesn't knock off Ogerpon masks from Ogerpon")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_OGERPON) { Item(ITEM_HEARTHFLAME_MASK); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_KNOCK_OFF); }
+ } SCENE {
+ NOT MESSAGE("Wobbuffet knocked off the opposing Ogerpon's Hearthflame Mask!");
+ } THEN {
+ EXPECT(opponent->item == ITEM_HEARTHFLAME_MASK);
+ }
+}
+
+SINGLE_BATTLE_TEST("Knock Off does knock off a Booster Energy from a non Paradox Pokemon")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BOOSTER_ENERGY); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_KNOCK_OFF); }
+ } SCENE {
+ MESSAGE("Wobbuffet knocked off the opposing Wobbuffet's Booster Energy!");
+ } THEN {
+ EXPECT(opponent->item == ITEM_NONE);
+ }
+}
+
+SINGLE_BATTLE_TEST("Knock Off doesn't knock off a Paradox mon's Booster Energy")
+{
+ GIVEN {
+ PLAYER(SPECIES_TORKOAL) { Ability(ABILITY_DROUGHT); }
+ OPPONENT(SPECIES_GREAT_TUSK) { Item(ITEM_BOOSTER_ENERGY); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_KNOCK_OFF); }
+ } SCENE {
+ NOT MESSAGE("Wobbuffet knocked off the opposing Great Tusk's Booster Energy!");
+ } THEN {
+ EXPECT(opponent->item == ITEM_BOOSTER_ENERGY);
+ }
+}
+
+SINGLE_BATTLE_TEST("Knock Off used by a Paradox mon doesn't knock off a non-Paradox mon's Booster Energy")
+{
+ GIVEN {
+ PLAYER(SPECIES_GREAT_TUSK);
+ OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BOOSTER_ENERGY); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_KNOCK_OFF); }
+ } SCENE {
+ NOT MESSAGE("Great Tust knocked off the opposing Wobbuffet's Booster Energy!");
+ } THEN {
+ EXPECT(opponent->item == ITEM_BOOSTER_ENERGY);
+ }
+}
diff --git a/test/battle/move_effect/lock_on.c b/test/battle/move_effect/lock_on.c
index 750b27fc30..34dc80c060 100644
--- a/test/battle/move_effect/lock_on.c
+++ b/test/battle/move_effect/lock_on.c
@@ -1,7 +1,10 @@
#include "global.h"
#include "test/battle.h"
-TO_DO_BATTLE_TEST("TODO: Write Lock-On/Mind Reader (Move Effect) test titles")
+ASSUMPTIONS
+{
+ ASSUME(GetMoveEffect(MOVE_LOCK_ON) == EFFECT_LOCK_ON);
+}
SINGLE_BATTLE_TEST("Lock-On volatile allows to hit through semi-invulnerability")
{
@@ -15,6 +18,120 @@ SINGLE_BATTLE_TEST("Lock-On volatile allows to hit through semi-invulnerability"
ANIMATION(ANIM_TYPE_MOVE, MOVE_LOCK_ON, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_FLY, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, player);
- HP_BAR(opponent); // Pound hit
+ HP_BAR(opponent); // Pound hit
}
}
+
+SINGLE_BATTLE_TEST("Lock-On skips the accuracy check for 2 turns (Player uses Lock-On)")
+{
+ PASSES_RANDOMLY(10, 10, RNG_ACCURACY);
+ GIVEN {
+ ASSUME(GetMoveAccuracy(MOVE_SKY_UPPERCUT) == 90);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_LOCK_ON); }
+ TURN { MOVE(player, MOVE_SKY_UPPERCUT); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_LOCK_ON, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SKY_UPPERCUT, player);
+ } THEN {
+ u32 lockOn = gBattleMons[B_BATTLER_0].volatiles.lockOn;
+ u32 battlerWithSureHit = gBattleMons[B_BATTLER_0].volatiles.battlerWithSureHit;
+ EXPECT_EQ(lockOn, 0);
+ EXPECT_EQ(battlerWithSureHit, 0);
+ }
+}
+
+SINGLE_BATTLE_TEST("Lock-On skips the accuracy check for 2 turns (Opponent uses Lock-On)")
+{
+ PASSES_RANDOMLY(10, 10, RNG_ACCURACY);
+ GIVEN {
+ ASSUME(GetMoveAccuracy(MOVE_SKY_UPPERCUT) == 90);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_LOCK_ON); }
+ TURN { MOVE(opponent, MOVE_SKY_UPPERCUT); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_LOCK_ON, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SKY_UPPERCUT, opponent);
+ } THEN {
+ u32 lockOn = gBattleMons[B_BATTLER_1].volatiles.lockOn;
+ u32 battlerWithSureHit = gBattleMons[B_BATTLER_1].volatiles.battlerWithSureHit;
+ EXPECT_EQ(lockOn, 0);
+ EXPECT_EQ(battlerWithSureHit, 0);
+ }
+}
+
+SINGLE_BATTLE_TEST("Lock-On: Baton Pass does not transfer Lock-On volatile")
+{
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_BATON_PASS) == EFFECT_BATON_PASS);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WYNAUT);
+ } WHEN {
+ TURN { MOVE(player, MOVE_LOCK_ON); MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); }
+ TURN { MOVE(player, MOVE_SKY_UPPERCUT); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_LOCK_ON, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, opponent);
+ } THEN {
+ u32 battlerWithSureHit = gBattleMons[B_BATTLER_0].volatiles.battlerWithSureHit;
+ EXPECT_EQ(battlerWithSureHit, 0);
+ }
+}
+
+SINGLE_BATTLE_TEST("Lock-On: When locked on attacker faints, the volatile will be removed")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET) { HP(1); }
+ PLAYER(SPECIES_WYNAUT);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_LOCK_ON); MOVE(opponent, MOVE_POUND); SEND_OUT(player, 1); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_LOCK_ON, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, opponent);
+ } THEN {
+ u32 battlerWithSureHit = gBattleMons[B_BATTLER_0].volatiles.battlerWithSureHit;
+ EXPECT_EQ(battlerWithSureHit, 0);
+ }
+}
+
+SINGLE_BATTLE_TEST("Lock-On: When locked on target faints, the volatile will be removed")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
+ OPPONENT(SPECIES_WYNAUT);
+ } WHEN {
+ TURN { MOVE(player, MOVE_LOCK_ON); }
+ TURN { MOVE(player, MOVE_POUND); SEND_OUT(opponent, 1); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_LOCK_ON, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, player);
+ } THEN {
+ u32 battlerWithSureHit = gBattleMons[B_BATTLER_0].volatiles.battlerWithSureHit;
+ EXPECT_EQ(battlerWithSureHit, 0);
+ }
+}
+
+DOUBLE_BATTLE_TEST("Lock-On fails if a target has been locked on")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ PLAYER(SPECIES_WYNAUT);
+ OPPONENT(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WYNAUT);
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_LOCK_ON, target: opponentLeft); }
+ TURN { MOVE(playerLeft, MOVE_LOCK_ON, target: opponentRight); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_LOCK_ON, playerLeft);
+ NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_LOCK_ON, playerLeft);
+ }
+}
+
+TO_DO_BATTLE_TEST("TODO: Write Lock-On/Mind Reader (Move Effect) test titles")
diff --git a/test/battle/move_effect/max_hp_50_recoil.c b/test/battle/move_effect/max_hp_50_recoil.c
index 566b6ced98..edffb7e952 100644
--- a/test/battle/move_effect/max_hp_50_recoil.c
+++ b/test/battle/move_effect/max_hp_50_recoil.c
@@ -147,3 +147,18 @@ SINGLE_BATTLE_TEST("Steel Beam is not blocked by Damp")
}
}
}
+
+SINGLE_BATTLE_TEST("Steel Beam inflicts recoil if it hits a Substitute")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET) { HP(400); MaxHP(400); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_STEEL_BEAM); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_STEEL_BEAM, player);
+ SUB_HIT(opponent);
+ HP_BAR(player, damage: 200);
+ }
+}
diff --git a/test/battle/move_effect/protect.c b/test/battle/move_effect/protect.c
index 916369cdb2..15b5fc9547 100644
--- a/test/battle/move_effect/protect.c
+++ b/test/battle/move_effect/protect.c
@@ -958,3 +958,33 @@ DOUBLE_BATTLE_TEST("Wide Guard is still activate even if user is switched out du
}
}
}
+
+DOUBLE_BATTLE_TEST("Protect is not ignored after a new mon switched in because of U-Turn")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ PLAYER(SPECIES_WYNAUT);
+ OPPONENT(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WYNAUT);
+ } WHEN {
+ TURN {
+ MOVE(playerRight, MOVE_PROTECT);
+ MOVE(opponentLeft, MOVE_POUND, target: playerRight);
+ MOVE(opponentRight, MOVE_U_TURN, target: playerLeft);
+ SEND_OUT(opponentRight, 2);
+ }
+ TURN {
+ MOVE(playerLeft, MOVE_DETECT);
+ MOVE(opponentLeft, MOVE_POUND, target: playerRight);
+ MOVE(opponentRight, MOVE_POUND, target: playerLeft);
+ }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, playerRight);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, opponentRight);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_DETECT, playerLeft);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, opponentLeft);
+ NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, opponentRight);
+ }
+}
+
diff --git a/test/battle/move_effect/rapid_spin.c b/test/battle/move_effect/rapid_spin.c
index 0ef6cce558..a41ffc5d11 100644
--- a/test/battle/move_effect/rapid_spin.c
+++ b/test/battle/move_effect/rapid_spin.c
@@ -120,3 +120,27 @@ SINGLE_BATTLE_TEST("Rapid Spin doesn't blow away Wrap, hazards or raise Speed wh
}
}
}
+
+SINGLE_BATTLE_TEST("Rapid Spin and Mortal Spin will remove hazards if the target is behind a Substitute")
+{
+ enum Move move;
+
+ PARAMETRIZE { move = MOVE_RAPID_SPIN; }
+ PARAMETRIZE { move = MOVE_MORTAL_SPIN; }
+
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WYNAUT);
+ } WHEN {
+ TURN { MOVE(player, MOVE_STEALTH_ROCK); }
+ TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, move); }
+ TURN { SWITCH(opponent, 1); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
+ ANIMATION(ANIM_TYPE_MOVE, move, opponent);
+ SUB_HIT(player);
+ NOT HP_BAR(opponent);
+ }
+}
diff --git a/test/battle/move_effect/steel_roller.c b/test/battle/move_effect/steel_roller.c
index 3ca334480c..762cff8169 100644
--- a/test/battle/move_effect/steel_roller.c
+++ b/test/battle/move_effect/steel_roller.c
@@ -73,3 +73,19 @@ AI_SINGLE_BATTLE_TEST("Steel Roller wont be chosen by AI if there is no terrain
}
}
}
+
+SINGLE_BATTLE_TEST("Steel Roller will remove terrain if target is behind a Substitute")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_GRASSY_TERRAIN); }
+ TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_STEEL_ROLLER); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_GRASSY_TERRAIN, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_STEEL_ROLLER, opponent);
+ NOT HP_BAR(player);
+ }
+}
diff --git a/test/battle/move_effect/stone_axe.c b/test/battle/move_effect/stone_axe.c
index d65798d18b..34a00c000b 100644
--- a/test/battle/move_effect/stone_axe.c
+++ b/test/battle/move_effect/stone_axe.c
@@ -92,3 +92,20 @@ SINGLE_BATTLE_TEST("Stone Axe fails to set up hazards if user faints")
NOT MESSAGE("Pointed stones float in the air around the opposing team!");
}
}
+
+SINGLE_BATTLE_TEST("Stone Axe will set up rocks if the target is behind a Substitute")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET);
+ PLAYER(SPECIES_WYNAUT);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_STONE_AXE); }
+ TURN { SWITCH(player, 1); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_STONE_AXE, opponent);
+ SUB_HIT(player);
+ HP_BAR(player);
+ }
+}
diff --git a/test/battle/move_effect/synchronoise.c b/test/battle/move_effect/synchronoise.c
index 2c76008546..afb9273d36 100644
--- a/test/battle/move_effect/synchronoise.c
+++ b/test/battle/move_effect/synchronoise.c
@@ -41,9 +41,9 @@ DOUBLE_BATTLE_TEST("Synchronoise will fail if there is no corresponding typing o
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SYNCHRONOISE, playerLeft);
MESSAGE("Wobbuffet used Synchronoise!");
- MESSAGE("It doesn't affect the opposing Bulbasaurโฆ");
MESSAGE("It doesn't affect Bulbasaurโฆ");
MESSAGE("It doesn't affect the opposing Bulbasaurโฆ");
+ MESSAGE("It doesn't affect the opposing Bulbasaurโฆ");
NOT MESSAGE("But it failed!");
}
}
@@ -108,8 +108,8 @@ DOUBLE_BATTLE_TEST("Synchronoise will fail for a typeless user even if a target
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SYNCHRONOISE, playerLeft);
MESSAGE("Arcanine used Synchronoise!");
- MESSAGE("It doesn't affect the opposing Arcanineโฆ");
MESSAGE("It doesn't affect Wobbuffetโฆ");
+ MESSAGE("It doesn't affect the opposing Arcanineโฆ");
MESSAGE("It doesn't affect the opposing Wobbuffetโฆ");
NOT MESSAGE("But it failed!");
}
diff --git a/test/battle/move_effect/taunt.c b/test/battle/move_effect/taunt.c
index 91fe13364d..491aa3a50b 100644
--- a/test/battle/move_effect/taunt.c
+++ b/test/battle/move_effect/taunt.c
@@ -1,4 +1,83 @@
#include "global.h"
#include "test/battle.h"
-TO_DO_BATTLE_TEST("TODO: Write Taunt (Move Effect) test titles")
+ASSUMPTIONS
+{
+ ASSUME(GetMoveEffect(MOVE_TAUNT) == EFFECT_TAUNT);
+}
+
+SINGLE_BATTLE_TEST("Taunt lasts for 2 turns (Gen 3)")
+{
+ GIVEN {
+ WITH_CONFIG(B_TAUNT_TURNS, GEN_3);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_GROWL, MOVE_TACKLE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(1); Moves(MOVE_TAUNT, MOVE_CELEBRATE); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_GROWL); MOVE(opponent, MOVE_TAUNT); }
+ TURN { MOVE(player, MOVE_GROWL, allowed: FALSE); MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_GROWL); MOVE(opponent, MOVE_CELEBRATE); }
+ }
+}
+
+// NOTE: AI test is required to validate RNG range without MOVE/FORCED_MOVE invalids; there may be a better approach.
+AI_SINGLE_BATTLE_TEST("Taunt lasts for 3-5 turns (Gen 4)")
+{
+ u32 count, turns;
+
+ PARAMETRIZE { turns = 3; }
+ PARAMETRIZE { turns = 4; }
+ PARAMETRIZE { turns = 5; }
+ PASSES_RANDOMLY(1, 3, RNG_TAUNT_TURNS);
+ GIVEN {
+ WITH_CONFIG(B_TAUNT_TURNS, GEN_4);
+ AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(1); Moves(MOVE_TAUNT, MOVE_CELEBRATE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_GROWL, MOVE_TACKLE); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_TAUNT); }
+ for (count = 0; count < turns - 1; ++count)
+ TURN { MOVE(player, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_CELEBRATE); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TAUNT, player);
+ for (count = 0; count < turns - 1; ++count)
+ {
+ NOT MESSAGE("The opposing Wobbuffet's Taunt wore off!");
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ }
+ MESSAGE("The opposing Wobbuffet's Taunt wore off!");
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ }
+}
+
+SINGLE_BATTLE_TEST("Taunt lasts for 3 turns if target hasn't moved (Gen 5+)")
+{
+ u32 count;
+
+ GIVEN {
+ WITH_CONFIG(B_TAUNT_TURNS, GEN_5);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(1); Moves(MOVE_GROWL, MOVE_TACKLE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_TAUNT, MOVE_CELEBRATE); }
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_TAUNT); MOVE(player, MOVE_GROWL); }
+ for (count = 0; count < 2; ++count)
+ TURN { MOVE(player, MOVE_GROWL, allowed: FALSE); MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_GROWL); MOVE(opponent, MOVE_CELEBRATE); }
+ }
+}
+
+SINGLE_BATTLE_TEST("Taunt lasts for 4 turns if target already moved (Gen 5+)")
+{
+ u32 count;
+
+ GIVEN {
+ WITH_CONFIG(B_TAUNT_TURNS, GEN_5);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_GROWL, MOVE_TACKLE); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(1); Moves(MOVE_TAUNT, MOVE_CELEBRATE); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_GROWL); MOVE(opponent, MOVE_TAUNT); }
+ for (count = 0; count < 3; ++count)
+ TURN { MOVE(player, MOVE_GROWL, allowed: FALSE); MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_GROWL); MOVE(opponent, MOVE_CELEBRATE); }
+ }
+}
diff --git a/test/battle/move_effect/trick_room.c b/test/battle/move_effect/trick_room.c
index 615931ef15..1e1556bc24 100644
--- a/test/battle/move_effect/trick_room.c
+++ b/test/battle/move_effect/trick_room.c
@@ -1,4 +1,76 @@
#include "global.h"
#include "test/battle.h"
+ASSUMPTIONS
+{
+ ASSUME(GetMoveEffect(MOVE_TRICK_ROOM) == EFFECT_TRICK_ROOM);
+}
+
+SINGLE_BATTLE_TEST("Trick Room doesn't print its ending message twice when used again")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET) { Speed(10); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(1); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_TRICK_ROOM); }
+ TURN { MOVE(player, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_TRICK_ROOM); }
+ TURN { MOVE(player, MOVE_CELEBRATE); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK_ROOM, player);
+ MESSAGE("Wobbuffet twisted the dimensions!");
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK_ROOM, player);
+ MESSAGE("The twisted dimensions returned to normal!");
+ NOT MESSAGE("The twisted dimensions returned to normal!");
+ }
+}
+
+SINGLE_BATTLE_TEST("Trick Room reverses move order for 5 turns including the turn it is used")
+{
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET) { Speed(1); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_TRICK_ROOM); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK_ROOM, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ }
+}
+
+SINGLE_BATTLE_TEST("Trick Room does not affect move priority")
+{
+ GIVEN {
+ ASSUME(GetMovePriority(MOVE_CELEBRATE) == 0);
+ ASSUME(GetMovePriority(MOVE_QUICK_ATTACK) == 1);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(1); }
+ OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
+ } WHEN {
+ TURN { MOVE(player, MOVE_TRICK_ROOM); MOVE(opponent, MOVE_CELEBRATE); }
+ TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_QUICK_ATTACK); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK_ROOM, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
+ }
+}
+
TO_DO_BATTLE_TEST("TODO: Write Trick Room (Move Effect) test titles")
diff --git a/test/battle/move_effect/trump_card.c b/test/battle/move_effect/trump_card.c
index 21b5c48ca3..1fa9850a4c 100644
--- a/test/battle/move_effect/trump_card.c
+++ b/test/battle/move_effect/trump_card.c
@@ -1,4 +1,79 @@
#include "global.h"
#include "test/battle.h"
-TO_DO_BATTLE_TEST("TODO: Write Trump Card (Move Effect) test titles")
+ASSUMPTIONS
+{
+ ASSUME(GetMoveEffect(MOVE_TRUMP_CARD) == EFFECT_TRUMP_CARD);
+}
+
+SINGLE_BATTLE_TEST("Trump Card increases in power if its PP is low", s16 damage)
+{
+ // pp + 1 is assigned as the move's PP as it will be reduced before its base power is determined
+ u32 pp;
+
+ PARAMETRIZE { pp = 4; } // 40 power
+ PARAMETRIZE { pp = 3; } // 50 power
+ PARAMETRIZE { pp = 2; } // 60 power
+ PARAMETRIZE { pp = 1; } // 80 power
+ PARAMETRIZE { pp = 0; } // 200 power
+
+ GIVEN {
+ PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TRUMP_CARD, pp + 1}); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_TRUMP_CARD); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TRUMP_CARD, player);
+ HP_BAR(opponent, captureDamage: &results[i].damage);
+ } FINALLY {
+ EXPECT_MUL_EQ(results[0].damage, UQ_4_12(1.25), results[1].damage);
+ EXPECT_MUL_EQ(results[0].damage, UQ_4_12(1.5), results[2].damage);
+ EXPECT_MUL_EQ(results[0].damage, UQ_4_12(2.0), results[3].damage);
+ EXPECT_MUL_EQ(results[0].damage, UQ_4_12(5.0), results[4].damage);
+ }
+}
+
+SINGLE_BATTLE_TEST("Trump Card doesn't increase in power if its PP is low when called by a different move", s16 damage)
+{
+ u32 pp;
+
+ PARAMETRIZE { pp = 4; } // would be 40 power
+ PARAMETRIZE { pp = 0; } // would be 200 power
+
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK);
+ PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TRUMP_CARD, pp}, {MOVE_SLEEP_TALK, 10}); Status1(STATUS1_SLEEP); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_SLEEP_TALK); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SLEEP_TALK, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TRUMP_CARD, player);
+ HP_BAR(opponent, captureDamage: &results[i].damage);
+ } FINALLY {
+ EXPECT_EQ(results[0].damage, results[1].damage);
+ }
+}
+
+SINGLE_BATTLE_TEST("Trump Card increases in power if the move that called it has low PP", s16 damage)
+{
+ // pp + 1 is assigned as the move's PP as it will be reduced before its base power is determined
+ u32 pp;
+
+ PARAMETRIZE { pp = 4; } // 40 power
+ PARAMETRIZE { pp = 0; } // 200 power
+
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK);
+ PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_TRUMP_CARD, 5}, {MOVE_SLEEP_TALK, pp + 1}); Status1(STATUS1_SLEEP); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_SLEEP_TALK); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SLEEP_TALK, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TRUMP_CARD, player);
+ HP_BAR(opponent, captureDamage: &results[i].damage);
+ } FINALLY {
+ EXPECT_MUL_EQ(results[0].damage, UQ_4_12(5.0), results[1].damage);
+ }
+}
diff --git a/test/battle/move_effect_secondary/aromatherapy.c b/test/battle/move_effect_secondary/aromatherapy.c
index 9f1e82ba2d..12aa1212df 100644
--- a/test/battle/move_effect_secondary/aromatherapy.c
+++ b/test/battle/move_effect_secondary/aromatherapy.c
@@ -3,7 +3,7 @@
ASSUMPTIONS
{
- ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
}
DOUBLE_BATTLE_TEST("Sparkly Swirl cures the entire party of the user from primary status effects")
diff --git a/test/battle/move_effect_secondary/break_screens.c b/test/battle/move_effect_secondary/break_screens.c
index 3035002a0d..f400795fed 100644
--- a/test/battle/move_effect_secondary/break_screens.c
+++ b/test/battle/move_effect_secondary/break_screens.c
@@ -159,3 +159,25 @@ DOUBLE_BATTLE_TEST("Brick Break and Psychic Fangs can remove Light Screen, Refle
}
}
+SINGLE_BATTLE_TEST("Brick Break and Psychic Fangs can remove screens when the target is behind a Substitute")
+{
+ enum Move move;
+
+ PARAMETRIZE { move = MOVE_BRICK_BREAK; }
+ PARAMETRIZE { move = MOVE_PSYCHIC_FANGS; }
+
+ GIVEN {
+
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_REFLECT); }
+ TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, move); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
+ ANIMATION(ANIM_TYPE_MOVE, move, opponent);
+ MESSAGE("The wall shattered!");
+ SUB_HIT(player);
+ }
+}
diff --git a/test/battle/move_effect_secondary/ion_deluge.c b/test/battle/move_effect_secondary/ion_deluge.c
index 003bfc825f..51605eb59b 100644
--- a/test/battle/move_effect_secondary/ion_deluge.c
+++ b/test/battle/move_effect_secondary/ion_deluge.c
@@ -116,3 +116,22 @@ SINGLE_BATTLE_TEST("Plasma Fists turns normal type dynamax-moves into electric t
MESSAGE("It's super effective!");
}
}
+
+SINGLE_BATTLE_TEST("Plasma Fists turns normal moves into electric moves even if it hits a substitute")
+{
+ GIVEN {
+ PLAYER(SPECIES_JOLTEON) { Ability(ABILITY_VOLT_ABSORB); }
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_SUBSTITUTE); }
+ TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_SCRATCH); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, player);
+ SUB_HIT(opponent);
+ NONE_OF {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent);
+ HP_BAR(player);
+ }
+ }
+}
diff --git a/test/battle/move_effect_secondary/light_screen.c b/test/battle/move_effect_secondary/light_screen.c
index e834e6055f..772378534a 100644
--- a/test/battle/move_effect_secondary/light_screen.c
+++ b/test/battle/move_effect_secondary/light_screen.c
@@ -3,7 +3,7 @@
ASSUMPTIONS
{
- ASSUME(MoveHasAdditionalEffect(MOVE_GLITZY_GLOW, MOVE_EFFECT_LIGHT_SCREEN) == TRUE);
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_GLITZY_GLOW, MOVE_EFFECT_LIGHT_SCREEN) == TRUE);
}
SINGLE_BATTLE_TEST("Glitzy Glow sets up Light Screen when it was succesful")
diff --git a/test/battle/move_effect_secondary/reflect.c b/test/battle/move_effect_secondary/reflect.c
index d0ada07926..2d38980a4b 100644
--- a/test/battle/move_effect_secondary/reflect.c
+++ b/test/battle/move_effect_secondary/reflect.c
@@ -3,7 +3,7 @@
ASSUMPTIONS
{
- ASSUME(MoveHasAdditionalEffect(MOVE_BADDY_BAD, MOVE_EFFECT_REFLECT) == TRUE);
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_BADDY_BAD, MOVE_EFFECT_REFLECT) == TRUE);
}
SINGLE_BATTLE_TEST("Baddy Bad sets up Reflect when it was succesful")
diff --git a/test/battle/move_effect_secondary/secret_power.c b/test/battle/move_effect_secondary/secret_power.c
new file mode 100644
index 0000000000..f2c1016cb6
--- /dev/null
+++ b/test/battle/move_effect_secondary/secret_power.c
@@ -0,0 +1,73 @@
+#include "global.h"
+#include "test/battle.h"
+
+ASSUMPTIONS
+{
+ ASSUME(MoveHasAdditionalEffect(MOVE_SECRET_POWER, MOVE_EFFECT_SECRET_POWER) == TRUE);
+}
+
+SINGLE_BATTLE_TEST("Secret Power inflicts paralysis in Electric Terrain")
+{
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_ELECTRIC_TERRAIN) == EFFECT_ELECTRIC_TERRAIN);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_ELECTRIC_TERRAIN); MOVE(player, MOVE_SECRET_POWER); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIC_TERRAIN, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SECRET_POWER, player);
+ STATUS_ICON(opponent, paralysis: TRUE);
+ }
+}
+
+SINGLE_BATTLE_TEST("Secret Power inflicts sleep in Grassy Terrain")
+{
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_GRASSY_TERRAIN) == EFFECT_GRASSY_TERRAIN);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_GRASSY_TERRAIN); MOVE(player, MOVE_SECRET_POWER); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_GRASSY_TERRAIN, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SECRET_POWER, player);
+ STATUS_ICON(opponent, sleep: TRUE);
+ }
+}
+
+SINGLE_BATTLE_TEST("Secret Power lowers Speed in Psychic Terrain")
+{
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_PSYCHIC_TERRAIN) == EFFECT_PSYCHIC_TERRAIN);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_PSYCHIC_TERRAIN); MOVE(player, MOVE_SECRET_POWER); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHIC_TERRAIN, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SECRET_POWER, player);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
+ } THEN {
+ EXPECT_EQ(opponent->statStages[STAT_SPEED], DEFAULT_STAT_STAGE - 1);
+ }
+}
+
+SINGLE_BATTLE_TEST("Secret Power lowers Sp. Atk in Misty Terrain")
+{
+ GIVEN {
+ ASSUME(GetMoveEffect(MOVE_MISTY_TERRAIN) == EFFECT_MISTY_TERRAIN);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(opponent, MOVE_MISTY_TERRAIN); MOVE(player, MOVE_SECRET_POWER); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_MISTY_TERRAIN, opponent);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SECRET_POWER, player);
+ ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
+ } THEN {
+ EXPECT_EQ(opponent->statStages[STAT_SPATK], DEFAULT_STAT_STAGE - 1);
+ }
+}
+
+TO_DO_BATTLE_TEST("Secret Power doesn't inflict secondary effects when user fainted");
diff --git a/test/battle/move_flags/recoil.c b/test/battle/move_flags/recoil.c
index 2593a0e1f6..1c59c7525f 100644
--- a/test/battle/move_flags/recoil.c
+++ b/test/battle/move_flags/recoil.c
@@ -137,3 +137,23 @@ SINGLE_BATTLE_TEST("Recoil: No recoil is taken if the move is blocked by Disguis
EXPECT_EQ(player->hp, player->maxHP);
}
}
+
+SINGLE_BATTLE_TEST("Recoil: Hitting substitutes inflicts recoil")
+{
+ u16 damage;
+ s16 recoil;
+ GIVEN {
+ ASSUME(GetMoveRecoil(MOVE_TAKE_DOWN) == 25);
+ PLAYER(SPECIES_WOBBUFFET);
+ OPPONENT(SPECIES_WOBBUFFET);
+ } WHEN {
+ TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_TAKE_DOWN); }
+ } SCENE {
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
+ ANIMATION(ANIM_TYPE_MOVE, MOVE_TAKE_DOWN, opponent);
+ SUB_HIT(player, captureDamage: &damage);
+ HP_BAR(opponent, captureDamage: &recoil);
+ } THEN {
+ EXPECT_MUL_EQ(damage, Q_4_12(0.25), recoil);
+ }
+}
diff --git a/test/battle/partner_control.party b/test/battle/partner_control.party
new file mode 100644
index 0000000000..b5bd7bb964
--- /dev/null
+++ b/test/battle/partner_control.party
@@ -0,0 +1,73 @@
+=== PARTNER_NONE ===
+Name:
+Class: Pkmn Trainer 1
+Pic: Brendan
+Gender: Male
+Music: Male
+Back Pic: Brendan
+
+=== PARTNER_STEVEN_TEST ===
+Name: STEVEN
+Class: Rival
+Pic: Steven
+Gender: Male
+Music: Male
+Back Pic: Steven
+AI: Basic Trainer
+Difficulty: Normal
+
+Metang
+Brave Nature
+Level: 42
+IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe
+EVs: 252 Atk / 252 Def / 6 SpA
+- Light Screen
+- Psychic
+- Reflect
+- Metal Claw
+
+Skarmory
+Impish Nature
+Level: 43
+IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe
+EVs: 252 HP / 6 SpA / 252 SpD
+- Toxic
+- Aerial Ace
+- Protect
+- Steel Wing
+
+Aggron
+Adamant Nature
+Level: 44
+IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe
+EVs: 252 Atk / 252 SpA / 6 SpD
+- Thunder
+- Protect
+- Solar Beam
+- Dragon Claw
+
+=== PARTNER_STEVEN_TEST ===
+Name: Test2
+Class: Rival
+Pic: Steven
+Gender: Male
+Music: Male
+Back Pic: Steven
+Battle Type: Singles
+Difficulty: Easy
+
+Metapod
+Level: 1
+
+=== PARTNER_STEVEN_TEST ===
+Name: Test2
+Class: Rival
+Pic: Steven
+Gender: Male
+Music: Male
+Back Pic: Steven
+Battle Type: Singles
+Difficulty: Hard
+
+Arceus
+Level: 99
diff --git a/test/battle/sleep_clause.c b/test/battle/sleep_clause.c
index 4555a6210c..178839ad32 100644
--- a/test/battle/sleep_clause.c
+++ b/test/battle/sleep_clause.c
@@ -588,7 +588,7 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL);
- ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
ASSUME(B_SLEEP_TURNS >= GEN_5);
PLAYER(SPECIES_ZIGZAGOON);
PLAYER(SPECIES_ZIGZAGOON);
@@ -1172,7 +1172,7 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
{
GIVEN {
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
- ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_SWEETNESS, MOVE_EFFECT_AROMATHERAPY));
+ ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_SWEETNESS, MOVE_EFFECT_AROMATHERAPY));
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
PLAYER(SPECIES_APPLETUN) { GigantamaxFactor(TRUE); }
diff --git a/test/battle/spread_moves.c b/test/battle/spread_moves.c
index eadd2ffff2..956591e49d 100644
--- a/test/battle/spread_moves.c
+++ b/test/battle/spread_moves.c
@@ -474,3 +474,22 @@ DOUBLE_BATTLE_TEST("Spread Moves: AOE ground type move vs Levitate and Air Ballo
HP_BAR(playerRight);
}
}
+
+DOUBLE_BATTLE_TEST("Spread Moves: Earthquake fails in order of ally, left foe, right foe")
+{
+ GIVEN {
+ ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == TARGET_FOES_AND_ALLY);
+ ASSUME(GetMoveCategory(MOVE_EARTHQUAKE) == DAMAGE_CATEGORY_PHYSICAL);
+ PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
+ PLAYER(SPECIES_FLYGON) { Speed(1); Ability(ABILITY_LEVITATE); }
+ OPPONENT(SPECIES_FLYGON) { Speed(2); Ability(ABILITY_LEVITATE); }
+ OPPONENT(SPECIES_FLYGON) { Speed(3); Ability(ABILITY_LEVITATE); }
+ } WHEN {
+ TURN { MOVE(playerLeft, MOVE_EARTHQUAKE); }
+ } SCENE {
+ ABILITY_POPUP(playerRight, ABILITY_LEVITATE);
+ ABILITY_POPUP(opponentLeft, ABILITY_LEVITATE);
+ ABILITY_POPUP(opponentRight, ABILITY_LEVITATE);
+ NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, playerLeft);
+ }
+}
diff --git a/test/battle/trainer_control.c b/test/battle/trainer_control.c
index 6a0925d762..90fcaf4069 100644
--- a/test/battle/trainer_control.c
+++ b/test/battle/trainer_control.c
@@ -11,33 +11,14 @@
#include "constants/abilities.h"
#include "constants/trainers.h"
#include "constants/battle.h"
-
-#define NUM_TEST_TRAINERS 12
-
-static const struct Trainer sTestTrainers[DIFFICULTY_COUNT][NUM_TEST_TRAINERS] =
-{
-#include "trainer_control.h"
-};
-
-enum DifficultyLevel GetTrainerDifficultyLevelTest(u16 trainerId)
-{
- enum DifficultyLevel difficulty = GetCurrentDifficultyLevel();
-
- if (difficulty == DIFFICULTY_NORMAL)
- return DIFFICULTY_NORMAL;
-
- if (sTestTrainers[difficulty][trainerId].party == NULL)
- return DIFFICULTY_NORMAL;
-
- return difficulty;
-}
+#include "constants/battle_ai.h"
TEST("CreateNPCTrainerPartyForTrainer generates customized Pokรฉmon")
{
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 0;
+ u32 currTrainer = 3;
u8 nickBuffer[20];
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER);
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(IsMonShiny(&testParty[0]));
EXPECT(!IsMonShiny(&testParty[1]));
@@ -111,9 +92,9 @@ TEST("CreateNPCTrainerPartyForTrainer generates customized Pokรฉmon")
TEST("CreateNPCTrainerPartyForTrainer generates different personalities for different mons")
{
- enum DifficultyLevel difficulty = GetTrainerDifficultyLevelTest(0);
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[difficulty][0], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 3;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(testParty[0].box.personality != testParty[1].box.personality);
Free(testParty);
}
@@ -132,98 +113,119 @@ TEST("ModifyPersonalityForNature can set any nature")
EXPECT_EQ(GetNatureFromPersonality(personality), nature);
}
-static const struct TrainerMon sTestParty2[] =
-{
- {
- .species = SPECIES_WYNAUT,
- .lvl = 5,
- },
- {
- .species = SPECIES_WYNAUT,
- .lvl = 5,
- },
- {
- .species = SPECIES_WYNAUT,
- .lvl = 5,
- },
- {
- .species = SPECIES_WYNAUT,
- .lvl = 5,
- },
- {
- .species = SPECIES_WYNAUT,
- .lvl = 5,
- },
- {
- .species = SPECIES_WYNAUT,
- .lvl = 5,
- },
-};
-
TEST("Trainer Class Balls apply to the entire party")
{
ASSUME(B_TRAINER_CLASS_POKE_BALLS >= GEN_8);
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
u32 j;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[DIFFICULTY_NORMAL][11], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 14;
+ const struct Trainer *trainer = GetTrainerStructFromId(currTrainer);
+ CreateNPCTrainerPartyFromTrainer(testParty, trainer, TRUE, BATTLE_TYPE_TRAINER);
for(j = 0; j < 6; j++)
{
- EXPECT(GetMonData(&testParty[j], MON_DATA_POKEBALL, 0) == gTrainerClasses[sTestTrainers[DIFFICULTY_NORMAL][11].trainerClass].ball);
+ EXPECT(GetMonData(&testParty[j], MON_DATA_POKEBALL, 0) == gTrainerClasses[trainer->trainerClass].ball);
}
Free(testParty);
}
-TEST("Difficulty default to Normal is the trainer doesn't have a member for the current diffuculty")
+TEST("Difficulty default to Normal if the trainer doesn't have a member for the current difficulty")
{
SetCurrentDifficultyLevel(DIFFICULTY_EASY);
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 1;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 4;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_MEWTWO);
Free(testParty);
SetCurrentDifficultyLevel(DIFFICULTY_NORMAL);
}
-TEST("Difficulty changes which party if used for NPCs if defined for the difficulty (EASY)")
+TEST("Difficulty changes which party is used for enemy trainer if defined for the difficulty (EASY)")
{
SetCurrentDifficultyLevel(DIFFICULTY_EASY);
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 2;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 5;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_METAPOD);
EXPECT(GetMonData(&testParty[0], MON_DATA_LEVEL) == 1);
Free(testParty);
SetCurrentDifficultyLevel(DIFFICULTY_NORMAL);
}
-TEST("Difficulty changes which party if used for NPCs if defined for the difficulty (HARD)")
+TEST("Difficulty changes which party is used for enemy trainer if defined for the difficulty (HARD)")
{
SetCurrentDifficultyLevel(DIFFICULTY_HARD);
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 2;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 5;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_ARCEUS);
EXPECT(GetMonData(&testParty[0], MON_DATA_LEVEL) == 99);
Free(testParty);
SetCurrentDifficultyLevel(DIFFICULTY_NORMAL);
}
-TEST("Difficulty changes which party if used for NPCs if defined for the difficulty (NORMAL)")
+TEST("Difficulty changes which party is used for enemy trainer if defined for the difficulty (NORMAL)")
{
SetCurrentDifficultyLevel(DIFFICULTY_NORMAL);
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 2;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 5;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_MEWTWO);
EXPECT(GetMonData(&testParty[0], MON_DATA_LEVEL) == 50);
Free(testParty);
}
+TEST("Difficulty default to Normal if the partner doesn't have a member for the current difficulty")
+{
+ SetCurrentDifficultyLevel(DIFFICULTY_TEST);
+ struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
+ u32 currTrainer = TRAINER_PARTNER(1);
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
+ EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_METANG);
+ EXPECT(GetMonData(&testParty[0], MON_DATA_LEVEL) == 42);
+ Free(testParty);
+ SetCurrentDifficultyLevel(DIFFICULTY_NORMAL);
+}
+
+TEST("Difficulty changes which party is used for partner if defined for the difficulty (EASY)")
+{
+ SetCurrentDifficultyLevel(DIFFICULTY_EASY);
+ struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
+ u32 currTrainer = TRAINER_PARTNER(1);
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
+ EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_METAPOD);
+ EXPECT(GetMonData(&testParty[0], MON_DATA_LEVEL) == 1);
+ Free(testParty);
+ SetCurrentDifficultyLevel(DIFFICULTY_NORMAL);
+}
+
+TEST("Difficulty changes which party is used for partner if defined for the difficulty (HARD)")
+{
+ SetCurrentDifficultyLevel(DIFFICULTY_HARD);
+ struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
+ u32 currTrainer = TRAINER_PARTNER(1);
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
+ EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_ARCEUS);
+ EXPECT(GetMonData(&testParty[0], MON_DATA_LEVEL) == 99);
+ Free(testParty);
+ SetCurrentDifficultyLevel(DIFFICULTY_NORMAL);
+}
+
+TEST("Difficulty changes which party is used for partner if defined for the difficulty (NORMAL)")
+{
+ SetCurrentDifficultyLevel(DIFFICULTY_NORMAL);
+ struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
+ u32 currTrainer = TRAINER_PARTNER(1);
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
+ EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_METANG);
+ EXPECT(GetMonData(&testParty[0], MON_DATA_LEVEL) == 42);
+ Free(testParty);
+}
+
TEST("Trainer Party Pool generates a party from the trainer pool")
{
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 3;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 6;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_EEVEE);
Free(testParty);
}
@@ -231,8 +233,8 @@ TEST("Trainer Party Pool generates a party from the trainer pool")
TEST("Trainer Party Pool picks a random lead and a random ace if tags exist in the pool")
{
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 4;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 7;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_ARON); // Lead
EXPECT(GetMonData(&testParty[1], MON_DATA_SPECIES) == SPECIES_WYNAUT); // Not Lead or Ace
EXPECT(GetMonData(&testParty[2], MON_DATA_SPECIES) == SPECIES_EEVEE); // Ace
@@ -242,8 +244,8 @@ TEST("Trainer Party Pool picks a random lead and a random ace if tags exist in t
TEST("Trainer Party Pool picks according to custom rules")
{
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 5;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE);
+ u32 currTrainer = 8;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE);
EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_TORKOAL); // Lead + Weather Setter
EXPECT(GetMonData(&testParty[1], MON_DATA_SPECIES) == SPECIES_BULBASAUR); // Lead + Weather Abuser
EXPECT(GetMonData(&testParty[2], MON_DATA_SPECIES) == SPECIES_EEVEE); // Anything else
@@ -253,8 +255,8 @@ TEST("Trainer Party Pool picks according to custom rules")
TEST("Trainer Party Pool uses standard party creation if pool is illegal")
{
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 6;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 9;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_WYNAUT);
EXPECT(GetMonData(&testParty[1], MON_DATA_SPECIES) == SPECIES_WOBBUFFET);
Free(testParty);
@@ -263,8 +265,8 @@ TEST("Trainer Party Pool uses standard party creation if pool is illegal")
TEST("Trainer Party Pool can be pruned before picking")
{
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 7;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 10;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_EEVEE);
EXPECT(GetMonData(&testParty[1], MON_DATA_SPECIES) == SPECIES_WYNAUT);
Free(testParty);
@@ -273,8 +275,8 @@ TEST("Trainer Party Pool can be pruned before picking")
TEST("Trainer Party Pool can choose which functions to use for picking mons")
{
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- u32 currTrainer = 8;
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer], TRUE, BATTLE_TYPE_TRAINER);
+ u32 currTrainer = 11;
+ CreateNPCTrainerPartyFromTrainer(testParty, GetTrainerStructFromId(currTrainer), TRUE, BATTLE_TYPE_TRAINER);
EXPECT(GetMonData(&testParty[0], MON_DATA_SPECIES) == SPECIES_WYNAUT);
EXPECT(GetMonData(&testParty[1], MON_DATA_SPECIES) == SPECIES_WOBBUFFET);
Free(testParty);
@@ -283,17 +285,19 @@ TEST("Trainer Party Pool can choose which functions to use for picking mons")
TEST("trainerproc supports both Double Battle: Yes and Battle Type: Doubles")
{
u32 currTrainer;
- PARAMETRIZE { currTrainer = 9; }
- PARAMETRIZE { currTrainer = 10; }
- const struct Trainer trainer = sTestTrainers[GetTrainerDifficultyLevelTest(currTrainer)][currTrainer];
- EXPECT(trainer.battleType == TRAINER_BATTLE_TYPE_DOUBLES);
+ PARAMETRIZE { currTrainer = 12; }
+ PARAMETRIZE { currTrainer = 13; }
+ const struct Trainer *trainer = GetTrainerStructFromId(currTrainer);
+ EXPECT(trainer->battleType == TRAINER_BATTLE_TYPE_DOUBLES);
}
TEST("CreateNPCTrainerPartyForTrainer generates default moves if no moves are specified")
{
- ASSUME(sTestTrainers[GetTrainerDifficultyLevelTest(1)][1].party[0].moves[0] == MOVE_NONE);
+ u32 currTrainer = 1;
+ const struct Trainer *trainer = GetTrainerStructFromId(currTrainer);
+ ASSUME(trainer->party[0].moves[0] == MOVE_NONE);
struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon));
- CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[GetTrainerDifficultyLevelTest(1)][1], TRUE, BATTLE_TYPE_TRAINER);
+ CreateNPCTrainerPartyFromTrainer(testParty, trainer, TRUE, BATTLE_TYPE_TRAINER);
EXPECT(GetMonData(&testParty[0], MON_DATA_MOVE1) != MOVE_NONE);
Free(testParty);
}
diff --git a/test/battle/trainer_control.party b/test/battle/trainer_control.party
index 436bbb5db6..8ca261b855 100644
--- a/test/battle/trainer_control.party
+++ b/test/battle/trainer_control.party
@@ -1,4 +1,37 @@
-=== 0 ===
+=== TRAINER_NONE ===
+Name:
+Class: Pkmn Trainer 1
+Pic: Hiker
+Gender: Male
+Music: Male
+Double Battle: No
+
+=== 1 ===
+Name: RED
+Class: Rival
+Pic: Red
+Gender: Male
+Music: Male
+Double Battle: No
+
+Charmander
+Level: 5
+IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe
+
+=== 2 ===
+Name: LEAF
+Class: Rival
+Pic: Leaf
+Gender: Female
+Music: Male
+Double Battle: No
+
+Bulbasaur
+Level: 5
+IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe
+
+
+=== 3 ===
Name: Test1
Class: Pkmn Trainer 1
Pic: Red
@@ -30,7 +63,7 @@ Wynaut
Level: 5
IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe
-=== 1 ===
+=== 4 ===
Name: Test2
Class: Pkmn Trainer 1
Pic: Red
@@ -42,7 +75,7 @@ Difficulty: Normal
Mewtwo
Level: 5
-=== 2 ===
+=== 5 ===
Name: Test2
Class: Pkmn Trainer 1
Pic: Red
@@ -54,7 +87,7 @@ Difficulty: Normal
Mewtwo
Level: 50
-=== 2 ===
+=== 5 ===
Name: Test2
Class: Pkmn Trainer 1
Pic: Red
@@ -66,7 +99,7 @@ Difficulty: Easy
Metapod
Level: 1
-=== 2 ===
+=== 5 ===
Name: Test2
Class: Pkmn Trainer 1
Pic: Red
@@ -78,7 +111,7 @@ Difficulty: Hard
Arceus
Level: 99
-=== 3 ===
+=== 6 ===
Name: Test3
Class: Pkmn Trainer 1
Pic: Red
@@ -95,7 +128,7 @@ Eevee
Mew
-=== 4 ===
+=== 7 ===
Name: Test4
Class: Pkmn Trainer 1
Pic: Red
@@ -120,7 +153,7 @@ Tags: Ace
Aron
Tags: Lead
-=== 5 ===
+=== 8 ===
Name: Test5
Class: Pkmn Trainer 1
Pic: Red
@@ -158,7 +191,7 @@ Oddish
Eevee
-=== 6 ===
+=== 9 ===
Name: Test6
Class: Pkmn Trainer 1
Pic: Red
@@ -177,7 +210,7 @@ Tags: Lead
Eevee
Tags: Lead
-=== 7 ===
+=== 10 ===
Name: Test1
Class: Pkmn Trainer 1
Pic: Red
@@ -195,7 +228,7 @@ Tags: Lead
Eevee
-=== 8 ===
+=== 11 ===
Name: Test1
Class: Pkmn Trainer 1
Pic: Red
@@ -214,7 +247,7 @@ Wobbuffet
Eevee
Tags: Lead
-=== 9 ===
+=== 12 ===
Name: Test9
Class: Pkmn Trainer 1
Pic: Red
@@ -227,7 +260,7 @@ Wynaut
Wobbuffet
-=== 10 ===
+=== 13 ===
Name: Test10
Class: Pkmn Trainer 1
Pic: Red
@@ -240,7 +273,7 @@ Wynaut
Wobbuffet
-=== 11 ===
+=== 14 ===
Name: Test11
Class: Black Belt
Pic: Red
diff --git a/test/battle/trainer_slides.c b/test/battle/trainer_slides.c
index a3b7b070b5..6db1ec029a 100644
--- a/test/battle/trainer_slides.c
+++ b/test/battle/trainer_slides.c
@@ -692,7 +692,7 @@ AI_MULTI_BATTLE_TEST("Trainer Slide: Multi: Last Switchin")
MULTI_OPPONENT_B(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_CELEBRATE); }
} WHEN {
TURN {
- EXPECT_MOVE(opponentLeft, MOVE_MEMENTO, target: opponentRight); EXPECT_SEND_OUT(opponentLeft,1);
+ EXPECT_MOVE(opponentLeft, MOVE_MEMENTO, target: playerRight); EXPECT_SEND_OUT(opponentLeft,1);
MOVE(playerRight, MOVE_MEMENTO, target: opponentRight); SEND_OUT(playerRight,4);
EXPECT_MOVE(opponentRight, MOVE_MEMENTO, target: playerRight); EXPECT_SEND_OUT(opponentRight,4);
}
diff --git a/test/battle/trainer_slides.h b/test/battle/trainer_slides.h
index eb2b67328a..d7ef6ab1dd 100644
--- a/test/battle/trainer_slides.h
+++ b/test/battle/trainer_slides.h
@@ -1,6 +1,6 @@
[DIFFICULTY_NORMAL] =
{
- [TRAINER_LEAF] =
+ [TRAINER_LEAF_TEST] =
{
[TRAINER_SLIDE_BEFORE_FIRST_TURN] = COMPOUND_STRING("Trainer A: This message plays before the first turn.{PAUSE_UNTIL_PRESS}"),
[TRAINER_SLIDE_PLAYER_LANDS_FIRST_CRITICAL_HIT] = COMPOUND_STRING("Trainer A: This message plays after the player lands their first critical hit.{PAUSE_UNTIL_PRESS}"),
@@ -16,7 +16,7 @@
[TRAINER_SLIDE_Z_MOVE] = COMPOUND_STRING("Trainer A: This message plays before the enemy activates the Z-Move gimmick.{PAUSE_UNTIL_PRESS}"),
[TRAINER_SLIDE_DYNAMAX] = COMPOUND_STRING("Trainer A: This message plays before the enemy activates the Dynamax gimmick.{PAUSE_UNTIL_PRESS}"),
},
- [TRAINER_RED] =
+ [TRAINER_RED_TEST] =
{
[TRAINER_SLIDE_BEFORE_FIRST_TURN] = COMPOUND_STRING("Trainer B: This message plays before the first turn.{PAUSE_UNTIL_PRESS}"),
[TRAINER_SLIDE_PLAYER_LANDS_FIRST_CRITICAL_HIT] = COMPOUND_STRING("Trainer B: This message plays after the player lands their first critical hit.{PAUSE_UNTIL_PRESS}"),
@@ -32,7 +32,7 @@
[TRAINER_SLIDE_Z_MOVE] = COMPOUND_STRING("Trainer B: This message plays before the enemy activates the Z-Move gimmick.{PAUSE_UNTIL_PRESS}"),
[TRAINER_SLIDE_DYNAMAX] = COMPOUND_STRING("Trainer B: This message plays before the enemy activates the Dynamax gimmick.{PAUSE_UNTIL_PRESS}"),
},
- [TRAINER_PARTNER(PARTNER_STEVEN)] =
+ [TRAINER_PARTNER(PARTNER_STEVEN_TEST)] =
{
[TRAINER_SLIDE_BEFORE_FIRST_TURN] = COMPOUND_STRING("Trainer Partner: This message plays before the first turn.{PAUSE_UNTIL_PRESS}"),
[TRAINER_SLIDE_PLAYER_LANDS_FIRST_CRITICAL_HIT] = COMPOUND_STRING("Trainer Partner: This message plays after the player lands their first critical hit.{PAUSE_UNTIL_PRESS}"),
diff --git a/test/pokerus.c b/test/pokerus.c
index 74cc0552fd..d6207e0df1 100644
--- a/test/pokerus.c
+++ b/test/pokerus.c
@@ -3,7 +3,7 @@
#include "event_data.h"
#include "pokemon.h"
#include "pokerus.h"
-#include "generational_changes.h"
+#include "config_changes.h"
#include "random.h"
#include "test/overworld_script.h"
#include "test/test.h"
diff --git a/test/species.c b/test/species.c
index d89b59a23c..d0d98da44e 100644
--- a/test/species.c
+++ b/test/species.c
@@ -13,7 +13,7 @@ TEST("Form species ID tables are shared between all forms")
{
if (IsSpeciesEnabled(i) && GetSpeciesFormTable(i))
{
- PARAMETRIZE_LABEL("%S", GetSpeciesName(i)) { species = i; }
+ PARAMETRIZE_LABEL("ID:%d - %S", i, GetSpeciesName(i)) { species = i; }
}
}
@@ -36,7 +36,7 @@ TEST("Form change tables contain only forms in the form species ID table")
{
if (IsSpeciesEnabled(i) && GetSpeciesFormChanges(i))
{
- PARAMETRIZE_LABEL("%S", GetSpeciesName(i)) { species = i; }
+ PARAMETRIZE_LABEL("ID:%d - %S", i, GetSpeciesName(i)) { species = i; }
}
}
@@ -74,7 +74,7 @@ TEST("Forms have the appropriate species form changes")
|| IsSpeciesUltraBurst(i)
|| IsSpeciesPrimalReversion(i))
{
- PARAMETRIZE_LABEL("%S", GetSpeciesName(i)) { species = i; }
+ PARAMETRIZE_LABEL("ID:%d - %S", i, GetSpeciesName(i)) { species = i; }
}
}
bool32 hasBattleEnd = FALSE, hasFaint = FALSE;
@@ -114,7 +114,7 @@ TEST("Form change targets have the appropriate species flags")
{
if (IsSpeciesEnabled(i) && GetSpeciesFormChanges(i))
{
- PARAMETRIZE_LABEL("%S", GetSpeciesName(i)) { species = i; }
+ PARAMETRIZE_LABEL("ID:%d - %S", i, GetSpeciesName(i)) { species = i; }
}
}
@@ -153,7 +153,8 @@ TEST("No species has two evolutions that use the evolution tracker")
for (i = 0; i < NUM_SPECIES; i++)
{
- if (IsSpeciesEnabled(i) && GetSpeciesEvolutions(i) != NULL) PARAMETRIZE { species = i; }
+ if (IsSpeciesEnabled(i) && GetSpeciesEvolutions(i) != NULL)
+ PARAMETRIZE_LABEL("ID:%d - %S", i, GetSpeciesName(i)) { species = i; }
}
evolutionTrackerEvolutions = 0;
@@ -195,7 +196,7 @@ TEST("Every species has a description")
for (i = 1; i < NUM_SPECIES; i++)
{
if (IsSpeciesEnabled(i))
- PARAMETRIZE { species = i; }
+ PARAMETRIZE_LABEL("ID:%d - %S", i, GetSpeciesName(i)) { species = i; }
}
EXPECT_NE(StringCompare(GetSpeciesPokedexDescription(species), gFallbackPokedexText), 0);
diff --git a/test/test_runner.c b/test/test_runner.c
index fd7c534087..007ee6b21d 100644
--- a/test/test_runner.c
+++ b/test/test_runner.c
@@ -154,18 +154,15 @@ void TestRunner_CheckMemory(void)
const char *location = MemBlockLocation(block);
if (location)
{
- const char *cmpString = "src/generational_changes.c";
- for (u32 charIndex = 0; charIndex < 26; charIndex++)
+ const char cmpString[] = "src/config_changes.c";
+ if (strncmp(cmpString, location, sizeof(cmpString) - 1) != 0)
{
- if (cmpString[charIndex] != location[charIndex])
- {
- Test_MgbaPrintf("%s: %d bytes not freed", location, block->size);
- gTestRunnerState.result = TEST_RESULT_FAIL;
-
- if (gTestRunnerState.expectedFailState == EXPECT_FAIL_OPEN)
- gTestRunnerState.expectedFailState = EXPECT_FAIL_SUCCESS;
- break;
- }
+ Test_MgbaPrintf("%s: %d bytes not freed", location, block->size);
+ gTestRunnerState.result = TEST_RESULT_FAIL;
+
+ if (gTestRunnerState.expectedFailState == EXPECT_FAIL_OPEN)
+ gTestRunnerState.expectedFailState = EXPECT_FAIL_SUCCESS;
+ break;
}
}
else
diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c
index ced7cedbfd..a3df329802 100644
--- a/test/test_runner_battle.c
+++ b/test/test_runner_battle.c
@@ -14,6 +14,7 @@
#include "party_menu.h"
#include "random.h"
#include "test/battle.h"
+#include "trainer_pools.h"
#include "window.h"
#include "constants/characters.h"
#include "constants/trainers.h"
@@ -48,6 +49,20 @@ static inline bool32 RngSeedNotDefault(const rng_value_t *seed)
#undef Q_4_12
#define Q_4_12(n) (s32)((n) * 4096)
+#define TRAINER_RED_TEST 1
+#define TRAINER_LEAF_TEST 2
+#define PARTNER_STEVEN_TEST 1
+
+const struct Trainer gTrainers[DIFFICULTY_COUNT][TRAINERS_COUNT] =
+{
+ #include "battle/trainer_control.h"
+};
+
+const struct Trainer gBattlePartners[DIFFICULTY_COUNT][PARTNER_COUNT] =
+{
+ #include "battle/partner_control.h"
+};
+
// Alias sBackupMapData to avoid using heap.
struct BattleTestRunnerState *const gBattleTestRunnerState = (void *)sBackupMapData;
STATIC_ASSERT(sizeof(struct BattleTestRunnerState) <= sizeof(sBackupMapData), sBackupMapDataSpace);
@@ -365,14 +380,14 @@ static void BattleTest_Run(void *data)
break;
case BATTLE_TEST_AI_SINGLES:
DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER;
- DATA.recordedBattle.opponentA = TRAINER_LEAF;
+ DATA.recordedBattle.opponentA = TRAINER_LEAF_TEST;
DATA.hasAI = TRUE;
for (i = 0; i < STATE->battlersCount; i++)
DATA.currentMonIndexes[i] = i / 2;
break;
case BATTLE_TEST_AI_DOUBLES:
DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE;
- DATA.recordedBattle.opponentA = TRAINER_LEAF;
+ DATA.recordedBattle.opponentA = TRAINER_LEAF_TEST;
DATA.recordedBattle.opponentB = TRAINER_NONE;
DATA.hasAI = TRUE;
for (i = 0; i < STATE->battlersCount; i++)
@@ -380,9 +395,9 @@ static void BattleTest_Run(void *data)
break;
case BATTLE_TEST_AI_MULTI:
DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS;
- DATA.recordedBattle.partnerId = TRAINER_PARTNER(PARTNER_STEVEN);
- DATA.recordedBattle.opponentA = TRAINER_LEAF;
- DATA.recordedBattle.opponentB = TRAINER_RED;
+ DATA.recordedBattle.partnerId = TRAINER_PARTNER(PARTNER_STEVEN_TEST);
+ DATA.recordedBattle.opponentA = TRAINER_LEAF_TEST;
+ DATA.recordedBattle.opponentB = TRAINER_RED_TEST;
DATA.hasAI = TRUE;
DATA.currentMonIndexes[0] = 0; // Player first mon
DATA.currentMonIndexes[1] = 0; // Opponent A first mon
@@ -391,8 +406,8 @@ static void BattleTest_Run(void *data)
break;
case BATTLE_TEST_AI_TWO_VS_ONE:
DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_MULTI;
- DATA.recordedBattle.partnerId = TRAINER_PARTNER(PARTNER_STEVEN);
- DATA.recordedBattle.opponentA = TRAINER_LEAF;
+ DATA.recordedBattle.partnerId = TRAINER_PARTNER(PARTNER_STEVEN_TEST);
+ DATA.recordedBattle.opponentA = TRAINER_LEAF_TEST;
DATA.recordedBattle.opponentB = 0xFFFF;
DATA.currentMonIndexes[0] = 0; // Player first mon
DATA.currentMonIndexes[1] = 0; // Opponent first mon
@@ -402,8 +417,8 @@ static void BattleTest_Run(void *data)
break;
case BATTLE_TEST_AI_ONE_VS_TWO:
DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS;
- DATA.recordedBattle.opponentA = TRAINER_LEAF;
- DATA.recordedBattle.opponentB = TRAINER_RED;
+ DATA.recordedBattle.opponentA = TRAINER_LEAF_TEST;
+ DATA.recordedBattle.opponentB = TRAINER_RED_TEST;
DATA.currentMonIndexes[0] = 0; // Player first mon
DATA.currentMonIndexes[1] = 0; // Opponent A first mon
DATA.currentMonIndexes[2] = 1; // Player second mon
@@ -425,7 +440,7 @@ static void BattleTest_Run(void *data)
break;
case BATTLE_TEST_MULTI:
DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS;
- DATA.recordedBattle.partnerId = TRAINER_PARTNER(PARTNER_STEVEN);
+ DATA.recordedBattle.partnerId = TRAINER_PARTNER(PARTNER_STEVEN_TEST);
DATA.recordedBattle.opponentA = TRAINER_LINK_OPPONENT;
DATA.recordedBattle.opponentB = TRAINER_LINK_OPPONENT;
DATA.currentMonIndexes[0] = 0; // Player first mon
@@ -435,7 +450,7 @@ static void BattleTest_Run(void *data)
break;
case BATTLE_TEST_TWO_VS_ONE:
DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_MULTI;
- DATA.recordedBattle.partnerId = TRAINER_PARTNER(PARTNER_STEVEN);
+ DATA.recordedBattle.partnerId = TRAINER_PARTNER(PARTNER_STEVEN_TEST);
DATA.recordedBattle.opponentA = TRAINER_LINK_OPPONENT;
DATA.recordedBattle.opponentB = 0xFFFF;
DATA.currentMonIndexes[0] = 0; // Player first mon
@@ -2019,7 +2034,7 @@ void ClearVarAfterTest(void)
}
}
-void OpenPokemon(u32 sourceLine, enum BattleTrainer trainer, u32 species)
+void OpenPokemon(u32 sourceLine, enum BattleTrainer trainer, enum Species species)
{
s32 i, data;
u8 *partySize;
@@ -2058,7 +2073,7 @@ void OpenPokemon(u32 sourceLine, enum BattleTrainer trainer, u32 species)
CalculateMonStats(DATA.currentMon);
}
-void OpenPokemonMulti(u32 sourceLine, enum BattleTrainer trainer, u32 species)
+void OpenPokemonMulti(u32 sourceLine, enum BattleTrainer trainer, enum Species species)
{
s32 i, data;
diff --git a/tools/learnset_helpers/make_teachables.py b/tools/learnset_helpers/make_teachables.py
index 92e7f2c0d8..263508570b 100644
--- a/tools/learnset_helpers/make_teachables.py
+++ b/tools/learnset_helpers/make_teachables.py
@@ -24,7 +24,6 @@ For a given species, a move is considered teachable to that species if:
from itertools import chain
from textwrap import dedent
-import glob
import json
import pathlib
import re
@@ -32,9 +31,9 @@ import sys
import typing
-CONFIG_ENABLED_PAT = re.compile(r"#define P_LEARNSET_HELPER_TEACHABLE\s+(?P[^ ]*)")
-ALPHABETICAL_ORDER_ENABLED_PAT = re.compile(r"#define HGSS_SORT_TMS_BY_NUM\s+(?P[^ ]*)")
-TM_LITTERACY_PAT = re.compile(r"#define P_TM_LITERACY\s+GEN_(?P[^ ]*)")
+CONFIG_ENABLED_PAT = re.compile(r"^#define P_LEARNSET_HELPER_TEACHABLE\s+(?P[^ ]*)", flags=re.MULTILINE)
+ALPHABETICAL_ORDER_ENABLED_PAT = re.compile(r"^#define HGSS_SORT_TMS_BY_NUM\s+(?P[^ ]*)", flags=re.MULTILINE)
+TM_LITERACY_PAT = re.compile(r"^#define P_TM_LITERACY\s+GEN_(?P[^ ]*)", flags=re.MULTILINE)
TMHM_MACRO_PAT = re.compile(r"F\((\w+)\)")
SNAKIFY_PAT = re.compile(r"(?!^)([A-Z]+)")
@@ -64,7 +63,7 @@ def extract_tm_litteracy_config() -> bool:
config = False
with open("./include/config/pokemon.h", "r") as cfg_pokemon_fp:
cfg_pokemon = cfg_pokemon_fp.read()
- cfg_defined = TM_LITTERACY_PAT.search(cfg_pokemon)
+ cfg_defined = TM_LITERACY_PAT.search(cfg_pokemon)
if cfg_defined:
cfg_val = cfg_defined.group("cfg_val")
if ((cfg_val == "LATEST") or (int(cfg_val) > 6)):
@@ -178,7 +177,7 @@ def make_move_tutors(build_dir, special_movesets):
with open(SOURCE_TUTORS_JSON, "r") as fp:
repo_tutors = json.load(fp)
- repo_tutors = sorted(repo_tutors + special_movesets["extraTutors"])
+ repo_tutors = sorted(list(set(repo_tutors + special_movesets["extraTutors"])))
create_tutor_moves_array(repo_tutors)
return repo_tutors
@@ -193,14 +192,13 @@ def main():
print(__doc__, file=sys.stderr)
quit(1)
- if len(sys.argv) == 2:
- SOURCE_DIR = pathlib.Path(sys.argv[1])
- elif len(sys.argv) == 3:
+ if len(sys.argv) == 3:
if sys.argv[1] != "--tutors":
print("Unknown make_teachables mode", file=sys.stderr)
quit(1)
tutor_mode = True
- SOURCE_DIR = pathlib.Path(sys.argv[2])
+
+ SOURCE_DIR = pathlib.Path(sys.argv[-1])
with open("src/data/pokemon/special_movesets.json", "r") as file:
special_movesets = json.load(file)
@@ -219,7 +217,6 @@ def main():
assert SOURCE_TEACHING_TYPES_JSON.is_file(), f"{SOURCE_TEACHING_TYPES_JSON=} is not a file"
repo_tms = list(extract_repo_tms())
- order_alphabetically = False
with open("./include/config/pokedex_plus_hgss.h", "r") as cfg_pokemon_fp:
cfg_pokemon = cfg_pokemon_fp.read()
diff --git a/tools/learnset_helpers/make_teaching_types.py b/tools/learnset_helpers/make_teaching_types.py
index 96d4fc281d..85ad14c907 100644
--- a/tools/learnset_helpers/make_teaching_types.py
+++ b/tools/learnset_helpers/make_teaching_types.py
@@ -1,16 +1,24 @@
+#!/usr/bin/env python3
+
+"""
+Usage: python3 make_teaching_types.py OUTPUT_FILE
+
+Build a primary store of "teaching-types" for each enabled species in the repository as an
+input for make_teachables.py.
+"""
+
import glob
import json
import pathlib
import re
import sys
-import typing
-CONFIG_ENABLED_PAT = re.compile(r"#define P_LEARNSET_HELPER_TEACHABLE\s+(?P[^ ]*)")
+CONFIG_ENABLED_PAT = re.compile(r"^#define P_LEARNSET_HELPER_TEACHABLE\s+(?P[^ ]*)", flags=re.MULTILINE)
TEACHING_TYPE_PAT = re.compile(r"\s*\.teachingType\s*=\s*(?P[A-Z_]+),")
LEARNSET_PAT = re.compile(r"\s*\.teachableLearnset\s*=\s*s(?P\w+?)TeachableLearnset")
-PREPROC_START_PAT = re.compile(r"#if(def)?\s+\w+")
-PREPROC_END_PAT = re.compile(r"#endif\s*(//\s*\w+)?")
+PREPROC_START_PAT = re.compile(r"^#if(def)?\s+\w+", flags=re.MULTILINE)
+PREPROC_END_PAT = re.compile(r"^#endif\s*(//\s*\w+)?", flags=re.MULTILINE)
def enabled() -> bool:
"""
@@ -35,7 +43,7 @@ def extract_repo_species_data() -> list:
pokemon_list = []
teaching_type = "DEFAULT_LEARNING"
file_list = sorted(glob.glob("src/data/pokemon/species_info/*_families.h"))
- file_list.append(pathlib.Path("./src/data/pokemon/species_info.h"))
+ file_list.append("./src/data/pokemon/species_info.h")
for families_fname in file_list:
with open(families_fname, "r") as family_fp:
species_lines = family_fp.readlines()
@@ -66,7 +74,7 @@ def extract_repo_species_data() -> list:
teaching_type = match.group("teaching_type")
return species_data
-def add_whitesspaces(parsed_list) ->list:
+def add_whitesspaces(parsed_list) -> list:
for i, item in enumerate(parsed_list):
if i == 0:
continue
diff --git a/tools/learnset_helpers/make_tutors.py b/tools/learnset_helpers/make_tutors.py
index e9167a4e11..d7b14a6980 100644
--- a/tools/learnset_helpers/make_tutors.py
+++ b/tools/learnset_helpers/make_tutors.py
@@ -1,5 +1,12 @@
+#!/usr/bin/env python3
+
+"""
+Usage: python3 make_tutors.py OUTPUT_FILE
+
+Build a primary store of move-tutors in the repository and what moves they teach.
+"""
+
from itertools import chain
-from textwrap import dedent
import glob
import json
@@ -8,7 +15,7 @@ import re
import sys
import typing
-CONFIG_ENABLED_PAT = re.compile(r"#define P_LEARNSET_HELPER_TEACHABLE\s+(?P[^ ]*)")
+CONFIG_ENABLED_PAT = re.compile(r"^#define P_LEARNSET_HELPER_TEACHABLE\s+(?P[^ ]*)", flags=re.MULTILINE)
INCFILE_HAS_TUTOR_PAT = re.compile(r"special ChooseMonForMoveTutor")
INCFILE_HAS_TUTOR_PAT2 = re.compile(r"chooseboxmon SELECT_PC_MON_MOVE_TUTOR")
INCFILE_MOVE_PAT = re.compile(r"setvar VAR_0x8005, (MOVE_[A-Z_]*)")
diff --git a/tools/preproc/asm_file.cpp b/tools/preproc/asm_file.cpp
index 6cfc4cbdb3..6daf0d841a 100644
--- a/tools/preproc/asm_file.cpp
+++ b/tools/preproc/asm_file.cpp
@@ -160,9 +160,9 @@ Directive AsmFile::GetDirective()
return Directive::Unknown;
}
-// Checks if we're at label that ends with '::'.
-// Returns the name if so and an empty string if not.
-std::string AsmFile::GetGlobalLabel()
+// Checks if we're at label and if so, returns its symbol and scope.
+// Returns 'label::none' if not.
+Label AsmFile::GetLabel()
{
long start = m_pos;
long pos = m_pos;
@@ -175,14 +175,57 @@ std::string AsmFile::GetGlobalLabel()
pos++;
}
- if (m_buffer[pos] == ':' && m_buffer[pos + 1] == ':')
+ if (m_buffer[pos] == ':')
{
- m_pos = pos + 2;
- ExpectEmptyRestOfLine();
- return std::string(&m_buffer[start], pos - start);
+ std::string symbol(&m_buffer[start], pos - start);
+ if (m_buffer[pos + 1] == ':')
+ {
+ m_pos = pos + 2;
+ ExpectEmptyRestOfLine();
+ return Label(symbol, Label::global);
+ }
+ else
+ {
+ m_pos = pos + 1;
+ return Label(symbol, Label::local);
+ }
}
- return std::string();
+ return Label("", Label::none);
+}
+
+std::string AsmFile::PeekSection()
+{
+ long oldPos = m_pos;
+ std::string section;
+
+ SkipWhitespace();
+
+ // TODO: Support 'pushsection', 'popsection', '.previous'.
+ if (CheckForDirective(".bss"))
+ {
+ section = ".bss";
+ }
+ else if (CheckForDirective(".data"))
+ {
+ section = ".data";
+ }
+ else if (CheckForDirective(".rodata"))
+ {
+ section = ".rodata";
+ }
+ else if (CheckForDirective(".text"))
+ {
+ section = ".text";
+ }
+ else if (CheckForDirective(".section"))
+ {
+ SkipWhitespace();
+ section = ReadIdentifier();
+ }
+
+ m_pos = oldPos;
+ return section;
}
// Skips tabs and spaces.
diff --git a/tools/preproc/asm_file.h b/tools/preproc/asm_file.h
index 9cab32a97f..0b25c7ad2b 100644
--- a/tools/preproc/asm_file.h
+++ b/tools/preproc/asm_file.h
@@ -35,6 +35,17 @@ enum class Directive
Unknown
};
+struct Label
+{
+ std::string symbol;
+ enum Type { none, global, local } type;
+
+ Label() : symbol(""), type(none) {}
+ Label(const Label&) = default;
+ Label(std::string symbol_, Type type_) : symbol(symbol_), type(type_) {}
+ explicit operator bool() { return !symbol.empty() && type != none; }
+};
+
class AsmFile
{
public:
@@ -43,7 +54,8 @@ public:
AsmFile(const AsmFile&) = delete;
~AsmFile();
Directive GetDirective();
- std::string GetGlobalLabel();
+ Label GetLabel();
+ std::string PeekSection();
std::string ReadPath();
int ReadString(unsigned char* s);
int ReadBraille(unsigned char* s);
diff --git a/tools/preproc/preproc.cpp b/tools/preproc/preproc.cpp
index ac9496d701..57ea7f9d39 100644
--- a/tools/preproc/preproc.cpp
+++ b/tools/preproc/preproc.cpp
@@ -51,9 +51,11 @@ void PrintAsmBytes(unsigned char *s, int length)
}
}
-void PreprocAsmFile(std::string filename, bool isStdin, bool doEnum)
+void PreprocAsmFile(std::string filename, bool isStdin, bool doEnum, bool doSize)
{
std::stack stack;
+ Label prevLabel;
+ bool inScriptData = false;
stack.push(AsmFile(filename, isStdin, doEnum));
std::printf("# 1 \"%s\"\n", filename.c_str());
@@ -62,6 +64,11 @@ void PreprocAsmFile(std::string filename, bool isStdin, bool doEnum)
{
while (stack.top().IsAtEnd())
{
+ const char *ps = prevLabel.symbol.c_str();
+ if (doSize && inScriptData && prevLabel)
+ std::printf(".ifdef %s ; .size %s, . - %s ; .endif\n", ps, ps, ps);
+ prevLabel = Label();
+
stack.pop();
if (stack.empty())
@@ -100,15 +107,28 @@ void PreprocAsmFile(std::string filename, bool isStdin, bool doEnum)
}
case Directive::Unknown:
{
- std::string globalLabel = stack.top().GetGlobalLabel();
+ Label label = stack.top().GetLabel();
- if (globalLabel.length() != 0)
+ if (label)
{
- const char *s = globalLabel.c_str();
- std::printf("%s: ; .global %s\n", s, s);
+ const char *s = label.symbol.c_str();
+ const char *ps = prevLabel.symbol.c_str();
+
+ if (doSize && inScriptData && prevLabel)
+ std::printf(".ifdef %s ; .size %s, . - %s ; .endif ; ", ps, ps, ps);
+
+ if (label.type == Label::global)
+ std::printf(".global %s\n%s:\n", s, s);
+
+ prevLabel = label;
}
else
{
+ std::string section = stack.top().PeekSection();
+ if (section == "script_data")
+ inScriptData = true;
+ else if (section != "")
+ inScriptData = false;
stack.top().OutputLine();
}
@@ -147,7 +167,7 @@ const char* GetFileExtension(const char* filename)
static void UsageAndExit(const char *program)
{
- std::fprintf(stderr, "Usage: %s [-i] [-e] SRC_FILE CHARMAP_FILE\nwhere -i denotes if input is from stdin\n -e enables enum handling\n", program);
+ std::fprintf(stderr, "Usage: %s [-i] [-e] [-s] SRC_FILE CHARMAP_FILE\nwhere -i denotes if input is from stdin\n -e enables enum handling\n -s enables '.size' handling\n", program);
std::exit(EXIT_FAILURE);
}
@@ -158,9 +178,10 @@ int main(int argc, char **argv)
const char *charmap = NULL;
bool isStdin = false;
bool doEnum = false;
+ bool doSize = false;
- /* preproc [-i] [-e] SRC_FILE CHARMAP_FILE */
- while ((opt = getopt(argc, argv, "ie")) != -1)
+ /* preproc [-i] [-e] [-s] SRC_FILE CHARMAP_FILE */
+ while ((opt = getopt(argc, argv, "ies")) != -1)
{
switch (opt)
{
@@ -170,6 +191,9 @@ int main(int argc, char **argv)
case 'e':
doEnum = true;
break;
+ case 's':
+ doSize = true;
+ break;
default:
UsageAndExit(argv[0]);
break;
@@ -196,7 +220,7 @@ int main(int argc, char **argv)
if ((extension[0] == 's') && extension[1] == 0)
{
- PreprocAsmFile(source, isStdin, doEnum);
+ PreprocAsmFile(source, isStdin, doEnum, doSize);
}
else if ((extension[0] == 'c' || extension[0] == 'i') && extension[1] == 0)
{
diff --git a/trainer_rules.mk b/trainer_rules.mk
index fdda9ba9b7..06ab77ba0d 100644
--- a/trainer_rules.mk
+++ b/trainer_rules.mk
@@ -5,7 +5,8 @@ AUTO_GEN_TARGETS += src/data/trainers.h
AUTO_GEN_TARGETS += src/data/trainers_frlg.h
AUTO_GEN_TARGETS += src/data/battle_partners.h
AUTO_GEN_TARGETS += test/battle/trainer_control.h
+AUTO_GEN_TARGETS += test/battle/partner_control.h
AUTO_GEN_TARGETS += src/data/debug_trainers.h
-%.h: %.party
+%.h: %.party $(TRAINERPROC)
$(CPP) $(CPPFLAGS) -traditional-cpp - < $< | $(TRAINERPROC) -o $@ -i $< -