diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 283e6f8fb..dd145771e 100755 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,68 +1,25 @@ -name: CI +name: Build ROM on: push: - branches: [ master ] + branches: [ followers ] pull_request: jobs: - build: + build_rom: + name: Build ROM runs-on: ubuntu-latest - env: - GAME_VERSION: EMERALD - GAME_REVISION: 0 - GAME_LANGUAGE: ENGLISH - MODERN: 0 - COMPARE: 1 steps: - - name: Checkout - uses: actions/checkout@master - - - name: Checkout syms - if: ${{ github.event_name == 'push' }} - uses: actions/checkout@master - with: - path: symbols - ref: symbols - - - name: Checkout agbcc - uses: actions/checkout@master - with: - path: agbcc - repository: pret/agbcc - - - name: Install binutils - run: sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi - # build-essential, git, and libpng-dev are already installed - # gcc-arm-none-eabi is only needed for the modern build - # as an alternative to dkP - - - name: Install agbcc + - uses: actions/checkout@v2 + - name: Install dependencies + run: sudo apt-get install binutils-arm-none-eabi gcc-arm-none-eabi + - name: Build & install agbcc run: | + cd .. + git clone --depth 1 https://github.com/pret/agbcc + cd agbcc ./build.sh - ./install.sh ../ - working-directory: agbcc - - - name: Compare - run: make -j${nproc} all syms - - - name: Modern - env: - MODERN: 1 - COMPARE: 0 - run: make -j${nproc} all - - - name: Move symfiles - if: ${{ github.event_name == 'push' }} + ./install.sh ../pokeemerald + - name: Build ROM run: | - cp -v *.sym symbols/ - echo "SYMBOLS_COMMIT_MSG=$( git log --format=%s ${GITHUB_SHA} )" >> $GITHUB_ENV - - - name: Update symfiles - if: ${{ github.event_name == 'push' }} - uses: EndBug/add-and-commit@v7 - with: - branch: symbols - cwd: "./symbols" - add: "*.sym" - message: ${{ env.SYMBOLS_COMMIT_MSG }} + make diff --git a/.gitignore b/.gitignore index 082430d79..b10f4ccc3 100755 --- a/.gitignore +++ b/.gitignore @@ -35,7 +35,13 @@ prefabs.json .vscode/ *.a .fuse_hidden* +.ccls-cache/* +.ropeproject/ +/overworld/ +/icons/ *.sna *.diff *.sym *.js +agbcc/ +/*.zip diff --git a/Makefile b/Makefile index 50a7e0d25..16dfe9d29 100755 --- a/Makefile +++ b/Makefile @@ -305,6 +305,11 @@ ifeq ($(DINFO),1) override CFLAGS += -g endif +ifeq ($(DDEBUG),1) +override ASFLAGS += --defsym DEBUG=1 +override CPPFLAGS += -D DEBUG=1 +endif + # The dep rules have to be explicit or else missing files won't be reported. # As a side effect, they're evaluated immediately instead of when the rule is invoked. # It doesn't look like $(shell) can be deferred so there might not be a better way. @@ -424,7 +429,7 @@ $(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) libagbsyscall $(ROM): $(ELF) $(OBJCOPY) -O binary $< $@ - $(FIX) $@ -p --silent + $(FIX) $@ --silent modern: all diff --git a/README.md b/README.md index c88be4efa..378740138 100755 --- a/README.md +++ b/README.md @@ -4,8 +4,35 @@ This is a decompilation of Pokémon Emerald, edited to be Pokémon Modern Emeral You can get more information about Modern Emerald at [Pokecommunity](https://www.pokecommunity.com/showthread.php?t=494005) -It builds the following ROM: +This fork tries to maintain vanilla compatibility whenever possible. It doesn't increase the size of any save data structure or the object event structure. -* [**pokeemerald.gba**](https://datomatic.no-intro.org/index.php?page=show_record&s=23&n=1961) `sha1: f3ae088181bf583e55daf962a92bb46f4f1d07b7` +There are several branches, each with one main feature (and sometimes some extra stuff): + +**followers** branch: +* [HGSS-style pokémon followers](https://bulbapedia.bulbagarden.net/wiki/Walking_Pok%C3%A9mon#Pok.C3.A9mon_HeartGold_and_SoulSilver) for all 386 pokémon, including emotes, the 28 Unown forms and a majority of follower messages. +* Dynamic overworld palettes & reflections compatible with vanilla berry trees. +* PID (but not legitimacy) preserving Pokémon nature-changing function +* Function to detect modern emulators/GBA hardware. + +**icons** branch: +* Everything from the **followers** branch. +* All pokemon icons updated to Gen 6, based on [this repo](https://github.com/msikma/pokesprite/tree/master/icons/pokemon/regular) +* This includes compatibility with the PC, trade, contests, mail, Battle Dome. Examples: +![PC](https://i.imgur.com/wzwJfd1.png) +![Party](https://i.imgur.com/8hbE88t.png) +![Contest](https://i.imgur.com/S9mCEFL.png) +* Icons share palettes with front sprites, meaning that shiny pokemon will also have shiny icons! + +**lighting** branch: +* Everything from the **followers** branch. +* Day/night shading compatible with weather. +* GSC-style window lights. +* WIP interframe-blended lamp lights at night, i.e in Rustboro. +* HGSS-style alpha-blended shadows for object events. + +Additional branches to mention: + +* `followers-expanded-id` - like `followers`, but includes backwards-compatible 16-bit graphics IDs for object events. +* `lighting-expanded-id` - like the above but for `lighting`. To set up the repository, see [INSTALL.md](INSTALL.md). diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 4e3b02dce..60ffceba7 100755 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1676,9 +1676,11 @@ @ Equivalent to fadescreen but copies gPlttBufferUnfaded to gPaletteDecompressionBuffer on the fade out @ and the reverse on the fade in, in effect saving gPlttBufferUnfaded to restore it. - .macro fadescreenswapbuffers mode:req + @ If nowait set, does not wait for the fade to complete + .macro fadescreenswapbuffers mode:req, nowait=0 .byte 0xdc .byte \mode + .byte \nowait .endm @ Buffers the specified trainer's class name to the given string var. @@ -1752,6 +1754,12 @@ .macro deleteparty .byte 0xe6 .endm + + @ Like callnative, but function expects a ctx + .macro callfunc func:req + .byte 0xe7 + .4byte \func + .endm @ Supplementary diff --git a/asm/macros/map.inc b/asm/macros/map.inc index 662257e41..9678311a4 100755 --- a/asm/macros/map.inc +++ b/asm/macros/map.inc @@ -21,10 +21,9 @@ @ Defines an object event template for map data. Mirrors the struct layout of ObjectEventTemplate in include/global.fieldmap.h .macro object_event index:req, gfx:req, inConnection:req, x:req, y:req, elevation:req, movement_type:req, x_radius:req, y_radius:req, trainer_type:req, sight_radius_tree_etc:req, script:req, event_flag:req - .byte \index - .byte \gfx + .byte \index + .2byte \gfx .byte \inConnection - .space 1 @ Padding .2byte \x, \y .byte \elevation .byte \movement_type diff --git a/asm/macros/movement.inc b/asm/macros/movement.inc index a43dc07ac..793294004 100755 --- a/asm/macros/movement.inc +++ b/asm/macros/movement.inc @@ -162,5 +162,7 @@ create_movement_action figure_8, MOVEMENT_ACTION_FIGURE_8 create_movement_action fly_up, MOVEMENT_ACTION_FLY_UP create_movement_action fly_down, MOVEMENT_ACTION_FLY_DOWN + create_movement_action exit_pokeball, MOVEMENT_ACTION_EXIT_POKEBALL + create_movement_action enter_pokeball, MOVEMENT_ACTION_ENTER_POKEBALL create_movement_action step_end, MOVEMENT_ACTION_STEP_END diff --git a/common_syms/overworld.txt b/common_syms/overworld.txt index dcada0bbe..18df2d4eb 100755 --- a/common_syms/overworld.txt +++ b/common_syms/overworld.txt @@ -6,3 +6,6 @@ gFieldCallback gFieldCallback2 gLocalLinkPlayerId gFieldLinkPlayerCount +gTimeOfDay +currentTimeBlend +gTimeUpdateCounter diff --git a/compile_flags.txt b/compile_flags.txt new file mode 100755 index 000000000..c1aa53cc1 --- /dev/null +++ b/compile_flags.txt @@ -0,0 +1,7 @@ +-Wimplicit -Wparentheses -Werror -O2 +-lgcc +-lc +-Iinclude +-Igflib +-undef +-Itools/agbcc/include diff --git a/data/event_scripts.s b/data/event_scripts.s index b53d2c8b3..e1565a0e1 100755 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -717,11 +717,14 @@ Common_EventScript_PlayGymBadgeFanfare:: return Common_EventScript_OutOfCenterPartyHeal:: - fadescreen FADE_TO_BLACK + fadescreenswapbuffers FADE_TO_BLACK playfanfare MUS_HEAL waitfanfare special HealPlayerParty - fadescreen FADE_FROM_BLACK + @ start fade then immediately load following pokemon, and wait for fade + fadescreenswapbuffers FADE_FROM_BLACK, 1 + callnative UpdateFollowingPokemon + callfunc ScrFunc_WaitPaletteNotActive return EventScript_RegionMap:: @@ -1054,6 +1057,7 @@ Common_EventScript_LegendaryFlewAway:: .include "data/scripts/move_tutors.inc" .include "data/scripts/trainer_hill.inc" .include "data/scripts/test_signpost.inc" + .include "data/scripts/follower.inc" .include "data/text/frontier_brain.inc" .include "data/text/save.inc" .include "data/text/birch_speech.inc" diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index 49fcf798b..117ae710c 100755 --- a/data/field_effect_scripts.s +++ b/data/field_effect_scripts.s @@ -72,6 +72,9 @@ gFieldEffectScriptPointers:: .4byte gFieldEffectScript_RayquazaSpotlight @ FLDEFF_RAYQUAZA_SPOTLIGHT .4byte gFieldEffectScript_DestroyDeoxysRock @ FLDEFF_DESTROY_DEOXYS_ROCK .4byte gFieldEffectScript_MoveDeoxysRock @ FLDEFF_MOVE_DEOXYS_ROCK + .4byte gFieldEffectScript_TracksSlither @ FLDEFF_TRACKS_SLITHER + .4byte gFieldEffectScript_TracksBug @ FLDEFF_TRACKS_BUG + .4byte gFieldEffectScript_TracksSpot @ FLDEFF_TRACKS_SPOT gFieldEffectScript_ExclamationMarkIcon1:: field_eff_callnative FldEff_ExclamationMarkIcon @@ -129,6 +132,14 @@ gFieldEffectScript_SandFootprints:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_SandFootprints field_eff_end +gFieldEffectScript_TracksBug:: + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksBug + field_eff_end + +gFieldEffectScript_TracksSpot:: + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSpot + field_eff_end + gFieldEffectScript_JumpBigSplash:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_JumpBigSplash field_eff_end @@ -218,6 +229,10 @@ gFieldEffectScript_BikeTireTracks:: field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_BikeTireTracks field_eff_end +gFieldEffectScript_TracksSlither:: + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSlither + field_eff_end + gFieldEffectScript_SandDisguisePlaceholder:: field_eff_callnative ShowSandDisguiseFieldEffect field_eff_end diff --git a/data/layouts/BattleFrontier_BattleDomeBattleRoom/map.bin b/data/layouts/BattleFrontier_BattleDomeBattleRoom/map.bin index ffb450f3c..e0f2dc82f 100755 --- a/data/layouts/BattleFrontier_BattleDomeBattleRoom/map.bin +++ b/data/layouts/BattleFrontier_BattleDomeBattleRoom/map.bin @@ -1,2 +1,2 @@ -               !"#$%&      ()*+,-.      0123456        -   89:;<=>>    \ No newline at end of file +22222222222222222RRRRRRRRRRRRRRRRR22222222222222222 3 322222223333333 3 3 3 3 3 32BBBCCC3 3 3 3 3 3 32BBBBBB C!C"C#C$C%C&3 3 3 3 3 3 32BBB(C)C*C+,-.3 3 3 3 3 3 3333301233435363 3 3 3 3 3 3 3 +3 3 3 3338393:3;3<3=3>3>3 3 3 3 \ No newline at end of file diff --git a/data/layouts/LavaridgeTown/map.bin b/data/layouts/LavaridgeTown/map.bin index 604ad5f3f..a001f8cd3 100755 --- a/data/layouts/LavaridgeTown/map.bin +++ b/data/layouts/LavaridgeTown/map.bin @@ -1,3 +1,3 @@ -qqqq{ttttt|qqqqqqq66{tttzq22222xttttttttr{2t2|qqqNKLOq6rr2222JHIMyy0123rr2332PQRS2289:;44rr2222XYZ[55`ABC44rr`abc550 1"1044rr2222220 1"10000 1"1000rr2222220 1"1000 1"1000rrBB00 1!11111!1!1111rr22200(1)1)1)1)1)1)1)1)1)1)1rr111111000000000000rr0000 0 0 +qqqq{ttttt|qqqqqqq66{tttzq22222xttttttttr{2t2|qqqNKLOq6rr2222JHIMyy0123rr2222PQRS2289:;44rr2222XYZ[55`ABC44rr`abc550 1"1044rr2222220 1"10000 1"1000rr2222220 1"1000 1"1000rrBB00 1!11111!1!1111rr22200(1)1)1)1)1)1)1)1)1)1)1rr111111000000000000rr0000 0 0 00 0 0 00rr0000rr000  4rr11000 !" !"4rr000000000000400004m00000000000000044qqrm0000000000000044qqllllllllllllllll \ No newline at end of file diff --git a/data/layouts/LittlerootTown/map.bin b/data/layouts/LittlerootTown/map.bin index 9af76f90e..04ac73da2 100755 --- a/data/layouts/LittlerootTown/map.bin +++ b/data/layouts/LittlerootTown/map.bin @@ -1,3 +1,3 @@ 5000000000000000000000000000000000000002 2 2 2 20000002 2 2 2 -2000000000000000000000000"20@!000000 @12#0000*:8H)400004(H9:+000000020000000020000000000000000000000000000000000000000000000 2B2C2 2 2 220000000000000JK0000000000000000000000000,A-0000000011000&4I5'00000000110000200000000110000000000000011111111111111 \ No newline at end of file +2000000000000000000000000"20@!000000 @12#0000*:8H)400004(H9:+000000020000000020000000000000000000000000000000000000000000000 2B2C2 2 2 220000000000000JK0000000000000000000000000//,A-0000000011000&774I5'00000000110000200000000110000000000000011111111111111 \ No newline at end of file diff --git a/data/layouts/Mart/map.bin b/data/layouts/Mart/map.bin index a374228c0..801f3ee06 100755 --- a/data/layouts/Mart/map.bin +++ b/data/layouts/Mart/map.bin @@ -1,3 +1,3 @@ "#$#$D*()() 222 2220212!212%2 -22:2222222-92:222+,22+ AB22234223 +22:2222222-892:222+,22+@AB22234223 222222;<22;222222222 \ No newline at end of file diff --git a/data/layouts/PetalburgCity/map.bin b/data/layouts/PetalburgCity/map.bin index 35f0172ca..05b019c4d 100755 --- a/data/layouts/PetalburgCity/map.bin +++ b/data/layouts/PetalburgCity/map.bin @@ -1,4 +1,4 @@ UNMNMNVD    -F000LL55T  L??0 !"LLL001100LLL00 1"100LLL00 1"10<2fL111L5500 1"1deT0011101T00000P2Q2XY0000 1"1000000 1!1"110000000123550000 1"1000000 1!1"1000000089:;001111!1!1111111!1!1"10000000`ABC11(1)1)1)1)1R2S2)1)1)1)1)1)1!1"100H0I0J0K000110000000 1"100PQRS00 1"10000000 1"100XYZ[00 1"1050 0 0 -000 1"10`abc00 1"100000 1!111111111!1!1100 00 1!1)1)1)1)1)1)1)1)1)1)1*10055 !"00 1"1000000000111100020000 1"10<2=2=2=2=2=2=2>200000000 1"10D   -EEF00000000 1"10LL110 1"10T L0 1"100 !"00L0 1!111111000L0(1)1)1)1)1)1*1000T11111111111100001111 \ No newline at end of file +F000LL55TwwL??0 _!_"LLL001100LLL00 1"100LLL00 1"10<2fL111L5500 1"1deT0011101T00000P2Q2XY0000 1"1000000 1!1"110000000123550000 1"1000000 1!1"1000000089:;001111!1!1111111!1!1"10000000`ABC11(1)1)1)1)1R2S2)1)1)1)1)1)1!1"100H0I0J0K000110000000 1"100PQRS00 1"10000000 1"100XYZ[00 1"1050 0 0 +000 1"10`abc00 1"100000 1!111111111!1!1100w00 1!1)1)1)1)1)1)1)1)1)1)1*10055 !_"00 1"1000000000111100020000 1"10<2=2=2=2=2=2=2>200000000 1"10D   +EEF00000000 1"10LL110 1"10TwL0 1"100 !_"00L0 1!111111000L0(1)1)1)1)1)1*1000T11111111111100001111 \ No newline at end of file diff --git a/data/layouts/RustboroCity/map.bin b/data/layouts/RustboroCity/map.bin index 06736e47e..4c6f089fc 100755 Binary files a/data/layouts/RustboroCity/map.bin and b/data/layouts/RustboroCity/map.bin differ diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json index a17a467d8..351b374e0 100755 --- a/data/layouts/layouts.json +++ b/data/layouts/layouts.json @@ -2417,7 +2417,7 @@ "width": 58, "height": 26, "primary_tileset": "gTileset_General", - "secondary_tileset": "0", + "secondary_tileset": "gTileset_Petalburg", "border_filepath": "data/layouts/UnusedOutdoorArea/border.bin", "blockdata_filepath": "data/layouts/UnusedOutdoorArea/map.bin" }, diff --git a/data/map_events.s b/data/map_events.s index cfa5799d3..729f9725d 100755 --- a/data/map_events.s +++ b/data/map_events.s @@ -12,10 +12,10 @@ #include "constants/trainer_hill.h" #include "constants/trainer_types.h" #include "constants/berry.h" +#include "constants/species.h" .include "asm/macros.inc" .include "constants/constants.inc" .section .rodata .include "data/maps/events.inc" - diff --git a/data/maps/AlteringCave/map.json b/data/maps/AlteringCave/map.json index 7da04ab58..48aa3b516 100755 --- a/data/maps/AlteringCave/map.json +++ b/data/maps/AlteringCave/map.json @@ -67,7 +67,7 @@ "flag": "FLAG_CAVE_MOONSTONE" }, { - "graphics_id": "OBJ_EVENT_GFX_ANABEL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_MEWTWO", "x": 7, "y": 2, "elevation": 0, diff --git a/data/maps/AncientTomb/map.json b/data/maps/AncientTomb/map.json index adaa43b94..a813472b6 100755 --- a/data/maps/AncientTomb/map.json +++ b/data/maps/AncientTomb/map.json @@ -15,7 +15,7 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_REGISTEEL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_REGISTEEL", "x": 8, "y": 3, "elevation": 3, diff --git a/data/maps/AncientTomb/scripts.inc b/data/maps/AncientTomb/scripts.inc index dd2235955..ca9464f7e 100755 --- a/data/maps/AncientTomb/scripts.inc +++ b/data/maps/AncientTomb/scripts.inc @@ -55,6 +55,7 @@ AncientTomb_EventScript_CaveEntranceSide:: end AncientTomb_EventScript_Registeel:: + bufferspeciesname 0, SPECIES_REGISTEEL lock faceplayer waitse @@ -83,4 +84,3 @@ AncientTomb_EventScript_RanFromRegisteel:: setvar VAR_0x8004, SPECIES_REGISTEEL goto Common_EventScript_LegendaryFlewAway end - diff --git a/data/maps/AquaHideout_UnusedRubyMap1/map.json b/data/maps/AquaHideout_UnusedRubyMap1/map.json index a7d5061a7..c9efd9b96 100755 --- a/data/maps/AquaHideout_UnusedRubyMap1/map.json +++ b/data/maps/AquaHideout_UnusedRubyMap1/map.json @@ -15,11 +15,11 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_REGISTEEL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_REGIDRAGO", "x": 8, "y": 3, "elevation": 0, - "movement_type": "MOVEMENT_TYPE_NONE", + "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", diff --git a/data/maps/AquaHideout_UnusedRubyMap2/map.json b/data/maps/AquaHideout_UnusedRubyMap2/map.json index f17dae8b8..49d499044 100755 --- a/data/maps/AquaHideout_UnusedRubyMap2/map.json +++ b/data/maps/AquaHideout_UnusedRubyMap2/map.json @@ -15,11 +15,11 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_REGIROCK", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_REGIELEKI", "x": 8, "y": 3, "elevation": 0, - "movement_type": "MOVEMENT_TYPE_NONE", + "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", diff --git a/data/maps/BattleFrontier_BattleArenaBattleRoom/map.json b/data/maps/BattleFrontier_BattleArenaBattleRoom/map.json index b7b4e168a..8f536a592 100755 --- a/data/maps/BattleFrontier_BattleArenaBattleRoom/map.json +++ b/data/maps/BattleFrontier_BattleArenaBattleRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BLACK_BELT", @@ -132,7 +132,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattleArenaCorridor/map.json b/data/maps/BattleFrontier_BattleArenaCorridor/map.json index dbf609325..25e0968b0 100755 --- a/data/maps/BattleFrontier_BattleArenaCorridor/map.json +++ b/data/maps/BattleFrontier_BattleArenaCorridor/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BLACK_BELT", @@ -28,7 +28,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattleArenaLobby/map.json b/data/maps/BattleFrontier_BattleArenaLobby/map.json index 210da8118..20b4e594d 100755 --- a/data/maps/BattleFrontier_BattleArenaLobby/map.json +++ b/data/maps/BattleFrontier_BattleArenaLobby/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BLACK_BELT", @@ -89,7 +89,9 @@ "dest_warp_id": "1" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc index 9467f3419..1a9b8756c 100755 --- a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc @@ -75,6 +75,7 @@ BattleFrontier_BattleArenaLobby_EventScript_SaveAfterChallenge:: frontier_checkairshow special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon arena_save 0 playse SE_SAVE waitse @@ -133,6 +134,7 @@ BattleFrontier_BattleArenaLobby_EventScript_TryEnterChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleArenaLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -194,6 +196,7 @@ BattleFrontier_BattleArenaLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattleArenaLobby_EventScript_LoadPartyAndCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattleArenaLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattleArenaLobby_Text_AwaitAnotherChallenge, MSGBOX_DEFAULT BattleFrontier_BattleArenaLobby_EventScript_EndCancelChallenge:: diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/map.json b/data/maps/BattleFrontier_BattleDomeBattleRoom/map.json index c2b427cbe..f4c52ce05 100755 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/map.json +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_REPORTER_M", @@ -210,7 +210,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index def903b1d..cdd08fc77 100755 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -17,6 +17,7 @@ BattleFrontier_BattleDomeBattleRoom_MapScripts:: .byte 0 BattleFrontier_BattleDomeBattleRoom_OnTransition: + setflag FLAG_TEMP_HIDE_FOLLOWER dome_setopponentgfx frontier_get FRONTIER_DATA_BATTLE_NUM copyvar VAR_TEMP_F, VAR_RESULT @@ -475,6 +476,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_SetUpObjects:: call BattleFrontier_EventScript_SetBrainObjectGfx setobjectxyperm LOCALID_OPPONENT, 13, 9 removeobject LOCALID_OPPONENT + delay 1 addobject LOCALID_OPPONENT applymovement LOCALID_OPPONENT, BattleFrontier_BattleDomeBattleRoom_Movement_SetInvisibleFacingUp BattleFrontier_BattleDomeBattleRoom_EventScript_EndSetUpObjects:: diff --git a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc index b972a0814..46f92ab1c 100755 --- a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc @@ -68,6 +68,7 @@ BattleFrontier_BattleDomeLobby_EventScript_GiveBattlePoints:: dome_set DOME_DATA_WIN_STREAK_ACTIVE, TRUE special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon goto BattleFrontier_BattleDomeLobby_EventScript_AskRecordBattle BattleFrontier_BattleDomeLobby_EventScript_LostChallenge:: @@ -82,6 +83,7 @@ BattleFrontier_BattleDomeLobby_EventScript_LostChallenge:: dome_set DOME_DATA_ATTEMPTED_CHALLENGE, TRUE special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattleDomeLobby_EventScript_AskRecordBattle:: dome_save 0 playse SE_SAVE @@ -160,6 +162,7 @@ BattleFrontier_BattleDomeLobby_EventScript_TryEnterChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleDomeLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -222,6 +225,7 @@ BattleFrontier_BattleDomeLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattleDomeLobby_EventScript_LoadPartyCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattleDomeLobby_Text_HopeToSeeYouAgain, MSGBOX_DEFAULT BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge:: diff --git a/data/maps/BattleFrontier_BattleDomePreBattleRoom/map.json b/data/maps/BattleFrontier_BattleDomePreBattleRoom/map.json index a175248ab..2b2f108a9 100755 --- a/data/maps/BattleFrontier_BattleDomePreBattleRoom/map.json +++ b/data/maps/BattleFrontier_BattleDomePreBattleRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -44,6 +44,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattleFactoryBattleRoom/map.json b/data/maps/BattleFrontier_BattleFactoryBattleRoom/map.json index ef68f89ec..fbe787f8a 100755 --- a/data/maps/BattleFrontier_BattleFactoryBattleRoom/map.json +++ b/data/maps/BattleFrontier_BattleFactoryBattleRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1", @@ -119,7 +119,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattleFactoryLobby/map.json b/data/maps/BattleFrontier_BattleFactoryLobby/map.json index 15d395fd8..7bd9d55cc 100755 --- a/data/maps/BattleFrontier_BattleFactoryLobby/map.json +++ b/data/maps/BattleFrontier_BattleFactoryLobby/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1", @@ -109,7 +109,9 @@ "dest_warp_id": "2" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc index 682b2c91d..8e598c7d2 100755 --- a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc @@ -59,6 +59,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_GiveBattlePoints:: waitmessage frontier_checkairshow special LoadPlayerParty + callnative UpdateFollowingPokemon factory_save 0 playse SE_SAVE waitse @@ -71,6 +72,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_LostChallenge:: waitmessage frontier_checkairshow special LoadPlayerParty + callnative UpdateFollowingPokemon factory_set FACTORY_DATA_WIN_STREAK_ACTIVE, FALSE factory_save 0 playse SE_SAVE @@ -196,6 +198,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattleFactoryLobby_EventScript_LoadPartyAndCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattleFactoryLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattleFactoryLobby_Text_LookForwardToNextVisit, MSGBOX_DEFAULT release diff --git a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/map.json b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/map.json index cf4ea2a6b..e41ab3f5a 100755 --- a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/map.json +++ b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1", @@ -28,7 +28,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattlePalaceBattleRoom/map.json b/data/maps/BattleFrontier_BattlePalaceBattleRoom/map.json index a0d00b5c0..8ab50d81a 100755 --- a/data/maps/BattleFrontier_BattlePalaceBattleRoom/map.json +++ b/data/maps/BattleFrontier_BattlePalaceBattleRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_VAR_1", @@ -67,7 +67,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_AZURILL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_AZURILL", "x": 13, "y": 1, "elevation": 3, @@ -96,6 +96,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattlePalaceCorridor/map.json b/data/maps/BattleFrontier_BattlePalaceCorridor/map.json index e96f6d9e8..96ae72401 100755 --- a/data/maps/BattleFrontier_BattlePalaceCorridor/map.json +++ b/data/maps/BattleFrontier_BattlePalaceCorridor/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_M", @@ -28,7 +28,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_AZURILL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_AZURILL", "x": 3, "y": 5, "elevation": 0, @@ -41,7 +41,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_KIRLIA", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_KIRLIA", "x": 12, "y": 6, "elevation": 0, @@ -54,7 +54,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_PIKACHU", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_PICHU", "x": 15, "y": 5, "elevation": 0, @@ -80,7 +80,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_AZUMARILL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_AZUMARILL", "x": 13, "y": 9, "elevation": 0, @@ -93,7 +93,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_MACHOP", "x": 3, "y": 10, "elevation": 0, @@ -136,6 +136,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattlePalaceLobby/map.json b/data/maps/BattleFrontier_BattlePalaceLobby/map.json index 7c8ee0cd1..321da42f8 100755 --- a/data/maps/BattleFrontier_BattlePalaceLobby/map.json +++ b/data/maps/BattleFrontier_BattlePalaceLobby/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_M", @@ -116,7 +116,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc index 2a8903fe6..66d0e6662 100755 --- a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc @@ -76,6 +76,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_SaveAfterChallenge:: frontier_checkairshow special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon palace_save 0 playse SE_SAVE waitse @@ -151,6 +152,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_TryEnterChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattlePalaceLobby_Text_NowSelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -215,6 +217,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattlePalaceLobby_EventScript_LoadPartyAndCancelChallenge:: special LoadPlayerParty + callnative LoadPlayerParty BattleFrontier_BattlePalaceLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattlePalaceLobby_Text_ReturnWhenFortified, MSGBOX_DEFAULT BattleFrontier_BattlePalaceLobby_EventScript_EndCancelChallenge:: @@ -647,4 +650,3 @@ BattleFrontier_BattlePalaceLobby_Text_ExplainRulesWhenInDanger: .string "nature when it is in trouble.\p" .string "If a POKéMON begins behaving oddly\n" .string "in a pinch, watch it carefully.$" - diff --git a/data/maps/BattleFrontier_BattlePikeCorridor/map.json b/data/maps/BattleFrontier_BattlePikeCorridor/map.json index 1a5faadea..dce455bd3 100755 --- a/data/maps/BattleFrontier_BattlePikeCorridor/map.json +++ b/data/maps/BattleFrontier_BattlePikeCorridor/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_LINK_RECEPTIONIST", @@ -28,7 +28,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattlePikeLobby/map.json b/data/maps/BattleFrontier_BattlePikeLobby/map.json index 0faca2e94..6628866aa 100755 --- a/data/maps/BattleFrontier_BattlePikeLobby/map.json +++ b/data/maps/BattleFrontier_BattlePikeLobby/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_LINK_RECEPTIONIST", @@ -90,7 +90,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc index 3e729e212..5f0e68fcc 100755 --- a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc @@ -59,6 +59,7 @@ BattleFrontier_BattlePikeLobby_EventScript_GiveBattlePoints:: pike_set PIKE_DATA_TOTAL_STREAKS, VAR_RESULT special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon pike_resethelditems message BattleFrontier_BattlePikeLobby_Text_ShallRecordResults waitmessage @@ -80,6 +81,7 @@ BattleFrontier_BattlePikeLobby_EventScript_LostChallenge:: pike_set PIKE_DATA_WIN_STREAK_ACTIVE, FALSE special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon pike_resethelditems pike_save 0 playse SE_SAVE @@ -119,6 +121,7 @@ BattleFrontier_BattlePikeLobby_EventScript_TryEnterChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattlePikeLobby_Text_PleaseChooseThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -183,6 +186,7 @@ BattleFrontier_BattlePikeLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattlePikeLobby_EventScript_LoadPartyAndCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattlePikeLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattlePikeLobby_Text_LookForwardToSeeingYou, MSGBOX_DEFAULT BattleFrontier_BattlePikeLobby_EventScript_EndCancelChallenge:: @@ -430,4 +434,3 @@ BattleFrontier_BattlePikeLobby_Text_ExplainMonOrderRules: .string "changed.\p" .string "The sequence must be set before\n" .string "starting your challenge.$" - diff --git a/data/maps/BattleFrontier_BattlePikeRoomFinal/map.json b/data/maps/BattleFrontier_BattlePikeRoomFinal/map.json index 5a53ad19c..590905a56 100755 --- a/data/maps/BattleFrontier_BattlePikeRoomFinal/map.json +++ b/data/maps/BattleFrontier_BattlePikeRoomFinal/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_LINK_RECEPTIONIST", @@ -28,7 +28,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattlePikeRoomNormal/map.json b/data/maps/BattleFrontier_BattlePikeRoomNormal/map.json index 82414ac6a..237131046 100755 --- a/data/maps/BattleFrontier_BattlePikeRoomNormal/map.json +++ b/data/maps/BattleFrontier_BattlePikeRoomNormal/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_VAR_0", @@ -41,7 +41,9 @@ "flag": "0" } ], - "warp_events": [], + "warp_events": [ + + ], "coord_events": [ { "type": "trigger", @@ -107,5 +109,7 @@ "script": "BattleFrontier_BattlePikeRoomNormal_EventScript_NoTurningBack" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattlePikeRoomWildMons/map.json b/data/maps/BattleFrontier_BattlePikeRoomWildMons/map.json index f74d54887..ed9963629 100755 --- a/data/maps/BattleFrontier_BattlePikeRoomWildMons/map.json +++ b/data/maps/BattleFrontier_BattlePikeRoomWildMons/map.json @@ -12,9 +12,13 @@ "allow_running": true, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], - "warp_events": [], + "connections": 0, + "object_events": [ + + ], + "warp_events": [ + + ], "coord_events": [ { "type": "trigger", @@ -80,5 +84,7 @@ "script": "BattleFrontier_BattlePikeRoomWildMons_EventScript_NoTurningBack" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattlePikeThreePathRoom/map.json b/data/maps/BattleFrontier_BattlePikeThreePathRoom/map.json index 536e02a89..06a09ce58 100755 --- a/data/maps/BattleFrontier_BattlePikeThreePathRoom/map.json +++ b/data/maps/BattleFrontier_BattlePikeThreePathRoom/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_LINK_RECEPTIONIST", @@ -41,7 +41,9 @@ "flag": "0" } ], - "warp_events": [], + "warp_events": [ + + ], "coord_events": [ { "type": "trigger", @@ -125,5 +127,7 @@ "script": "BattleFrontier_BattlePikeThreePathRoom_EventScript_NoTurningBack" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattlePyramidFloor/map.json b/data/maps/BattleFrontier_BattlePyramidFloor/map.json index 514a70287..012f79308 100755 --- a/data/maps/BattleFrontier_BattlePyramidFloor/map.json +++ b/data/maps/BattleFrontier_BattlePyramidFloor/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NINJA_BOY", @@ -223,7 +223,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattlePyramidLobby/map.json b/data/maps/BattleFrontier_BattlePyramidLobby/map.json index 4652af274..412a3720f 100755 --- a/data/maps/BattleFrontier_BattlePyramidLobby/map.json +++ b/data/maps/BattleFrontier_BattlePyramidLobby/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_HIKER", @@ -76,7 +76,9 @@ "dest_warp_id": "3" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc index 550644511..5f3cdb54a 100755 --- a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc @@ -59,6 +59,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_GiveBattlePoints:: special LoadPlayerParty pyramid_clearhelditems special HealPlayerParty + callnative UpdateFollowingPokemon message BattleFrontier_BattlePyramidLobby_Text_UsedBattleBagWillBeKept waitmessage playse SE_EXP_MAX @@ -83,6 +84,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_LostChallenge:: special LoadPlayerParty pyramid_clearhelditems special HealPlayerParty + callnative UpdateFollowingPokemon lockall message BattleFrontier_BattlePyramidLobby_Text_DisappointingHereIsBag waitmessage @@ -132,6 +134,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_TryEnterChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattlePyramidLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -196,6 +199,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattlePyramidLobby_EventScript_LoadPartyAndCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattlePyramidLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattlePyramidLobby_Text_AwaitFutureChallenge, MSGBOX_DEFAULT BattleFrontier_BattlePyramidLobby_EventScript_EndCancelChallenge:: @@ -900,4 +904,3 @@ BattleFrontier_BattlePyramidLobby_Text_ExplainBagRules: .string "of ten kinds of items.\p" .string "The contents of the BATTLE BAG are\n" .string "lost if you fail in your quest.$" - diff --git a/data/maps/BattleFrontier_BattlePyramidTop/map.json b/data/maps/BattleFrontier_BattlePyramidTop/map.json index 4299f3183..f1f044485 100755 --- a/data/maps/BattleFrontier_BattlePyramidTop/map.json +++ b/data/maps/BattleFrontier_BattlePyramidTop/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_HIKER", @@ -41,7 +41,9 @@ "flag": "0" } ], - "warp_events": [], + "warp_events": [ + + ], "coord_events": [ { "type": "trigger", @@ -53,5 +55,7 @@ "script": "BattleFrontier_BattlePyramidTop_EventScript_BattleBrandon" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom/map.json b/data/maps/BattleFrontier_BattleTowerBattleRoom/map.json index 1018ebb6d..cd7a998fa 100755 --- a/data/maps/BattleFrontier_BattleTowerBattleRoom/map.json +++ b/data/maps/BattleFrontier_BattleTowerBattleRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_FRONTIER", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_VAR_0", @@ -70,6 +70,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattleTowerCorridor/map.json b/data/maps/BattleFrontier_BattleTowerCorridor/map.json index 10d5ca7f7..7ebc66f12 100755 --- a/data/maps/BattleFrontier_BattleTowerCorridor/map.json +++ b/data/maps/BattleFrontier_BattleTowerCorridor/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -28,7 +28,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index e99c7f88e..1d3923550 100755 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -95,6 +95,7 @@ BattleFrontier_BattleTowerLobby_EventScript_LookForwardToChallenge:: msgbox BattleFrontier_BattleTowerLobby_Text_LookForwardToAnotherChallenge, MSGBOX_DEFAULT closemessage setvar VAR_TEMP_0, 255 + callnative UpdateFollowingPokemon release end @@ -114,6 +115,7 @@ BattleFrontier_BattleTowerLobby_EventScript_LostThanksForPlaying:: msgbox BattleFrontier_BattleTowerLobby_Text_LookForwardToAnotherChallenge, MSGBOX_DEFAULT closemessage setvar VAR_TEMP_0, 255 + callnative UpdateFollowingPokemon release end @@ -200,6 +202,7 @@ BattleFrontier_BattleTowerLobby_EventScript_TryEnterSinglesChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleTowerLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -263,6 +266,7 @@ BattleFrontier_BattleTowerLobby_EventScript_TryEnterDoublesChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleTowerLobby_Text_PleaseSelectFourMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_DOUBLES_PARTY_SIZE @@ -327,6 +331,7 @@ BattleFrontier_BattleTowerLobby_EventScript_TryEnterMultisChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleTowerLobby_Text_PleaseSelectTwoMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_MULTI_PARTY_SIZE @@ -390,6 +395,7 @@ BattleFrontier_BattleTowerLobby_EventScript_TryEnterLinkMultisChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleTowerLobby_Text_PleaseSelectTwoMons2, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_MULTI_PARTY_SIZE @@ -577,6 +583,7 @@ BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge:: special CloseLink msgbox BattleFrontier_BattleTowerLobby_Text_LookForwardToAnotherChallenge, MSGBOX_DEFAULT diff --git a/data/maps/BattleFrontier_OutsideEast/map.json b/data/maps/BattleFrontier_OutsideEast/map.json index 8c1190380..14762cefb 100755 --- a/data/maps/BattleFrontier_OutsideEast/map.json +++ b/data/maps/BattleFrontier_OutsideEast/map.json @@ -177,7 +177,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_2", + "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_1", "x": 40, "y": 56, "elevation": 3, @@ -359,7 +359,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_MEOWTH_DOLL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_MEOWTH", "x": 64, "y": 59, "elevation": 0, @@ -383,6 +383,123 @@ "trainer_sight_or_berry_tree_id": "0", "script": "AquaHideout_UnusedRubyMap3_BonslyMunchEvo", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 5, + "y": 51, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": -3, + "y": 51, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 35, + "y": 10, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 10, + "y": 26, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 46, + "y": 55, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 44, + "y": 55, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 39, + "y": 28, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 16, + "y": 13, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 58, + "y": 13, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/BattleFrontier_OutsideEast/scripts.inc b/data/maps/BattleFrontier_OutsideEast/scripts.inc index a78fa4ee4..9630bf071 100755 --- a/data/maps/BattleFrontier_OutsideEast/scripts.inc +++ b/data/maps/BattleFrontier_OutsideEast/scripts.inc @@ -442,6 +442,7 @@ BattleFrontier_OutsideEast_Text_StickyMonWithLongTail: BattleFrontier_MoneyFarm01:: lock + faceplayer setflag FLAG_SYS_NO_CATCHING setflag FLAG_DAILY_MONEYFARM setflag FLAG_SYS_SET_BATTLE_BGM diff --git a/data/maps/BattleFrontier_OutsideWest/map.json b/data/maps/BattleFrontier_OutsideWest/map.json index d8f20cba3..e4b799579 100755 --- a/data/maps/BattleFrontier_OutsideWest/map.json +++ b/data/maps/BattleFrontier_OutsideWest/map.json @@ -344,6 +344,175 @@ "trainer_sight_or_berry_tree_id": "ITEM_TIMID_MINT", "script": "Common_EventScript_FindItem", "flag": "FLAG_MINT_BF" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 53, + "y": 51, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 26, + "y": 47, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 26, + "y": 52, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 26, + "y": 57, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 26, + "y": 63, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 61, + "y": 51, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 43, + "y": 24, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 41, + "y": 24, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 21, + "y": 13, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 17, + "y": 13, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 18, + "y": 13, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 19, + "y": 13, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 20, + "y": 13, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/BattleFrontier_PokemonCenter_1F/map.json b/data/maps/BattleFrontier_PokemonCenter_1F/map.json index b993e9277..430b69268 100755 --- a/data/maps/BattleFrontier_PokemonCenter_1F/map.json +++ b/data/maps/BattleFrontier_PokemonCenter_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -67,7 +67,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_SKITTY", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_SKITTY", "x": 1, "y": 3, "elevation": 3, @@ -103,6 +103,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/BattleFrontier_RankingHall/map.json b/data/maps/BattleFrontier_RankingHall/map.json index dc5fc9ce7..4792f3ada 100755 --- a/data/maps/BattleFrontier_RankingHall/map.json +++ b/data/maps/BattleFrontier_RankingHall/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -70,7 +70,9 @@ "dest_warp_id": "4" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/CaveOfOrigin_UnusedRubySapphireMap2/map.json b/data/maps/CaveOfOrigin_UnusedRubySapphireMap2/map.json index 9374a4319..9621c98a2 100755 --- a/data/maps/CaveOfOrigin_UnusedRubySapphireMap2/map.json +++ b/data/maps/CaveOfOrigin_UnusedRubySapphireMap2/map.json @@ -15,9 +15,9 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_REGICE", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_REGIGIGAS", "x": 30, - "y": 30, + "y": 31, "elevation": 0, "movement_type": "MOVEMENT_TYPE_NONE", "movement_range_x": 0, diff --git a/data/maps/DesertRuins/map.json b/data/maps/DesertRuins/map.json index fb346c220..55ef70ce3 100755 --- a/data/maps/DesertRuins/map.json +++ b/data/maps/DesertRuins/map.json @@ -15,7 +15,7 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_REGIROCK", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_REGIROCK", "x": 8, "y": 3, "elevation": 3, diff --git a/data/maps/DesertRuins/scripts.inc b/data/maps/DesertRuins/scripts.inc index 21473e87a..c5759ea52 100755 --- a/data/maps/DesertRuins/scripts.inc +++ b/data/maps/DesertRuins/scripts.inc @@ -55,6 +55,7 @@ DesertRuins_EventScript_CaveEntranceSide:: end DesertRuins_EventScript_Regirock:: + bufferspeciesname 0, SPECIES_REGIROCK lock faceplayer waitse @@ -83,4 +84,3 @@ DesertRuins_EventScript_RanFromRegirock:: setvar VAR_0x8004, SPECIES_REGIROCK goto Common_EventScript_LegendaryFlewAway end - diff --git a/data/maps/DewfordTown/map.json b/data/maps/DewfordTown/map.json index 73aea8287..a1c72e374 100755 --- a/data/maps/DewfordTown/map.json +++ b/data/maps/DewfordTown/map.json @@ -89,6 +89,19 @@ "trainer_sight_or_berry_tree_id": "0", "script": "DewfordTown_EventScript_TrendyPhraseBoy", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 4, + "y": 10, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/DewfordTown_Hall/map.json b/data/maps/DewfordTown_Hall/map.json index 9489a3d1e..563d2bfae 100755 --- a/data/maps/DewfordTown_Hall/map.json +++ b/data/maps/DewfordTown_Hall/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_GIRL_2", @@ -148,7 +148,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/DewfordTown_House1/map.json b/data/maps/DewfordTown_House1/map.json index 57e1909f4..d501e73b6 100755 --- a/data/maps/DewfordTown_House1/map.json +++ b/data/maps/DewfordTown_House1/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_3", @@ -41,7 +41,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_2", + "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_1", "x": 4, "y": 2, "elevation": 3, @@ -70,6 +70,10 @@ "dest_warp_id": "3" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/DewfordTown_House2/map.json b/data/maps/DewfordTown_House2/map.json index 63e9e42ba..b57ab53b8 100755 --- a/data/maps/DewfordTown_House2/map.json +++ b/data/maps/DewfordTown_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_3", @@ -57,6 +57,10 @@ "dest_warp_id": "4" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/DewfordTown_PokemonCenter_1F/map.json b/data/maps/DewfordTown_PokemonCenter_1F/map.json index 5e5c7b93e..19fb71b06 100755 --- a/data/maps/DewfordTown_PokemonCenter_1F/map.json +++ b/data/maps/DewfordTown_PokemonCenter_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -77,6 +77,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/DewfordTown_PokemonCenter_2F/map.json b/data/maps/DewfordTown_PokemonCenter_2F/map.json index 8fd655abf..e94197bb0 100755 --- a/data/maps/DewfordTown_PokemonCenter_2F/map.json +++ b/data/maps/DewfordTown_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity/map.json b/data/maps/EverGrandeCity/map.json index 6e0b5f707..80b681021 100755 --- a/data/maps/EverGrandeCity/map.json +++ b/data/maps/EverGrandeCity/map.json @@ -20,7 +20,19 @@ } ], "object_events": [ - + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 29, + "y": 48, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + } ], "warp_events": [ { diff --git a/data/maps/EverGrandeCity_DrakesRoom/map.json b/data/maps/EverGrandeCity_DrakesRoom/map.json index 249e244d0..cb19e82bb 100755 --- a/data/maps/EverGrandeCity_DrakesRoom/map.json +++ b/data/maps/EverGrandeCity_DrakesRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_DRAKE", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_DRAKE", @@ -44,6 +44,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_GlaciasRoom/map.json b/data/maps/EverGrandeCity_GlaciasRoom/map.json index fd861a55b..4022726c9 100755 --- a/data/maps/EverGrandeCity_GlaciasRoom/map.json +++ b/data/maps/EverGrandeCity_GlaciasRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_GLACIA", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_GLACIA", @@ -44,6 +44,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_Hall1/map.json b/data/maps/EverGrandeCity_Hall1/map.json index 7e430832e..abf4d6ede 100755 --- a/data/maps/EverGrandeCity_Hall1/map.json +++ b/data/maps/EverGrandeCity_Hall1/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 5, @@ -44,6 +46,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_Hall2/map.json b/data/maps/EverGrandeCity_Hall2/map.json index 3ff291251..7dd9c4d02 100755 --- a/data/maps/EverGrandeCity_Hall2/map.json +++ b/data/maps/EverGrandeCity_Hall2/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 5, @@ -44,6 +46,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_Hall3/map.json b/data/maps/EverGrandeCity_Hall3/map.json index a12fe19b3..2df85e96d 100755 --- a/data/maps/EverGrandeCity_Hall3/map.json +++ b/data/maps/EverGrandeCity_Hall3/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 5, @@ -44,6 +46,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_Hall4/map.json b/data/maps/EverGrandeCity_Hall4/map.json index 09cf73961..2cf467a80 100755 --- a/data/maps/EverGrandeCity_Hall4/map.json +++ b/data/maps/EverGrandeCity_Hall4/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 5, @@ -30,6 +32,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_Hall5/map.json b/data/maps/EverGrandeCity_Hall5/map.json index b63907630..8870eec85 100755 --- a/data/maps/EverGrandeCity_Hall5/map.json +++ b/data/maps/EverGrandeCity_Hall5/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 5, @@ -44,6 +46,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_HallOfFame/map.json b/data/maps/EverGrandeCity_HallOfFame/map.json index 82219dfd4..bc24f2be6 100755 --- a/data/maps/EverGrandeCity_HallOfFame/map.json +++ b/data/maps/EverGrandeCity_HallOfFame/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WALLACE", @@ -37,6 +37,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_PhoebesRoom/map.json b/data/maps/EverGrandeCity_PhoebesRoom/map.json index 7fdc61651..422ac269e 100755 --- a/data/maps/EverGrandeCity_PhoebesRoom/map.json +++ b/data/maps/EverGrandeCity_PhoebesRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_PHOEBE", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_PHOEBE", @@ -44,6 +44,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_PokemonCenter_2F/map.json b/data/maps/EverGrandeCity_PokemonCenter_2F/map.json index c20b8a732..b070295d6 100755 --- a/data/maps/EverGrandeCity_PokemonCenter_2F/map.json +++ b/data/maps/EverGrandeCity_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_PokemonLeague_2F/map.json b/data/maps/EverGrandeCity_PokemonLeague_2F/map.json index e271becd6..47622d5b6 100755 --- a/data/maps/EverGrandeCity_PokemonLeague_2F/map.json +++ b/data/maps/EverGrandeCity_PokemonLeague_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/EverGrandeCity_SidneysRoom/map.json b/data/maps/EverGrandeCity_SidneysRoom/map.json index dfe6fe36c..405e47b00 100755 --- a/data/maps/EverGrandeCity_SidneysRoom/map.json +++ b/data/maps/EverGrandeCity_SidneysRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_SIDNEY", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SIDNEY", @@ -44,6 +44,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FallarborTown/map.json b/data/maps/FallarborTown/map.json index f59fd7716..0634ca39a 100755 --- a/data/maps/FallarborTown/map.json +++ b/data/maps/FallarborTown/map.json @@ -76,6 +76,45 @@ "trainer_sight_or_berry_tree_id": "0", "script": "FallarborTown_EventScript_Azurill", "flag": "FLAG_HIDE_FALLARBOR_AZURILL" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 16, + "y": 7, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 17, + "y": 15, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 8, + "y": 5, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/FallarborTown_BattleTentBattleRoom/map.json b/data/maps/FallarborTown_BattleTentBattleRoom/map.json index 7b702dc0e..c7e40643c 100755 --- a/data/maps/FallarborTown_BattleTentBattleRoom/map.json +++ b/data/maps/FallarborTown_BattleTentBattleRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_VAR_1", @@ -54,7 +54,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FallarborTown_BattleTentCorridor/map.json b/data/maps/FallarborTown_BattleTentCorridor/map.json index c086a3288..b95d0c0ff 100755 --- a/data/maps/FallarborTown_BattleTentCorridor/map.json +++ b/data/maps/FallarborTown_BattleTentCorridor/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BLACK_BELT", @@ -28,7 +28,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FallarborTown_BattleTentLobby/map.json b/data/maps/FallarborTown_BattleTentLobby/map.json index b8f274df3..9585574b6 100755 --- a/data/maps/FallarborTown_BattleTentLobby/map.json +++ b/data/maps/FallarborTown_BattleTentLobby/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BLACK_BELT", @@ -96,7 +96,9 @@ "dest_warp_id": "1" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/FallarborTown_CozmosHouse/map.json b/data/maps/FallarborTown_CozmosHouse/map.json index a9986b6df..cde7a5997 100755 --- a/data/maps/FallarborTown_CozmosHouse/map.json +++ b/data/maps/FallarborTown_CozmosHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1", @@ -57,6 +57,10 @@ "dest_warp_id": "3" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FallarborTown_Mart/map.json b/data/maps/FallarborTown_Mart/map.json index dc950e724..a72501813 100755 --- a/data/maps/FallarborTown_Mart/map.json +++ b/data/maps/FallarborTown_Mart/map.json @@ -54,7 +54,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_SKITTY", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_SKITTY", "x": 3, "y": 5, "elevation": 3, diff --git a/data/maps/FallarborTown_MoveRelearnersHouse/map.json b/data/maps/FallarborTown_MoveRelearnersHouse/map.json index 947967720..06bccb9b3 100755 --- a/data/maps/FallarborTown_MoveRelearnersHouse/map.json +++ b/data/maps/FallarborTown_MoveRelearnersHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_FAT_MAN", @@ -44,6 +44,10 @@ "dest_warp_id": "4" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FallarborTown_PokemonCenter_1F/map.json b/data/maps/FallarborTown_PokemonCenter_1F/map.json index 93204a215..f9f95fd6e 100755 --- a/data/maps/FallarborTown_PokemonCenter_1F/map.json +++ b/data/maps/FallarborTown_PokemonCenter_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FallarborTown_PokemonCenter_2F/map.json b/data/maps/FallarborTown_PokemonCenter_2F/map.json index 94f56ecb4..020d261d3 100755 --- a/data/maps/FallarborTown_PokemonCenter_2F/map.json +++ b/data/maps/FallarborTown_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FortreeCity/map.json b/data/maps/FortreeCity/map.json index 9efc51a7f..af87f9057 100755 --- a/data/maps/FortreeCity/map.json +++ b/data/maps/FortreeCity/map.json @@ -115,6 +115,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "FortreeCity_EventScript_Kecleon", "flag": "FLAG_HIDE_FORTREE_CITY_KECLEON" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 7, + "y": 6, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 6, + "y": 14, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/FortreeCity_DecorationShop/map.json b/data/maps/FortreeCity_DecorationShop/map.json index 3c6d2f34d..09ff32e56 100755 --- a/data/maps/FortreeCity_DecorationShop/map.json +++ b/data/maps/FortreeCity_DecorationShop/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_M", @@ -83,6 +83,10 @@ "dest_warp_id": "8" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FortreeCity_Gym/map.json b/data/maps/FortreeCity_Gym/map.json index 0796912dd..a014ece15 100755 --- a/data/maps/FortreeCity_Gym/map.json +++ b/data/maps/FortreeCity_Gym/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_GYM", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WINONA", @@ -135,7 +135,9 @@ "dest_warp_id": "2" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/FortreeCity_Gym/scripts.inc b/data/maps/FortreeCity_Gym/scripts.inc index 7d7485a78..6e9d49e2c 100755 --- a/data/maps/FortreeCity_Gym/scripts.inc +++ b/data/maps/FortreeCity_Gym/scripts.inc @@ -5,6 +5,7 @@ FortreeCity_Gym_MapScripts:: FortreeCity_Gym_OnTransition: special RotatingGate_InitPuzzle + setflag FLAG_TEMP_HIDE_FOLLOWER @ Hide follower bc of rotating gates end FortreeCity_Gym_OnWarp: diff --git a/data/maps/FortreeCity_House1/map.json b/data/maps/FortreeCity_House1/map.json index 5013cbd65..59f1c6dbf 100755 --- a/data/maps/FortreeCity_House1/map.json +++ b/data/maps/FortreeCity_House1/map.json @@ -12,11 +12,11 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NINJA_BOY", - "x": 1, + "x": 0, "y": 3, "elevation": 3, "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", @@ -28,8 +28,8 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_2", - "x": 2, + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_ZIGZAGOON", + "x": 1, "y": 3, "elevation": 3, "movement_type": "MOVEMENT_TYPE_FACE_LEFT", @@ -70,6 +70,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FortreeCity_House2/map.json b/data/maps/FortreeCity_House2/map.json index 26d666a55..cc504759b 100755 --- a/data/maps/FortreeCity_House2/map.json +++ b/data/maps/FortreeCity_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_F", @@ -57,6 +57,10 @@ "dest_warp_id": "4" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FortreeCity_House3/map.json b/data/maps/FortreeCity_House3/map.json index b305190df..efe099e52 100755 --- a/data/maps/FortreeCity_House3/map.json +++ b/data/maps/FortreeCity_House3/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MANIAC", @@ -57,6 +57,10 @@ "dest_warp_id": "5" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FortreeCity_House4/map.json b/data/maps/FortreeCity_House4/map.json index 8123d2c4d..2343df94f 100755 --- a/data/maps/FortreeCity_House4/map.json +++ b/data/maps/FortreeCity_House4/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_4", @@ -41,7 +41,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_WINGULL", "x": 2, "y": 3, "elevation": 3, @@ -70,6 +70,10 @@ "dest_warp_id": "6" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FortreeCity_House5/map.json b/data/maps/FortreeCity_House5/map.json index b76a869f5..fda7eb873 100755 --- a/data/maps/FortreeCity_House5/map.json +++ b/data/maps/FortreeCity_House5/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_F", @@ -28,7 +28,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_2", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_ZIGZAGOON", "x": 6, "y": 3, "elevation": 3, @@ -70,6 +70,10 @@ "dest_warp_id": "7" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/FortreeCity_PokemonCenter_2F/map.json b/data/maps/FortreeCity_PokemonCenter_2F/map.json index 8635a5320..ab40282fb 100755 --- a/data/maps/FortreeCity_PokemonCenter_2F/map.json +++ b/data/maps/FortreeCity_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/IslandCave/map.json b/data/maps/IslandCave/map.json index 1e3a57910..87c7f1303 100755 --- a/data/maps/IslandCave/map.json +++ b/data/maps/IslandCave/map.json @@ -15,7 +15,7 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_REGICE", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_REGICE", "x": 8, "y": 3, "elevation": 3, diff --git a/data/maps/IslandCave/scripts.inc b/data/maps/IslandCave/scripts.inc index d15802aaa..d42e15093 100755 --- a/data/maps/IslandCave/scripts.inc +++ b/data/maps/IslandCave/scripts.inc @@ -88,6 +88,7 @@ IslandCave_EventScript_ClearSteps:: return IslandCave_EventScript_Regice:: + bufferspeciesname 0, SPECIES_REGICE lock faceplayer waitse diff --git a/data/maps/LavaridgeTown/map.json b/data/maps/LavaridgeTown/map.json index ecf7c5b9f..85d3e84ce 100755 --- a/data/maps/LavaridgeTown/map.json +++ b/data/maps/LavaridgeTown/map.json @@ -77,7 +77,7 @@ "x": 4, "y": 4, "elevation": 3, - "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT", + "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT", "movement_range_x": 0, "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", @@ -136,6 +136,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "LavaridgeTown_EventScript_EggWoman", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 11, + "y": 6, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 17, + "y": 5, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/LavaridgeTown_Gym_B1F/map.json b/data/maps/LavaridgeTown_Gym_B1F/map.json index b90802b17..a772d775c 100755 --- a/data/maps/LavaridgeTown_Gym_B1F/map.json +++ b/data/maps/LavaridgeTown_Gym_B1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_GYM", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_5", @@ -237,6 +237,10 @@ "dest_warp_id": "25" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LavaridgeTown_HerbShop/map.json b/data/maps/LavaridgeTown_HerbShop/map.json index 7a3d8f0e1..672a00d64 100755 --- a/data/maps/LavaridgeTown_HerbShop/map.json +++ b/data/maps/LavaridgeTown_HerbShop/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_2", @@ -70,6 +70,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LavaridgeTown_House/map.json b/data/maps/LavaridgeTown_House/map.json index a45ac0e7f..96021f118 100755 --- a/data/maps/LavaridgeTown_House/map.json +++ b/data/maps/LavaridgeTown_House/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_OLD_MAN", @@ -28,7 +28,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_2", + "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_1", "x": 6, "y": 6, "elevation": 3, @@ -70,6 +70,10 @@ "dest_warp_id": "4" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LavaridgeTown_PokemonCenter_1F/map.json b/data/maps/LavaridgeTown_PokemonCenter_1F/map.json index 8cbeae092..92c991336 100755 --- a/data/maps/LavaridgeTown_PokemonCenter_1F/map.json +++ b/data/maps/LavaridgeTown_PokemonCenter_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -97,6 +97,10 @@ "dest_warp_id": "5" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LavaridgeTown_PokemonCenter_2F/map.json b/data/maps/LavaridgeTown_PokemonCenter_2F/map.json index 2a7ce1551..5b74b2bab 100755 --- a/data/maps/LavaridgeTown_PokemonCenter_2F/map.json +++ b/data/maps/LavaridgeTown_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LilycoveCity/map.json b/data/maps/LilycoveCity/map.json index a5a3206cf..0d25ebdd2 100755 --- a/data/maps/LilycoveCity/map.json +++ b/data/maps/LilycoveCity/map.json @@ -323,6 +323,45 @@ "trainer_sight_or_berry_tree_id": "ITEM_MODEST_MINT", "script": "Common_EventScript_FindItem", "flag": "FLAG_MINT_LILYCOVE" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 26, + "y": 14, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 61, + "y": 33, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 27, + "y": 4, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/LilycoveCity_CoveLilyMotel_1F/map.json b/data/maps/LilycoveCity_CoveLilyMotel_1F/map.json index 098b53336..5cb778143 100755 --- a/data/maps/LilycoveCity_CoveLilyMotel_1F/map.json +++ b/data/maps/LilycoveCity_CoveLilyMotel_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_1", @@ -62,5 +62,7 @@ "script": "LilycoveCity_CoveLilyMotel_1F_EventScript_BlockingTV" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/LilycoveCity_CoveLilyMotel_2F/map.json b/data/maps/LilycoveCity_CoveLilyMotel_2F/map.json index 10333f1b4..75383663a 100755 --- a/data/maps/LilycoveCity_CoveLilyMotel_2F/map.json +++ b/data/maps/LilycoveCity_CoveLilyMotel_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_3", @@ -115,6 +115,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LilycoveCity_DepartmentStore_1F/map.json b/data/maps/LilycoveCity_DepartmentStore_1F/map.json index b2f664f93..3934b927c 100755 --- a/data/maps/LilycoveCity_DepartmentStore_1F/map.json +++ b/data/maps/LilycoveCity_DepartmentStore_1F/map.json @@ -80,7 +80,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_AZUMARILL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_AZUMARILL", "x": 14, "y": 4, "elevation": 3, diff --git a/data/maps/LilycoveCity_Harbor/map.json b/data/maps/LilycoveCity_Harbor/map.json index 06d49e0c8..9c02306f4 100755 --- a/data/maps/LilycoveCity_Harbor/map.json +++ b/data/maps/LilycoveCity_Harbor/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BEAUTY", @@ -96,6 +96,10 @@ "dest_warp_id": "12" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LilycoveCity_House2/map.json b/data/maps/LilycoveCity_House2/map.json index 3e5e6ce2b..459bd87c8 100755 --- a/data/maps/LilycoveCity_House2/map.json +++ b/data/maps/LilycoveCity_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_FAT_MAN", @@ -44,6 +44,10 @@ "dest_warp_id": "9" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LilycoveCity_House3/map.json b/data/maps/LilycoveCity_House3/map.json index bba3bf205..b0adbba2c 100755 --- a/data/maps/LilycoveCity_House3/map.json +++ b/data/maps/LilycoveCity_House3/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_GAMEBOY_KID", @@ -109,6 +109,10 @@ "dest_warp_id": "10" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LilycoveCity_House4/map.json b/data/maps/LilycoveCity_House4/map.json index 21d2880cc..6d81066be 100755 --- a/data/maps/LilycoveCity_House4/map.json +++ b/data/maps/LilycoveCity_House4/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_4", @@ -57,6 +57,10 @@ "dest_warp_id": "11" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LilycoveCity_LilycoveMuseum_1F/map.json b/data/maps/LilycoveCity_LilycoveMuseum_1F/map.json index 1710e0df8..a2efff03d 100755 --- a/data/maps/LilycoveCity_LilycoveMuseum_1F/map.json +++ b/data/maps/LilycoveCity_LilycoveMuseum_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BEAUTY", @@ -168,7 +168,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/LilycoveCity_LilycoveMuseum_2F/map.json b/data/maps/LilycoveCity_LilycoveMuseum_2F/map.json index 83fe63aab..882b4bdae 100755 --- a/data/maps/LilycoveCity_LilycoveMuseum_2F/map.json +++ b/data/maps/LilycoveCity_LilycoveMuseum_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN", @@ -76,7 +76,9 @@ "dest_warp_id": "2" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/LilycoveCity_MoveDeletersHouse/map.json b/data/maps/LilycoveCity_MoveDeletersHouse/map.json index 29c6f3636..5eaab8dc9 100755 --- a/data/maps/LilycoveCity_MoveDeletersHouse/map.json +++ b/data/maps/LilycoveCity_MoveDeletersHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_M", @@ -44,6 +44,10 @@ "dest_warp_id": "7" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LilycoveCity_PokemonCenter_1F/map.json b/data/maps/LilycoveCity_PokemonCenter_1F/map.json index 595b5af54..0784e5827 100755 --- a/data/maps/LilycoveCity_PokemonCenter_1F/map.json +++ b/data/maps/LilycoveCity_PokemonCenter_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -103,6 +103,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LilycoveCity_PokemonCenter_2F/map.json b/data/maps/LilycoveCity_PokemonCenter_2F/map.json index 89c7e385f..f5b5aa293 100755 --- a/data/maps/LilycoveCity_PokemonCenter_2F/map.json +++ b/data/maps/LilycoveCity_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LilycoveCity_PokemonTrainerFanClub/map.json b/data/maps/LilycoveCity_PokemonTrainerFanClub/map.json index ccd988bf3..b0e606dee 100755 --- a/data/maps/LilycoveCity_PokemonTrainerFanClub/map.json +++ b/data/maps/LilycoveCity_PokemonTrainerFanClub/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_LASS", @@ -148,6 +148,10 @@ "dest_warp_id": "5" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/LittlerootTown_BrendansHouse_1F/map.json b/data/maps/LittlerootTown_BrendansHouse_1F/map.json index 23b1bf28c..9a44a519a 100755 --- a/data/maps/LittlerootTown_BrendansHouse_1F/map.json +++ b/data/maps/LittlerootTown_BrendansHouse_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MOM", @@ -167,5 +167,7 @@ "script": "LittlerootTown_BrendansHouse_1F_EventScript_MeetRival2" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/LittlerootTown_MaysHouse_1F/map.json b/data/maps/LittlerootTown_MaysHouse_1F/map.json index 4e4887003..ad09a2f8c 100755 --- a/data/maps/LittlerootTown_MaysHouse_1F/map.json +++ b/data/maps/LittlerootTown_MaysHouse_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MOM", @@ -167,5 +167,7 @@ "script": "LittlerootTown_MaysHouse_1F_EventScript_MeetRival2" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/LittlerootTown_MaysHouse_2F/map.json b/data/maps/LittlerootTown_MaysHouse_2F/map.json index ce3a5f570..4f60b46fa 100755 --- a/data/maps/LittlerootTown_MaysHouse_2F/map.json +++ b/data/maps/LittlerootTown_MaysHouse_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_RIVAL_MAY_NORMAL", @@ -232,7 +232,9 @@ "dest_warp_id": "2" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/MagmaHideout_3F_1R/map.json b/data/maps/MagmaHideout_3F_1R/map.json index f9b8cceb3..6dda60362 100755 --- a/data/maps/MagmaHideout_3F_1R/map.json +++ b/data/maps/MagmaHideout_3F_1R/map.json @@ -54,11 +54,11 @@ "flag": "FLAG_ITEM_MAGMA_HIDEOUT_3F_1R_NUGGET" }, { - "graphics_id": "OBJ_EVENT_GFX_ANABEL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_ENTEI", "x": 9, - "y": 16, + "y": 17, "elevation": 0, - "movement_type": "MOVEMENT_TYPE_NONE", + "movement_type": "MOVEMENT_TYPE_FACE_LEFT", "movement_range_x": 0, "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", diff --git a/data/maps/MagmaHideout_4F/map.json b/data/maps/MagmaHideout_4F/map.json index cd65536b3..1e7147b22 100755 --- a/data/maps/MagmaHideout_4F/map.json +++ b/data/maps/MagmaHideout_4F/map.json @@ -15,7 +15,7 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_GROUDON_FRONT", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_GROUDON", "x": 16, "y": 17, "elevation": 0, @@ -93,7 +93,7 @@ "flag": "FLAG_HIDE_MAGMA_HIDEOUT_GRUNTS" }, { - "graphics_id": "OBJ_EVENT_GFX_GROUDON_ASLEEP", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_GROUDON", "x": 16, "y": 17, "elevation": 3, diff --git a/data/maps/MarineCave_End/map.json b/data/maps/MarineCave_End/map.json index 6bed32809..235a0380e 100755 --- a/data/maps/MarineCave_End/map.json +++ b/data/maps/MarineCave_End/map.json @@ -15,7 +15,7 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_KYOGRE_FRONT", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_KYOGRE", "x": 9, "y": 22, "elevation": 1, diff --git a/data/maps/MauvilleCity/map.json b/data/maps/MauvilleCity/map.json index b37ebc804..25e28f095 100755 --- a/data/maps/MauvilleCity/map.json +++ b/data/maps/MauvilleCity/map.json @@ -195,6 +195,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "MauvilleCity_EventScript_MagnezoneEvo", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 24, + "y": 5, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 25, + "y": 14, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/MauvilleCity_BikeShop/map.json b/data/maps/MauvilleCity_BikeShop/map.json index 7c9a68414..d730ae969 100755 --- a/data/maps/MauvilleCity_BikeShop/map.json +++ b/data/maps/MauvilleCity_BikeShop/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_2", @@ -57,7 +57,9 @@ "dest_warp_id": "2" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/MauvilleCity_GameCorner/map.json b/data/maps/MauvilleCity_GameCorner/map.json index 7fc434b05..c3ee9adae 100755 --- a/data/maps/MauvilleCity_GameCorner/map.json +++ b/data/maps/MauvilleCity_GameCorner/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_2", @@ -187,7 +187,9 @@ "dest_warp_id": "5" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/MauvilleCity_House1/map.json b/data/maps/MauvilleCity_House1/map.json index 4b134d6ee..7580a7f69 100755 --- a/data/maps/MauvilleCity_House1/map.json +++ b/data/maps/MauvilleCity_House1/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1", @@ -44,6 +44,10 @@ "dest_warp_id": "4" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MauvilleCity_House2/map.json b/data/maps/MauvilleCity_House2/map.json index 83cca3a17..4b0c33a1a 100755 --- a/data/maps/MauvilleCity_House2/map.json +++ b/data/maps/MauvilleCity_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_3", @@ -44,6 +44,10 @@ "dest_warp_id": "6" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MauvilleCity_PokemonCenter_1F/map.json b/data/maps/MauvilleCity_PokemonCenter_1F/map.json index 1b0a401b8..f4e183a40 100755 --- a/data/maps/MauvilleCity_PokemonCenter_1F/map.json +++ b/data/maps/MauvilleCity_PokemonCenter_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -103,6 +103,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MauvilleCity_PokemonCenter_2F/map.json b/data/maps/MauvilleCity_PokemonCenter_2F/map.json index 96cd6007a..cde270dcf 100755 --- a/data/maps/MauvilleCity_PokemonCenter_2F/map.json +++ b/data/maps/MauvilleCity_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -103,6 +103,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MeteorFalls_B1F_2R/map.json b/data/maps/MeteorFalls_B1F_2R/map.json index 6517ffdba..93cedf135 100755 --- a/data/maps/MeteorFalls_B1F_2R/map.json +++ b/data/maps/MeteorFalls_B1F_2R/map.json @@ -28,11 +28,11 @@ "flag": "FLAG_ITEM_METEOR_FALLS_B1F_2R_TM02" }, { - "graphics_id": "OBJ_EVENT_GFX_ANABEL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_ARTICUNO", "x": 5, "y": 3, "elevation": 0, - "movement_type": "MOVEMENT_TYPE_NONE", + "movement_type": "MOVEMENT_TYPE_WALK_IN_PLACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", diff --git a/data/maps/MossdeepCity/map.json b/data/maps/MossdeepCity/map.json index 340557f12..38db943a8 100755 --- a/data/maps/MossdeepCity/map.json +++ b/data/maps/MossdeepCity/map.json @@ -252,7 +252,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ANABEL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_JIRACHI", "x": 57, "y": 20, "elevation": 0, @@ -289,6 +289,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "MossdeepCity_EventScript_Evo2", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 30, + "y": 16, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 39, + "y": 18, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/MossdeepCity_GameCorner_1F/map.json b/data/maps/MossdeepCity_GameCorner_1F/map.json index 0833460ba..8776a3bf8 100755 --- a/data/maps/MossdeepCity_GameCorner_1F/map.json +++ b/data/maps/MossdeepCity_GameCorner_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_M", @@ -64,7 +64,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/MossdeepCity_GameCorner_B1F/map.json b/data/maps/MossdeepCity_GameCorner_B1F/map.json index 3aed0cceb..9ddc84bb4 100755 --- a/data/maps/MossdeepCity_GameCorner_B1F/map.json +++ b/data/maps/MossdeepCity_GameCorner_B1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_VAR_0", @@ -37,6 +37,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MossdeepCity_Gym/map.json b/data/maps/MossdeepCity_Gym/map.json index 9ffe9d6fc..c2ba782fe 100755 --- a/data/maps/MossdeepCity_Gym/map.json +++ b/data/maps/MossdeepCity_Gym/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_GYM", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TATE", diff --git a/data/maps/MossdeepCity_Gym/scripts.inc b/data/maps/MossdeepCity_Gym/scripts.inc index 8892097de..398a93bf3 100755 --- a/data/maps/MossdeepCity_Gym/scripts.inc +++ b/data/maps/MossdeepCity_Gym/scripts.inc @@ -1,9 +1,14 @@ MossdeepCity_Gym_MapScripts:: + map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_Gym_OnTransition map_script MAP_SCRIPT_ON_LOAD, MossdeepCity_Gym_OnLoad .byte 0 @ NOTE: Mossdeep Gym was redesigned between R/S and E. Leftover (and now functionally unused) scripts are commented below +MossdeepCity_Gym_OnTransition: + setflag FLAG_TEMP_HIDE_FOLLOWER @ Hide follower since it can collide with moving statues + end + @ All the below checks are leftover from RS. FLAG_MOSSDEEP_GYM_SWITCH_X is never set MossdeepCity_Gym_OnLoad: goto_if_set FLAG_MOSSDEEP_GYM_SWITCH_1, MossdeepCity_Gym_EventScript_SetSwitch1Metatiles diff --git a/data/maps/MossdeepCity_House1/map.json b/data/maps/MossdeepCity_House1/map.json index e45335ac5..d61d480f0 100755 --- a/data/maps/MossdeepCity_House1/map.json +++ b/data/maps/MossdeepCity_House1/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BLACK_BELT", @@ -57,6 +57,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MossdeepCity_House2/map.json b/data/maps/MossdeepCity_House2/map.json index a8a03ed95..8b6a6d0d5 100755 --- a/data/maps/MossdeepCity_House2/map.json +++ b/data/maps/MossdeepCity_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_4", @@ -41,7 +41,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_WINGULL", "x": 4, "y": 5, "elevation": 3, @@ -70,6 +70,10 @@ "dest_warp_id": "3" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MossdeepCity_House3/map.json b/data/maps/MossdeepCity_House3/map.json index 4a6574121..8a2756b39 100755 --- a/data/maps/MossdeepCity_House3/map.json +++ b/data/maps/MossdeepCity_House3/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_FISHERMAN", @@ -44,6 +44,10 @@ "dest_warp_id": "5" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MossdeepCity_House4/map.json b/data/maps/MossdeepCity_House4/map.json index b17bc357a..7bc233449 100755 --- a/data/maps/MossdeepCity_House4/map.json +++ b/data/maps/MossdeepCity_House4/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_2", @@ -41,7 +41,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_SKITTY", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_SKITTY", "x": 2, "y": 4, "elevation": 3, @@ -70,6 +70,10 @@ "dest_warp_id": "7" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MossdeepCity_PokemonCenter_2F/map.json b/data/maps/MossdeepCity_PokemonCenter_2F/map.json index be24e32cc..30b3c2e31 100755 --- a/data/maps/MossdeepCity_PokemonCenter_2F/map.json +++ b/data/maps/MossdeepCity_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -103,6 +103,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc index 193163325..6e8df8882 100755 --- a/data/maps/MtChimney/scripts.inc +++ b/data/maps/MtChimney/scripts.inc @@ -54,13 +54,13 @@ MtChimney_EventScript_Maxie:: msgbox MtChimney_Text_MaxieYouHaventSeenLastOfMagma, MSGBOX_DEFAULT closemessage delay 30 - fadescreen FADE_TO_BLACK + fadescreenswapbuffers FADE_TO_BLACK removeobject LOCALID_MAXIE removeobject LOCALID_MAGMA_GRUNT_1 removeobject LOCALID_TABITHA removeobject LOCALID_MAGMA_GRUNT_2 setflag FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA - fadescreen FADE_FROM_BLACK + fadescreenswapbuffers FADE_FROM_BLACK setobjectxyperm LOCALID_ARCHIE, 10, 12 addobject LOCALID_ARCHIE call_if_eq VAR_FACING, DIR_EAST, MtChimney_EventScript_ArchieApproachPlayerEast diff --git a/data/maps/MtChimney_CableCarStation/map.json b/data/maps/MtChimney_CableCarStation/map.json index 5fe36a373..e11e8e2d6 100755 --- a/data/maps/MtChimney_CableCarStation/map.json +++ b/data/maps/MtChimney_CableCarStation/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BEAUTY", @@ -57,6 +57,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/MtPyre_Summit/map.json b/data/maps/MtPyre_Summit/map.json index 372e401dc..f5010c901 100755 --- a/data/maps/MtPyre_Summit/map.json +++ b/data/maps/MtPyre_Summit/map.json @@ -117,6 +117,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "0x0", "flag": "FLAG_HIDE_MT_PYRE_SUMMIT_MAXIE" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 21, + "y": 8, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 25, + "y": 8, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/MtPyre_Summit/scripts.inc b/data/maps/MtPyre_Summit/scripts.inc index 3de60df3f..5a6d23797 100755 --- a/data/maps/MtPyre_Summit/scripts.inc +++ b/data/maps/MtPyre_Summit/scripts.inc @@ -49,7 +49,7 @@ MtPyre_Summit_EventScript_TeamAquaExits:: call_if_eq VAR_0x8008, 2, MtPyre_Summit_EventScript_ArchieFacePlayer2 msgbox MtPyre_Summit_Text_ArchieWeGotTheOrbLetsGo, MSGBOX_DEFAULT closemessage - fadescreen FADE_TO_BLACK + fadescreenswapbuffers FADE_TO_BLACK removeobject LOCALID_ARCHIE removeobject LOCALID_GRUNT_1 removeobject LOCALID_GRUNT_2 @@ -58,7 +58,7 @@ MtPyre_Summit_EventScript_TeamAquaExits:: setflag FLAG_HIDE_MT_PYRE_SUMMIT_ARCHIE setflag FLAG_HIDE_MT_PYRE_SUMMIT_TEAM_AQUA fadedefaultbgm - fadescreen FADE_FROM_BLACK + fadescreenswapbuffers FADE_FROM_BLACK delay 20 setvar VAR_MT_PYRE_STATE, 1 call_if_eq VAR_0x8008, 0, MtPyre_Summit_EventScript_OldLadyApproachPlayer0 @@ -622,4 +622,3 @@ MtPyre_Summit_Text_HoennTrioTale: .string "becalmed the two enraged POKéMON.\p" .string "Then, its duty done, the green POKéMON\n" .string "flew off into the wild blue yonder…$" - diff --git a/data/maps/NavelRock_Bottom/map.json b/data/maps/NavelRock_Bottom/map.json index 3155720b4..640b612da 100755 --- a/data/maps/NavelRock_Bottom/map.json +++ b/data/maps/NavelRock_Bottom/map.json @@ -15,13 +15,13 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_LUGIA", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_LUGIA", "x": 11, "y": 13, "elevation": 0, - "movement_type": "MOVEMENT_TYPE_FACE_DOWN", - "movement_range_x": 1, - "movement_range_y": 1, + "movement_type": "MOVEMENT_TYPE_WALK_IN_PLACE_DOWN", + "movement_range_x": 0, + "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "NavelRock_Bottom_EventScript_Lugia", diff --git a/data/maps/NavelRock_Top/map.json b/data/maps/NavelRock_Top/map.json index f770216d5..204d3488e 100755 --- a/data/maps/NavelRock_Top/map.json +++ b/data/maps/NavelRock_Top/map.json @@ -15,7 +15,7 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_HOOH", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_HO_OH", "x": 12, "y": 4, "elevation": 0, diff --git a/data/maps/NewMauville_Inside/map.json b/data/maps/NewMauville_Inside/map.json index 1c821be07..e58155a48 100755 --- a/data/maps/NewMauville_Inside/map.json +++ b/data/maps/NewMauville_Inside/map.json @@ -119,11 +119,11 @@ "flag": "FLAG_HIDE_NEW_MAUVILLE_VOLTORB_3" }, { - "graphics_id": "OBJ_EVENT_GFX_ANABEL", - "x": 31, - "y": 4, + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_RAIKOU", + "x": 37, + "y": 5, "elevation": 0, - "movement_type": "MOVEMENT_TYPE_NONE", + "movement_type": "MOVEMENT_TYPE_FACE_LEFT", "movement_range_x": 0, "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", diff --git a/data/maps/OldaleTown/map.json b/data/maps/OldaleTown/map.json index 302ef5e9d..10e78f07d 100755 --- a/data/maps/OldaleTown/map.json +++ b/data/maps/OldaleTown/map.json @@ -81,6 +81,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "OldaleTown_EventScript_Rival", "flag": "FLAG_HIDE_OLDALE_TOWN_RIVAL" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 8, + "y": 16, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 16, + "y": 6, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/OldaleTown_House1/map.json b/data/maps/OldaleTown_House1/map.json index 8b8f92b9f..e39fac11e 100755 --- a/data/maps/OldaleTown_House1/map.json +++ b/data/maps/OldaleTown_House1/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_2", @@ -44,6 +44,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/OldaleTown_House2/map.json b/data/maps/OldaleTown_House2/map.json index de6bb9ac6..87bb81a5b 100755 --- a/data/maps/OldaleTown_House2/map.json +++ b/data/maps/OldaleTown_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_F", @@ -57,6 +57,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/OldaleTown_PokemonCenter_1F/map.json b/data/maps/OldaleTown_PokemonCenter_1F/map.json index d3f72b849..bb198b520 100755 --- a/data/maps/OldaleTown_PokemonCenter_1F/map.json +++ b/data/maps/OldaleTown_PokemonCenter_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/OldaleTown_PokemonCenter_2F/map.json b/data/maps/OldaleTown_PokemonCenter_2F/map.json index 9fad68821..60b7c1935 100755 --- a/data/maps/OldaleTown_PokemonCenter_2F/map.json +++ b/data/maps/OldaleTown_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/PacifidlogTown/map.json b/data/maps/PacifidlogTown/map.json index d81bd3132..e6a1d06c7 100755 --- a/data/maps/PacifidlogTown/map.json +++ b/data/maps/PacifidlogTown/map.json @@ -63,6 +63,19 @@ "trainer_sight_or_berry_tree_id": "0", "script": "PacifidlogTown_EventScript_NinjaBoy", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 10, + "y": 15, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/PacifidlogTown_House1/map.json b/data/maps/PacifidlogTown_House1/map.json index 0eb98e8d5..7ab8e2722 100755 --- a/data/maps/PacifidlogTown_House1/map.json +++ b/data/maps/PacifidlogTown_House1/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_5", @@ -57,6 +57,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/PacifidlogTown_House2/map.json b/data/maps/PacifidlogTown_House2/map.json index 5f8d260c1..a999c3dff 100755 --- a/data/maps/PacifidlogTown_House2/map.json +++ b/data/maps/PacifidlogTown_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN", @@ -28,7 +28,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_AZURILL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_AZURILL", "x": 8, "y": 6, "elevation": 3, @@ -41,7 +41,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_AZURILL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_AZURILL", "x": 1, "y": 7, "elevation": 3, @@ -70,6 +70,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/PacifidlogTown_House4/map.json b/data/maps/PacifidlogTown_House4/map.json index 0dc3774d7..2e8d578d0 100755 --- a/data/maps/PacifidlogTown_House4/map.json +++ b/data/maps/PacifidlogTown_House4/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_2", @@ -70,6 +70,10 @@ "dest_warp_id": "4" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/PacifidlogTown_PokemonCenter_1F/map.json b/data/maps/PacifidlogTown_PokemonCenter_1F/map.json index f98fdb3dd..626fea1d6 100755 --- a/data/maps/PacifidlogTown_PokemonCenter_1F/map.json +++ b/data/maps/PacifidlogTown_PokemonCenter_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -103,6 +103,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/PacifidlogTown_PokemonCenter_2F/map.json b/data/maps/PacifidlogTown_PokemonCenter_2F/map.json index 3741feb83..27d2589a4 100755 --- a/data/maps/PacifidlogTown_PokemonCenter_2F/map.json +++ b/data/maps/PacifidlogTown_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/PetalburgCity/map.json b/data/maps/PetalburgCity/map.json index d653e46ae..2d1cd21f0 100755 --- a/data/maps/PetalburgCity/map.json +++ b/data/maps/PetalburgCity/map.json @@ -141,6 +141,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "0x0", "flag": "FLAG_HIDE_PETALBURG_CITY_SCOTT" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 22, + "y": 16, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 27, + "y": 12, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/PetalburgCity_House1/map.json b/data/maps/PetalburgCity_House1/map.json index 2b1e96648..5e97c9734 100755 --- a/data/maps/PetalburgCity_House1/map.json +++ b/data/maps/PetalburgCity_House1/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_GIRL_1", @@ -57,6 +57,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/PetalburgCity_House2/map.json b/data/maps/PetalburgCity_House2/map.json index 74d128759..ace33822c 100755 --- a/data/maps/PetalburgCity_House2/map.json +++ b/data/maps/PetalburgCity_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_F", @@ -57,6 +57,10 @@ "dest_warp_id": "4" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/PetalburgCity_PokemonCenter_2F/map.json b/data/maps/PetalburgCity_PokemonCenter_2F/map.json index b2078e495..0fadc587d 100755 --- a/data/maps/PetalburgCity_PokemonCenter_2F/map.json +++ b/data/maps/PetalburgCity_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/PetalburgCity_WallysHouse/map.json b/data/maps/PetalburgCity_WallysHouse/map.json index f2fd03e7f..573a3064a 100755 --- a/data/maps/PetalburgCity_WallysHouse/map.json +++ b/data/maps/PetalburgCity_WallysHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_M", @@ -57,6 +57,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/PetalburgWoods/map.json b/data/maps/PetalburgWoods/map.json index 15e6030df..fa4076b69 100755 --- a/data/maps/PetalburgWoods/map.json +++ b/data/maps/PetalburgWoods/map.json @@ -223,7 +223,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ANABEL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_CELEBI", "x": 43, "y": 9, "elevation": 0, diff --git a/data/maps/Route101/map.json b/data/maps/Route101/map.json index 6ede7186c..5a0c5bb1e 100755 --- a/data/maps/Route101/map.json +++ b/data/maps/Route101/map.json @@ -102,6 +102,19 @@ "trainer_sight_or_berry_tree_id": "0", "script": "Route101_EventScript_Boy", "flag": "FLAG_HIDE_ROUTE_101_BOY" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 8, + "y": -4, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/Route104_MrBrineysHouse/map.json b/data/maps/Route104_MrBrineysHouse/map.json index 642496529..35ab54e29 100755 --- a/data/maps/Route104_MrBrineysHouse/map.json +++ b/data/maps/Route104_MrBrineysHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_M", @@ -28,7 +28,7 @@ "flag": "FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_WINGULL", "x": 6, "y": 3, "elevation": 3, @@ -57,6 +57,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route109/map.json b/data/maps/Route109/map.json index 1d9feabb7..92b59de52 100755 --- a/data/maps/Route109/map.json +++ b/data/maps/Route109/map.json @@ -273,7 +273,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_2", + "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_1", "x": 32, "y": 6, "elevation": 3, diff --git a/data/maps/Route110_TrickHouseCorridor/map.json b/data/maps/Route110_TrickHouseCorridor/map.json index 70bf78258..702649eeb 100755 --- a/data/maps/Route110_TrickHouseCorridor/map.json +++ b/data/maps/Route110_TrickHouseCorridor/map.json @@ -12,8 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 13, @@ -44,6 +46,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route110_TrickHouseEnd/map.json b/data/maps/Route110_TrickHouseEnd/map.json index 90d228549..34ae62be2 100755 --- a/data/maps/Route110_TrickHouseEnd/map.json +++ b/data/maps/Route110_TrickHouseEnd/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_1", diff --git a/data/maps/Route110_TrickHouseEntrance/map.json b/data/maps/Route110_TrickHouseEntrance/map.json index 5584a534c..df6ce344a 100755 --- a/data/maps/Route110_TrickHouseEntrance/map.json +++ b/data/maps/Route110_TrickHouseEntrance/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_1", diff --git a/data/maps/Route111_OldLadysRestStop/map.json b/data/maps/Route111_OldLadysRestStop/map.json index b72b7e8e2..84a60537f 100755 --- a/data/maps/Route111_OldLadysRestStop/map.json +++ b/data/maps/Route111_OldLadysRestStop/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_F", @@ -44,6 +44,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route111_WinstrateFamilysHouse/map.json b/data/maps/Route111_WinstrateFamilysHouse/map.json index 5e6f9d75e..0b5cefd0a 100755 --- a/data/maps/Route111_WinstrateFamilysHouse/map.json +++ b/data/maps/Route111_WinstrateFamilysHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_LASS", @@ -83,6 +83,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route112_CableCarStation/map.json b/data/maps/Route112_CableCarStation/map.json index 09401d83b..b2927977d 100755 --- a/data/maps/Route112_CableCarStation/map.json +++ b/data/maps/Route112_CableCarStation/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BEAUTY", @@ -57,6 +57,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route113_GlassWorkshop/map.json b/data/maps/Route113_GlassWorkshop/map.json index 61d470b46..f3a24f8c0 100755 --- a/data/maps/Route113_GlassWorkshop/map.json +++ b/data/maps/Route113_GlassWorkshop/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_1", @@ -57,6 +57,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route114_FossilManiacsHouse/map.json b/data/maps/Route114_FossilManiacsHouse/map.json index a4b00fac4..fa4cde8fe 100755 --- a/data/maps/Route114_FossilManiacsHouse/map.json +++ b/data/maps/Route114_FossilManiacsHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NINJA_BOY", @@ -51,7 +51,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/Route114_FossilManiacsTunnel/map.json b/data/maps/Route114_FossilManiacsTunnel/map.json index 034545e6b..091254de3 100755 --- a/data/maps/Route114_FossilManiacsTunnel/map.json +++ b/data/maps/Route114_FossilManiacsTunnel/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MANIAC", @@ -71,5 +71,7 @@ "script": "Route114_FossilManiacsTunnel_EventScript_ManiacMentionCaveIn" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/Route114_LanettesHouse/map.json b/data/maps/Route114_LanettesHouse/map.json index c56bf3146..6a5085045 100755 --- a/data/maps/Route114_LanettesHouse/map.json +++ b/data/maps/Route114_LanettesHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_2", @@ -44,7 +44,9 @@ "dest_warp_id": "2" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/Route116_TunnelersRestHouse/map.json b/data/maps/Route116_TunnelersRestHouse/map.json index ad00aafa7..3f8e1bec6 100755 --- a/data/maps/Route116_TunnelersRestHouse/map.json +++ b/data/maps/Route116_TunnelersRestHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_M", @@ -70,6 +70,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route117/map.json b/data/maps/Route117/map.json index fd6d62a2a..2f99ce086 100755 --- a/data/maps/Route117/map.json +++ b/data/maps/Route117/map.json @@ -65,7 +65,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_2", + "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_1", "x": 33, "y": 3, "elevation": 3, @@ -91,7 +91,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_AZUMARILL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_AZUMARILL", "x": 42, "y": 2, "elevation": 3, @@ -104,9 +104,9 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_PIKACHU", - "x": 49, - "y": 2, + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_PIKACHU", + "x": 51, + "y": 1, "elevation": 3, "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", "movement_range_x": 0, diff --git a/data/maps/Route117/scripts.inc b/data/maps/Route117/scripts.inc index 283cf1cb7..93d0d2a17 100755 --- a/data/maps/Route117/scripts.inc +++ b/data/maps/Route117/scripts.inc @@ -1,15 +1,63 @@ .set LOCALID_DAYCARE_MAN, 3 +.set LOCALID_DAYCARE_MON_0, 25 +.set LOCALID_DAYCARE_MON_1, 26 Route117_MapScripts:: map_script MAP_SCRIPT_ON_TRANSITION, Route117_OnTransition map_script MAP_SCRIPT_ON_RESUME, SetTimeEncounters .byte 0 +.macro getdaycaregfx var0:req var1:req var2:req var3:req +callfunc ScrFunc_getdaycaregfx +.2byte \var0 +.2byte \var1 +.2byte \var2 +.2byte \var3 +.endm + Route117_OnTransition: callnative SetTimeBasedEncounters call Route117_EventScript_TryMoveDayCareMan + @ set flags for OW daycare mons + setflag FLAG_TEMP_1 + setflag FLAG_TEMP_2 + getdaycaregfx VAR_OBJ_GFX_ID_0, VAR_OBJ_GFX_ID_1, VAR_TEMP_0, VAR_TEMP_1 + switch VAR_RESULT + case 2, Route117_EventScript_ShowDaycareMon1 + case 1, Route117_EventScript_ShowDaycareMon0 end +Route117_EventScript_ShowDaycareMon1: + @ set pokemon movement type based on compatibility + special SetDaycareCompatibilityString + @ 0: + call_if_eq VAR_RESULT, PARENTS_INCOMPATIBLE, Route117_EventScript_DaycareMonIncompatible + @ 20: do nothing if low compatibility + @ call_if_eq VAR_RESULT, PARENTS_LOW_COMPATIBILITY, Route117_EventScript_DaycareMonLowCompatibility + @ 50: + call_if_eq VAR_RESULT, PARENTS_MED_COMPATIBILITY, Route117_EventScript_DaycareMonMedCompatibility + @ 70: + call_if_eq VAR_RESULT, PARENTS_MAX_COMPATIBILITY, Route117_EventScript_DaycareMonMaxCompatibility + clearflag FLAG_TEMP_2 +Route117_EventScript_ShowDaycareMon0: + clearflag FLAG_TEMP_1 + end + +Route117_EventScript_DaycareMonIncompatible: @ mons never face each other + setobjectmovementtype LOCALID_DAYCARE_MON_0, MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT + setobjectmovementtype LOCALID_DAYCARE_MON_1, MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT + return + +Route117_EventScript_DaycareMonMedCompatibility: @ down and towards each other + setobjectmovementtype LOCALID_DAYCARE_MON_0, MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT + setobjectmovementtype LOCALID_DAYCARE_MON_1, MOVEMENT_TYPE_FACE_DOWN_AND_LEFT + return + +Route117_EventScript_DaycareMonMaxCompatibility: @ facing; walk in place + setobjectmovementtype LOCALID_DAYCARE_MON_0, MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT + setobjectmovementtype LOCALID_DAYCARE_MON_1, MOVEMENT_TYPE_WALK_IN_PLACE_LEFT + return + Route117_EventScript_TryMoveDayCareMan:: goto_if_unset FLAG_PENDING_DAYCARE_EGG, Route117_EventScript_StopMoveDayCareMan setobjectxyperm LOCALID_DAYCARE_MAN, 47, 6 @@ -207,4 +255,3 @@ Route117_Text_RouteSignMauville: Route117_Text_DayCareSign: .string "POKéMON DAY CARE\n" .string "“Let us raise your POKéMON.”$" - diff --git a/data/maps/Route117_PokemonDayCare/map.json b/data/maps/Route117_PokemonDayCare/map.json index 128c9f6e7..0686f0920 100755 --- a/data/maps/Route117_PokemonDayCare/map.json +++ b/data/maps/Route117_PokemonDayCare/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN", @@ -44,6 +44,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route119_House/map.json b/data/maps/Route119_House/map.json index dc48897d1..0ae3240ad 100755 --- a/data/maps/Route119_House/map.json +++ b/data/maps/Route119_House/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_4", @@ -28,7 +28,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_WINGULL", "x": 1, "y": 6, "elevation": 3, @@ -41,7 +41,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_WINGULL", "x": 0, "y": 4, "elevation": 3, @@ -54,7 +54,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_WINGULL", "x": 2, "y": 2, "elevation": 3, @@ -67,7 +67,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_WINGULL", "x": 8, "y": 5, "elevation": 3, @@ -80,7 +80,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_WINGULL", "x": 6, "y": 6, "elevation": 3, @@ -93,7 +93,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_WINGULL", "x": 5, "y": 3, "elevation": 3, @@ -122,6 +122,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route119_WeatherInstitute_1F/map.json b/data/maps/Route119_WeatherInstitute_1F/map.json index 02f2ffe37..36328a94f 100755 --- a/data/maps/Route119_WeatherInstitute_1F/map.json +++ b/data/maps/Route119_WeatherInstitute_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M", @@ -103,7 +103,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/Route119_WeatherInstitute_2F/map.json b/data/maps/Route119_WeatherInstitute_2F/map.json index 935ea48dd..7ed51cbf2 100755 --- a/data/maps/Route119_WeatherInstitute_2F/map.json +++ b/data/maps/Route119_WeatherInstitute_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M", @@ -128,6 +128,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/Route123/map.json b/data/maps/Route123/map.json index 11798b95d..ca0d757e3 100755 --- a/data/maps/Route123/map.json +++ b/data/maps/Route123/map.json @@ -559,7 +559,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER", + "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER", "x": 14, "y": 12, "elevation": 3, diff --git a/data/maps/Route123_BerryMastersHouse/map.json b/data/maps/Route123_BerryMastersHouse/map.json index 80603aef5..7e0ac4370 100755 --- a/data/maps/Route123_BerryMastersHouse/map.json +++ b/data/maps/Route123_BerryMastersHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_M", @@ -57,6 +57,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity/map.json b/data/maps/RustboroCity/map.json index 3d77404ee..02dd83fe4 100755 --- a/data/maps/RustboroCity/map.json +++ b/data/maps/RustboroCity/map.json @@ -237,6 +237,253 @@ "trainer_sight_or_berry_tree_id": "0", "script": "RustboroCity_EventScript_Boy1", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 19, + "y": 37, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 22, + "y": 37, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 19, + "y": 30, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 22, + "y": 30, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 19, + "y": 23, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 22, + "y": 23, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 22, + "y": 44, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 19, + "y": 44, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 29, + "y": 48, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 14, + "y": 19, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 15, + "y": 17, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 9, + "y": 19, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 8, + "y": 17, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 19, + "y": 15, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 22, + "y": 15, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 14, + "y": 54, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 17, + "y": 54, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 18, + "y": 38, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 18, + "y": 45, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/RustboroCity_CuttersHouse/map.json b/data/maps/RustboroCity_CuttersHouse/map.json index 16394a68b..946f5d249 100755 --- a/data/maps/RustboroCity_CuttersHouse/map.json +++ b/data/maps/RustboroCity_CuttersHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_M", @@ -57,6 +57,10 @@ "dest_warp_id": "8" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_DevonCorp_1F/map.json b/data/maps/RustboroCity_DevonCorp_1F/map.json index 64a8b917a..9acbca6f4 100755 --- a/data/maps/RustboroCity_DevonCorp_1F/map.json +++ b/data/maps/RustboroCity_DevonCorp_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_DEVON_EMPLOYEE", @@ -77,7 +77,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/RustboroCity_Flat1_1F/map.json b/data/maps/RustboroCity_Flat1_1F/map.json index 1ed8aafd1..1fde12360 100755 --- a/data/maps/RustboroCity_Flat1_1F/map.json +++ b/data/maps/RustboroCity_Flat1_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_3", @@ -64,6 +64,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_Flat1_2F/map.json b/data/maps/RustboroCity_Flat1_2F/map.json index bb8767062..36104fda0 100755 --- a/data/maps/RustboroCity_Flat1_2F/map.json +++ b/data/maps/RustboroCity_Flat1_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_F", @@ -128,6 +128,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_Flat2_1F/map.json b/data/maps/RustboroCity_Flat2_1F/map.json index 21c1d5d7f..f5018dab8 100755 --- a/data/maps/RustboroCity_Flat2_1F/map.json +++ b/data/maps/RustboroCity_Flat2_1F/map.json @@ -12,10 +12,10 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_SKITTY", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_SKITTY", "x": 11, "y": 4, "elevation": 3, @@ -64,6 +64,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_Flat2_2F/map.json b/data/maps/RustboroCity_Flat2_2F/map.json index 8494c5232..22e353793 100755 --- a/data/maps/RustboroCity_Flat2_2F/map.json +++ b/data/maps/RustboroCity_Flat2_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_OLD_MAN", @@ -57,6 +57,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_Flat2_3F/map.json b/data/maps/RustboroCity_Flat2_3F/map.json index d7f47d6a0..826b495db 100755 --- a/data/maps/RustboroCity_Flat2_3F/map.json +++ b/data/maps/RustboroCity_Flat2_3F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_DEVON_EMPLOYEE", @@ -50,6 +50,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_Gym/map.json b/data/maps/RustboroCity_Gym/map.json index dc7a34be2..bab53aa50 100755 --- a/data/maps/RustboroCity_Gym/map.json +++ b/data/maps/RustboroCity_Gym/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_GYM", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_ROXANNE", @@ -96,7 +96,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/RustboroCity_House1/map.json b/data/maps/RustboroCity_House1/map.json index ad8e9d7ff..7b35c24e7 100755 --- a/data/maps/RustboroCity_House1/map.json +++ b/data/maps/RustboroCity_House1/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_CAMPER", @@ -57,6 +57,10 @@ "dest_warp_id": "7" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_House2/map.json b/data/maps/RustboroCity_House2/map.json index 398c3ca2a..ed893d820 100755 --- a/data/maps/RustboroCity_House2/map.json +++ b/data/maps/RustboroCity_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_F", @@ -57,6 +57,10 @@ "dest_warp_id": "9" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_House3/map.json b/data/maps/RustboroCity_House3/map.json index 94a9f1ba9..84acd23b6 100755 --- a/data/maps/RustboroCity_House3/map.json +++ b/data/maps/RustboroCity_House3/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_OLD_MAN", @@ -41,7 +41,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_PIKACHU", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_PIKACHU", "x": 4, "y": 4, "elevation": 3, @@ -70,6 +70,10 @@ "dest_warp_id": "11" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/RustboroCity_PokemonSchool/map.json b/data/maps/RustboroCity_PokemonSchool/map.json index 5dfab29f7..8a9e504ef 100755 --- a/data/maps/RustboroCity_PokemonSchool/map.json +++ b/data/maps/RustboroCity_PokemonSchool/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_GAMEBOY_KID", @@ -122,7 +122,9 @@ "dest_warp_id": "4" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/RusturfTunnel/map.json b/data/maps/RusturfTunnel/map.json index fbc5a48a2..f2ece22f0 100755 --- a/data/maps/RusturfTunnel/map.json +++ b/data/maps/RusturfTunnel/map.json @@ -93,7 +93,7 @@ "flag": "FLAG_HIDE_RUSTURF_TUNNEL_AQUA_GRUNT" }, { - "graphics_id": "OBJ_EVENT_GFX_WINGULL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_WINGULL", "x": 14, "y": 4, "elevation": 3, diff --git a/data/maps/RusturfTunnel/scripts.inc b/data/maps/RusturfTunnel/scripts.inc index 87294419e..ba287e817 100755 --- a/data/maps/RusturfTunnel/scripts.inc +++ b/data/maps/RusturfTunnel/scripts.inc @@ -276,6 +276,7 @@ RusturfTunnel_EventScript_TunnelBlockagePos3:: RusturfTunnel_EventScript_AquaGruntBackUp:: lockall + setflag FLAG_SAFE_FOLLOWER_MOVEMENT msgbox RusturfTunnel_Text_ComeAndGetSome, MSGBOX_DEFAULT closemessage applymovement LOCALID_GRUNT, RusturfTunnel_Movement_GruntAndPeekoBackUp @@ -531,4 +532,3 @@ RusturfTunnel_Text_MikePostBattle: .string "They halted development here to\n" .string "protect POKéMON, right?\l" .string "There's a feel-good story!$" - diff --git a/data/maps/ScorchedSlab/map.json b/data/maps/ScorchedSlab/map.json index 832ebbb70..72656dbee 100755 --- a/data/maps/ScorchedSlab/map.json +++ b/data/maps/ScorchedSlab/map.json @@ -28,11 +28,11 @@ "flag": "FLAG_ITEM_SCORCHED_SLAB_TM11" }, { - "graphics_id": "OBJ_EVENT_GFX_ANABEL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_ZAPDOS", "x": 7, "y": 3, "elevation": 0, - "movement_type": "MOVEMENT_TYPE_NONE", + "movement_type": "MOVEMENT_TYPE_WALK_IN_PLACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", diff --git a/data/maps/SeafloorCavern_Room4/map.json b/data/maps/SeafloorCavern_Room4/map.json index ef3733bb7..c0cc76c92 100755 --- a/data/maps/SeafloorCavern_Room4/map.json +++ b/data/maps/SeafloorCavern_Room4/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_AQUA_MEMBER_M", @@ -71,6 +71,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SeafloorCavern_Room5/map.json b/data/maps/SeafloorCavern_Room5/map.json index aeb9f99d4..263dfb12a 100755 --- a/data/maps/SeafloorCavern_Room5/map.json +++ b/data/maps/SeafloorCavern_Room5/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", @@ -116,6 +116,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SeafloorCavern_Room6/map.json b/data/maps/SeafloorCavern_Room6/map.json index 8e1df23a8..2c045b65c 100755 --- a/data/maps/SeafloorCavern_Room6/map.json +++ b/data/maps/SeafloorCavern_Room6/map.json @@ -12,8 +12,10 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 11, @@ -37,6 +39,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SeafloorCavern_Room7/map.json b/data/maps/SeafloorCavern_Room7/map.json index 1911fefde..ce3ff1b1e 100755 --- a/data/maps/SeafloorCavern_Room7/map.json +++ b/data/maps/SeafloorCavern_Room7/map.json @@ -12,8 +12,10 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 3, @@ -30,6 +32,10 @@ "dest_warp_id": "1" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SeafloorCavern_Room8/map.json b/data/maps/SeafloorCavern_Room8/map.json index 20c796f9d..18dd9b9ed 100755 --- a/data/maps/SeafloorCavern_Room8/map.json +++ b/data/maps/SeafloorCavern_Room8/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER", @@ -187,6 +187,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SeafloorCavern_Room9/map.json b/data/maps/SeafloorCavern_Room9/map.json index f191941a2..a0c78f2dc 100755 --- a/data/maps/SeafloorCavern_Room9/map.json +++ b/data/maps/SeafloorCavern_Room9/map.json @@ -12,10 +12,10 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_KYOGRE_FRONT", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_KYOGRE", "x": 17, "y": 38, "elevation": 3, @@ -93,7 +93,7 @@ "flag": "FLAG_ITEM_SEAFLOOR_CAVERN_ROOM_9_TM26" }, { - "graphics_id": "OBJ_EVENT_GFX_KYOGRE_ASLEEP", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_KYOGRE", "x": 17, "y": 38, "elevation": 3, @@ -126,5 +126,7 @@ "script": "SeafloorCavern_Room9_EventScript_ArchieAwakenKyogre" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/SecretBase_RedCave1/map.json b/data/maps/SecretBase_RedCave1/map.json index d3e1fd915..076ec0c6e 100755 --- a/data/maps/SecretBase_RedCave1/map.json +++ b/data/maps/SecretBase_RedCave1/map.json @@ -1,7 +1,6 @@ { "id": "MAP_SECRET_BASE_RED_CAVE1", "name": "SecretBase_RedCave1", - "shared_scripts_map": "SecretBase", "layout": "LAYOUT_SECRET_BASE_RED_CAVE1", "music": "MUS_FORTREE", "region_map_section": "MAPSEC_SECRET_BASE", @@ -13,7 +12,7 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_FRONTIER", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_VAR_F", @@ -220,6 +219,11 @@ "dest_warp_id": "WARP_ID_SECRET_BASE" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ], + "shared_scripts_map": "SecretBase" } diff --git a/data/maps/ShoalCave_LowTideIceRoom/map.json b/data/maps/ShoalCave_LowTideIceRoom/map.json index 413d231d5..d121fa19a 100755 --- a/data/maps/ShoalCave_LowTideIceRoom/map.json +++ b/data/maps/ShoalCave_LowTideIceRoom/map.json @@ -41,7 +41,7 @@ "flag": "FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_NEVER_MELT_ICE" }, { - "graphics_id": "OBJ_EVENT_GFX_ANABEL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_SUICUNE", "x": 8, "y": 8, "elevation": 0, diff --git a/data/maps/SlateportCity/map.json b/data/maps/SlateportCity/map.json index 972b51447..2c214041d 100755 --- a/data/maps/SlateportCity/map.json +++ b/data/maps/SlateportCity/map.json @@ -484,6 +484,71 @@ "trainer_sight_or_berry_tree_id": "0", "script": "0x0", "flag": "FLAG_HIDE_SLATEPORT_CITY_SCOTT" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 21, + "y": 19, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 15, + "y": 26, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 32, + "y": 52, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 33, + "y": 52, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 10, + "y": 10, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/SlateportCity_BattleTentBattleRoom/map.json b/data/maps/SlateportCity_BattleTentBattleRoom/map.json index 27cce84b4..69d0ca65b 100755 --- a/data/maps/SlateportCity_BattleTentBattleRoom/map.json +++ b/data/maps/SlateportCity_BattleTentBattleRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1", @@ -54,7 +54,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc index 53514bb5e..fd6567cb6 100755 --- a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc +++ b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc @@ -48,6 +48,7 @@ SlateportCity_BattleTentBattleRoom_EventScript_EnterRoom:: factory_setopponentgfx setobjectxyperm LOCALID_OPPONENT, 5, 1 removeobject LOCALID_OPPONENT + delay 1 addobject LOCALID_OPPONENT applymovement LOCALID_OPPONENT, SlateportCity_BattleTentBattleRoom_Movement_OpponentEnter waitmovement 0 @@ -102,4 +103,3 @@ SlateportCity_BattleTentBattleRoom_Movement_OpponentEnter: walk_down walk_in_place_faster_left step_end - diff --git a/data/maps/SlateportCity_BattleTentCorridor/map.json b/data/maps/SlateportCity_BattleTentCorridor/map.json index c9cd4b1a7..e3dc2a684 100755 --- a/data/maps/SlateportCity_BattleTentCorridor/map.json +++ b/data/maps/SlateportCity_BattleTentCorridor/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1", @@ -28,7 +28,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SlateportCity_BattleTentLobby/map.json b/data/maps/SlateportCity_BattleTentLobby/map.json index 6a599df8f..aa0a2463b 100755 --- a/data/maps/SlateportCity_BattleTentLobby/map.json +++ b/data/maps/SlateportCity_BattleTentLobby/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1", @@ -96,7 +96,9 @@ "dest_warp_id": "3" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/SlateportCity_Harbor/map.json b/data/maps/SlateportCity_Harbor/map.json index 05fe77c61..c2490e4a5 100755 --- a/data/maps/SlateportCity_Harbor/map.json +++ b/data/maps/SlateportCity_Harbor/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BEAUTY", @@ -187,5 +187,7 @@ "script": "SlateportCity_Harbor_EventScript_AquaEscapeTrigger3" } ], - "bg_events": [] + "bg_events": [ + + ] } diff --git a/data/maps/SlateportCity_House/map.json b/data/maps/SlateportCity_House/map.json index 354c39441..063c206d1 100755 --- a/data/maps/SlateportCity_House/map.json +++ b/data/maps/SlateportCity_House/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_POKEFAN_M", @@ -57,6 +57,10 @@ "dest_warp_id": "10" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SlateportCity_NameRatersHouse/map.json b/data/maps/SlateportCity_NameRatersHouse/map.json index 5b93717a9..8466a3af5 100755 --- a/data/maps/SlateportCity_NameRatersHouse/map.json +++ b/data/maps/SlateportCity_NameRatersHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_M", @@ -44,6 +44,10 @@ "dest_warp_id": "6" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SlateportCity_OceanicMuseum_1F/map.json b/data/maps/SlateportCity_OceanicMuseum_1F/map.json index fd3468a52..7bdf84064 100755 --- a/data/maps/SlateportCity_OceanicMuseum_1F/map.json +++ b/data/maps/SlateportCity_OceanicMuseum_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BEAUTY", diff --git a/data/maps/SlateportCity_OceanicMuseum_2F/map.json b/data/maps/SlateportCity_OceanicMuseum_2F/map.json index bab9c1ea5..d4b2990e6 100755 --- a/data/maps/SlateportCity_OceanicMuseum_2F/map.json +++ b/data/maps/SlateportCity_OceanicMuseum_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1", @@ -115,7 +115,9 @@ "dest_warp_id": "2" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc index 59131fd7e..cf3767d0e 100755 --- a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc +++ b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc @@ -79,6 +79,7 @@ SlateportCity_OceanicMuseum_2F_EventScript_CaptStern:: playfanfare MUS_HEAL waitfanfare special HealPlayerParty + callnative UpdateFollowingPokemon removeobject LOCALID_CAPT_STERN setflag FLAG_HIDE_ROUTE_110_TEAM_AQUA call_if_eq VAR_REGISTER_BIRCH_STATE, 0, SlateportCity_OceanicMuseum_2F_EventScript_ReadyRegisterBirch @@ -437,4 +438,3 @@ SlateportCity_OceanicMuseum_2F_Text_SSAnneReplica: .string "“S.S. ANNE\p" .string "“A replica of the luxury liner that\n" .string "circles the globe.”$" - diff --git a/data/maps/SlateportCity_PokemonCenter_2F/map.json b/data/maps/SlateportCity_PokemonCenter_2F/map.json index 02e122d0e..fed800a1c 100755 --- a/data/maps/SlateportCity_PokemonCenter_2F/map.json +++ b/data/maps/SlateportCity_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SlateportCity_PokemonFanClub/map.json b/data/maps/SlateportCity_PokemonFanClub/map.json index 04e9b7add..127a305fd 100755 --- a/data/maps/SlateportCity_PokemonFanClub/map.json +++ b/data/maps/SlateportCity_PokemonFanClub/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_1", @@ -80,7 +80,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_2", + "graphics_id": "OBJ_EVENT_GFX_ZIGZAGOON_1", "x": 3, "y": 9, "elevation": 3, @@ -93,7 +93,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_SKITTY", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_SKITTY", "x": 8, "y": 3, "elevation": 3, @@ -106,7 +106,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_AZUMARILL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_AZUMARILL", "x": 10, "y": 8, "elevation": 3, @@ -148,6 +148,10 @@ "dest_warp_id": "4" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SlateportCity_SternsShipyard_2F/map.json b/data/maps/SlateportCity_SternsShipyard_2F/map.json index 6dad88b9e..a3a562d3e 100755 --- a/data/maps/SlateportCity_SternsShipyard_2F/map.json +++ b/data/maps/SlateportCity_SternsShipyard_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1", @@ -63,6 +63,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity/map.json b/data/maps/SootopolisCity/map.json index bc7655b14..3d115ea40 100755 --- a/data/maps/SootopolisCity/map.json +++ b/data/maps/SootopolisCity/map.json @@ -247,6 +247,32 @@ "trainer_sight_or_berry_tree_id": "0", "script": "SootopolisCity_EventScript_Wallace", "flag": "FLAG_HIDE_SOOTOPOLIS_CITY_WALLACE" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 45, + "y": 31, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 19, + "y": 29, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/SootopolisCity/scripts.inc b/data/maps/SootopolisCity/scripts.inc index 69f74880e..af6f68555 100755 --- a/data/maps/SootopolisCity/scripts.inc +++ b/data/maps/SootopolisCity/scripts.inc @@ -495,6 +495,7 @@ SootopolisCity_EventScript_RayquazaSceneFromPokeCenter:: removeobject LOCALID_GROUDON removeobject LOCALID_KYOGRE addobject LOCALID_RAYQUAZA + hideobjectat LOCALID_RAYQUAZA, MAP_SOOTOPOLIS_CITY setvar VAR_0x8004, TRUE special Script_DoRayquazaScene waitstate diff --git a/data/maps/SootopolisCity_Gym_1F/map.json b/data/maps/SootopolisCity_Gym_1F/map.json index 869bd4fc4..bfe7f63d2 100755 --- a/data/maps/SootopolisCity_Gym_1F/map.json +++ b/data/maps/SootopolisCity_Gym_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_GYM", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_JUAN", @@ -64,7 +64,9 @@ "dest_warp_id": "0" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/SootopolisCity_Gym_B1F/map.json b/data/maps/SootopolisCity_Gym_B1F/map.json index 2dcd0b6e2..df1cba6d6 100755 --- a/data/maps/SootopolisCity_Gym_B1F/map.json +++ b/data/maps/SootopolisCity_Gym_B1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_GYM", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_LASS", @@ -154,6 +154,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity_House1/map.json b/data/maps/SootopolisCity_House1/map.json index b7c6af571..dbedf537f 100755 --- a/data/maps/SootopolisCity_House1/map.json +++ b/data/maps/SootopolisCity_House1/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_BLACK_BELT", @@ -57,6 +57,10 @@ "dest_warp_id": "4" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity_House2/map.json b/data/maps/SootopolisCity_House2/map.json index 3ad5c4fec..96b75bec6 100755 --- a/data/maps/SootopolisCity_House2/map.json +++ b/data/maps/SootopolisCity_House2/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_F", @@ -44,6 +44,10 @@ "dest_warp_id": "5" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity_House3/map.json b/data/maps/SootopolisCity_House3/map.json index 984e31153..0aefd283c 100755 --- a/data/maps/SootopolisCity_House3/map.json +++ b/data/maps/SootopolisCity_House3/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_4", @@ -57,6 +57,10 @@ "dest_warp_id": "6" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity_House4/map.json b/data/maps/SootopolisCity_House4/map.json index 66008482f..054e0d5ea 100755 --- a/data/maps/SootopolisCity_House4/map.json +++ b/data/maps/SootopolisCity_House4/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MAN_1", @@ -41,7 +41,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_AZUMARILL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_AZUMARILL", "x": 2, "y": 3, "elevation": 3, @@ -70,6 +70,10 @@ "dest_warp_id": "7" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity_House5/map.json b/data/maps/SootopolisCity_House5/map.json index 3a06c9b63..36e8d4a90 100755 --- a/data/maps/SootopolisCity_House5/map.json +++ b/data/maps/SootopolisCity_House5/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_MANIAC", @@ -57,6 +57,10 @@ "dest_warp_id": "8" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity_House6/map.json b/data/maps/SootopolisCity_House6/map.json index 731b01fca..de97fa4dc 100755 --- a/data/maps/SootopolisCity_House6/map.json +++ b/data/maps/SootopolisCity_House6/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_WOMAN_2", @@ -44,6 +44,10 @@ "dest_warp_id": "9" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity_House7/map.json b/data/maps/SootopolisCity_House7/map.json index 628504864..8e956a8e8 100755 --- a/data/maps/SootopolisCity_House7/map.json +++ b/data/maps/SootopolisCity_House7/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_OLD_MAN", @@ -57,6 +57,10 @@ "dest_warp_id": "10" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity_LotadAndSeedotHouse/map.json b/data/maps/SootopolisCity_LotadAndSeedotHouse/map.json index 1b1f61260..896460b46 100755 --- a/data/maps/SootopolisCity_LotadAndSeedotHouse/map.json +++ b/data/maps/SootopolisCity_LotadAndSeedotHouse/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_FISHERMAN", @@ -57,7 +57,9 @@ "dest_warp_id": "11" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_B1F/map.json b/data/maps/SootopolisCity_MysteryEventsHouse_B1F/map.json index 184af4d4d..02421e85e 100755 --- a/data/maps/SootopolisCity_MysteryEventsHouse_B1F/map.json +++ b/data/maps/SootopolisCity_MysteryEventsHouse_B1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_VAR_0", @@ -37,6 +37,10 @@ "dest_warp_id": "2" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity_PokemonCenter_1F/map.json b/data/maps/SootopolisCity_PokemonCenter_1F/map.json index 0fa27599d..63b30df2e 100755 --- a/data/maps/SootopolisCity_PokemonCenter_1F/map.json +++ b/data/maps/SootopolisCity_PokemonCenter_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SootopolisCity_PokemonCenter_2F/map.json b/data/maps/SootopolisCity_PokemonCenter_2F/map.json index fb17ee9fb..877468b3e 100755 --- a/data/maps/SootopolisCity_PokemonCenter_2F/map.json +++ b/data/maps/SootopolisCity_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/SouthernIsland_Interior/map.json b/data/maps/SouthernIsland_Interior/map.json index 76212cbbd..593855098 100755 --- a/data/maps/SouthernIsland_Interior/map.json +++ b/data/maps/SouthernIsland_Interior/map.json @@ -12,7 +12,7 @@ "allow_running": true, "show_map_name": true, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_VAR_0", @@ -57,7 +57,9 @@ "dest_warp_id": "1" } ], - "coord_events": [], + "coord_events": [ + + ], "bg_events": [ { "type": "sign", diff --git a/data/maps/SouthernIsland_Interior/scripts.inc b/data/maps/SouthernIsland_Interior/scripts.inc index 4699db19a..603736d51 100755 --- a/data/maps/SouthernIsland_Interior/scripts.inc +++ b/data/maps/SouthernIsland_Interior/scripts.inc @@ -22,12 +22,12 @@ SouthernIsland_Interior_OnTransition: end SouthernIsland_Interior_EventScript_SetUpLatios:: - setvar VAR_OBJ_GFX_ID_1, OBJ_EVENT_GFX_LATIOS + setvar VAR_OBJ_GFX_ID_1, OBJ_EVENT_GFX_MON_BASE+SPECIES_LATIOS setvar VAR_TEMP_4, SPECIES_LATIOS return SouthernIsland_Interior_EventScript_SetUpLatias:: - setvar VAR_OBJ_GFX_ID_1, OBJ_EVENT_GFX_LATIAS + setvar VAR_OBJ_GFX_ID_1, OBJ_EVENT_GFX_MON_BASE+SPECIES_LATIAS setvar VAR_TEMP_4, SPECIES_LATIAS return diff --git a/data/maps/TerraCave_End/map.json b/data/maps/TerraCave_End/map.json index 287ee0dda..4dd7f1b3c 100755 --- a/data/maps/TerraCave_End/map.json +++ b/data/maps/TerraCave_End/map.json @@ -15,7 +15,7 @@ "connections": 0, "object_events": [ { - "graphics_id": "OBJ_EVENT_GFX_GROUDON_FRONT", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_GROUDON", "x": 17, "y": 22, "elevation": 1, diff --git a/data/maps/TrainerHill_2F/map.json b/data/maps/TrainerHill_2F/map.json index 7df034d83..a4278e7bb 100755 --- a/data/maps/TrainerHill_2F/map.json +++ b/data/maps/TrainerHill_2F/map.json @@ -12,8 +12,10 @@ "allow_running": true, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, - "object_events": [], + "connections": 0, + "object_events": [ + + ], "warp_events": [ { "x": 2, @@ -30,6 +32,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/TrainerHill_Entrance/scripts.inc b/data/maps/TrainerHill_Entrance/scripts.inc index b4f70c055..99fa9deaf 100755 --- a/data/maps/TrainerHill_Entrance/scripts.inc +++ b/data/maps/TrainerHill_Entrance/scripts.inc @@ -96,6 +96,7 @@ TrainerHill_Entrance_EventScript_PlayerExitChallenge:: waitmovement 0 setvar VAR_TRAINER_HILL_IS_ACTIVE, 0 special HealPlayerParty + callnative UpdateFollowingPokemon releaseall TrainerHill_Entrance_EventScript_EndExitChallenge:: end @@ -161,6 +162,7 @@ TrainerHill_Entrance_EventScript_ChooseChallenge:: setvar VAR_TRAINER_HILL_IS_ACTIVE, 1 setvar VAR_TEMP_5, 0 special HealPlayerParty + callnative UpdateFollowingPokemon msgbox TrainerHill_Entrance_Text_TimeProgessGetSetGo, MSGBOX_DEFAULT trainerhill_start releaseall diff --git a/data/maps/VerdanturfTown/map.json b/data/maps/VerdanturfTown/map.json index 2d1df93ed..04b92d8c5 100755 --- a/data/maps/VerdanturfTown/map.json +++ b/data/maps/VerdanturfTown/map.json @@ -76,6 +76,45 @@ "trainer_sight_or_berry_tree_id": "0", "script": "VerdanturfTown_EventScript_Camper", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 18, + "y": 3, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "1", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 14, + "y": 3, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "2", + "script": "NULL", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_LIGHT_SPRITE", + "x": 3, + "y": 5, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "NULL", + "flag": "0" } ], "warp_events": [ diff --git a/data/maps/VerdanturfTown_BattleTentBattleRoom/map.json b/data/maps/VerdanturfTown_BattleTentBattleRoom/map.json index 72eca1d95..13a2244d4 100755 --- a/data/maps/VerdanturfTown_BattleTentBattleRoom/map.json +++ b/data/maps/VerdanturfTown_BattleTentBattleRoom/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_VAR_1", @@ -54,7 +54,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/VerdanturfTown_BattleTentCorridor/map.json b/data/maps/VerdanturfTown_BattleTentCorridor/map.json index 2b875b900..4e5889f46 100755 --- a/data/maps/VerdanturfTown_BattleTentCorridor/map.json +++ b/data/maps/VerdanturfTown_BattleTentCorridor/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_EXPERT_M", @@ -28,7 +28,13 @@ "flag": "0" } ], - "warp_events": [], - "coord_events": [], - "bg_events": [] + "warp_events": [ + + ], + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/VerdanturfTown_FriendshipRatersHouse/map.json b/data/maps/VerdanturfTown_FriendshipRatersHouse/map.json index dcf7f5822..930e5a1bb 100755 --- a/data/maps/VerdanturfTown_FriendshipRatersHouse/map.json +++ b/data/maps/VerdanturfTown_FriendshipRatersHouse/map.json @@ -28,7 +28,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_PIKACHU", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_PIKACHU", "x": 4, "y": 4, "elevation": 3, diff --git a/data/maps/VerdanturfTown_PokemonCenter_1F/map.json b/data/maps/VerdanturfTown_PokemonCenter_1F/map.json index 20a144afb..8e9a4c555 100755 --- a/data/maps/VerdanturfTown_PokemonCenter_1F/map.json +++ b/data/maps/VerdanturfTown_PokemonCenter_1F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_NURSE", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/VerdanturfTown_PokemonCenter_2F/map.json b/data/maps/VerdanturfTown_PokemonCenter_2F/map.json index 9785cdbe0..caba912c0 100755 --- a/data/maps/VerdanturfTown_PokemonCenter_2F/map.json +++ b/data/maps/VerdanturfTown_PokemonCenter_2F/map.json @@ -12,7 +12,7 @@ "allow_running": false, "show_map_name": false, "battle_scene": "MAP_BATTLE_SCENE_NORMAL", - "connections": null, + "connections": 0, "object_events": [ { "graphics_id": "OBJ_EVENT_GFX_TEALA", @@ -90,6 +90,10 @@ "dest_warp_id": "0" } ], - "coord_events": [], - "bg_events": [] + "coord_events": [ + + ], + "bg_events": [ + + ] } diff --git a/data/maps/VictoryRoad_B2F/map.json b/data/maps/VictoryRoad_B2F/map.json index 88c3a380c..18a496e53 100755 --- a/data/maps/VictoryRoad_B2F/map.json +++ b/data/maps/VictoryRoad_B2F/map.json @@ -106,11 +106,11 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_ANABEL", + "graphics_id": "OBJ_EVENT_GFX_MON_BASE+SPECIES_MOLTRES", "x": 18, "y": 1, "elevation": 0, - "movement_type": "MOVEMENT_TYPE_NONE", + "movement_type": "MOVEMENT_TYPE_WALK_IN_PLACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index c8fbec160..4b954a655 100755 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -231,6 +231,7 @@ gScriptCmdTable:: .4byte ScrCmd_checkpartymon @ 0xe4 .4byte ScrCmd_calculatemonstats @ 0xe5 .4byte ScrCmd_deleteparty @ 0xe6 + .4byte ScrCmd_callfunc @ 0xe7 gScriptCmdTableEnd:: .4byte ScrCmd_nop diff --git a/data/scripts/battle_pike.inc b/data/scripts/battle_pike.inc index 8ca7f5b1a..e0a8c3feb 100755 --- a/data/scripts/battle_pike.inc +++ b/data/scripts/battle_pike.inc @@ -133,6 +133,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_NoTurningBack:: lockall msgbox BattleFrontier_BattlePike_Text_PathBlockedNoTurningBack, MSGBOX_DEFAULT closemessage + releaseall end BattleFrontier_BattlePikeRoomNormal_EventScript_SetEnteredRoom:: @@ -146,6 +147,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_NoTurningBack:: lockall msgbox BattleFrontier_BattlePike_Text_PathBlockedNoTurningBack, MSGBOX_DEFAULT closemessage + releaseall end BattleFrontier_BattlePikeRoomNormal_EventScript_Exit:: @@ -214,6 +216,7 @@ BattleFrontier_BattlePikeRoomWildMons_EventScript_NoTurningBack:: lockall msgbox BattleFrontier_BattlePike_Text_PathBlockedNoTurningBack, MSGBOX_DEFAULT closemessage + releaseall end BattleFrontier_BattlePike_EventScript_Retire:: diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc index 956e05069..e6ba7ae2e 100755 --- a/data/scripts/day_care.inc +++ b/data/scripts/day_care.inc @@ -104,6 +104,7 @@ Route117_PokemonDayCare_EventScript_GiveMonToRaise:: msgbox Route117_PokemonDayCare_Text_WellRaiseYourMon, MSGBOX_DEFAULT waitmoncry special StoreSelectedPokemonInDaycare + callnative UpdateFollowingPokemon incrementgamestat GAME_STAT_USED_DAYCARE specialvar VAR_RESULT, GetDaycareState goto_if_eq VAR_RESULT, DAYCARE_ONE_MON, Route117_PokemonDayCare_EventScript_CanRaiseOneMore diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index a7f7bd465..3e92bbc11 100755 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -11,20 +11,15 @@ EventScript_CutTree:: @goto_if_eq VAR_RESULT, NO, EventScript_CancelCut msgbox Text_MonUsedFieldMove, MSGBOX_DEFAULT closemessage +EventScript_CutTreeCommon: + callfunc ScrFunc_IsFollowerFieldMoveUser + .2byte VAR_0x8004 + @setfieldeffectargument 3, VAR_0x8004 @ skip pose if so @dofieldeffect FLDEFF_USE_CUT_ON_TREE @waitstate - goto EventScript_CutTreeDown - end - -@ Use cut from party menu -EventScript_UseCut:: - lockall - @dofieldeffect FLDEFF_USE_CUT_ON_TREE - @waitstate - goto EventScript_CutTreeDown - end - -EventScript_CutTreeDown:: +EventScript_CutTreeDown:: @ fallthrough + setflag FLAG_SAFE_FOLLOWER_MOVEMENT + call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove applymovement VAR_LAST_TALKED, Movement_CutTreeDown playse SE_M_CUT waitmovement 0 @@ -32,6 +27,11 @@ EventScript_CutTreeDown:: releaseall end +@ Use cut from party menu +EventScript_UseCut:: + lockall + goto EventScript_CutTreeCommon + Movement_CutTreeDown: cut_tree step_end @@ -58,6 +58,11 @@ Text_CantCut: .string "This tree looks like it can be\n" .string "CUT down!$" +@ Use rock smash from party menu +EventScript_UseRockSmash:: + lockall + goto EventScript_RockSmashCommon + @ Interact with smashable rock EventScript_RockSmash:: lockall @@ -71,20 +76,16 @@ EventScript_RockSmash:: @goto_if_eq VAR_RESULT, NO, EventScript_CancelSmash msgbox Text_MonUsedFieldMove, MSGBOX_DEFAULT closemessage +EventScript_RockSmashCommon: + @ check if follower should use the field move + callfunc ScrFunc_IsFollowerFieldMoveUser + .2byte VAR_0x8004 + @setfieldeffectargument 3, VAR_0x8004 @ skip pose if so @dofieldeffect FLDEFF_USE_ROCK_SMASH @waitstate - goto EventScript_SmashRock - end - -@ Use rock smash from party menu -EventScript_UseRockSmash:: - lockall - @dofieldeffect FLDEFF_USE_ROCK_SMASH - @waitstate - goto EventScript_SmashRock - end - -EventScript_SmashRock:: +EventScript_SmashRock:: @ fallthrough + setflag FLAG_SAFE_FOLLOWER_MOVEMENT + call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove applymovement VAR_LAST_TALKED, Movement_SmashRock playse SE_M_ROCK_THROW waitmovement 0 @@ -97,10 +98,120 @@ EventScript_SmashRock:: releaseall end +EventScript_FollowerFieldMove: + callfunc ScrFunc_GetDirectionToFace + .2byte VAR_0x8005 + .byte OBJ_EVENT_ID_FOLLOWER + .byte OBJ_EVENT_ID_PLAYER + specialvar VAR_0x8006, GetPlayerFacingDirection + goto_if_eq VAR_0x8005, DIR_NONE, EventScript_FollowerFieldMoveEnd + @ Swap follower and player + call EventScript_FollowerSwap + @ Face follower in direction and jump + switch VAR_0x8006 + case DIR_NORTH, EventScript_FollowerJumpNorth + case DIR_EAST, EventScript_FollowerJumpEast + case DIR_SOUTH, EventScript_FollowerJumpSouth + case DIR_WEST, EventScript_FollowerJumpWest +EventScript_FollowerFieldMoveEnd: + return + +EventScript_FollowerSwap: + switch VAR_0x8005 + case DIR_NORTH, EventScript_FollowerMoveNorth + case DIR_EAST, EventScript_FollowerMoveEast + case DIR_SOUTH, EventScript_FollowerMoveSouth + case DIR_WEST, EventScript_FollowerMoveWest + return + +EventScript_FollowerMoveNorth: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkUp + applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkDown + waitmovement 0 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp + waitmovement 0 + return + +EventScript_FollowerMoveEast: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkRight + applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkLeft + waitmovement 0 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceRight + waitmovement 0 + return + +EventScript_FollowerMoveSouth: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkDown + applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkUp + waitmovement 0 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceDown + waitmovement 0 + return + +EventScript_FollowerMoveWest: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkLeft + applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkRight + waitmovement 0 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceLeft + waitmovement 0 + return + +EventScript_FollowerJumpNorth: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpUp + waitmovement 0 + return + +EventScript_FollowerJumpEast: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpRight + waitmovement 0 + return + +EventScript_FollowerJumpSouth: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpDown + waitmovement 0 + return + +EventScript_FollowerJumpWest: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpLeft + waitmovement 0 + return + EventScript_EndSmash:: releaseall end +Movement_WalkUp: + walk_up + step_end + +Movement_JumpUp: + jump_in_place_up + step_end + +Movement_WalkRight: + walk_right + step_end + +Movement_JumpRight: + jump_in_place_right + step_end + +Movement_WalkDown: + walk_down + step_end + +Movement_JumpDown: + jump_in_place_down + step_end + +Movement_WalkLeft: + walk_left + step_end + +Movement_JumpLeft: + jump_in_place_left + step_end + Movement_SmashRock: rock_smash_break step_end diff --git a/data/scripts/flash.inc b/data/scripts/flash.inc index dbfec2314..7444dcd5e 100755 --- a/data/scripts/flash.inc +++ b/data/scripts/flash.inc @@ -1,4 +1,5 @@ EventScript_UseFlash:: animateflash 1 setflashlevel 1 + releaseall end diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc new file mode 100755 index 000000000..3a81e6fab --- /dev/null +++ b/data/scripts/follower.inc @@ -0,0 +1,674 @@ +gText_FollowerLovesYou:: + .string "123456789012345678901234567890123\n$" + +gText_FollowerLostInThought:: + .string "{STR_VAR_1} seems lost in thought.$" + +gText_FollowerDefault:: + .string "ERROR 404: Script not found.$" + +gText_WantsToFly:: + .string "{STR_VAR_1} looks up at the\nsky restlessly.\pWould you like to use FLY?$" + +.macro playfirstmoncry +callfunc ScrFunc_playfirstmoncry +.endm + +.macro bufferlivemonnickname out:req +callfunc ScrFunc_bufferlivemonnickname +.byte \out +.endm + +.macro emote obj:req id:req +callfunc ScrFunc_emote +.byte \obj +.byte \id +.endm + +EventScript_Follower:: + lock + bufferlivemonnickname 0 + playfirstmoncry + callfunc ScrFunc_getfolloweraction + checkpartymove MOVE_FLY + compare VAR_RESULT 6 + goto_if_eq EventScript_FollowerEnd + bufferlivemonnickname 0 + msgbox gText_WantsToFly, MSGBOX_YESNO + switch VAR_RESULT + case NO, EventScript_FollowerEnd + case YES, EventScript_FollowerFly + case MULTI_B_PRESSED, EventScript_FollowerEnd +EventScript_FollowerFly:: + callfunc ScrFunc_followerfly +EventScript_FollowerEnd:: + waitfieldeffect FLDEFF_EMOTE + release + end + +EventScript_FollowerLovesYou:: + applymovement 0xFE ContestHall_Movement_Heart + waitmovement 0xFE + waitmoncry + msgbox gText_FollowerLovesYou, MSGBOX_DEFAULT + return + +@ Message address must be loaded into bank 0 +EventScript_FollowerGeneric:: @ similar to Std_MsgboxDefault + faceplayer +EventScript_FollowerGenericSkipFace: + waitfieldeffect FLDEFF_EMOTE + message 0x0 + waitmessage + waitbuttonpress + return + +EventScript_FollowerJump:: + faceplayer + applymovement 0xFE FollowerSplashMovement + waitmovement 0xFE + waitfieldeffect FLDEFF_EMOTE + message 0x0 + waitmessage + waitbuttonpress + return + +EnterPokeballMovement:: + enter_pokeball + step_end + +@ Movement scripts below, movements are defined in movement.inc + +FollowerSplashMovement:: + jump_in_place_down + delay_4 + jump_in_place_down + face_player + step_end + +FollowerShiverVerticalMovement: + lock_facing_direction + slide_left + slide_right + slide_right + slide_left + unlock_facing_direction + step_end + +FollowerShiverHorizontalMovement: + lock_facing_direction + slide_up + slide_down + slide_down + slide_up + unlock_facing_direction + step_end + +FollowerNostalgiaMovement: + face_away_player + lock_facing_direction + jump_in_place_down + jump_in_place_down + jump_in_place_down + unlock_facing_direction + face_player + lock_facing_direction + jump_in_place_down + unlock_facing_direction + step_end + +FollowerSkippingMovement: + lock_facing_direction + jump_in_place_down + delay_4 + jump_in_place_down + unlock_facing_direction + step_end + +FollowerJumpOnPlayerNorth: + jump_up + delay_4 + lock_facing_direction + walk_fast_down + unlock_facing_direction + step_end + +FollowerJumpOnPlayerSouth: + jump_down + delay_4 + lock_facing_direction + walk_fast_up + unlock_facing_direction + step_end + +FollowerJumpOnPlayerEast: + jump_right + delay_4 + lock_facing_direction + walk_fast_left + unlock_facing_direction + step_end + +FollowerJumpOnPlayerWest: + jump_left + delay_4 + lock_facing_direction + walk_fast_right + unlock_facing_direction + step_end + +FollowerCuddlingNorth: + face_left + lock_facing_direction + walk_up + walk_in_place_left + walk_in_place_left + unlock_facing_direction + walk_down + face_player + step_end + +FollowerCuddlingSouth: + face_right + lock_facing_direction + walk_down + walk_in_place_right + walk_in_place_right + unlock_facing_direction + walk_up + face_player + step_end + +FollowerCuddlingEast: + face_down + lock_facing_direction + walk_right + walk_in_place_down + walk_in_place_down + unlock_facing_direction + walk_left + face_player + step_end + +FollowerCuddlingWest: + face_down + lock_facing_direction + walk_left + walk_in_place_down + walk_in_place_down + unlock_facing_direction + walk_right + face_player + step_end + +FollowerGetCloserNorth: + walk_up + delay_16 + lock_facing_direction + walk_down + unlock_facing_direction + step_end + +FollowerGetCloserSouth: + walk_down + delay_16 + lock_facing_direction + walk_up + unlock_facing_direction + step_end + +FollowerGetCloserEast: + walk_right + delay_16 + lock_facing_direction + walk_left + unlock_facing_direction + step_end + +FollowerGetCloserWest: + walk_left + delay_16 + lock_facing_direction + walk_right + unlock_facing_direction + step_end + +FollowerPokeNorth: + walk_faster_up + delay_8 + lock_facing_direction + walk_faster_down + delay_4 + walk_faster_up + delay_4 + walk_faster_down + unlock_facing_direction + step_end + +FollowerPokeSouth: + walk_faster_down + delay_8 + lock_facing_direction + walk_faster_up + delay_4 + walk_faster_down + delay_4 + walk_faster_up + unlock_facing_direction + step_end + +FollowerPokeEast: + walk_faster_right + delay_8 + lock_facing_direction + walk_faster_left + delay_4 + walk_faster_right + delay_4 + walk_faster_left + unlock_facing_direction + step_end + +FollowerPokeWest: + walk_faster_left + delay_8 + lock_facing_direction + walk_faster_right + delay_4 + walk_faster_left + delay_4 + walk_faster_right + unlock_facing_direction + step_end + +FollowerLookAround: + face_away_player + delay_16 + delay_16 + face_left + delay_16 + delay_16 + face_up + delay_16 + delay_16 + face_down + delay_16 + delay_16 + step_end + +FollowerLookAway: + face_away_player + delay_16 + delay_16 + step_end + +FollowerLookAwayBark: + face_away_player + lock_facing_direction + jump_in_place_down + jump_in_place_down + unlock_facing_direction + step_end + +FollowerLookAwayPokeG: + face_away_player + lock_facing_direction + walk_in_place_down + walk_in_place_down + walk_in_place_down + unlock_facing_direction + step_end + +FollowerPokeGround: + lock_facing_direction + walk_in_place_down + walk_in_place_down + walk_in_place_down + unlock_facing_direction + step_end + +FollowerStartled: + face_away_player + lock_facing_direction + jump_in_place_down + unlock_facing_direction + face_player + step_end + +FollowerHopFast: + jump_in_place_up + jump_in_place_down + jump_in_place_left + jump_in_place_right + face_player + step_end + +FollowerDizzy: + walk_in_place_left + walk_in_place_fast_right + walk_in_place_slow_up + walk_in_place_fast_down + delay_4 + face_away_player + step_end + +FollowerLookAroundScared: + face_up + delay_16 + face_down + delay_16 + face_left + delay_16 + face_right + delay_16 + face_up + delay_16 + face_down + delay_16 + face_left + delay_16 + face_right + delay_16 + face_player + step_end + +FollowerDance: + lock_facing_direction + jump_in_place_up + unlock_facing_direction + walk_in_place_fast_up + walk_in_place_fast_left + walk_in_place_fast_down + walk_in_place_fast_right + walk_in_place_fast_up + walk_in_place_fast_left + walk_in_place_fast_down + walk_in_place_fast_right + jump_in_place_up + jump_in_place_down + jump_in_place_up + face_player + step_end + +@ Movement scripts + +EventScript_FollowerIsShivering:: + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq ShiverVertical + compare VAR_FACING, DIR_SOUTH + call_if_eq ShiverVertical + compare VAR_FACING, DIR_WEST + call_if_eq ShiverHorizontal + compare VAR_FACING, DIR_EAST + call_if_eq ShiverHorizontal + goto EventScript_FollowerGeneric + +ShiverVertical: + applymovement 0xFE FollowerShiverVerticalMovement + waitmovement 0xFE + return + +ShiverHorizontal: + applymovement 0xFE FollowerShiverHorizontalMovement + waitmovement 0xFE + return + +EventScript_FollowerNostalgia:: + applymovement 0xFE FollowerNostalgiaMovement + waitmovement 0xFE + goto EventScript_FollowerGeneric + +EventScript_FollowerHopping:: + faceplayer + applymovement 0xFE FollowerSkippingMovement + waitmovement 0xFE + goto EventScript_FollowerGeneric + +JumpOnN: + applymovement 0xFE FollowerJumpOnPlayerNorth + waitmovement 0xFE + return + +JumpOnS: + applymovement 0xFE FollowerJumpOnPlayerSouth + waitmovement 0xFE + return + +JumpOnE: + applymovement 0xFE FollowerJumpOnPlayerEast + waitmovement 0xFE + return + +JumpOnW: + applymovement 0xFE FollowerJumpOnPlayerWest + waitmovement 0xFE + return + +EventScript_FollowerJumpOnPlayer:: + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq JumpOnS + compare VAR_FACING, DIR_SOUTH + call_if_eq JumpOnN + compare VAR_FACING, DIR_WEST + call_if_eq JumpOnE + compare VAR_FACING, DIR_EAST + call_if_eq JumpOnW + goto EventScript_FollowerGeneric + +CuddleN: + applymovement 0xFE FollowerCuddlingNorth + waitmovement 0xFE + return + +CuddleS: + applymovement 0xFE FollowerCuddlingSouth + waitmovement 0xFE + return + +CuddleE: + applymovement 0xFE FollowerCuddlingEast + waitmovement 0xFE + return + +CuddleW: + applymovement 0xFE FollowerCuddlingWest + waitmovement 0xFE + return + +EventScript_FollowerCuddling:: @ similar to Std_MsgboxDefault + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq CuddleS + compare VAR_FACING, DIR_SOUTH + call_if_eq CuddleN + compare VAR_FACING, DIR_WEST + call_if_eq CuddleE + compare VAR_FACING, DIR_EAST + call_if_eq CuddleW + goto EventScript_FollowerGeneric + +ShCuddleN: + applymovement 0xFE FollowerShiverVerticalMovement + waitmovement 0xFE + applymovement 0xFE FollowerCuddlingNorth + waitmovement 0xFE + return + +ShCuddleS: + applymovement 0xFE FollowerShiverVerticalMovement + waitmovement 0xFE + applymovement 0xFE FollowerCuddlingSouth + waitmovement 0xFE + return + +ShCuddleE: + applymovement 0xFE FollowerShiverHorizontalMovement + waitmovement 0xFE + applymovement 0xFE FollowerCuddlingEast + waitmovement 0xFE + return + +ShCuddleW: + applymovement 0xFE FollowerShiverHorizontalMovement + waitmovement 0xFE + applymovement 0xFE FollowerCuddlingWest + waitmovement 0xFE + return + +EventScript_FollowerShiverCuddling:: + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq ShCuddleS + compare VAR_FACING, DIR_SOUTH + call_if_eq ShCuddleN + compare VAR_FACING, DIR_WEST + call_if_eq ShCuddleE + compare VAR_FACING, DIR_EAST + call_if_eq ShCuddleW + goto EventScript_FollowerGeneric + +CreepCloserN: + applymovement 0xFE FollowerGetCloserNorth + waitmovement 0xFE + return + +CreepCloserS: + applymovement 0xFE FollowerGetCloserSouth + waitmovement 0xFE + return + +CreepCloserE: + applymovement 0xFE FollowerGetCloserEast + waitmovement 0xFE + return + +CreepCloserW: + applymovement 0xFE FollowerGetCloserWest + waitmovement 0xFE + return + +EventScript_FollowerGetCloser:: + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq CreepCloserS + compare VAR_FACING, DIR_SOUTH + call_if_eq CreepCloserN + compare VAR_FACING, DIR_WEST + call_if_eq CreepCloserE + compare VAR_FACING, DIR_EAST + call_if_eq CreepCloserW + goto EventScript_FollowerGeneric + +PokePlayerN: + applymovement 0xFE FollowerGetCloserNorth + waitmovement 0xFE + return + +PokePlayerS: + applymovement 0xFE FollowerGetCloserSouth + waitmovement 0xFE + return + +PokePlayerE: + applymovement 0xFE FollowerGetCloserEast + waitmovement 0xFE + return + +PokePlayerW: + applymovement 0xFE FollowerGetCloserWest + waitmovement 0xFE + return + +EventScript_FollowerPokingPlayer:: + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq PokePlayerS + compare VAR_FACING, DIR_SOUTH + call_if_eq PokePlayerN + compare VAR_FACING, DIR_WEST + call_if_eq PokePlayerE + compare VAR_FACING, DIR_EAST + call_if_eq PokePlayerW + goto EventScript_FollowerGeneric + +EventScript_FollowerLookAround:: + applymovement 0xFE FollowerLookAround + waitmovement 0xFE + goto EventScript_FollowerGeneric + +EventScript_FollowerLookAway:: + applymovement 0xFE FollowerLookAway + waitmovement 0xFE + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerLookAwayBark:: + applymovement 0xFE FollowerLookAwayBark + waitmovement 0xFE + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerLookAwayPoke:: + applymovement 0xFE FollowerLookAwayPokeG + waitmovement 0xFE + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerPokeGround:: + faceplayer + applymovement 0xFE FollowerPokeGround + waitmovement 0xFE + goto EventScript_FollowerGeneric + +EventScript_FollowerStartled:: + applymovement 0xFE FollowerStartled + waitmovement 0xFE + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerFastHopping:: + applymovement 0xFE FollowerHopFast + waitmovement 0xFE + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerDizzy:: + applymovement 0xFE FollowerDizzy + waitmovement 0 + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerLookAroundScared:: + applymovement 0xFE FollowerLookAroundScared + waitmovement 0xFE + goto EventScript_FollowerGeneric + +EventScript_FollowerDance:: + faceplayer + applymovement 0xFE FollowerDance + waitmovement 0 + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerFaceUp:: + applymovement 0xFE Common_Movement_FaceUp + waitmovement 0xFE + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerFaceResult:: @ Face towards direction in VAR_RESULT + switch VAR_RESULT + case DIR_SOUTH, EventScript_FollowerFaceDown + case DIR_NORTH, EventScript_FollowerFaceUp + case DIR_WEST, EventScript_FollowerFaceLeft + case DIR_EAST, EventScript_FollowerFaceRight + goto EventScript_FollowerGeneric + +EventScript_FollowerFaceDown: + applymovement 0xFE Common_Movement_FaceDown + waitmovement 0xFE + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerFaceLeft: + applymovement 0xFE Common_Movement_FaceLeft + waitmovement 0xFE + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerFaceRight: + applymovement 0xFE Common_Movement_FaceRight + waitmovement 0xFE + goto EventScript_FollowerGenericSkipFace diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index 5edd19a07..56bba3084 100755 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -33,13 +33,14 @@ EventScript_PkmnCenterNurse_IllTakeYourPkmn2:: return EventScript_PkmnCenterNurse_TakeAndHealPkmn:: - applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterLeft + applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterLeft @ TODO: Make follower disappear here waitmovement 0 dofieldeffect FLDEFF_POKECENTER_HEAL waitfieldeffect FLDEFF_POKECENTER_HEAL applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterDown waitmovement 0 special HealPlayerParty + callnative UpdateFollowingPokemon return EventScript_PkmnCenterNurse_CheckTrainerHillAndUnionRoom:: diff --git a/data/scripts/secret_base.inc b/data/scripts/secret_base.inc index 918a9d630..17801e85a 100755 --- a/data/scripts/secret_base.inc +++ b/data/scripts/secret_base.inc @@ -646,6 +646,7 @@ SecretBase_EventScript_BattleTrainer:: call_if_eq VAR_RESULT, B_OUTCOME_WON, SecretBase_EventScript_WonSecretBaseBattle call_if_eq VAR_RESULT, B_OUTCOME_LOST, SecretBase_EventScript_LostSecretBaseBattle special HealPlayerParty + callnative UpdateFollowingPokemon release end diff --git a/data/scripts/trainer_battle.inc b/data/scripts/trainer_battle.inc index ff9f066aa..9419b15ac 100755 --- a/data/scripts/trainer_battle.inc +++ b/data/scripts/trainer_battle.inc @@ -10,8 +10,10 @@ EventScript_TrainerApproach:: EventScript_TryDoNormalTrainerBattle:: lock faceplayer + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 + clearflag FLAG_SAFE_FOLLOWER_MOVEMENT specialvar VAR_RESULT, GetTrainerFlag goto_if_ne VAR_RESULT, FALSE, EventScript_NoNormalTrainerBattle special PlayTrainerEncounterMusic @@ -51,8 +53,10 @@ EventScript_NoDoubleTrainerBattle:: gotopostbattlescript EventScript_DoNoIntroTrainerBattle:: + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 + clearflag FLAG_SAFE_FOLLOWER_MOVEMENT special PlayTrainerEncounterMusic dotrainerbattle gotopostbattlescript @@ -113,8 +117,10 @@ EventScript_NotEnoughMonsForDoubleRematchBattle:: end EventScript_RevealTrainer:: + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 + clearflag FLAG_SAFE_FOLLOWER_MOVEMENT return Movement_RevealTrainer: diff --git a/data/tilesets/primary/general/metatile_attributes.bin b/data/tilesets/primary/general/metatile_attributes.bin index bcf5727a8..0fa0b134a 100755 Binary files a/data/tilesets/primary/general/metatile_attributes.bin and b/data/tilesets/primary/general/metatile_attributes.bin differ diff --git a/data/tilesets/primary/general/metatiles.bin b/data/tilesets/primary/general/metatiles.bin index 392b2ff39..60c47650e 100755 Binary files a/data/tilesets/primary/general/metatiles.bin and b/data/tilesets/primary/general/metatiles.bin differ diff --git a/data/tilesets/primary/general/palettes/04.pal b/data/tilesets/primary/general/palettes/04.pal index d8051b7ba..57d4faa34 100755 --- a/data/tilesets/primary/general/palettes/04.pal +++ b/data/tilesets/primary/general/palettes/04.pal @@ -1,14 +1,14 @@ JASC-PAL 0100 16 -24 41 82 -255 255 255 +232 0 128 +216 224 232 222 230 238 -255 0 255 -255 0 255 -255 0 255 +184 200 224 +152 176 216 +112 184 240 156 164 189 -82 106 213 +80 104 208 65 90 189 57 82 156 41 65 139 @@ -16,4 +16,4 @@ JASC-PAL 139 164 222 106 131 213 82 106 213 -115 197 164 +96 168 232 diff --git a/data/tilesets/primary/general/palettes/13.pal b/data/tilesets/primary/general/palettes/13.pal index 4b0812f09..73fec5261 100755 --- a/data/tilesets/primary/general/palettes/13.pal +++ b/data/tilesets/primary/general/palettes/13.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +232 0 128 +232 228 216 +222 230 238 +224 214 184 +216 200 152 +244 226 171 +156 164 189 +80 104 208 +65 90 189 +57 82 156 +41 65 139 +172 197 230 +139 164 222 +106 131 213 +82 106 213 +221 205 143 diff --git a/data/tilesets/primary/general/tiles.png b/data/tilesets/primary/general/tiles.png index 17426ab80..1628f0ffb 100755 Binary files a/data/tilesets/primary/general/tiles.png and b/data/tilesets/primary/general/tiles.png differ diff --git a/data/tilesets/secondary/battle_frontier_outside_east/metatile_attributes.bin b/data/tilesets/secondary/battle_frontier_outside_east/metatile_attributes.bin index 36b6f52d3..7f87ad6d8 100755 Binary files a/data/tilesets/secondary/battle_frontier_outside_east/metatile_attributes.bin and b/data/tilesets/secondary/battle_frontier_outside_east/metatile_attributes.bin differ diff --git a/data/tilesets/secondary/battle_frontier_outside_east/metatiles.bin b/data/tilesets/secondary/battle_frontier_outside_east/metatiles.bin index 704a5a91a..bc8ee287c 100755 Binary files a/data/tilesets/secondary/battle_frontier_outside_east/metatiles.bin and b/data/tilesets/secondary/battle_frontier_outside_east/metatiles.bin differ diff --git a/data/tilesets/secondary/battle_frontier_outside_east/tiles.png b/data/tilesets/secondary/battle_frontier_outside_east/tiles.png index 59ac5b7e9..1b70f52f6 100755 Binary files a/data/tilesets/secondary/battle_frontier_outside_east/tiles.png and b/data/tilesets/secondary/battle_frontier_outside_east/tiles.png differ diff --git a/data/tilesets/secondary/battle_frontier_outside_west/metatile_attributes.bin b/data/tilesets/secondary/battle_frontier_outside_west/metatile_attributes.bin index 4b70a8c47..cde22ed9d 100755 Binary files a/data/tilesets/secondary/battle_frontier_outside_west/metatile_attributes.bin and b/data/tilesets/secondary/battle_frontier_outside_west/metatile_attributes.bin differ diff --git a/data/tilesets/secondary/battle_frontier_outside_west/metatiles.bin b/data/tilesets/secondary/battle_frontier_outside_west/metatiles.bin index 3c6a98afb..5d3e56da9 100755 Binary files a/data/tilesets/secondary/battle_frontier_outside_west/metatiles.bin and b/data/tilesets/secondary/battle_frontier_outside_west/metatiles.bin differ diff --git a/data/tilesets/secondary/battle_frontier_outside_west/tiles.png b/data/tilesets/secondary/battle_frontier_outside_west/tiles.png index 277abe7f8..efc4a2610 100755 Binary files a/data/tilesets/secondary/battle_frontier_outside_west/tiles.png and b/data/tilesets/secondary/battle_frontier_outside_west/tiles.png differ diff --git a/data/tilesets/secondary/dewford/metatile_attributes.bin b/data/tilesets/secondary/dewford/metatile_attributes.bin index 7538860e1..39278bd5f 100755 Binary files a/data/tilesets/secondary/dewford/metatile_attributes.bin and b/data/tilesets/secondary/dewford/metatile_attributes.bin differ diff --git a/data/tilesets/secondary/dewford/metatiles.bin b/data/tilesets/secondary/dewford/metatiles.bin index 66b104d72..0940b2eb7 100755 Binary files a/data/tilesets/secondary/dewford/metatiles.bin and b/data/tilesets/secondary/dewford/metatiles.bin differ diff --git a/data/tilesets/secondary/dewford/tiles.png b/data/tilesets/secondary/dewford/tiles.png index aad3811ee..f53704a20 100755 Binary files a/data/tilesets/secondary/dewford/tiles.png and b/data/tilesets/secondary/dewford/tiles.png differ diff --git a/data/tilesets/secondary/ever_grande/palettes/01.pal b/data/tilesets/secondary/ever_grande/palettes/01.pal index 3c6e40c2e..2c0276761 100755 --- a/data/tilesets/secondary/ever_grande/palettes/01.pal +++ b/data/tilesets/secondary/ever_grande/palettes/01.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -24 41 82 -255 255 255 -222 230 238 -189 205 230 -156 180 222 +0 197 0 +246 197 123 +238 156 90 +205 115 41 +164 90 49 131 131 139 98 98 123 65 74 106 41 49 90 -115 189 246 -98 172 238 -255 189 131 -238 148 115 -222 106 98 -205 65 82 -115 197 164 +224 226 171 +216 200 152 +255 255 238 +222 222 197 +197 197 164 +164 172 123 +255 255 115 diff --git a/data/tilesets/secondary/ever_grande/palettes/08.pal b/data/tilesets/secondary/ever_grande/palettes/08.pal index 083dd5080..67b9146fd 100755 --- a/data/tilesets/secondary/ever_grande/palettes/08.pal +++ b/data/tilesets/secondary/ever_grande/palettes/08.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -24 41 82 +0 197 0 246 197 123 238 156 90 205 115 41 diff --git a/data/tilesets/secondary/fallarbor/metatiles.bin b/data/tilesets/secondary/fallarbor/metatiles.bin index a8781129b..de3001193 100755 Binary files a/data/tilesets/secondary/fallarbor/metatiles.bin and b/data/tilesets/secondary/fallarbor/metatiles.bin differ diff --git a/data/tilesets/secondary/fallarbor/palettes/00.pal b/data/tilesets/secondary/fallarbor/palettes/00.pal index ede0c60a1..87f9999ae 100755 --- a/data/tilesets/secondary/fallarbor/palettes/00.pal +++ b/data/tilesets/secondary/fallarbor/palettes/00.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -115 197 164 -255 255 255 -222 230 238 -189 205 230 -156 180 222 +0 192 0 +222 230 164 +180 197 115 +148 156 82 +123 131 65 131 131 139 98 98 123 65 74 106 -189 189 131 -115 189 246 -98 172 238 -115 189 246 -98 164 222 -82 139 197 -74 115 172 -115 197 164 +88 168 168 +221 205 143 +244 226 171 +255 205 82 +230 156 49 +222 123 32 +156 98 41 +128 192 216 diff --git a/data/tilesets/secondary/fallarbor/palettes/07.pal b/data/tilesets/secondary/fallarbor/palettes/07.pal index 724a8f09d..f3a702073 100755 --- a/data/tilesets/secondary/fallarbor/palettes/07.pal +++ b/data/tilesets/secondary/fallarbor/palettes/07.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -24 41 82 +0 192 0 222 230 164 180 197 115 148 156 82 @@ -9,11 +9,11 @@ JASC-PAL 131 131 139 98 98 123 65 74 106 -41 49 90 +88 168 168 90 172 172 131 197 222 255 205 82 230 156 49 222 123 32 156 98 41 -115 197 164 +128 192 216 diff --git a/data/tilesets/secondary/fallarbor/tiles.png b/data/tilesets/secondary/fallarbor/tiles.png index 3582d1d03..5797d2141 100755 Binary files a/data/tilesets/secondary/fallarbor/tiles.png and b/data/tilesets/secondary/fallarbor/tiles.png differ diff --git a/data/tilesets/secondary/fortree/metatiles.bin b/data/tilesets/secondary/fortree/metatiles.bin index db0126cbd..4c5a956a8 100755 Binary files a/data/tilesets/secondary/fortree/metatiles.bin and b/data/tilesets/secondary/fortree/metatiles.bin differ diff --git a/data/tilesets/secondary/fortree/palettes/08.pal b/data/tilesets/secondary/fortree/palettes/08.pal index 40b922e28..11b51b107 100755 --- a/data/tilesets/secondary/fortree/palettes/08.pal +++ b/data/tilesets/secondary/fortree/palettes/08.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -255 255 255 +0 96 8 255 255 255 246 238 189 230 213 172 @@ -16,4 +16,4 @@ JASC-PAL 0 0 0 172 180 197 123 123 123 -115 197 164 +176 184 200 diff --git a/data/tilesets/secondary/fortree/tiles.png b/data/tilesets/secondary/fortree/tiles.png index d76481444..c723adc1f 100755 Binary files a/data/tilesets/secondary/fortree/tiles.png and b/data/tilesets/secondary/fortree/tiles.png differ diff --git a/data/tilesets/secondary/lavaridge/metatiles.bin b/data/tilesets/secondary/lavaridge/metatiles.bin index fd0314ed7..c9bc71442 100755 Binary files a/data/tilesets/secondary/lavaridge/metatiles.bin and b/data/tilesets/secondary/lavaridge/metatiles.bin differ diff --git a/data/tilesets/secondary/lavaridge/palettes/06.pal b/data/tilesets/secondary/lavaridge/palettes/06.pal index 00e1478a7..a858e623d 100755 --- a/data/tilesets/secondary/lavaridge/palettes/06.pal +++ b/data/tilesets/secondary/lavaridge/palettes/06.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 0 0 -65 74 106 -197 205 0 -230 238 238 -255 255 255 -255 115 65 -230 115 65 -180 98 90 -164 82 82 -205 49 0 -148 49 0 -246 24 24 -246 148 0 -148 164 65 -106 123 139 -222 222 0 +0 192 24 +64 72 104 +192 200 0 +224 232 232 +248 248 248 +248 112 64 +224 112 64 +176 96 88 +160 80 80 +200 48 0 +144 48 0 +240 24 24 +240 144 0 +144 160 64 +104 120 136 +224 40 0 diff --git a/data/tilesets/secondary/lilycove/metatiles.bin b/data/tilesets/secondary/lilycove/metatiles.bin index 6018ac8ec..79205542b 100755 Binary files a/data/tilesets/secondary/lilycove/metatiles.bin and b/data/tilesets/secondary/lilycove/metatiles.bin differ diff --git a/data/tilesets/secondary/lilycove/palettes/06.pal b/data/tilesets/secondary/lilycove/palettes/06.pal index 4b0812f09..b612065ed 100755 --- a/data/tilesets/secondary/lilycove/palettes/06.pal +++ b/data/tilesets/secondary/lilycove/palettes/06.pal @@ -1,18 +1,18 @@ JASC-PAL 0100 16 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +24 200 0 +168 184 240 +112 144 208 +115 148 213 +90 115 189 +131 131 139 +216 208 216 +65 74 106 +222 213 222 +112 144 208 +131 197 213 +248 248 248 0 0 0 0 0 0 0 0 0 diff --git a/data/tilesets/secondary/lilycove/palettes/15.pal b/data/tilesets/secondary/lilycove/palettes/15.pal index e7717d74e..41c4142bb 100755 --- a/data/tilesets/secondary/lilycove/palettes/15.pal +++ b/data/tilesets/secondary/lilycove/palettes/15.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -115 197 164 -255 213 180 -255 197 148 -222 148 115 -123 65 65 -57 74 123 -41 57 98 -24 41 82 -16 32 57 -222 230 238 -255 197 90 -189 156 90 -255 98 90 -197 65 65 -255 255 255 +24 200 0 +244 226 171 +221 205 143 +115 148 213 +90 115 189 +131 131 139 +232 228 216 +65 74 106 +222 213 222 +221 205 143 +244 226 171 +248 248 248 +0 0 0 +0 0 0 +0 0 0 0 0 0 diff --git a/data/tilesets/secondary/lilycove/tiles.png b/data/tilesets/secondary/lilycove/tiles.png index 3e9b44a94..095f0ace0 100755 Binary files a/data/tilesets/secondary/lilycove/tiles.png and b/data/tilesets/secondary/lilycove/tiles.png differ diff --git a/data/tilesets/secondary/mauville/metatiles.bin b/data/tilesets/secondary/mauville/metatiles.bin index 96c69ca9a..12d5d9a21 100755 Binary files a/data/tilesets/secondary/mauville/metatiles.bin and b/data/tilesets/secondary/mauville/metatiles.bin differ diff --git a/data/tilesets/secondary/mauville/palettes/07.pal b/data/tilesets/secondary/mauville/palettes/07.pal index fa1dbd296..6f43490ad 100755 --- a/data/tilesets/secondary/mauville/palettes/07.pal +++ b/data/tilesets/secondary/mauville/palettes/07.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -123 180 189 +8 0 128 255 255 180 238 238 90 213 213 65 @@ -9,11 +9,11 @@ JASC-PAL 131 131 139 98 98 123 65 74 106 -41 49 90 +40 48 88 213 213 213 164 164 172 230 197 246 213 139 222 197 115 164 148 98 106 -172 205 230 +168 200 224 diff --git a/data/tilesets/secondary/mauville/palettes/08.pal b/data/tilesets/secondary/mauville/palettes/08.pal index bc7cb5c88..3742cfd9b 100755 --- a/data/tilesets/secondary/mauville/palettes/08.pal +++ b/data/tilesets/secondary/mauville/palettes/08.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 123 180 189 -115 189 246 +0 248 0 131 197 98 57 139 49 57 82 0 255 255 98 255 255 255 222 230 238 -189 205 230 +0 248 0 255 172 222 230 131 180 213 90 139 -164 213 197 +0 248 0 115 197 164 -65 180 131 -24 164 106 +0 248 0 +0 248 0 diff --git a/data/tilesets/secondary/mauville/palettes/09.pal b/data/tilesets/secondary/mauville/palettes/09.pal index 9c37027c3..312bb1aac 100755 --- a/data/tilesets/secondary/mauville/palettes/09.pal +++ b/data/tilesets/secondary/mauville/palettes/09.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 123 180 189 -255 255 255 +248 0 248 131 197 98 57 139 49 57 82 0 255 255 98 172 197 230 -139 164 222 -106 131 213 +248 0 248 +248 0 248 255 230 148 238 197 115 -230 172 82 +248 0 248 164 213 197 115 197 164 -65 180 131 -24 164 106 +248 0 248 +248 0 248 diff --git a/data/tilesets/secondary/mauville/palettes/10.pal b/data/tilesets/secondary/mauville/palettes/10.pal index a2e1cdc17..b87549f6d 100755 --- a/data/tilesets/secondary/mauville/palettes/10.pal +++ b/data/tilesets/secondary/mauville/palettes/10.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -123 180 189 +8 192 0 255 255 255 148 222 205 123 180 172 @@ -9,9 +9,9 @@ JASC-PAL 131 131 139 98 98 123 65 74 106 -41 49 90 +144 216 248 246 197 98 -148 222 255 +144 216 248 230 172 238 213 139 222 197 115 164 diff --git a/data/tilesets/secondary/mauville/palettes/11.pal b/data/tilesets/secondary/mauville/palettes/11.pal index c73ec2fe8..48166182a 100755 --- a/data/tilesets/secondary/mauville/palettes/11.pal +++ b/data/tilesets/secondary/mauville/palettes/11.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -172 180 139 +0 48 0 255 255 255 222 230 238 164 180 197 diff --git a/data/tilesets/secondary/mauville/tiles.png b/data/tilesets/secondary/mauville/tiles.png index 208a052c5..88173dda7 100755 Binary files a/data/tilesets/secondary/mauville/tiles.png and b/data/tilesets/secondary/mauville/tiles.png differ diff --git a/data/tilesets/secondary/mossdeep/metatiles.bin b/data/tilesets/secondary/mossdeep/metatiles.bin index 5fc527d0f..1fe4faf9c 100755 Binary files a/data/tilesets/secondary/mossdeep/metatiles.bin and b/data/tilesets/secondary/mossdeep/metatiles.bin differ diff --git a/data/tilesets/secondary/mossdeep/palettes/01.pal b/data/tilesets/secondary/mossdeep/palettes/01.pal index 1d09f740d..e845b832b 100755 --- a/data/tilesets/secondary/mossdeep/palettes/01.pal +++ b/data/tilesets/secondary/mossdeep/palettes/01.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -131 197 98 +0 192 0 255 255 255 -222 230 238 -189 205 230 -156 180 222 -131 131 139 +205 205 197 +180 180 164 +180 189 222 +139 139 148 98 98 123 65 74 106 41 49 90 -115 189 246 -98 172 238 -255 189 131 -238 148 115 -222 106 98 -205 65 82 -115 197 164 +255 248 180 +224 217 159 +255 213 49 +238 148 16 +205 213 131 +148 148 74 +90 82 8 diff --git a/data/tilesets/secondary/mossdeep/palettes/02.pal b/data/tilesets/secondary/mossdeep/palettes/02.pal index 4c41030f6..14fb4a989 100755 --- a/data/tilesets/secondary/mossdeep/palettes/02.pal +++ b/data/tilesets/secondary/mossdeep/palettes/02.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -24 41 82 -180 255 131 -131 197 98 -57 139 49 -57 82 0 -222 148 115 -106 90 90 -164 98 90 -65 57 49 -255 197 148 -222 106 98 -205 65 82 -164 213 197 -115 197 164 -65 180 131 -24 164 106 +0 32 0 +248 248 248 +248 0 248 +224 0 232 +64 128 96 +120 120 144 +96 96 120 +64 72 104 +255 227 148 +184 184 192 +160 160 152 +240 216 152 +208 144 112 +184 80 80 +128 56 64 +240 144 48 diff --git a/data/tilesets/secondary/mossdeep/palettes/08.pal b/data/tilesets/secondary/mossdeep/palettes/08.pal index 07d79210a..34e9db980 100755 --- a/data/tilesets/secondary/mossdeep/palettes/08.pal +++ b/data/tilesets/secondary/mossdeep/palettes/08.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -131 197 98 +0 192 0 255 255 255 205 205 197 180 180 164 diff --git a/data/tilesets/secondary/mossdeep/palettes/09.pal b/data/tilesets/secondary/mossdeep/palettes/09.pal index cee575bae..088332116 100755 --- a/data/tilesets/secondary/mossdeep/palettes/09.pal +++ b/data/tilesets/secondary/mossdeep/palettes/09.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -131 197 98 -255 255 255 -139 205 123 -98 172 98 -65 131 98 -123 123 148 -98 98 123 -65 74 106 -41 49 90 -189 189 197 -164 164 156 -246 222 156 -213 148 115 -189 82 82 -131 57 65 -246 148 49 +0 32 0 +248 248 248 +248 0 248 +224 0 232 +64 128 96 +120 120 144 +96 96 120 +64 72 104 +80 72 104 +184 184 192 +160 160 152 +240 216 152 +208 144 112 +184 80 80 +128 56 64 +240 144 48 diff --git a/data/tilesets/secondary/mossdeep/tiles.png b/data/tilesets/secondary/mossdeep/tiles.png index cc4591f88..6c1bb1d39 100755 Binary files a/data/tilesets/secondary/mossdeep/tiles.png and b/data/tilesets/secondary/mossdeep/tiles.png differ diff --git a/data/tilesets/secondary/pacifidlog/palettes/02.pal b/data/tilesets/secondary/pacifidlog/palettes/02.pal index 4c41030f6..9ea109ce0 100755 --- a/data/tilesets/secondary/pacifidlog/palettes/02.pal +++ b/data/tilesets/secondary/pacifidlog/palettes/02.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -24 41 82 -180 255 131 -131 197 98 -57 139 49 -57 82 0 -222 148 115 -106 90 90 -164 98 90 -65 57 49 -255 197 148 -222 106 98 -205 65 82 -164 213 197 -115 197 164 -65 180 131 -24 164 106 +0 0 128 +222 230 164 +180 189 123 +156 164 98 +131 139 74 +90 98 41 +98 98 123 +65 74 106 +32 32 82 +238 230 164 +238 197 98 +205 156 57 +164 123 24 +131 82 49 +131 131 139 +244 226 171 diff --git a/data/tilesets/secondary/pacifidlog/palettes/09.pal b/data/tilesets/secondary/pacifidlog/palettes/09.pal index 780f5b0ab..4f27efece 100755 --- a/data/tilesets/secondary/pacifidlog/palettes/09.pal +++ b/data/tilesets/secondary/pacifidlog/palettes/09.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -0 0 0 +0 0 128 222 230 164 180 189 123 156 164 98 @@ -16,4 +16,4 @@ JASC-PAL 164 123 24 131 82 49 131 131 139 -82 106 213 +64 72 104 diff --git a/data/tilesets/secondary/pacifidlog/tiles.png b/data/tilesets/secondary/pacifidlog/tiles.png index 9fe620e1e..31f78891d 100755 Binary files a/data/tilesets/secondary/pacifidlog/tiles.png and b/data/tilesets/secondary/pacifidlog/tiles.png differ diff --git a/data/tilesets/secondary/petalburg/metatile_attributes.bin b/data/tilesets/secondary/petalburg/metatile_attributes.bin index 5afe698a0..13a8ba7d7 100755 Binary files a/data/tilesets/secondary/petalburg/metatile_attributes.bin and b/data/tilesets/secondary/petalburg/metatile_attributes.bin differ diff --git a/data/tilesets/secondary/petalburg/metatiles.bin b/data/tilesets/secondary/petalburg/metatiles.bin index f41275c6e..658b22502 100755 Binary files a/data/tilesets/secondary/petalburg/metatiles.bin and b/data/tilesets/secondary/petalburg/metatiles.bin differ diff --git a/data/tilesets/secondary/petalburg/palettes/02.pal b/data/tilesets/secondary/petalburg/palettes/02.pal index 4c41030f6..489761445 100755 --- a/data/tilesets/secondary/petalburg/palettes/02.pal +++ b/data/tilesets/secondary/petalburg/palettes/02.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -24 41 82 -180 255 131 -131 197 98 -57 139 49 -57 82 0 -222 148 115 -106 90 90 -164 98 90 -65 57 49 -255 197 148 -222 106 98 -205 65 82 -164 213 197 -115 197 164 -65 180 131 -24 164 106 +0 192 0 +232 224 200 +208 200 144 +200 176 120 +168 136 120 +128 128 136 +96 96 120 +64 72 104 +40 48 88 +244 226 171 +221 205 143 +248 224 176 +248 184 168 +240 160 128 +200 136 104 +248 192 32 diff --git a/data/tilesets/secondary/petalburg/palettes/06.pal b/data/tilesets/secondary/petalburg/palettes/06.pal index b893aa09e..0d0fbb48c 100755 --- a/data/tilesets/secondary/petalburg/palettes/06.pal +++ b/data/tilesets/secondary/petalburg/palettes/06.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -24 41 82 +0 192 0 255 255 255 230 222 222 213 213 197 @@ -16,4 +16,4 @@ JASC-PAL 205 197 123 180 164 123 164 139 98 -115 197 164 +248 224 120 diff --git a/data/tilesets/secondary/petalburg/palettes/07.pal b/data/tilesets/secondary/petalburg/palettes/07.pal index 4b0812f09..75b06af26 100755 --- a/data/tilesets/secondary/petalburg/palettes/07.pal +++ b/data/tilesets/secondary/petalburg/palettes/07.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 +0 192 0 +213 222 172 0 0 0 +189 189 131 +164 172 123 +131 131 139 +98 106 123 +65 74 106 0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +164 213 230 +106 189 197 +112 192 160 +205 213 238 +156 156 180 +115 172 57 +248 224 120 diff --git a/data/tilesets/secondary/petalburg/palettes/09.pal b/data/tilesets/secondary/petalburg/palettes/09.pal index c4a6e250a..1a6a5c771 100755 --- a/data/tilesets/secondary/petalburg/palettes/09.pal +++ b/data/tilesets/secondary/petalburg/palettes/09.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -24 41 82 -238 230 205 -213 205 148 -205 180 123 -172 139 123 -131 131 139 -98 98 123 -65 74 106 -41 49 90 -156 205 246 -98 156 238 -255 230 180 -255 189 172 -246 164 131 -205 139 106 -115 197 164 +0 192 0 +232 224 200 +208 200 144 +200 176 120 +168 136 120 +128 128 136 +96 96 120 +64 72 104 +40 48 88 +152 200 240 +120 152 232 +248 224 176 +248 184 168 +240 160 128 +200 136 104 +248 192 32 diff --git a/data/tilesets/secondary/petalburg/tiles.png b/data/tilesets/secondary/petalburg/tiles.png index f668ab902..3bbe86829 100755 Binary files a/data/tilesets/secondary/petalburg/tiles.png and b/data/tilesets/secondary/petalburg/tiles.png differ diff --git a/data/tilesets/secondary/rustboro/metatile_attributes.bin b/data/tilesets/secondary/rustboro/metatile_attributes.bin index e2b728c65..56b728b08 100755 Binary files a/data/tilesets/secondary/rustboro/metatile_attributes.bin and b/data/tilesets/secondary/rustboro/metatile_attributes.bin differ diff --git a/data/tilesets/secondary/rustboro/metatiles.bin b/data/tilesets/secondary/rustboro/metatiles.bin index ac2e186d8..f3a6cbb46 100755 Binary files a/data/tilesets/secondary/rustboro/metatiles.bin and b/data/tilesets/secondary/rustboro/metatiles.bin differ diff --git a/data/tilesets/secondary/rustboro/palettes/06.pal b/data/tilesets/secondary/rustboro/palettes/06.pal index 955b1d21a..be88a09cf 100755 --- a/data/tilesets/secondary/rustboro/palettes/06.pal +++ b/data/tilesets/secondary/rustboro/palettes/06.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -115 197 164 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +240 192 0 +255 255 255 +216 224 232 +184 200 224 +136 144 152 +131 131 139 +98 98 123 +64 72 104 +40 48 88 +205 213 230 +139 180 213 +128 128 136 +216 224 232 0 0 0 0 0 0 +248 224 120 diff --git a/data/tilesets/secondary/rustboro/palettes/10.pal b/data/tilesets/secondary/rustboro/palettes/10.pal index 6f0bfa7ee..d68d54ce9 100755 --- a/data/tilesets/secondary/rustboro/palettes/10.pal +++ b/data/tilesets/secondary/rustboro/palettes/10.pal @@ -5,7 +5,7 @@ JASC-PAL 255 255 255 222 222 222 172 180 189 -139 148 156 +136 144 152 131 131 139 98 98 123 65 74 106 diff --git a/data/tilesets/secondary/rustboro/tiles.png b/data/tilesets/secondary/rustboro/tiles.png index c3a3bfbab..13b3adf4f 100755 Binary files a/data/tilesets/secondary/rustboro/tiles.png and b/data/tilesets/secondary/rustboro/tiles.png differ diff --git a/data/tilesets/secondary/slateport/metatiles.bin b/data/tilesets/secondary/slateport/metatiles.bin index 72f671f71..a4e985a1d 100755 Binary files a/data/tilesets/secondary/slateport/metatiles.bin and b/data/tilesets/secondary/slateport/metatiles.bin differ diff --git a/data/tilesets/secondary/slateport/palettes/06.pal b/data/tilesets/secondary/slateport/palettes/06.pal index 0c2d8d3ca..2c624776c 100755 --- a/data/tilesets/secondary/slateport/palettes/06.pal +++ b/data/tilesets/secondary/slateport/palettes/06.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -24 41 82 +0 32 0 255 255 255 230 230 238 205 205 222 @@ -16,4 +16,4 @@ JASC-PAL 197 180 189 164 156 164 131 106 172 -115 197 164 +112 192 160 diff --git a/data/tilesets/secondary/slateport/palettes/12.pal b/data/tilesets/secondary/slateport/palettes/12.pal index 4b0812f09..589258c21 100755 --- a/data/tilesets/secondary/slateport/palettes/12.pal +++ b/data/tilesets/secondary/slateport/palettes/12.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 +96 160 72 +222 205 148 +184 168 80 +168 224 200 +216 216 176 +148 148 156 +98 98 123 +64 72 104 +184 184 152 +0 0 0 +148 205 255 +184 224 216 0 0 0 0 0 0 0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +248 224 120 diff --git a/data/tilesets/secondary/slateport/palettes/15.pal b/data/tilesets/secondary/slateport/palettes/15.pal index e7717d74e..25b623a26 100755 --- a/data/tilesets/secondary/slateport/palettes/15.pal +++ b/data/tilesets/secondary/slateport/palettes/15.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -115 197 164 -255 213 180 -255 197 148 -222 148 115 -123 65 65 -57 74 123 -41 57 98 -24 41 82 -16 32 57 -222 230 238 -255 197 90 -189 156 90 -255 98 90 -197 65 65 +0 32 0 255 255 255 -0 0 0 +230 230 238 +205 205 222 +197 180 222 +123 131 156 +98 98 123 +65 74 106 +255 231 138 +205 205 148 +172 148 90 +222 213 238 +197 180 189 +164 156 164 +131 106 172 +112 192 160 diff --git a/data/tilesets/secondary/slateport/tiles.png b/data/tilesets/secondary/slateport/tiles.png index ff7588d2d..468ab4377 100755 Binary files a/data/tilesets/secondary/slateport/tiles.png and b/data/tilesets/secondary/slateport/tiles.png differ diff --git a/data/tilesets/secondary/sootopolis/palettes/06.pal b/data/tilesets/secondary/sootopolis/palettes/06.pal index b9e93fa5f..6bb529da6 100755 --- a/data/tilesets/secondary/sootopolis/palettes/06.pal +++ b/data/tilesets/secondary/sootopolis/palettes/06.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -115 197 164 +0 192 0 255 255 255 238 238 213 222 222 180 @@ -10,10 +10,10 @@ JASC-PAL 98 98 123 65 74 106 41 49 90 -0 0 0 -0 0 0 +64 72 104 +80 88 80 156 164 156 123 131 123 98 106 98 82 90 82 -0 0 0 +248 240 176 diff --git a/data/tilesets/secondary/sootopolis/palettes/10.pal b/data/tilesets/secondary/sootopolis/palettes/10.pal index 6ca963250..46457797e 100755 --- a/data/tilesets/secondary/sootopolis/palettes/10.pal +++ b/data/tilesets/secondary/sootopolis/palettes/10.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -115 197 164 +0 230 25 139 115 106 115 90 82 90 65 65 @@ -16,4 +16,4 @@ JASC-PAL 148 74 41 82 139 197 74 115 172 -0 0 0 +246 74 65 diff --git a/data/tilesets/secondary/sootopolis/palettes/15.pal b/data/tilesets/secondary/sootopolis/palettes/15.pal index e7717d74e..ee115befc 100755 --- a/data/tilesets/secondary/sootopolis/palettes/15.pal +++ b/data/tilesets/secondary/sootopolis/palettes/15.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -115 197 164 -255 213 180 -255 197 148 -222 148 115 -123 65 65 -57 74 123 -41 57 98 -24 41 82 -16 32 57 -222 230 238 -255 197 90 -189 156 90 -255 98 90 -197 65 65 +0 192 0 255 255 255 -0 0 0 +238 238 213 +222 222 180 +180 180 148 +131 131 139 +98 98 123 +65 74 106 +41 49 90 +244 226 171 +221 205 143 +156 164 156 +123 131 123 +98 106 98 +82 90 82 +248 240 176 diff --git a/data/tilesets/secondary/sootopolis/tiles.png b/data/tilesets/secondary/sootopolis/tiles.png index d27c817f0..f9a6be215 100755 Binary files a/data/tilesets/secondary/sootopolis/tiles.png and b/data/tilesets/secondary/sootopolis/tiles.png differ diff --git a/emotions.txt b/emotions.txt new file mode 100755 index 000000000..39857a7cd --- /dev/null +++ b/emotions.txt @@ -0,0 +1,144 @@ +Happy (Special): +Specific map: +{STR_VAR_1} greeted your mom. + +Landscape/map feature: +{STR_VAR_1} greeted everyone! +{STR_VAR_1} greeted the two. (when standing in front of 2 trainers). +{STR_VAR_1} is very eager! ( gym ) must have type advantage. +{STR_VAR_1} greeted Amphy! + +Neutral (Special): +Specific map: +Why is it doing warm-up exercises? (Cerulean Gym). +{STR_VAR_1} is running along the side of the pool! (Cerulean Gym). + +Map feature: +Your pokemon is smelling the scent of the flowers. (When next to flowers in Cherrygrove City). +{STR_VAR_1} Greeted Slowbro (Cerulean city, in front of Slowbro). +{STR_VAR_1} is playing on the sand. +{STR_VAR_1} is staring fixedly at the sea. +{STR_VAR_1} is stomping on the grass! +{STR_VAR_1} is playing around, Picking bits of grass. +{STR_VAR_1} seems highly interested in the tree. +{STR_VAR_1} is looking outside and frolicking! + +Pokemon exclusive: +(MAGIKARP) is leaping around more than usual (lake of rage, During team rockets broadcast) ( Pokemon Exclusive ). + +Pokemon feature: +{STR_VAR_1} seems happy to have taken a shower! (Celadon gym) (Grass,Water type). + +Misc: +{STR_VAR_1} seems dazzled after seeing the sky. +{STR_VAR_1} is fidgeting in front of everyone (maybe baby pokemon). +{STR_VAR_1} roared! +{STR_VAR_1} spun around in a circle! + +Sad (Special): +Pokemon feature: + +Upset (Special): +Specific map(s): +It seems to have eaten something strange. It's making an odd face... (Olivine Cafe). +{STR_VAR_1} is staring at the crumbling floor (burnt tower). +{STR_VAR_1} seems to think that (Player) has disappeared! ( Morty's Gym ). + +Map feature: +{STR_VAR_1} is splashing around in the wet grass. + +Pokemon feature: +Your pokemon doesn't like splashing around on the ground (must be fire type). + +Misc: +{STR_VAR_1} seems to feel a little claustrophobic. +{STR_VAR_1} is a bit nervous about the narrow space! +{STR_VAR_1} seems uneasy and is poking (PLAYER). + +Angry (Special): +Map feature: +{STR_VAR_1} is staring at the Persian statue and glaring. +{STR_VAR_1} is glaring at the PERSIAN statue! +{STR_VAR_1} is glaring at your foe! +{STR_VAR_1} is intimidating your foe! + +Pensive (Special): +Specific map(s): +{STR_VAR_1} seems to be listening to the sound of rustling leaves. +{STR_VAR_1} is preoccupied by the ceiling, which seems like it may collapse (burnt tower). +{STR_VAR_1} is concerned about the swaying pillar (sprout tower). +Your pokemon is drooling a little (Olivine Cafe). +{STR_VAR_1} is preoccupied by the floor, which seems like it may collapse (burnt tower). + +Map feature: +{STR_VAR_1} is staring intently at the reflection of its face. +{STR_VAR_1} seems interested in Amphy... +{STR_VAR_1} has a sleepy look on its face... (Near Jigglypuff in Radio Tower.). + +Misc: +Your pokemon turned to face the other way, showing a defiant expression. + +Music (Special): +Map feature: +{STR_VAR_1} is pulling out the grass. +{STR_VAR_1} is listening intently to the sound of the waves. +Your pokemon seems to be enjoying sliding around! +{STR_VAR_1} is steadily observing the flow of the river. +{STR_VAR_1} is noticing the scent of the grass. +Misc: +{STR_VAR_1} seems happy at the sight of water on the window! +{STR_VAR_1} is looking up at the ceiling. +{STR_VAR_1} seems to be enjoying this a little bit! +{STR_VAR_1} is wandering around enjoying the forest scenery. +{STR_VAR_1} is playing around in the fallen leaves. +{STR_VAR_1} is playing around with a leaf. +{STR_VAR_1} is playing around, touching the leaves. +{STR_VAR_1} is rolling around in the grass. +{STR_VAR_1} seems to want to return to the lab (after you receive the Mystery egg). +Your pokemon is staring at the various items. +{STR_VAR_1} is looking up the tall mountain... (Mt. Mortar). +{STR_VAR_1} seems concerned about the waterfall. +{STR_VAR_1} is sniffing around the room. (Inside Hero's Room). +{STR_VAR_1} is dancing around the pillar! (Seems to occur more for Bellsprout)(sprout tower). +{STR_VAR_1} swayed around, dancing in a strange manner.(Seems to occur more for Bellsprout)(sprout tower). +{STR_VAR_1} swayed and danced around as it pleased (Seems to occur more for Bellsprout)(sprout tower). +Your Pokemon is playing around and splashing in the water! (Water's edge). +{STR_VAR_1} is poking at garbage (Goldenrods underground path). +Your pokemon is rolling a screw from a bicycle around. +{STR_VAR_1} is clawing the grass! +{STR_VAR_1} is looking around restlessly at the Forest. +{STR_VAR_1} is playfully nibbling at the ground. +(CYNDAQUIL) blew out a fireball. ( Pokemon Exclusive ). +(CYNDAQUIL) blew out a couple of fireballs. ( Pokemon Exclusive ). +(CHIKORITA) is waving its leaf around ( Pokemon Exclusive ). +(CHIKORITA) is making its leaf twitch ( Pokemon Exclusive ). +(TODADILE) is moving its jaw ( Pokemon Exclusive ). +(TODADILE) is opening and closing its mouth ( Pokemon Exclusive ). +{STR_VAR_1} is playing in the puddle. +{STR_VAR_1} is gazing restlessly at the building ( in goldenrod). + +Surprised (Special): +{STR_VAR_1} seems to have gotten caught in the clumps of grass. +{STR_VAR_1} slipped on the floor and seems likely to fall! +Your pokemon is very concerned about the room below ( Burnt tower ). +Careful! seems like the floor could collapse, and it might fall. +{STR_VAR_1} seems to think that (Player) has disappeared! ( Morty's Gym ). +{STR_VAR_1} gazed surprisingly at the rock! +Huh? your pokemon found something in top of the mountain ( outside Mt. Mortar) (!). +{STR_VAR_1} got tangled up in the branches and almost fell down! +{STR_VAR_1} looked up at the sky and shouted loudly. +{STR_VAR_1} seems to have found something! +{STR_VAR_1} almost forgot it was holding that (Held item). +{STR_VAR_1} is happy at the sight of the water on the window! +{STR_VAR_1} was surprised by the sounds in the thicket! +Seems the breeze is coming from here. +Oh! its slipping and came over here for support (on ice). +{STR_VAR_1} seems to have gotten a bit of zap! (Power plant). +{STR_VAR_1} is dazzled by the shiny brightness of the bridge! (Standing on Nugget Bridge). +{STR_VAR_1} is slipping on the water and almost fell over! +Curious (Special): +{STR_VAR_1} feels something... (burnt tower basement). +{STR_VAR_1} seems to be hearing a strange sound. (Rocket hideout in Mahogany). +{STR_VAR_1} seems to be hearing a strange sound. (Team rocket hide out). +{STR_VAR_1} is concerned about the other side of the fence, it seems. +{STR_VAR_1} is looking at the machine in a strange manner. (Power plant). diff --git a/extract_sprites.py b/extract_sprites.py new file mode 100755 index 000000000..32e21aaa5 --- /dev/null +++ b/extract_sprites.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +""" Extract sprites from HGSS follower spritesheets. """ +import os.path +import subprocess +import sys +from glob import glob + +import png + + +SPRITESHEETS = [('gen1.png', 15, 11, 1)] +output_dir = 'sprites' +index_to_name = {} +with open('names.txt', 'r') as f: + for line in f: + index, name = line.split(' ')[:2] + name = name.strip() + index_to_name[int(index)] = name.lower() +name_to_index = {v: k for k, v in index_to_name.items()} +PKMN_GRAPHICS = os.path.join('graphics', 'pokemon') + + +def extract_sprites(spritesheet): + path, width, height, offset = spritesheet + for y in range(height): + for x in range(width): + if x == 3 and y == 0 or x == 10 and y == 1: + continue + output_path = os.path.join(output_dir, f'{offset:03d}.png') + subprocess.run(['convert', '-extract', f'64x128+{x*(64+1)}+{y*(128+1)}', path, output_path], check=True) + offset += 1 + + +def stack_sprite(name, path): + joinp = os.path.join + frames = [joinp(path, 'down', name), joinp(path, 'down', 'frame2', name), + joinp(path, 'up', name), joinp(path, 'up', 'frame2', name), + joinp(path, 'left', name), joinp(path, 'left', 'frame2', name)] + output = joinp(path, name) + subprocess.run(['convert'] + frames + ['+append', output], check=True) + print(f'Stacked {output}') + +def canonicalize_names(): + for path in glob('overworld/**/*.png', recursive=True): + head, tail = os.path.split(path) + name, ext = os.path.splitext(tail) + try: + num = int(name) + except ValueError: + continue + new_name = f'{num:03d}' + new_path = os.path.join(head, new_name+ext) + os.rename(path, new_path) + print(path, '->', new_path) + +def closest_color(c, palette): + min_d = float('inf') + best = 0 + r1, g1, b1 = c + for i, (r2, g2, b2) in enumerate(palette[1:], 1): + # Color diff from https://stackoverflow.com/questions/1847092/given-an-rgb-value-what-would-be-the-best-way-to-find-the-closest-match-in-the-d + d = ((r2-r1)*0.30)**2 + ((g2-g1)*0.59)**2 + ((b2-b1)*0.11)**2 + if d < min_d: + min_d = d + best = i + return best + +def apply_palette(palette_file, input_file, output_file): # Apply one file's palette to another + plt = png.Reader(palette_file) + plt.read() + target_palette = tuple(c[:3] for c in plt.palette()) + inp = png.Reader(input_file) + w, h, rows, _ = inp.read() + src_palette = tuple(c[:3] for c in inp.palette()) + with open(output_file, 'wb') as f: + new_rows = [] + for row in rows: + new_rows.append([closest_color(src_palette[c], target_palette) if c else 0 for c in row]) + w = png.Writer(width=w, height=h, bitdepth=4, palette=target_palette) + w.write(f, new_rows) + +def paletteify(path, output_path=None): + output_path = output_path or path + joinp = os.path.join + _, tail = os.path.split(path) + species, _ = os.path.splitext(tail) + front = png.Reader(joinp(PKMN_GRAPHICS, species, 'anim_front.png')) + front.read() + target_palette = tuple(c[:3] for c in front.palette()) + r, g, b = target_palette[0] + color = f'rgb({r},{g},{b})' + # Strip alpha color + subprocess.run(['convert', path, '-background', color, '-alpha', 'remove', output_path], check=True) + apply_palette(joinp(PKMN_GRAPHICS, species, 'anim_front.png'), output_path, output_path) + +# Sprites from https://veekun.com/dex/downloads + +if __name__ == '__main__': + args = sys.argv[1:] + if args: + paletteify(args[0]) + else: + for path in sorted(glob('overworld/*.png')): + _, tail = os.path.split(path) + name, _ = os.path.splitext(tail) + output_path = os.path.join('graphics/object_events/pics/pokemon', f'{name}.png') + try: + paletteify(path, output_path) + except Exception as e: + print(name, e.__class__.__name__, e, file=sys.stderr) diff --git a/follower_emotions.py b/follower_emotions.py new file mode 100755 index 000000000..ff04b048a --- /dev/null +++ b/follower_emotions.py @@ -0,0 +1,50 @@ +""" Processes & outputs follower emotion messages """ +import sys +import re +import textwrap + +blank_regex = re.compile(r'\(?_+\)?') + + +# Converts a series of message lines to a better format +def convert_messages(infile, outfile='emotions.txt'): + with open(infile, 'r') as f_in, open(outfile, 'w') as f_out: + for line in f_in: + line = line.rstrip('\n') + if line and line[0] == '-': + line = line[1:] + line = line.lstrip() + if not line: + continue + line = blank_regex.sub('{STR_VAR_1}', line) + if line[-1] not in ('.', '?', '!', ':'): + line += '.' + print(line) + f_out.write('\n' + line) + +# Prepares a string for field-message display, performing line-wrapping, etc +# Does not add a terminator, as this is done by _("") +def prepare_string(s): + lines = textwrap.wrap(s, width=36) # Width of message window + s = lines[0] + for i, line in enumerate(lines[1:]): + ending = r'\p' if i % 2 else r'\n' + s += ending + line + return s + + +# Exports up to n messages in C format to outfile +def export_messages(infile, outfile, n=None, indent=0, start=0): + with open(infile, 'r') as f_in: + lines = f_in.readlines() + if n is not None: + lines = lines[:n] + with open(outfile, 'w') as f_out: + codelines = [' '*indent + f'static const u8 sCondMsg{start+i:02d}[] = _("{prepare_string(s)}");' for i, s in enumerate(lines)] + f_out.write('\n'.join(codelines)) + print(f'{len(lines)} lines written') + return len(lines) + + +if __name__ == '__main__': + export_messages('emotions.txt', 'emotions.h', n=4, start=42) diff --git a/front_palette.py b/front_palette.py new file mode 100755 index 000000000..602c4e8e1 --- /dev/null +++ b/front_palette.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +""" Extract sprites from HGSS follower spritesheets. """ +import os.path +from os.path import join as joinp +import subprocess +import sys +from glob import glob + +import png +from tqdm import tqdm + + +def stack_sprite(name, path): + frames = [joinp(path, 'down', name), joinp(path, 'down', 'frame2', name), + joinp(path, 'up', name), joinp(path, 'up', 'frame2', name), + joinp(path, 'left', name), joinp(path, 'left', 'frame2', name)] + output = joinp(path, name) + subprocess.run(['convert'] + frames + ['+append', output], check=True) + print(f'Stacked {output}') + +def closest_color(c, palette): + min_d = float('inf') + best = 0 + r1, g1, b1 = c + for i, (r2, g2, b2) in enumerate(palette[1:], 1): + # Color diff from https://stackoverflow.com/questions/1847092/given-an-rgb-value-what-would-be-the-best-way-to-find-the-closest-match-in-the-d + d = ((r2-r1)*0.30)**2 + ((g2-g1)*0.59)**2 + ((b2-b1)*0.11)**2 + if d < min_d: + min_d = d + best = i + return best + +def apply_palette(palette_file, input_file, output_file): # Apply one file's palette to another + plt = png.Reader(palette_file) + plt.read() + target_palette = tuple(c[:3] for c in plt.palette()) + inp = png.Reader(input_file) + w, h, rows, info = inp.read() + src_palette = tuple(c[:3] for c in inp.palette()) + new_rows = [[closest_color(src_palette[c][:3], target_palette) if c else 0 for c in row] for row in rows] + with open(output_file, 'wb') as f: + w = png.Writer(width=w, height=h, bitdepth=4, palette=target_palette) + w.write(f, new_rows) + +# Sprites from https://veekun.com/dex/downloads + +def apply_front_palettes(ow_dir, project_root=''): + mon_graphics = joinp(project_root, 'graphics', 'pokemon') + t = tqdm(sorted(glob(joinp(ow_dir, '*.png')))) + spaces = 0 + for path in t: + name, _ = os.path.splitext(os.path.basename(path)) + spaces = min(max(len(name), spaces), 10) + t.set_description(name + ' '*(spaces-len(name))) + output_path = joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', f'{name}.png') + if 'unown' in name: + palette_path = joinp(mon_graphics, 'unown', 'a', 'anim_front.png') + elif name == 'castform': + palette_path = joinp(mon_graphics, name, 'anim_front_normal_form.png') + else: + palette_path = joinp(mon_graphics, name, 'anim_front.png') + try: + apply_palette(palette_path, path, output_path) + except Exception as e: + t.write(f'{name}: {e.__class__.__name__}: {e}', file=sys.stderr) + + +if __name__ == '__main__': + apply_front_palettes('overworld') diff --git a/gflib/sprite.c b/gflib/sprite.c index c489eb6a4..89771fd66 100755 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -584,7 +584,7 @@ u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x, s16 y, if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK) InitSpriteAffineAnim(sprite); - if (template->paletteTag != TAG_NONE) + if (template->paletteTag != TAG_NONE) // TODO: Load sprite palette if tag not present sprite->oam.paletteNum = IndexOfSpritePaletteTag(template->paletteTag); return index; @@ -1497,6 +1497,21 @@ u16 LoadSpriteSheet(const struct SpriteSheet *sheet) } } +// Like LoadSpriteSheet, but checks if already, and uses template image frames +u16 LoadSpriteSheetByTemplate(const struct SpriteTemplate *template, u8 frame) { + u16 tileStart; + struct SpriteSheet tempSheet; + // error if template is null or tile tag or images not set + if (!template || template->tileTag == TAG_NONE || !template->images) + return 0xFFFF; + if ((tileStart = GetSpriteTileStartByTag(template->tileTag)) != 0xFFFF) // return if already loaded + return tileStart; + tempSheet.data = template->images[frame].data; + tempSheet.size = template->images[frame].size; + tempSheet.tag = template->tileTag; + return LoadSpriteSheet(&tempSheet); +} + void LoadSpriteSheets(const struct SpriteSheet *sheets) { u8 i; @@ -1587,6 +1602,8 @@ void FreeAllSpritePalettes(void) u8 LoadSpritePalette(const struct SpritePalette *palette) { u8 index = IndexOfSpritePaletteTag(palette->tag); + u8 i; + u16 *debugPtr = (u16*) 0x0203d800; if (index != 0xFF) return index; @@ -1600,6 +1617,9 @@ u8 LoadSpritePalette(const struct SpritePalette *palette) else { sSpritePaletteTags[index] = palette->tag; + for (i = 0; i < 16; i++) { + debugPtr[i] = sSpritePaletteTags[i]; + } DoLoadSpritePalette(palette->data, index * 16); return index; } @@ -1613,9 +1633,16 @@ void LoadSpritePalettes(const struct SpritePalette *palettes) break; } +u8 LoadSpritePaletteInSlot(const struct SpritePalette *palette, u8 paletteNum) { + paletteNum = min(15, paletteNum); + sSpritePaletteTags[paletteNum] = palette->tag; + DoLoadSpritePalette(palette->data, paletteNum * 16); + return paletteNum; +} + void DoLoadSpritePalette(const u16 *src, u16 paletteOffset) { - LoadPalette(src, OBJ_PLTT_OFFSET + paletteOffset, PLTT_SIZE_4BPP); + LoadPaletteFast(src, paletteOffset + OBJ_PLTT_OFFSET, PLTT_SIZE_4BPP); } u8 AllocSpritePalette(u16 tag) @@ -1650,8 +1677,12 @@ u16 GetSpritePaletteTagByPaletteNum(u8 paletteNum) void FreeSpritePaletteByTag(u16 tag) { u8 index = IndexOfSpritePaletteTag(tag); - if (index != 0xFF) - sSpritePaletteTags[index] = TAG_NONE; + if (index != 0xFF) { + sSpritePaletteTags[index] = TAG_NONE; + #if DEBUG + FillPalette(0, index * 16 + 0x100, 32); + #endif + } } void SetSubspriteTables(struct Sprite *sprite, const struct SubspriteTable *subspriteTables) diff --git a/gflib/sprite.h b/gflib/sprite.h index 86527bc4c..0ec8c1a46 100755 --- a/gflib/sprite.h +++ b/gflib/sprite.h @@ -296,6 +296,7 @@ void FreeOamMatrix(u8 matrixNum); void InitSpriteAffineAnim(struct Sprite *sprite); void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotation); u16 LoadSpriteSheet(const struct SpriteSheet *sheet); +u16 LoadSpriteSheetByTemplate(const struct SpriteTemplate *template, u8 frame); void LoadSpriteSheets(const struct SpriteSheet *sheets); u16 AllocTilesForSpriteSheet(struct SpriteSheet *sheet); void AllocTilesForSpriteSheets(struct SpriteSheet *sheets); @@ -309,6 +310,7 @@ void RequestSpriteSheetCopy(const struct SpriteSheet *sheet); u16 LoadSpriteSheetDeferred(const struct SpriteSheet *sheet); void FreeAllSpritePalettes(void); u8 LoadSpritePalette(const struct SpritePalette *palette); +u8 LoadSpritePaletteInSlot(const struct SpritePalette *palette, u8 paletteNum); void LoadSpritePalettes(const struct SpritePalette *palettes); u8 AllocSpritePalette(u16 tag); u8 IndexOfSpritePaletteTag(u16 tag); diff --git a/graphics/field_effects/pics/bug_tracks.png b/graphics/field_effects/pics/bug_tracks.png new file mode 100755 index 000000000..b7062d253 Binary files /dev/null and b/graphics/field_effects/pics/bug_tracks.png differ diff --git a/graphics/field_effects/pics/shadow_extra_large.png b/graphics/field_effects/pics/shadow_extra_large.png index 765a5291a..eb334a976 100755 Binary files a/graphics/field_effects/pics/shadow_extra_large.png and b/graphics/field_effects/pics/shadow_extra_large.png differ diff --git a/graphics/field_effects/pics/shadow_large.png b/graphics/field_effects/pics/shadow_large.png index e917823b0..1695208af 100755 Binary files a/graphics/field_effects/pics/shadow_large.png and b/graphics/field_effects/pics/shadow_large.png differ diff --git a/graphics/field_effects/pics/shadow_medium.png b/graphics/field_effects/pics/shadow_medium.png index 83ab6e1f6..4327a053d 100755 Binary files a/graphics/field_effects/pics/shadow_medium.png and b/graphics/field_effects/pics/shadow_medium.png differ diff --git a/graphics/field_effects/pics/shadow_small.png b/graphics/field_effects/pics/shadow_small.png index f5feada2b..6cd37c5f2 100755 Binary files a/graphics/field_effects/pics/shadow_small.png and b/graphics/field_effects/pics/shadow_small.png differ diff --git a/graphics/field_effects/pics/slither_tracks.png b/graphics/field_effects/pics/slither_tracks.png new file mode 100755 index 000000000..7c8247c34 Binary files /dev/null and b/graphics/field_effects/pics/slither_tracks.png differ diff --git a/graphics/field_effects/pics/spot_tracks.png b/graphics/field_effects/pics/spot_tracks.png new file mode 100755 index 000000000..cd8c9c0cf Binary files /dev/null and b/graphics/field_effects/pics/spot_tracks.png differ diff --git a/graphics/misc/emotes.pal b/graphics/misc/emotes.pal new file mode 100755 index 000000000..295fc0223 --- /dev/null +++ b/graphics/misc/emotes.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 0 +151 48 0 +74 75 87 +88 88 97 +164 72 167 +248 63 2 +78 128 207 +48 160 0 +237 131 0 +205 144 203 +168 168 178 +251 167 159 +240 176 183 +219 181 221 +165 225 69 +247 249 246 diff --git a/graphics/misc/emotes.png b/graphics/misc/emotes.png new file mode 100755 index 000000000..2460eaf99 Binary files /dev/null and b/graphics/misc/emotes.png differ diff --git a/graphics/object_events/palettes/light.pal b/graphics/object_events/palettes/light.pal new file mode 100755 index 000000000..92a4477f7 --- /dev/null +++ b/graphics/object_events/palettes/light.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +110 198 165 +64 61 42 +77 73 50 +85 81 58 +100 94 66 +111 105 75 +119 112 77 +140 131 92 +154 145 103 +171 159 111 +186 174 123 +197 183 128 +209 195 139 +224 209 146 +234 219 155 +249 232 161 diff --git a/graphics/object_events/palettes/light2.pal b/graphics/object_events/palettes/light2.pal new file mode 100755 index 000000000..3d61a3020 --- /dev/null +++ b/graphics/object_events/palettes/light2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 202 166 +58 54 31 +67 62 33 +96 89 53 +110 102 57 +121 111 67 +128 119 66 +156 143 82 +166 155 96 +185 169 100 +199 183 112 +211 192 113 +223 203 123 +237 218 129 +247 227 137 +255 237 147 diff --git a/graphics/object_events/palettes/neon_light.pal b/graphics/object_events/palettes/neon_light.pal new file mode 100755 index 000000000..dd287fc64 --- /dev/null +++ b/graphics/object_events/palettes/neon_light.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +104 203 168 +19 48 64 +35 87 115 +58 132 140 +69 156 166 +77 193 254 +106 239 254 +27 68 89 +64 22 19 +115 39 34 +166 57 49 +191 66 57 +222 77 67 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/object_events/pics/misc/animated_ball.png b/graphics/object_events/pics/misc/animated_ball.png new file mode 100755 index 000000000..534e66c7b Binary files /dev/null and b/graphics/object_events/pics/misc/animated_ball.png differ diff --git a/graphics/object_events/pics/misc/light.png b/graphics/object_events/pics/misc/light.png new file mode 100755 index 000000000..69a158b5d Binary files /dev/null and b/graphics/object_events/pics/misc/light.png differ diff --git a/graphics/object_events/pics/misc/mart_light.png b/graphics/object_events/pics/misc/mart_light.png new file mode 100755 index 000000000..7ec1a434e Binary files /dev/null and b/graphics/object_events/pics/misc/mart_light.png differ diff --git a/graphics/object_events/pics/misc/mart_light.pnga b/graphics/object_events/pics/misc/mart_light.pnga new file mode 100755 index 000000000..7ec1a434e Binary files /dev/null and b/graphics/object_events/pics/misc/mart_light.pnga differ diff --git a/graphics/object_events/pics/misc/poke_center_light.png b/graphics/object_events/pics/misc/poke_center_light.png new file mode 100755 index 000000000..42d19f51c Binary files /dev/null and b/graphics/object_events/pics/misc/poke_center_light.png differ diff --git a/graphics/object_events/pics/pokemon/abra.png b/graphics/object_events/pics/pokemon/abra.png new file mode 100755 index 000000000..69613dd5d Binary files /dev/null and b/graphics/object_events/pics/pokemon/abra.png differ diff --git a/graphics/object_events/pics/pokemon/absol.png b/graphics/object_events/pics/pokemon/absol.png new file mode 100755 index 000000000..7e13de7de Binary files /dev/null and b/graphics/object_events/pics/pokemon/absol.png differ diff --git a/graphics/object_events/pics/pokemon/aerodactyl.png b/graphics/object_events/pics/pokemon/aerodactyl.png new file mode 100755 index 000000000..fabef1ad6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/aerodactyl.png differ diff --git a/graphics/object_events/pics/pokemon/aggron.png b/graphics/object_events/pics/pokemon/aggron.png new file mode 100755 index 000000000..5bd984899 Binary files /dev/null and b/graphics/object_events/pics/pokemon/aggron.png differ diff --git a/graphics/object_events/pics/pokemon/aipom.png b/graphics/object_events/pics/pokemon/aipom.png new file mode 100755 index 000000000..cbddc9482 Binary files /dev/null and b/graphics/object_events/pics/pokemon/aipom.png differ diff --git a/graphics/object_events/pics/pokemon/alakazam.png b/graphics/object_events/pics/pokemon/alakazam.png new file mode 100755 index 000000000..f9d12d9be Binary files /dev/null and b/graphics/object_events/pics/pokemon/alakazam.png differ diff --git a/graphics/object_events/pics/pokemon/altaria.png b/graphics/object_events/pics/pokemon/altaria.png new file mode 100755 index 000000000..4846085ba Binary files /dev/null and b/graphics/object_events/pics/pokemon/altaria.png differ diff --git a/graphics/object_events/pics/pokemon/ampharos.png b/graphics/object_events/pics/pokemon/ampharos.png new file mode 100755 index 000000000..2386f6d45 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ampharos.png differ diff --git a/graphics/object_events/pics/pokemon/anorith.png b/graphics/object_events/pics/pokemon/anorith.png new file mode 100755 index 000000000..4588e2fe1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/anorith.png differ diff --git a/graphics/object_events/pics/pokemon/arbok.png b/graphics/object_events/pics/pokemon/arbok.png new file mode 100755 index 000000000..d99a2b4a9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/arbok.png differ diff --git a/graphics/object_events/pics/pokemon/arcanine.png b/graphics/object_events/pics/pokemon/arcanine.png new file mode 100755 index 000000000..b3263b06a Binary files /dev/null and b/graphics/object_events/pics/pokemon/arcanine.png differ diff --git a/graphics/object_events/pics/pokemon/ariados.png b/graphics/object_events/pics/pokemon/ariados.png new file mode 100755 index 000000000..7c9bea26a Binary files /dev/null and b/graphics/object_events/pics/pokemon/ariados.png differ diff --git a/graphics/object_events/pics/pokemon/armaldo.png b/graphics/object_events/pics/pokemon/armaldo.png new file mode 100755 index 000000000..1b60202da Binary files /dev/null and b/graphics/object_events/pics/pokemon/armaldo.png differ diff --git a/graphics/object_events/pics/pokemon/aron.png b/graphics/object_events/pics/pokemon/aron.png new file mode 100755 index 000000000..cb3006d44 Binary files /dev/null and b/graphics/object_events/pics/pokemon/aron.png differ diff --git a/graphics/object_events/pics/pokemon/articuno.png b/graphics/object_events/pics/pokemon/articuno.png new file mode 100755 index 000000000..776024b04 Binary files /dev/null and b/graphics/object_events/pics/pokemon/articuno.png differ diff --git a/graphics/object_events/pics/pokemon/azumarill.png b/graphics/object_events/pics/pokemon/azumarill.png index 84b07ea5b..fc9dade92 100755 Binary files a/graphics/object_events/pics/pokemon/azumarill.png and b/graphics/object_events/pics/pokemon/azumarill.png differ diff --git a/graphics/object_events/pics/pokemon/azumarill_old.png b/graphics/object_events/pics/pokemon/azumarill_old.png new file mode 100755 index 000000000..84b07ea5b Binary files /dev/null and b/graphics/object_events/pics/pokemon/azumarill_old.png differ diff --git a/graphics/object_events/pics/pokemon/azurill.png b/graphics/object_events/pics/pokemon/azurill.png index 99cd25fe5..b0dc77c73 100755 Binary files a/graphics/object_events/pics/pokemon/azurill.png and b/graphics/object_events/pics/pokemon/azurill.png differ diff --git a/graphics/object_events/pics/pokemon/azurill_old.png b/graphics/object_events/pics/pokemon/azurill_old.png new file mode 100755 index 000000000..99cd25fe5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/azurill_old.png differ diff --git a/graphics/object_events/pics/pokemon/bagon.png b/graphics/object_events/pics/pokemon/bagon.png new file mode 100755 index 000000000..99a322d4b Binary files /dev/null and b/graphics/object_events/pics/pokemon/bagon.png differ diff --git a/graphics/object_events/pics/pokemon/baltoy.png b/graphics/object_events/pics/pokemon/baltoy.png new file mode 100755 index 000000000..e84afb661 Binary files /dev/null and b/graphics/object_events/pics/pokemon/baltoy.png differ diff --git a/graphics/object_events/pics/pokemon/banette.png b/graphics/object_events/pics/pokemon/banette.png new file mode 100755 index 000000000..14223bf88 Binary files /dev/null and b/graphics/object_events/pics/pokemon/banette.png differ diff --git a/graphics/object_events/pics/pokemon/barboach.png b/graphics/object_events/pics/pokemon/barboach.png new file mode 100755 index 000000000..af6e0f1f4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/barboach.png differ diff --git a/graphics/object_events/pics/pokemon/bayleef.png b/graphics/object_events/pics/pokemon/bayleef.png new file mode 100755 index 000000000..58545acd1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/bayleef.png differ diff --git a/graphics/object_events/pics/pokemon/beautifly.png b/graphics/object_events/pics/pokemon/beautifly.png new file mode 100755 index 000000000..4f2456e85 Binary files /dev/null and b/graphics/object_events/pics/pokemon/beautifly.png differ diff --git a/graphics/object_events/pics/pokemon/beedrill.png b/graphics/object_events/pics/pokemon/beedrill.png new file mode 100755 index 000000000..7a163b629 Binary files /dev/null and b/graphics/object_events/pics/pokemon/beedrill.png differ diff --git a/graphics/object_events/pics/pokemon/beldum.png b/graphics/object_events/pics/pokemon/beldum.png new file mode 100755 index 000000000..df2d68667 Binary files /dev/null and b/graphics/object_events/pics/pokemon/beldum.png differ diff --git a/graphics/object_events/pics/pokemon/bellossom.png b/graphics/object_events/pics/pokemon/bellossom.png new file mode 100755 index 000000000..70a83c2f4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/bellossom.png differ diff --git a/graphics/object_events/pics/pokemon/bellsprout.png b/graphics/object_events/pics/pokemon/bellsprout.png new file mode 100755 index 000000000..bf21afbed Binary files /dev/null and b/graphics/object_events/pics/pokemon/bellsprout.png differ diff --git a/graphics/object_events/pics/pokemon/blastoise.png b/graphics/object_events/pics/pokemon/blastoise.png new file mode 100755 index 000000000..1699c8d16 Binary files /dev/null and b/graphics/object_events/pics/pokemon/blastoise.png differ diff --git a/graphics/object_events/pics/pokemon/blaziken.png b/graphics/object_events/pics/pokemon/blaziken.png new file mode 100755 index 000000000..feb067527 Binary files /dev/null and b/graphics/object_events/pics/pokemon/blaziken.png differ diff --git a/graphics/object_events/pics/pokemon/blissey.png b/graphics/object_events/pics/pokemon/blissey.png new file mode 100755 index 000000000..8248ba521 Binary files /dev/null and b/graphics/object_events/pics/pokemon/blissey.png differ diff --git a/graphics/object_events/pics/pokemon/breloom.png b/graphics/object_events/pics/pokemon/breloom.png new file mode 100755 index 000000000..cf8eb0c71 Binary files /dev/null and b/graphics/object_events/pics/pokemon/breloom.png differ diff --git a/graphics/object_events/pics/pokemon/bulbasaur.png b/graphics/object_events/pics/pokemon/bulbasaur.png new file mode 100755 index 000000000..a37a56b79 Binary files /dev/null and b/graphics/object_events/pics/pokemon/bulbasaur.png differ diff --git a/graphics/object_events/pics/pokemon/butterfree.png b/graphics/object_events/pics/pokemon/butterfree.png new file mode 100755 index 000000000..805ee1fdf Binary files /dev/null and b/graphics/object_events/pics/pokemon/butterfree.png differ diff --git a/graphics/object_events/pics/pokemon/cacnea.png b/graphics/object_events/pics/pokemon/cacnea.png new file mode 100755 index 000000000..0997129a4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/cacnea.png differ diff --git a/graphics/object_events/pics/pokemon/cacturne.png b/graphics/object_events/pics/pokemon/cacturne.png new file mode 100755 index 000000000..3bb30ca68 Binary files /dev/null and b/graphics/object_events/pics/pokemon/cacturne.png differ diff --git a/graphics/object_events/pics/pokemon/camerupt.png b/graphics/object_events/pics/pokemon/camerupt.png new file mode 100755 index 000000000..b190664b6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/camerupt.png differ diff --git a/graphics/object_events/pics/pokemon/carvanha.png b/graphics/object_events/pics/pokemon/carvanha.png new file mode 100755 index 000000000..7861390af Binary files /dev/null and b/graphics/object_events/pics/pokemon/carvanha.png differ diff --git a/graphics/object_events/pics/pokemon/cascoon.png b/graphics/object_events/pics/pokemon/cascoon.png new file mode 100755 index 000000000..104aa23c3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/cascoon.png differ diff --git a/graphics/object_events/pics/pokemon/castform.png b/graphics/object_events/pics/pokemon/castform.png new file mode 100755 index 000000000..5c7574a78 Binary files /dev/null and b/graphics/object_events/pics/pokemon/castform.png differ diff --git a/graphics/object_events/pics/pokemon/castform_rainy.png b/graphics/object_events/pics/pokemon/castform_rainy.png new file mode 100755 index 000000000..b2d279c21 Binary files /dev/null and b/graphics/object_events/pics/pokemon/castform_rainy.png differ diff --git a/graphics/object_events/pics/pokemon/castform_snowy.png b/graphics/object_events/pics/pokemon/castform_snowy.png new file mode 100755 index 000000000..9cf4ca002 Binary files /dev/null and b/graphics/object_events/pics/pokemon/castform_snowy.png differ diff --git a/graphics/object_events/pics/pokemon/castform_sunny.png b/graphics/object_events/pics/pokemon/castform_sunny.png new file mode 100755 index 000000000..4d26be85f Binary files /dev/null and b/graphics/object_events/pics/pokemon/castform_sunny.png differ diff --git a/graphics/object_events/pics/pokemon/caterpie.png b/graphics/object_events/pics/pokemon/caterpie.png new file mode 100755 index 000000000..581a2b5fa Binary files /dev/null and b/graphics/object_events/pics/pokemon/caterpie.png differ diff --git a/graphics/object_events/pics/pokemon/celebi.png b/graphics/object_events/pics/pokemon/celebi.png new file mode 100755 index 000000000..45f930fdb Binary files /dev/null and b/graphics/object_events/pics/pokemon/celebi.png differ diff --git a/graphics/object_events/pics/pokemon/chansey.png b/graphics/object_events/pics/pokemon/chansey.png new file mode 100755 index 000000000..b8237d18c Binary files /dev/null and b/graphics/object_events/pics/pokemon/chansey.png differ diff --git a/graphics/object_events/pics/pokemon/charizard.png b/graphics/object_events/pics/pokemon/charizard.png new file mode 100755 index 000000000..a5ae65cae Binary files /dev/null and b/graphics/object_events/pics/pokemon/charizard.png differ diff --git a/graphics/object_events/pics/pokemon/charmander.png b/graphics/object_events/pics/pokemon/charmander.png new file mode 100755 index 000000000..8cc5d1a25 Binary files /dev/null and b/graphics/object_events/pics/pokemon/charmander.png differ diff --git a/graphics/object_events/pics/pokemon/charmeleon.png b/graphics/object_events/pics/pokemon/charmeleon.png new file mode 100755 index 000000000..99d38dbaf Binary files /dev/null and b/graphics/object_events/pics/pokemon/charmeleon.png differ diff --git a/graphics/object_events/pics/pokemon/chikorita.png b/graphics/object_events/pics/pokemon/chikorita.png new file mode 100755 index 000000000..a888d2bb0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/chikorita.png differ diff --git a/graphics/object_events/pics/pokemon/chimecho.png b/graphics/object_events/pics/pokemon/chimecho.png new file mode 100755 index 000000000..bb21ff26f Binary files /dev/null and b/graphics/object_events/pics/pokemon/chimecho.png differ diff --git a/graphics/object_events/pics/pokemon/chinchou.png b/graphics/object_events/pics/pokemon/chinchou.png new file mode 100755 index 000000000..c6550ccdd Binary files /dev/null and b/graphics/object_events/pics/pokemon/chinchou.png differ diff --git a/graphics/object_events/pics/pokemon/clamperl.png b/graphics/object_events/pics/pokemon/clamperl.png new file mode 100755 index 000000000..2a4f33729 Binary files /dev/null and b/graphics/object_events/pics/pokemon/clamperl.png differ diff --git a/graphics/object_events/pics/pokemon/claydol.png b/graphics/object_events/pics/pokemon/claydol.png new file mode 100755 index 000000000..13bd51356 Binary files /dev/null and b/graphics/object_events/pics/pokemon/claydol.png differ diff --git a/graphics/object_events/pics/pokemon/clefable.png b/graphics/object_events/pics/pokemon/clefable.png new file mode 100755 index 000000000..7d59d4442 Binary files /dev/null and b/graphics/object_events/pics/pokemon/clefable.png differ diff --git a/graphics/object_events/pics/pokemon/clefairy.png b/graphics/object_events/pics/pokemon/clefairy.png new file mode 100755 index 000000000..b1ab1f4ec Binary files /dev/null and b/graphics/object_events/pics/pokemon/clefairy.png differ diff --git a/graphics/object_events/pics/pokemon/cleffa.png b/graphics/object_events/pics/pokemon/cleffa.png new file mode 100755 index 000000000..2adc34fac Binary files /dev/null and b/graphics/object_events/pics/pokemon/cleffa.png differ diff --git a/graphics/object_events/pics/pokemon/cloyster.png b/graphics/object_events/pics/pokemon/cloyster.png new file mode 100755 index 000000000..d979526f7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/cloyster.png differ diff --git a/graphics/object_events/pics/pokemon/combusken.png b/graphics/object_events/pics/pokemon/combusken.png new file mode 100755 index 000000000..b95ae2af8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/combusken.png differ diff --git a/graphics/object_events/pics/pokemon/corphish.png b/graphics/object_events/pics/pokemon/corphish.png new file mode 100755 index 000000000..49f3ad764 Binary files /dev/null and b/graphics/object_events/pics/pokemon/corphish.png differ diff --git a/graphics/object_events/pics/pokemon/corsola.png b/graphics/object_events/pics/pokemon/corsola.png new file mode 100755 index 000000000..8214f1612 Binary files /dev/null and b/graphics/object_events/pics/pokemon/corsola.png differ diff --git a/graphics/object_events/pics/pokemon/cradily.png b/graphics/object_events/pics/pokemon/cradily.png new file mode 100755 index 000000000..50f19dfa3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/cradily.png differ diff --git a/graphics/object_events/pics/pokemon/crawdaunt.png b/graphics/object_events/pics/pokemon/crawdaunt.png new file mode 100755 index 000000000..684c8896d Binary files /dev/null and b/graphics/object_events/pics/pokemon/crawdaunt.png differ diff --git a/graphics/object_events/pics/pokemon/crobat.png b/graphics/object_events/pics/pokemon/crobat.png new file mode 100755 index 000000000..bba7b85b5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/crobat.png differ diff --git a/graphics/object_events/pics/pokemon/croconaw.png b/graphics/object_events/pics/pokemon/croconaw.png new file mode 100755 index 000000000..c796ba816 Binary files /dev/null and b/graphics/object_events/pics/pokemon/croconaw.png differ diff --git a/graphics/object_events/pics/pokemon/cubone.png b/graphics/object_events/pics/pokemon/cubone.png new file mode 100755 index 000000000..254b1d713 Binary files /dev/null and b/graphics/object_events/pics/pokemon/cubone.png differ diff --git a/graphics/object_events/pics/pokemon/cyndaquil.png b/graphics/object_events/pics/pokemon/cyndaquil.png new file mode 100755 index 000000000..4f3efcd7b Binary files /dev/null and b/graphics/object_events/pics/pokemon/cyndaquil.png differ diff --git a/graphics/object_events/pics/pokemon/delcatty.png b/graphics/object_events/pics/pokemon/delcatty.png new file mode 100755 index 000000000..d93216ac4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/delcatty.png differ diff --git a/graphics/object_events/pics/pokemon/delibird.png b/graphics/object_events/pics/pokemon/delibird.png new file mode 100755 index 000000000..977f78180 Binary files /dev/null and b/graphics/object_events/pics/pokemon/delibird.png differ diff --git a/graphics/object_events/pics/pokemon/deoxys.png b/graphics/object_events/pics/pokemon/deoxys.png index 9aa8dc218..09b2ffce1 100755 Binary files a/graphics/object_events/pics/pokemon/deoxys.png and b/graphics/object_events/pics/pokemon/deoxys.png differ diff --git a/graphics/object_events/pics/pokemon/deoxys_old.png b/graphics/object_events/pics/pokemon/deoxys_old.png new file mode 100755 index 000000000..9aa8dc218 Binary files /dev/null and b/graphics/object_events/pics/pokemon/deoxys_old.png differ diff --git a/graphics/object_events/pics/pokemon/dewgong.png b/graphics/object_events/pics/pokemon/dewgong.png new file mode 100755 index 000000000..4ad2d3159 Binary files /dev/null and b/graphics/object_events/pics/pokemon/dewgong.png differ diff --git a/graphics/object_events/pics/pokemon/diglett.png b/graphics/object_events/pics/pokemon/diglett.png new file mode 100755 index 000000000..e6d28409d Binary files /dev/null and b/graphics/object_events/pics/pokemon/diglett.png differ diff --git a/graphics/object_events/pics/pokemon/ditto.png b/graphics/object_events/pics/pokemon/ditto.png new file mode 100755 index 000000000..190ca1614 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ditto.png differ diff --git a/graphics/object_events/pics/pokemon/dodrio.png b/graphics/object_events/pics/pokemon/dodrio.png new file mode 100755 index 000000000..a90d8e7a7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/dodrio.png differ diff --git a/graphics/object_events/pics/pokemon/doduo.png b/graphics/object_events/pics/pokemon/doduo.png new file mode 100755 index 000000000..b062621b1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/doduo.png differ diff --git a/graphics/object_events/pics/pokemon/donphan.png b/graphics/object_events/pics/pokemon/donphan.png new file mode 100755 index 000000000..19db7fe76 Binary files /dev/null and b/graphics/object_events/pics/pokemon/donphan.png differ diff --git a/graphics/object_events/pics/pokemon/dragonair.png b/graphics/object_events/pics/pokemon/dragonair.png new file mode 100755 index 000000000..e6bdb2b2c Binary files /dev/null and b/graphics/object_events/pics/pokemon/dragonair.png differ diff --git a/graphics/object_events/pics/pokemon/dragonite.png b/graphics/object_events/pics/pokemon/dragonite.png new file mode 100755 index 000000000..7b4d74dd2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/dragonite.png differ diff --git a/graphics/object_events/pics/pokemon/dratini.png b/graphics/object_events/pics/pokemon/dratini.png new file mode 100755 index 000000000..548233887 Binary files /dev/null and b/graphics/object_events/pics/pokemon/dratini.png differ diff --git a/graphics/object_events/pics/pokemon/drowzee.png b/graphics/object_events/pics/pokemon/drowzee.png new file mode 100755 index 000000000..061cd521f Binary files /dev/null and b/graphics/object_events/pics/pokemon/drowzee.png differ diff --git a/graphics/object_events/pics/pokemon/dugtrio.png b/graphics/object_events/pics/pokemon/dugtrio.png new file mode 100755 index 000000000..e9dea5524 Binary files /dev/null and b/graphics/object_events/pics/pokemon/dugtrio.png differ diff --git a/graphics/object_events/pics/pokemon/dunsparce.png b/graphics/object_events/pics/pokemon/dunsparce.png new file mode 100755 index 000000000..8de544894 Binary files /dev/null and b/graphics/object_events/pics/pokemon/dunsparce.png differ diff --git a/graphics/object_events/pics/pokemon/dusclops.png b/graphics/object_events/pics/pokemon/dusclops.png index fb2c85576..6e826ff65 100755 Binary files a/graphics/object_events/pics/pokemon/dusclops.png and b/graphics/object_events/pics/pokemon/dusclops.png differ diff --git a/graphics/object_events/pics/pokemon/dusclops_old.png b/graphics/object_events/pics/pokemon/dusclops_old.png new file mode 100755 index 000000000..fb2c85576 Binary files /dev/null and b/graphics/object_events/pics/pokemon/dusclops_old.png differ diff --git a/graphics/object_events/pics/pokemon/duskull.png b/graphics/object_events/pics/pokemon/duskull.png new file mode 100755 index 000000000..79ecd0fa1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/duskull.png differ diff --git a/graphics/object_events/pics/pokemon/dustox.png b/graphics/object_events/pics/pokemon/dustox.png new file mode 100755 index 000000000..b71f9f600 Binary files /dev/null and b/graphics/object_events/pics/pokemon/dustox.png differ diff --git a/graphics/object_events/pics/pokemon/eevee.png b/graphics/object_events/pics/pokemon/eevee.png new file mode 100755 index 000000000..127edea86 Binary files /dev/null and b/graphics/object_events/pics/pokemon/eevee.png differ diff --git a/graphics/object_events/pics/pokemon/ekans.png b/graphics/object_events/pics/pokemon/ekans.png new file mode 100755 index 000000000..b23c27347 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ekans.png differ diff --git a/graphics/object_events/pics/pokemon/electabuzz.png b/graphics/object_events/pics/pokemon/electabuzz.png new file mode 100755 index 000000000..96debe262 Binary files /dev/null and b/graphics/object_events/pics/pokemon/electabuzz.png differ diff --git a/graphics/object_events/pics/pokemon/electrike.png b/graphics/object_events/pics/pokemon/electrike.png new file mode 100755 index 000000000..5268cbcd0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/electrike.png differ diff --git a/graphics/object_events/pics/pokemon/electrode.png b/graphics/object_events/pics/pokemon/electrode.png new file mode 100755 index 000000000..f8c922946 Binary files /dev/null and b/graphics/object_events/pics/pokemon/electrode.png differ diff --git a/graphics/object_events/pics/pokemon/elekid.png b/graphics/object_events/pics/pokemon/elekid.png new file mode 100755 index 000000000..08518beec Binary files /dev/null and b/graphics/object_events/pics/pokemon/elekid.png differ diff --git a/graphics/object_events/pics/pokemon/entei.png b/graphics/object_events/pics/pokemon/entei.png new file mode 100755 index 000000000..dd195685d Binary files /dev/null and b/graphics/object_events/pics/pokemon/entei.png differ diff --git a/graphics/object_events/pics/pokemon/espeon.png b/graphics/object_events/pics/pokemon/espeon.png new file mode 100755 index 000000000..442b99782 Binary files /dev/null and b/graphics/object_events/pics/pokemon/espeon.png differ diff --git a/graphics/object_events/pics/pokemon/exeggcute.png b/graphics/object_events/pics/pokemon/exeggcute.png new file mode 100755 index 000000000..7350d289d Binary files /dev/null and b/graphics/object_events/pics/pokemon/exeggcute.png differ diff --git a/graphics/object_events/pics/pokemon/exeggutor.png b/graphics/object_events/pics/pokemon/exeggutor.png new file mode 100755 index 000000000..404c4104d Binary files /dev/null and b/graphics/object_events/pics/pokemon/exeggutor.png differ diff --git a/graphics/object_events/pics/pokemon/exploud.png b/graphics/object_events/pics/pokemon/exploud.png new file mode 100755 index 000000000..b25a1a288 Binary files /dev/null and b/graphics/object_events/pics/pokemon/exploud.png differ diff --git a/graphics/object_events/pics/pokemon/farfetchd.png b/graphics/object_events/pics/pokemon/farfetchd.png new file mode 100755 index 000000000..c8093e49b Binary files /dev/null and b/graphics/object_events/pics/pokemon/farfetchd.png differ diff --git a/graphics/object_events/pics/pokemon/fearow.png b/graphics/object_events/pics/pokemon/fearow.png new file mode 100755 index 000000000..8e60df8ba Binary files /dev/null and b/graphics/object_events/pics/pokemon/fearow.png differ diff --git a/graphics/object_events/pics/pokemon/feebas.png b/graphics/object_events/pics/pokemon/feebas.png new file mode 100755 index 000000000..a844fa689 Binary files /dev/null and b/graphics/object_events/pics/pokemon/feebas.png differ diff --git a/graphics/object_events/pics/pokemon/feraligatr.png b/graphics/object_events/pics/pokemon/feraligatr.png new file mode 100755 index 000000000..1a9046b3c Binary files /dev/null and b/graphics/object_events/pics/pokemon/feraligatr.png differ diff --git a/graphics/object_events/pics/pokemon/flaaffy.png b/graphics/object_events/pics/pokemon/flaaffy.png new file mode 100755 index 000000000..55e02b1c3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/flaaffy.png differ diff --git a/graphics/object_events/pics/pokemon/flareon.png b/graphics/object_events/pics/pokemon/flareon.png new file mode 100755 index 000000000..f4f4d4ffb Binary files /dev/null and b/graphics/object_events/pics/pokemon/flareon.png differ diff --git a/graphics/object_events/pics/pokemon/flygon.png b/graphics/object_events/pics/pokemon/flygon.png new file mode 100755 index 000000000..d007efa50 Binary files /dev/null and b/graphics/object_events/pics/pokemon/flygon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/ambipom.png b/graphics/object_events/pics/pokemon/followers/ambipom.png new file mode 100755 index 000000000..86359aaf0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/ambipom.png differ diff --git a/graphics/object_events/pics/pokemon/followers/arceus.png b/graphics/object_events/pics/pokemon/followers/arceus.png new file mode 100755 index 000000000..71d73b0ff Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/arceus.png differ diff --git a/graphics/object_events/pics/pokemon/followers/bonsly.png b/graphics/object_events/pics/pokemon/followers/bonsly.png new file mode 100755 index 000000000..7c920f749 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/bonsly.png differ diff --git a/graphics/object_events/pics/pokemon/followers/budew.png b/graphics/object_events/pics/pokemon/followers/budew.png new file mode 100755 index 000000000..c7298c9ab Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/budew.png differ diff --git a/graphics/object_events/pics/pokemon/followers/chingling.png b/graphics/object_events/pics/pokemon/followers/chingling.png new file mode 100755 index 000000000..09b3c8a45 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/chingling.png differ diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_attack.png b/graphics/object_events/pics/pokemon/followers/deoxys_attack.png new file mode 100755 index 000000000..ba9b0697e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/deoxys_attack.png differ diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_defense.png b/graphics/object_events/pics/pokemon/followers/deoxys_defense.png new file mode 100755 index 000000000..c8b44c0d7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/deoxys_defense.png differ diff --git a/graphics/object_events/pics/pokemon/followers/deoxys_speed.png b/graphics/object_events/pics/pokemon/followers/deoxys_speed.png new file mode 100755 index 000000000..4f8a04e8a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/deoxys_speed.png differ diff --git a/graphics/object_events/pics/pokemon/followers/dusknoir.png b/graphics/object_events/pics/pokemon/followers/dusknoir.png new file mode 100755 index 000000000..35dd1fa4c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/dusknoir.png differ diff --git a/graphics/object_events/pics/pokemon/followers/electivire.png b/graphics/object_events/pics/pokemon/followers/electivire.png new file mode 100755 index 000000000..29f2fe001 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/electivire.png differ diff --git a/graphics/object_events/pics/pokemon/followers/froslass.png b/graphics/object_events/pics/pokemon/followers/froslass.png new file mode 100755 index 000000000..d743de8ec Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/froslass.png differ diff --git a/graphics/object_events/pics/pokemon/followers/gallade.png b/graphics/object_events/pics/pokemon/followers/gallade.png new file mode 100755 index 000000000..d9abf014f Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/gallade.png differ diff --git a/graphics/object_events/pics/pokemon/followers/glaceon.png b/graphics/object_events/pics/pokemon/followers/glaceon.png new file mode 100755 index 000000000..c05108ab3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/glaceon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/gliscor.png b/graphics/object_events/pics/pokemon/followers/gliscor.png new file mode 100755 index 000000000..67a1aeabf Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/gliscor.png differ diff --git a/graphics/object_events/pics/pokemon/followers/happiny.png b/graphics/object_events/pics/pokemon/followers/happiny.png new file mode 100755 index 000000000..ff36f460e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/happiny.png differ diff --git a/graphics/object_events/pics/pokemon/followers/honchkrow.png b/graphics/object_events/pics/pokemon/followers/honchkrow.png new file mode 100755 index 000000000..72ef2c8ee Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/honchkrow.png differ diff --git a/graphics/object_events/pics/pokemon/followers/leafeon.png b/graphics/object_events/pics/pokemon/followers/leafeon.png new file mode 100755 index 000000000..f9793001d Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/leafeon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/lickilicky.png b/graphics/object_events/pics/pokemon/followers/lickilicky.png new file mode 100755 index 000000000..e9d0f82ee Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/lickilicky.png differ diff --git a/graphics/object_events/pics/pokemon/followers/magmortar.png b/graphics/object_events/pics/pokemon/followers/magmortar.png new file mode 100755 index 000000000..3f1adb72c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/magmortar.png differ diff --git a/graphics/object_events/pics/pokemon/followers/magnezone.png b/graphics/object_events/pics/pokemon/followers/magnezone.png new file mode 100755 index 000000000..41fc78d0a Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/magnezone.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mamoswine.png b/graphics/object_events/pics/pokemon/followers/mamoswine.png new file mode 100755 index 000000000..c524991ae Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mamoswine.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mantyke.png b/graphics/object_events/pics/pokemon/followers/mantyke.png new file mode 100755 index 000000000..619dbed83 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mantyke.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mimejr.png b/graphics/object_events/pics/pokemon/followers/mimejr.png new file mode 100755 index 000000000..ded8aa440 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mimejr.png differ diff --git a/graphics/object_events/pics/pokemon/followers/mismagius.png b/graphics/object_events/pics/pokemon/followers/mismagius.png new file mode 100755 index 000000000..c24823b72 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/mismagius.png differ diff --git a/graphics/object_events/pics/pokemon/followers/munchlax.png b/graphics/object_events/pics/pokemon/followers/munchlax.png new file mode 100755 index 000000000..6c6a54903 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/munchlax.png differ diff --git a/graphics/object_events/pics/pokemon/followers/porygonz.png b/graphics/object_events/pics/pokemon/followers/porygonz.png new file mode 100755 index 000000000..7aa4d3809 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/porygonz.png differ diff --git a/graphics/object_events/pics/pokemon/followers/probopass.png b/graphics/object_events/pics/pokemon/followers/probopass.png new file mode 100755 index 000000000..f60f9359c Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/probopass.png differ diff --git a/graphics/object_events/pics/pokemon/followers/regidrago.png b/graphics/object_events/pics/pokemon/followers/regidrago.png new file mode 100755 index 000000000..b1a2e5567 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/regidrago.png differ diff --git a/graphics/object_events/pics/pokemon/followers/regieleki.png b/graphics/object_events/pics/pokemon/followers/regieleki.png new file mode 100755 index 000000000..3d0b77d1e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/regieleki.png differ diff --git a/graphics/object_events/pics/pokemon/followers/regigigas.png b/graphics/object_events/pics/pokemon/followers/regigigas.png new file mode 100755 index 000000000..85d60c53e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/regigigas.png differ diff --git a/graphics/object_events/pics/pokemon/followers/rhyperior.png b/graphics/object_events/pics/pokemon/followers/rhyperior.png new file mode 100755 index 000000000..f09dafd98 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/rhyperior.png differ diff --git a/graphics/object_events/pics/pokemon/followers/roserade.png b/graphics/object_events/pics/pokemon/followers/roserade.png new file mode 100755 index 000000000..df923dcf7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/roserade.png differ diff --git a/graphics/object_events/pics/pokemon/followers/sylveon.png b/graphics/object_events/pics/pokemon/followers/sylveon.png new file mode 100755 index 000000000..0d1fa1b3e Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/sylveon.png differ diff --git a/graphics/object_events/pics/pokemon/followers/tangrowth.png b/graphics/object_events/pics/pokemon/followers/tangrowth.png new file mode 100755 index 000000000..34f40ea41 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/tangrowth.png differ diff --git a/graphics/object_events/pics/pokemon/followers/togekiss.png b/graphics/object_events/pics/pokemon/followers/togekiss.png new file mode 100755 index 000000000..ebbe47e76 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/togekiss.png differ diff --git a/graphics/object_events/pics/pokemon/followers/weavile.png b/graphics/object_events/pics/pokemon/followers/weavile.png new file mode 100755 index 000000000..e0dd18aa6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/weavile.png differ diff --git a/graphics/object_events/pics/pokemon/followers/yanmega.png b/graphics/object_events/pics/pokemon/followers/yanmega.png new file mode 100755 index 000000000..6190a0fdd Binary files /dev/null and b/graphics/object_events/pics/pokemon/followers/yanmega.png differ diff --git a/graphics/object_events/pics/pokemon/forretress.png b/graphics/object_events/pics/pokemon/forretress.png new file mode 100755 index 000000000..36d721de0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/forretress.png differ diff --git a/graphics/object_events/pics/pokemon/furret.png b/graphics/object_events/pics/pokemon/furret.png new file mode 100755 index 000000000..2ac228ea1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/furret.png differ diff --git a/graphics/object_events/pics/pokemon/gardevoir.png b/graphics/object_events/pics/pokemon/gardevoir.png new file mode 100755 index 000000000..cd416d612 Binary files /dev/null and b/graphics/object_events/pics/pokemon/gardevoir.png differ diff --git a/graphics/object_events/pics/pokemon/gastly.png b/graphics/object_events/pics/pokemon/gastly.png new file mode 100755 index 000000000..4969ac665 Binary files /dev/null and b/graphics/object_events/pics/pokemon/gastly.png differ diff --git a/graphics/object_events/pics/pokemon/gengar.png b/graphics/object_events/pics/pokemon/gengar.png new file mode 100755 index 000000000..153d16f95 Binary files /dev/null and b/graphics/object_events/pics/pokemon/gengar.png differ diff --git a/graphics/object_events/pics/pokemon/geodude.png b/graphics/object_events/pics/pokemon/geodude.png new file mode 100755 index 000000000..9eaf4303e Binary files /dev/null and b/graphics/object_events/pics/pokemon/geodude.png differ diff --git a/graphics/object_events/pics/pokemon/girafarig.png b/graphics/object_events/pics/pokemon/girafarig.png new file mode 100755 index 000000000..6e290b85a Binary files /dev/null and b/graphics/object_events/pics/pokemon/girafarig.png differ diff --git a/graphics/object_events/pics/pokemon/glalie.png b/graphics/object_events/pics/pokemon/glalie.png new file mode 100755 index 000000000..e05f72dea Binary files /dev/null and b/graphics/object_events/pics/pokemon/glalie.png differ diff --git a/graphics/object_events/pics/pokemon/gligar.png b/graphics/object_events/pics/pokemon/gligar.png new file mode 100755 index 000000000..3b9780538 Binary files /dev/null and b/graphics/object_events/pics/pokemon/gligar.png differ diff --git a/graphics/object_events/pics/pokemon/gloom.png b/graphics/object_events/pics/pokemon/gloom.png new file mode 100755 index 000000000..25a7c5ebf Binary files /dev/null and b/graphics/object_events/pics/pokemon/gloom.png differ diff --git a/graphics/object_events/pics/pokemon/golbat.png b/graphics/object_events/pics/pokemon/golbat.png new file mode 100755 index 000000000..0b176b58c Binary files /dev/null and b/graphics/object_events/pics/pokemon/golbat.png differ diff --git a/graphics/object_events/pics/pokemon/goldeen.png b/graphics/object_events/pics/pokemon/goldeen.png new file mode 100755 index 000000000..bd6deb06f Binary files /dev/null and b/graphics/object_events/pics/pokemon/goldeen.png differ diff --git a/graphics/object_events/pics/pokemon/golduck.png b/graphics/object_events/pics/pokemon/golduck.png new file mode 100755 index 000000000..288d78ae5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/golduck.png differ diff --git a/graphics/object_events/pics/pokemon/golem.png b/graphics/object_events/pics/pokemon/golem.png new file mode 100755 index 000000000..bfd7d02ce Binary files /dev/null and b/graphics/object_events/pics/pokemon/golem.png differ diff --git a/graphics/object_events/pics/pokemon/gorebyss.png b/graphics/object_events/pics/pokemon/gorebyss.png new file mode 100755 index 000000000..1870f2abb Binary files /dev/null and b/graphics/object_events/pics/pokemon/gorebyss.png differ diff --git a/graphics/object_events/pics/pokemon/granbull.png b/graphics/object_events/pics/pokemon/granbull.png new file mode 100755 index 000000000..2fdfb1e9d Binary files /dev/null and b/graphics/object_events/pics/pokemon/granbull.png differ diff --git a/graphics/object_events/pics/pokemon/graveler.png b/graphics/object_events/pics/pokemon/graveler.png new file mode 100755 index 000000000..42b5cba07 Binary files /dev/null and b/graphics/object_events/pics/pokemon/graveler.png differ diff --git a/graphics/object_events/pics/pokemon/grimer.png b/graphics/object_events/pics/pokemon/grimer.png new file mode 100755 index 000000000..5b4523387 Binary files /dev/null and b/graphics/object_events/pics/pokemon/grimer.png differ diff --git a/graphics/object_events/pics/pokemon/groudon.png b/graphics/object_events/pics/pokemon/groudon.png index 3d14c5ac9..4c804b4e0 100755 Binary files a/graphics/object_events/pics/pokemon/groudon.png and b/graphics/object_events/pics/pokemon/groudon.png differ diff --git a/graphics/object_events/pics/pokemon/groudon_old.png b/graphics/object_events/pics/pokemon/groudon_old.png new file mode 100755 index 000000000..3d14c5ac9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/groudon_old.png differ diff --git a/graphics/object_events/pics/pokemon/grovyle.png b/graphics/object_events/pics/pokemon/grovyle.png new file mode 100755 index 000000000..3c852580f Binary files /dev/null and b/graphics/object_events/pics/pokemon/grovyle.png differ diff --git a/graphics/object_events/pics/pokemon/growlithe.png b/graphics/object_events/pics/pokemon/growlithe.png new file mode 100755 index 000000000..ecce6a8c3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/growlithe.png differ diff --git a/graphics/object_events/pics/pokemon/grumpig.png b/graphics/object_events/pics/pokemon/grumpig.png new file mode 100755 index 000000000..6d0f22e7c Binary files /dev/null and b/graphics/object_events/pics/pokemon/grumpig.png differ diff --git a/graphics/object_events/pics/pokemon/gulpin.png b/graphics/object_events/pics/pokemon/gulpin.png new file mode 100755 index 000000000..1a3e05060 Binary files /dev/null and b/graphics/object_events/pics/pokemon/gulpin.png differ diff --git a/graphics/object_events/pics/pokemon/gyarados.png b/graphics/object_events/pics/pokemon/gyarados.png new file mode 100755 index 000000000..482d3d52e Binary files /dev/null and b/graphics/object_events/pics/pokemon/gyarados.png differ diff --git a/graphics/object_events/pics/pokemon/hariyama.png b/graphics/object_events/pics/pokemon/hariyama.png new file mode 100755 index 000000000..3711c8e5e Binary files /dev/null and b/graphics/object_events/pics/pokemon/hariyama.png differ diff --git a/graphics/object_events/pics/pokemon/haunter.png b/graphics/object_events/pics/pokemon/haunter.png new file mode 100755 index 000000000..f004f3483 Binary files /dev/null and b/graphics/object_events/pics/pokemon/haunter.png differ diff --git a/graphics/object_events/pics/pokemon/heracross.png b/graphics/object_events/pics/pokemon/heracross.png new file mode 100755 index 000000000..ff29253ef Binary files /dev/null and b/graphics/object_events/pics/pokemon/heracross.png differ diff --git a/graphics/object_events/pics/pokemon/hitmonchan.png b/graphics/object_events/pics/pokemon/hitmonchan.png new file mode 100755 index 000000000..f8f32a50e Binary files /dev/null and b/graphics/object_events/pics/pokemon/hitmonchan.png differ diff --git a/graphics/object_events/pics/pokemon/hitmonlee.png b/graphics/object_events/pics/pokemon/hitmonlee.png new file mode 100755 index 000000000..6479c3641 Binary files /dev/null and b/graphics/object_events/pics/pokemon/hitmonlee.png differ diff --git a/graphics/object_events/pics/pokemon/hitmontop.png b/graphics/object_events/pics/pokemon/hitmontop.png new file mode 100755 index 000000000..7274d4c01 Binary files /dev/null and b/graphics/object_events/pics/pokemon/hitmontop.png differ diff --git a/graphics/object_events/pics/pokemon/ho_oh.png b/graphics/object_events/pics/pokemon/ho_oh.png index e6c7374e0..a6fbddf4b 100755 Binary files a/graphics/object_events/pics/pokemon/ho_oh.png and b/graphics/object_events/pics/pokemon/ho_oh.png differ diff --git a/graphics/object_events/pics/pokemon/ho_oh_old.png b/graphics/object_events/pics/pokemon/ho_oh_old.png new file mode 100755 index 000000000..e6c7374e0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ho_oh_old.png differ diff --git a/graphics/object_events/pics/pokemon/hoothoot.png b/graphics/object_events/pics/pokemon/hoothoot.png new file mode 100755 index 000000000..1c6eedaac Binary files /dev/null and b/graphics/object_events/pics/pokemon/hoothoot.png differ diff --git a/graphics/object_events/pics/pokemon/hoppip.png b/graphics/object_events/pics/pokemon/hoppip.png new file mode 100755 index 000000000..ad0f382e6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/hoppip.png differ diff --git a/graphics/object_events/pics/pokemon/horsea.png b/graphics/object_events/pics/pokemon/horsea.png new file mode 100755 index 000000000..c6fe9807c Binary files /dev/null and b/graphics/object_events/pics/pokemon/horsea.png differ diff --git a/graphics/object_events/pics/pokemon/houndoom.png b/graphics/object_events/pics/pokemon/houndoom.png new file mode 100755 index 000000000..869da3198 Binary files /dev/null and b/graphics/object_events/pics/pokemon/houndoom.png differ diff --git a/graphics/object_events/pics/pokemon/houndour.png b/graphics/object_events/pics/pokemon/houndour.png new file mode 100755 index 000000000..daacf9b56 Binary files /dev/null and b/graphics/object_events/pics/pokemon/houndour.png differ diff --git a/graphics/object_events/pics/pokemon/huntail.png b/graphics/object_events/pics/pokemon/huntail.png new file mode 100755 index 000000000..3aec64c4b Binary files /dev/null and b/graphics/object_events/pics/pokemon/huntail.png differ diff --git a/graphics/object_events/pics/pokemon/hypno.png b/graphics/object_events/pics/pokemon/hypno.png new file mode 100755 index 000000000..f6a1292fd Binary files /dev/null and b/graphics/object_events/pics/pokemon/hypno.png differ diff --git a/graphics/object_events/pics/pokemon/igglybuff.png b/graphics/object_events/pics/pokemon/igglybuff.png new file mode 100755 index 000000000..e1a3f53ae Binary files /dev/null and b/graphics/object_events/pics/pokemon/igglybuff.png differ diff --git a/graphics/object_events/pics/pokemon/illumise.png b/graphics/object_events/pics/pokemon/illumise.png new file mode 100755 index 000000000..5841698e5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/illumise.png differ diff --git a/graphics/object_events/pics/pokemon/ivysaur.png b/graphics/object_events/pics/pokemon/ivysaur.png new file mode 100755 index 000000000..376fd432a Binary files /dev/null and b/graphics/object_events/pics/pokemon/ivysaur.png differ diff --git a/graphics/object_events/pics/pokemon/jigglypuff.png b/graphics/object_events/pics/pokemon/jigglypuff.png new file mode 100755 index 000000000..5d874de2c Binary files /dev/null and b/graphics/object_events/pics/pokemon/jigglypuff.png differ diff --git a/graphics/object_events/pics/pokemon/jirachi.png b/graphics/object_events/pics/pokemon/jirachi.png new file mode 100755 index 000000000..49932d092 Binary files /dev/null and b/graphics/object_events/pics/pokemon/jirachi.png differ diff --git a/graphics/object_events/pics/pokemon/jolteon.png b/graphics/object_events/pics/pokemon/jolteon.png new file mode 100755 index 000000000..bdd51d2e9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/jolteon.png differ diff --git a/graphics/object_events/pics/pokemon/jumpluff.png b/graphics/object_events/pics/pokemon/jumpluff.png new file mode 100755 index 000000000..56bf7a444 Binary files /dev/null and b/graphics/object_events/pics/pokemon/jumpluff.png differ diff --git a/graphics/object_events/pics/pokemon/jynx.png b/graphics/object_events/pics/pokemon/jynx.png new file mode 100755 index 000000000..02bc90175 Binary files /dev/null and b/graphics/object_events/pics/pokemon/jynx.png differ diff --git a/graphics/object_events/pics/pokemon/kabuto.png b/graphics/object_events/pics/pokemon/kabuto.png new file mode 100755 index 000000000..8f20a1577 Binary files /dev/null and b/graphics/object_events/pics/pokemon/kabuto.png differ diff --git a/graphics/object_events/pics/pokemon/kabutops.png b/graphics/object_events/pics/pokemon/kabutops.png new file mode 100755 index 000000000..ddc640398 Binary files /dev/null and b/graphics/object_events/pics/pokemon/kabutops.png differ diff --git a/graphics/object_events/pics/pokemon/kadabra.png b/graphics/object_events/pics/pokemon/kadabra.png new file mode 100755 index 000000000..0bbd20415 Binary files /dev/null and b/graphics/object_events/pics/pokemon/kadabra.png differ diff --git a/graphics/object_events/pics/pokemon/kakuna.png b/graphics/object_events/pics/pokemon/kakuna.png new file mode 100755 index 000000000..ff3da1eb7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/kakuna.png differ diff --git a/graphics/object_events/pics/pokemon/kangaskhan.png b/graphics/object_events/pics/pokemon/kangaskhan.png new file mode 100755 index 000000000..2b5ddc81f Binary files /dev/null and b/graphics/object_events/pics/pokemon/kangaskhan.png differ diff --git a/graphics/object_events/pics/pokemon/kecleon.png b/graphics/object_events/pics/pokemon/kecleon.png index 47ae584b7..a6e21e2f1 100755 Binary files a/graphics/object_events/pics/pokemon/kecleon.png and b/graphics/object_events/pics/pokemon/kecleon.png differ diff --git a/graphics/object_events/pics/pokemon/kecleon_old.png b/graphics/object_events/pics/pokemon/kecleon_old.png new file mode 100755 index 000000000..47ae584b7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/kecleon_old.png differ diff --git a/graphics/object_events/pics/pokemon/kingdra.png b/graphics/object_events/pics/pokemon/kingdra.png new file mode 100755 index 000000000..cc90e98b2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/kingdra.png differ diff --git a/graphics/object_events/pics/pokemon/kingler.png b/graphics/object_events/pics/pokemon/kingler.png new file mode 100755 index 000000000..387a5acc8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/kingler.png differ diff --git a/graphics/object_events/pics/pokemon/kirlia.png b/graphics/object_events/pics/pokemon/kirlia.png index bac74a9cc..d8dffdb98 100755 Binary files a/graphics/object_events/pics/pokemon/kirlia.png and b/graphics/object_events/pics/pokemon/kirlia.png differ diff --git a/graphics/object_events/pics/pokemon/kirlia_old.png b/graphics/object_events/pics/pokemon/kirlia_old.png new file mode 100755 index 000000000..bac74a9cc Binary files /dev/null and b/graphics/object_events/pics/pokemon/kirlia_old.png differ diff --git a/graphics/object_events/pics/pokemon/koffing.png b/graphics/object_events/pics/pokemon/koffing.png new file mode 100755 index 000000000..d4510c2cb Binary files /dev/null and b/graphics/object_events/pics/pokemon/koffing.png differ diff --git a/graphics/object_events/pics/pokemon/krabby.png b/graphics/object_events/pics/pokemon/krabby.png new file mode 100755 index 000000000..7a1ddce18 Binary files /dev/null and b/graphics/object_events/pics/pokemon/krabby.png differ diff --git a/graphics/object_events/pics/pokemon/kyogre.png b/graphics/object_events/pics/pokemon/kyogre.png index 32f67aafa..262494c4f 100755 Binary files a/graphics/object_events/pics/pokemon/kyogre.png and b/graphics/object_events/pics/pokemon/kyogre.png differ diff --git a/graphics/object_events/pics/pokemon/kyogre_old.png b/graphics/object_events/pics/pokemon/kyogre_old.png new file mode 100755 index 000000000..32f67aafa Binary files /dev/null and b/graphics/object_events/pics/pokemon/kyogre_old.png differ diff --git a/graphics/object_events/pics/pokemon/lairon.png b/graphics/object_events/pics/pokemon/lairon.png new file mode 100755 index 000000000..5a7968dca Binary files /dev/null and b/graphics/object_events/pics/pokemon/lairon.png differ diff --git a/graphics/object_events/pics/pokemon/lanturn.png b/graphics/object_events/pics/pokemon/lanturn.png new file mode 100755 index 000000000..99782661e Binary files /dev/null and b/graphics/object_events/pics/pokemon/lanturn.png differ diff --git a/graphics/object_events/pics/pokemon/lapras.png b/graphics/object_events/pics/pokemon/lapras.png new file mode 100755 index 000000000..2b602ad4b Binary files /dev/null and b/graphics/object_events/pics/pokemon/lapras.png differ diff --git a/graphics/object_events/pics/pokemon/larvitar.png b/graphics/object_events/pics/pokemon/larvitar.png new file mode 100755 index 000000000..478f86448 Binary files /dev/null and b/graphics/object_events/pics/pokemon/larvitar.png differ diff --git a/graphics/object_events/pics/pokemon/latias.png b/graphics/object_events/pics/pokemon/latias.png new file mode 100755 index 000000000..2c4bedf3b Binary files /dev/null and b/graphics/object_events/pics/pokemon/latias.png differ diff --git a/graphics/object_events/pics/pokemon/latios.png b/graphics/object_events/pics/pokemon/latios.png new file mode 100755 index 000000000..69160cf18 Binary files /dev/null and b/graphics/object_events/pics/pokemon/latios.png differ diff --git a/graphics/object_events/pics/pokemon/ledian.png b/graphics/object_events/pics/pokemon/ledian.png new file mode 100755 index 000000000..f4653d768 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ledian.png differ diff --git a/graphics/object_events/pics/pokemon/ledyba.png b/graphics/object_events/pics/pokemon/ledyba.png new file mode 100755 index 000000000..f80bc9177 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ledyba.png differ diff --git a/graphics/object_events/pics/pokemon/lickitung.png b/graphics/object_events/pics/pokemon/lickitung.png new file mode 100755 index 000000000..a04f58419 Binary files /dev/null and b/graphics/object_events/pics/pokemon/lickitung.png differ diff --git a/graphics/object_events/pics/pokemon/lileep.png b/graphics/object_events/pics/pokemon/lileep.png new file mode 100755 index 000000000..d0cc08402 Binary files /dev/null and b/graphics/object_events/pics/pokemon/lileep.png differ diff --git a/graphics/object_events/pics/pokemon/linoone.png b/graphics/object_events/pics/pokemon/linoone.png new file mode 100755 index 000000000..c3b96b125 Binary files /dev/null and b/graphics/object_events/pics/pokemon/linoone.png differ diff --git a/graphics/object_events/pics/pokemon/lombre.png b/graphics/object_events/pics/pokemon/lombre.png new file mode 100755 index 000000000..5543070f6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/lombre.png differ diff --git a/graphics/object_events/pics/pokemon/lotad.png b/graphics/object_events/pics/pokemon/lotad.png new file mode 100755 index 000000000..8e59c5183 Binary files /dev/null and b/graphics/object_events/pics/pokemon/lotad.png differ diff --git a/graphics/object_events/pics/pokemon/loudred.png b/graphics/object_events/pics/pokemon/loudred.png new file mode 100755 index 000000000..9fa6c40c3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/loudred.png differ diff --git a/graphics/object_events/pics/pokemon/ludicolo.png b/graphics/object_events/pics/pokemon/ludicolo.png new file mode 100755 index 000000000..fd7917db7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ludicolo.png differ diff --git a/graphics/object_events/pics/pokemon/lugia.png b/graphics/object_events/pics/pokemon/lugia.png index 1dfc6858b..8eb2b25db 100755 Binary files a/graphics/object_events/pics/pokemon/lugia.png and b/graphics/object_events/pics/pokemon/lugia.png differ diff --git a/graphics/object_events/pics/pokemon/lugia_old.png b/graphics/object_events/pics/pokemon/lugia_old.png new file mode 100755 index 000000000..1dfc6858b Binary files /dev/null and b/graphics/object_events/pics/pokemon/lugia_old.png differ diff --git a/graphics/object_events/pics/pokemon/lunatone.png b/graphics/object_events/pics/pokemon/lunatone.png new file mode 100755 index 000000000..1f1fa469b Binary files /dev/null and b/graphics/object_events/pics/pokemon/lunatone.png differ diff --git a/graphics/object_events/pics/pokemon/luvdisc.png b/graphics/object_events/pics/pokemon/luvdisc.png new file mode 100755 index 000000000..ec742dd3c Binary files /dev/null and b/graphics/object_events/pics/pokemon/luvdisc.png differ diff --git a/graphics/object_events/pics/pokemon/machamp.png b/graphics/object_events/pics/pokemon/machamp.png new file mode 100755 index 000000000..165c97e92 Binary files /dev/null and b/graphics/object_events/pics/pokemon/machamp.png differ diff --git a/graphics/object_events/pics/pokemon/machoke.png b/graphics/object_events/pics/pokemon/machoke.png new file mode 100755 index 000000000..3730865ba Binary files /dev/null and b/graphics/object_events/pics/pokemon/machoke.png differ diff --git a/graphics/object_events/pics/pokemon/machop.png b/graphics/object_events/pics/pokemon/machop.png new file mode 100755 index 000000000..1c2069bd2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/machop.png differ diff --git a/graphics/object_events/pics/pokemon/magby.png b/graphics/object_events/pics/pokemon/magby.png new file mode 100755 index 000000000..1a5a5b3b3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/magby.png differ diff --git a/graphics/object_events/pics/pokemon/magcargo.png b/graphics/object_events/pics/pokemon/magcargo.png new file mode 100755 index 000000000..7464a5143 Binary files /dev/null and b/graphics/object_events/pics/pokemon/magcargo.png differ diff --git a/graphics/object_events/pics/pokemon/magikarp.png b/graphics/object_events/pics/pokemon/magikarp.png new file mode 100755 index 000000000..9442339d1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/magikarp.png differ diff --git a/graphics/object_events/pics/pokemon/magmar.png b/graphics/object_events/pics/pokemon/magmar.png new file mode 100755 index 000000000..167b17b76 Binary files /dev/null and b/graphics/object_events/pics/pokemon/magmar.png differ diff --git a/graphics/object_events/pics/pokemon/magnemite.png b/graphics/object_events/pics/pokemon/magnemite.png new file mode 100755 index 000000000..b35e1fef5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/magnemite.png differ diff --git a/graphics/object_events/pics/pokemon/magneton.png b/graphics/object_events/pics/pokemon/magneton.png new file mode 100755 index 000000000..bf15d01a9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/magneton.png differ diff --git a/graphics/object_events/pics/pokemon/makuhita.png b/graphics/object_events/pics/pokemon/makuhita.png new file mode 100755 index 000000000..ac8cd38f8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/makuhita.png differ diff --git a/graphics/object_events/pics/pokemon/manectric.png b/graphics/object_events/pics/pokemon/manectric.png new file mode 100755 index 000000000..cd6bd3fc9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/manectric.png differ diff --git a/graphics/object_events/pics/pokemon/mankey.png b/graphics/object_events/pics/pokemon/mankey.png new file mode 100755 index 000000000..517527281 Binary files /dev/null and b/graphics/object_events/pics/pokemon/mankey.png differ diff --git a/graphics/object_events/pics/pokemon/mantine.png b/graphics/object_events/pics/pokemon/mantine.png new file mode 100755 index 000000000..7a66128a4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/mantine.png differ diff --git a/graphics/object_events/pics/pokemon/mareep.png b/graphics/object_events/pics/pokemon/mareep.png new file mode 100755 index 000000000..1effc12c2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/mareep.png differ diff --git a/graphics/object_events/pics/pokemon/marill.png b/graphics/object_events/pics/pokemon/marill.png new file mode 100755 index 000000000..d3b8bc2dc Binary files /dev/null and b/graphics/object_events/pics/pokemon/marill.png differ diff --git a/graphics/object_events/pics/pokemon/marowak.png b/graphics/object_events/pics/pokemon/marowak.png new file mode 100755 index 000000000..ed8447205 Binary files /dev/null and b/graphics/object_events/pics/pokemon/marowak.png differ diff --git a/graphics/object_events/pics/pokemon/marshtomp.png b/graphics/object_events/pics/pokemon/marshtomp.png new file mode 100755 index 000000000..f3689e487 Binary files /dev/null and b/graphics/object_events/pics/pokemon/marshtomp.png differ diff --git a/graphics/object_events/pics/pokemon/masquerain.png b/graphics/object_events/pics/pokemon/masquerain.png new file mode 100755 index 000000000..328aa4263 Binary files /dev/null and b/graphics/object_events/pics/pokemon/masquerain.png differ diff --git a/graphics/object_events/pics/pokemon/mawile.png b/graphics/object_events/pics/pokemon/mawile.png new file mode 100755 index 000000000..43ad3b9f3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/mawile.png differ diff --git a/graphics/object_events/pics/pokemon/medicham.png b/graphics/object_events/pics/pokemon/medicham.png new file mode 100755 index 000000000..4a98c808a Binary files /dev/null and b/graphics/object_events/pics/pokemon/medicham.png differ diff --git a/graphics/object_events/pics/pokemon/meditite.png b/graphics/object_events/pics/pokemon/meditite.png new file mode 100755 index 000000000..7e2ad4a5e Binary files /dev/null and b/graphics/object_events/pics/pokemon/meditite.png differ diff --git a/graphics/object_events/pics/pokemon/meganium.png b/graphics/object_events/pics/pokemon/meganium.png new file mode 100755 index 000000000..fcdc97e80 Binary files /dev/null and b/graphics/object_events/pics/pokemon/meganium.png differ diff --git a/graphics/object_events/pics/pokemon/meowth.png b/graphics/object_events/pics/pokemon/meowth.png new file mode 100755 index 000000000..bdebcac30 Binary files /dev/null and b/graphics/object_events/pics/pokemon/meowth.png differ diff --git a/graphics/object_events/pics/pokemon/metagross.png b/graphics/object_events/pics/pokemon/metagross.png new file mode 100755 index 000000000..d7bd9c0d8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/metagross.png differ diff --git a/graphics/object_events/pics/pokemon/metang.png b/graphics/object_events/pics/pokemon/metang.png new file mode 100755 index 000000000..100d3458a Binary files /dev/null and b/graphics/object_events/pics/pokemon/metang.png differ diff --git a/graphics/object_events/pics/pokemon/metapod.png b/graphics/object_events/pics/pokemon/metapod.png new file mode 100755 index 000000000..140ae77fd Binary files /dev/null and b/graphics/object_events/pics/pokemon/metapod.png differ diff --git a/graphics/object_events/pics/pokemon/mew.png b/graphics/object_events/pics/pokemon/mew.png index 00cbd2779..bc6cc0dc9 100755 Binary files a/graphics/object_events/pics/pokemon/mew.png and b/graphics/object_events/pics/pokemon/mew.png differ diff --git a/graphics/object_events/pics/pokemon/mew_old.png b/graphics/object_events/pics/pokemon/mew_old.png new file mode 100755 index 000000000..00cbd2779 Binary files /dev/null and b/graphics/object_events/pics/pokemon/mew_old.png differ diff --git a/graphics/object_events/pics/pokemon/mewtwo.png b/graphics/object_events/pics/pokemon/mewtwo.png new file mode 100755 index 000000000..6d8c13dd5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/mewtwo.png differ diff --git a/graphics/object_events/pics/pokemon/mightyena.png b/graphics/object_events/pics/pokemon/mightyena.png new file mode 100755 index 000000000..c80633949 Binary files /dev/null and b/graphics/object_events/pics/pokemon/mightyena.png differ diff --git a/graphics/object_events/pics/pokemon/milotic.png b/graphics/object_events/pics/pokemon/milotic.png new file mode 100755 index 000000000..f26b9c0f3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/milotic.png differ diff --git a/graphics/object_events/pics/pokemon/miltank.png b/graphics/object_events/pics/pokemon/miltank.png new file mode 100755 index 000000000..9c40d97ba Binary files /dev/null and b/graphics/object_events/pics/pokemon/miltank.png differ diff --git a/graphics/object_events/pics/pokemon/minun.png b/graphics/object_events/pics/pokemon/minun.png new file mode 100755 index 000000000..9140239f2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/minun.png differ diff --git a/graphics/object_events/pics/pokemon/misdreavus.png b/graphics/object_events/pics/pokemon/misdreavus.png new file mode 100755 index 000000000..9753d612b Binary files /dev/null and b/graphics/object_events/pics/pokemon/misdreavus.png differ diff --git a/graphics/object_events/pics/pokemon/moltres.png b/graphics/object_events/pics/pokemon/moltres.png new file mode 100755 index 000000000..f8199cf90 Binary files /dev/null and b/graphics/object_events/pics/pokemon/moltres.png differ diff --git a/graphics/object_events/pics/pokemon/mr_mime.png b/graphics/object_events/pics/pokemon/mr_mime.png new file mode 100755 index 000000000..344d479ee Binary files /dev/null and b/graphics/object_events/pics/pokemon/mr_mime.png differ diff --git a/graphics/object_events/pics/pokemon/mudkip.png b/graphics/object_events/pics/pokemon/mudkip.png new file mode 100755 index 000000000..65941bf94 Binary files /dev/null and b/graphics/object_events/pics/pokemon/mudkip.png differ diff --git a/graphics/object_events/pics/pokemon/muk.png b/graphics/object_events/pics/pokemon/muk.png new file mode 100755 index 000000000..84ab63aa8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/muk.png differ diff --git a/graphics/object_events/pics/pokemon/murkrow.png b/graphics/object_events/pics/pokemon/murkrow.png new file mode 100755 index 000000000..62063434a Binary files /dev/null and b/graphics/object_events/pics/pokemon/murkrow.png differ diff --git a/graphics/object_events/pics/pokemon/natu.png b/graphics/object_events/pics/pokemon/natu.png new file mode 100755 index 000000000..7096895e3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/natu.png differ diff --git a/graphics/object_events/pics/pokemon/nidoking.png b/graphics/object_events/pics/pokemon/nidoking.png new file mode 100755 index 000000000..d85e68f46 Binary files /dev/null and b/graphics/object_events/pics/pokemon/nidoking.png differ diff --git a/graphics/object_events/pics/pokemon/nidoqueen.png b/graphics/object_events/pics/pokemon/nidoqueen.png new file mode 100755 index 000000000..557c4aa30 Binary files /dev/null and b/graphics/object_events/pics/pokemon/nidoqueen.png differ diff --git a/graphics/object_events/pics/pokemon/nidoran_f.png b/graphics/object_events/pics/pokemon/nidoran_f.png new file mode 100755 index 000000000..d10506636 Binary files /dev/null and b/graphics/object_events/pics/pokemon/nidoran_f.png differ diff --git a/graphics/object_events/pics/pokemon/nidoran_m.png b/graphics/object_events/pics/pokemon/nidoran_m.png new file mode 100755 index 000000000..48d6c1af5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/nidoran_m.png differ diff --git a/graphics/object_events/pics/pokemon/nidorina.png b/graphics/object_events/pics/pokemon/nidorina.png new file mode 100755 index 000000000..7d4e8fed8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/nidorina.png differ diff --git a/graphics/object_events/pics/pokemon/nidorino.png b/graphics/object_events/pics/pokemon/nidorino.png new file mode 100755 index 000000000..b91be9b5d Binary files /dev/null and b/graphics/object_events/pics/pokemon/nidorino.png differ diff --git a/graphics/object_events/pics/pokemon/nincada.png b/graphics/object_events/pics/pokemon/nincada.png new file mode 100755 index 000000000..8797cb94d Binary files /dev/null and b/graphics/object_events/pics/pokemon/nincada.png differ diff --git a/graphics/object_events/pics/pokemon/ninetales.png b/graphics/object_events/pics/pokemon/ninetales.png new file mode 100755 index 000000000..cc0f49e74 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ninetales.png differ diff --git a/graphics/object_events/pics/pokemon/ninjask.png b/graphics/object_events/pics/pokemon/ninjask.png new file mode 100755 index 000000000..a83f9b7d6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ninjask.png differ diff --git a/graphics/object_events/pics/pokemon/noctowl.png b/graphics/object_events/pics/pokemon/noctowl.png new file mode 100755 index 000000000..4f9680fd3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/noctowl.png differ diff --git a/graphics/object_events/pics/pokemon/nosepass.png b/graphics/object_events/pics/pokemon/nosepass.png new file mode 100755 index 000000000..201da05de Binary files /dev/null and b/graphics/object_events/pics/pokemon/nosepass.png differ diff --git a/graphics/object_events/pics/pokemon/numel.png b/graphics/object_events/pics/pokemon/numel.png new file mode 100755 index 000000000..8777fc352 Binary files /dev/null and b/graphics/object_events/pics/pokemon/numel.png differ diff --git a/graphics/object_events/pics/pokemon/nuzleaf.png b/graphics/object_events/pics/pokemon/nuzleaf.png new file mode 100755 index 000000000..59215f86f Binary files /dev/null and b/graphics/object_events/pics/pokemon/nuzleaf.png differ diff --git a/graphics/object_events/pics/pokemon/octillery.png b/graphics/object_events/pics/pokemon/octillery.png new file mode 100755 index 000000000..82e6ef463 Binary files /dev/null and b/graphics/object_events/pics/pokemon/octillery.png differ diff --git a/graphics/object_events/pics/pokemon/oddish.png b/graphics/object_events/pics/pokemon/oddish.png new file mode 100755 index 000000000..7d8582e93 Binary files /dev/null and b/graphics/object_events/pics/pokemon/oddish.png differ diff --git a/graphics/object_events/pics/pokemon/omanyte.png b/graphics/object_events/pics/pokemon/omanyte.png new file mode 100755 index 000000000..5bd3c05e3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/omanyte.png differ diff --git a/graphics/object_events/pics/pokemon/omastar.png b/graphics/object_events/pics/pokemon/omastar.png new file mode 100755 index 000000000..4087c809f Binary files /dev/null and b/graphics/object_events/pics/pokemon/omastar.png differ diff --git a/graphics/object_events/pics/pokemon/onix.png b/graphics/object_events/pics/pokemon/onix.png new file mode 100755 index 000000000..93cb4164c Binary files /dev/null and b/graphics/object_events/pics/pokemon/onix.png differ diff --git a/graphics/object_events/pics/pokemon/paras.png b/graphics/object_events/pics/pokemon/paras.png new file mode 100755 index 000000000..527da45bf Binary files /dev/null and b/graphics/object_events/pics/pokemon/paras.png differ diff --git a/graphics/object_events/pics/pokemon/parasect.png b/graphics/object_events/pics/pokemon/parasect.png new file mode 100755 index 000000000..7aedd4de6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/parasect.png differ diff --git a/graphics/object_events/pics/pokemon/pelipper.png b/graphics/object_events/pics/pokemon/pelipper.png new file mode 100755 index 000000000..3733feb3a Binary files /dev/null and b/graphics/object_events/pics/pokemon/pelipper.png differ diff --git a/graphics/object_events/pics/pokemon/persian.png b/graphics/object_events/pics/pokemon/persian.png new file mode 100755 index 000000000..7ded628de Binary files /dev/null and b/graphics/object_events/pics/pokemon/persian.png differ diff --git a/graphics/object_events/pics/pokemon/phanpy.png b/graphics/object_events/pics/pokemon/phanpy.png new file mode 100755 index 000000000..db5c52d6e Binary files /dev/null and b/graphics/object_events/pics/pokemon/phanpy.png differ diff --git a/graphics/object_events/pics/pokemon/pichu.png b/graphics/object_events/pics/pokemon/pichu.png new file mode 100755 index 000000000..a938f563b Binary files /dev/null and b/graphics/object_events/pics/pokemon/pichu.png differ diff --git a/graphics/object_events/pics/pokemon/pidgeot.png b/graphics/object_events/pics/pokemon/pidgeot.png new file mode 100755 index 000000000..733924b27 Binary files /dev/null and b/graphics/object_events/pics/pokemon/pidgeot.png differ diff --git a/graphics/object_events/pics/pokemon/pidgeotto.png b/graphics/object_events/pics/pokemon/pidgeotto.png new file mode 100755 index 000000000..848a3eebc Binary files /dev/null and b/graphics/object_events/pics/pokemon/pidgeotto.png differ diff --git a/graphics/object_events/pics/pokemon/pidgey.png b/graphics/object_events/pics/pokemon/pidgey.png new file mode 100755 index 000000000..dfaeebffc Binary files /dev/null and b/graphics/object_events/pics/pokemon/pidgey.png differ diff --git a/graphics/object_events/pics/pokemon/pikachu.png b/graphics/object_events/pics/pokemon/pikachu.png index b2d15ef17..6a6fde223 100755 Binary files a/graphics/object_events/pics/pokemon/pikachu.png and b/graphics/object_events/pics/pokemon/pikachu.png differ diff --git a/graphics/object_events/pics/pokemon/pikachu_old.png b/graphics/object_events/pics/pokemon/pikachu_old.png new file mode 100755 index 000000000..b2d15ef17 Binary files /dev/null and b/graphics/object_events/pics/pokemon/pikachu_old.png differ diff --git a/graphics/object_events/pics/pokemon/piloswine.png b/graphics/object_events/pics/pokemon/piloswine.png new file mode 100755 index 000000000..9f8676636 Binary files /dev/null and b/graphics/object_events/pics/pokemon/piloswine.png differ diff --git a/graphics/object_events/pics/pokemon/pineco.png b/graphics/object_events/pics/pokemon/pineco.png new file mode 100755 index 000000000..79ea8beb3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/pineco.png differ diff --git a/graphics/object_events/pics/pokemon/pinsir.png b/graphics/object_events/pics/pokemon/pinsir.png new file mode 100755 index 000000000..352a51824 Binary files /dev/null and b/graphics/object_events/pics/pokemon/pinsir.png differ diff --git a/graphics/object_events/pics/pokemon/plusle.png b/graphics/object_events/pics/pokemon/plusle.png new file mode 100755 index 000000000..8be270ffe Binary files /dev/null and b/graphics/object_events/pics/pokemon/plusle.png differ diff --git a/graphics/object_events/pics/pokemon/politoed.png b/graphics/object_events/pics/pokemon/politoed.png new file mode 100755 index 000000000..fb076915a Binary files /dev/null and b/graphics/object_events/pics/pokemon/politoed.png differ diff --git a/graphics/object_events/pics/pokemon/poliwag.png b/graphics/object_events/pics/pokemon/poliwag.png new file mode 100755 index 000000000..354ee262b Binary files /dev/null and b/graphics/object_events/pics/pokemon/poliwag.png differ diff --git a/graphics/object_events/pics/pokemon/poliwhirl.png b/graphics/object_events/pics/pokemon/poliwhirl.png new file mode 100755 index 000000000..76362bfc9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/poliwhirl.png differ diff --git a/graphics/object_events/pics/pokemon/poliwrath.png b/graphics/object_events/pics/pokemon/poliwrath.png new file mode 100755 index 000000000..904160827 Binary files /dev/null and b/graphics/object_events/pics/pokemon/poliwrath.png differ diff --git a/graphics/object_events/pics/pokemon/ponyta.png b/graphics/object_events/pics/pokemon/ponyta.png new file mode 100755 index 000000000..4326c8ff3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ponyta.png differ diff --git a/graphics/object_events/pics/pokemon/poochyena.png b/graphics/object_events/pics/pokemon/poochyena.png index 171a551d3..ebfb94708 100755 Binary files a/graphics/object_events/pics/pokemon/poochyena.png and b/graphics/object_events/pics/pokemon/poochyena.png differ diff --git a/graphics/object_events/pics/pokemon/poochyena_old.png b/graphics/object_events/pics/pokemon/poochyena_old.png new file mode 100755 index 000000000..171a551d3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/poochyena_old.png differ diff --git a/graphics/object_events/pics/pokemon/porygon.png b/graphics/object_events/pics/pokemon/porygon.png new file mode 100755 index 000000000..43bc30f12 Binary files /dev/null and b/graphics/object_events/pics/pokemon/porygon.png differ diff --git a/graphics/object_events/pics/pokemon/porygon2.png b/graphics/object_events/pics/pokemon/porygon2.png new file mode 100755 index 000000000..77383576b Binary files /dev/null and b/graphics/object_events/pics/pokemon/porygon2.png differ diff --git a/graphics/object_events/pics/pokemon/primeape.png b/graphics/object_events/pics/pokemon/primeape.png new file mode 100755 index 000000000..0ec19a2a0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/primeape.png differ diff --git a/graphics/object_events/pics/pokemon/psyduck.png b/graphics/object_events/pics/pokemon/psyduck.png new file mode 100755 index 000000000..d60e90c19 Binary files /dev/null and b/graphics/object_events/pics/pokemon/psyduck.png differ diff --git a/graphics/object_events/pics/pokemon/pupitar.png b/graphics/object_events/pics/pokemon/pupitar.png new file mode 100755 index 000000000..91d723821 Binary files /dev/null and b/graphics/object_events/pics/pokemon/pupitar.png differ diff --git a/graphics/object_events/pics/pokemon/quagsire.png b/graphics/object_events/pics/pokemon/quagsire.png new file mode 100755 index 000000000..3f3ef930e Binary files /dev/null and b/graphics/object_events/pics/pokemon/quagsire.png differ diff --git a/graphics/object_events/pics/pokemon/quilava.png b/graphics/object_events/pics/pokemon/quilava.png new file mode 100755 index 000000000..b1f1d1e35 Binary files /dev/null and b/graphics/object_events/pics/pokemon/quilava.png differ diff --git a/graphics/object_events/pics/pokemon/qwilfish.png b/graphics/object_events/pics/pokemon/qwilfish.png new file mode 100755 index 000000000..277b6e121 Binary files /dev/null and b/graphics/object_events/pics/pokemon/qwilfish.png differ diff --git a/graphics/object_events/pics/pokemon/raichu.png b/graphics/object_events/pics/pokemon/raichu.png new file mode 100755 index 000000000..b5ffa0402 Binary files /dev/null and b/graphics/object_events/pics/pokemon/raichu.png differ diff --git a/graphics/object_events/pics/pokemon/raikou.png b/graphics/object_events/pics/pokemon/raikou.png new file mode 100755 index 000000000..742385dee Binary files /dev/null and b/graphics/object_events/pics/pokemon/raikou.png differ diff --git a/graphics/object_events/pics/pokemon/ralts.png b/graphics/object_events/pics/pokemon/ralts.png new file mode 100755 index 000000000..3d67cfe81 Binary files /dev/null and b/graphics/object_events/pics/pokemon/ralts.png differ diff --git a/graphics/object_events/pics/pokemon/rapidash.png b/graphics/object_events/pics/pokemon/rapidash.png new file mode 100755 index 000000000..c8c098b68 Binary files /dev/null and b/graphics/object_events/pics/pokemon/rapidash.png differ diff --git a/graphics/object_events/pics/pokemon/raticate.png b/graphics/object_events/pics/pokemon/raticate.png new file mode 100755 index 000000000..dd13a7c2d Binary files /dev/null and b/graphics/object_events/pics/pokemon/raticate.png differ diff --git a/graphics/object_events/pics/pokemon/rattata.png b/graphics/object_events/pics/pokemon/rattata.png new file mode 100755 index 000000000..a3ab65a3f Binary files /dev/null and b/graphics/object_events/pics/pokemon/rattata.png differ diff --git a/graphics/object_events/pics/pokemon/rayquaza.png b/graphics/object_events/pics/pokemon/rayquaza.png index 9a74dc64f..7e67f45c4 100755 Binary files a/graphics/object_events/pics/pokemon/rayquaza.png and b/graphics/object_events/pics/pokemon/rayquaza.png differ diff --git a/graphics/object_events/pics/pokemon/rayquaza_cutscene.png b/graphics/object_events/pics/pokemon/rayquaza_cutscene.png new file mode 100755 index 000000000..9a74dc64f Binary files /dev/null and b/graphics/object_events/pics/pokemon/rayquaza_cutscene.png differ diff --git a/graphics/object_events/pics/pokemon/regice.png b/graphics/object_events/pics/pokemon/regice.png new file mode 100755 index 000000000..0cefcfc4f Binary files /dev/null and b/graphics/object_events/pics/pokemon/regice.png differ diff --git a/graphics/object_events/pics/pokemon/regirock.png b/graphics/object_events/pics/pokemon/regirock.png new file mode 100755 index 000000000..0630d3a4b Binary files /dev/null and b/graphics/object_events/pics/pokemon/regirock.png differ diff --git a/graphics/object_events/pics/pokemon/registeel.png b/graphics/object_events/pics/pokemon/registeel.png new file mode 100755 index 000000000..f735eba0e Binary files /dev/null and b/graphics/object_events/pics/pokemon/registeel.png differ diff --git a/graphics/object_events/pics/pokemon/relicanth.png b/graphics/object_events/pics/pokemon/relicanth.png new file mode 100755 index 000000000..bf1d17877 Binary files /dev/null and b/graphics/object_events/pics/pokemon/relicanth.png differ diff --git a/graphics/object_events/pics/pokemon/remoraid.png b/graphics/object_events/pics/pokemon/remoraid.png new file mode 100755 index 000000000..90d0eaed8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/remoraid.png differ diff --git a/graphics/object_events/pics/pokemon/rhydon.png b/graphics/object_events/pics/pokemon/rhydon.png new file mode 100755 index 000000000..1d7090dd9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/rhydon.png differ diff --git a/graphics/object_events/pics/pokemon/rhyhorn.png b/graphics/object_events/pics/pokemon/rhyhorn.png new file mode 100755 index 000000000..f380db4bf Binary files /dev/null and b/graphics/object_events/pics/pokemon/rhyhorn.png differ diff --git a/graphics/object_events/pics/pokemon/roselia.png b/graphics/object_events/pics/pokemon/roselia.png new file mode 100755 index 000000000..c451f11d9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/roselia.png differ diff --git a/graphics/object_events/pics/pokemon/sableye.png b/graphics/object_events/pics/pokemon/sableye.png new file mode 100755 index 000000000..175d7133c Binary files /dev/null and b/graphics/object_events/pics/pokemon/sableye.png differ diff --git a/graphics/object_events/pics/pokemon/salamence.png b/graphics/object_events/pics/pokemon/salamence.png new file mode 100755 index 000000000..e7bb25587 Binary files /dev/null and b/graphics/object_events/pics/pokemon/salamence.png differ diff --git a/graphics/object_events/pics/pokemon/sandshrew.png b/graphics/object_events/pics/pokemon/sandshrew.png new file mode 100755 index 000000000..ef3c30dc2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/sandshrew.png differ diff --git a/graphics/object_events/pics/pokemon/sandslash.png b/graphics/object_events/pics/pokemon/sandslash.png new file mode 100755 index 000000000..f1662257c Binary files /dev/null and b/graphics/object_events/pics/pokemon/sandslash.png differ diff --git a/graphics/object_events/pics/pokemon/sceptile.png b/graphics/object_events/pics/pokemon/sceptile.png new file mode 100755 index 000000000..b806c08c1 Binary files /dev/null and b/graphics/object_events/pics/pokemon/sceptile.png differ diff --git a/graphics/object_events/pics/pokemon/scizor.png b/graphics/object_events/pics/pokemon/scizor.png new file mode 100755 index 000000000..00554a04a Binary files /dev/null and b/graphics/object_events/pics/pokemon/scizor.png differ diff --git a/graphics/object_events/pics/pokemon/scyther.png b/graphics/object_events/pics/pokemon/scyther.png new file mode 100755 index 000000000..7deeb6ebc Binary files /dev/null and b/graphics/object_events/pics/pokemon/scyther.png differ diff --git a/graphics/object_events/pics/pokemon/seadra.png b/graphics/object_events/pics/pokemon/seadra.png new file mode 100755 index 000000000..0a6494a2b Binary files /dev/null and b/graphics/object_events/pics/pokemon/seadra.png differ diff --git a/graphics/object_events/pics/pokemon/seaking.png b/graphics/object_events/pics/pokemon/seaking.png new file mode 100755 index 000000000..5d34a273a Binary files /dev/null and b/graphics/object_events/pics/pokemon/seaking.png differ diff --git a/graphics/object_events/pics/pokemon/sealeo.png b/graphics/object_events/pics/pokemon/sealeo.png new file mode 100755 index 000000000..ce0eb16ff Binary files /dev/null and b/graphics/object_events/pics/pokemon/sealeo.png differ diff --git a/graphics/object_events/pics/pokemon/seedot.png b/graphics/object_events/pics/pokemon/seedot.png new file mode 100755 index 000000000..fa16b28df Binary files /dev/null and b/graphics/object_events/pics/pokemon/seedot.png differ diff --git a/graphics/object_events/pics/pokemon/seel.png b/graphics/object_events/pics/pokemon/seel.png new file mode 100755 index 000000000..d64b24e94 Binary files /dev/null and b/graphics/object_events/pics/pokemon/seel.png differ diff --git a/graphics/object_events/pics/pokemon/sentret.png b/graphics/object_events/pics/pokemon/sentret.png new file mode 100755 index 000000000..eba10d7c8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/sentret.png differ diff --git a/graphics/object_events/pics/pokemon/seviper.png b/graphics/object_events/pics/pokemon/seviper.png new file mode 100755 index 000000000..7a6d44648 Binary files /dev/null and b/graphics/object_events/pics/pokemon/seviper.png differ diff --git a/graphics/object_events/pics/pokemon/sharpedo.png b/graphics/object_events/pics/pokemon/sharpedo.png new file mode 100755 index 000000000..1d4c8a511 Binary files /dev/null and b/graphics/object_events/pics/pokemon/sharpedo.png differ diff --git a/graphics/object_events/pics/pokemon/shedinja.png b/graphics/object_events/pics/pokemon/shedinja.png new file mode 100755 index 000000000..0f878808e Binary files /dev/null and b/graphics/object_events/pics/pokemon/shedinja.png differ diff --git a/graphics/object_events/pics/pokemon/shelgon.png b/graphics/object_events/pics/pokemon/shelgon.png new file mode 100755 index 000000000..93a9bc739 Binary files /dev/null and b/graphics/object_events/pics/pokemon/shelgon.png differ diff --git a/graphics/object_events/pics/pokemon/shellder.png b/graphics/object_events/pics/pokemon/shellder.png new file mode 100755 index 000000000..c097c292b Binary files /dev/null and b/graphics/object_events/pics/pokemon/shellder.png differ diff --git a/graphics/object_events/pics/pokemon/shiftry.png b/graphics/object_events/pics/pokemon/shiftry.png new file mode 100755 index 000000000..03553c3f2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/shiftry.png differ diff --git a/graphics/object_events/pics/pokemon/shroomish.png b/graphics/object_events/pics/pokemon/shroomish.png new file mode 100755 index 000000000..de258414e Binary files /dev/null and b/graphics/object_events/pics/pokemon/shroomish.png differ diff --git a/graphics/object_events/pics/pokemon/shuckle.png b/graphics/object_events/pics/pokemon/shuckle.png new file mode 100755 index 000000000..9f89c758a Binary files /dev/null and b/graphics/object_events/pics/pokemon/shuckle.png differ diff --git a/graphics/object_events/pics/pokemon/shuppet.png b/graphics/object_events/pics/pokemon/shuppet.png new file mode 100755 index 000000000..533e6ae55 Binary files /dev/null and b/graphics/object_events/pics/pokemon/shuppet.png differ diff --git a/graphics/object_events/pics/pokemon/silcoon.png b/graphics/object_events/pics/pokemon/silcoon.png new file mode 100755 index 000000000..685e91d7a Binary files /dev/null and b/graphics/object_events/pics/pokemon/silcoon.png differ diff --git a/graphics/object_events/pics/pokemon/skarmory.png b/graphics/object_events/pics/pokemon/skarmory.png new file mode 100755 index 000000000..ced42da31 Binary files /dev/null and b/graphics/object_events/pics/pokemon/skarmory.png differ diff --git a/graphics/object_events/pics/pokemon/skiploom.png b/graphics/object_events/pics/pokemon/skiploom.png new file mode 100755 index 000000000..6fd848942 Binary files /dev/null and b/graphics/object_events/pics/pokemon/skiploom.png differ diff --git a/graphics/object_events/pics/pokemon/skitty.png b/graphics/object_events/pics/pokemon/skitty.png index 2b7810412..88fb6566b 100755 Binary files a/graphics/object_events/pics/pokemon/skitty.png and b/graphics/object_events/pics/pokemon/skitty.png differ diff --git a/graphics/object_events/pics/pokemon/skitty_old.png b/graphics/object_events/pics/pokemon/skitty_old.png new file mode 100755 index 000000000..2b7810412 Binary files /dev/null and b/graphics/object_events/pics/pokemon/skitty_old.png differ diff --git a/graphics/object_events/pics/pokemon/slaking.png b/graphics/object_events/pics/pokemon/slaking.png new file mode 100755 index 000000000..84e5efc38 Binary files /dev/null and b/graphics/object_events/pics/pokemon/slaking.png differ diff --git a/graphics/object_events/pics/pokemon/slakoth.png b/graphics/object_events/pics/pokemon/slakoth.png new file mode 100755 index 000000000..10f7b0c16 Binary files /dev/null and b/graphics/object_events/pics/pokemon/slakoth.png differ diff --git a/graphics/object_events/pics/pokemon/slowbro.png b/graphics/object_events/pics/pokemon/slowbro.png new file mode 100755 index 000000000..bc919bd50 Binary files /dev/null and b/graphics/object_events/pics/pokemon/slowbro.png differ diff --git a/graphics/object_events/pics/pokemon/slowking.png b/graphics/object_events/pics/pokemon/slowking.png new file mode 100755 index 000000000..3173a30fa Binary files /dev/null and b/graphics/object_events/pics/pokemon/slowking.png differ diff --git a/graphics/object_events/pics/pokemon/slowpoke.png b/graphics/object_events/pics/pokemon/slowpoke.png new file mode 100755 index 000000000..b7ffb9f47 Binary files /dev/null and b/graphics/object_events/pics/pokemon/slowpoke.png differ diff --git a/graphics/object_events/pics/pokemon/slugma.png b/graphics/object_events/pics/pokemon/slugma.png new file mode 100755 index 000000000..0f54cf238 Binary files /dev/null and b/graphics/object_events/pics/pokemon/slugma.png differ diff --git a/graphics/object_events/pics/pokemon/smeargle.png b/graphics/object_events/pics/pokemon/smeargle.png new file mode 100755 index 000000000..282ae1f6d Binary files /dev/null and b/graphics/object_events/pics/pokemon/smeargle.png differ diff --git a/graphics/object_events/pics/pokemon/smoochum.png b/graphics/object_events/pics/pokemon/smoochum.png new file mode 100755 index 000000000..62c6c4185 Binary files /dev/null and b/graphics/object_events/pics/pokemon/smoochum.png differ diff --git a/graphics/object_events/pics/pokemon/sneasel.png b/graphics/object_events/pics/pokemon/sneasel.png new file mode 100755 index 000000000..37085eaff Binary files /dev/null and b/graphics/object_events/pics/pokemon/sneasel.png differ diff --git a/graphics/object_events/pics/pokemon/snorlax.png b/graphics/object_events/pics/pokemon/snorlax.png new file mode 100755 index 000000000..14bb87fc9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/snorlax.png differ diff --git a/graphics/object_events/pics/pokemon/snorunt.png b/graphics/object_events/pics/pokemon/snorunt.png new file mode 100755 index 000000000..34249e161 Binary files /dev/null and b/graphics/object_events/pics/pokemon/snorunt.png differ diff --git a/graphics/object_events/pics/pokemon/snubbull.png b/graphics/object_events/pics/pokemon/snubbull.png new file mode 100755 index 000000000..3e717b856 Binary files /dev/null and b/graphics/object_events/pics/pokemon/snubbull.png differ diff --git a/graphics/object_events/pics/pokemon/solrock.png b/graphics/object_events/pics/pokemon/solrock.png new file mode 100755 index 000000000..894526490 Binary files /dev/null and b/graphics/object_events/pics/pokemon/solrock.png differ diff --git a/graphics/object_events/pics/pokemon/spearow.png b/graphics/object_events/pics/pokemon/spearow.png new file mode 100755 index 000000000..1bf054045 Binary files /dev/null and b/graphics/object_events/pics/pokemon/spearow.png differ diff --git a/graphics/object_events/pics/pokemon/spheal.png b/graphics/object_events/pics/pokemon/spheal.png new file mode 100755 index 000000000..d20074238 Binary files /dev/null and b/graphics/object_events/pics/pokemon/spheal.png differ diff --git a/graphics/object_events/pics/pokemon/spinarak.png b/graphics/object_events/pics/pokemon/spinarak.png new file mode 100755 index 000000000..0f78256a4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/spinarak.png differ diff --git a/graphics/object_events/pics/pokemon/spinda.png b/graphics/object_events/pics/pokemon/spinda.png new file mode 100755 index 000000000..ab92fefa3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/spinda.png differ diff --git a/graphics/object_events/pics/pokemon/spoink.png b/graphics/object_events/pics/pokemon/spoink.png new file mode 100755 index 000000000..249879e3f Binary files /dev/null and b/graphics/object_events/pics/pokemon/spoink.png differ diff --git a/graphics/object_events/pics/pokemon/squirtle.png b/graphics/object_events/pics/pokemon/squirtle.png new file mode 100755 index 000000000..e7cd92236 Binary files /dev/null and b/graphics/object_events/pics/pokemon/squirtle.png differ diff --git a/graphics/object_events/pics/pokemon/stantler.png b/graphics/object_events/pics/pokemon/stantler.png new file mode 100755 index 000000000..9e286923f Binary files /dev/null and b/graphics/object_events/pics/pokemon/stantler.png differ diff --git a/graphics/object_events/pics/pokemon/starmie.png b/graphics/object_events/pics/pokemon/starmie.png new file mode 100755 index 000000000..06bdefa00 Binary files /dev/null and b/graphics/object_events/pics/pokemon/starmie.png differ diff --git a/graphics/object_events/pics/pokemon/staryu.png b/graphics/object_events/pics/pokemon/staryu.png new file mode 100755 index 000000000..dcae94887 Binary files /dev/null and b/graphics/object_events/pics/pokemon/staryu.png differ diff --git a/graphics/object_events/pics/pokemon/steelix.png b/graphics/object_events/pics/pokemon/steelix.png new file mode 100755 index 000000000..a5461601e Binary files /dev/null and b/graphics/object_events/pics/pokemon/steelix.png differ diff --git a/graphics/object_events/pics/pokemon/sudowoodo.png b/graphics/object_events/pics/pokemon/sudowoodo.png index 0e084dcc0..6db283b21 100755 Binary files a/graphics/object_events/pics/pokemon/sudowoodo.png and b/graphics/object_events/pics/pokemon/sudowoodo.png differ diff --git a/graphics/object_events/pics/pokemon/sudowoodo_tree.png b/graphics/object_events/pics/pokemon/sudowoodo_tree.png new file mode 100755 index 000000000..0e084dcc0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/sudowoodo_tree.png differ diff --git a/graphics/object_events/pics/pokemon/suicune.png b/graphics/object_events/pics/pokemon/suicune.png new file mode 100755 index 000000000..aee3d646d Binary files /dev/null and b/graphics/object_events/pics/pokemon/suicune.png differ diff --git a/graphics/object_events/pics/pokemon/sunflora.png b/graphics/object_events/pics/pokemon/sunflora.png new file mode 100755 index 000000000..2218003c7 Binary files /dev/null and b/graphics/object_events/pics/pokemon/sunflora.png differ diff --git a/graphics/object_events/pics/pokemon/sunkern.png b/graphics/object_events/pics/pokemon/sunkern.png new file mode 100755 index 000000000..ae9f2169e Binary files /dev/null and b/graphics/object_events/pics/pokemon/sunkern.png differ diff --git a/graphics/object_events/pics/pokemon/surskit.png b/graphics/object_events/pics/pokemon/surskit.png new file mode 100755 index 000000000..b29ec8757 Binary files /dev/null and b/graphics/object_events/pics/pokemon/surskit.png differ diff --git a/graphics/object_events/pics/pokemon/swablu.png b/graphics/object_events/pics/pokemon/swablu.png new file mode 100755 index 000000000..02fb1af43 Binary files /dev/null and b/graphics/object_events/pics/pokemon/swablu.png differ diff --git a/graphics/object_events/pics/pokemon/swalot.png b/graphics/object_events/pics/pokemon/swalot.png new file mode 100755 index 000000000..1beec209e Binary files /dev/null and b/graphics/object_events/pics/pokemon/swalot.png differ diff --git a/graphics/object_events/pics/pokemon/swampert.png b/graphics/object_events/pics/pokemon/swampert.png new file mode 100755 index 000000000..a72513f8a Binary files /dev/null and b/graphics/object_events/pics/pokemon/swampert.png differ diff --git a/graphics/object_events/pics/pokemon/swellow.png b/graphics/object_events/pics/pokemon/swellow.png new file mode 100755 index 000000000..10e7e5200 Binary files /dev/null and b/graphics/object_events/pics/pokemon/swellow.png differ diff --git a/graphics/object_events/pics/pokemon/swinub.png b/graphics/object_events/pics/pokemon/swinub.png new file mode 100755 index 000000000..4676bb919 Binary files /dev/null and b/graphics/object_events/pics/pokemon/swinub.png differ diff --git a/graphics/object_events/pics/pokemon/taillow.png b/graphics/object_events/pics/pokemon/taillow.png new file mode 100755 index 000000000..0773282da Binary files /dev/null and b/graphics/object_events/pics/pokemon/taillow.png differ diff --git a/graphics/object_events/pics/pokemon/tangela.png b/graphics/object_events/pics/pokemon/tangela.png new file mode 100755 index 000000000..355665789 Binary files /dev/null and b/graphics/object_events/pics/pokemon/tangela.png differ diff --git a/graphics/object_events/pics/pokemon/tauros.png b/graphics/object_events/pics/pokemon/tauros.png new file mode 100755 index 000000000..7e9ac057b Binary files /dev/null and b/graphics/object_events/pics/pokemon/tauros.png differ diff --git a/graphics/object_events/pics/pokemon/teddiursa.png b/graphics/object_events/pics/pokemon/teddiursa.png new file mode 100755 index 000000000..5a02f9785 Binary files /dev/null and b/graphics/object_events/pics/pokemon/teddiursa.png differ diff --git a/graphics/object_events/pics/pokemon/tentacool.png b/graphics/object_events/pics/pokemon/tentacool.png new file mode 100755 index 000000000..5a28509c9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/tentacool.png differ diff --git a/graphics/object_events/pics/pokemon/tentacruel.png b/graphics/object_events/pics/pokemon/tentacruel.png new file mode 100755 index 000000000..fabd2969c Binary files /dev/null and b/graphics/object_events/pics/pokemon/tentacruel.png differ diff --git a/graphics/object_events/pics/pokemon/togepi.png b/graphics/object_events/pics/pokemon/togepi.png new file mode 100755 index 000000000..3fe68efa0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/togepi.png differ diff --git a/graphics/object_events/pics/pokemon/togetic.png b/graphics/object_events/pics/pokemon/togetic.png new file mode 100755 index 000000000..74f8346b6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/togetic.png differ diff --git a/graphics/object_events/pics/pokemon/torchic.png b/graphics/object_events/pics/pokemon/torchic.png new file mode 100755 index 000000000..f25ad726b Binary files /dev/null and b/graphics/object_events/pics/pokemon/torchic.png differ diff --git a/graphics/object_events/pics/pokemon/torkoal.png b/graphics/object_events/pics/pokemon/torkoal.png new file mode 100755 index 000000000..b7fcde504 Binary files /dev/null and b/graphics/object_events/pics/pokemon/torkoal.png differ diff --git a/graphics/object_events/pics/pokemon/totodile.png b/graphics/object_events/pics/pokemon/totodile.png new file mode 100755 index 000000000..502fe36ef Binary files /dev/null and b/graphics/object_events/pics/pokemon/totodile.png differ diff --git a/graphics/object_events/pics/pokemon/trapinch.png b/graphics/object_events/pics/pokemon/trapinch.png new file mode 100755 index 000000000..55391b9d6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/trapinch.png differ diff --git a/graphics/object_events/pics/pokemon/treecko.png b/graphics/object_events/pics/pokemon/treecko.png new file mode 100755 index 000000000..afae60848 Binary files /dev/null and b/graphics/object_events/pics/pokemon/treecko.png differ diff --git a/graphics/object_events/pics/pokemon/tropius.png b/graphics/object_events/pics/pokemon/tropius.png new file mode 100755 index 000000000..655350697 Binary files /dev/null and b/graphics/object_events/pics/pokemon/tropius.png differ diff --git a/graphics/object_events/pics/pokemon/typhlosion.png b/graphics/object_events/pics/pokemon/typhlosion.png new file mode 100755 index 000000000..9cbaf47dd Binary files /dev/null and b/graphics/object_events/pics/pokemon/typhlosion.png differ diff --git a/graphics/object_events/pics/pokemon/tyranitar.png b/graphics/object_events/pics/pokemon/tyranitar.png new file mode 100755 index 000000000..266c2037a Binary files /dev/null and b/graphics/object_events/pics/pokemon/tyranitar.png differ diff --git a/graphics/object_events/pics/pokemon/tyrogue.png b/graphics/object_events/pics/pokemon/tyrogue.png new file mode 100755 index 000000000..fbf8f5fc4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/tyrogue.png differ diff --git a/graphics/object_events/pics/pokemon/umbreon.png b/graphics/object_events/pics/pokemon/umbreon.png new file mode 100755 index 000000000..9c6972d05 Binary files /dev/null and b/graphics/object_events/pics/pokemon/umbreon.png differ diff --git a/graphics/object_events/pics/pokemon/unown_a.png b/graphics/object_events/pics/pokemon/unown_a.png new file mode 100755 index 000000000..7646b5fe8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_a.png differ diff --git a/graphics/object_events/pics/pokemon/unown_b.png b/graphics/object_events/pics/pokemon/unown_b.png new file mode 100755 index 000000000..b2500cca0 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_b.png differ diff --git a/graphics/object_events/pics/pokemon/unown_c.png b/graphics/object_events/pics/pokemon/unown_c.png new file mode 100755 index 000000000..d7f631f31 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_c.png differ diff --git a/graphics/object_events/pics/pokemon/unown_d.png b/graphics/object_events/pics/pokemon/unown_d.png new file mode 100755 index 000000000..426e517d5 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_d.png differ diff --git a/graphics/object_events/pics/pokemon/unown_e.png b/graphics/object_events/pics/pokemon/unown_e.png new file mode 100755 index 000000000..741a5ef42 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_e.png differ diff --git a/graphics/object_events/pics/pokemon/unown_exclamation.png b/graphics/object_events/pics/pokemon/unown_exclamation.png new file mode 100755 index 000000000..4271c7ab9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_exclamation.png differ diff --git a/graphics/object_events/pics/pokemon/unown_f.png b/graphics/object_events/pics/pokemon/unown_f.png new file mode 100755 index 000000000..ea3332e94 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_f.png differ diff --git a/graphics/object_events/pics/pokemon/unown_g.png b/graphics/object_events/pics/pokemon/unown_g.png new file mode 100755 index 000000000..d9308fbe3 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_g.png differ diff --git a/graphics/object_events/pics/pokemon/unown_h.png b/graphics/object_events/pics/pokemon/unown_h.png new file mode 100755 index 000000000..9abe3e400 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_h.png differ diff --git a/graphics/object_events/pics/pokemon/unown_i.png b/graphics/object_events/pics/pokemon/unown_i.png new file mode 100755 index 000000000..39aa3b857 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_i.png differ diff --git a/graphics/object_events/pics/pokemon/unown_j.png b/graphics/object_events/pics/pokemon/unown_j.png new file mode 100755 index 000000000..af240eafd Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_j.png differ diff --git a/graphics/object_events/pics/pokemon/unown_k.png b/graphics/object_events/pics/pokemon/unown_k.png new file mode 100755 index 000000000..b448f866e Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_k.png differ diff --git a/graphics/object_events/pics/pokemon/unown_l.png b/graphics/object_events/pics/pokemon/unown_l.png new file mode 100755 index 000000000..b11096a1a Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_l.png differ diff --git a/graphics/object_events/pics/pokemon/unown_m.png b/graphics/object_events/pics/pokemon/unown_m.png new file mode 100755 index 000000000..0d5f60e29 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_m.png differ diff --git a/graphics/object_events/pics/pokemon/unown_n.png b/graphics/object_events/pics/pokemon/unown_n.png new file mode 100755 index 000000000..8b3939283 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_n.png differ diff --git a/graphics/object_events/pics/pokemon/unown_o.png b/graphics/object_events/pics/pokemon/unown_o.png new file mode 100755 index 000000000..23a5f2e27 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_o.png differ diff --git a/graphics/object_events/pics/pokemon/unown_p.png b/graphics/object_events/pics/pokemon/unown_p.png new file mode 100755 index 000000000..f3699ebdc Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_p.png differ diff --git a/graphics/object_events/pics/pokemon/unown_q.png b/graphics/object_events/pics/pokemon/unown_q.png new file mode 100755 index 000000000..1e2bc7f46 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_q.png differ diff --git a/graphics/object_events/pics/pokemon/unown_question.png b/graphics/object_events/pics/pokemon/unown_question.png new file mode 100755 index 000000000..e4d210288 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_question.png differ diff --git a/graphics/object_events/pics/pokemon/unown_r.png b/graphics/object_events/pics/pokemon/unown_r.png new file mode 100755 index 000000000..70194b27c Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_r.png differ diff --git a/graphics/object_events/pics/pokemon/unown_s.png b/graphics/object_events/pics/pokemon/unown_s.png new file mode 100755 index 000000000..2dacced84 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_s.png differ diff --git a/graphics/object_events/pics/pokemon/unown_t.png b/graphics/object_events/pics/pokemon/unown_t.png new file mode 100755 index 000000000..cb476bf5e Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_t.png differ diff --git a/graphics/object_events/pics/pokemon/unown_u.png b/graphics/object_events/pics/pokemon/unown_u.png new file mode 100755 index 000000000..2bde34854 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_u.png differ diff --git a/graphics/object_events/pics/pokemon/unown_v.png b/graphics/object_events/pics/pokemon/unown_v.png new file mode 100755 index 000000000..0bb8dba96 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_v.png differ diff --git a/graphics/object_events/pics/pokemon/unown_w.png b/graphics/object_events/pics/pokemon/unown_w.png new file mode 100755 index 000000000..d49a4cf96 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_w.png differ diff --git a/graphics/object_events/pics/pokemon/unown_x.png b/graphics/object_events/pics/pokemon/unown_x.png new file mode 100755 index 000000000..e1621d278 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_x.png differ diff --git a/graphics/object_events/pics/pokemon/unown_y.png b/graphics/object_events/pics/pokemon/unown_y.png new file mode 100755 index 000000000..d9fe25135 Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_y.png differ diff --git a/graphics/object_events/pics/pokemon/unown_z.png b/graphics/object_events/pics/pokemon/unown_z.png new file mode 100755 index 000000000..e2097128e Binary files /dev/null and b/graphics/object_events/pics/pokemon/unown_z.png differ diff --git a/graphics/object_events/pics/pokemon/ursaring.png b/graphics/object_events/pics/pokemon/ursaring.png new file mode 100755 index 000000000..e0b7dc01f Binary files /dev/null and b/graphics/object_events/pics/pokemon/ursaring.png differ diff --git a/graphics/object_events/pics/pokemon/vaporeon.png b/graphics/object_events/pics/pokemon/vaporeon.png new file mode 100755 index 000000000..17ed5e02c Binary files /dev/null and b/graphics/object_events/pics/pokemon/vaporeon.png differ diff --git a/graphics/object_events/pics/pokemon/venomoth.png b/graphics/object_events/pics/pokemon/venomoth.png new file mode 100755 index 000000000..014e5c36e Binary files /dev/null and b/graphics/object_events/pics/pokemon/venomoth.png differ diff --git a/graphics/object_events/pics/pokemon/venonat.png b/graphics/object_events/pics/pokemon/venonat.png new file mode 100755 index 000000000..231531c84 Binary files /dev/null and b/graphics/object_events/pics/pokemon/venonat.png differ diff --git a/graphics/object_events/pics/pokemon/venusaur.png b/graphics/object_events/pics/pokemon/venusaur.png new file mode 100755 index 000000000..1c49947b2 Binary files /dev/null and b/graphics/object_events/pics/pokemon/venusaur.png differ diff --git a/graphics/object_events/pics/pokemon/vibrava.png b/graphics/object_events/pics/pokemon/vibrava.png new file mode 100755 index 000000000..b91ff3075 Binary files /dev/null and b/graphics/object_events/pics/pokemon/vibrava.png differ diff --git a/graphics/object_events/pics/pokemon/victreebel.png b/graphics/object_events/pics/pokemon/victreebel.png new file mode 100755 index 000000000..01454190d Binary files /dev/null and b/graphics/object_events/pics/pokemon/victreebel.png differ diff --git a/graphics/object_events/pics/pokemon/vigoroth.png b/graphics/object_events/pics/pokemon/vigoroth.png index d9ea6dbed..f05be0d0a 100755 Binary files a/graphics/object_events/pics/pokemon/vigoroth.png and b/graphics/object_events/pics/pokemon/vigoroth.png differ diff --git a/graphics/object_events/pics/pokemon/vigoroth_mover.png b/graphics/object_events/pics/pokemon/vigoroth_mover.png new file mode 100755 index 000000000..d9ea6dbed Binary files /dev/null and b/graphics/object_events/pics/pokemon/vigoroth_mover.png differ diff --git a/graphics/object_events/pics/pokemon/vileplume.png b/graphics/object_events/pics/pokemon/vileplume.png new file mode 100755 index 000000000..f36d5daa6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/vileplume.png differ diff --git a/graphics/object_events/pics/pokemon/volbeat.png b/graphics/object_events/pics/pokemon/volbeat.png new file mode 100755 index 000000000..d8ade51b9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/volbeat.png differ diff --git a/graphics/object_events/pics/pokemon/voltorb.png b/graphics/object_events/pics/pokemon/voltorb.png new file mode 100755 index 000000000..91b5b76f8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/voltorb.png differ diff --git a/graphics/object_events/pics/pokemon/vulpix.png b/graphics/object_events/pics/pokemon/vulpix.png new file mode 100755 index 000000000..d3b632f42 Binary files /dev/null and b/graphics/object_events/pics/pokemon/vulpix.png differ diff --git a/graphics/object_events/pics/pokemon/wailmer.png b/graphics/object_events/pics/pokemon/wailmer.png new file mode 100755 index 000000000..809983ce9 Binary files /dev/null and b/graphics/object_events/pics/pokemon/wailmer.png differ diff --git a/graphics/object_events/pics/pokemon/wailord.png b/graphics/object_events/pics/pokemon/wailord.png new file mode 100755 index 000000000..a1fc3a087 Binary files /dev/null and b/graphics/object_events/pics/pokemon/wailord.png differ diff --git a/graphics/object_events/pics/pokemon/walrein.png b/graphics/object_events/pics/pokemon/walrein.png new file mode 100755 index 000000000..0c727a970 Binary files /dev/null and b/graphics/object_events/pics/pokemon/walrein.png differ diff --git a/graphics/object_events/pics/pokemon/wartortle.png b/graphics/object_events/pics/pokemon/wartortle.png new file mode 100755 index 000000000..870d26c64 Binary files /dev/null and b/graphics/object_events/pics/pokemon/wartortle.png differ diff --git a/graphics/object_events/pics/pokemon/weedle.png b/graphics/object_events/pics/pokemon/weedle.png new file mode 100755 index 000000000..bebc67b3a Binary files /dev/null and b/graphics/object_events/pics/pokemon/weedle.png differ diff --git a/graphics/object_events/pics/pokemon/weepinbell.png b/graphics/object_events/pics/pokemon/weepinbell.png new file mode 100755 index 000000000..3376f35dd Binary files /dev/null and b/graphics/object_events/pics/pokemon/weepinbell.png differ diff --git a/graphics/object_events/pics/pokemon/weezing.png b/graphics/object_events/pics/pokemon/weezing.png new file mode 100755 index 000000000..e40fe692e Binary files /dev/null and b/graphics/object_events/pics/pokemon/weezing.png differ diff --git a/graphics/object_events/pics/pokemon/whiscash.png b/graphics/object_events/pics/pokemon/whiscash.png new file mode 100755 index 000000000..37c8d2e16 Binary files /dev/null and b/graphics/object_events/pics/pokemon/whiscash.png differ diff --git a/graphics/object_events/pics/pokemon/whismur.png b/graphics/object_events/pics/pokemon/whismur.png new file mode 100755 index 000000000..714137dd4 Binary files /dev/null and b/graphics/object_events/pics/pokemon/whismur.png differ diff --git a/graphics/object_events/pics/pokemon/wigglytuff.png b/graphics/object_events/pics/pokemon/wigglytuff.png new file mode 100755 index 000000000..cd34c1865 Binary files /dev/null and b/graphics/object_events/pics/pokemon/wigglytuff.png differ diff --git a/graphics/object_events/pics/pokemon/wingull.png b/graphics/object_events/pics/pokemon/wingull.png index 9401d77f8..bef36dd11 100755 Binary files a/graphics/object_events/pics/pokemon/wingull.png and b/graphics/object_events/pics/pokemon/wingull.png differ diff --git a/graphics/object_events/pics/pokemon/wingull_old.png b/graphics/object_events/pics/pokemon/wingull_old.png new file mode 100755 index 000000000..9401d77f8 Binary files /dev/null and b/graphics/object_events/pics/pokemon/wingull_old.png differ diff --git a/graphics/object_events/pics/pokemon/wobbuffet.png b/graphics/object_events/pics/pokemon/wobbuffet.png new file mode 100755 index 000000000..6396fd0ce Binary files /dev/null and b/graphics/object_events/pics/pokemon/wobbuffet.png differ diff --git a/graphics/object_events/pics/pokemon/wooper.png b/graphics/object_events/pics/pokemon/wooper.png new file mode 100755 index 000000000..bd0bd97fa Binary files /dev/null and b/graphics/object_events/pics/pokemon/wooper.png differ diff --git a/graphics/object_events/pics/pokemon/wurmple.png b/graphics/object_events/pics/pokemon/wurmple.png new file mode 100755 index 000000000..d8091c43d Binary files /dev/null and b/graphics/object_events/pics/pokemon/wurmple.png differ diff --git a/graphics/object_events/pics/pokemon/wynaut.png b/graphics/object_events/pics/pokemon/wynaut.png new file mode 100755 index 000000000..09dc53f2f Binary files /dev/null and b/graphics/object_events/pics/pokemon/wynaut.png differ diff --git a/graphics/object_events/pics/pokemon/xatu.png b/graphics/object_events/pics/pokemon/xatu.png new file mode 100755 index 000000000..b7797f8ef Binary files /dev/null and b/graphics/object_events/pics/pokemon/xatu.png differ diff --git a/graphics/object_events/pics/pokemon/yanma.png b/graphics/object_events/pics/pokemon/yanma.png new file mode 100755 index 000000000..ec67acf01 Binary files /dev/null and b/graphics/object_events/pics/pokemon/yanma.png differ diff --git a/graphics/object_events/pics/pokemon/zangoose.png b/graphics/object_events/pics/pokemon/zangoose.png new file mode 100755 index 000000000..61a6cdc0b Binary files /dev/null and b/graphics/object_events/pics/pokemon/zangoose.png differ diff --git a/graphics/object_events/pics/pokemon/zapdos.png b/graphics/object_events/pics/pokemon/zapdos.png new file mode 100755 index 000000000..b11b36eb6 Binary files /dev/null and b/graphics/object_events/pics/pokemon/zapdos.png differ diff --git a/graphics/object_events/pics/pokemon/zigzagoon.png b/graphics/object_events/pics/pokemon/zigzagoon.png index 2eaf2403d..2d847ca80 100755 Binary files a/graphics/object_events/pics/pokemon/zigzagoon.png and b/graphics/object_events/pics/pokemon/zigzagoon.png differ diff --git a/graphics/object_events/pics/pokemon/zigzagoon_old.png b/graphics/object_events/pics/pokemon/zigzagoon_old.png new file mode 100755 index 000000000..2eaf2403d Binary files /dev/null and b/graphics/object_events/pics/pokemon/zigzagoon_old.png differ diff --git a/graphics/object_events/pics/pokemon/zubat.png b/graphics/object_events/pics/pokemon/zubat.png new file mode 100755 index 000000000..9c349a1bd Binary files /dev/null and b/graphics/object_events/pics/pokemon/zubat.png differ diff --git a/graphics/pokemon/ampharos/normal.pal b/graphics/pokemon/ampharos/normal.pal index f7fdd3683..f26721738 100755 --- a/graphics/pokemon/ampharos/normal.pal +++ b/graphics/pokemon/ampharos/normal.pal @@ -1,13 +1,13 @@ JASC-PAL 0100 16 -205 205 172 +0 8 248 255 255 255 255 238 74 255 197 16 213 148 0 148 74 0 -255 0 255 +230 230 230 230 230 230 172 172 172 98 106 106 @@ -16,4 +16,4 @@ JASC-PAL 197 65 0 139 32 0 90 0 0 -255 0 255 +197 65 0 diff --git a/graphics/pokemon/ampharos/shiny.pal b/graphics/pokemon/ampharos/shiny.pal index f29dc710f..719c6b87f 100755 --- a/graphics/pokemon/ampharos/shiny.pal +++ b/graphics/pokemon/ampharos/shiny.pal @@ -1,13 +1,13 @@ JASC-PAL 0100 16 -205 205 172 +0 8 248 255 255 255 246 180 213 213 148 180 189 115 156 139 82 106 -255 0 255 +230 230 230 230 230 230 172 172 172 98 106 106 @@ -16,4 +16,4 @@ JASC-PAL 65 106 205 32 65 156 49 74 139 -255 0 255 +65 106 205 diff --git a/graphics/pokemon/banette/anim_front.png b/graphics/pokemon/banette/anim_front.png index 7d10d2c50..8b3c0bd91 100755 Binary files a/graphics/pokemon/banette/anim_front.png and b/graphics/pokemon/banette/anim_front.png differ diff --git a/graphics/pokemon/banette/normal.pal b/graphics/pokemon/banette/normal.pal index cebcb7757..45f7058ea 100755 --- a/graphics/pokemon/banette/normal.pal +++ b/graphics/pokemon/banette/normal.pal @@ -10,8 +10,8 @@ JASC-PAL 222 123 49 189 90 16 131 65 41 -255 255 49 -255 255 49 +96 104 128 +128 128 160 189 189 205 148 148 172 115 115 139 diff --git a/graphics/pokemon/castform/anim_front_sunny_form.png b/graphics/pokemon/castform/anim_front_sunny_form.png index 7e14f9892..399e6eeb8 100755 Binary files a/graphics/pokemon/castform/anim_front_sunny_form.png and b/graphics/pokemon/castform/anim_front_sunny_form.png differ diff --git a/graphics/pokemon/castform/normal_sunny_form.pal b/graphics/pokemon/castform/normal_sunny_form.pal index af0cfbb93..90e2a7882 100755 --- a/graphics/pokemon/castform/normal_sunny_form.pal +++ b/graphics/pokemon/castform/normal_sunny_form.pal @@ -6,7 +6,7 @@ JASC-PAL 205 90 74 238 123 74 255 156 65 -0 0 0 +255 197 136 255 246 106 230 213 106 255 156 98 diff --git a/graphics/pokemon/sentret/normal.pal b/graphics/pokemon/sentret/normal.pal index 5591d8f1b..cc98ff3f8 100755 --- a/graphics/pokemon/sentret/normal.pal +++ b/graphics/pokemon/sentret/normal.pal @@ -3,11 +3,11 @@ JASC-PAL 16 222 222 222 255 255 255 -238 222 139 -230 197 82 -205 164 65 -180 139 57 -148 106 32 +238 194 140 +220 137 86 +185 111 49 +178 103 56 +146 63 32 115 65 16 90 41 8 57 8 0 diff --git a/graphics/pokemon/togetic/anim_front.png b/graphics/pokemon/togetic/anim_front.png index e233ea940..06f92d6fe 100755 Binary files a/graphics/pokemon/togetic/anim_front.png and b/graphics/pokemon/togetic/anim_front.png differ diff --git a/graphics/pokemon/togetic/normal.pal b/graphics/pokemon/togetic/normal.pal index c07ecff88..114a69dac 100755 --- a/graphics/pokemon/togetic/normal.pal +++ b/graphics/pokemon/togetic/normal.pal @@ -6,13 +6,13 @@ JASC-PAL 205 205 205 172 172 189 131 131 148 -90 90 115 +160 176 216 16 16 16 -255 0 255 -255 0 255 -255 0 255 +96 168 224 +232 232 248 +40 48 88 139 0 0 -222 115 115 +216 80 88 180 0 0 106 131 222 0 41 197 diff --git a/graphics/weather/fog.pal b/graphics/weather/fog.pal index 6191b6692..1f40dd4e7 100755 --- a/graphics/weather/fog.pal +++ b/graphics/weather/fog.pal @@ -10,7 +10,7 @@ JASC-PAL 213 213 213 222 222 222 164 164 164 -255 0 255 +0 0 0 255 0 255 255 0 255 180 180 180 diff --git a/include/battle_main.h b/include/battle_main.h index b34d626c4..2b7a57bb4 100755 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -67,6 +67,7 @@ void SpriteCB_FaintSlideAnim(struct Sprite *sprite); void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude); void EndBounceEffect(u8 battler, u8 which); void SpriteCB_PlayerMonFromBall(struct Sprite *sprite); +void SpriteCB_PlayerMonSlideIn(struct Sprite *sprite); void SpriteCB_TrainerThrowObject(struct Sprite *sprite); void AnimSetCenterToCornerVecX(struct Sprite *sprite); void BeginBattleIntroDummy(void); diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index 5cb18ab46..37790f7e4 100755 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -11,6 +11,7 @@ #define YESNOBOX_X_Y 24, 8, 29, 13 void AI_CalcDmg(u8 battlerIdAtk, u8 battlerIdDef); +s32 GetTypeEffectiveness(struct Pokemon *mon, u8 moveType); u8 TypeCalc(u16 move, u8 battlerIdAtk, u8 battlerIdDef); u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); u8 GetBattlerTurnOrderNum(u8 battlerId); diff --git a/include/battle_tower.h b/include/battle_tower.h index a80314592..8288ffb7e 100755 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -54,7 +54,7 @@ void CallBattleTowerFunc(void); u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum); void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId); void SetEReaderTrainerGfxId(void); -u8 GetBattleFacilityTrainerGfxId(u16 trainerId); +u16 GetBattleFacilityTrainerGfxId(u16 trainerId); void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm); u8 GetFrontierTrainerFrontSpriteId(u16 trainerId); u8 GetFrontierOpponentClass(u16 trainerId); @@ -81,7 +81,7 @@ void GetBattleTowerTrainerLanguage(u8 *dst, u16 trainerId); u8 SetFacilityPtrsGetLevel(void); u8 GetFrontierEnemyMonLevel(u8 lvlMode); s32 GetHighestLevelInPlayerParty(void); -u8 FacilityClassToGraphicsId(u8 facilityClass); +u16 FacilityClassToGraphicsId(u8 facilityClass); bool32 ValidateBattleTowerRecord(u8 recordId); // unused void TrySetLinkBattleTowerEnemyPartyLevel(void); diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index af5af5340..f7c2d3628 100755 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -82,7 +82,8 @@ #define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP 0x4E #define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT 0x4F #define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT 0x50 -#define NUM_MOVEMENT_TYPES 0x51 +#define MOVEMENT_TYPE_FOLLOW_PLAYER 0x51 +#define NUM_MOVEMENT_TYPES 0x52 #define MOVEMENT_ACTION_FACE_DOWN 0x0 #define MOVEMENT_ACTION_FACE_UP 0x1 @@ -242,6 +243,8 @@ #define MOVEMENT_ACTION_FIGURE_8 0x9B #define MOVEMENT_ACTION_FLY_UP 0x9C #define MOVEMENT_ACTION_FLY_DOWN 0x9D +#define MOVEMENT_ACTION_EXIT_POKEBALL 0x9E +#define MOVEMENT_ACTION_ENTER_POKEBALL 0x9F #define MOVEMENT_ACTION_STEP_END 0xFE #define MOVEMENT_ACTION_NONE 0xFF diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index b707ba339..9f80446fa 100755 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -240,6 +240,9 @@ #define OBJ_EVENT_GFX_LINK_RS_MAY 236 #define OBJ_EVENT_GFX_LUGIA 237 #define OBJ_EVENT_GFX_HOOH 238 +#define OBJ_EVENT_GFX_ANIMATED_BALL OBJ_EVENT_GFX_ITEM_BALL // replaces ITEM_BALL +#define OBJ_EVENT_GFX_OW_MON OBJ_EVENT_GFX_REGICE +#define OBJ_EVENT_GFX_LIGHT_SPRITE OBJ_EVENT_GFX_QUINTY_PLUMP // NOTE: By default, the max value for NUM_OBJ_EVENT_GFX is 239. // @@ -274,10 +277,18 @@ #define OBJ_EVENT_GFX_VAR_E (OBJ_EVENT_GFX_VARS + 0xE) #define OBJ_EVENT_GFX_VAR_F (OBJ_EVENT_GFX_VARS + 0xF) // 255 +#define OBJ_EVENT_GFX_MON_BASE 0x200 // 512 +#define OBJ_EVENT_GFX_SPECIES_BITS 11 +#define OBJ_EVENT_GFX_SPECIES_MASK ((1 << OBJ_EVENT_GFX_SPECIES_BITS) - 1) + +#define OW_SPECIES(x) (((x)->graphicsId & OBJ_EVENT_GFX_SPECIES_MASK) - OBJ_EVENT_GFX_MON_BASE) +#define OW_FORM(x) ((x)->graphicsId >> OBJ_EVENT_GFX_SPECIES_BITS) + #define SHADOW_SIZE_S 0 #define SHADOW_SIZE_M 1 #define SHADOW_SIZE_L 2 -#define SHADOW_SIZE_XL 3 +#define SHADOW_SIZE_XL 3 // unused; repurposed to mean no shadow +#define SHADOW_SIZE_NONE 3 #define F_INANIMATE (1 << 6) #define F_DISABLE_REFLECTION_PALETTE_LOAD (1 << 7) @@ -285,6 +296,9 @@ #define TRACKS_NONE 0 #define TRACKS_FOOT 1 #define TRACKS_BIKE_TIRE 2 +#define TRACKS_SLITHER 3 +#define TRACKS_SPOT 4 +#define TRACKS_BUG 5 #define FIRST_DECORATION_SPRITE_GFX OBJ_EVENT_GFX_PICHU_DOLL @@ -294,6 +308,7 @@ // Special object event local ids #define OBJ_EVENT_ID_PLAYER 0xFF #define OBJ_EVENT_ID_CAMERA 0x7F +#define OBJ_EVENT_ID_FOLLOWER 0xFE // Object event local ids referenced in C files #define LOCALID_ROUTE111_PLAYER_FALLING 45 diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index a62040947..25edea1af 100755 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -35,6 +35,7 @@ #define FLDEFF_USE_FLY 31 #define FLDEFF_FLY_IN 32 #define FLDEFF_QUESTION_MARK_ICON 33 +#define FLDEFF_EMOTE 33 // shares a slot with FLDEFF_QUESTION_MARK_ICON #define FLDEFF_FEET_IN_FLOWING_WATER 34 #define FLDEFF_BIKE_TIRE_TRACKS 35 #define FLDEFF_SAND_DISGUISE 36 @@ -68,6 +69,9 @@ #define FLDEFF_RAYQUAZA_SPOTLIGHT 64 #define FLDEFF_DESTROY_DEOXYS_ROCK 65 #define FLDEFF_MOVE_DEOXYS_ROCK 66 +#define FLDEFF_TRACKS_SLITHER 67 +#define FLDEFF_TRACKS_SPOT 68 +#define FLDEFF_TRACKS_BUG 69 #define FLDEFFOBJ_SHADOW_S 0 #define FLDEFFOBJ_SHADOW_M 1 @@ -107,6 +111,10 @@ #define FLDEFFOBJ_SMALL_SPARKLE 35 #define FLDEFFOBJ_RAYQUAZA 36 +#define FLDEFFOBJ_TRACKS_SLITHER 37 +#define FLDEFFOBJ_TRACKS_SPOT 38 +#define FLDEFFOBJ_TRACKS_BUG 39 + #define FLDEFF_PAL_TAG_CUT_GRASS 0x1000 #define FLDEFF_PAL_TAG_SECRET_POWER_TREE 0x1003 #define FLDEFF_PAL_TAG_GENERAL_0 0x1004 @@ -119,5 +127,18 @@ #define FLDEFF_PAL_TAG_SMALL_SPARKLE 0x100F #define FLDEFF_PAL_TAG_HOF_MONITOR 0x1010 #define FLDEFF_PAL_TAG_UNKNOWN 0x1011 +#define FLDEFF_PAL_TAG_FIELD_MOVE_MON 0x8400 + +// tile tags, for field effects that may have many copies on screen at once +#define FLDEFF_TILE_TAG_SHADOW_SMALL 0x1400 +#define FLDEFF_TILE_TAG_SHADOW_MEDIUM 0x1401 +#define FLDEFF_TILE_TAG_SHADOW_LARGE 0x1402 +#define FLDEFF_TILE_TAG_SHADOW_EXTRA_LARGE 0x1403 + +// Duplicates of event_object_movement tags +#define FLDEFF_PAL_TAG_MAY 0x1110 // OBJ_EVENT_PAL_TAG_MAY +#define FLDEFF_PAL_TAG_BRENDAN 0x1100 // OBJ_EVENT_PAL_TAG_BRENDAN +#define FLDEFF_PAL_TAG_NPC_1 0x1103 // OBJ_EVENT_PAL_TAG_NPC_1 +#define FLDEFF_PAL_TAG_NPC_2 0x1104 // OBJ_EVENT_PAL_TAG_NPC_2 #endif // GUARD_FIELD_EFFECT_CONSTANTS_H diff --git a/include/constants/flags.h b/include/constants/flags.h index f81866f35..6b210ec3e 100755 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -21,7 +21,7 @@ #define FLAG_TEMP_B (TEMP_FLAGS_START + 0xB) // Unused Flag #define FLAG_TEMP_C (TEMP_FLAGS_START + 0xC) // Unused Flag #define FLAG_TEMP_D (TEMP_FLAGS_START + 0xD) // Unused Flag -#define FLAG_TEMP_E (TEMP_FLAGS_START + 0xE) // Unused Flag +#define FLAG_TEMP_HIDE_FOLLOWER (TEMP_FLAGS_START + 0xE) // When set, follower pokemon won't be spawned #define FLAG_TEMP_F (TEMP_FLAGS_START + 0xF) // Unused Flag #define FLAG_TEMP_10 (TEMP_FLAGS_START + 0x10) // Unused Flag #define FLAG_TEMP_11 (TEMP_FLAGS_START + 0x11) @@ -253,7 +253,7 @@ #define FLAG_RECEIVED_TM05 0xE7 #define FLAG_RECEIVED_TM19 0xE8 -#define FLAG_UNUSED_0x0E9 0xE9 // Unused Flag +#define FLAG_ENABLE_FOLLOWER 0xE9 // Used to enable or disable the follower #define FLAG_RECEIVED_TM44 0xEA #define FLAG_RECEIVED_TM45 0xEB @@ -1641,6 +1641,7 @@ #define FLAG_ENABLE_MULTI_CORRIDOR_DOOR (SPECIAL_FLAGS_START + 0x2) #define FLAG_SPECIAL_FLAG_UNUSED_0x4003 (SPECIAL_FLAGS_START + 0x3) // Unused Flag #define FLAG_STORING_ITEMS_IN_PYRAMID_BAG (SPECIAL_FLAGS_START + 0x4) +#define FLAG_SAFE_FOLLOWER_MOVEMENT (SPECIAL_FLAGS_START + 0x5) // When set, applymovement does not put the follower inside a pokeball // FLAG_SPECIAL_FLAG_0x4005 - 0x407F also exist and are unused #define SPECIAL_FLAGS_END (SPECIAL_FLAGS_START + 0x7F) diff --git a/include/data.h b/include/data.h index 41b34d73e..99b695d72 100755 --- a/include/data.h +++ b/include/data.h @@ -4,6 +4,17 @@ #include "constants/moves.h" #define SPECIES_SHINY_TAG 500 +#define N_FOLLOWER_HAPPY_MESSAGES 31 +#define N_FOLLOWER_NEUTRAL_MESSAGES 14 +#define N_FOLLOWER_SAD_MESSAGES 3 +#define N_FOLLOWER_UPSET_MESSAGES 3 +#define N_FOLLOWER_ANGRY_MESSAGES 5 +#define N_FOLLOWER_PENSIVE_MESSAGES 20 +#define N_FOLLOWER_LOVE_MESSAGES 10 +#define N_FOLLOWER_SURPRISE_MESSAGES 20 +#define N_FOLLOWER_CURIOUS_MESSAGES 7 +#define N_FOLLOWER_MUSIC_MESSAGES 14 +#define N_FOLLOWER_POISONED_MESSAGES 1 #define MAX_TRAINER_ITEMS 4 @@ -93,6 +104,19 @@ struct Trainer #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) +struct FollowerMsgInfo { + const u8 *text; + const u8 *script; +}; + +struct FollowerMessagePool +{ + const struct FollowerMsgInfo * messages; + const u8 * script; + u16 length; +}; + + extern const u16 gMinigameDigits_Pal[]; extern const u32 gMinigameDigits_Gfx[]; @@ -139,4 +163,17 @@ extern const u8 gTrainerClassNames[][13]; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1]; +// Follower text messages +extern const struct FollowerMsgInfo gFollowerHappyMessages[]; +extern const struct FollowerMsgInfo gFollowerNeutralMessages[]; +extern const struct FollowerMsgInfo gFollowerSadMessages[]; +extern const struct FollowerMsgInfo gFollowerUpsetMessages[]; +extern const struct FollowerMsgInfo gFollowerAngryMessages[]; +extern const struct FollowerMsgInfo gFollowerPensiveMessages[]; +extern const struct FollowerMsgInfo gFollowerLoveMessages[]; +extern const struct FollowerMsgInfo gFollowerSurpriseMessages[]; +extern const struct FollowerMsgInfo gFollowerCuriousMessages[]; +extern const struct FollowerMsgInfo gFollowerMusicMessages[]; +extern const struct FollowerMsgInfo gFollowerPoisonedMessages[]; + #endif // GUARD_DATA_H diff --git a/include/event_data.h b/include/event_data.h index 51875ec5a..04287b7ed 100755 --- a/include/event_data.h +++ b/include/event_data.h @@ -22,7 +22,7 @@ u16 *GetVarPointer(u16 id); u16 VarGet(u16 id); u16 VarGetIfExist(u16 id); bool8 VarSet(u16 id, u16 value); -u8 VarGetObjectEventGraphicsId(u8 id); +u16 VarGetObjectEventGraphicsId(u8 id); u8 *GetFlagPointer(u16 id); u8 FlagSet(u16 id); u8 FlagToggle(u16 id); diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 01269cdb5..811474ccc 100755 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -48,6 +48,13 @@ enum ReflectionTypes NUM_REFLECTION_TYPES }; +enum FollowerTransformTypes +{ + TRANSFORM_TYPE_NONE, + TRANSFORM_TYPE_PERMANENT, + TRANSFORM_TYPE_RANDOM_WILD, +}; + #define FIGURE_8_LENGTH 72 #define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN (1 << 0) @@ -106,7 +113,6 @@ u8 GetObjectEventIdByXY(s16 x, s16 y); void SetObjectEventDirection(struct ObjectEvent *objectEvent, u8 direction); u8 GetFirstInactiveObjectEventId(void); void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); -void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot); void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot); void TryMoveObjectEventToMapCoords(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); void PatchObjectPalette(u16 paletteTag, u8 paletteSlot); @@ -115,21 +121,32 @@ void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup void GetMapCoordsFromSpritePos(s16 x, s16 y, s16 *destX, s16 *destY); u8 GetFaceDirectionAnimNum(u8 direction); void SetSpritePosToOffsetMapCoords(s16 *x, s16 *y, s16 dx, s16 dy); +void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite); void ObjectEventClearHeldMovement(struct ObjectEvent *); void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); +struct Pokemon * GetFirstLiveMon(void); +void UpdateFollowingPokemon(void); +void RemoveFollowingPokemon(void); +struct ObjectEvent * GetFollowerObject(void); +u8 GetDirectionToFace(s16, s16, s16, s16); +void UpdateLightSprite(struct Sprite *); void TrySpawnObjectEvents(s16 cameraX, s16 cameraY); +u8 CreateObjectGraphicsSpriteWithTag(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u16 paletteTag); u8 CreateObjectGraphicsSprite(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority); u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup); -u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation); +u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation); u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); void SetSpritePosToMapCoords(s16 mapX, s16 mapY, s16 *destX, s16 *destY); void CameraObjectReset1(void); -void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId); +u8 LoadObjectEventPalette(u16); +u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate *, struct Sprite *); +void ObjectEventSetGraphicsId(struct ObjectEvent *, u16 graphicsId); void ObjectEventTurn(struct ObjectEvent *, u8 direction); void ObjectEventTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction); -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId); +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId); void SetObjectInvisibility(u8 localId, u8 mapNum, u8 mapGroup, bool8 invisible); void FreeAndReserveObjectSpritePalettes(void); +u8 LoadObjectEventPalette(u16 paletteTag); void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); void ResetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup); void SetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority); @@ -271,6 +288,7 @@ void MovementType_JogInPlace(struct Sprite *); void MovementType_RunInPlace(struct Sprite *); void MovementType_Invisible(struct Sprite *); void MovementType_WalkSlowlyInPlace(struct Sprite *); +void MovementType_FollowPlayer(struct Sprite *); u8 GetSlideMovementAction(u32); u8 GetJumpMovementAction(u32); u8 GetJump2MovementAction(u32); @@ -420,6 +438,21 @@ bool8 CopyablePlayerMovement_WalkFaster(struct ObjectEvent *, struct Sprite *, u bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); bool8 CopyablePlayerMovement_JumpInPlace(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); + +u8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *, struct Sprite *); +u8 MovementType_FollowPlayer_Active(struct ObjectEvent *, struct Sprite *); +u8 MovementType_FollowPlayer_Moving(struct ObjectEvent *, struct Sprite *); +void StartSpriteAnimInDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum); + +bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_FaceDirection(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_Step(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_GoSpeed1(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_GoSpeed2(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_Slide(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 fph_IM_DIFFERENT(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_GoSpeed4(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_Jump(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); bool8 CopyablePlayerMovement_Jump2(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); u8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementType_Buried_Step0(struct ObjectEvent *, struct Sprite *); @@ -432,9 +465,9 @@ u8 MovementType_Invisible_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementType_Invisible_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementType_Invisible_Step2(struct ObjectEvent *, struct Sprite *); -u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction); +u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction); void TurnVirtualObject(u8 virtualObjId, u8 direction); -void SetVirtualObjectGraphics(u8 virtualObjId, u8 graphicsId); +void SetVirtualObjectGraphics(u8 virtualObjId, u16 graphicsId); void SetVirtualObjectInvisibility(u8 virtualObjId, bool32 invisible); bool32 IsVirtualObjectInvisible(u8 virtualObjId); void SetVirtualObjectSpriteAnim(u8 virtualObjId, u8 animNum); diff --git a/include/event_scripts.h b/include/event_scripts.h index 4e0a88f82..a64b8ffc4 100755 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1,6 +1,33 @@ #ifndef GUARD_EVENT_SCRIPTS_H #define GUARD_EVENT_SCRIPTS_H +extern const u8 EventScript_Follower[]; +extern const u8 EventScript_FollowerEnd[]; +extern const u8 EventScript_FollowerGeneric[]; +extern const u8 EventScript_FollowerLovesYou[]; + +extern const u8 EventScript_FollowerIsShivering[]; +extern const u8 EventScript_FollowerNostalgia[]; +extern const u8 EventScript_FollowerHopping[]; +extern const u8 EventScript_FollowerJumpOnPlayer[]; +extern const u8 EventScript_FollowerCuddling[]; +extern const u8 EventScript_FollowerShiverCuddling[]; +extern const u8 EventScript_FollowerGetCloser[]; +extern const u8 EventScript_FollowerPokingPlayer[]; +extern const u8 EventScript_FollowerLookAround[]; +extern const u8 EventScript_FollowerLookAway[]; +extern const u8 EventScript_FollowerLookAwayBark[]; +extern const u8 EventScript_FollowerLookAwayPoke[]; +extern const u8 EventScript_FollowerPokeGround[]; +extern const u8 EventScript_FollowerStartled[]; +extern const u8 EventScript_FollowerFastHopping[]; +extern const u8 EventScript_FollowerDizzy[]; +extern const u8 EventScript_FollowerLookAroundScared[]; +extern const u8 EventScript_FollowerDance[]; +extern const u8 EventScript_FollowerFaceUp[]; +extern const u8 EventScript_FollowerFaceResult[]; +extern const u8 EnterPokeballMovement[]; + extern const u8 EventScript_TestSignpostMsg[]; extern const u8 EventScript_TryGetTrainerScript[]; extern const u8 EventScript_StartTrainerApproach[]; diff --git a/include/field_effect.h b/include/field_effect.h index 4cde29e8a..5842b0b4f 100755 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -13,6 +13,7 @@ u32 FieldEffectStart(u8); bool8 FieldEffectActiveListContains(u8 id); void FieldEffectActiveListClear(void); void ReturnToFieldFromFlyMapSelect(void); +void FieldCallback_Fly(void); u8 AddNewGameBirchObject(s16, s16, u8); void FieldEffectStop(struct Sprite *sprite, u8 id); u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); @@ -24,6 +25,7 @@ void FieldEffectScript_LoadTiles(u8 **script); void FieldEffectScript_LoadFadedPalette(u8 **script); void FieldEffectScript_LoadPalette(u8 **script); void FieldEffectScript_CallNative(u8 **script, u32 *val); +void FieldEffectFreeGraphicsResources(struct Sprite *sprite); void FieldEffectFreeTilesIfUnused(u16 tileStart); void FieldEffectFreePaletteIfUnused(u8 paletteNum); bool8 FieldEffectCmd_loadtiles(u8 **script, u32 *val); diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 2ae5d79f7..71920d22f 100755 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -20,8 +20,9 @@ void SetSurfBlob_PlayerOffset(u8 spriteId, bool8 hasOffset, s16 offset); bool8 UpdateRevealDisguise(struct ObjectEvent *); void StartRevealDisguise(struct ObjectEvent *); void StartAshFieldEffect(s16, s16, u16, s16); -void SetUpReflection(struct ObjectEvent *, struct Sprite *, u8); -u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent *); +void SetUpReflection(struct ObjectEvent*, struct Sprite*, u8); +void SetUpShadow(struct ObjectEvent*, struct Sprite*); +u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent*); u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); void UpdateRayquazaSpotlightEffect(struct Sprite *); void UpdateShadowFieldEffect(struct Sprite *); diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 39fc886af..dae0f6c0d 100755 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -3,8 +3,8 @@ void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys); void ClearPlayerAvatarInfo(void); -void SetPlayerAvatarExtraStateTransition(u8, u8); -u8 GetPlayerAvatarGenderByGraphicsId(u8); +void SetPlayerAvatarExtraStateTransition(u16, u8); +u16 GetPlayerAvatarGenderByGraphicsId(u16); bool8 TestPlayerAvatarFlags(u8); u8 GetPlayerAvatarSpriteId(void); void PlayerGetDestCoords(s16 *, s16 *); @@ -38,11 +38,11 @@ void PlayerFreeze(void); void StopPlayerAvatar(void); void SetSpinStartFacingDir(u8); void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr); -u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender); +u16 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender); void SetPlayerAvatarFieldMove(void); -u8 GetPlayerAvatarGraphicsIdByCurrentState(void); +u16 GetPlayerAvatarGraphicsIdByCurrentState(void); void SetPlayerAvatarStateMask(u8 flags); -u8 GetPlayerAvatarGraphicsIdByStateId(u8 state); +u16 GetPlayerAvatarGraphicsIdByStateId(u8 state); u8 GetJumpSpecialMovementAction(u32); bool8 PartyHasMonWithSurf(void); bool8 IsPlayerFacingSurfableFishableWater(void); @@ -50,8 +50,8 @@ bool8 IsPlayerSurfingNorth(void); void SetPlayerAvatarWatering(u8 direction); u8 GetPlayerAvatarFlags(void); void UpdatePlayerAvatarTransitionState(void); -u8 GetFRLGAvatarGraphicsIdByGender(u8); -u8 GetRSAvatarGraphicsIdByGender(u8); +u16 GetFRLGAvatarGraphicsIdByGender(u8); +u16 GetRSAvatarGraphicsIdByGender(u8); void PlayerWheelieInPlace(u8 direction); void PlayerWheelieMove(u8 direction); void PlayerPopWheelieWhileMoving(u8 direction); diff --git a/include/field_weather.h b/include/field_weather.h index 8ce0cc9e5..fbd90f240 100755 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -47,7 +47,8 @@ struct Weather s8 targetColorMapIndex; u8 colorMapStepDelay; u8 colorMapStepCounter; - u16 fadeDestColor; + u16 fadeDestColor:15; + u16 noShadows:1; // Certain weathers require blend coeffs that do not work nice with shadows u8 palProcessingState; u8 fadeScreenCounter; bool8 readyForInit; @@ -152,8 +153,9 @@ void ApplyWeatherColorMapIfIdle(s8 colorMapIndex); void ApplyWeatherColorMapIfIdle_Gradual(u8 colorMapIndex, u8 targetColorMapIndex, u8 colorMapStepDelay); void FadeScreen(u8 mode, s8 delay); bool8 IsWeatherNotFadingIn(void); -void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex); +void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex, bool8 allowFog); void ApplyWeatherColorMapToPal(u8 paletteIndex); +void ApplyWeatherColorMapToPals(u8 startPalIndex, u8 numPalettes); void LoadCustomWeatherSpritePalette(const u16 *palette); void ResetDroughtWeatherPaletteLoading(void); bool8 LoadDroughtWeatherPalettes(void); @@ -193,6 +195,7 @@ void Thunderstorm_Main(void); void Thunderstorm_InitAll(void); bool8 Thunderstorm_Finish(void); void FogHorizontal_InitVars(void); +u8 UpdateShadowColor(u16 color); void FogHorizontal_Main(void); void FogHorizontal_InitAll(void); bool8 FogHorizontal_Finish(void); diff --git a/include/fieldmap.h b/include/fieldmap.h index 47072bd1b..836cb6230 100755 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -44,7 +44,7 @@ void InitTrainerHillMap(void); void InitBattlePyramidMap(bool8 setPlayerPosition); void CopyMapTilesetsToVram(struct MapLayout const *mapLayout); void LoadMapTilesetPalettes(struct MapLayout const *mapLayout); -void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout); +void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout, bool8 skipFaded); void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout); void CopyPrimaryTilesetToVram(const struct MapLayout *); void CopySecondaryTilesetToVram(const struct MapLayout *); diff --git a/include/fldeff.h b/include/fldeff.h index 0ad0e3d60..836a795a0 100755 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -45,7 +45,7 @@ bool8 SetUpFieldMove_Dig(void); bool8 FldEff_UseDig(void); // rock smash -bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); +bool8 CheckObjectGraphicsInFrontOfPlayer(u16 graphicsId); u8 CreateFieldMoveTask(void); bool8 SetUpFieldMove_RockSmash(void); bool8 FldEff_UseRockSmash(void); diff --git a/include/follower_helper.h b/include/follower_helper.h new file mode 100755 index 000000000..a03e08b5d --- /dev/null +++ b/include/follower_helper.h @@ -0,0 +1,131 @@ +#ifndef GUARD_FOLLOWER_HELPER_H +#define GUARD_FOLLOWER_HELPER_H + +enum { + FOLLOWER_EMOTION_HAPPY = 0, + FOLLOWER_EMOTION_NEUTRAL, // Also called "No emotion" + FOLLOWER_EMOTION_SAD, + FOLLOWER_EMOTION_UPSET, + FOLLOWER_EMOTION_ANGRY, + FOLLOWER_EMOTION_PENSIVE, + FOLLOWER_EMOTION_LOVE, + FOLLOWER_EMOTION_SURPRISE, + FOLLOWER_EMOTION_CURIOUS, + FOLLOWER_EMOTION_MUSIC, + FOLLOWER_EMOTION_POISONED, + FOLLOWER_EMOTION_LENGTH, +}; + +// This struct is optimized for size +// Each "section" can be used to combine multiple conditions, +// i.e, species and map +// Just set the flags accordingly and use the right union member +struct __attribute__((packed)) FollowerMsgInfoExtended { + const u8 *text; + const u8 *script; + + union __attribute__((packed)) { + u16 species:10; + struct __attribute__((packed)) { + u16 type1:5; + u16 type2:5; // if >= NUMBER_OF_MON_TYPES, inverts checking for type1 + } types; + u16 status:10; + } st; + u16 stFlags:2; // 0 = no matching, 1 = species matching, 2 = type matching, 3 = status + u16 emotion:4; // emotion for this message + + union __attribute__((packed)) { + struct __attribute__((packed)) { + u16 mapSec:8; + } mapSec; + struct __attribute__((packed)) { + u16 mapNum:8; + u16 mapGroup:6; + } map; + struct __attribute__((packed)) { + u16 behavior1:8; + u16 behavior2:6; // not full; only goes up to 0x3F + } mb; + } mm; + u16 mmFlags:2; // 1 = map sec, 2 = map, 3 = metatile behavior + + union __attribute__((packed)) { + struct __attribute__((packed)) { + u16 weather1:5; + u16 weather2:5; + } weather; + u16 song:10; + u16 timeOfDay:10; + } wt; + u16 wtFlags:2; // 1 = weather matching, 2 = song, 3 = time + u16 weight:3; + // if set, `text` is treated as an array of up to 4 texts instead + u16 textSpread:1; + + union __attribute__((packed)) { + struct __attribute__((packed)) { + u16 behavior:8; + u16 distance:6; + } mb; + } near; + u16 nearFlags:2; // 1 = mb within '+'-shaped distance away +}; + +enum { + ST_FLAGS_SPECIES = 1, + ST_FLAGS_TYPE, + ST_FLAGS_STATUS, +}; + +enum { + MM_FLAGS_MAPSEC = 1, + MM_FLAGS_MAP, + MM_FLAGS_MB, // (m)etatile (b)ehavior +}; + +enum { + WT_FLAGS_WEATHER = 1, + WT_FLAGS_MUSIC, + WT_FLAGS_TIME, +}; + +#define NEAR_FLAGS_MB 1 + +enum { + COND_MSG_CELEBI, + COND_MSG_FIRE, + COND_MSG_EVER_GRANDE, + COND_MSG_ROUTE_112, + COND_MSG_DAY_CARE, + COND_MSG_MART, + COND_MSG_VICTORY_ROAD, + COND_MSG_BIKE_SHOP, + COND_MSG_MACHINES, + COND_MSG_SAILING, + COND_MSG_PUDDLE, + COND_MSG_SAND, + COND_MSG_GRASS, + COND_MSG_FOOTPRINTS, + COND_MSG_ELEVATOR, + COND_MSG_ICE_ROOM, + COND_MSG_ROUTE_117, + COND_MSG_DRAGON_GROWL, + COND_MSG_FEAR, + COND_MSG_FIRE_RAIN, + COND_MSG_FROZEN, + COND_MSG_SEASIDE, + COND_MSG_WATERFALL, + COND_MSG_RAIN, + COND_MSG_REFLECTION, + COND_MSG_LEAVES, + COND_MSG_ICE, + COND_MSG_BURN, + COND_MSG_DAY, + COND_MSG_NIGHT, + COND_MSG_COUNT, +}; + +extern const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT]; + +#endif //GUARD_FOLLOWER_HELPER_H diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 28eb33032..d3ab10bbd 100755 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -37,8 +37,11 @@ typedef void (*TilesetCB)(void); struct Tileset { - /*0x00*/ bool8 isCompressed; + /*0x00*/ u8 isCompressed:1; + /*0x00*/ u8 swapPalettes:7; // bitmask determining whether palette has an alternate, night-time palette /*0x01*/ bool8 isSecondary; + /*0x02*/ u8 lightPalettes; // Bitmask determining whether a palette should be time-blended as a light + /*0x03*/ u8 customLightColor; // Bitmask determining which light palettes have custom light colors (color 15) /*0x04*/ const u32 *tiles; /*0x08*/ const u16 (*palettes)[16]; /*0x0C*/ const u16 *metatiles; @@ -63,25 +66,24 @@ struct BackupMapLayout u16 *map; }; -struct ObjectEventTemplate +struct __attribute__((packed)) ObjectEventTemplate { /*0x00*/ u8 localId; - /*0x01*/ u8 graphicsId; - /*0x02*/ u8 inConnection; // Leftover from FRLG - /*0x03*/ //u8 padding1; + /*0x01*/ u16 graphicsId; + /*0x03*/ u8 inConnection; // Leftover from FRLG /*0x04*/ s16 x; /*0x06*/ s16 y; /*0x08*/ u8 elevation; /*0x09*/ u8 movementType; /*0x0A*/ u16 movementRangeX:4; u16 movementRangeY:4; - //u16 padding2:8; + u16 unused:8; /*0x0C*/ u16 trainerType; /*0x0E*/ u16 trainerRange_berryTreeId; /*0x10*/ const u8 *script; /*0x14*/ u16 flagId; - /*0x16*/ //u8 padding3[2]; -}; + /*0x16*/ u16 filler; +}; // size = 0x18 struct WarpEvent { @@ -189,15 +191,14 @@ struct ObjectEvent u32 inShallowFlowingWater:1; u32 inSandPile:1; u32 inHotSprings:1; - u32 hasShadow:1; + u32 noShadow:1; u32 spriteAnimPausedBackup:1; /*0x03*/ u32 spriteAffineAnimPausedBackup:1; u32 disableJumpLandingGroundEffect:1; u32 fixedPriority:1; u32 hideReflection:1; - //u32 padding:4; - /*0x04*/ u8 spriteId; - /*0x05*/ u8 graphicsId; + u32 shiny:1; // OW mon shininess + /*0x04*/ u16 graphicsId; // 11 bits for species; high 5 bits for form /*0x06*/ u8 movementType; /*0x07*/ u8 trainerType; /*0x08*/ u8 localId; @@ -221,7 +222,7 @@ struct ObjectEvent /*0x20*/ u8 previousMovementDirection; /*0x21*/ u8 directionSequenceIndex; /*0x22*/ u8 playerCopyableMovement; // COPY_MOVE_* - /*0x23*/ //u8 padding2; + /*0x23*/ u8 spriteId; /*size = 0x24*/ }; diff --git a/include/global.h b/include/global.h index ed383ead5..ebda1dd0d 100755 --- a/include/global.h +++ b/include/global.h @@ -532,6 +532,9 @@ struct SaveBlock2 extern struct SaveBlock2 *gSaveBlock2Ptr; +extern u8 UpdateSpritePaletteWithTime(u8); +extern bool8 IsAccurateGBA(void); + struct SecretBaseParty { u32 personality[PARTY_SIZE]; @@ -921,7 +924,7 @@ struct MysteryGiftSave struct WonderCardMetadata cardMetadata; u16 questionnaireWords[NUM_QUESTIONNAIRE_WORDS]; struct WonderNewsMetadata newsMetadata; - u32 trainerIds[2][5]; // Saved ids for 10 trainers, 5 each for battles and trades + u32 trainerIds[2][5]; // Saved ids for 10 trainers, 5 each for battles and trades }; // 0x36C 0x3598 // For external event data storage. The majority of these may have never been used. diff --git a/include/overworld.h b/include/overworld.h index 28ceaba3a..67852dc35 100755 --- a/include/overworld.h +++ b/include/overworld.h @@ -25,6 +25,10 @@ #define MOVEMENT_MODE_SCRIPTED 2 #define SKIP_OBJECT_EVENT_LOAD 1 +#define TIME_OF_DAY_NIGHT 0 +#define TIME_OF_DAY_TWILIGHT 1 +#define TIME_OF_DAY_DAY 2 +#define TIME_OF_DAY_MAX TIME_OF_DAY_DAY struct InitialPlayerAvatarState { @@ -40,6 +44,15 @@ struct LinkPlayerObjectEvent u8 movementMode; }; +struct __attribute__((packed)) TimeBlendSettings { + u16 weight:9; + u16 time1:3; + u16 time0:3; + u16 unused:1; + u16 altWeight; +}; + +// Exported RAM declarations extern struct WarpData gLastUsedWarp; extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4]; @@ -51,6 +64,10 @@ extern void (*gFieldCallback)(void); extern bool8 (*gFieldCallback2)(void); extern u8 gLocalLinkPlayerId; extern u8 gFieldLinkPlayerCount; +extern u8 gTimeOfDay; +extern u16 gTimeUpdateCounter; + +extern struct TimeBlendSettings currentTimeBlend; extern const struct UCoords32 gDirectionToVectors[]; @@ -128,6 +145,10 @@ void CleanupOverworldWindowsAndTilemaps(void); bool32 IsOverworldLinkActive(void); void CB1_Overworld(void); void CB2_OverworldBasic(void); +u8 UpdateTimeOfDay(void); +bool8 MapHasNaturalLight(u8 mapType); +void UpdateAltBgPalettes(u16 palettes); +void UpdatePalettesWithTime(u32); void CB2_Overworld(void); void SetMainCallback1(void (*cb)(void)); void SetUnusedCallback(void *func); diff --git a/include/palette.h b/include/palette.h index 29723ef6c..1950d02ad 100755 --- a/include/palette.h +++ b/include/palette.h @@ -33,9 +33,19 @@ enum FAST_FADE_OUT_TO_BLACK, }; +struct BlendSettings { + u32 blendColor:24; + u32 isTint:1; + u32 coeff:5; +}; + struct PaletteFadeControl { - u32 multipurpose1; + u32 multipurpose1; // This field needs to exist or errors will occur + // These three are only used for TOD blending + struct BlendSettings *bld0; + struct BlendSettings *bld1; + u16 weight:9; // [0, 256], so must be 9 bits u8 delayCounter:6; u16 y:5; // blend coefficient u16 targetY:5; // target blend coefficient @@ -53,6 +63,8 @@ struct PaletteFadeControl u8 deltaY:4; // rate of change of blend coefficient }; +extern const struct BlendSettings gTimeOfDayBlend[]; + extern struct PaletteFadeControl gPaletteFade; extern u32 gPlttBufferTransferPending; extern u8 gPaletteDecompressionBuffer[]; @@ -61,11 +73,13 @@ extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE]; void LoadCompressedPalette(const u32 *src, u16 offset, u16 size); void LoadPalette(const void *src, u16 offset, u16 size); +void LoadPaletteFast(const void *src, u16 offset, u16 size); void FillPalette(u16 value, u16 offset, u16 size); void TransferPlttBuffer(void); u8 UpdatePaletteFade(void); void ResetPaletteFade(void); bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, u16 blendColor); +bool8 BeginTimeOfDayPaletteFade(u32, s8, u8, u8, struct BlendSettings *, struct BlendSettings *, u16, u16); void PaletteStruct_ResetById(u16 id); void ResetPaletteFadeControl(void); void InvertPlttBuffer(u32 selectedPalettes); @@ -74,8 +88,13 @@ void UnfadePlttBuffer(u32 selectedPalettes); void BeginFastPaletteFade(u8 submode); void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 shouldResetBlendRegisters); void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); +void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 color); void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); +void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor); +void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor); +void TimeMixPalettes(u32, u16 *, u16 *, struct BlendSettings *, struct BlendSettings *, u16); +void AvgPaletteWeighted(u16 *src0, u16 *src1, u16 *dst, u16 weight0); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); void TintPalette_SepiaTone(u16 *palette, u16 count); diff --git a/include/party_menu.h b/include/party_menu.h index 95f41db2c..165b9ccaf 100755 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -44,6 +44,7 @@ u8 GetAilmentFromStatus(u32 status); u8 GetMonAilment(struct Pokemon *mon); void DisplayPartyMenuStdMessage(u32 stringId); bool8 FieldCallback_PrepareFadeInFromMenu(void); +bool8 FieldCallback_PrepareFadeInForTeleport(void); void CB2_ReturnToPartyMenuFromFlyMap(void); void LoadHeldItemIcons(void); void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty); diff --git a/include/pokeball.h b/include/pokeball.h index 1149791b8..3dbd80527 100755 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -32,6 +32,7 @@ extern const struct SpriteTemplate gBallSpriteTemplates[]; #define POKEBALL_PLAYER_SENDOUT 0xFF #define POKEBALL_OPPONENT_SENDOUT 0xFE +#define POKEBALL_PLAYER_SLIDEIN 0xFD u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow); void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 delay, u32 fadePalettes, u16 species); diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index 520268c47..3124203cd 100755 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -11,6 +11,7 @@ bool16 ResetAllPicSprites(void); u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, 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); u16 FreeAndDestroyTrainerPicSprite(u16 spriteId); u16 CreateTrainerCardTrainerPicSprite(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId); diff --git a/ld_script.txt b/ld_script.txt index b60a05a99..589d10946 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -6,9 +6,6 @@ gMaxLines = 0; /* Modify the following load addresses as needed to make more room. Alternately, delete both the declarations below and their references further down to get rid of the gaps. */ -__anim_mon_load_address = 0x8b00000; -__gfx_load_address = 0x8c00000; - SECTIONS { . = 0x2000000; @@ -126,6 +123,7 @@ SECTIONS { src/field_door.o(.text); src/field_player_avatar.o(.text); src/event_object_movement.o(.text); + src/follower_helper.o(.text); src/field_message_box.o(.text); src/event_object_lock.o(.text); src/text_window.o(.text); @@ -514,6 +512,7 @@ SECTIONS { src/field_door.o(.rodata); src/field_player_avatar.o(.rodata); src/event_object_movement.o(.rodata); + src/follower_helper.o(.rodata); src/text_window.o(.rodata); src/scrcmd.o(.rodata); src/field_control_avatar.o(.rodata); @@ -1310,13 +1309,13 @@ SECTIONS { data/multiboot_pokemon_colosseum.o(.rodata); } =0 - anim_mon_front_pic_data __anim_mon_load_address : + anim_mon_front_pic_data : ALIGN(4) { src/anim_mon_front_pics.o(.rodata); } =0 - gfx_data __gfx_load_address : + gfx_data : ALIGN(4) { src/graphics.o(.rodata); diff --git a/palette.py b/palette.py new file mode 100755 index 000000000..5fbcb48d4 --- /dev/null +++ b/palette.py @@ -0,0 +1,26 @@ +#!/usr/bin/python3 +""" Extract a GBA-compatible palette from a PNG. """ +import sys +import os.path +import png + +PAL_PRELUDE = 'JASC-PAL\n0100\n' + + +def extract_palette(path): + r = png.Reader(path) + r.read() + root, _ = os.path.splitext(path) + out_path = root + '.pal' + with open(out_path, 'w', newline='\r\n') as f: + f.write(PAL_PRELUDE) + colors = r.palette() + if len(colors) < 16: + colors += [(0, 0, 0) for _ in range(16-len(colors))] + f.write(f'{len(colors)}\n') + for r, g, b in colors: + f.write(f'{r} {g} {b}\n') + + +if __name__ == '__main__': + extract_palette(*sys.argv[1:]) diff --git a/remote_build.sh b/remote_build.sh new file mode 100755 index 000000000..03e3e54b1 --- /dev/null +++ b/remote_build.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Git REmote Make +# Push to SSH machine; build and scp build products back + +set -e +git_branch=$(git branch --show-current) +# See https://unix.stackexchange.com/a/13472 +remote_host=$(git remote get-url build | sed -nr -e "s/ssh:\/\/(\w+@?\w*):.*/\1/p") # Extract remote host +remote_path=$(git remote get-url build | sed -nr -e "s/ssh:\/\/\w+@?\w*://p") # Extract remote path +make_cmd=$(git config --local remake.make) +make_product=$(git config --local remake.src) +make_dest=$(git config --local remake.dest) +set -x +git push build --force-with-lease +ssh $remote_host "cd $remote_path && git reset --hard && git checkout $git_branch && $make_cmd" +scp "$remote_host:$remote_path/$make_product" $make_dest diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index c4e283922..df0ed632c 100755 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -1,5 +1,6 @@ OBJEVENTGFXDIR := graphics/object_events/pics FLDEFFGFXDIR := graphics/field_effects/pics +MISCGFXDIR := graphics/misc $(OBJEVENTGFXDIR)/people/brendan/walking.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 @@ -405,70 +406,71 @@ $(OBJEVENTGFXDIR)/people/youngster.4bpp: %.4bpp: %.png -$(OBJEVENTGFXDIR)/pokemon/azumarill.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/azumarill_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/azurill.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/azurill_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/deoxys.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/deoxys_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/dusclops.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/dusclops_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/enemy_zigzagoon.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/groudon.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/groudon_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/ho_oh.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/ho_oh_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/kecleon.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/kecleon_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/kirlia.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/kirlia_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/kyogre.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/kyogre_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 $(OBJEVENTGFXDIR)/pokemon/latias_latios.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/lugia.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/lugia_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/mew.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/mew_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/pikachu.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/pikachu_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/poochyena.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/poochyena_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/rayquaza.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/rayquaza_cutscene.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 8 -mheight 8 -$(OBJEVENTGFXDIR)/pokemon/skitty.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/skitty_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/sudowoodo.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/sudowoodo_tree.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/vigoroth.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/vigoroth_mover.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/wingull.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/wingull_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/zigzagoon.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon/zigzagoon_old.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 - +$(OBJEVENTGFXDIR)/misc/animated_ball.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 $(OBJEVENTGFXDIR)/berry_trees/aguav.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 @@ -597,6 +599,16 @@ $(FLDEFFGFXDIR)/jump_tall_grass.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/bike_tire_tracks.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 + +$(FLDEFFGFXDIR)/slither_tracks.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + +$(FLDEFFGFXDIR)/bug_tracks.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + +$(FLDEFFGFXDIR)/spot_tracks.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + $(FLDEFFGFXDIR)/bubbles.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 @@ -675,5 +687,1367 @@ $(FLDEFFGFXDIR)/secret_power_tree.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/record_mix_lights.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 1 +$(OBJEVENTGFXDIR)/pokemon/bulbasaur.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ivysaur.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/venusaur.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/charmander.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/charmeleon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/charizard.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/squirtle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/wartortle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/blastoise.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/caterpie.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/metapod.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/butterfree.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/weedle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/kakuna.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/beedrill.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/pidgey.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/pidgeotto.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/pidgeot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/rattata.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/raticate.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/spearow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/fearow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ekans.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/arbok.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/pikachu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/raichu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sandshrew.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sandslash.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/nidoran_f.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/nidorina.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/nidoqueen.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/nidoran_m.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/nidorino.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/nidoking.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/clefairy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/clefable.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/vulpix.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ninetales.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/jigglypuff.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/wigglytuff.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/zubat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/golbat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/oddish.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/gloom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/vileplume.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/paras.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/parasect.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/venonat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/venomoth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/diglett.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/dugtrio.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/meowth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/persian.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/psyduck.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/golduck.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/mankey.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/primeape.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/growlithe.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/arcanine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/poliwag.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/poliwhirl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/poliwrath.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/abra.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/kadabra.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/alakazam.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/machop.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/machoke.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/machamp.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/bellsprout.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/weepinbell.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/victreebel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/tentacool.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/tentacruel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/geodude.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/graveler.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/golem.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ponyta.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/rapidash.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/slowpoke.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/slowbro.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/magnemite.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/magneton.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/farfetchd.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/doduo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/dodrio.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/seel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/dewgong.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/grimer.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/muk.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/shellder.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/cloyster.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/gastly.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/haunter.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/gengar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/onix.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/drowzee.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/hypno.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/krabby.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/kingler.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/voltorb.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/electrode.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/exeggcute.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/exeggutor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/cubone.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/marowak.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/hitmonlee.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/hitmonchan.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/lickitung.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/koffing.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/weezing.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/rhyhorn.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/rhydon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/chansey.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/tangela.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/kangaskhan.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/horsea.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/seadra.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/goldeen.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/seaking.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/staryu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/starmie.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/mr_mime.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/scyther.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/jynx.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/electabuzz.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/magmar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/pinsir.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/tauros.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/magikarp.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/gyarados.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/lapras.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ditto.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/eevee.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/vaporeon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/jolteon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/flareon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/porygon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/omanyte.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/omastar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/kabuto.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/kabutops.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/aerodactyl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/snorlax.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/articuno.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/zapdos.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/moltres.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/dratini.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/dragonair.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/dragonite.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/mewtwo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/mew.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/chikorita.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/bayleef.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/meganium.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/cyndaquil.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/quilava.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/typhlosion.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/totodile.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/croconaw.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/feraligatr.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sentret.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/furret.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/hoothoot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/noctowl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ledyba.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ledian.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/spinarak.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ariados.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/crobat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/chinchou.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/lanturn.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/pichu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/cleffa.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/igglybuff.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/togepi.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/togetic.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/natu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/xatu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/mareep.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/flaaffy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ampharos.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/bellossom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/marill.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/azumarill.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sudowoodo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/politoed.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/hoppip.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/skiploom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/jumpluff.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/aipom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sunkern.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sunflora.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/yanma.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/wooper.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/quagsire.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/espeon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/umbreon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/murkrow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/slowking.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/misdreavus.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_a.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_b.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_c.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_d.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_e.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_f.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_g.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_h.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_i.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_j.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_k.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_l.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_m.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_n.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_o.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_p.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_q.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_r.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_s.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_t.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_u.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_v.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_w.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_x.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_y.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_z.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_exclamation.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/unown_question.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/wobbuffet.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/girafarig.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/pineco.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/forretress.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/dunsparce.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/gligar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/steelix.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/snubbull.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/granbull.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/qwilfish.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/scizor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/shuckle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/heracross.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sneasel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/teddiursa.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ursaring.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/slugma.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/magcargo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/swinub.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/piloswine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/corsola.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/remoraid.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/octillery.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/delibird.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/mantine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/skarmory.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/houndour.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/houndoom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/kingdra.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/phanpy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/donphan.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/porygon2.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/stantler.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/smeargle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/tyrogue.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/hitmontop.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/smoochum.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/elekid.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/magby.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/miltank.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/blissey.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/raikou.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/entei.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/suicune.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/larvitar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/pupitar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/tyranitar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/lugia.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/ho_oh.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/celebi.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/treecko.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/grovyle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sceptile.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/torchic.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/combusken.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/blaziken.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/mudkip.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/marshtomp.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/swampert.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/poochyena.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/mightyena.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/zigzagoon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/linoone.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/wurmple.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/silcoon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/beautifly.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/cascoon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/dustox.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/lotad.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/lombre.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ludicolo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/seedot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/nuzleaf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/shiftry.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/taillow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/swellow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/wingull.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/pelipper.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ralts.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/kirlia.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/gardevoir.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/surskit.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/masquerain.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/shroomish.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/breloom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/slakoth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/vigoroth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/slaking.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/nincada.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/ninjask.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/shedinja.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/whismur.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/loudred.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/exploud.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/makuhita.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/hariyama.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/azurill.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/nosepass.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/skitty.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/delcatty.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sableye.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/mawile.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/aron.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/lairon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/aggron.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/meditite.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/medicham.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/electrike.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/manectric.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/plusle.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/minun.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/volbeat.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/illumise.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/roselia.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/gulpin.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/swalot.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/carvanha.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sharpedo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/wailmer.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/wailord.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/numel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/camerupt.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/torkoal.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/spoink.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/grumpig.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/spinda.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/trapinch.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/vibrava.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/flygon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/cacnea.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/cacturne.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/swablu.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/altaria.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/zangoose.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/seviper.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/lunatone.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/solrock.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/barboach.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/whiscash.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/corphish.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/crawdaunt.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/baltoy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/claydol.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/lileep.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/cradily.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/anorith.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/armaldo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/feebas.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/milotic.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/castform.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/castform_sunny.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/castform_rainy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/castform_snowy.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/kecleon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/shuppet.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/banette.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/duskull.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/dusclops.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/tropius.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/chimecho.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/absol.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/wynaut.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/snorunt.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/glalie.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/spheal.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/sealeo.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/walrein.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/clamperl.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/huntail.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/gorebyss.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/relicanth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/luvdisc.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/bagon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/shelgon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/salamence.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/beldum.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/metang.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/metagross.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/regirock.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/regice.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/registeel.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/latias.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/latios.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/kyogre.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/groudon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/rayquaza.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/jirachi.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/deoxys.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/ambipom.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/arceus.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/budew.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/bonsly.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/chingling.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/deoxys_attack.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/deoxys_defense.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/deoxys_speed.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/dusknoir.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/electivire.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/froslass.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gallade.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/glaceon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/gliscor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/happiny.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/honchkrow.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/leafeon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/lickilicky.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magmortar.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/magnezone.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mamoswine.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mantyke.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mismagius.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/mimejr.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/munchlax.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/probopass.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/porygonz.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/regigigas.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(OBJEVENTGFXDIR)/pokemon/followers/regidrago.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/regieleki.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/roserade.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/rhyperior.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/sylveon.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/tangrowth.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/togekiss.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/weavile.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/pokemon/followers/yanmega.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(MISCGFXDIR)/emotes.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + graphics/door_anims/battle_tower_multi_corridor.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 \ No newline at end of file diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index a9edd0750..768e07ea2 100755 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -10,6 +10,7 @@ #include "battle_tv.h" #include "bg.h" #include "data.h" +#include "event_object_movement.h" #include "item.h" #include "item_menu.h" #include "link.h" @@ -116,7 +117,7 @@ static void Task_UpdateLvlInHealthbox(u8); static void PrintLinkStandbyMsg(void); static u32 CopyPlayerMonData(u8, u8 *); static void SetPlayerMonData(u8); -static void StartSendOutAnim(u8, bool8); +static void StartSendOutAnim(u8, bool8, bool8); static void DoSwitchOutAnimation(void); static void PlayerDoMoveAnimation(void); static void Task_StartSendOutAnim(u8); @@ -2208,11 +2209,29 @@ static void PlayerHandleSwitchInAnim(void) BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); gActionSelectionCursor[gActiveBattler] = 0; gMoveSelectionCursor[gActiveBattler] = 0; - StartSendOutAnim(gActiveBattler, gBattleBufferA[gActiveBattler][2]); + #ifdef BATTLE_ENGINE + StartSendOutAnim(gActiveBattler, gBattleResources->bufferA[gActiveBattler][2], FALSE); + #else + StartSendOutAnim(gActiveBattler, gBattleBufferA[gActiveBattler][2], FALSE); + #endif gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnimShowHealthbox; } -static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit) +// In normal singles, if follower pokemon is out, have it slide in instead of being thrown +static bool8 ShouldDoSlideInAnim(void) { + struct ObjectEvent *followerObj = GetFollowerObject(); + if (!followerObj || followerObj->invisible) + return FALSE; + if (gBattleTypeFlags & ( + BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_FIRST_BATTLE | + BATTLE_TYPE_SAFARI | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TWO_OPPONENTS | + BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL) + ) + return FALSE; + return TRUE; +} + +static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit, bool8 doSlideIn) { u16 species; @@ -2240,7 +2259,7 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit) gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE; gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy; - gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT); + gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, doSlideIn ? POKEBALL_PLAYER_SLIDEIN : POKEBALL_PLAYER_SENDOUT); } static void PlayerHandleReturnMonToBall(void) @@ -2976,7 +2995,7 @@ static void PlayerHandleIntroTrainerBallThrow(void) gSprites[gBattlerSpriteIds[gActiveBattler]].sBattlerId = gActiveBattler; StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite); - StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], ShouldDoSlideInAnim() ? 2 : 1); paletteNum = AllocSpritePalette(0xD6F8); LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); @@ -3023,23 +3042,23 @@ static void Task_StartSendOutAnim(u8 taskId) /*if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI)) { gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; - StartSendOutAnim(gActiveBattler, FALSE); + StartSendOutAnim(gActiveBattler, FALSE, ShouldDoSlideInAnim()); } else*/ if (TwoIntroMons(gActiveBattler) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; - StartSendOutAnim(gActiveBattler, FALSE); + StartSendOutAnim(gActiveBattler, FALSE, ShouldDoSlideInAnim()); gActiveBattler ^= BIT_FLANK; gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); - StartSendOutAnim(gActiveBattler, FALSE); + StartSendOutAnim(gActiveBattler, FALSE, ShouldDoSlideInAnim()); gActiveBattler ^= BIT_FLANK; } else { gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; - StartSendOutAnim(gActiveBattler, FALSE); + StartSendOutAnim(gActiveBattler, FALSE, ShouldDoSlideInAnim()); } gBattlerControllerFuncs[gActiveBattler] = Intro_TryShinyAnimShowHealthbox; gActiveBattler = savedActiveBattler; diff --git a/src/battle_main.c b/src/battle_main.c index d48cbf547..880bd151c 100755 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1981,6 +1981,10 @@ void BattleMainCB2(void) RunTextPrinters(); UpdatePaletteFade(); RunTasks(); + //DNS in battles, todo + //UpdateAltBgPalettes(PALETTES_ALL); + //CpuFastCopy(gPlttBufferUnfaded, gPlttBufferFaded, PLTT_BUFFER_SIZE * 2); + //UpdatePalettesWithTime(PALETTES_ALL); if (JOY_HELD(B_BUTTON) && gBattleTypeFlags & BATTLE_TYPE_RECORDED && RecordedBattle_CanStopPlayback()) { @@ -3255,6 +3259,29 @@ void SpriteCB_PlayerMonFromBall(struct Sprite *sprite) BattleAnimateBackSprite(sprite, sprite->sSpeciesId); } +void SpriteCB_PlayerMonSlideIn(struct Sprite *sprite) { + if (sprite->data[3] == 0) { + PlaySE(SE_BALL_TRAY_ENTER); + sprite->data[3]++; + } else if (sprite->data[3] == 1) { + if (sprite->animEnded) + return; + sprite->data[4] = sprite->x; + sprite->x = -33; + sprite->invisible = FALSE; + sprite->data[3]++; + } else if (sprite->data[3] < 27) { + sprite->x += 4; + sprite->data[3]++; + } else { + sprite->data[3] = 0; + sprite->x = sprite->data[4]; + sprite->data[4] = 0; + sprite->callback = SpriteCB_PlayerMonFromBall; + PlayCry_ByMode(sprite->sSpeciesId, -25, CRY_MODE_NORMAL); + } +} + static void SpriteCB_TrainerThrowObject_Main(struct Sprite *sprite) { AnimSetCenterToCornerVecX(sprite); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 8fbaa118c..2b6aaf1ba 100755 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1368,6 +1368,62 @@ static void ModulateDmgByType(u8 multiplier) } } +s32 GetTypeEffectiveness(struct Pokemon *mon, u8 moveType) { + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u8 type1 = gSpeciesInfo[species].types[0]; + u8 type2 = gSpeciesInfo[species].types[1]; + s32 i = 0; + u8 multiplier; + s32 flags = 0; + if (GetMonAbility(mon) == ABILITY_LEVITATE && moveType == TYPE_GROUND) + return MOVE_RESULT_NOT_VERY_EFFECTIVE; + while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE) { + if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT) { + i += 3; + continue; + } + else if (TYPE_EFFECT_ATK_TYPE(i) == moveType) { + // check type1 + if (TYPE_EFFECT_DEF_TYPE(i) == type1) + multiplier = TYPE_EFFECT_MULTIPLIER(i); + else if (TYPE_EFFECT_DEF_TYPE(i) == type2 && type1 != type2) + multiplier = TYPE_EFFECT_MULTIPLIER(i); + else { + i += 3; + continue; + } + switch (multiplier) + { + case TYPE_MUL_NO_EFFECT: + flags |= MOVE_RESULT_DOESNT_AFFECT_FOE; + flags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; + flags &= ~MOVE_RESULT_SUPER_EFFECTIVE; + break; + case TYPE_MUL_NOT_EFFECTIVE: + if (!(flags & MOVE_RESULT_NO_EFFECT)) + { + if (flags & MOVE_RESULT_SUPER_EFFECTIVE) + flags &= ~MOVE_RESULT_SUPER_EFFECTIVE; + else + flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE; + } + break; + case TYPE_MUL_SUPER_EFFECTIVE: + if (!(flags & MOVE_RESULT_NO_EFFECT)) + { + if (flags & MOVE_RESULT_NOT_VERY_EFFECTIVE) + flags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; + else + flags |= MOVE_RESULT_SUPER_EFFECTIVE; + } + break; + } + } + i += 3; + } + return flags; +} + static void Cmd_typecalc(void) { s32 i = 0; diff --git a/src/battle_tower.c b/src/battle_tower.c index 3001c80d8..0de52c05a 100755 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1256,11 +1256,11 @@ void SetEReaderTrainerGfxId(void) SetBattleFacilityTrainerGfxId(TRAINER_EREADER, 0); } -u8 GetBattleFacilityTrainerGfxId(u16 trainerId) +u16 GetBattleFacilityTrainerGfxId(u16 trainerId) { u32 i; u8 facilityClass; - u8 trainerObjectGfxId; + u16 trainerObjectGfxId; SetFacilityPtrsGetLevel(); if (trainerId == TRAINER_EREADER) @@ -3467,7 +3467,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) } } -u8 FacilityClassToGraphicsId(u8 facilityClass) +u16 FacilityClassToGraphicsId(u8 facilityClass) { u8 trainerObjectGfxId; u8 i; diff --git a/src/battle_transition.c b/src/battle_transition.c index eaa274ed0..3248185d8 100755 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -1390,6 +1390,7 @@ static void InitPatternWeaveTransition(struct Task *task) sTransitionData->WIN0V = DISPLAY_HEIGHT; sTransitionData->BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL; sTransitionData->BLDALPHA = BLDALPHA_BLEND(task->tBlendTarget2, task->tBlendTarget1); + UpdateShadowColor(0x3DEF); // force shadows to gray for (i = 0; i < DISPLAY_HEIGHT; i++) gScanlineEffectRegBuffers[1][i] = DISPLAY_WIDTH; @@ -3961,6 +3962,8 @@ static void VBlankCB_AngledWipes(void) #define tFadeFromGrayIncrement data[5] #define tDelayTimer data[6] #define tBlend data[7] +#define tBldCntSaved data[8] +#define tShadowColor data[9] static void CreateIntroTask(s16 fadeToGrayDelay, s16 fadeFromGrayDelay, s16 numFades, s16 fadeToGrayIncrement, s16 fadeFromGrayIncrement) { @@ -3988,17 +3991,29 @@ void Task_BattleTransition_Intro(u8 taskId) static bool8 TransitionIntro_FadeToGray(struct Task *task) { + u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); + u16 index = (paletteNum+16)*16+9; // SHADOW_COLOR_INDEX if (task->tDelayTimer == 0 || --task->tDelayTimer == 0) { + task->tDelayTimer = task->tFadeToGrayDelay; task->tBlend += task->tFadeToGrayIncrement; if (task->tBlend > 16) task->tBlend = 16; + if (paletteNum < 16) + task->tShadowColor = gPlttBufferFaded[index]; BlendPalettes(PALETTES_ALL, task->tBlend, RGB(11, 11, 11)); + if (paletteNum < 16) + gPlttBufferFaded[index] = task->tShadowColor; } if (task->tBlend >= 16) { // Fade to gray complete, start fade back + // Save BLDCNT and turn off targets temporarily + task->tBldCntSaved = GetGpuReg(REG_OFFSET_BLDCNT); + SetGpuReg(REG_OFFSET_BLDCNT, task->tBldCntSaved & ~BLDCNT_TGT2_BG_ALL); + if (paletteNum < 16) + gPlttBufferFaded[index] = RGB(11, 11, 11); task->tState++; task->tDelayTimer = task->tFadeFromGrayDelay; } @@ -4009,11 +4024,18 @@ static bool8 TransitionIntro_FadeFromGray(struct Task *task) { if (task->tDelayTimer == 0 || --task->tDelayTimer == 0) { + u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); task->tDelayTimer = task->tFadeFromGrayDelay; task->tBlend -= task->tFadeFromGrayIncrement; if (task->tBlend < 0) task->tBlend = 0; BlendPalettes(PALETTES_ALL, task->tBlend, RGB(11, 11, 11)); + // Restore BLDCNT + SetGpuReg(REG_OFFSET_BLDCNT, task->tBldCntSaved); + if (paletteNum < 16) { + u16 index = (paletteNum+16)*16+9; // SHADOW_COLOR_INDEX + gPlttBufferFaded[index] = task->tShadowColor; + } } if (task->tBlend == 0) { @@ -4306,6 +4328,7 @@ static bool8 FrontierLogoWave_Init(struct Task *task) LZ77UnCompVram(sFrontierLogo_Tileset, tileset); LoadPalette(sFrontierLogo_Palette, BG_PLTT_ID(15), sizeof(sFrontierLogo_Palette)); sTransitionData->cameraY = 0; + UpdateShadowColor(0x3DEF); // force shadows to gray task->tState++; return FALSE; diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 065bbe8a1..04579c6c0 100755 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -1,5 +1,6 @@ #include "global.h" #include "event_data.h" +#include "event_object_movement.h" #include "field_camera.h" #include "field_effect.h" #include "script.h" @@ -213,6 +214,7 @@ static void DoBrailleRegirockEffect(void) PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED); UnlockPlayerFieldControls(); + UnfreezeObjectEvents(); } bool8 ShouldDoBrailleRegisteelEffect(void) @@ -252,6 +254,7 @@ static void DoBrailleRegisteelEffect(void) PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED); UnlockPlayerFieldControls(); + UnfreezeObjectEvents(); } // theory: another commented out DoBrailleWait and Task_BrailleWait. diff --git a/src/cable_car.c b/src/cable_car.c index 7d18df7b7..28cb31680 100755 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -790,12 +790,12 @@ static void CreateCableCarSprites(void) u8 spriteId; u8 i; - u8 playerGraphicsIds[2] = { + u16 playerGraphicsIds[2] = { [MALE] = OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL, [FEMALE] = OBJ_EVENT_GFX_RIVAL_MAY_NORMAL }; u16 rval = Random(); - u8 hikerGraphicsIds[4] = { + u16 hikerGraphicsIds[4] = { OBJ_EVENT_GFX_HIKER, OBJ_EVENT_GFX_CAMPER, OBJ_EVENT_GFX_PICNICKER, @@ -1058,4 +1058,3 @@ static void InitGroundTilemapData(bool8 goingDown) sCableCar->groundTimer = 0; } - diff --git a/src/contest_util.c b/src/contest_util.c index c2b226a18..76a9fd2df 100755 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -2505,6 +2505,12 @@ void SetLinkContestPlayerGfx(void) } } +// copied from event_object_movement +#define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100 +#define OBJ_EVENT_PAL_TAG_MAY 0x1110 +#define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 +#define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 + void LoadLinkContestPlayerPalettes(void) { int i; @@ -2513,28 +2519,28 @@ void LoadLinkContestPlayerPalettes(void) struct Sprite *sprite; static const u8 sContestantLocalIds[CONTESTANT_COUNT] = { 3, 4, 5, 14 }; - gReservedSpritePaletteCount = 12; + // gReservedSpritePaletteCount = 12; + // TODO: Does dynamically allocating link player palettes break link contests? if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) { for (i = 0; i < gNumLinkContestPlayers; i++) { objectEventId = GetObjectEventIdByLocalIdAndMap(sContestantLocalIds[i], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); sprite = &gSprites[gObjectEvents[objectEventId].spriteId]; - sprite->oam.paletteNum = 6 + i; version = (u8)gLinkPlayers[i].version; if (version == VERSION_RUBY || version == VERSION_SAPPHIRE) { if (gLinkPlayers[i].gender == MALE) - LoadPalette(gObjectEventPal_RubySapphireBrendan, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_RS_BRENDAN); else - LoadPalette(gObjectEventPal_RubySapphireMay, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_RS_MAY); } else { if (gLinkPlayers[i].gender == MALE) - LoadPalette(gObjectEventPal_Brendan, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN); else - LoadPalette(gObjectEventPal_May, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_MAY); } } } diff --git a/src/data.c b/src/data.c index 350927f86..7f1e9bfcc 100755 --- a/src/data.c +++ b/src/data.c @@ -326,3 +326,4 @@ const union AnimCmd *const gAnims_MonPic[MAX_MON_PIC_FRAMES] = #include "data/trainers.h" #include "data/text/species_names.h" #include "data/text/move_names.h" +#include "data/text/follower_messages.h" diff --git a/src/data/field_effects/field_effect_object_template_pointers.h b/src/data/field_effects/field_effect_object_template_pointers.h index 64a3c3283..6c1b3a394 100755 --- a/src/data/field_effects/field_effect_object_template_pointers.h +++ b/src/data/field_effects/field_effect_object_template_pointers.h @@ -35,6 +35,10 @@ extern const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch; extern const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles; extern const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle; extern const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_SlitherTracks; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_BugTracks; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_SpotTracks; const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = { [FLDEFFOBJ_SHADOW_S] = &gFieldEffectObjectTemplate_ShadowSmall, @@ -74,4 +78,7 @@ const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = { [FLDEFFOBJ_BUBBLES] = &gFieldEffectObjectTemplate_Bubbles, [FLDEFFOBJ_SMALL_SPARKLE] = &gFieldEffectObjectTemplate_SmallSparkle, [FLDEFFOBJ_RAYQUAZA] = &gFieldEffectObjectTemplate_Rayquaza, + [FLDEFFOBJ_TRACKS_SLITHER] = &gFieldEffectObjectTemplate_SlitherTracks, + [FLDEFFOBJ_TRACKS_SPOT] = &gFieldEffectObjectTemplate_SpotTracks, + [FLDEFFOBJ_TRACKS_BUG] = &gFieldEffectObjectTemplate_BugTracks, }; diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index d19adf6f0..d30dc1b5a 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -28,9 +28,49 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = { obj_frame_tiles(gFieldEffectObjectPic_ShadowExtraLarge), }; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { +const struct SpriteFrameImage gFieldEffectObjectPicTable_BallLight[] = { + obj_frame_tiles(gFieldEffectObjectPic_BallLight), +}; + +const struct SpriteFrameImage gFieldEffectObjectPicTable_PokeCenterLight[] = { + obj_frame_tiles(gFieldEffectObjectPic_PokeCenterLight), +}; + +const struct SpriteFrameImage gFieldEffectObjectPicTable_MartLight[] = { + obj_frame_tiles(gFieldEffectObjectPic_MartLight), +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight = {OBJ_EVENT_PAL_TAG_LIGHT, OBJ_EVENT_PAL_TAG_LIGHT, &gObjectEventBaseOam_32x32, sAnimTable_Inanimate, gFieldEffectObjectPicTable_BallLight, gDummySpriteAffineAnimTable, UpdateLightSprite}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_PokeCenterLight = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NEON_LIGHT, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_Inanimate, + .images = gFieldEffectObjectPicTable_PokeCenterLight, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateLightSprite, +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_MartLight = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NEON_LIGHT, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_Inanimate, + .images = gFieldEffectObjectPicTable_MartLight, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateLightSprite, +}; + +const struct SpriteTemplate *const gFieldEffectLightTemplates[] = { + &gFieldEffectObjectTemplate_BallLight, + &gFieldEffectObjectTemplate_PokeCenterLight, + &gFieldEffectObjectTemplate_MartLight, +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { + .tileTag = FLDEFF_TILE_TAG_SHADOW_SMALL, + .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_8x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowSmall, @@ -39,8 +79,8 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { }; const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { - .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .tileTag = FLDEFF_TILE_TAG_SHADOW_MEDIUM, + .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_16x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowMedium, @@ -49,8 +89,8 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { }; const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { - .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .tileTag = FLDEFF_TILE_TAG_SHADOW_LARGE, + .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_32x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowLarge, @@ -59,8 +99,8 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { }; const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = { - .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .tileTag = FLDEFF_TILE_TAG_SHADOW_EXTRA_LARGE, + .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_64x32, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowExtraLarge, @@ -210,7 +250,7 @@ static const union AnimCmd *const sAnimTable_SurfBlob[] = const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_MAY, .oam = &gObjectEventBaseOam_32x32, .anims = sAnimTable_SurfBlob, .images = sPicTable_SurfBlob, @@ -267,7 +307,7 @@ static const union AnimCmd *const sAnimTable_Arrow[] = const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_MAY, .oam = &gObjectEventBaseOam_16x16, .anims = sAnimTable_Arrow, .images = sPicTable_Arrow, @@ -431,6 +471,36 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints = { .callback = UpdateFootprintsTireTracksFieldEffect, }; +static const struct SpriteFrameImage sPicTable_BugTracks[] = { + overworld_frame(gFieldEffectObjectPic_BugTracks, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_BugTracks, 2, 2, 1), +}; + +static const struct SpriteFrameImage sPicTable_SpotTracks[] = { + overworld_frame(gFieldEffectObjectPic_SpotTracks, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_SpotTracks, 2, 2, 1), +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_BugTracks = { + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_DeepSandFootprints, + .images = sPicTable_BugTracks, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateFootprintsTireTracksFieldEffect, +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_SpotTracks = { + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_DeepSandFootprints, + .images = sPicTable_SpotTracks, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateFootprintsTireTracksFieldEffect, +}; + static const struct SpriteFrameImage sPicTable_BikeTireTracks[] = { overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 0), overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 1), @@ -438,6 +508,14 @@ static const struct SpriteFrameImage sPicTable_BikeTireTracks[] = { overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 3), }; + +static const struct SpriteFrameImage sPicTable_SlitherTracks[] = { + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 1), + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 2), + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 3), +}; + static const union AnimCmd sBikeTireTracksAnim_South[] = { ANIMCMD_FRAME(2, 1), @@ -509,6 +587,17 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks = { .callback = UpdateFootprintsTireTracksFieldEffect, }; + +const struct SpriteTemplate gFieldEffectObjectTemplate_SlitherTracks = { + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_BikeTireTracks, + .images = sPicTable_SlitherTracks, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateFootprintsTireTracksFieldEffect, +}; + static const struct SpriteFrameImage sPicTable_JumpBigSplash[] = { overworld_frame(gFieldEffectObjectPic_JumpBigSplash, 2, 2, 0), overworld_frame(gFieldEffectObjectPic_JumpBigSplash, 2, 2, 1), @@ -931,7 +1020,7 @@ static const union AnimCmd *const sAnimTable_Sparkle[] = const struct SpriteTemplate gFieldEffectObjectTemplate_Sparkle = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = FLDEFF_PAL_TAG_NPC_2, .oam = &gObjectEventBaseOam_16x16, .anims = sAnimTable_Sparkle, .images = sPicTable_Sparkle, @@ -975,7 +1064,7 @@ static const union AnimCmd *const sAnimTable_TreeDisguise[] = const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, .oam = &gObjectEventBaseOam_16x32, .anims = sAnimTable_TreeDisguise, .images = sPicTable_TreeDisguise, @@ -1019,7 +1108,7 @@ static const union AnimCmd *const sAnimTable_MountainDisguise[] = const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, .oam = &gObjectEventBaseOam_16x32, .anims = sAnimTable_MountainDisguise, .images = sPicTable_MountainDisguise, @@ -1064,7 +1153,7 @@ static const union AnimCmd *const sAnimTable_Bird[] = const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_MAY, .oam = &gObjectEventBaseOam_32x32, .anims = sAnimTable_Bird, .images = sPicTable_Bird, diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index 2e1b6b3b3..5736cc2ac 100755 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -66,6 +66,9 @@ u8 MovementAction_WalkInPlaceSlowLeft_Step0(struct ObjectEvent *, struct Sprite u8 MovementAction_WalkInPlaceSlowRight_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceNormalDown_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlace_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_EnterPokeball_Step2(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceNormalUp_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceNormalLeft_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceNormalRight_Step0(struct ObjectEvent *, struct Sprite *); @@ -77,6 +80,8 @@ u8 MovementAction_WalkInPlaceFasterDown_Step0(struct ObjectEvent *, struct Sprit u8 MovementAction_WalkInPlaceFasterUp_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceFasterLeft_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceFasterRight_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_RideWaterCurrentDown_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementAction_RideWaterCurrentUp_Step0(struct ObjectEvent *, struct Sprite *); @@ -303,6 +308,8 @@ u8 (*const gMovementActionFuncs_WalkInPlaceFasterDown[])(struct ObjectEvent *, s u8 (*const gMovementActionFuncs_WalkInPlaceFasterUp[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkInPlaceFasterLeft[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkInPlaceFasterRight[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_ExitPokeball[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_EnterPokeball[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_RideWaterCurrentDown[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_RideWaterCurrentUp[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_RideWaterCurrentLeft[])(struct ObjectEvent *, struct Sprite *); @@ -580,6 +587,8 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) [MOVEMENT_ACTION_FIGURE_8] = gMovementActionFuncs_Figure8, [MOVEMENT_ACTION_FLY_UP] = gMovementActionFuncs_FlyUp, [MOVEMENT_ACTION_FLY_DOWN] = gMovementActionFuncs_FlyDown, + [MOVEMENT_ACTION_EXIT_POKEBALL] = gMovementActionFuncs_ExitPokeball, + [MOVEMENT_ACTION_ENTER_POKEBALL] = gMovementActionFuncs_EnterPokeball, }; u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *) = { @@ -873,6 +882,18 @@ u8 (*const gMovementActionFuncs_WalkInPlaceFasterDown[])(struct ObjectEvent *, s MovementAction_PauseSpriteAnim, }; +u8 (*const gMovementActionFuncs_ExitPokeball[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_ExitPokeball_Step0, + MovementAction_ExitPokeball_Step1, + MovementAction_PauseSpriteAnim, +}; + +u8 (*const gMovementActionFuncs_EnterPokeball[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_EnterPokeball_Step0, + MovementAction_EnterPokeball_Step1, + MovementAction_EnterPokeball_Step2, +}; + u8 (*const gMovementActionFuncs_WalkInPlaceFasterUp[])(struct ObjectEvent *, struct Sprite *) = { MovementAction_WalkInPlaceFasterUp_Step0, MovementAction_WalkInPlace_Step1, diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h index f5189d838..c30f7daaf 100755 --- a/src/data/object_events/movement_type_func_tables.h +++ b/src/data/object_events/movement_type_func_tables.h @@ -401,6 +401,26 @@ bool8 (*const gCopyPlayerMovementFuncs[])(struct ObjectEvent *, struct Sprite *, [COPY_MOVE_EMPTY_2] = CopyablePlayerMovement_None, }; +u8 (*const gMovementTypeFuncs_FollowPlayer[])(struct ObjectEvent *, struct Sprite *) = { + MovementType_FollowPlayer_Shadow, + MovementType_FollowPlayer_Active, + MovementType_FollowPlayer_Moving, +}; + +bool8 (*const gFollowPlayerMovementFuncs[])(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)) = { + [COPY_MOVE_NONE] = FollowablePlayerMovement_Idle, + [COPY_MOVE_FACE] = FollowablePlayerMovement_Idle, + [COPY_MOVE_WALK] = FollowablePlayerMovement_Step, + [COPY_MOVE_WALK_FAST] = FollowablePlayerMovement_GoSpeed1, + [COPY_MOVE_WALK_FASTER] = FollowablePlayerMovement_GoSpeed2, + [COPY_MOVE_SLIDE] = FollowablePlayerMovement_Slide, + [COPY_MOVE_JUMP_IN_PLACE] = fph_IM_DIFFERENT, + [COPY_MOVE_JUMP] = FollowablePlayerMovement_GoSpeed4, + [COPY_MOVE_JUMP2] = FollowablePlayerMovement_Step, + [COPY_MOVE_EMPTY_1] = FollowablePlayerMovement_Idle, + [COPY_MOVE_EMPTY_2] = FollowablePlayerMovement_Idle, +}; + u8 (*const gMovementTypeFuncs_CopyPlayerInGrass[])(struct ObjectEvent *, struct Sprite *) = { MovementType_CopyPlayer_Step0, MovementType_CopyPlayerInGrass_Step1, diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h index f96e52de5..5764a4aac 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -187,18 +187,36 @@ static const union AnimCmd sAnim_FaceNorth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_FaceNorth2F[] = +{ + ANIMCMD_FRAME(2, 16), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_FaceWest[] = { ANIMCMD_FRAME(2, 16), ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_FaceWest2F[] = +{ + ANIMCMD_FRAME(4, 16), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_FaceEast[] = { ANIMCMD_FRAME(2, 16, .hFlip = TRUE), ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_FaceEast2F[] = +{ + ANIMCMD_FRAME(4, 16, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoSouth[] = { ANIMCMD_FRAME(3, 8), @@ -208,6 +226,15 @@ static const union AnimCmd sAnim_GoSouth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoSouth2F[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoNorth[] = { ANIMCMD_FRAME(5, 8), @@ -217,6 +244,15 @@ static const union AnimCmd sAnim_GoNorth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoNorth2F[] = +{ + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoWest[] = { ANIMCMD_FRAME(7, 8), @@ -226,6 +262,15 @@ static const union AnimCmd sAnim_GoWest[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoWest2F[] = +{ + ANIMCMD_FRAME(4, 6), + ANIMCMD_FRAME(5, 6), + ANIMCMD_FRAME(5, 6), + ANIMCMD_FRAME(4, 6), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoEast[] = { ANIMCMD_FRAME(7, 8, .hFlip = TRUE), @@ -235,6 +280,15 @@ static const union AnimCmd sAnim_GoEast[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoEast2F[] = +{ + ANIMCMD_FRAME(4, 6, .hFlip = TRUE), + ANIMCMD_FRAME(5, 6, .hFlip = TRUE), + ANIMCMD_FRAME(5, 6, .hFlip = TRUE), + ANIMCMD_FRAME(4, 6, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastSouth[] = { ANIMCMD_FRAME(3, 4), @@ -244,6 +298,15 @@ static const union AnimCmd sAnim_GoFastSouth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoFastSouth2F[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastNorth[] = { ANIMCMD_FRAME(5, 4), @@ -253,6 +316,15 @@ static const union AnimCmd sAnim_GoFastNorth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoFastNorth2F[] = +{ + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(2, 4), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastWest[] = { ANIMCMD_FRAME(7, 4), @@ -262,6 +334,15 @@ static const union AnimCmd sAnim_GoFastWest[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoFastWest2F[] = +{ + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastEast[] = { ANIMCMD_FRAME(7, 4, .hFlip = TRUE), @@ -271,6 +352,15 @@ static const union AnimCmd sAnim_GoFastEast[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoFastEast2F[] = +{ + ANIMCMD_FRAME(4, 4, .hFlip = TRUE), + ANIMCMD_FRAME(5, 4, .hFlip = TRUE), + ANIMCMD_FRAME(5, 4, .hFlip = TRUE), + ANIMCMD_FRAME(4, 4, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFasterSouth[] = { ANIMCMD_FRAME(3, 2), @@ -280,6 +370,70 @@ static const union AnimCmd sAnim_GoFasterSouth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_ExitPokeballSouth[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(0, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballNorth[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(2, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballWest[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(4, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballEast[] = +{ + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_EnterSouth[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFasterNorth[] = { ANIMCMD_FRAME(5, 2), @@ -289,6 +443,18 @@ static const union AnimCmd sAnim_GoFasterNorth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_EnterNorth[] = +{ + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFasterWest[] = { ANIMCMD_FRAME(7, 2), @@ -298,6 +464,18 @@ static const union AnimCmd sAnim_GoFasterWest[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_EnterWest[] = +{ + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFasterEast[] = { ANIMCMD_FRAME(7, 2, .hFlip = TRUE), @@ -307,6 +485,18 @@ static const union AnimCmd sAnim_GoFasterEast[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_EnterEast[] = +{ + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastestSouth[] = { ANIMCMD_FRAME(3, 1), @@ -316,6 +506,54 @@ static const union AnimCmd sAnim_GoFastestSouth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_ExitPokeballFastSouth[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(0, 1), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballFastNorth[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(2, 1), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballFastWest[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(4, 2), + ANIMCMD_FRAME(4, 1), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballFastEast[] = +{ + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(4, 2, .hFlip = TRUE), + ANIMCMD_FRAME(4, 1, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastestNorth[] = { ANIMCMD_FRAME(5, 1), @@ -845,6 +1083,89 @@ static const union AnimCmd *const sAnimTable_Standard[] = { [ANIM_STD_GO_FASTEST_EAST] = sAnim_GoFastestEast, }; +static const union AnimCmd *const sAnimTable_Following[] = { + sAnim_FaceSouth, + sAnim_FaceNorth2F, + sAnim_FaceWest2F, + sAnim_FaceEast2F, + sAnim_GoSouth2F, + sAnim_GoNorth2F, + sAnim_GoWest2F, + sAnim_GoEast2F, + sAnim_GoFastSouth2F, + sAnim_GoFastNorth2F, + sAnim_GoFastWest2F, + sAnim_GoFastEast2F, + sAnim_EnterSouth, + sAnim_EnterNorth, + sAnim_EnterWest, + sAnim_EnterEast, + sAnim_ExitPokeballSouth, + sAnim_ExitPokeballNorth, + sAnim_ExitPokeballWest, + sAnim_ExitPokeballEast, + // ANIM_STD_COUNT = + sAnim_ExitPokeballFastSouth, + sAnim_ExitPokeballFastNorth, + sAnim_ExitPokeballFastWest, + sAnim_ExitPokeballFastEast, +}; + +const union AnimCmd sAnim_FaceEast2F_Special[] = +{ + ANIMCMD_FRAME(6, 16), + ANIMCMD_FRAME(6, 16), + ANIMCMD_FRAME(7, 16), + ANIMCMD_FRAME(7, 16), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd sAnim_GoEast2F_Special[] = +{ + ANIMCMD_FRAME(6, 6), + ANIMCMD_FRAME(6, 6), + ANIMCMD_FRAME(7, 6), + ANIMCMD_FRAME(7, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd sAnim_GoFastEast2F_Special[] = +{ + ANIMCMD_FRAME(6, 4), + ANIMCMD_FRAME(6, 4), + ANIMCMD_FRAME(7, 4), + ANIMCMD_FRAME(7, 4), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sAnimTable_FollowingSpecial[] = { + sAnim_FaceSouth, + sAnim_FaceNorth2F, + sAnim_FaceWest2F, + sAnim_FaceEast2F_Special, + sAnim_GoSouth2F, + sAnim_GoNorth2F, + sAnim_GoWest2F, + sAnim_GoEast2F_Special, + sAnim_GoFastSouth2F, + sAnim_GoFastNorth2F, + sAnim_GoFastWest2F, + sAnim_GoFastEast2F_Special, + sAnim_EnterSouth, + sAnim_EnterNorth, + sAnim_EnterWest, + sAnim_EnterEast, + sAnim_ExitPokeballSouth, + sAnim_ExitPokeballNorth, + sAnim_ExitPokeballWest, + sAnim_ExitPokeballEast, + // ANIM_STD_COUNT = + sAnim_ExitPokeballFastSouth, + sAnim_ExitPokeballFastNorth, + sAnim_ExitPokeballFastWest, + sAnim_ExitPokeballFastEast, +}; + static const union AnimCmd *const sAnimTable_HoOh[] = { [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth, [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth, @@ -1153,6 +1474,10 @@ static const struct StepAnimTable sStepAnimTables[] = { .anims = sAnimTable_Standard, .animPos = {1, 3, 0, 2}, }, + { + .anims = sAnimTable_Following, + .animPos = {1, 3, 0, 2}, + }, { .anims = sAnimTable_BrendanMayNormal, .animPos = {1, 3, 0, 2}, diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index da728e38e..1968266f3 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -163,19 +163,9 @@ const u32 gObjectEventPic_GameboyKid[] = INCBIN_U32("graphics/object_events/pics const u32 gObjectEventPic_ContestJudge[] = INCBIN_U32("graphics/object_events/pics/people/contest_judge.4bpp"); const u32 gObjectEventPic_Archie[] = INCBIN_U32("graphics/object_events/pics/people/team_aqua/archie.4bpp"); const u32 gObjectEventPic_Maxie[] = INCBIN_U32("graphics/object_events/pics/people/team_magma/maxie.4bpp"); -const u32 gObjectEventPic_Kyogre[] = INCBIN_U32("graphics/object_events/pics/pokemon/kyogre.4bpp"); -const u32 gObjectEventPic_Groudon[] = INCBIN_U32("graphics/object_events/pics/pokemon/groudon.4bpp"); const u32 gObjectEventPic_Regi[] = INCBIN_U32("graphics/object_events/pics/pokemon/regi.4bpp"); -const u32 gObjectEventPic_Skitty[] = INCBIN_U32("graphics/object_events/pics/pokemon/skitty.4bpp"); -const u32 gObjectEventPic_Kecleon[] = INCBIN_U32("graphics/object_events/pics/pokemon/kecleon.4bpp"); -const u32 gObjectEventPic_Rayquaza[] = INCBIN_U32("graphics/object_events/pics/pokemon/rayquaza.4bpp"); const u32 gObjectEventPic_RayquazaStill[] = INCBIN_U32("graphics/object_events/pics/pokemon/rayquaza_still.4bpp"); -const u32 gObjectEventPic_Zigzagoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/zigzagoon.4bpp"); -const u32 gObjectEventPic_Pikachu[] = INCBIN_U32("graphics/object_events/pics/pokemon/pikachu.4bpp"); -const u32 gObjectEventPic_Azumarill[] = INCBIN_U32("graphics/object_events/pics/pokemon/azumarill.4bpp"); -const u32 gObjectEventPic_Wingull[] = INCBIN_U32("graphics/object_events/pics/pokemon/wingull.4bpp"); const u32 gObjectEventPic_TuberMSwimming[] = INCBIN_U32("graphics/object_events/pics/people/tuber_m_swimming.4bpp"); -const u32 gObjectEventPic_Azurill[] = INCBIN_U32("graphics/object_events/pics/pokemon/azurill.4bpp"); const u32 gObjectEventPic_Mom[] = INCBIN_U32("graphics/object_events/pics/people/mom.4bpp"); const u16 gObjectEventPal_Kyogre[] = INCBIN_U16("graphics/object_events/palettes/kyogre.gbapal"); const u16 gObjectEventPal_KyogreReflection[] = INCBIN_U16("graphics/object_events/palettes/kyogre_reflection.gbapal"); @@ -241,12 +231,10 @@ const u32 gObjectEventPic_SubmarineShadow[] = INCBIN_U32("graphics/object_events const u16 gObjectEventPal_SubmarineShadow[] = INCBIN_U16("graphics/object_events/palettes/submarine_shadow.gbapal"); const u32 gObjectEventPic_Truck[] = INCBIN_U32("graphics/object_events/pics/misc/truck.4bpp"); const u16 gObjectEventPal_Truck[] = INCBIN_U16("graphics/object_events/palettes/truck.gbapal"); -const u32 gObjectEventPic_Vigoroth[] = INCBIN_U32("graphics/object_events/pics/pokemon/vigoroth.4bpp"); const u16 gObjectEventPal_Vigoroth[] = INCBIN_U16("graphics/object_events/palettes/vigoroth.gbapal"); const u32 gObjectEventPic_BirchsBag[] = INCBIN_U32("graphics/object_events/pics/misc/birchs_bag.4bpp"); const u32 gObjectEventPic_EnemyZigzagoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/enemy_zigzagoon.4bpp"); const u16 gObjectEventPal_EnemyZigzagoon[] = INCBIN_U16("graphics/object_events/palettes/enemy_zigzagoon.gbapal"); -const u32 gObjectEventPic_Poochyena[] = INCBIN_U32("graphics/object_events/pics/pokemon/poochyena.4bpp"); const u16 gObjectEventPal_Poochyena[] = INCBIN_U16("graphics/object_events/palettes/poochyena.gbapal"); const u32 gObjectEventPic_CableCar[] = INCBIN_U32("graphics/object_events/pics/misc/cable_car.4bpp"); const u16 gObjectEventPal_CableCar[] = INCBIN_U16("graphics/object_events/palettes/cable_car.gbapal"); @@ -293,6 +281,9 @@ const u32 gFieldEffectObjectPic_ShadowSmall[] = INCBIN_U32("graphics/field_effec const u32 gFieldEffectObjectPic_ShadowMedium[] = INCBIN_U32("graphics/field_effects/pics/shadow_medium.4bpp"); const u32 gFieldEffectObjectPic_ShadowLarge[] = INCBIN_U32("graphics/field_effects/pics/shadow_large.4bpp"); const u32 gFieldEffectObjectPic_ShadowExtraLarge[] = INCBIN_U32("graphics/field_effects/pics/shadow_extra_large.4bpp"); +const u32 gFieldEffectObjectPic_BallLight[] = INCBIN_U32("graphics/object_events/pics/misc/light.4bpp"); +const u32 gFieldEffectObjectPic_PokeCenterLight[] = INCBIN_U32("graphics/object_events/pics/misc/poke_center_light.4bpp"); +const u32 gFieldEffectObjectPic_MartLight[] = INCBIN_U32("graphics/object_events/pics/misc/mart_light.4bpp"); static const u32 sFiller[0x48] = {}; const u8 gFieldEffectPic_CutGrass[] = INCBIN_U8("graphics/field_effects/pics/cut_grass.4bpp"); const u32 gFieldEffectPic_CutGrass_Copy[] = INCBIN_U32("graphics/field_effects/pics/cut_grass.4bpp"); @@ -314,6 +305,9 @@ const u32 gFieldEffectObjectPic_ShortGrass[] = INCBIN_U32("graphics/field_effect const u32 gFieldEffectObjectPic_SandFootprints[] = INCBIN_U32("graphics/field_effects/pics/sand_footprints.4bpp"); const u32 gFieldEffectObjectPic_DeepSandFootprints[] = INCBIN_U32("graphics/field_effects/pics/deep_sand_footprints.4bpp"); const u32 gFieldEffectObjectPic_BikeTireTracks[] = INCBIN_U32("graphics/field_effects/pics/bike_tire_tracks.4bpp"); +const u32 gFieldEffectObjectPic_SlitherTracks[] = INCBIN_U32("graphics/field_effects/pics/slither_tracks.4bpp"); +const u32 gFieldEffectObjectPic_SpotTracks[] = INCBIN_U32("graphics/field_effects/pics/spot_tracks.4bpp"); +const u32 gFieldEffectObjectPic_BugTracks[] = INCBIN_U32("graphics/field_effects/pics/bug_tracks.4bpp"); const u32 gFieldEffectObjectPic_UnusedSand[] = INCBIN_U32("graphics/field_effects/pics/unused_sand.4bpp"); const u32 gFieldEffectObjectPic_SandPile[] = INCBIN_U32("graphics/field_effects/pics/sand_pile.4bpp"); const u32 gFieldEffectObjectPic_JumpBigSplash[] = INCBIN_U32("graphics/field_effects/pics/jump_big_splash.4bpp"); @@ -334,21 +328,16 @@ const u32 gFieldEffectObjectPic_Bird[] = INCBIN_U32("graphics/field_effects/pics const u32 gObjectEventPic_Juan[] = INCBIN_U32("graphics/object_events/pics/people/gym_leaders/juan.4bpp"); const u32 gObjectEventPic_Scott[] = INCBIN_U32("graphics/object_events/pics/people/scott.4bpp"); const u32 gObjectEventPic_Statue[] = INCBIN_U32("graphics/object_events/pics/misc/statue.4bpp"); -const u32 gObjectEventPic_Kirlia[] = INCBIN_U32("graphics/object_events/pics/pokemon/kirlia.4bpp"); -const u32 gObjectEventPic_Dusclops[] = INCBIN_U32("graphics/object_events/pics/pokemon/dusclops.4bpp"); const u32 gObjectEventPic_MysteryEventDeliveryman[] = INCBIN_U32("graphics/object_events/pics/people/mystery_event_deliveryman.4bpp"); const u32 gObjectEventPic_UnionRoomAttendant[] = INCBIN_U32("graphics/object_events/pics/people/union_room_attendant.4bpp"); const u32 gObjectEventPic_MovingBox[] = INCBIN_U32("graphics/object_events/pics/misc/moving_box.4bpp"); const u16 gObjectEventPal_MovingBox[] = INCBIN_U16("graphics/object_events/palettes/moving_box.gbapal"); -const u32 gObjectEventPic_Sudowoodo[] = INCBIN_U32("graphics/object_events/pics/pokemon/sudowoodo.4bpp"); -const u32 gObjectEventPic_Mew[] = INCBIN_U32("graphics/object_events/pics/pokemon/mew.4bpp"); const u16 gObjectEventPal_RedLeaf[] = INCBIN_U16("graphics/object_events/palettes/red_leaf.gbapal"); const u32 gObjectEventPic_Red[] = INCBIN_U32("graphics/object_events/pics/people/red.4bpp"); const u32 gObjectEventPic_Leaf[] = INCBIN_U32("graphics/object_events/pics/people/leaf.4bpp"); const u16 gObjectEventPal_BirthIslandStone[] = INCBIN_U16("graphics/object_events/palettes/birth_island_stone.gbapal"); const u32 gObjectEventPic_BirthIslandStone[] = INCBIN_U32("graphics/object_events/pics/misc/birth_island_stone.4bpp"); const u16 gObjectEventPal_Deoxys[] = INCBIN_U16("graphics/object_events/palettes/deoxys.gbapal"); -const u32 gObjectEventPic_Deoxys[] = INCBIN_U32("graphics/object_events/pics/pokemon/deoxys.4bpp"); const u32 gObjectEventPic_Anabel[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/anabel.4bpp"); const u32 gObjectEventPic_Tucker[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/tucker.4bpp"); const u32 gObjectEventPic_Spenser[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/spenser.4bpp"); @@ -356,7 +345,491 @@ const u32 gObjectEventPic_Greta[] = INCBIN_U32("graphics/object_events/pics/peop const u32 gObjectEventPic_Noland[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/noland.4bpp"); const u32 gObjectEventPic_Lucy[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/lucy.4bpp"); const u32 gObjectEventPic_Brandon[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/brandon.4bpp"); +const u32 gObjectEventPic_AnimatedBall[] = INCBIN_U32("graphics/object_events/pics/misc/animated_ball.4bpp"); +const u32 gObjectEventPic_Bulbasaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/bulbasaur.4bpp"); +const u32 gObjectEventPic_Ivysaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/ivysaur.4bpp"); +const u32 gObjectEventPic_Venusaur[] = INCBIN_U32("graphics/object_events/pics/pokemon/venusaur.4bpp"); +const u32 gObjectEventPic_Charmander[] = INCBIN_U32("graphics/object_events/pics/pokemon/charmander.4bpp"); +const u32 gObjectEventPic_Charmeleon[] = INCBIN_U32("graphics/object_events/pics/pokemon/charmeleon.4bpp"); +const u32 gObjectEventPic_Charizard[] = INCBIN_U32("graphics/object_events/pics/pokemon/charizard.4bpp"); +const u32 gObjectEventPic_Squirtle[] = INCBIN_U32("graphics/object_events/pics/pokemon/squirtle.4bpp"); +const u32 gObjectEventPic_Wartortle[] = INCBIN_U32("graphics/object_events/pics/pokemon/wartortle.4bpp"); +const u32 gObjectEventPic_Blastoise[] = INCBIN_U32("graphics/object_events/pics/pokemon/blastoise.4bpp"); +const u32 gObjectEventPic_Caterpie[] = INCBIN_U32("graphics/object_events/pics/pokemon/caterpie.4bpp"); +const u32 gObjectEventPic_Metapod[] = INCBIN_U32("graphics/object_events/pics/pokemon/metapod.4bpp"); +const u32 gObjectEventPic_Butterfree[] = INCBIN_U32("graphics/object_events/pics/pokemon/butterfree.4bpp"); +const u32 gObjectEventPic_Weedle[] = INCBIN_U32("graphics/object_events/pics/pokemon/weedle.4bpp"); +const u32 gObjectEventPic_Kakuna[] = INCBIN_U32("graphics/object_events/pics/pokemon/kakuna.4bpp"); +const u32 gObjectEventPic_Beedrill[] = INCBIN_U32("graphics/object_events/pics/pokemon/beedrill.4bpp"); +const u32 gObjectEventPic_Pidgey[] = INCBIN_U32("graphics/object_events/pics/pokemon/pidgey.4bpp"); +const u32 gObjectEventPic_Pidgeotto[] = INCBIN_U32("graphics/object_events/pics/pokemon/pidgeotto.4bpp"); +const u32 gObjectEventPic_Pidgeot[] = INCBIN_U32("graphics/object_events/pics/pokemon/pidgeot.4bpp"); +const u32 gObjectEventPic_Rattata[] = INCBIN_U32("graphics/object_events/pics/pokemon/rattata.4bpp"); +const u32 gObjectEventPic_Raticate[] = INCBIN_U32("graphics/object_events/pics/pokemon/raticate.4bpp"); +const u32 gObjectEventPic_Spearow[] = INCBIN_U32("graphics/object_events/pics/pokemon/spearow.4bpp"); +const u32 gObjectEventPic_Fearow[] = INCBIN_U32("graphics/object_events/pics/pokemon/fearow.4bpp"); +const u32 gObjectEventPic_Ekans[] = INCBIN_U32("graphics/object_events/pics/pokemon/ekans.4bpp"); +const u32 gObjectEventPic_Arbok[] = INCBIN_U32("graphics/object_events/pics/pokemon/arbok.4bpp"); +const u32 gObjectEventPic_Pikachu[] = INCBIN_U32("graphics/object_events/pics/pokemon/pikachu.4bpp"); +const u32 gObjectEventPic_Raichu[] = INCBIN_U32("graphics/object_events/pics/pokemon/raichu.4bpp"); +const u32 gObjectEventPic_Sandshrew[] = INCBIN_U32("graphics/object_events/pics/pokemon/sandshrew.4bpp"); +const u32 gObjectEventPic_Sandslash[] = INCBIN_U32("graphics/object_events/pics/pokemon/sandslash.4bpp"); +const u32 gObjectEventPic_Nidoran_f[] = INCBIN_U32("graphics/object_events/pics/pokemon/nidoran_f.4bpp"); +const u32 gObjectEventPic_Nidorina[] = INCBIN_U32("graphics/object_events/pics/pokemon/nidorina.4bpp"); +const u32 gObjectEventPic_Nidoqueen[] = INCBIN_U32("graphics/object_events/pics/pokemon/nidoqueen.4bpp"); +const u32 gObjectEventPic_Nidoran_m[] = INCBIN_U32("graphics/object_events/pics/pokemon/nidoran_m.4bpp"); +const u32 gObjectEventPic_Nidorino[] = INCBIN_U32("graphics/object_events/pics/pokemon/nidorino.4bpp"); +const u32 gObjectEventPic_Nidoking[] = INCBIN_U32("graphics/object_events/pics/pokemon/nidoking.4bpp"); +const u32 gObjectEventPic_Clefairy[] = INCBIN_U32("graphics/object_events/pics/pokemon/clefairy.4bpp"); +const u32 gObjectEventPic_Clefable[] = INCBIN_U32("graphics/object_events/pics/pokemon/clefable.4bpp"); +const u32 gObjectEventPic_Vulpix[] = INCBIN_U32("graphics/object_events/pics/pokemon/vulpix.4bpp"); +const u32 gObjectEventPic_Ninetales[] = INCBIN_U32("graphics/object_events/pics/pokemon/ninetales.4bpp"); +const u32 gObjectEventPic_Jigglypuff[] = INCBIN_U32("graphics/object_events/pics/pokemon/jigglypuff.4bpp"); +const u32 gObjectEventPic_Wigglytuff[] = INCBIN_U32("graphics/object_events/pics/pokemon/wigglytuff.4bpp"); +const u32 gObjectEventPic_Zubat[] = INCBIN_U32("graphics/object_events/pics/pokemon/zubat.4bpp"); +const u32 gObjectEventPic_Golbat[] = INCBIN_U32("graphics/object_events/pics/pokemon/golbat.4bpp"); +const u32 gObjectEventPic_Oddish[] = INCBIN_U32("graphics/object_events/pics/pokemon/oddish.4bpp"); +const u32 gObjectEventPic_Gloom[] = INCBIN_U32("graphics/object_events/pics/pokemon/gloom.4bpp"); +const u32 gObjectEventPic_Vileplume[] = INCBIN_U32("graphics/object_events/pics/pokemon/vileplume.4bpp"); +const u32 gObjectEventPic_Paras[] = INCBIN_U32("graphics/object_events/pics/pokemon/paras.4bpp"); +const u32 gObjectEventPic_Parasect[] = INCBIN_U32("graphics/object_events/pics/pokemon/parasect.4bpp"); +const u32 gObjectEventPic_Venonat[] = INCBIN_U32("graphics/object_events/pics/pokemon/venonat.4bpp"); +const u32 gObjectEventPic_Venomoth[] = INCBIN_U32("graphics/object_events/pics/pokemon/venomoth.4bpp"); +const u32 gObjectEventPic_Diglett[] = INCBIN_U32("graphics/object_events/pics/pokemon/diglett.4bpp"); +const u32 gObjectEventPic_Dugtrio[] = INCBIN_U32("graphics/object_events/pics/pokemon/dugtrio.4bpp"); +const u32 gObjectEventPic_Meowth[] = INCBIN_U32("graphics/object_events/pics/pokemon/meowth.4bpp"); +const u32 gObjectEventPic_Persian[] = INCBIN_U32("graphics/object_events/pics/pokemon/persian.4bpp"); +const u32 gObjectEventPic_Psyduck[] = INCBIN_U32("graphics/object_events/pics/pokemon/psyduck.4bpp"); +const u32 gObjectEventPic_Golduck[] = INCBIN_U32("graphics/object_events/pics/pokemon/golduck.4bpp"); +const u32 gObjectEventPic_Mankey[] = INCBIN_U32("graphics/object_events/pics/pokemon/mankey.4bpp"); +const u32 gObjectEventPic_Primeape[] = INCBIN_U32("graphics/object_events/pics/pokemon/primeape.4bpp"); +const u32 gObjectEventPic_Growlithe[] = INCBIN_U32("graphics/object_events/pics/pokemon/growlithe.4bpp"); +const u32 gObjectEventPic_Arcanine[] = INCBIN_U32("graphics/object_events/pics/pokemon/arcanine.4bpp"); +const u32 gObjectEventPic_Poliwag[] = INCBIN_U32("graphics/object_events/pics/pokemon/poliwag.4bpp"); +const u32 gObjectEventPic_Poliwhirl[] = INCBIN_U32("graphics/object_events/pics/pokemon/poliwhirl.4bpp"); +const u32 gObjectEventPic_Poliwrath[] = INCBIN_U32("graphics/object_events/pics/pokemon/poliwrath.4bpp"); +const u32 gObjectEventPic_Abra[] = INCBIN_U32("graphics/object_events/pics/pokemon/abra.4bpp"); +const u32 gObjectEventPic_Kadabra[] = INCBIN_U32("graphics/object_events/pics/pokemon/kadabra.4bpp"); +const u32 gObjectEventPic_Alakazam[] = INCBIN_U32("graphics/object_events/pics/pokemon/alakazam.4bpp"); +const u32 gObjectEventPic_Machop[] = INCBIN_U32("graphics/object_events/pics/pokemon/machop.4bpp"); +const u32 gObjectEventPic_Machoke[] = INCBIN_U32("graphics/object_events/pics/pokemon/machoke.4bpp"); +const u32 gObjectEventPic_Machamp[] = INCBIN_U32("graphics/object_events/pics/pokemon/machamp.4bpp"); +const u32 gObjectEventPic_Bellsprout[] = INCBIN_U32("graphics/object_events/pics/pokemon/bellsprout.4bpp"); +const u32 gObjectEventPic_Weepinbell[] = INCBIN_U32("graphics/object_events/pics/pokemon/weepinbell.4bpp"); +const u32 gObjectEventPic_Victreebel[] = INCBIN_U32("graphics/object_events/pics/pokemon/victreebel.4bpp"); +const u32 gObjectEventPic_Tentacool[] = INCBIN_U32("graphics/object_events/pics/pokemon/tentacool.4bpp"); +const u32 gObjectEventPic_Tentacruel[] = INCBIN_U32("graphics/object_events/pics/pokemon/tentacruel.4bpp"); +const u32 gObjectEventPic_Geodude[] = INCBIN_U32("graphics/object_events/pics/pokemon/geodude.4bpp"); +const u32 gObjectEventPic_Graveler[] = INCBIN_U32("graphics/object_events/pics/pokemon/graveler.4bpp"); +const u32 gObjectEventPic_Golem[] = INCBIN_U32("graphics/object_events/pics/pokemon/golem.4bpp"); +const u32 gObjectEventPic_Ponyta[] = INCBIN_U32("graphics/object_events/pics/pokemon/ponyta.4bpp"); +const u32 gObjectEventPic_Rapidash[] = INCBIN_U32("graphics/object_events/pics/pokemon/rapidash.4bpp"); +const u32 gObjectEventPic_Slowpoke[] = INCBIN_U32("graphics/object_events/pics/pokemon/slowpoke.4bpp"); +const u32 gObjectEventPic_Slowbro[] = INCBIN_U32("graphics/object_events/pics/pokemon/slowbro.4bpp"); +const u32 gObjectEventPic_Magnemite[] = INCBIN_U32("graphics/object_events/pics/pokemon/magnemite.4bpp"); +const u32 gObjectEventPic_Magneton[] = INCBIN_U32("graphics/object_events/pics/pokemon/magneton.4bpp"); +const u32 gObjectEventPic_Farfetchd[] = INCBIN_U32("graphics/object_events/pics/pokemon/farfetchd.4bpp"); +const u32 gObjectEventPic_Doduo[] = INCBIN_U32("graphics/object_events/pics/pokemon/doduo.4bpp"); +const u32 gObjectEventPic_Dodrio[] = INCBIN_U32("graphics/object_events/pics/pokemon/dodrio.4bpp"); +const u32 gObjectEventPic_Seel[] = INCBIN_U32("graphics/object_events/pics/pokemon/seel.4bpp"); +const u32 gObjectEventPic_Dewgong[] = INCBIN_U32("graphics/object_events/pics/pokemon/dewgong.4bpp"); +const u32 gObjectEventPic_Grimer[] = INCBIN_U32("graphics/object_events/pics/pokemon/grimer.4bpp"); +const u32 gObjectEventPic_Muk[] = INCBIN_U32("graphics/object_events/pics/pokemon/muk.4bpp"); +const u32 gObjectEventPic_Shellder[] = INCBIN_U32("graphics/object_events/pics/pokemon/shellder.4bpp"); +const u32 gObjectEventPic_Cloyster[] = INCBIN_U32("graphics/object_events/pics/pokemon/cloyster.4bpp"); +const u32 gObjectEventPic_Gastly[] = INCBIN_U32("graphics/object_events/pics/pokemon/gastly.4bpp"); +const u32 gObjectEventPic_Haunter[] = INCBIN_U32("graphics/object_events/pics/pokemon/haunter.4bpp"); +const u32 gObjectEventPic_Gengar[] = INCBIN_U32("graphics/object_events/pics/pokemon/gengar.4bpp"); +const u32 gObjectEventPic_Onix[] = INCBIN_U32("graphics/object_events/pics/pokemon/onix.4bpp"); +const u32 gObjectEventPic_Drowzee[] = INCBIN_U32("graphics/object_events/pics/pokemon/drowzee.4bpp"); +const u32 gObjectEventPic_Hypno[] = INCBIN_U32("graphics/object_events/pics/pokemon/hypno.4bpp"); +const u32 gObjectEventPic_Krabby[] = INCBIN_U32("graphics/object_events/pics/pokemon/krabby.4bpp"); +const u32 gObjectEventPic_Kingler[] = INCBIN_U32("graphics/object_events/pics/pokemon/kingler.4bpp"); +const u32 gObjectEventPic_Voltorb[] = INCBIN_U32("graphics/object_events/pics/pokemon/voltorb.4bpp"); +const u32 gObjectEventPic_Electrode[] = INCBIN_U32("graphics/object_events/pics/pokemon/electrode.4bpp"); +const u32 gObjectEventPic_Exeggcute[] = INCBIN_U32("graphics/object_events/pics/pokemon/exeggcute.4bpp"); +const u32 gObjectEventPic_Exeggutor[] = INCBIN_U32("graphics/object_events/pics/pokemon/exeggutor.4bpp"); +const u32 gObjectEventPic_Cubone[] = INCBIN_U32("graphics/object_events/pics/pokemon/cubone.4bpp"); +const u32 gObjectEventPic_Marowak[] = INCBIN_U32("graphics/object_events/pics/pokemon/marowak.4bpp"); +const u32 gObjectEventPic_Hitmonlee[] = INCBIN_U32("graphics/object_events/pics/pokemon/hitmonlee.4bpp"); +const u32 gObjectEventPic_Hitmonchan[] = INCBIN_U32("graphics/object_events/pics/pokemon/hitmonchan.4bpp"); +const u32 gObjectEventPic_Lickitung[] = INCBIN_U32("graphics/object_events/pics/pokemon/lickitung.4bpp"); +const u32 gObjectEventPic_Koffing[] = INCBIN_U32("graphics/object_events/pics/pokemon/koffing.4bpp"); +const u32 gObjectEventPic_Weezing[] = INCBIN_U32("graphics/object_events/pics/pokemon/weezing.4bpp"); +const u32 gObjectEventPic_Rhyhorn[] = INCBIN_U32("graphics/object_events/pics/pokemon/rhyhorn.4bpp"); +const u32 gObjectEventPic_Rhydon[] = INCBIN_U32("graphics/object_events/pics/pokemon/rhydon.4bpp"); +const u32 gObjectEventPic_Chansey[] = INCBIN_U32("graphics/object_events/pics/pokemon/chansey.4bpp"); +const u32 gObjectEventPic_Tangela[] = INCBIN_U32("graphics/object_events/pics/pokemon/tangela.4bpp"); +const u32 gObjectEventPic_Kangaskhan[] = INCBIN_U32("graphics/object_events/pics/pokemon/kangaskhan.4bpp"); +const u32 gObjectEventPic_Horsea[] = INCBIN_U32("graphics/object_events/pics/pokemon/horsea.4bpp"); +const u32 gObjectEventPic_Seadra[] = INCBIN_U32("graphics/object_events/pics/pokemon/seadra.4bpp"); +const u32 gObjectEventPic_Goldeen[] = INCBIN_U32("graphics/object_events/pics/pokemon/goldeen.4bpp"); +const u32 gObjectEventPic_Seaking[] = INCBIN_U32("graphics/object_events/pics/pokemon/seaking.4bpp"); +const u32 gObjectEventPic_Staryu[] = INCBIN_U32("graphics/object_events/pics/pokemon/staryu.4bpp"); +const u32 gObjectEventPic_Starmie[] = INCBIN_U32("graphics/object_events/pics/pokemon/starmie.4bpp"); +const u32 gObjectEventPic_Mr_Mime[] = INCBIN_U32("graphics/object_events/pics/pokemon/mr_mime.4bpp"); +const u32 gObjectEventPic_Scyther[] = INCBIN_U32("graphics/object_events/pics/pokemon/scyther.4bpp"); +const u32 gObjectEventPic_Jynx[] = INCBIN_U32("graphics/object_events/pics/pokemon/jynx.4bpp"); +const u32 gObjectEventPic_Electabuzz[] = INCBIN_U32("graphics/object_events/pics/pokemon/electabuzz.4bpp"); +const u32 gObjectEventPic_Magmar[] = INCBIN_U32("graphics/object_events/pics/pokemon/magmar.4bpp"); +const u32 gObjectEventPic_Pinsir[] = INCBIN_U32("graphics/object_events/pics/pokemon/pinsir.4bpp"); +const u32 gObjectEventPic_Tauros[] = INCBIN_U32("graphics/object_events/pics/pokemon/tauros.4bpp"); +const u32 gObjectEventPic_Magikarp[] = INCBIN_U32("graphics/object_events/pics/pokemon/magikarp.4bpp"); +const u32 gObjectEventPic_Gyarados[] = INCBIN_U32("graphics/object_events/pics/pokemon/gyarados.4bpp"); +const u32 gObjectEventPic_Lapras[] = INCBIN_U32("graphics/object_events/pics/pokemon/lapras.4bpp"); +const u32 gObjectEventPic_Ditto[] = INCBIN_U32("graphics/object_events/pics/pokemon/ditto.4bpp"); +const u32 gObjectEventPic_Eevee[] = INCBIN_U32("graphics/object_events/pics/pokemon/eevee.4bpp"); +const u32 gObjectEventPic_Vaporeon[] = INCBIN_U32("graphics/object_events/pics/pokemon/vaporeon.4bpp"); +const u32 gObjectEventPic_Jolteon[] = INCBIN_U32("graphics/object_events/pics/pokemon/jolteon.4bpp"); +const u32 gObjectEventPic_Flareon[] = INCBIN_U32("graphics/object_events/pics/pokemon/flareon.4bpp"); +const u32 gObjectEventPic_Porygon[] = INCBIN_U32("graphics/object_events/pics/pokemon/porygon.4bpp"); +const u32 gObjectEventPic_Omanyte[] = INCBIN_U32("graphics/object_events/pics/pokemon/omanyte.4bpp"); +const u32 gObjectEventPic_Omastar[] = INCBIN_U32("graphics/object_events/pics/pokemon/omastar.4bpp"); +const u32 gObjectEventPic_Kabuto[] = INCBIN_U32("graphics/object_events/pics/pokemon/kabuto.4bpp"); +const u32 gObjectEventPic_Kabutops[] = INCBIN_U32("graphics/object_events/pics/pokemon/kabutops.4bpp"); +const u32 gObjectEventPic_Aerodactyl[] = INCBIN_U32("graphics/object_events/pics/pokemon/aerodactyl.4bpp"); +const u32 gObjectEventPic_Snorlax[] = INCBIN_U32("graphics/object_events/pics/pokemon/snorlax.4bpp"); +const u32 gObjectEventPic_Articuno[] = INCBIN_U32("graphics/object_events/pics/pokemon/articuno.4bpp"); +const u32 gObjectEventPic_Zapdos[] = INCBIN_U32("graphics/object_events/pics/pokemon/zapdos.4bpp"); +const u32 gObjectEventPic_Moltres[] = INCBIN_U32("graphics/object_events/pics/pokemon/moltres.4bpp"); +const u32 gObjectEventPic_Dratini[] = INCBIN_U32("graphics/object_events/pics/pokemon/dratini.4bpp"); +const u32 gObjectEventPic_Dragonair[] = INCBIN_U32("graphics/object_events/pics/pokemon/dragonair.4bpp"); +const u32 gObjectEventPic_Dragonite[] = INCBIN_U32("graphics/object_events/pics/pokemon/dragonite.4bpp"); +const u32 gObjectEventPic_Mewtwo[] = INCBIN_U32("graphics/object_events/pics/pokemon/mewtwo.4bpp"); +const u32 gObjectEventPic_Mew[] = INCBIN_U32("graphics/object_events/pics/pokemon/mew.4bpp"); +const u32 gObjectEventPic_Chikorita[] = INCBIN_U32("graphics/object_events/pics/pokemon/chikorita.4bpp"); +const u32 gObjectEventPic_Bayleef[] = INCBIN_U32("graphics/object_events/pics/pokemon/bayleef.4bpp"); +const u32 gObjectEventPic_Meganium[] = INCBIN_U32("graphics/object_events/pics/pokemon/meganium.4bpp"); +const u32 gObjectEventPic_Cyndaquil[] = INCBIN_U32("graphics/object_events/pics/pokemon/cyndaquil.4bpp"); +const u32 gObjectEventPic_Quilava[] = INCBIN_U32("graphics/object_events/pics/pokemon/quilava.4bpp"); +const u32 gObjectEventPic_Typhlosion[] = INCBIN_U32("graphics/object_events/pics/pokemon/typhlosion.4bpp"); +const u32 gObjectEventPic_Totodile[] = INCBIN_U32("graphics/object_events/pics/pokemon/totodile.4bpp"); +const u32 gObjectEventPic_Croconaw[] = INCBIN_U32("graphics/object_events/pics/pokemon/croconaw.4bpp"); +const u32 gObjectEventPic_Feraligatr[] = INCBIN_U32("graphics/object_events/pics/pokemon/feraligatr.4bpp"); +const u32 gObjectEventPic_Sentret[] = INCBIN_U32("graphics/object_events/pics/pokemon/sentret.4bpp"); +const u32 gObjectEventPic_Furret[] = INCBIN_U32("graphics/object_events/pics/pokemon/furret.4bpp"); +const u32 gObjectEventPic_Hoothoot[] = INCBIN_U32("graphics/object_events/pics/pokemon/hoothoot.4bpp"); +const u32 gObjectEventPic_Noctowl[] = INCBIN_U32("graphics/object_events/pics/pokemon/noctowl.4bpp"); +const u32 gObjectEventPic_Ledyba[] = INCBIN_U32("graphics/object_events/pics/pokemon/ledyba.4bpp"); +const u32 gObjectEventPic_Ledian[] = INCBIN_U32("graphics/object_events/pics/pokemon/ledian.4bpp"); +const u32 gObjectEventPic_Spinarak[] = INCBIN_U32("graphics/object_events/pics/pokemon/spinarak.4bpp"); +const u32 gObjectEventPic_Ariados[] = INCBIN_U32("graphics/object_events/pics/pokemon/ariados.4bpp"); +const u32 gObjectEventPic_Crobat[] = INCBIN_U32("graphics/object_events/pics/pokemon/crobat.4bpp"); +const u32 gObjectEventPic_Chinchou[] = INCBIN_U32("graphics/object_events/pics/pokemon/chinchou.4bpp"); +const u32 gObjectEventPic_Lanturn[] = INCBIN_U32("graphics/object_events/pics/pokemon/lanturn.4bpp"); +const u32 gObjectEventPic_Pichu[] = INCBIN_U32("graphics/object_events/pics/pokemon/pichu.4bpp"); +const u32 gObjectEventPic_Cleffa[] = INCBIN_U32("graphics/object_events/pics/pokemon/cleffa.4bpp"); +const u32 gObjectEventPic_Igglybuff[] = INCBIN_U32("graphics/object_events/pics/pokemon/igglybuff.4bpp"); +const u32 gObjectEventPic_Togepi[] = INCBIN_U32("graphics/object_events/pics/pokemon/togepi.4bpp"); +const u32 gObjectEventPic_Togetic[] = INCBIN_U32("graphics/object_events/pics/pokemon/togetic.4bpp"); +const u32 gObjectEventPic_Natu[] = INCBIN_U32("graphics/object_events/pics/pokemon/natu.4bpp"); +const u32 gObjectEventPic_Xatu[] = INCBIN_U32("graphics/object_events/pics/pokemon/xatu.4bpp"); +const u32 gObjectEventPic_Mareep[] = INCBIN_U32("graphics/object_events/pics/pokemon/mareep.4bpp"); +const u32 gObjectEventPic_Flaaffy[] = INCBIN_U32("graphics/object_events/pics/pokemon/flaaffy.4bpp"); +const u32 gObjectEventPic_Ampharos[] = INCBIN_U32("graphics/object_events/pics/pokemon/ampharos.4bpp"); +const u32 gObjectEventPic_Bellossom[] = INCBIN_U32("graphics/object_events/pics/pokemon/bellossom.4bpp"); +const u32 gObjectEventPic_Marill[] = INCBIN_U32("graphics/object_events/pics/pokemon/marill.4bpp"); +const u32 gObjectEventPic_Azumarill[] = INCBIN_U32("graphics/object_events/pics/pokemon/azumarill.4bpp"); +const u32 gObjectEventPic_Sudowoodo[] = INCBIN_U32("graphics/object_events/pics/pokemon/sudowoodo.4bpp"); +const u32 gObjectEventPic_Politoed[] = INCBIN_U32("graphics/object_events/pics/pokemon/politoed.4bpp"); +const u32 gObjectEventPic_Hoppip[] = INCBIN_U32("graphics/object_events/pics/pokemon/hoppip.4bpp"); +const u32 gObjectEventPic_Skiploom[] = INCBIN_U32("graphics/object_events/pics/pokemon/skiploom.4bpp"); +const u32 gObjectEventPic_Jumpluff[] = INCBIN_U32("graphics/object_events/pics/pokemon/jumpluff.4bpp"); +const u32 gObjectEventPic_Aipom[] = INCBIN_U32("graphics/object_events/pics/pokemon/aipom.4bpp"); +const u32 gObjectEventPic_Sunkern[] = INCBIN_U32("graphics/object_events/pics/pokemon/sunkern.4bpp"); +const u32 gObjectEventPic_Sunflora[] = INCBIN_U32("graphics/object_events/pics/pokemon/sunflora.4bpp"); +const u32 gObjectEventPic_Yanma[] = INCBIN_U32("graphics/object_events/pics/pokemon/yanma.4bpp"); +const u32 gObjectEventPic_Wooper[] = INCBIN_U32("graphics/object_events/pics/pokemon/wooper.4bpp"); +const u32 gObjectEventPic_Quagsire[] = INCBIN_U32("graphics/object_events/pics/pokemon/quagsire.4bpp"); +const u32 gObjectEventPic_Espeon[] = INCBIN_U32("graphics/object_events/pics/pokemon/espeon.4bpp"); +const u32 gObjectEventPic_Umbreon[] = INCBIN_U32("graphics/object_events/pics/pokemon/umbreon.4bpp"); +const u32 gObjectEventPic_Murkrow[] = INCBIN_U32("graphics/object_events/pics/pokemon/murkrow.4bpp"); +const u32 gObjectEventPic_Slowking[] = INCBIN_U32("graphics/object_events/pics/pokemon/slowking.4bpp"); +const u32 gObjectEventPic_Misdreavus[] = INCBIN_U32("graphics/object_events/pics/pokemon/misdreavus.4bpp"); +const u32 gObjectEventPic_Unown_A[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_a.4bpp"); +const u32 gObjectEventPic_Unown_B[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_b.4bpp"); +const u32 gObjectEventPic_Unown_C[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_c.4bpp"); +const u32 gObjectEventPic_Unown_D[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_d.4bpp"); +const u32 gObjectEventPic_Unown_E[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_e.4bpp"); +const u32 gObjectEventPic_Unown_F[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_f.4bpp"); +const u32 gObjectEventPic_Unown_G[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_g.4bpp"); +const u32 gObjectEventPic_Unown_H[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_h.4bpp"); +const u32 gObjectEventPic_Unown_I[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_i.4bpp"); +const u32 gObjectEventPic_Unown_J[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_j.4bpp"); +const u32 gObjectEventPic_Unown_K[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_k.4bpp"); +const u32 gObjectEventPic_Unown_L[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_l.4bpp"); +const u32 gObjectEventPic_Unown_M[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_m.4bpp"); +const u32 gObjectEventPic_Unown_N[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_n.4bpp"); +const u32 gObjectEventPic_Unown_O[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_o.4bpp"); +const u32 gObjectEventPic_Unown_P[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_p.4bpp"); +const u32 gObjectEventPic_Unown_Q[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_q.4bpp"); +const u32 gObjectEventPic_Unown_R[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_r.4bpp"); +const u32 gObjectEventPic_Unown_S[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_s.4bpp"); +const u32 gObjectEventPic_Unown_T[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_t.4bpp"); +const u32 gObjectEventPic_Unown_U[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_u.4bpp"); +const u32 gObjectEventPic_Unown_V[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_v.4bpp"); +const u32 gObjectEventPic_Unown_W[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_w.4bpp"); +const u32 gObjectEventPic_Unown_X[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_x.4bpp"); +const u32 gObjectEventPic_Unown_Y[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_y.4bpp"); +const u32 gObjectEventPic_Unown_Z[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_z.4bpp"); +const u32 gObjectEventPic_Unown_Exclamation[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_exclamation.4bpp"); +const u32 gObjectEventPic_Unown_Question[] = INCBIN_U32("graphics/object_events/pics/pokemon/unown_question.4bpp"); +const u32 gObjectEventPic_Wobbuffet[] = INCBIN_U32("graphics/object_events/pics/pokemon/wobbuffet.4bpp"); +const u32 gObjectEventPic_Girafarig[] = INCBIN_U32("graphics/object_events/pics/pokemon/girafarig.4bpp"); +const u32 gObjectEventPic_Pineco[] = INCBIN_U32("graphics/object_events/pics/pokemon/pineco.4bpp"); +const u32 gObjectEventPic_Forretress[] = INCBIN_U32("graphics/object_events/pics/pokemon/forretress.4bpp"); +const u32 gObjectEventPic_Dunsparce[] = INCBIN_U32("graphics/object_events/pics/pokemon/dunsparce.4bpp"); +const u32 gObjectEventPic_Gligar[] = INCBIN_U32("graphics/object_events/pics/pokemon/gligar.4bpp"); +const u32 gObjectEventPic_Steelix[] = INCBIN_U32("graphics/object_events/pics/pokemon/steelix.4bpp"); +const u32 gObjectEventPic_Snubbull[] = INCBIN_U32("graphics/object_events/pics/pokemon/snubbull.4bpp"); +const u32 gObjectEventPic_Granbull[] = INCBIN_U32("graphics/object_events/pics/pokemon/granbull.4bpp"); +const u32 gObjectEventPic_Qwilfish[] = INCBIN_U32("graphics/object_events/pics/pokemon/qwilfish.4bpp"); +const u32 gObjectEventPic_Scizor[] = INCBIN_U32("graphics/object_events/pics/pokemon/scizor.4bpp"); +const u32 gObjectEventPic_Shuckle[] = INCBIN_U32("graphics/object_events/pics/pokemon/shuckle.4bpp"); +const u32 gObjectEventPic_Heracross[] = INCBIN_U32("graphics/object_events/pics/pokemon/heracross.4bpp"); +const u32 gObjectEventPic_Sneasel[] = INCBIN_U32("graphics/object_events/pics/pokemon/sneasel.4bpp"); +const u32 gObjectEventPic_Teddiursa[] = INCBIN_U32("graphics/object_events/pics/pokemon/teddiursa.4bpp"); +const u32 gObjectEventPic_Ursaring[] = INCBIN_U32("graphics/object_events/pics/pokemon/ursaring.4bpp"); +const u32 gObjectEventPic_Slugma[] = INCBIN_U32("graphics/object_events/pics/pokemon/slugma.4bpp"); +const u32 gObjectEventPic_Magcargo[] = INCBIN_U32("graphics/object_events/pics/pokemon/magcargo.4bpp"); +const u32 gObjectEventPic_Swinub[] = INCBIN_U32("graphics/object_events/pics/pokemon/swinub.4bpp"); +const u32 gObjectEventPic_Piloswine[] = INCBIN_U32("graphics/object_events/pics/pokemon/piloswine.4bpp"); +const u32 gObjectEventPic_Corsola[] = INCBIN_U32("graphics/object_events/pics/pokemon/corsola.4bpp"); +const u32 gObjectEventPic_Remoraid[] = INCBIN_U32("graphics/object_events/pics/pokemon/remoraid.4bpp"); +const u32 gObjectEventPic_Octillery[] = INCBIN_U32("graphics/object_events/pics/pokemon/octillery.4bpp"); +const u32 gObjectEventPic_Delibird[] = INCBIN_U32("graphics/object_events/pics/pokemon/delibird.4bpp"); +const u32 gObjectEventPic_Mantine[] = INCBIN_U32("graphics/object_events/pics/pokemon/mantine.4bpp"); +const u32 gObjectEventPic_Skarmory[] = INCBIN_U32("graphics/object_events/pics/pokemon/skarmory.4bpp"); +const u32 gObjectEventPic_Houndour[] = INCBIN_U32("graphics/object_events/pics/pokemon/houndour.4bpp"); +const u32 gObjectEventPic_Houndoom[] = INCBIN_U32("graphics/object_events/pics/pokemon/houndoom.4bpp"); +const u32 gObjectEventPic_Kingdra[] = INCBIN_U32("graphics/object_events/pics/pokemon/kingdra.4bpp"); +const u32 gObjectEventPic_Phanpy[] = INCBIN_U32("graphics/object_events/pics/pokemon/phanpy.4bpp"); +const u32 gObjectEventPic_Donphan[] = INCBIN_U32("graphics/object_events/pics/pokemon/donphan.4bpp"); +const u32 gObjectEventPic_Porygon2[] = INCBIN_U32("graphics/object_events/pics/pokemon/porygon2.4bpp"); +const u32 gObjectEventPic_Stantler[] = INCBIN_U32("graphics/object_events/pics/pokemon/stantler.4bpp"); +const u32 gObjectEventPic_Smeargle[] = INCBIN_U32("graphics/object_events/pics/pokemon/smeargle.4bpp"); +const u32 gObjectEventPic_Tyrogue[] = INCBIN_U32("graphics/object_events/pics/pokemon/tyrogue.4bpp"); +const u32 gObjectEventPic_Hitmontop[] = INCBIN_U32("graphics/object_events/pics/pokemon/hitmontop.4bpp"); +const u32 gObjectEventPic_Smoochum[] = INCBIN_U32("graphics/object_events/pics/pokemon/smoochum.4bpp"); +const u32 gObjectEventPic_Elekid[] = INCBIN_U32("graphics/object_events/pics/pokemon/elekid.4bpp"); +const u32 gObjectEventPic_Magby[] = INCBIN_U32("graphics/object_events/pics/pokemon/magby.4bpp"); +const u32 gObjectEventPic_Miltank[] = INCBIN_U32("graphics/object_events/pics/pokemon/miltank.4bpp"); +const u32 gObjectEventPic_Blissey[] = INCBIN_U32("graphics/object_events/pics/pokemon/blissey.4bpp"); +const u32 gObjectEventPic_Raikou[] = INCBIN_U32("graphics/object_events/pics/pokemon/raikou.4bpp"); +const u32 gObjectEventPic_Entei[] = INCBIN_U32("graphics/object_events/pics/pokemon/entei.4bpp"); +const u32 gObjectEventPic_Suicune[] = INCBIN_U32("graphics/object_events/pics/pokemon/suicune.4bpp"); +const u32 gObjectEventPic_Larvitar[] = INCBIN_U32("graphics/object_events/pics/pokemon/larvitar.4bpp"); +const u32 gObjectEventPic_Pupitar[] = INCBIN_U32("graphics/object_events/pics/pokemon/pupitar.4bpp"); +const u32 gObjectEventPic_Tyranitar[] = INCBIN_U32("graphics/object_events/pics/pokemon/tyranitar.4bpp"); const u32 gObjectEventPic_Lugia[] = INCBIN_U32("graphics/object_events/pics/pokemon/lugia.4bpp"); +const u32 gObjectEventPic_Ho_oh[] = INCBIN_U32("graphics/object_events/pics/pokemon/ho_oh.4bpp"); +const u32 gObjectEventPic_Celebi[] = INCBIN_U32("graphics/object_events/pics/pokemon/celebi.4bpp"); +const u32 gObjectEventPic_Treecko[] = INCBIN_U32("graphics/object_events/pics/pokemon/treecko.4bpp"); +const u32 gObjectEventPic_Grovyle[] = INCBIN_U32("graphics/object_events/pics/pokemon/grovyle.4bpp"); +const u32 gObjectEventPic_Sceptile[] = INCBIN_U32("graphics/object_events/pics/pokemon/sceptile.4bpp"); +const u32 gObjectEventPic_Torchic[] = INCBIN_U32("graphics/object_events/pics/pokemon/torchic.4bpp"); +const u32 gObjectEventPic_Combusken[] = INCBIN_U32("graphics/object_events/pics/pokemon/combusken.4bpp"); +const u32 gObjectEventPic_Blaziken[] = INCBIN_U32("graphics/object_events/pics/pokemon/blaziken.4bpp"); +const u32 gObjectEventPic_Mudkip[] = INCBIN_U32("graphics/object_events/pics/pokemon/mudkip.4bpp"); +const u32 gObjectEventPic_Marshtomp[] = INCBIN_U32("graphics/object_events/pics/pokemon/marshtomp.4bpp"); +const u32 gObjectEventPic_Swampert[] = INCBIN_U32("graphics/object_events/pics/pokemon/swampert.4bpp"); +const u32 gObjectEventPic_Poochyena[] = INCBIN_U32("graphics/object_events/pics/pokemon/poochyena.4bpp"); +const u32 gObjectEventPic_Mightyena[] = INCBIN_U32("graphics/object_events/pics/pokemon/mightyena.4bpp"); +const u32 gObjectEventPic_Zigzagoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/zigzagoon.4bpp"); +const u32 gObjectEventPic_Linoone[] = INCBIN_U32("graphics/object_events/pics/pokemon/linoone.4bpp"); +const u32 gObjectEventPic_Wurmple[] = INCBIN_U32("graphics/object_events/pics/pokemon/wurmple.4bpp"); +const u32 gObjectEventPic_Silcoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/silcoon.4bpp"); +const u32 gObjectEventPic_Beautifly[] = INCBIN_U32("graphics/object_events/pics/pokemon/beautifly.4bpp"); +const u32 gObjectEventPic_Cascoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/cascoon.4bpp"); +const u32 gObjectEventPic_Dustox[] = INCBIN_U32("graphics/object_events/pics/pokemon/dustox.4bpp"); +const u32 gObjectEventPic_Lotad[] = INCBIN_U32("graphics/object_events/pics/pokemon/lotad.4bpp"); +const u32 gObjectEventPic_Lombre[] = INCBIN_U32("graphics/object_events/pics/pokemon/lombre.4bpp"); +const u32 gObjectEventPic_Ludicolo[] = INCBIN_U32("graphics/object_events/pics/pokemon/ludicolo.4bpp"); +const u32 gObjectEventPic_Seedot[] = INCBIN_U32("graphics/object_events/pics/pokemon/seedot.4bpp"); +const u32 gObjectEventPic_Nuzleaf[] = INCBIN_U32("graphics/object_events/pics/pokemon/nuzleaf.4bpp"); +const u32 gObjectEventPic_Shiftry[] = INCBIN_U32("graphics/object_events/pics/pokemon/shiftry.4bpp"); +const u32 gObjectEventPic_Taillow[] = INCBIN_U32("graphics/object_events/pics/pokemon/taillow.4bpp"); +const u32 gObjectEventPic_Swellow[] = INCBIN_U32("graphics/object_events/pics/pokemon/swellow.4bpp"); +const u32 gObjectEventPic_Wingull[] = INCBIN_U32("graphics/object_events/pics/pokemon/wingull.4bpp"); +const u32 gObjectEventPic_Pelipper[] = INCBIN_U32("graphics/object_events/pics/pokemon/pelipper.4bpp"); +const u32 gObjectEventPic_Ralts[] = INCBIN_U32("graphics/object_events/pics/pokemon/ralts.4bpp"); +const u32 gObjectEventPic_Kirlia[] = INCBIN_U32("graphics/object_events/pics/pokemon/kirlia.4bpp"); +const u32 gObjectEventPic_Gardevoir[] = INCBIN_U32("graphics/object_events/pics/pokemon/gardevoir.4bpp"); +const u32 gObjectEventPic_Surskit[] = INCBIN_U32("graphics/object_events/pics/pokemon/surskit.4bpp"); +const u32 gObjectEventPic_Masquerain[] = INCBIN_U32("graphics/object_events/pics/pokemon/masquerain.4bpp"); +const u32 gObjectEventPic_Shroomish[] = INCBIN_U32("graphics/object_events/pics/pokemon/shroomish.4bpp"); +const u32 gObjectEventPic_Breloom[] = INCBIN_U32("graphics/object_events/pics/pokemon/breloom.4bpp"); +const u32 gObjectEventPic_Slakoth[] = INCBIN_U32("graphics/object_events/pics/pokemon/slakoth.4bpp"); +const u32 gObjectEventPic_Vigoroth[] = INCBIN_U32("graphics/object_events/pics/pokemon/vigoroth.4bpp"); +const u32 gObjectEventPic_Slaking[] = INCBIN_U32("graphics/object_events/pics/pokemon/slaking.4bpp"); +const u32 gObjectEventPic_Nincada[] = INCBIN_U32("graphics/object_events/pics/pokemon/nincada.4bpp"); +const u32 gObjectEventPic_Ninjask[] = INCBIN_U32("graphics/object_events/pics/pokemon/ninjask.4bpp"); +const u32 gObjectEventPic_Shedinja[] = INCBIN_U32("graphics/object_events/pics/pokemon/shedinja.4bpp"); +const u32 gObjectEventPic_Whismur[] = INCBIN_U32("graphics/object_events/pics/pokemon/whismur.4bpp"); +const u32 gObjectEventPic_Loudred[] = INCBIN_U32("graphics/object_events/pics/pokemon/loudred.4bpp"); +const u32 gObjectEventPic_Exploud[] = INCBIN_U32("graphics/object_events/pics/pokemon/exploud.4bpp"); +const u32 gObjectEventPic_Makuhita[] = INCBIN_U32("graphics/object_events/pics/pokemon/makuhita.4bpp"); +const u32 gObjectEventPic_Hariyama[] = INCBIN_U32("graphics/object_events/pics/pokemon/hariyama.4bpp"); +const u32 gObjectEventPic_Azurill[] = INCBIN_U32("graphics/object_events/pics/pokemon/azurill.4bpp"); +const u32 gObjectEventPic_Nosepass[] = INCBIN_U32("graphics/object_events/pics/pokemon/nosepass.4bpp"); +const u32 gObjectEventPic_Skitty[] = INCBIN_U32("graphics/object_events/pics/pokemon/skitty.4bpp"); +const u32 gObjectEventPic_Delcatty[] = INCBIN_U32("graphics/object_events/pics/pokemon/delcatty.4bpp"); +const u32 gObjectEventPic_Sableye[] = INCBIN_U32("graphics/object_events/pics/pokemon/sableye.4bpp"); +const u32 gObjectEventPic_Mawile[] = INCBIN_U32("graphics/object_events/pics/pokemon/mawile.4bpp"); +const u32 gObjectEventPic_Aron[] = INCBIN_U32("graphics/object_events/pics/pokemon/aron.4bpp"); +const u32 gObjectEventPic_Lairon[] = INCBIN_U32("graphics/object_events/pics/pokemon/lairon.4bpp"); +const u32 gObjectEventPic_Aggron[] = INCBIN_U32("graphics/object_events/pics/pokemon/aggron.4bpp"); +const u32 gObjectEventPic_Meditite[] = INCBIN_U32("graphics/object_events/pics/pokemon/meditite.4bpp"); +const u32 gObjectEventPic_Medicham[] = INCBIN_U32("graphics/object_events/pics/pokemon/medicham.4bpp"); +const u32 gObjectEventPic_Electrike[] = INCBIN_U32("graphics/object_events/pics/pokemon/electrike.4bpp"); +const u32 gObjectEventPic_Manectric[] = INCBIN_U32("graphics/object_events/pics/pokemon/manectric.4bpp"); +const u32 gObjectEventPic_Plusle[] = INCBIN_U32("graphics/object_events/pics/pokemon/plusle.4bpp"); +const u32 gObjectEventPic_Minun[] = INCBIN_U32("graphics/object_events/pics/pokemon/minun.4bpp"); +const u32 gObjectEventPic_Volbeat[] = INCBIN_U32("graphics/object_events/pics/pokemon/volbeat.4bpp"); +const u32 gObjectEventPic_Illumise[] = INCBIN_U32("graphics/object_events/pics/pokemon/illumise.4bpp"); +const u32 gObjectEventPic_Roselia[] = INCBIN_U32("graphics/object_events/pics/pokemon/roselia.4bpp"); +const u32 gObjectEventPic_Gulpin[] = INCBIN_U32("graphics/object_events/pics/pokemon/gulpin.4bpp"); +const u32 gObjectEventPic_Swalot[] = INCBIN_U32("graphics/object_events/pics/pokemon/swalot.4bpp"); +const u32 gObjectEventPic_Carvanha[] = INCBIN_U32("graphics/object_events/pics/pokemon/carvanha.4bpp"); +const u32 gObjectEventPic_Sharpedo[] = INCBIN_U32("graphics/object_events/pics/pokemon/sharpedo.4bpp"); +const u32 gObjectEventPic_Wailmer[] = INCBIN_U32("graphics/object_events/pics/pokemon/wailmer.4bpp"); +const u32 gObjectEventPic_Wailord[] = INCBIN_U32("graphics/object_events/pics/pokemon/wailord.4bpp"); +const u32 gObjectEventPic_Numel[] = INCBIN_U32("graphics/object_events/pics/pokemon/numel.4bpp"); +const u32 gObjectEventPic_Camerupt[] = INCBIN_U32("graphics/object_events/pics/pokemon/camerupt.4bpp"); +const u32 gObjectEventPic_Torkoal[] = INCBIN_U32("graphics/object_events/pics/pokemon/torkoal.4bpp"); +const u32 gObjectEventPic_Spoink[] = INCBIN_U32("graphics/object_events/pics/pokemon/spoink.4bpp"); +const u32 gObjectEventPic_Grumpig[] = INCBIN_U32("graphics/object_events/pics/pokemon/grumpig.4bpp"); +const u32 gObjectEventPic_Spinda[] = INCBIN_U32("graphics/object_events/pics/pokemon/spinda.4bpp"); +const u32 gObjectEventPic_Trapinch[] = INCBIN_U32("graphics/object_events/pics/pokemon/trapinch.4bpp"); +const u32 gObjectEventPic_Vibrava[] = INCBIN_U32("graphics/object_events/pics/pokemon/vibrava.4bpp"); +const u32 gObjectEventPic_Flygon[] = INCBIN_U32("graphics/object_events/pics/pokemon/flygon.4bpp"); +const u32 gObjectEventPic_Cacnea[] = INCBIN_U32("graphics/object_events/pics/pokemon/cacnea.4bpp"); +const u32 gObjectEventPic_Cacturne[] = INCBIN_U32("graphics/object_events/pics/pokemon/cacturne.4bpp"); +const u32 gObjectEventPic_Swablu[] = INCBIN_U32("graphics/object_events/pics/pokemon/swablu.4bpp"); +const u32 gObjectEventPic_Altaria[] = INCBIN_U32("graphics/object_events/pics/pokemon/altaria.4bpp"); +const u32 gObjectEventPic_Zangoose[] = INCBIN_U32("graphics/object_events/pics/pokemon/zangoose.4bpp"); +const u32 gObjectEventPic_Seviper[] = INCBIN_U32("graphics/object_events/pics/pokemon/seviper.4bpp"); +const u32 gObjectEventPic_Lunatone[] = INCBIN_U32("graphics/object_events/pics/pokemon/lunatone.4bpp"); +const u32 gObjectEventPic_Solrock[] = INCBIN_U32("graphics/object_events/pics/pokemon/solrock.4bpp"); +const u32 gObjectEventPic_Barboach[] = INCBIN_U32("graphics/object_events/pics/pokemon/barboach.4bpp"); +const u32 gObjectEventPic_Whiscash[] = INCBIN_U32("graphics/object_events/pics/pokemon/whiscash.4bpp"); +const u32 gObjectEventPic_Corphish[] = INCBIN_U32("graphics/object_events/pics/pokemon/corphish.4bpp"); +const u32 gObjectEventPic_Crawdaunt[] = INCBIN_U32("graphics/object_events/pics/pokemon/crawdaunt.4bpp"); +const u32 gObjectEventPic_Baltoy[] = INCBIN_U32("graphics/object_events/pics/pokemon/baltoy.4bpp"); +const u32 gObjectEventPic_Claydol[] = INCBIN_U32("graphics/object_events/pics/pokemon/claydol.4bpp"); +const u32 gObjectEventPic_Lileep[] = INCBIN_U32("graphics/object_events/pics/pokemon/lileep.4bpp"); +const u32 gObjectEventPic_Cradily[] = INCBIN_U32("graphics/object_events/pics/pokemon/cradily.4bpp"); +const u32 gObjectEventPic_Anorith[] = INCBIN_U32("graphics/object_events/pics/pokemon/anorith.4bpp"); +const u32 gObjectEventPic_Armaldo[] = INCBIN_U32("graphics/object_events/pics/pokemon/armaldo.4bpp"); +const u32 gObjectEventPic_Feebas[] = INCBIN_U32("graphics/object_events/pics/pokemon/feebas.4bpp"); +const u32 gObjectEventPic_Milotic[] = INCBIN_U32("graphics/object_events/pics/pokemon/milotic.4bpp"); +const u32 gObjectEventPic_Castform[] = INCBIN_U32("graphics/object_events/pics/pokemon/castform.4bpp"); +const u32 gObjectEventPic_CastformSunny[] = INCBIN_U32("graphics/object_events/pics/pokemon/castform_sunny.4bpp"); +const u16 gObjectEventPal_CastformSunny[] = INCBIN_U16("graphics/pokemon/castform/normal_sunny_form.gbapal"); +const u32 gObjectEventPic_CastformRainy[] = INCBIN_U32("graphics/object_events/pics/pokemon/castform_rainy.4bpp"); +const u16 gObjectEventPal_CastformRainy[] = INCBIN_U16("graphics/pokemon/castform/normal_rainy_form.gbapal"); +const u32 gObjectEventPic_CastformSnowy[] = INCBIN_U32("graphics/object_events/pics/pokemon/castform_snowy.4bpp"); +const u16 gObjectEventPal_CastformSnowy[] = INCBIN_U16("graphics/pokemon/castform/normal_snowy_form.gbapal"); +const u32 gObjectEventPic_Kecleon[] = INCBIN_U32("graphics/object_events/pics/pokemon/kecleon.4bpp"); +const u32 gObjectEventPic_Shuppet[] = INCBIN_U32("graphics/object_events/pics/pokemon/shuppet.4bpp"); +const u32 gObjectEventPic_Banette[] = INCBIN_U32("graphics/object_events/pics/pokemon/banette.4bpp"); +const u32 gObjectEventPic_Duskull[] = INCBIN_U32("graphics/object_events/pics/pokemon/duskull.4bpp"); +const u32 gObjectEventPic_Dusclops[] = INCBIN_U32("graphics/object_events/pics/pokemon/dusclops.4bpp"); +const u32 gObjectEventPic_Tropius[] = INCBIN_U32("graphics/object_events/pics/pokemon/tropius.4bpp"); +const u32 gObjectEventPic_Chimecho[] = INCBIN_U32("graphics/object_events/pics/pokemon/chimecho.4bpp"); +const u32 gObjectEventPic_Absol[] = INCBIN_U32("graphics/object_events/pics/pokemon/absol.4bpp"); +const u32 gObjectEventPic_Wynaut[] = INCBIN_U32("graphics/object_events/pics/pokemon/wynaut.4bpp"); +const u32 gObjectEventPic_Snorunt[] = INCBIN_U32("graphics/object_events/pics/pokemon/snorunt.4bpp"); +const u32 gObjectEventPic_Glalie[] = INCBIN_U32("graphics/object_events/pics/pokemon/glalie.4bpp"); +const u32 gObjectEventPic_Spheal[] = INCBIN_U32("graphics/object_events/pics/pokemon/spheal.4bpp"); +const u32 gObjectEventPic_Sealeo[] = INCBIN_U32("graphics/object_events/pics/pokemon/sealeo.4bpp"); +const u32 gObjectEventPic_Walrein[] = INCBIN_U32("graphics/object_events/pics/pokemon/walrein.4bpp"); +const u32 gObjectEventPic_Clamperl[] = INCBIN_U32("graphics/object_events/pics/pokemon/clamperl.4bpp"); +const u32 gObjectEventPic_Huntail[] = INCBIN_U32("graphics/object_events/pics/pokemon/huntail.4bpp"); +const u32 gObjectEventPic_Gorebyss[] = INCBIN_U32("graphics/object_events/pics/pokemon/gorebyss.4bpp"); +const u32 gObjectEventPic_Relicanth[] = INCBIN_U32("graphics/object_events/pics/pokemon/relicanth.4bpp"); +const u32 gObjectEventPic_Luvdisc[] = INCBIN_U32("graphics/object_events/pics/pokemon/luvdisc.4bpp"); +const u32 gObjectEventPic_Bagon[] = INCBIN_U32("graphics/object_events/pics/pokemon/bagon.4bpp"); +const u32 gObjectEventPic_Shelgon[] = INCBIN_U32("graphics/object_events/pics/pokemon/shelgon.4bpp"); +const u32 gObjectEventPic_Salamence[] = INCBIN_U32("graphics/object_events/pics/pokemon/salamence.4bpp"); +const u32 gObjectEventPic_Beldum[] = INCBIN_U32("graphics/object_events/pics/pokemon/beldum.4bpp"); +const u32 gObjectEventPic_Metang[] = INCBIN_U32("graphics/object_events/pics/pokemon/metang.4bpp"); +const u32 gObjectEventPic_Metagross[] = INCBIN_U32("graphics/object_events/pics/pokemon/metagross.4bpp"); +const u32 gObjectEventPic_Regirock[] = INCBIN_U32("graphics/object_events/pics/pokemon/regirock.4bpp"); +const u32 gObjectEventPic_Regice[] = INCBIN_U32("graphics/object_events/pics/pokemon/regice.4bpp"); +const u32 gObjectEventPic_Registeel[] = INCBIN_U32("graphics/object_events/pics/pokemon/registeel.4bpp"); +const u32 gObjectEventPic_Latias[] = INCBIN_U32("graphics/object_events/pics/pokemon/latias.4bpp"); +const u32 gObjectEventPic_Latios[] = INCBIN_U32("graphics/object_events/pics/pokemon/latios.4bpp"); +const u32 gObjectEventPic_Kyogre[] = INCBIN_U32("graphics/object_events/pics/pokemon/kyogre.4bpp"); +const u32 gObjectEventPic_Groudon[] = INCBIN_U32("graphics/object_events/pics/pokemon/groudon.4bpp"); +const u32 gObjectEventPic_Rayquaza[] = INCBIN_U32("graphics/object_events/pics/pokemon/rayquaza.4bpp"); +const u32 gObjectEventPic_Jirachi[] = INCBIN_U32("graphics/object_events/pics/pokemon/jirachi.4bpp"); +const u32 gObjectEventPic_Deoxys[] = INCBIN_U32("graphics/object_events/pics/pokemon/deoxys.4bpp"); +const u32 gObjectEventPic_Ambipom[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/ambipom.4bpp"); +const u32 gObjectEventPic_Arceus[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/arceus.4bpp"); +const u32 gObjectEventPic_Budew[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/budew.4bpp"); +const u32 gObjectEventPic_Bonsly[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/bonsly.4bpp"); +const u32 gObjectEventPic_Chingling[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/chingling.4bpp"); +const u32 gObjectEventPic_Deoxys_A[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/deoxys_attack.4bpp"); +const u32 gObjectEventPic_Deoxys_D[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/deoxys_defense.4bpp"); +const u32 gObjectEventPic_Deoxys_S[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/deoxys_speed.4bpp"); +const u32 gObjectEventPic_Dusknoir[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/dusknoir.4bpp"); +const u32 gObjectEventPic_Electivire[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/electivire.4bpp"); +const u32 gObjectEventPic_Froslass[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/froslass.4bpp"); +const u32 gObjectEventPic_Gallade[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gallade.4bpp"); +const u32 gObjectEventPic_Glaceon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/glaceon.4bpp"); +const u32 gObjectEventPic_Gliscor[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/gliscor.4bpp"); +const u32 gObjectEventPic_Happiny[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/happiny.4bpp"); +const u32 gObjectEventPic_Honchkrow[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/honchkrow.4bpp"); +const u32 gObjectEventPic_Leafeon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/leafeon.4bpp"); +const u32 gObjectEventPic_Lickilicky[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/lickilicky.4bpp"); +const u32 gObjectEventPic_Magmortar[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magmortar.4bpp"); +const u32 gObjectEventPic_Magnezone[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/magnezone.4bpp"); +const u32 gObjectEventPic_Mamoswine[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mamoswine.4bpp"); +const u32 gObjectEventPic_Mantyke[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mantyke.4bpp"); +const u32 gObjectEventPic_Mismagius[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mismagius.4bpp"); +const u32 gObjectEventPic_MimeJr[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/mimejr.4bpp"); +const u32 gObjectEventPic_Munchlax[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/munchlax.4bpp"); +const u32 gObjectEventPic_PorygonZ[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/porygonz.4bpp"); +const u32 gObjectEventPic_Probopass[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/probopass.4bpp"); +const u32 gObjectEventPic_Regidrago[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/regidrago.4bpp"); +const u32 gObjectEventPic_Regieleki[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/regieleki.4bpp"); +const u32 gObjectEventPic_Regigigas[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/regigigas.4bpp"); +const u32 gObjectEventPic_Rhyperior[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/rhyperior.4bpp"); +const u32 gObjectEventPic_Roserade[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/roserade.4bpp"); +const u32 gObjectEventPic_Sylveon[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/sylveon.4bpp"); +const u32 gObjectEventPic_Tangrowth[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/tangrowth.4bpp"); +const u32 gObjectEventPic_Togekiss[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/togekiss.4bpp"); +const u32 gObjectEventPic_Weavile[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/weavile.4bpp"); +const u32 gObjectEventPic_Yanmega[] = INCBIN_U32("graphics/object_events/pics/pokemon/followers/yanmega.4bpp"); + +const u16 gObjectEventPal_Rayquaza[] = INCBIN_U16("graphics/object_events/pics/pokemon/rayquaza.gbapal"); + +const u32 gObjectEventPic_DeoxysOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/deoxys_old.4bpp"); +const u32 gObjectEventPic_MewOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/mew_old.4bpp"); +const u32 gObjectEventPic_DusclopsOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/dusclops_old.4bpp"); +const u32 gObjectEventPic_KirliaOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/kirlia_old.4bpp"); +const u32 gObjectEventPic_AzurillOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/azurill_old.4bpp"); +const u32 gObjectEventPic_KecleonOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/kecleon_old.4bpp"); +const u32 gObjectEventPic_WingullOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/wingull_old.4bpp"); +const u32 gObjectEventPic_AzumarillOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/azumarill_old.4bpp"); +const u32 gObjectEventPic_PikachuOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/pikachu_old.4bpp"); +const u32 gObjectEventPic_ZigzagoonOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/zigzagoon_old.4bpp"); +const u32 gObjectEventPic_SkittyOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/skitty_old.4bpp"); +const u32 gObjectEventPic_PoochyenaOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/poochyena_old.4bpp"); +const u32 gObjectEventPic_LugiaOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/lugia_old.4bpp"); +const u32 gObjectEventPic_HoOhOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/ho_oh_old.4bpp"); +const u32 gObjectEventPic_GroudonOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/groudon_old.4bpp"); +const u32 gObjectEventPic_KyogreOld[] = INCBIN_U32("graphics/object_events/pics/pokemon/kyogre_old.4bpp"); + +const u32 gObjectEventPic_VigorothMover[] = INCBIN_U32("graphics/object_events/pics/pokemon/vigoroth_mover.4bpp"); +const u32 gObjectEventPic_SudowoodoTree[] = INCBIN_U32("graphics/object_events/pics/pokemon/sudowoodo_tree.4bpp"); +const u32 gObjectEventPic_RayquazaCutscene[] = INCBIN_U32("graphics/object_events/pics/pokemon/rayquaza_cutscene.4bpp"); + +const u16 gObjectEventPal_HoOh[] = INCBIN_U16("graphics/object_events/palettes/ho_oh.gbapal"); const u16 gObjectEventPal_Lugia[] = INCBIN_U16("graphics/object_events/palettes/lugia.gbapal"); -const u32 gObjectEventPic_HoOh[] = INCBIN_U32("graphics/object_events/pics/pokemon/ho_oh.4bpp"); -const u16 gObjectEventPal_HoOh[] = INCBIN_U16("graphics/object_events/palettes/ho_oh.gbapal"); \ No newline at end of file + +const u16 gObjectEventPaletteLight[] = INCBIN_U16("graphics/object_events/palettes/light.gbapal"); +const u16 gObjectEventPaletteLight2[] = INCBIN_U16("graphics/object_events/palettes/light2.gbapal"); +const u16 gObjectEventPaletteEmotes[] = INCBIN_U16("graphics/misc/emotes.gbapal"); +const u16 gObjectEventPaletteNeonLight[] = INCBIN_U16("graphics/object_events/palettes/neon_light.gbapal"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 08589ad2b..e1098dc0e 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -1,4654 +1,249 @@ -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_BrendanMayNormal, - .images = sPicTable_BrendanNormal, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_BIKE_TIRE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_BrendanMachBike, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_BIKE_TIRE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_AcroBike, - .images = sPicTable_BrendanAcroBike, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Surfing, - .images = sPicTable_BrendanSurfing, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_FieldMove, - .images = sPicTable_BrendanFieldMove, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_L, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_QuintyPlump, - .images = sPicTable_QuintyPlump, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_NinjaBoy, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Twin, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Boy1, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Girl1, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Boy2, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Girl2, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_LittleBoy, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_LittleGirl, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Boy3, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Girl3, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_RichBoy, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Woman1, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_FatMan, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_PokefanF, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Man1, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Woman2, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_ExpertM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_ExpertF, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Man2, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Woman3, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_PokefanM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Woman4, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Cook, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_LinkReceptionist, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_OldMan, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_OldWoman, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Camper, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Picnicker, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Man3, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Woman5, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Youngster, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_BugCatcher, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_PsychicM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_SchoolKidM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Maniac, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_HexManiac, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RayquazaStill = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 2048, - .width = 64, - .height = 64, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_64x64, - .subspriteTables = sOamTables_64x64, - .anims = sAnimTable_Standard, - .images = sPicTable_RayquazaStill, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_SwimmerM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_SwimmerF, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_BlackBelt, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Beauty, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Scientist1, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Lass, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Gentleman, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Sailor, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Fisherman, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_RunningTriathleteM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_RunningTriathleteF, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_TuberF, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_TuberM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Hiker, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_BIKE_TIRE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_AcroBike, - .images = sPicTable_CyclingTriathleteM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_BIKE_TIRE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_AcroBike, - .images = sPicTable_CyclingTriathleteF, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Nurse, - .images = sPicTable_Nurse, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_ItemBall, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = NULL, - .anims = sAnimTable_BerryTree, - .images = sPicTable_PechaBerryTree, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_BerryTree, - .images = sPicTable_PechaBerryTree, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_BerryTree, - .images = sPicTable_PechaBerryTree, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_ProfBirch, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Man4, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Man5, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_ReporterM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_ReporterF, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MauvilleOldMan1, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MauvilleOldMan1, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MauvilleOldMan1, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MauvilleOldMan2, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MauvilleOldMan2, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MauvilleOldMan2, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MauvilleOldMan2, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_UnusedNatuDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_UnusedMagnemiteDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_UnusedSquirtleDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_UnusedWooperDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_UnusedPikachuDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_UnusedPorygon2Doll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_CuttableTree, - .images = sPicTable_CuttableTree, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MartEmployee, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_RooftopSaleWoman, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Teala, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_BreakableRock, - .images = sPicTable_BreakableRock, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_PushableBoulder, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MrBrineysBoat, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_BrendanMayNormal, - .images = sPicTable_MayNormal, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_BIKE_TIRE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MayMachBike, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_BIKE_TIRE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_AcroBike, - .images = sPicTable_MayAcroBike, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Surfing, - .images = sPicTable_MaySurfing, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_FieldMove, - .images = sPicTable_MayFieldMove, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_TRUCK, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 1152, - .width = 48, - .height = 48, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_48x48, - .anims = sAnimTable_Inanimate, - .images = sPicTable_Truck, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_VIGOROTH, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_VigorothCarryingBox, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_VIGOROTH, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_VigorothFacingAway, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BirchsBag, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_ZIGZAGOON, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_EnemyZigzagoon, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_POOCHYENA, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Poochyena, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Artist, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_BrendanMayNormal, - .images = sPicTable_BrendanNormal, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_BIKE_TIRE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_BrendanMachBike, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_BIKE_TIRE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_AcroBike, - .images = sPicTable_BrendanAcroBike, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Surfing, - .images = sPicTable_BrendanSurfing, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_FieldMove, - .images = sPicTable_BrendanFieldMove, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_BrendanMayNormal, - .images = sPicTable_MayNormal, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_BIKE_TIRE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MayMachBike, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_BIKE_TIRE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_AcroBike, - .images = sPicTable_MayAcroBike, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Surfing, - .images = sPicTable_MaySurfing, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_FieldMove, - .images = sPicTable_MayFieldMove, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Cameraman, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_BrendanUnderwater, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MayUnderwater, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MOVING_BOX, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_MovingBox, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_CABLE_CAR, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 2048, - .width = 64, - .height = 64, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_64x64, - .subspriteTables = sOamTables_64x64, - .anims = sAnimTable_Inanimate, - .images = sPicTable_CableCar, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2 = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Scientist2, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_DevonEmployee, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_AquaMemberM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_AquaMemberF, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MagmaMemberM, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MagmaMemberF, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Sidney, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Phoebe, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Glacia, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Drake, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Roxanne, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Brawly, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Wattson, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Flannery, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Norman, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Winona, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Liza, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Tate, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Wallace, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Steven, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Wally, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_RubySapphireLittleBoy, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Fishing, - .images = sPicTable_BrendanFishing, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Fishing, - .images = sPicTable_MayFishing, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_HotSpringsOldWoman, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_SSTIDAL, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 1920, - .width = 96, - .height = 40, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_8x8, - .subspriteTables = sOamTables_96x40, - .anims = sAnimTable_Standard, - .images = sPicTable_SSTidal, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 1408, - .width = 88, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_8x8, - .subspriteTables = sOamTables_88x32, - .anims = sAnimTable_Standard, - .images = sPicTable_SubmarineShadow, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_PichuDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_PikachuDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_MarillDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_TogepiDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_CyndaquilDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_ChikoritaDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_TotodileDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_JigglypuffDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_MeowthDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_ClefairyDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_DittoDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_SmoochumDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_TreeckoDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_TorchicDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_MudkipDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_DuskullDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_WynautDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BaltoyDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_KecleonDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_AzurillDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_SkittyDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_SwabluDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_GulpinDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_LotadDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_SeedotDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_PikaCushion, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_RoundCushion, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_KissCushion, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_ZigzagCushion, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_SpinCushion, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_DiamondCushion, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BallCushion, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_GrassCushion, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_FireCushion, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_WaterCushion, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BigSnorlaxDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BigRhydonDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BigLaprasDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BigVenusaurDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BigCharizardDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BigBlastoiseDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BigWailmerDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BigRegirockDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BigRegiceDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BigRegisteelDoll, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_LatiasLatios, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_LatiasLatios, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_GameboyKid, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_ContestJudge, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_BrendanWatering, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_PLAYER, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MayWatering, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BrendanDecorating, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_MayDecorating, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Archie, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Maxie, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreFront = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_KyogreFront, - .affineAnims = sAffineAnimTable_KyogreGroudon, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonFront = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_GroudonFront, - .affineAnims = sAffineAnimTable_KyogreGroudon, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreSide = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_KyogreSide, - .affineAnims = sAffineAnimTable_KyogreGroudon, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonSide = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_GroudonSide, - .images = sPicTable_GroudonSide, - .affineAnims = sAffineAnimTable_KyogreGroudon, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_Fossil, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Regi, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Regi, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Regi, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_Skitty, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_Kecleon, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreAsleep = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_KYOGRE, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_KyogreFront, - .affineAnims = sAffineAnimTable_KyogreGroudon, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonAsleep = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_GROUDON, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_GroudonFront, - .affineAnims = sAffineAnimTable_KyogreGroudon, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 2048, - .width = 64, - .height = 64, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_64x64, - .subspriteTables = sOamTables_64x64, - .anims = sAnimTable_Rayquaza, - .images = sPicTable_Rayquaza, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_Zigzagoon, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_Pikachu, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_Azumarill, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_Wingull, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_Kecleon, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_2, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_TuberMSwimming, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Standard, - .images = sPicTable_Azurill, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Mom, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_BrendanMayNormal, - .images = sPicTable_BrendanNormal, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_BrendanMayNormal, - .images = sPicTable_MayNormal, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Juan, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Scott, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_MysteryEventDeliveryman, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_Statue, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Kirlia, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Dusclops, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_UnionRoomAttendant, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_RED_LEAF, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Red, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_RED_LEAF, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Leaf, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Sudowoodo, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Mew, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_DEOXYS, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Deoxys, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Inanimate, - .images = sPicTable_BirthIslandStone, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Anabel, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Tucker, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Greta, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_1, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Spenser, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Noland, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_4, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_4, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Lucy, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Brandon, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_RS_BRENDAN, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_RubySapphireBrendan, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_RS_MAY, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 256, - .width = 16, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_16x32, - .subspriteTables = sOamTables_16x32, - .anims = sAnimTable_Standard, - .images = sPicTable_RubySapphireMay, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_LUGIA, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_Standard, - .images = sPicTable_Lugia, - .affineAnims = gDummySpriteAffineAnimTable, -}; - -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_HO_OH, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 512, - .width = 32, - .height = 32, - .paletteSlot = PALSLOT_NPC_SPECIAL, - .shadowSize = SHADOW_SIZE_M, - .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_FOOT, - .oam = &gObjectEventBaseOam_32x32, - .subspriteTables = sOamTables_32x32, - .anims = sAnimTable_HoOh, - .images = sPicTable_HoOh, - .affineAnims = gDummySpriteAffineAnimTable, -}; \ No newline at end of file +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_BrendanMachBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Surfing, sPicTable_BrendanSurfing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_FieldMove, sPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump = {TAG_NONE, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_QuintyPlump, sPicTable_QuintyPlump, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_NinjaBoy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Twin, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Boy1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Girl1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Boy2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Girl2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_LittleBoy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_LittleGirl, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Boy3, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Girl3, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RichBoy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Woman1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_FatMan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_PokefanF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Man1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Woman2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ExpertM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ExpertF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Man2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Woman3, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_PokefanM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Woman4, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Cook, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_LinkReceptionist, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_OldMan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_OldWoman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Camper, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Picnicker, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Man3, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Woman5, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Youngster, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_BugCatcher, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_PsychicM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_SchoolKidM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Maniac, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_HexManiac, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RayquazaStill = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Standard, sPicTable_RayquazaStill, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_SwimmerM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_SwimmerF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_BlackBelt, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Beauty, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Scientist1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Lass, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Gentleman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Sailor, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Fisherman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_TuberF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_TuberM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Hiker, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Nurse, sPicTable_Nurse, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ItemBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ProfBirch, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Man4, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Man5, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ReporterM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ReporterF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_NONE, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_CuttableTree, sPicTable_CuttableTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MartEmployee, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Teala, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_BreakableRock, sPicTable_BreakableRock, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PushableBoulder, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_MayNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_MayMachBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_MayAcroBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Surfing, sPicTable_MaySurfing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_FieldMove, sPicTable_MayFieldMove, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = {TAG_NONE, OBJ_EVENT_PAL_TAG_TRUCK, OBJ_EVENT_PAL_TAG_NONE, 1152, 48, 48, 10, SHADOW_SIZE_NONE, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_48x48, sAnimTable_Inanimate, sPicTable_Truck, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox = {TAG_NONE, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_VigorothCarryingBox, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway = {TAG_NONE, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_BirchsBag, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = {TAG_NONE, OBJ_EVENT_PAL_TAG_ZIGZAGOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = {TAG_NONE, OBJ_EVENT_PAL_TAG_POOCHYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_PoochyenaOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Artist, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_BrendanMachBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Surfing, sPicTable_BrendanSurfing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_FieldMove, sPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_MayNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_MayMachBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_MayAcroBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Surfing, sPicTable_MaySurfing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_FieldMove, sPicTable_MayFieldMove, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Cameraman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater = {TAG_NONE, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater = {TAG_NONE, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_MayUnderwater, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox = {TAG_NONE, OBJ_EVENT_PAL_TAG_MOVING_BOX, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MovingBox, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar = {TAG_NONE, OBJ_EVENT_PAL_TAG_CABLE_CAR, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Inanimate, sPicTable_CableCar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2 = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Scientist2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_DevonEmployee, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_AquaMemberM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_AquaMemberF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MagmaMemberM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MagmaMemberF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Sidney, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Phoebe, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Glacia, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Drake, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Roxanne, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Brawly, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Wattson, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Flannery, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Norman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Winona, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Liza, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Tate, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Wallace, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Steven, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Wally, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_RubySapphireLittleBoy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Fishing, sPicTable_BrendanFishing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Fishing, sPicTable_MayFishing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = {TAG_NONE, OBJ_EVENT_PAL_TAG_SSTIDAL, OBJ_EVENT_PAL_TAG_NONE, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, sOamTables_96x40, sAnimTable_Standard, sPicTable_SSTidal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = {TAG_NONE, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, OBJ_EVENT_PAL_TAG_NONE, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, sOamTables_88x32, sAnimTable_Standard, sPicTable_SubmarineShadow, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PichuDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PikachuDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MarillDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TogepiDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TotodileDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MeowthDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ClefairyDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DittoDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SmoochumDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TreeckoDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TorchicDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MudkipDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DuskullDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_WynautDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_BaltoyDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_KecleonDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_AzurillDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SkittyDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SwabluDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_GulpinDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LotadDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SeedotDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PikaCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_RoundCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_KissCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ZigzagCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SpinCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DiamondCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_BallCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_GrassCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_FireCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_WaterCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_LatiasLatios, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_LatiasLatios, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_GameboyKid, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ContestJudge, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_BrendanWatering, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_MayWatering, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating = {TAG_NONE, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Inanimate, sPicTable_BrendanDecorating, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Inanimate, sPicTable_MayDecorating, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Archie, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Maxie, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreFront = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_KyogreFront, sAffineAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonFront = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_GroudonFront, sAffineAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreSide = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_KyogreSide, sAffineAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonSide = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_GroudonSide, sPicTable_GroudonSide, sAffineAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_Fossil, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_Regi, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_Regi, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_Regi, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_SkittyOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_KecleonOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreAsleep = {TAG_NONE, OBJ_EVENT_PAL_TAG_KYOGRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_KyogreFront, sAffineAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonAsleep = {TAG_NONE, OBJ_EVENT_PAL_TAG_GROUDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_GroudonFront, sAffineAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_NONE, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Rayquaza, sPicTable_RayquazaCutscene, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_ZigzagoonOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_PikachuOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_AzumarillOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_WingullOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_KecleonOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_TuberMSwimming, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_AzurillOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Mom, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = {TAG_NONE, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_MayNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Juan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Scott, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Inanimate, sPicTable_Statue, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_KirliaOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_DusclopsOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = {TAG_NONE, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Red, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = {TAG_NONE, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Leaf, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_SudowoodoTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MewOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = {TAG_NONE, OBJ_EVENT_PAL_TAG_DEOXYS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_DeoxysOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = {TAG_NONE, OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BirthIslandStone, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Anabel, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Tucker, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Greta, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Spenser, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Noland, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Lucy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Brandon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan = {TAG_NONE, OBJ_EVENT_PAL_TAG_RS_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {TAG_NONE, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RubySapphireMay, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {TAG_NONE, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_LugiaOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {TAG_NONE, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_HoOh, sPicTable_HoOhOld, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall = {TAG_NONE, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Following, sPicTable_AnimatedBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = {TAG_NONE, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Togetic, gDummySpriteAffineAnimTable}; + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallLight = {TAG_NONE, OBJ_EVENT_PAL_TAG_LIGHT, OBJ_EVENT_PAL_TAG_LIGHT_2, 512, 32, 32, 2, SHADOW_SIZE_NONE, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, gFieldEffectObjectPicTable_BallLight, gDummySpriteAffineAnimTable}; diff --git a/src/data/object_events/object_event_graphics_info_followers.h b/src/data/object_events/object_event_graphics_info_followers.h new file mode 100755 index 000000000..9a96bb23a --- /dev/null +++ b/src/data/object_events/object_event_graphics_info_followers.h @@ -0,0 +1,461 @@ +// Species-indexed pokemon object event table +const struct ObjectEventGraphicsInfo gPokemonObjectGraphics[] = { + [SPECIES_BULBASAUR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Bulbasaur, gDummySpriteAffineAnimTable}, + [SPECIES_IVYSAUR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ivysaur, gDummySpriteAffineAnimTable}, + [SPECIES_VENUSAUR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Venusaur, gDummySpriteAffineAnimTable}, + [SPECIES_CHARMANDER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Charmander, gDummySpriteAffineAnimTable}, + [SPECIES_CHARMELEON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Charmeleon, gDummySpriteAffineAnimTable}, + [SPECIES_CHARIZARD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Charizard, gDummySpriteAffineAnimTable}, + [SPECIES_SQUIRTLE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Squirtle, gDummySpriteAffineAnimTable}, + [SPECIES_WARTORTLE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wartortle, gDummySpriteAffineAnimTable}, + [SPECIES_BLASTOISE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Blastoise, gDummySpriteAffineAnimTable}, + [SPECIES_CATERPIE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Caterpie, gDummySpriteAffineAnimTable}, + [SPECIES_METAPOD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Metapod, gDummySpriteAffineAnimTable}, + [SPECIES_BUTTERFREE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Butterfree, gDummySpriteAffineAnimTable}, + [SPECIES_WEEDLE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Weedle, gDummySpriteAffineAnimTable}, + [SPECIES_KAKUNA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kakuna, gDummySpriteAffineAnimTable}, + [SPECIES_BEEDRILL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Beedrill, gDummySpriteAffineAnimTable}, + [SPECIES_PIDGEY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Pidgey, gDummySpriteAffineAnimTable}, + [SPECIES_PIDGEOTTO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Pidgeotto, gDummySpriteAffineAnimTable}, + [SPECIES_PIDGEOT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Pidgeot, gDummySpriteAffineAnimTable}, + [SPECIES_RATTATA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Rattata, gDummySpriteAffineAnimTable}, + [SPECIES_RATICATE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Raticate, gDummySpriteAffineAnimTable}, + [SPECIES_SPEAROW] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Spearow, gDummySpriteAffineAnimTable}, + [SPECIES_FEAROW] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Fearow, gDummySpriteAffineAnimTable}, + [SPECIES_EKANS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ekans, gDummySpriteAffineAnimTable}, + [SPECIES_ARBOK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Arbok, gDummySpriteAffineAnimTable}, + [SPECIES_PIKACHU] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Pikachu, gDummySpriteAffineAnimTable}, + [SPECIES_RAICHU] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Raichu, gDummySpriteAffineAnimTable}, + [SPECIES_SANDSHREW] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sandshrew, gDummySpriteAffineAnimTable}, + [SPECIES_SANDSLASH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sandslash, gDummySpriteAffineAnimTable}, + [SPECIES_NIDORAN_F] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Nidoran_f, gDummySpriteAffineAnimTable}, + [SPECIES_NIDORINA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Nidorina, gDummySpriteAffineAnimTable}, + [SPECIES_NIDOQUEEN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Nidoqueen, gDummySpriteAffineAnimTable}, + [SPECIES_NIDORAN_M] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Nidoran_m, gDummySpriteAffineAnimTable}, + [SPECIES_NIDORINO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Nidorino, gDummySpriteAffineAnimTable}, + [SPECIES_NIDOKING] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Nidoking, gDummySpriteAffineAnimTable}, + [SPECIES_CLEFAIRY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Clefairy, gDummySpriteAffineAnimTable}, + [SPECIES_CLEFABLE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Clefable, gDummySpriteAffineAnimTable}, + [SPECIES_VULPIX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Vulpix, gDummySpriteAffineAnimTable}, + [SPECIES_NINETALES] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ninetales, gDummySpriteAffineAnimTable}, + [SPECIES_JIGGLYPUFF] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Jigglypuff, gDummySpriteAffineAnimTable}, + [SPECIES_WIGGLYTUFF] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wigglytuff, gDummySpriteAffineAnimTable}, + [SPECIES_ZUBAT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Zubat, gDummySpriteAffineAnimTable}, + [SPECIES_GOLBAT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Golbat, gDummySpriteAffineAnimTable}, + [SPECIES_ODDISH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Oddish, gDummySpriteAffineAnimTable}, + [SPECIES_GLOOM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Gloom, gDummySpriteAffineAnimTable}, + [SPECIES_VILEPLUME] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Vileplume, gDummySpriteAffineAnimTable}, + [SPECIES_PARAS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Paras, gDummySpriteAffineAnimTable}, + [SPECIES_PARASECT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Parasect, gDummySpriteAffineAnimTable}, + [SPECIES_VENONAT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Venonat, gDummySpriteAffineAnimTable}, + [SPECIES_VENOMOTH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Venomoth, gDummySpriteAffineAnimTable}, + [SPECIES_DIGLETT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Diglett, gDummySpriteAffineAnimTable}, + [SPECIES_DUGTRIO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dugtrio, gDummySpriteAffineAnimTable}, + [SPECIES_MEOWTH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Meowth, gDummySpriteAffineAnimTable}, + [SPECIES_PERSIAN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Persian, gDummySpriteAffineAnimTable}, + [SPECIES_PSYDUCK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Psyduck, gDummySpriteAffineAnimTable}, + [SPECIES_GOLDUCK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Golduck, gDummySpriteAffineAnimTable}, + [SPECIES_MANKEY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mankey, gDummySpriteAffineAnimTable}, + [SPECIES_PRIMEAPE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Primeape, gDummySpriteAffineAnimTable}, + [SPECIES_GROWLITHE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Growlithe, gDummySpriteAffineAnimTable}, + [SPECIES_ARCANINE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Arcanine, gDummySpriteAffineAnimTable}, + [SPECIES_POLIWAG] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Poliwag, gDummySpriteAffineAnimTable}, + [SPECIES_POLIWHIRL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Poliwhirl, gDummySpriteAffineAnimTable}, + [SPECIES_POLIWRATH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Poliwrath, gDummySpriteAffineAnimTable}, + [SPECIES_ABRA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Abra, gDummySpriteAffineAnimTable}, + [SPECIES_KADABRA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kadabra, gDummySpriteAffineAnimTable}, + [SPECIES_ALAKAZAM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Alakazam, gDummySpriteAffineAnimTable}, + [SPECIES_MACHOP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Machop, gDummySpriteAffineAnimTable}, + [SPECIES_MACHOKE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Machoke, gDummySpriteAffineAnimTable}, + [SPECIES_MACHAMP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Machamp, gDummySpriteAffineAnimTable}, + [SPECIES_BELLSPROUT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Bellsprout, gDummySpriteAffineAnimTable}, + [SPECIES_WEEPINBELL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Weepinbell, gDummySpriteAffineAnimTable}, + [SPECIES_VICTREEBEL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Victreebel, gDummySpriteAffineAnimTable}, + [SPECIES_TENTACOOL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Tentacool, gDummySpriteAffineAnimTable}, + [SPECIES_TENTACRUEL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Tentacruel, gDummySpriteAffineAnimTable}, + [SPECIES_GEODUDE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Geodude, gDummySpriteAffineAnimTable}, + [SPECIES_GRAVELER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Graveler, gDummySpriteAffineAnimTable}, + [SPECIES_GOLEM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Golem, gDummySpriteAffineAnimTable}, + [SPECIES_PONYTA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ponyta, gDummySpriteAffineAnimTable}, + [SPECIES_RAPIDASH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Rapidash, gDummySpriteAffineAnimTable}, + [SPECIES_SLOWPOKE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Slowpoke, gDummySpriteAffineAnimTable}, + [SPECIES_SLOWBRO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Slowbro, gDummySpriteAffineAnimTable}, + [SPECIES_MAGNEMITE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Magnemite, gDummySpriteAffineAnimTable}, + [SPECIES_MAGNETON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Magneton, gDummySpriteAffineAnimTable}, + [SPECIES_FARFETCHD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Farfetchd, gDummySpriteAffineAnimTable}, + [SPECIES_DODUO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Doduo, gDummySpriteAffineAnimTable}, + [SPECIES_DODRIO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dodrio, gDummySpriteAffineAnimTable}, + [SPECIES_SEEL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Seel, gDummySpriteAffineAnimTable}, + [SPECIES_DEWGONG] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dewgong, gDummySpriteAffineAnimTable}, + [SPECIES_GRIMER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Grimer, gDummySpriteAffineAnimTable}, + [SPECIES_MUK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Muk, gDummySpriteAffineAnimTable}, + [SPECIES_SHELLDER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Shellder, gDummySpriteAffineAnimTable}, + [SPECIES_CLOYSTER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Cloyster, gDummySpriteAffineAnimTable}, + [SPECIES_GASTLY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Gastly, gDummySpriteAffineAnimTable}, + [SPECIES_HAUNTER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Haunter, gDummySpriteAffineAnimTable}, + [SPECIES_GENGAR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Gengar, gDummySpriteAffineAnimTable}, + [SPECIES_ONIX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Onix, gDummySpriteAffineAnimTable}, + [SPECIES_DROWZEE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Drowzee, gDummySpriteAffineAnimTable}, + [SPECIES_HYPNO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Hypno, gDummySpriteAffineAnimTable}, + [SPECIES_KRABBY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Krabby, gDummySpriteAffineAnimTable}, + [SPECIES_KINGLER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kingler, gDummySpriteAffineAnimTable}, + [SPECIES_VOLTORB] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Voltorb, gDummySpriteAffineAnimTable}, + [SPECIES_ELECTRODE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Electrode, gDummySpriteAffineAnimTable}, + [SPECIES_EXEGGCUTE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Exeggcute, gDummySpriteAffineAnimTable}, + [SPECIES_EXEGGUTOR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Exeggutor, gDummySpriteAffineAnimTable}, + [SPECIES_CUBONE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Cubone, gDummySpriteAffineAnimTable}, + [SPECIES_MAROWAK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Marowak, gDummySpriteAffineAnimTable}, + [SPECIES_HITMONLEE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Hitmonlee, gDummySpriteAffineAnimTable}, + [SPECIES_HITMONCHAN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Hitmonchan, gDummySpriteAffineAnimTable}, + [SPECIES_LICKITUNG] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lickitung, gDummySpriteAffineAnimTable}, + [SPECIES_KOFFING] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Koffing, gDummySpriteAffineAnimTable}, + [SPECIES_WEEZING] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Weezing, gDummySpriteAffineAnimTable}, + [SPECIES_RHYHORN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Rhyhorn, gDummySpriteAffineAnimTable}, + [SPECIES_RHYDON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Rhydon, gDummySpriteAffineAnimTable}, + [SPECIES_CHANSEY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Chansey, gDummySpriteAffineAnimTable}, + [SPECIES_TANGELA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Tangela, gDummySpriteAffineAnimTable}, + [SPECIES_KANGASKHAN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kangaskhan, gDummySpriteAffineAnimTable}, + [SPECIES_HORSEA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Horsea, gDummySpriteAffineAnimTable}, + [SPECIES_SEADRA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Seadra, gDummySpriteAffineAnimTable}, + [SPECIES_GOLDEEN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Goldeen, gDummySpriteAffineAnimTable}, + [SPECIES_SEAKING] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Seaking, gDummySpriteAffineAnimTable}, + [SPECIES_STARYU] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Staryu, gDummySpriteAffineAnimTable}, + [SPECIES_STARMIE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Starmie, gDummySpriteAffineAnimTable}, + [SPECIES_MR_MIME] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mr_Mime, gDummySpriteAffineAnimTable}, + [SPECIES_SCYTHER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Scyther, gDummySpriteAffineAnimTable}, + [SPECIES_JYNX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Jynx, gDummySpriteAffineAnimTable}, + [SPECIES_ELECTABUZZ] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Electabuzz, gDummySpriteAffineAnimTable}, + [SPECIES_MAGMAR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Magmar, gDummySpriteAffineAnimTable}, + [SPECIES_PINSIR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Pinsir, gDummySpriteAffineAnimTable}, + [SPECIES_TAUROS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Tauros, gDummySpriteAffineAnimTable}, + [SPECIES_MAGIKARP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Magikarp, gDummySpriteAffineAnimTable}, + [SPECIES_GYARADOS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Gyarados, gDummySpriteAffineAnimTable}, + [SPECIES_LAPRAS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lapras, gDummySpriteAffineAnimTable}, + [SPECIES_DITTO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ditto, gDummySpriteAffineAnimTable}, + [SPECIES_EEVEE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Eevee, gDummySpriteAffineAnimTable}, + [SPECIES_VAPOREON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Vaporeon, gDummySpriteAffineAnimTable}, + [SPECIES_JOLTEON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Jolteon, gDummySpriteAffineAnimTable}, + [SPECIES_FLAREON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Flareon, gDummySpriteAffineAnimTable}, + [SPECIES_PORYGON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Porygon, gDummySpriteAffineAnimTable}, + [SPECIES_OMANYTE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Omanyte, gDummySpriteAffineAnimTable}, + [SPECIES_OMASTAR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Omastar, gDummySpriteAffineAnimTable}, + [SPECIES_KABUTO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kabuto, gDummySpriteAffineAnimTable}, + [SPECIES_KABUTOPS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kabutops, gDummySpriteAffineAnimTable}, + [SPECIES_AERODACTYL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Aerodactyl, gDummySpriteAffineAnimTable}, + [SPECIES_SNORLAX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Snorlax, gDummySpriteAffineAnimTable}, + [SPECIES_ARTICUNO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Articuno, gDummySpriteAffineAnimTable}, + [SPECIES_ZAPDOS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Zapdos, gDummySpriteAffineAnimTable}, + [SPECIES_MOLTRES] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Moltres, gDummySpriteAffineAnimTable}, + [SPECIES_DRATINI] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dratini, gDummySpriteAffineAnimTable}, + [SPECIES_DRAGONAIR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dragonair, gDummySpriteAffineAnimTable}, + [SPECIES_DRAGONITE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dragonite, gDummySpriteAffineAnimTable}, + [SPECIES_MEWTWO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mewtwo, gDummySpriteAffineAnimTable}, + [SPECIES_MEW] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mew, gDummySpriteAffineAnimTable}, + [SPECIES_CHIKORITA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Chikorita, gDummySpriteAffineAnimTable}, + [SPECIES_BAYLEEF] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Bayleef, gDummySpriteAffineAnimTable}, + [SPECIES_MEGANIUM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Meganium, gDummySpriteAffineAnimTable}, + [SPECIES_CYNDAQUIL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Cyndaquil, gDummySpriteAffineAnimTable}, + [SPECIES_QUILAVA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Quilava, gDummySpriteAffineAnimTable}, + [SPECIES_TYPHLOSION] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Typhlosion, gDummySpriteAffineAnimTable}, + [SPECIES_TOTODILE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Totodile, gDummySpriteAffineAnimTable}, + [SPECIES_CROCONAW] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Croconaw, gDummySpriteAffineAnimTable}, + [SPECIES_FERALIGATR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Feraligatr, gDummySpriteAffineAnimTable}, + [SPECIES_SENTRET] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sentret, gDummySpriteAffineAnimTable}, + [SPECIES_FURRET] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Furret, gDummySpriteAffineAnimTable}, + [SPECIES_HOOTHOOT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Hoothoot, gDummySpriteAffineAnimTable}, + [SPECIES_NOCTOWL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Noctowl, gDummySpriteAffineAnimTable}, + [SPECIES_LEDYBA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ledyba, gDummySpriteAffineAnimTable}, + [SPECIES_LEDIAN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ledian, gDummySpriteAffineAnimTable}, + [SPECIES_SPINARAK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Spinarak, gDummySpriteAffineAnimTable}, + [SPECIES_ARIADOS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ariados, gDummySpriteAffineAnimTable}, + [SPECIES_CROBAT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Crobat, gDummySpriteAffineAnimTable}, + [SPECIES_CHINCHOU] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Chinchou, gDummySpriteAffineAnimTable}, + [SPECIES_LANTURN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lanturn, gDummySpriteAffineAnimTable}, + [SPECIES_PICHU] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Pichu, gDummySpriteAffineAnimTable}, + [SPECIES_CLEFFA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Cleffa, gDummySpriteAffineAnimTable}, + [SPECIES_IGGLYBUFF] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Igglybuff, gDummySpriteAffineAnimTable}, + [SPECIES_TOGEPI] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Togepi, gDummySpriteAffineAnimTable}, + [SPECIES_TOGETIC] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Togetic, gDummySpriteAffineAnimTable}, + [SPECIES_NATU] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Natu, gDummySpriteAffineAnimTable}, + [SPECIES_XATU] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Xatu, gDummySpriteAffineAnimTable}, + [SPECIES_MAREEP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mareep, gDummySpriteAffineAnimTable}, + [SPECIES_FLAAFFY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Flaaffy, gDummySpriteAffineAnimTable}, + [SPECIES_AMPHAROS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ampharos, gDummySpriteAffineAnimTable}, + [SPECIES_BELLOSSOM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Bellossom, gDummySpriteAffineAnimTable}, + [SPECIES_MARILL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Marill, gDummySpriteAffineAnimTable}, + [SPECIES_AZUMARILL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Azumarill, gDummySpriteAffineAnimTable}, + [SPECIES_SUDOWOODO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sudowoodo, gDummySpriteAffineAnimTable}, + [SPECIES_POLITOED] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Politoed, gDummySpriteAffineAnimTable}, + [SPECIES_HOPPIP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Hoppip, gDummySpriteAffineAnimTable}, + [SPECIES_SKIPLOOM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Skiploom, gDummySpriteAffineAnimTable}, + [SPECIES_JUMPLUFF] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Jumpluff, gDummySpriteAffineAnimTable}, + [SPECIES_AIPOM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Aipom, gDummySpriteAffineAnimTable}, + [SPECIES_SUNKERN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sunkern, gDummySpriteAffineAnimTable}, + [SPECIES_SUNFLORA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sunflora, gDummySpriteAffineAnimTable}, + [SPECIES_YANMA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Yanma, gDummySpriteAffineAnimTable}, + [SPECIES_WOOPER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wooper, gDummySpriteAffineAnimTable}, + [SPECIES_QUAGSIRE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Quagsire, gDummySpriteAffineAnimTable}, + [SPECIES_ESPEON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Espeon, gDummySpriteAffineAnimTable}, + [SPECIES_UMBREON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Umbreon, gDummySpriteAffineAnimTable}, + [SPECIES_MURKROW] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Murkrow, gDummySpriteAffineAnimTable}, + [SPECIES_SLOWKING] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Slowking, gDummySpriteAffineAnimTable}, + [SPECIES_MISDREAVUS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Misdreavus, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_A, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_B] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_B, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_C] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_C, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_D] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_D, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_E] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_E, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_F] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_F, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_G] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_G, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_H] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_H, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_I] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_I, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_J] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_J, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_K] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_K, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_L] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_L, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_M] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_M, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_N] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_N, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_O] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_O, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_P] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_P, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_Q] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_Q, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_R] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_R, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_S] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_S, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_T] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_T, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_U] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_U, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_V] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_V, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_W] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_W, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_X] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_X, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_Y] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_Y, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_Z] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_Z, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_EMARK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_Exclamation, gDummySpriteAffineAnimTable}, + [SPECIES_UNOWN_QMARK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Unown_Question, gDummySpriteAffineAnimTable}, + [SPECIES_WOBBUFFET] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wobbuffet, gDummySpriteAffineAnimTable}, + [SPECIES_GIRAFARIG] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Girafarig, gDummySpriteAffineAnimTable}, + [SPECIES_PINECO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Pineco, gDummySpriteAffineAnimTable}, + [SPECIES_FORRETRESS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Forretress, gDummySpriteAffineAnimTable}, + [SPECIES_DUNSPARCE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dunsparce, gDummySpriteAffineAnimTable}, + [SPECIES_GLIGAR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Gligar, gDummySpriteAffineAnimTable}, + [SPECIES_STEELIX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Steelix, gDummySpriteAffineAnimTable}, + [SPECIES_SNUBBULL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Snubbull, gDummySpriteAffineAnimTable}, + [SPECIES_GRANBULL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Granbull, gDummySpriteAffineAnimTable}, + [SPECIES_QWILFISH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Qwilfish, gDummySpriteAffineAnimTable}, + [SPECIES_SCIZOR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Scizor, gDummySpriteAffineAnimTable}, + [SPECIES_SHUCKLE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Shuckle, gDummySpriteAffineAnimTable}, + [SPECIES_HERACROSS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Heracross, gDummySpriteAffineAnimTable}, + [SPECIES_SNEASEL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sneasel, gDummySpriteAffineAnimTable}, + [SPECIES_TEDDIURSA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Teddiursa, gDummySpriteAffineAnimTable}, + [SPECIES_URSARING] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ursaring, gDummySpriteAffineAnimTable}, + [SPECIES_SLUGMA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Slugma, gDummySpriteAffineAnimTable}, + [SPECIES_MAGCARGO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Magcargo, gDummySpriteAffineAnimTable}, + [SPECIES_SWINUB] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Swinub, gDummySpriteAffineAnimTable}, + [SPECIES_PILOSWINE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Piloswine, gDummySpriteAffineAnimTable}, + [SPECIES_CORSOLA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Corsola, gDummySpriteAffineAnimTable}, + [SPECIES_REMORAID] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Remoraid, gDummySpriteAffineAnimTable}, + [SPECIES_OCTILLERY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Octillery, gDummySpriteAffineAnimTable}, + [SPECIES_DELIBIRD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Delibird, gDummySpriteAffineAnimTable}, + [SPECIES_MANTINE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mantine, gDummySpriteAffineAnimTable}, + [SPECIES_SKARMORY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Skarmory, gDummySpriteAffineAnimTable}, + [SPECIES_HOUNDOUR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Houndour, gDummySpriteAffineAnimTable}, + [SPECIES_HOUNDOOM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Houndoom, gDummySpriteAffineAnimTable}, + [SPECIES_KINGDRA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kingdra, gDummySpriteAffineAnimTable}, + [SPECIES_PHANPY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Phanpy, gDummySpriteAffineAnimTable}, + [SPECIES_DONPHAN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Donphan, gDummySpriteAffineAnimTable}, + [SPECIES_PORYGON2] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Porygon2, gDummySpriteAffineAnimTable}, + [SPECIES_STANTLER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Stantler, gDummySpriteAffineAnimTable}, + [SPECIES_SMEARGLE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Smeargle, gDummySpriteAffineAnimTable}, + [SPECIES_TYROGUE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Tyrogue, gDummySpriteAffineAnimTable}, + [SPECIES_HITMONTOP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Hitmontop, gDummySpriteAffineAnimTable}, + [SPECIES_SMOOCHUM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Smoochum, gDummySpriteAffineAnimTable}, + [SPECIES_ELEKID] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Elekid, gDummySpriteAffineAnimTable}, + [SPECIES_MAGBY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Magby, gDummySpriteAffineAnimTable}, + [SPECIES_MILTANK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Miltank, gDummySpriteAffineAnimTable}, + [SPECIES_BLISSEY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Blissey, gDummySpriteAffineAnimTable}, + [SPECIES_RAIKOU] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Raikou, gDummySpriteAffineAnimTable}, + [SPECIES_ENTEI] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Entei, gDummySpriteAffineAnimTable}, + [SPECIES_SUICUNE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Suicune, gDummySpriteAffineAnimTable}, + [SPECIES_LARVITAR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Larvitar, gDummySpriteAffineAnimTable}, + [SPECIES_PUPITAR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Pupitar, gDummySpriteAffineAnimTable}, + [SPECIES_TYRANITAR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Tyranitar, gDummySpriteAffineAnimTable}, + [SPECIES_LUGIA] = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Following, sPicTable_Lugia, gDummySpriteAffineAnimTable}, + [SPECIES_HO_OH] = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Following, sPicTable_Ho_oh, gDummySpriteAffineAnimTable}, + [SPECIES_CELEBI] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Celebi, gDummySpriteAffineAnimTable}, + [SPECIES_TREECKO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Treecko, gDummySpriteAffineAnimTable}, + [SPECIES_GROVYLE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Grovyle, gDummySpriteAffineAnimTable}, + [SPECIES_SCEPTILE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sceptile, gDummySpriteAffineAnimTable}, + [SPECIES_TORCHIC] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Torchic, gDummySpriteAffineAnimTable}, + [SPECIES_COMBUSKEN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Combusken, gDummySpriteAffineAnimTable}, + [SPECIES_BLAZIKEN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Blaziken, gDummySpriteAffineAnimTable}, + [SPECIES_MUDKIP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mudkip, gDummySpriteAffineAnimTable}, + [SPECIES_MARSHTOMP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Marshtomp, gDummySpriteAffineAnimTable}, + [SPECIES_SWAMPERT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Swampert, gDummySpriteAffineAnimTable}, + [SPECIES_POOCHYENA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Poochyena, gDummySpriteAffineAnimTable}, + [SPECIES_MIGHTYENA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mightyena, gDummySpriteAffineAnimTable}, + [SPECIES_ZIGZAGOON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Zigzagoon, gDummySpriteAffineAnimTable}, + [SPECIES_LINOONE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Linoone, gDummySpriteAffineAnimTable}, + [SPECIES_WURMPLE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wurmple, gDummySpriteAffineAnimTable}, + [SPECIES_SILCOON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Silcoon, gDummySpriteAffineAnimTable}, + [SPECIES_BEAUTIFLY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Beautifly, gDummySpriteAffineAnimTable}, + [SPECIES_CASCOON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Cascoon, gDummySpriteAffineAnimTable}, + [SPECIES_DUSTOX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dustox, gDummySpriteAffineAnimTable}, + [SPECIES_LOTAD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lotad, gDummySpriteAffineAnimTable}, + [SPECIES_LOMBRE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lombre, gDummySpriteAffineAnimTable}, + [SPECIES_LUDICOLO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ludicolo, gDummySpriteAffineAnimTable}, + [SPECIES_SEEDOT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Seedot, gDummySpriteAffineAnimTable}, + [SPECIES_NUZLEAF] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Nuzleaf, gDummySpriteAffineAnimTable}, + [SPECIES_SHIFTRY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Shiftry, gDummySpriteAffineAnimTable}, + [SPECIES_TAILLOW] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Taillow, gDummySpriteAffineAnimTable}, + [SPECIES_SWELLOW] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Swellow, gDummySpriteAffineAnimTable}, + [SPECIES_WINGULL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wingull, gDummySpriteAffineAnimTable}, + [SPECIES_PELIPPER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Pelipper, gDummySpriteAffineAnimTable}, + [SPECIES_RALTS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ralts, gDummySpriteAffineAnimTable}, + [SPECIES_KIRLIA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kirlia, gDummySpriteAffineAnimTable}, + [SPECIES_GARDEVOIR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Gardevoir, gDummySpriteAffineAnimTable}, + [SPECIES_SURSKIT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Surskit, gDummySpriteAffineAnimTable}, + [SPECIES_MASQUERAIN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Masquerain, gDummySpriteAffineAnimTable}, + [SPECIES_SHROOMISH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Shroomish, gDummySpriteAffineAnimTable}, + [SPECIES_BRELOOM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Breloom, gDummySpriteAffineAnimTable}, + [SPECIES_SLAKOTH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Slakoth, gDummySpriteAffineAnimTable}, + [SPECIES_VIGOROTH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Vigoroth, gDummySpriteAffineAnimTable}, + [SPECIES_SLAKING] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Slaking, gDummySpriteAffineAnimTable}, + [SPECIES_NINCADA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Nincada, gDummySpriteAffineAnimTable}, + [SPECIES_NINJASK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ninjask, gDummySpriteAffineAnimTable}, + [SPECIES_SHEDINJA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Shedinja, gDummySpriteAffineAnimTable}, + [SPECIES_WHISMUR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Whismur, gDummySpriteAffineAnimTable}, + [SPECIES_LOUDRED] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Loudred, gDummySpriteAffineAnimTable}, + [SPECIES_EXPLOUD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Exploud, gDummySpriteAffineAnimTable}, + [SPECIES_MAKUHITA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Makuhita, gDummySpriteAffineAnimTable}, + [SPECIES_HARIYAMA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Hariyama, gDummySpriteAffineAnimTable}, + [SPECIES_AZURILL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Azurill, gDummySpriteAffineAnimTable}, + [SPECIES_NOSEPASS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Nosepass, gDummySpriteAffineAnimTable}, + [SPECIES_SKITTY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Skitty, gDummySpriteAffineAnimTable}, + [SPECIES_DELCATTY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Delcatty, gDummySpriteAffineAnimTable}, + [SPECIES_SABLEYE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sableye, gDummySpriteAffineAnimTable}, + [SPECIES_MAWILE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mawile, gDummySpriteAffineAnimTable}, + [SPECIES_ARON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Aron, gDummySpriteAffineAnimTable}, + [SPECIES_LAIRON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lairon, gDummySpriteAffineAnimTable}, + [SPECIES_AGGRON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Aggron, gDummySpriteAffineAnimTable}, + [SPECIES_MEDITITE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Meditite, gDummySpriteAffineAnimTable}, + [SPECIES_MEDICHAM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Medicham, gDummySpriteAffineAnimTable}, + [SPECIES_ELECTRIKE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Electrike, gDummySpriteAffineAnimTable}, + [SPECIES_MANECTRIC] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Manectric, gDummySpriteAffineAnimTable}, + [SPECIES_PLUSLE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Plusle, gDummySpriteAffineAnimTable}, + [SPECIES_MINUN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Minun, gDummySpriteAffineAnimTable}, + [SPECIES_VOLBEAT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Volbeat, gDummySpriteAffineAnimTable}, + [SPECIES_ILLUMISE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Illumise, gDummySpriteAffineAnimTable}, + [SPECIES_ROSELIA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Roselia, gDummySpriteAffineAnimTable}, + [SPECIES_GULPIN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Gulpin, gDummySpriteAffineAnimTable}, + [SPECIES_SWALOT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Swalot, gDummySpriteAffineAnimTable}, + [SPECIES_CARVANHA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Carvanha, gDummySpriteAffineAnimTable}, + [SPECIES_SHARPEDO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sharpedo, gDummySpriteAffineAnimTable}, + [SPECIES_WAILMER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wailmer, gDummySpriteAffineAnimTable}, + [SPECIES_WAILORD] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wailord, gDummySpriteAffineAnimTable}, + [SPECIES_NUMEL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Numel, gDummySpriteAffineAnimTable}, + [SPECIES_CAMERUPT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Camerupt, gDummySpriteAffineAnimTable}, + [SPECIES_TORKOAL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Torkoal, gDummySpriteAffineAnimTable}, + [SPECIES_SPOINK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Spoink, gDummySpriteAffineAnimTable}, + [SPECIES_GRUMPIG] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Grumpig, gDummySpriteAffineAnimTable}, + [SPECIES_SPINDA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Spinda, gDummySpriteAffineAnimTable}, + [SPECIES_TRAPINCH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Trapinch, gDummySpriteAffineAnimTable}, + [SPECIES_VIBRAVA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Vibrava, gDummySpriteAffineAnimTable}, + [SPECIES_FLYGON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Flygon, gDummySpriteAffineAnimTable}, + [SPECIES_CACNEA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Cacnea, gDummySpriteAffineAnimTable}, + [SPECIES_CACTURNE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Cacturne, gDummySpriteAffineAnimTable}, + [SPECIES_SWABLU] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Swablu, gDummySpriteAffineAnimTable}, + [SPECIES_ALTARIA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Altaria, gDummySpriteAffineAnimTable}, + [SPECIES_ZANGOOSE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Zangoose, gDummySpriteAffineAnimTable}, + [SPECIES_SEVIPER] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Seviper, gDummySpriteAffineAnimTable}, + [SPECIES_LUNATONE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lunatone, gDummySpriteAffineAnimTable}, + [SPECIES_SOLROCK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Solrock, gDummySpriteAffineAnimTable}, + [SPECIES_BARBOACH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Barboach, gDummySpriteAffineAnimTable}, + [SPECIES_WHISCASH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Whiscash, gDummySpriteAffineAnimTable}, + [SPECIES_CORPHISH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Corphish, gDummySpriteAffineAnimTable}, + [SPECIES_CRAWDAUNT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Crawdaunt, gDummySpriteAffineAnimTable}, + [SPECIES_BALTOY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Baltoy, gDummySpriteAffineAnimTable}, + [SPECIES_CLAYDOL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Claydol, gDummySpriteAffineAnimTable}, + [SPECIES_LILEEP] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lileep, gDummySpriteAffineAnimTable}, + [SPECIES_CRADILY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Cradily, gDummySpriteAffineAnimTable}, + [SPECIES_ANORITH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BUG, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Anorith, gDummySpriteAffineAnimTable}, + [SPECIES_ARMALDO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Armaldo, gDummySpriteAffineAnimTable}, + [SPECIES_FEEBAS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Feebas, gDummySpriteAffineAnimTable}, + [SPECIES_MILOTIC] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Milotic, gDummySpriteAffineAnimTable}, + [SPECIES_CASTFORM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Castform, gDummySpriteAffineAnimTable}, + [SPECIES_KECLEON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Kecleon, gDummySpriteAffineAnimTable}, + [SPECIES_SHUPPET] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Shuppet, gDummySpriteAffineAnimTable}, + [SPECIES_BANETTE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Banette, gDummySpriteAffineAnimTable}, + [SPECIES_DUSKULL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Duskull, gDummySpriteAffineAnimTable}, + [SPECIES_DUSCLOPS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dusclops, gDummySpriteAffineAnimTable}, + [SPECIES_TROPIUS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Tropius, gDummySpriteAffineAnimTable}, + [SPECIES_CHIMECHO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Chimecho, gDummySpriteAffineAnimTable}, + [SPECIES_ABSOL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Absol, gDummySpriteAffineAnimTable}, + [SPECIES_WYNAUT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Wynaut, gDummySpriteAffineAnimTable}, + [SPECIES_SNORUNT] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Snorunt, gDummySpriteAffineAnimTable}, + [SPECIES_GLALIE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Glalie, gDummySpriteAffineAnimTable}, + [SPECIES_SPHEAL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Spheal, gDummySpriteAffineAnimTable}, + [SPECIES_SEALEO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sealeo, gDummySpriteAffineAnimTable}, + [SPECIES_WALREIN] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Walrein, gDummySpriteAffineAnimTable}, + [SPECIES_CLAMPERL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Clamperl, gDummySpriteAffineAnimTable}, + [SPECIES_HUNTAIL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Huntail, gDummySpriteAffineAnimTable}, + [SPECIES_GOREBYSS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Gorebyss, gDummySpriteAffineAnimTable}, + [SPECIES_RELICANTH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Relicanth, gDummySpriteAffineAnimTable}, + [SPECIES_LUVDISC] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SPOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Luvdisc, gDummySpriteAffineAnimTable}, + [SPECIES_BAGON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Bagon, gDummySpriteAffineAnimTable}, + [SPECIES_SHELGON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Shelgon, gDummySpriteAffineAnimTable}, + [SPECIES_SALAMENCE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Salamence, gDummySpriteAffineAnimTable}, + [SPECIES_BELDUM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Beldum, gDummySpriteAffineAnimTable}, + [SPECIES_METANG] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Metang, gDummySpriteAffineAnimTable}, + [SPECIES_METAGROSS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Metagross, gDummySpriteAffineAnimTable}, + [SPECIES_REGIROCK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Regirock, gDummySpriteAffineAnimTable}, + [SPECIES_REGICE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Regice, gDummySpriteAffineAnimTable}, + [SPECIES_REGISTEEL] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Registeel, gDummySpriteAffineAnimTable}, + [SPECIES_LATIAS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Latias, gDummySpriteAffineAnimTable}, + [SPECIES_LATIOS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Latios, gDummySpriteAffineAnimTable}, + [SPECIES_KYOGRE] = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Following, sPicTable_Kyogre, gDummySpriteAffineAnimTable}, + [SPECIES_GROUDON] = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Following, sPicTable_Groudon, gDummySpriteAffineAnimTable}, + [SPECIES_RAYQUAZA] = {0xFFFF, OBJ_EVENT_PAL_TAG_RAYQUAZA, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Following, sPicTable_Rayquaza, gDummySpriteAffineAnimTable}, + [SPECIES_JIRACHI] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Jirachi, gDummySpriteAffineAnimTable}, + [SPECIES_DEOXYS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Deoxys, gDummySpriteAffineAnimTable}, + [SPECIES_AMBIPOM] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Ambipom, gDummySpriteAffineAnimTable}, + [SPECIES_ARCEUS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Following, sPicTable_Arceus, gDummySpriteAffineAnimTable}, + [SPECIES_BONSLY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Bonsly, gDummySpriteAffineAnimTable}, + [SPECIES_BUDEW] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Budew, gDummySpriteAffineAnimTable}, + [SPECIES_CHINGLING] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Chingling, gDummySpriteAffineAnimTable}, + [SPECIES_DEOXYS_ATTACK] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Deoxys_A, gDummySpriteAffineAnimTable}, + [SPECIES_DEOXYS_DEFENSE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Deoxys_D, gDummySpriteAffineAnimTable}, + [SPECIES_DEOXYS_SPEED] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Deoxys_S, gDummySpriteAffineAnimTable}, + [SPECIES_DUSKNOIR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Dusknoir, gDummySpriteAffineAnimTable}, + [SPECIES_ELECTIVIRE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Electivire, gDummySpriteAffineAnimTable}, + [SPECIES_FROSLASS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Froslass, gDummySpriteAffineAnimTable}, + [SPECIES_GALLADE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Gallade, gDummySpriteAffineAnimTable}, + [SPECIES_GLACEON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Glaceon, gDummySpriteAffineAnimTable}, + [SPECIES_GLISCOR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_SLITHER, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Gliscor, gDummySpriteAffineAnimTable}, + [SPECIES_HAPPINY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Happiny, gDummySpriteAffineAnimTable}, + [SPECIES_HONCHKROW] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Honchkrow, gDummySpriteAffineAnimTable}, + [SPECIES_LEAFEON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Leafeon, gDummySpriteAffineAnimTable}, + [SPECIES_LICKILICKY] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Lickilicky, gDummySpriteAffineAnimTable}, + [SPECIES_MAGMORTAR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Magmortar, gDummySpriteAffineAnimTable}, + [SPECIES_MAGNEZONE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Magnezone, gDummySpriteAffineAnimTable}, + [SPECIES_MAMOSWINE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mamoswine, gDummySpriteAffineAnimTable}, + [SPECIES_MANTYKE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mantyke, gDummySpriteAffineAnimTable}, + [SPECIES_MISMAGIUS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Mismagius, gDummySpriteAffineAnimTable}, + [SPECIES_MIME_JR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_MimeJr, gDummySpriteAffineAnimTable}, + [SPECIES_MUNCHLAX] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Munchlax, gDummySpriteAffineAnimTable}, + [SPECIES_PORYGON_Z] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_PorygonZ, gDummySpriteAffineAnimTable}, + [SPECIES_PROBOPASS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Probopass, gDummySpriteAffineAnimTable}, + [SPECIES_REGIDRAGO] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_FollowingSpecial, sPicTable_Regidrago, gDummySpriteAffineAnimTable}, + [SPECIES_REGIELEKI] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Regieleki, gDummySpriteAffineAnimTable}, + [SPECIES_REGIGIGAS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Following, sPicTable_Regigigas, gDummySpriteAffineAnimTable}, + [SPECIES_RHYPERIOR] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Rhyperior, gDummySpriteAffineAnimTable}, + [SPECIES_ROSERADE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_FollowingSpecial, sPicTable_Roserade, gDummySpriteAffineAnimTable}, + [SPECIES_SYLVEON] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Sylveon, gDummySpriteAffineAnimTable}, + [SPECIES_TANGROWTH] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Tangrowth, gDummySpriteAffineAnimTable}, + [SPECIES_TOGEKISS] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Togekiss, gDummySpriteAffineAnimTable}, + [SPECIES_WEAVILE] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Weavile, gDummySpriteAffineAnimTable}, + [SPECIES_YANMEGA] = {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Yanmega, gDummySpriteAffineAnimTable}, +}; + +// Normal, sunny, rainy, snowy +const struct ObjectEventGraphicsInfo gCastformObjectGraphics[] = { + {0xFFFF, OBJ_EVENT_PAL_TAG_DYNAMIC, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_Castform, gDummySpriteAffineAnimTable}, + {0xFFFF, OBJ_EVENT_PAL_TAG_CASTFORM_SUNNY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_CastformSunny, gDummySpriteAffineAnimTable}, + {0xFFFF, OBJ_EVENT_PAL_TAG_CASTFORM_RAINY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_CastformRainy, gDummySpriteAffineAnimTable}, + {0xFFFF, OBJ_EVENT_PAL_TAG_CASTFORM_SNOWY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Following, sPicTable_CastformSnowy, gDummySpriteAffineAnimTable}, +}; diff --git a/src/data/object_events/object_event_graphics_info_pointers.h b/src/data/object_events/object_event_graphics_info_pointers.h index 317c12676..ba5e2a312 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -237,6 +237,11 @@ extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphir extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh; +// Begin pokemon event objects +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AnimatedBall; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallLight; + extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader; @@ -251,7 +256,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_BRENDAN_MACH_BIKE] = &gObjectEventGraphicsInfo_BrendanMachBike, [OBJ_EVENT_GFX_BRENDAN_SURFING] = &gObjectEventGraphicsInfo_BrendanSurfing, [OBJ_EVENT_GFX_BRENDAN_FIELD_MOVE] = &gObjectEventGraphicsInfo_BrendanFieldMove, - [OBJ_EVENT_GFX_QUINTY_PLUMP] = &gObjectEventGraphicsInfo_QuintyPlump, + // [OBJ_EVENT_GFX_QUINTY_PLUMP] = &gObjectEventGraphicsInfo_QuintyPlump, [OBJ_EVENT_GFX_NINJA_BOY] = &gObjectEventGraphicsInfo_NinjaBoy, [OBJ_EVENT_GFX_TWIN] = &gObjectEventGraphicsInfo_Twin, [OBJ_EVENT_GFX_BOY_1] = &gObjectEventGraphicsInfo_Boy1, @@ -306,7 +311,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_CYCLING_TRIATHLETE_M] = &gObjectEventGraphicsInfo_CyclingTriathleteM, [OBJ_EVENT_GFX_CYCLING_TRIATHLETE_F] = &gObjectEventGraphicsInfo_CyclingTriathleteF, [OBJ_EVENT_GFX_NURSE] = &gObjectEventGraphicsInfo_Nurse, - [OBJ_EVENT_GFX_ITEM_BALL] = &gObjectEventGraphicsInfo_ItemBall, + // [OBJ_EVENT_GFX_ITEM_BALL] = &gObjectEventGraphicsInfo_AnimatedBall, [OBJ_EVENT_GFX_BERRY_TREE] = &gObjectEventGraphicsInfo_BerryTree, [OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES] = &gObjectEventGraphicsInfo_BerryTreeEarlyStages, [OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES] = &gObjectEventGraphicsInfo_BerryTreeLateStages, @@ -448,7 +453,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_GROUDON_FRONT] = &gObjectEventGraphicsInfo_GroudonFront, [OBJ_EVENT_GFX_FOSSIL] = &gObjectEventGraphicsInfo_Fossil, [OBJ_EVENT_GFX_REGIROCK] = &gObjectEventGraphicsInfo_Regirock, - [OBJ_EVENT_GFX_REGICE] = &gObjectEventGraphicsInfo_Regice, + // [OBJ_EVENT_GFX_REGICE] = &gObjectEventGraphicsInfo_Regice, [OBJ_EVENT_GFX_REGISTEEL] = &gObjectEventGraphicsInfo_Registeel, [OBJ_EVENT_GFX_SKITTY] = &gObjectEventGraphicsInfo_Skitty, [OBJ_EVENT_GFX_KECLEON] = &gObjectEventGraphicsInfo_Kecleon, @@ -486,6 +491,9 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_LINK_RS_MAY] = &gObjectEventGraphicsInfo_RubySapphireMay, [OBJ_EVENT_GFX_LUGIA] = &gObjectEventGraphicsInfo_Lugia, [OBJ_EVENT_GFX_HOOH] = &gObjectEventGraphicsInfo_HoOh, + [OBJ_EVENT_GFX_ANIMATED_BALL] = &gObjectEventGraphicsInfo_AnimatedBall, + [OBJ_EVENT_GFX_OW_MON] = &gObjectEventGraphicsInfo_Follower, + [OBJ_EVENT_GFX_LIGHT_SPRITE] = &gObjectEventGraphicsInfo_BallLight, }; const struct ObjectEventGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[] = { diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index 8976de549..faf65c576 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -926,27 +926,27 @@ static const struct SpriteFrameImage sPicTable_Truck[] = { }; static const struct SpriteFrameImage sPicTable_VigorothCarryingBox[] = { - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 0), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 0), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 0), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 1), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 2), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 1), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 2), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 1), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 2), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 0), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 0), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 0), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 1), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 2), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 1), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 2), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 1), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 2), }; static const struct SpriteFrameImage sPicTable_VigorothFacingAway[] = { - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 3), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 3), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 3), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 3), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 3), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 3), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), }; static const struct SpriteFrameImage sPicTable_BirchsBag[] = { @@ -965,18 +965,6 @@ static const struct SpriteFrameImage sPicTable_EnemyZigzagoon[] = { overworld_frame(gObjectEventPic_EnemyZigzagoon, 4, 4, 8), }; -static const struct SpriteFrameImage sPicTable_Poochyena[] = { - overworld_frame(gObjectEventPic_Poochyena, 4, 4, 0), - overworld_frame(gObjectEventPic_Poochyena, 4, 4, 1), - overworld_frame(gObjectEventPic_Poochyena, 4, 4, 2), - overworld_frame(gObjectEventPic_Poochyena, 4, 4, 3), - overworld_frame(gObjectEventPic_Poochyena, 4, 4, 4), - overworld_frame(gObjectEventPic_Poochyena, 4, 4, 5), - overworld_frame(gObjectEventPic_Poochyena, 4, 4, 6), - overworld_frame(gObjectEventPic_Poochyena, 4, 4, 7), - overworld_frame(gObjectEventPic_Poochyena, 4, 4, 8), -}; - static const struct SpriteFrameImage sPicTable_Artist[] = { overworld_frame(gObjectEventPic_Artist, 2, 4, 0), overworld_frame(gObjectEventPic_Artist, 2, 4, 1), @@ -1710,51 +1698,51 @@ static const struct SpriteFrameImage sPicTable_Maxie[] = { }; static const struct SpriteFrameImage sPicTable_KyogreFront[] = { - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 0), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 0), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 0), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), }; static const struct SpriteFrameImage sPicTable_GroudonFront[] = { - overworld_frame(gObjectEventPic_Groudon, 4, 4, 0), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 0), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 0), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 0), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 0), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 0), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), }; static const struct SpriteFrameImage sPicTable_KyogreSide[] = { - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 2), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 2), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 2), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), }; static const struct SpriteFrameImage sPicTable_GroudonSide[] = { - overworld_frame(gObjectEventPic_Groudon, 4, 4, 2), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 2), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 2), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 2), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 2), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 2), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), }; static const struct SpriteFrameImage sPicTable_Fossil[] = { @@ -1773,38 +1761,6 @@ static const struct SpriteFrameImage sPicTable_Regi[] = { obj_frame_tiles(gObjectEventPic_Regi), }; -static const struct SpriteFrameImage sPicTable_Skitty[] = { - overworld_frame(gObjectEventPic_Skitty, 2, 2, 0), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 1), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 2), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 0), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 0), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 1), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 1), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 2), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 2), -}; - -static const struct SpriteFrameImage sPicTable_Kecleon[] = { - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 0), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 1), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 2), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 0), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 0), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 1), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 1), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 2), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 2), -}; - -static const struct SpriteFrameImage sPicTable_Rayquaza[] = { - overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 0), - overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 1), - overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 2), - overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 3), - overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 4), -}; - static const struct SpriteFrameImage sPicTable_RayquazaStill[] = { obj_frame_tiles(gObjectEventPic_RayquazaStill), obj_frame_tiles(gObjectEventPic_RayquazaStill), @@ -1817,54 +1773,6 @@ static const struct SpriteFrameImage sPicTable_RayquazaStill[] = { obj_frame_tiles(gObjectEventPic_RayquazaStill), }; -static const struct SpriteFrameImage sPicTable_Zigzagoon[] = { - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 0), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 1), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 2), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 0), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 0), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 1), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 1), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 2), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 2), -}; - -static const struct SpriteFrameImage sPicTable_Pikachu[] = { - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 0), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 1), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 2), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 0), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 0), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 1), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 1), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 2), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 2), -}; - -static const struct SpriteFrameImage sPicTable_Azumarill[] = { - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 2), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 2), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 2), -}; - -static const struct SpriteFrameImage sPicTable_Wingull[] = { - overworld_frame(gObjectEventPic_Wingull, 2, 2, 0), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 2), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 4), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 1), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 1), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 3), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 3), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 5), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 5), -}; - static const struct SpriteFrameImage sPicTable_TuberMSwimming[] = { overworld_frame(gObjectEventPic_TuberMSwimming, 2, 2, 0), overworld_frame(gObjectEventPic_TuberMSwimming, 2, 2, 1), @@ -1877,18 +1785,6 @@ static const struct SpriteFrameImage sPicTable_TuberMSwimming[] = { overworld_frame(gObjectEventPic_TuberMSwimming, 2, 2, 8), }; -static const struct SpriteFrameImage sPicTable_Azurill[] = { - overworld_frame(gObjectEventPic_Azurill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 2), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 2), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 2), -}; - static const struct SpriteFrameImage sPicTable_Mom[] = { overworld_frame(gObjectEventPic_Mom, 2, 4, 0), overworld_frame(gObjectEventPic_Mom, 2, 4, 1), @@ -1941,30 +1837,6 @@ static const struct SpriteFrameImage sPicTable_Statue[] = { obj_frame_tiles(gObjectEventPic_Statue), }; -static const struct SpriteFrameImage sPicTable_Dusclops[] = { - overworld_frame(gObjectEventPic_Dusclops, 2, 4, 0), - overworld_frame(gObjectEventPic_Dusclops, 2, 4, 1), - overworld_frame(gObjectEventPic_Dusclops, 2, 4, 2), - overworld_frame(gObjectEventPic_Dusclops, 2, 4, 3), - overworld_frame(gObjectEventPic_Dusclops, 2, 4, 4), - overworld_frame(gObjectEventPic_Dusclops, 2, 4, 5), - overworld_frame(gObjectEventPic_Dusclops, 2, 4, 6), - overworld_frame(gObjectEventPic_Dusclops, 2, 4, 7), - overworld_frame(gObjectEventPic_Dusclops, 2, 4, 8), -}; - -static const struct SpriteFrameImage sPicTable_Kirlia[] = { - overworld_frame(gObjectEventPic_Kirlia, 2, 4, 0), - overworld_frame(gObjectEventPic_Kirlia, 2, 4, 1), - overworld_frame(gObjectEventPic_Kirlia, 2, 4, 2), - overworld_frame(gObjectEventPic_Kirlia, 2, 4, 3), - overworld_frame(gObjectEventPic_Kirlia, 2, 4, 4), - overworld_frame(gObjectEventPic_Kirlia, 2, 4, 5), - overworld_frame(gObjectEventPic_Kirlia, 2, 4, 6), - overworld_frame(gObjectEventPic_Kirlia, 2, 4, 7), - overworld_frame(gObjectEventPic_Kirlia, 2, 4, 8), -}; - static const struct SpriteFrameImage sPicTable_UnionRoomAttendant[] = { overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 0), overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 1), @@ -1977,30 +1849,6 @@ static const struct SpriteFrameImage sPicTable_UnionRoomAttendant[] = { overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 2), }; -static const struct SpriteFrameImage sPicTable_Sudowoodo[] = { - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 1), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 1), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 2), -}; - -static const struct SpriteFrameImage sPicTable_Mew[] = { - overworld_frame(gObjectEventPic_Mew, 2, 4, 0), - overworld_frame(gObjectEventPic_Mew, 2, 4, 1), - overworld_frame(gObjectEventPic_Mew, 2, 4, 2), - overworld_frame(gObjectEventPic_Mew, 2, 4, 3), - overworld_frame(gObjectEventPic_Mew, 2, 4, 4), - overworld_frame(gObjectEventPic_Mew, 2, 4, 5), - overworld_frame(gObjectEventPic_Mew, 2, 4, 6), - overworld_frame(gObjectEventPic_Mew, 2, 4, 7), - overworld_frame(gObjectEventPic_Mew, 2, 4, 8), -}; - static const struct SpriteFrameImage sPicTable_Red[] = { overworld_frame(gObjectEventPic_Red, 2, 4, 0), overworld_frame(gObjectEventPic_Red, 2, 4, 1), @@ -2025,16 +1873,24 @@ static const struct SpriteFrameImage sPicTable_Leaf[] = { overworld_frame(gObjectEventPic_Leaf, 2, 4, 8), }; -static const struct SpriteFrameImage sPicTable_Deoxys[] = { - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 1), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 1), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), +static const struct SpriteFrameImage sPicTable_SudowoodoTree[] = { + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 1), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 1), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 2), +}; + +static const struct SpriteFrameImage sPicTable_RayquazaCutscene[] = { + overworld_frame(gObjectEventPic_RayquazaCutscene, 8, 8, 0), + overworld_frame(gObjectEventPic_RayquazaCutscene, 8, 8, 1), + overworld_frame(gObjectEventPic_RayquazaCutscene, 8, 8, 2), + overworld_frame(gObjectEventPic_RayquazaCutscene, 8, 8, 3), + overworld_frame(gObjectEventPic_RayquazaCutscene, 8, 8, 4), }; static const struct SpriteFrameImage sPicTable_BirthIslandStone[] = { @@ -2125,28 +1981,3801 @@ static const struct SpriteFrameImage sPicTable_Brandon[] = { overworld_frame(gObjectEventPic_Brandon, 2, 4, 8), }; -static const struct SpriteFrameImage sPicTable_Lugia[] = { - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 1), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 1), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 1), +static const struct SpriteFrameImage sPicTable_AnimatedBall[] = { + overworld_frame(gObjectEventPic_AnimatedBall, 2, 4, 0), + overworld_frame(gObjectEventPic_AnimatedBall, 2, 4, 1), + overworld_frame(gObjectEventPic_AnimatedBall, 2, 4, 2), + overworld_frame(gObjectEventPic_AnimatedBall, 2, 4, 3), + overworld_frame(gObjectEventPic_AnimatedBall, 2, 4, 4), + overworld_frame(gObjectEventPic_AnimatedBall, 2, 4, 5), }; -static const struct SpriteFrameImage sPicTable_HoOh[] = { - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 1), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 1), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 1), +extern const struct SpriteFrameImage gFieldEffectObjectPicTable_BallLight[]; + +static const struct SpriteFrameImage sPicTable_Bulbasaur[] = { + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 0), + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 1), + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 2), + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 3), + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 4), + overworld_frame(gObjectEventPic_Bulbasaur, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ivysaur[] = { + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 0), + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 1), + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 2), + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 3), + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 4), + overworld_frame(gObjectEventPic_Ivysaur, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Venusaur[] = { + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 0), + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 1), + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 2), + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 3), + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 4), + overworld_frame(gObjectEventPic_Venusaur, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Charmander[] = { + overworld_frame(gObjectEventPic_Charmander, 4, 4, 0), + overworld_frame(gObjectEventPic_Charmander, 4, 4, 1), + overworld_frame(gObjectEventPic_Charmander, 4, 4, 2), + overworld_frame(gObjectEventPic_Charmander, 4, 4, 3), + overworld_frame(gObjectEventPic_Charmander, 4, 4, 4), + overworld_frame(gObjectEventPic_Charmander, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Charmeleon[] = { + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 0), + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 1), + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 2), + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 3), + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 4), + overworld_frame(gObjectEventPic_Charmeleon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Charizard[] = { + overworld_frame(gObjectEventPic_Charizard, 4, 4, 0), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 1), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 2), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 3), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 4), + overworld_frame(gObjectEventPic_Charizard, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Squirtle[] = { + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 0), + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 1), + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 2), + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 3), + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 4), + overworld_frame(gObjectEventPic_Squirtle, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Wartortle[] = { + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 0), + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 1), + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 2), + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 3), + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 4), + overworld_frame(gObjectEventPic_Wartortle, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Blastoise[] = { + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 0), + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 1), + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 2), + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 3), + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 4), + overworld_frame(gObjectEventPic_Blastoise, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Caterpie[] = { + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 0), + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 1), + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 2), + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 3), + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 4), + overworld_frame(gObjectEventPic_Caterpie, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Metapod[] = { + overworld_frame(gObjectEventPic_Metapod, 4, 4, 0), + overworld_frame(gObjectEventPic_Metapod, 4, 4, 1), + overworld_frame(gObjectEventPic_Metapod, 4, 4, 2), + overworld_frame(gObjectEventPic_Metapod, 4, 4, 3), + overworld_frame(gObjectEventPic_Metapod, 4, 4, 4), + overworld_frame(gObjectEventPic_Metapod, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Butterfree[] = { + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 0), + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 1), + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 2), + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 3), + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 4), + overworld_frame(gObjectEventPic_Butterfree, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Weedle[] = { + overworld_frame(gObjectEventPic_Weedle, 4, 4, 0), + overworld_frame(gObjectEventPic_Weedle, 4, 4, 1), + overworld_frame(gObjectEventPic_Weedle, 4, 4, 2), + overworld_frame(gObjectEventPic_Weedle, 4, 4, 3), + overworld_frame(gObjectEventPic_Weedle, 4, 4, 4), + overworld_frame(gObjectEventPic_Weedle, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Kakuna[] = { + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 0), + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 1), + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 2), + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 3), + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 4), + overworld_frame(gObjectEventPic_Kakuna, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Beedrill[] = { + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 0), + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 1), + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 2), + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 3), + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 4), + overworld_frame(gObjectEventPic_Beedrill, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Pidgey[] = { + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 0), + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 1), + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 2), + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 3), + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 4), + overworld_frame(gObjectEventPic_Pidgey, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Pidgeotto[] = { + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 0), + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 1), + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 2), + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 3), + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 4), + overworld_frame(gObjectEventPic_Pidgeotto, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Pidgeot[] = { + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 0), + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 1), + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 2), + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 3), + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 4), + overworld_frame(gObjectEventPic_Pidgeot, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Rattata[] = { + overworld_frame(gObjectEventPic_Rattata, 4, 4, 0), + overworld_frame(gObjectEventPic_Rattata, 4, 4, 1), + overworld_frame(gObjectEventPic_Rattata, 4, 4, 2), + overworld_frame(gObjectEventPic_Rattata, 4, 4, 3), + overworld_frame(gObjectEventPic_Rattata, 4, 4, 4), + overworld_frame(gObjectEventPic_Rattata, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Raticate[] = { + overworld_frame(gObjectEventPic_Raticate, 4, 4, 0), + overworld_frame(gObjectEventPic_Raticate, 4, 4, 1), + overworld_frame(gObjectEventPic_Raticate, 4, 4, 2), + overworld_frame(gObjectEventPic_Raticate, 4, 4, 3), + overworld_frame(gObjectEventPic_Raticate, 4, 4, 4), + overworld_frame(gObjectEventPic_Raticate, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Spearow[] = { + overworld_frame(gObjectEventPic_Spearow, 4, 4, 0), + overworld_frame(gObjectEventPic_Spearow, 4, 4, 1), + overworld_frame(gObjectEventPic_Spearow, 4, 4, 2), + overworld_frame(gObjectEventPic_Spearow, 4, 4, 3), + overworld_frame(gObjectEventPic_Spearow, 4, 4, 4), + overworld_frame(gObjectEventPic_Spearow, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Fearow[] = { + overworld_frame(gObjectEventPic_Fearow, 4, 4, 0), + overworld_frame(gObjectEventPic_Fearow, 4, 4, 1), + overworld_frame(gObjectEventPic_Fearow, 4, 4, 2), + overworld_frame(gObjectEventPic_Fearow, 4, 4, 3), + overworld_frame(gObjectEventPic_Fearow, 4, 4, 4), + overworld_frame(gObjectEventPic_Fearow, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ekans[] = { + overworld_frame(gObjectEventPic_Ekans, 4, 4, 0), + overworld_frame(gObjectEventPic_Ekans, 4, 4, 1), + overworld_frame(gObjectEventPic_Ekans, 4, 4, 2), + overworld_frame(gObjectEventPic_Ekans, 4, 4, 3), + overworld_frame(gObjectEventPic_Ekans, 4, 4, 4), + overworld_frame(gObjectEventPic_Ekans, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Arbok[] = { + overworld_frame(gObjectEventPic_Arbok, 4, 4, 0), + overworld_frame(gObjectEventPic_Arbok, 4, 4, 1), + overworld_frame(gObjectEventPic_Arbok, 4, 4, 2), + overworld_frame(gObjectEventPic_Arbok, 4, 4, 3), + overworld_frame(gObjectEventPic_Arbok, 4, 4, 4), + overworld_frame(gObjectEventPic_Arbok, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Pikachu[] = { + overworld_frame(gObjectEventPic_Pikachu, 4, 4, 0), + overworld_frame(gObjectEventPic_Pikachu, 4, 4, 1), + overworld_frame(gObjectEventPic_Pikachu, 4, 4, 2), + overworld_frame(gObjectEventPic_Pikachu, 4, 4, 3), + overworld_frame(gObjectEventPic_Pikachu, 4, 4, 4), + overworld_frame(gObjectEventPic_Pikachu, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Raichu[] = { + overworld_frame(gObjectEventPic_Raichu, 4, 4, 0), + overworld_frame(gObjectEventPic_Raichu, 4, 4, 1), + overworld_frame(gObjectEventPic_Raichu, 4, 4, 2), + overworld_frame(gObjectEventPic_Raichu, 4, 4, 3), + overworld_frame(gObjectEventPic_Raichu, 4, 4, 4), + overworld_frame(gObjectEventPic_Raichu, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sandshrew[] = { + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 0), + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 1), + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 2), + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 3), + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 4), + overworld_frame(gObjectEventPic_Sandshrew, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sandslash[] = { + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 0), + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 1), + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 2), + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 3), + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 4), + overworld_frame(gObjectEventPic_Sandslash, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Nidoran_f[] = { + overworld_frame(gObjectEventPic_Nidoran_f, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoran_f, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoran_f, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoran_f, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoran_f, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoran_f, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Nidorina[] = { + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidorina, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Nidoqueen[] = { + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoqueen, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Nidoran_m[] = { + overworld_frame(gObjectEventPic_Nidoran_m, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoran_m, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoran_m, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoran_m, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoran_m, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoran_m, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Nidorino[] = { + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidorino, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Nidoking[] = { + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 0), + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 1), + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 2), + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 3), + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 4), + overworld_frame(gObjectEventPic_Nidoking, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Clefairy[] = { + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 0), + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 1), + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 2), + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 3), + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 4), + overworld_frame(gObjectEventPic_Clefairy, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Clefable[] = { + overworld_frame(gObjectEventPic_Clefable, 4, 4, 0), + overworld_frame(gObjectEventPic_Clefable, 4, 4, 1), + overworld_frame(gObjectEventPic_Clefable, 4, 4, 2), + overworld_frame(gObjectEventPic_Clefable, 4, 4, 3), + overworld_frame(gObjectEventPic_Clefable, 4, 4, 4), + overworld_frame(gObjectEventPic_Clefable, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Vulpix[] = { + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 0), + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 1), + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 2), + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 3), + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 4), + overworld_frame(gObjectEventPic_Vulpix, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ninetales[] = { + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 0), + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 1), + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 2), + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 3), + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 4), + overworld_frame(gObjectEventPic_Ninetales, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Jigglypuff[] = { + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 0), + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 1), + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 2), + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 3), + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 4), + overworld_frame(gObjectEventPic_Jigglypuff, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Wigglytuff[] = { + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 0), + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 1), + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 2), + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 3), + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 4), + overworld_frame(gObjectEventPic_Wigglytuff, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Zubat[] = { + overworld_frame(gObjectEventPic_Zubat, 4, 4, 0), + overworld_frame(gObjectEventPic_Zubat, 4, 4, 1), + overworld_frame(gObjectEventPic_Zubat, 4, 4, 2), + overworld_frame(gObjectEventPic_Zubat, 4, 4, 3), + overworld_frame(gObjectEventPic_Zubat, 4, 4, 4), + overworld_frame(gObjectEventPic_Zubat, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Golbat[] = { + overworld_frame(gObjectEventPic_Golbat, 4, 4, 0), + overworld_frame(gObjectEventPic_Golbat, 4, 4, 1), + overworld_frame(gObjectEventPic_Golbat, 4, 4, 2), + overworld_frame(gObjectEventPic_Golbat, 4, 4, 3), + overworld_frame(gObjectEventPic_Golbat, 4, 4, 4), + overworld_frame(gObjectEventPic_Golbat, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Oddish[] = { + overworld_frame(gObjectEventPic_Oddish, 4, 4, 0), + overworld_frame(gObjectEventPic_Oddish, 4, 4, 1), + overworld_frame(gObjectEventPic_Oddish, 4, 4, 2), + overworld_frame(gObjectEventPic_Oddish, 4, 4, 3), + overworld_frame(gObjectEventPic_Oddish, 4, 4, 4), + overworld_frame(gObjectEventPic_Oddish, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Gloom[] = { + overworld_frame(gObjectEventPic_Gloom, 4, 4, 0), + overworld_frame(gObjectEventPic_Gloom, 4, 4, 1), + overworld_frame(gObjectEventPic_Gloom, 4, 4, 2), + overworld_frame(gObjectEventPic_Gloom, 4, 4, 3), + overworld_frame(gObjectEventPic_Gloom, 4, 4, 4), + overworld_frame(gObjectEventPic_Gloom, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Vileplume[] = { + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 0), + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 1), + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 2), + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 3), + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 4), + overworld_frame(gObjectEventPic_Vileplume, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Paras[] = { + overworld_frame(gObjectEventPic_Paras, 4, 4, 0), + overworld_frame(gObjectEventPic_Paras, 4, 4, 1), + overworld_frame(gObjectEventPic_Paras, 4, 4, 2), + overworld_frame(gObjectEventPic_Paras, 4, 4, 3), + overworld_frame(gObjectEventPic_Paras, 4, 4, 4), + overworld_frame(gObjectEventPic_Paras, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Parasect[] = { + overworld_frame(gObjectEventPic_Parasect, 4, 4, 0), + overworld_frame(gObjectEventPic_Parasect, 4, 4, 1), + overworld_frame(gObjectEventPic_Parasect, 4, 4, 2), + overworld_frame(gObjectEventPic_Parasect, 4, 4, 3), + overworld_frame(gObjectEventPic_Parasect, 4, 4, 4), + overworld_frame(gObjectEventPic_Parasect, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Venonat[] = { + overworld_frame(gObjectEventPic_Venonat, 4, 4, 0), + overworld_frame(gObjectEventPic_Venonat, 4, 4, 1), + overworld_frame(gObjectEventPic_Venonat, 4, 4, 2), + overworld_frame(gObjectEventPic_Venonat, 4, 4, 3), + overworld_frame(gObjectEventPic_Venonat, 4, 4, 4), + overworld_frame(gObjectEventPic_Venonat, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Venomoth[] = { + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 0), + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 1), + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 2), + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 3), + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 4), + overworld_frame(gObjectEventPic_Venomoth, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Diglett[] = { + overworld_frame(gObjectEventPic_Diglett, 4, 4, 0), + overworld_frame(gObjectEventPic_Diglett, 4, 4, 1), + overworld_frame(gObjectEventPic_Diglett, 4, 4, 2), + overworld_frame(gObjectEventPic_Diglett, 4, 4, 3), + overworld_frame(gObjectEventPic_Diglett, 4, 4, 4), + overworld_frame(gObjectEventPic_Diglett, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Dugtrio[] = { + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 0), + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 1), + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 2), + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 3), + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 4), + overworld_frame(gObjectEventPic_Dugtrio, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Meowth[] = { + overworld_frame(gObjectEventPic_Meowth, 4, 4, 0), + overworld_frame(gObjectEventPic_Meowth, 4, 4, 1), + overworld_frame(gObjectEventPic_Meowth, 4, 4, 2), + overworld_frame(gObjectEventPic_Meowth, 4, 4, 3), + overworld_frame(gObjectEventPic_Meowth, 4, 4, 4), + overworld_frame(gObjectEventPic_Meowth, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Persian[] = { + overworld_frame(gObjectEventPic_Persian, 4, 4, 0), + overworld_frame(gObjectEventPic_Persian, 4, 4, 1), + overworld_frame(gObjectEventPic_Persian, 4, 4, 2), + overworld_frame(gObjectEventPic_Persian, 4, 4, 3), + overworld_frame(gObjectEventPic_Persian, 4, 4, 4), + overworld_frame(gObjectEventPic_Persian, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Psyduck[] = { + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 0), + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 1), + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 2), + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 3), + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 4), + overworld_frame(gObjectEventPic_Psyduck, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Golduck[] = { + overworld_frame(gObjectEventPic_Golduck, 4, 4, 0), + overworld_frame(gObjectEventPic_Golduck, 4, 4, 1), + overworld_frame(gObjectEventPic_Golduck, 4, 4, 2), + overworld_frame(gObjectEventPic_Golduck, 4, 4, 3), + overworld_frame(gObjectEventPic_Golduck, 4, 4, 4), + overworld_frame(gObjectEventPic_Golduck, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mankey[] = { + overworld_frame(gObjectEventPic_Mankey, 4, 4, 0), + overworld_frame(gObjectEventPic_Mankey, 4, 4, 1), + overworld_frame(gObjectEventPic_Mankey, 4, 4, 2), + overworld_frame(gObjectEventPic_Mankey, 4, 4, 3), + overworld_frame(gObjectEventPic_Mankey, 4, 4, 4), + overworld_frame(gObjectEventPic_Mankey, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Primeape[] = { + overworld_frame(gObjectEventPic_Primeape, 4, 4, 0), + overworld_frame(gObjectEventPic_Primeape, 4, 4, 1), + overworld_frame(gObjectEventPic_Primeape, 4, 4, 2), + overworld_frame(gObjectEventPic_Primeape, 4, 4, 3), + overworld_frame(gObjectEventPic_Primeape, 4, 4, 4), + overworld_frame(gObjectEventPic_Primeape, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Growlithe[] = { + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 0), + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 1), + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 2), + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 3), + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 4), + overworld_frame(gObjectEventPic_Growlithe, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Arcanine[] = { + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 0), + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 1), + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 2), + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 3), + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 4), + overworld_frame(gObjectEventPic_Arcanine, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Poliwag[] = { + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 0), + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 1), + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 2), + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 3), + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 4), + overworld_frame(gObjectEventPic_Poliwag, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Poliwhirl[] = { + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 0), + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 1), + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 2), + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 3), + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 4), + overworld_frame(gObjectEventPic_Poliwhirl, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Poliwrath[] = { + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 0), + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 1), + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 2), + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 3), + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 4), + overworld_frame(gObjectEventPic_Poliwrath, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Abra[] = { + overworld_frame(gObjectEventPic_Abra, 4, 4, 0), + overworld_frame(gObjectEventPic_Abra, 4, 4, 1), + overworld_frame(gObjectEventPic_Abra, 4, 4, 2), + overworld_frame(gObjectEventPic_Abra, 4, 4, 3), + overworld_frame(gObjectEventPic_Abra, 4, 4, 4), + overworld_frame(gObjectEventPic_Abra, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Kadabra[] = { + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 0), + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 1), + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 2), + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 3), + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 4), + overworld_frame(gObjectEventPic_Kadabra, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Alakazam[] = { + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 0), + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 1), + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 2), + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 3), + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 4), + overworld_frame(gObjectEventPic_Alakazam, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Machop[] = { + overworld_frame(gObjectEventPic_Machop, 4, 4, 0), + overworld_frame(gObjectEventPic_Machop, 4, 4, 1), + overworld_frame(gObjectEventPic_Machop, 4, 4, 2), + overworld_frame(gObjectEventPic_Machop, 4, 4, 3), + overworld_frame(gObjectEventPic_Machop, 4, 4, 4), + overworld_frame(gObjectEventPic_Machop, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Machoke[] = { + overworld_frame(gObjectEventPic_Machoke, 4, 4, 0), + overworld_frame(gObjectEventPic_Machoke, 4, 4, 1), + overworld_frame(gObjectEventPic_Machoke, 4, 4, 2), + overworld_frame(gObjectEventPic_Machoke, 4, 4, 3), + overworld_frame(gObjectEventPic_Machoke, 4, 4, 4), + overworld_frame(gObjectEventPic_Machoke, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Machamp[] = { + overworld_frame(gObjectEventPic_Machamp, 4, 4, 0), + overworld_frame(gObjectEventPic_Machamp, 4, 4, 1), + overworld_frame(gObjectEventPic_Machamp, 4, 4, 2), + overworld_frame(gObjectEventPic_Machamp, 4, 4, 3), + overworld_frame(gObjectEventPic_Machamp, 4, 4, 4), + overworld_frame(gObjectEventPic_Machamp, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Bellsprout[] = { + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 0), + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 1), + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 2), + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 3), + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 4), + overworld_frame(gObjectEventPic_Bellsprout, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Weepinbell[] = { + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 0), + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 1), + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 2), + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 3), + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 4), + overworld_frame(gObjectEventPic_Weepinbell, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Victreebel[] = { + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 0), + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 1), + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 2), + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 3), + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 4), + overworld_frame(gObjectEventPic_Victreebel, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Tentacool[] = { + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 0), + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 1), + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 2), + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 3), + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 4), + overworld_frame(gObjectEventPic_Tentacool, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Tentacruel[] = { + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 0), + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 1), + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 2), + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 3), + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 4), + overworld_frame(gObjectEventPic_Tentacruel, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Geodude[] = { + overworld_frame(gObjectEventPic_Geodude, 4, 4, 0), + overworld_frame(gObjectEventPic_Geodude, 4, 4, 1), + overworld_frame(gObjectEventPic_Geodude, 4, 4, 2), + overworld_frame(gObjectEventPic_Geodude, 4, 4, 3), + overworld_frame(gObjectEventPic_Geodude, 4, 4, 4), + overworld_frame(gObjectEventPic_Geodude, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Graveler[] = { + overworld_frame(gObjectEventPic_Graveler, 4, 4, 0), + overworld_frame(gObjectEventPic_Graveler, 4, 4, 1), + overworld_frame(gObjectEventPic_Graveler, 4, 4, 2), + overworld_frame(gObjectEventPic_Graveler, 4, 4, 3), + overworld_frame(gObjectEventPic_Graveler, 4, 4, 4), + overworld_frame(gObjectEventPic_Graveler, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Golem[] = { + overworld_frame(gObjectEventPic_Golem, 4, 4, 0), + overworld_frame(gObjectEventPic_Golem, 4, 4, 1), + overworld_frame(gObjectEventPic_Golem, 4, 4, 2), + overworld_frame(gObjectEventPic_Golem, 4, 4, 3), + overworld_frame(gObjectEventPic_Golem, 4, 4, 4), + overworld_frame(gObjectEventPic_Golem, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ponyta[] = { + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 0), + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 1), + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 2), + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 3), + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 4), + overworld_frame(gObjectEventPic_Ponyta, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Rapidash[] = { + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 0), + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 1), + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 2), + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 3), + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 4), + overworld_frame(gObjectEventPic_Rapidash, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Slowpoke[] = { + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 0), + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 1), + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 2), + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 3), + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 4), + overworld_frame(gObjectEventPic_Slowpoke, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Slowbro[] = { + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 0), + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 1), + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 2), + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 3), + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 4), + overworld_frame(gObjectEventPic_Slowbro, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Magnemite[] = { + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 0), + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 1), + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 2), + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 3), + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 4), + overworld_frame(gObjectEventPic_Magnemite, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Magneton[] = { + overworld_frame(gObjectEventPic_Magneton, 4, 4, 0), + overworld_frame(gObjectEventPic_Magneton, 4, 4, 1), + overworld_frame(gObjectEventPic_Magneton, 4, 4, 2), + overworld_frame(gObjectEventPic_Magneton, 4, 4, 3), + overworld_frame(gObjectEventPic_Magneton, 4, 4, 4), + overworld_frame(gObjectEventPic_Magneton, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Farfetchd[] = { + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 0), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 1), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 2), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 3), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 4), + overworld_frame(gObjectEventPic_Farfetchd, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Doduo[] = { + overworld_frame(gObjectEventPic_Doduo, 4, 4, 0), + overworld_frame(gObjectEventPic_Doduo, 4, 4, 1), + overworld_frame(gObjectEventPic_Doduo, 4, 4, 2), + overworld_frame(gObjectEventPic_Doduo, 4, 4, 3), + overworld_frame(gObjectEventPic_Doduo, 4, 4, 4), + overworld_frame(gObjectEventPic_Doduo, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Dodrio[] = { + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 0), + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 1), + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 2), + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 3), + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 4), + overworld_frame(gObjectEventPic_Dodrio, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Seel[] = { + overworld_frame(gObjectEventPic_Seel, 4, 4, 0), + overworld_frame(gObjectEventPic_Seel, 4, 4, 1), + overworld_frame(gObjectEventPic_Seel, 4, 4, 2), + overworld_frame(gObjectEventPic_Seel, 4, 4, 3), + overworld_frame(gObjectEventPic_Seel, 4, 4, 4), + overworld_frame(gObjectEventPic_Seel, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Dewgong[] = { + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 0), + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 1), + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 2), + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 3), + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 4), + overworld_frame(gObjectEventPic_Dewgong, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Grimer[] = { + overworld_frame(gObjectEventPic_Grimer, 4, 4, 0), + overworld_frame(gObjectEventPic_Grimer, 4, 4, 1), + overworld_frame(gObjectEventPic_Grimer, 4, 4, 2), + overworld_frame(gObjectEventPic_Grimer, 4, 4, 3), + overworld_frame(gObjectEventPic_Grimer, 4, 4, 4), + overworld_frame(gObjectEventPic_Grimer, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Muk[] = { + overworld_frame(gObjectEventPic_Muk, 4, 4, 0), + overworld_frame(gObjectEventPic_Muk, 4, 4, 1), + overworld_frame(gObjectEventPic_Muk, 4, 4, 2), + overworld_frame(gObjectEventPic_Muk, 4, 4, 3), + overworld_frame(gObjectEventPic_Muk, 4, 4, 4), + overworld_frame(gObjectEventPic_Muk, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Shellder[] = { + overworld_frame(gObjectEventPic_Shellder, 4, 4, 0), + overworld_frame(gObjectEventPic_Shellder, 4, 4, 1), + overworld_frame(gObjectEventPic_Shellder, 4, 4, 2), + overworld_frame(gObjectEventPic_Shellder, 4, 4, 3), + overworld_frame(gObjectEventPic_Shellder, 4, 4, 4), + overworld_frame(gObjectEventPic_Shellder, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Cloyster[] = { + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 0), + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 1), + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 2), + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 3), + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 4), + overworld_frame(gObjectEventPic_Cloyster, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Gastly[] = { + overworld_frame(gObjectEventPic_Gastly, 4, 4, 0), + overworld_frame(gObjectEventPic_Gastly, 4, 4, 1), + overworld_frame(gObjectEventPic_Gastly, 4, 4, 2), + overworld_frame(gObjectEventPic_Gastly, 4, 4, 3), + overworld_frame(gObjectEventPic_Gastly, 4, 4, 4), + overworld_frame(gObjectEventPic_Gastly, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Haunter[] = { + overworld_frame(gObjectEventPic_Haunter, 4, 4, 0), + overworld_frame(gObjectEventPic_Haunter, 4, 4, 1), + overworld_frame(gObjectEventPic_Haunter, 4, 4, 2), + overworld_frame(gObjectEventPic_Haunter, 4, 4, 3), + overworld_frame(gObjectEventPic_Haunter, 4, 4, 4), + overworld_frame(gObjectEventPic_Haunter, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Gengar[] = { + overworld_frame(gObjectEventPic_Gengar, 4, 4, 0), + overworld_frame(gObjectEventPic_Gengar, 4, 4, 1), + overworld_frame(gObjectEventPic_Gengar, 4, 4, 2), + overworld_frame(gObjectEventPic_Gengar, 4, 4, 3), + overworld_frame(gObjectEventPic_Gengar, 4, 4, 4), + overworld_frame(gObjectEventPic_Gengar, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Onix[] = { + overworld_frame(gObjectEventPic_Onix, 4, 4, 0), + overworld_frame(gObjectEventPic_Onix, 4, 4, 1), + overworld_frame(gObjectEventPic_Onix, 4, 4, 2), + overworld_frame(gObjectEventPic_Onix, 4, 4, 3), + overworld_frame(gObjectEventPic_Onix, 4, 4, 4), + overworld_frame(gObjectEventPic_Onix, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Drowzee[] = { + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 0), + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 1), + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 2), + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 3), + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 4), + overworld_frame(gObjectEventPic_Drowzee, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Hypno[] = { + overworld_frame(gObjectEventPic_Hypno, 4, 4, 0), + overworld_frame(gObjectEventPic_Hypno, 4, 4, 1), + overworld_frame(gObjectEventPic_Hypno, 4, 4, 2), + overworld_frame(gObjectEventPic_Hypno, 4, 4, 3), + overworld_frame(gObjectEventPic_Hypno, 4, 4, 4), + overworld_frame(gObjectEventPic_Hypno, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Krabby[] = { + overworld_frame(gObjectEventPic_Krabby, 4, 4, 0), + overworld_frame(gObjectEventPic_Krabby, 4, 4, 1), + overworld_frame(gObjectEventPic_Krabby, 4, 4, 2), + overworld_frame(gObjectEventPic_Krabby, 4, 4, 3), + overworld_frame(gObjectEventPic_Krabby, 4, 4, 4), + overworld_frame(gObjectEventPic_Krabby, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Kingler[] = { + overworld_frame(gObjectEventPic_Kingler, 4, 4, 0), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 1), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 2), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 3), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 4), + overworld_frame(gObjectEventPic_Kingler, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Voltorb[] = { + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 0), + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 1), + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 2), + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 3), + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 4), + overworld_frame(gObjectEventPic_Voltorb, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Electrode[] = { + overworld_frame(gObjectEventPic_Electrode, 4, 4, 0), + overworld_frame(gObjectEventPic_Electrode, 4, 4, 1), + overworld_frame(gObjectEventPic_Electrode, 4, 4, 2), + overworld_frame(gObjectEventPic_Electrode, 4, 4, 3), + overworld_frame(gObjectEventPic_Electrode, 4, 4, 4), + overworld_frame(gObjectEventPic_Electrode, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Exeggcute[] = { + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 0), + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 1), + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 2), + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 3), + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 4), + overworld_frame(gObjectEventPic_Exeggcute, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Exeggutor[] = { + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 0), + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 1), + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 2), + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 3), + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 4), + overworld_frame(gObjectEventPic_Exeggutor, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Cubone[] = { + overworld_frame(gObjectEventPic_Cubone, 4, 4, 0), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 1), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 2), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 3), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 4), + overworld_frame(gObjectEventPic_Cubone, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Marowak[] = { + overworld_frame(gObjectEventPic_Marowak, 4, 4, 0), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 1), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 2), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 3), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 4), + overworld_frame(gObjectEventPic_Marowak, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Hitmonlee[] = { + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 0), + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 1), + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 2), + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 3), + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 4), + overworld_frame(gObjectEventPic_Hitmonlee, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Hitmonchan[] = { + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 0), + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 1), + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 2), + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 3), + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 4), + overworld_frame(gObjectEventPic_Hitmonchan, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Lickitung[] = { + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 0), + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 1), + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 2), + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 3), + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 4), + overworld_frame(gObjectEventPic_Lickitung, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Koffing[] = { + overworld_frame(gObjectEventPic_Koffing, 4, 4, 0), + overworld_frame(gObjectEventPic_Koffing, 4, 4, 1), + overworld_frame(gObjectEventPic_Koffing, 4, 4, 2), + overworld_frame(gObjectEventPic_Koffing, 4, 4, 3), + overworld_frame(gObjectEventPic_Koffing, 4, 4, 4), + overworld_frame(gObjectEventPic_Koffing, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Weezing[] = { + overworld_frame(gObjectEventPic_Weezing, 4, 4, 0), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 1), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 2), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 3), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 4), + overworld_frame(gObjectEventPic_Weezing, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Rhyhorn[] = { + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 0), + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 1), + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 2), + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 3), + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 4), + overworld_frame(gObjectEventPic_Rhyhorn, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Rhydon[] = { + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 0), + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 1), + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 2), + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 3), + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 4), + overworld_frame(gObjectEventPic_Rhydon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Chansey[] = { + overworld_frame(gObjectEventPic_Chansey, 4, 4, 0), + overworld_frame(gObjectEventPic_Chansey, 4, 4, 1), + overworld_frame(gObjectEventPic_Chansey, 4, 4, 2), + overworld_frame(gObjectEventPic_Chansey, 4, 4, 3), + overworld_frame(gObjectEventPic_Chansey, 4, 4, 4), + overworld_frame(gObjectEventPic_Chansey, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Tangela[] = { + overworld_frame(gObjectEventPic_Tangela, 4, 4, 0), + overworld_frame(gObjectEventPic_Tangela, 4, 4, 1), + overworld_frame(gObjectEventPic_Tangela, 4, 4, 2), + overworld_frame(gObjectEventPic_Tangela, 4, 4, 3), + overworld_frame(gObjectEventPic_Tangela, 4, 4, 4), + overworld_frame(gObjectEventPic_Tangela, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Kangaskhan[] = { + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 0), + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 1), + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 2), + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 3), + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 4), + overworld_frame(gObjectEventPic_Kangaskhan, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Horsea[] = { + overworld_frame(gObjectEventPic_Horsea, 4, 4, 0), + overworld_frame(gObjectEventPic_Horsea, 4, 4, 1), + overworld_frame(gObjectEventPic_Horsea, 4, 4, 2), + overworld_frame(gObjectEventPic_Horsea, 4, 4, 3), + overworld_frame(gObjectEventPic_Horsea, 4, 4, 4), + overworld_frame(gObjectEventPic_Horsea, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Seadra[] = { + overworld_frame(gObjectEventPic_Seadra, 4, 4, 0), + overworld_frame(gObjectEventPic_Seadra, 4, 4, 1), + overworld_frame(gObjectEventPic_Seadra, 4, 4, 2), + overworld_frame(gObjectEventPic_Seadra, 4, 4, 3), + overworld_frame(gObjectEventPic_Seadra, 4, 4, 4), + overworld_frame(gObjectEventPic_Seadra, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Goldeen[] = { + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 0), + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 1), + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 2), + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 3), + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 4), + overworld_frame(gObjectEventPic_Goldeen, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Seaking[] = { + overworld_frame(gObjectEventPic_Seaking, 4, 4, 0), + overworld_frame(gObjectEventPic_Seaking, 4, 4, 1), + overworld_frame(gObjectEventPic_Seaking, 4, 4, 2), + overworld_frame(gObjectEventPic_Seaking, 4, 4, 3), + overworld_frame(gObjectEventPic_Seaking, 4, 4, 4), + overworld_frame(gObjectEventPic_Seaking, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Staryu[] = { + overworld_frame(gObjectEventPic_Staryu, 4, 4, 0), + overworld_frame(gObjectEventPic_Staryu, 4, 4, 1), + overworld_frame(gObjectEventPic_Staryu, 4, 4, 2), + overworld_frame(gObjectEventPic_Staryu, 4, 4, 3), + overworld_frame(gObjectEventPic_Staryu, 4, 4, 4), + overworld_frame(gObjectEventPic_Staryu, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Starmie[] = { + overworld_frame(gObjectEventPic_Starmie, 4, 4, 0), + overworld_frame(gObjectEventPic_Starmie, 4, 4, 1), + overworld_frame(gObjectEventPic_Starmie, 4, 4, 2), + overworld_frame(gObjectEventPic_Starmie, 4, 4, 3), + overworld_frame(gObjectEventPic_Starmie, 4, 4, 4), + overworld_frame(gObjectEventPic_Starmie, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mr_Mime[] = { + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 0), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 1), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 2), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 3), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 4), + overworld_frame(gObjectEventPic_Mr_Mime, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Scyther[] = { + overworld_frame(gObjectEventPic_Scyther, 4, 4, 0), + overworld_frame(gObjectEventPic_Scyther, 4, 4, 1), + overworld_frame(gObjectEventPic_Scyther, 4, 4, 2), + overworld_frame(gObjectEventPic_Scyther, 4, 4, 3), + overworld_frame(gObjectEventPic_Scyther, 4, 4, 4), + overworld_frame(gObjectEventPic_Scyther, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Jynx[] = { + overworld_frame(gObjectEventPic_Jynx, 4, 4, 0), + overworld_frame(gObjectEventPic_Jynx, 4, 4, 1), + overworld_frame(gObjectEventPic_Jynx, 4, 4, 2), + overworld_frame(gObjectEventPic_Jynx, 4, 4, 3), + overworld_frame(gObjectEventPic_Jynx, 4, 4, 4), + overworld_frame(gObjectEventPic_Jynx, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Electabuzz[] = { + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 0), + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 1), + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 2), + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 3), + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 4), + overworld_frame(gObjectEventPic_Electabuzz, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Magmar[] = { + overworld_frame(gObjectEventPic_Magmar, 4, 4, 0), + overworld_frame(gObjectEventPic_Magmar, 4, 4, 1), + overworld_frame(gObjectEventPic_Magmar, 4, 4, 2), + overworld_frame(gObjectEventPic_Magmar, 4, 4, 3), + overworld_frame(gObjectEventPic_Magmar, 4, 4, 4), + overworld_frame(gObjectEventPic_Magmar, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Pinsir[] = { + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 0), + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 1), + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 2), + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 3), + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 4), + overworld_frame(gObjectEventPic_Pinsir, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Tauros[] = { + overworld_frame(gObjectEventPic_Tauros, 4, 4, 0), + overworld_frame(gObjectEventPic_Tauros, 4, 4, 1), + overworld_frame(gObjectEventPic_Tauros, 4, 4, 2), + overworld_frame(gObjectEventPic_Tauros, 4, 4, 3), + overworld_frame(gObjectEventPic_Tauros, 4, 4, 4), + overworld_frame(gObjectEventPic_Tauros, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Magikarp[] = { + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 0), + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 1), + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 2), + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 3), + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 4), + overworld_frame(gObjectEventPic_Magikarp, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Gyarados[] = { + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 0), + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 1), + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 2), + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 3), + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 4), + overworld_frame(gObjectEventPic_Gyarados, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Lapras[] = { + overworld_frame(gObjectEventPic_Lapras, 4, 4, 0), + overworld_frame(gObjectEventPic_Lapras, 4, 4, 1), + overworld_frame(gObjectEventPic_Lapras, 4, 4, 2), + overworld_frame(gObjectEventPic_Lapras, 4, 4, 3), + overworld_frame(gObjectEventPic_Lapras, 4, 4, 4), + overworld_frame(gObjectEventPic_Lapras, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ditto[] = { + overworld_frame(gObjectEventPic_Ditto, 4, 4, 0), + overworld_frame(gObjectEventPic_Ditto, 4, 4, 1), + overworld_frame(gObjectEventPic_Ditto, 4, 4, 2), + overworld_frame(gObjectEventPic_Ditto, 4, 4, 3), + overworld_frame(gObjectEventPic_Ditto, 4, 4, 4), + overworld_frame(gObjectEventPic_Ditto, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Eevee[] = { + overworld_frame(gObjectEventPic_Eevee, 4, 4, 0), + overworld_frame(gObjectEventPic_Eevee, 4, 4, 1), + overworld_frame(gObjectEventPic_Eevee, 4, 4, 2), + overworld_frame(gObjectEventPic_Eevee, 4, 4, 3), + overworld_frame(gObjectEventPic_Eevee, 4, 4, 4), + overworld_frame(gObjectEventPic_Eevee, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Vaporeon[] = { + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 0), + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 1), + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 2), + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 3), + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 4), + overworld_frame(gObjectEventPic_Vaporeon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Jolteon[] = { + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 0), + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 1), + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 2), + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 3), + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 4), + overworld_frame(gObjectEventPic_Jolteon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Flareon[] = { + overworld_frame(gObjectEventPic_Flareon, 4, 4, 0), + overworld_frame(gObjectEventPic_Flareon, 4, 4, 1), + overworld_frame(gObjectEventPic_Flareon, 4, 4, 2), + overworld_frame(gObjectEventPic_Flareon, 4, 4, 3), + overworld_frame(gObjectEventPic_Flareon, 4, 4, 4), + overworld_frame(gObjectEventPic_Flareon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Porygon[] = { + overworld_frame(gObjectEventPic_Porygon, 4, 4, 0), + overworld_frame(gObjectEventPic_Porygon, 4, 4, 1), + overworld_frame(gObjectEventPic_Porygon, 4, 4, 2), + overworld_frame(gObjectEventPic_Porygon, 4, 4, 3), + overworld_frame(gObjectEventPic_Porygon, 4, 4, 4), + overworld_frame(gObjectEventPic_Porygon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Omanyte[] = { + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 0), + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 1), + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 2), + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 3), + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 4), + overworld_frame(gObjectEventPic_Omanyte, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Omastar[] = { + overworld_frame(gObjectEventPic_Omastar, 4, 4, 0), + overworld_frame(gObjectEventPic_Omastar, 4, 4, 1), + overworld_frame(gObjectEventPic_Omastar, 4, 4, 2), + overworld_frame(gObjectEventPic_Omastar, 4, 4, 3), + overworld_frame(gObjectEventPic_Omastar, 4, 4, 4), + overworld_frame(gObjectEventPic_Omastar, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Kabuto[] = { + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 0), + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 1), + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 2), + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 3), + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 4), + overworld_frame(gObjectEventPic_Kabuto, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Kabutops[] = { + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 0), + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 1), + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 2), + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 3), + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 4), + overworld_frame(gObjectEventPic_Kabutops, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Aerodactyl[] = { + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 0), + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 1), + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 2), + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 3), + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 4), + overworld_frame(gObjectEventPic_Aerodactyl, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Snorlax[] = { + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 0), + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 1), + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 2), + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 3), + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 4), + overworld_frame(gObjectEventPic_Snorlax, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Articuno[] = { + overworld_frame(gObjectEventPic_Articuno, 4, 4, 0), + overworld_frame(gObjectEventPic_Articuno, 4, 4, 1), + overworld_frame(gObjectEventPic_Articuno, 4, 4, 2), + overworld_frame(gObjectEventPic_Articuno, 4, 4, 3), + overworld_frame(gObjectEventPic_Articuno, 4, 4, 4), + overworld_frame(gObjectEventPic_Articuno, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Zapdos[] = { + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 0), + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 1), + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 2), + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 3), + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 4), + overworld_frame(gObjectEventPic_Zapdos, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Moltres[] = { + overworld_frame(gObjectEventPic_Moltres, 4, 4, 0), + overworld_frame(gObjectEventPic_Moltres, 4, 4, 1), + overworld_frame(gObjectEventPic_Moltres, 4, 4, 2), + overworld_frame(gObjectEventPic_Moltres, 4, 4, 3), + overworld_frame(gObjectEventPic_Moltres, 4, 4, 4), + overworld_frame(gObjectEventPic_Moltres, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Dratini[] = { + overworld_frame(gObjectEventPic_Dratini, 4, 4, 0), + overworld_frame(gObjectEventPic_Dratini, 4, 4, 1), + overworld_frame(gObjectEventPic_Dratini, 4, 4, 2), + overworld_frame(gObjectEventPic_Dratini, 4, 4, 3), + overworld_frame(gObjectEventPic_Dratini, 4, 4, 4), + overworld_frame(gObjectEventPic_Dratini, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Dragonair[] = { + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 0), + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 1), + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 2), + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 3), + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 4), + overworld_frame(gObjectEventPic_Dragonair, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Dragonite[] = { + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 0), + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 1), + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 2), + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 3), + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 4), + overworld_frame(gObjectEventPic_Dragonite, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mewtwo[] = { + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 0), + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 1), + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 2), + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 3), + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 4), + overworld_frame(gObjectEventPic_Mewtwo, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mew[] = { + overworld_frame(gObjectEventPic_Mew, 4, 4, 0), + overworld_frame(gObjectEventPic_Mew, 4, 4, 1), + overworld_frame(gObjectEventPic_Mew, 4, 4, 2), + overworld_frame(gObjectEventPic_Mew, 4, 4, 3), + overworld_frame(gObjectEventPic_Mew, 4, 4, 4), + overworld_frame(gObjectEventPic_Mew, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Chikorita[] = { + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 0), + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 1), + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 2), + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 3), + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 4), + overworld_frame(gObjectEventPic_Chikorita, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Bayleef[] = { + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 0), + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 1), + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 2), + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 3), + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 4), + overworld_frame(gObjectEventPic_Bayleef, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Meganium[] = { + overworld_frame(gObjectEventPic_Meganium, 4, 4, 0), + overworld_frame(gObjectEventPic_Meganium, 4, 4, 1), + overworld_frame(gObjectEventPic_Meganium, 4, 4, 2), + overworld_frame(gObjectEventPic_Meganium, 4, 4, 3), + overworld_frame(gObjectEventPic_Meganium, 4, 4, 4), + overworld_frame(gObjectEventPic_Meganium, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Cyndaquil[] = { + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 0), + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 1), + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 2), + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 3), + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 4), + overworld_frame(gObjectEventPic_Cyndaquil, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Quilava[] = { + overworld_frame(gObjectEventPic_Quilava, 4, 4, 0), + overworld_frame(gObjectEventPic_Quilava, 4, 4, 1), + overworld_frame(gObjectEventPic_Quilava, 4, 4, 2), + overworld_frame(gObjectEventPic_Quilava, 4, 4, 3), + overworld_frame(gObjectEventPic_Quilava, 4, 4, 4), + overworld_frame(gObjectEventPic_Quilava, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Typhlosion[] = { + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 0), + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 1), + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 2), + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 3), + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 4), + overworld_frame(gObjectEventPic_Typhlosion, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Totodile[] = { + overworld_frame(gObjectEventPic_Totodile, 4, 4, 0), + overworld_frame(gObjectEventPic_Totodile, 4, 4, 1), + overworld_frame(gObjectEventPic_Totodile, 4, 4, 2), + overworld_frame(gObjectEventPic_Totodile, 4, 4, 3), + overworld_frame(gObjectEventPic_Totodile, 4, 4, 4), + overworld_frame(gObjectEventPic_Totodile, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Croconaw[] = { + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 0), + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 1), + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 2), + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 3), + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 4), + overworld_frame(gObjectEventPic_Croconaw, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Feraligatr[] = { + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 0), + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 1), + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 2), + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 3), + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 4), + overworld_frame(gObjectEventPic_Feraligatr, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sentret[] = { + overworld_frame(gObjectEventPic_Sentret, 4, 4, 0), + overworld_frame(gObjectEventPic_Sentret, 4, 4, 1), + overworld_frame(gObjectEventPic_Sentret, 4, 4, 2), + overworld_frame(gObjectEventPic_Sentret, 4, 4, 3), + overworld_frame(gObjectEventPic_Sentret, 4, 4, 4), + overworld_frame(gObjectEventPic_Sentret, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Furret[] = { + overworld_frame(gObjectEventPic_Furret, 4, 4, 0), + overworld_frame(gObjectEventPic_Furret, 4, 4, 1), + overworld_frame(gObjectEventPic_Furret, 4, 4, 2), + overworld_frame(gObjectEventPic_Furret, 4, 4, 3), + overworld_frame(gObjectEventPic_Furret, 4, 4, 4), + overworld_frame(gObjectEventPic_Furret, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Hoothoot[] = { + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 0), + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 1), + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 2), + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 3), + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 4), + overworld_frame(gObjectEventPic_Hoothoot, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Noctowl[] = { + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 0), + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 1), + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 2), + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 3), + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 4), + overworld_frame(gObjectEventPic_Noctowl, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ledyba[] = { + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 0), + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 1), + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 2), + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 3), + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 4), + overworld_frame(gObjectEventPic_Ledyba, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ledian[] = { + overworld_frame(gObjectEventPic_Ledian, 4, 4, 0), + overworld_frame(gObjectEventPic_Ledian, 4, 4, 1), + overworld_frame(gObjectEventPic_Ledian, 4, 4, 2), + overworld_frame(gObjectEventPic_Ledian, 4, 4, 3), + overworld_frame(gObjectEventPic_Ledian, 4, 4, 4), + overworld_frame(gObjectEventPic_Ledian, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Spinarak[] = { + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 0), + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 1), + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 2), + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 3), + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 4), + overworld_frame(gObjectEventPic_Spinarak, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ariados[] = { + overworld_frame(gObjectEventPic_Ariados, 4, 4, 0), + overworld_frame(gObjectEventPic_Ariados, 4, 4, 1), + overworld_frame(gObjectEventPic_Ariados, 4, 4, 2), + overworld_frame(gObjectEventPic_Ariados, 4, 4, 3), + overworld_frame(gObjectEventPic_Ariados, 4, 4, 4), + overworld_frame(gObjectEventPic_Ariados, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Crobat[] = { + overworld_frame(gObjectEventPic_Crobat, 4, 4, 0), + overworld_frame(gObjectEventPic_Crobat, 4, 4, 1), + overworld_frame(gObjectEventPic_Crobat, 4, 4, 2), + overworld_frame(gObjectEventPic_Crobat, 4, 4, 3), + overworld_frame(gObjectEventPic_Crobat, 4, 4, 4), + overworld_frame(gObjectEventPic_Crobat, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Chinchou[] = { + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 0), + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 1), + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 2), + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 3), + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 4), + overworld_frame(gObjectEventPic_Chinchou, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Lanturn[] = { + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 0), + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 1), + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 2), + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 3), + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 4), + overworld_frame(gObjectEventPic_Lanturn, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Pichu[] = { + overworld_frame(gObjectEventPic_Pichu, 4, 4, 0), + overworld_frame(gObjectEventPic_Pichu, 4, 4, 1), + overworld_frame(gObjectEventPic_Pichu, 4, 4, 2), + overworld_frame(gObjectEventPic_Pichu, 4, 4, 3), + overworld_frame(gObjectEventPic_Pichu, 4, 4, 4), + overworld_frame(gObjectEventPic_Pichu, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Cleffa[] = { + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 0), + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 1), + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 2), + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 3), + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 4), + overworld_frame(gObjectEventPic_Cleffa, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Igglybuff[] = { + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 0), + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 1), + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 2), + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 3), + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 4), + overworld_frame(gObjectEventPic_Igglybuff, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Togepi[] = { + overworld_frame(gObjectEventPic_Togepi, 4, 4, 0), + overworld_frame(gObjectEventPic_Togepi, 4, 4, 1), + overworld_frame(gObjectEventPic_Togepi, 4, 4, 2), + overworld_frame(gObjectEventPic_Togepi, 4, 4, 3), + overworld_frame(gObjectEventPic_Togepi, 4, 4, 4), + overworld_frame(gObjectEventPic_Togepi, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Togetic[] = { + overworld_frame(gObjectEventPic_Togetic, 4, 4, 0), + overworld_frame(gObjectEventPic_Togetic, 4, 4, 1), + overworld_frame(gObjectEventPic_Togetic, 4, 4, 2), + overworld_frame(gObjectEventPic_Togetic, 4, 4, 3), + overworld_frame(gObjectEventPic_Togetic, 4, 4, 4), + overworld_frame(gObjectEventPic_Togetic, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Natu[] = { + overworld_frame(gObjectEventPic_Natu, 4, 4, 0), + overworld_frame(gObjectEventPic_Natu, 4, 4, 1), + overworld_frame(gObjectEventPic_Natu, 4, 4, 2), + overworld_frame(gObjectEventPic_Natu, 4, 4, 3), + overworld_frame(gObjectEventPic_Natu, 4, 4, 4), + overworld_frame(gObjectEventPic_Natu, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Xatu[] = { + overworld_frame(gObjectEventPic_Xatu, 4, 4, 0), + overworld_frame(gObjectEventPic_Xatu, 4, 4, 1), + overworld_frame(gObjectEventPic_Xatu, 4, 4, 2), + overworld_frame(gObjectEventPic_Xatu, 4, 4, 3), + overworld_frame(gObjectEventPic_Xatu, 4, 4, 4), + overworld_frame(gObjectEventPic_Xatu, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mareep[] = { + overworld_frame(gObjectEventPic_Mareep, 4, 4, 0), + overworld_frame(gObjectEventPic_Mareep, 4, 4, 1), + overworld_frame(gObjectEventPic_Mareep, 4, 4, 2), + overworld_frame(gObjectEventPic_Mareep, 4, 4, 3), + overworld_frame(gObjectEventPic_Mareep, 4, 4, 4), + overworld_frame(gObjectEventPic_Mareep, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Flaaffy[] = { + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 0), + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 1), + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 2), + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 3), + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 4), + overworld_frame(gObjectEventPic_Flaaffy, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ampharos[] = { + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 0), + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 1), + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 2), + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 3), + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 4), + overworld_frame(gObjectEventPic_Ampharos, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Bellossom[] = { + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 0), + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 1), + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 2), + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 3), + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 4), + overworld_frame(gObjectEventPic_Bellossom, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Marill[] = { + overworld_frame(gObjectEventPic_Marill, 4, 4, 0), + overworld_frame(gObjectEventPic_Marill, 4, 4, 1), + overworld_frame(gObjectEventPic_Marill, 4, 4, 2), + overworld_frame(gObjectEventPic_Marill, 4, 4, 3), + overworld_frame(gObjectEventPic_Marill, 4, 4, 4), + overworld_frame(gObjectEventPic_Marill, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Azumarill[] = { + overworld_frame(gObjectEventPic_Azumarill, 4, 4, 0), + overworld_frame(gObjectEventPic_Azumarill, 4, 4, 1), + overworld_frame(gObjectEventPic_Azumarill, 4, 4, 2), + overworld_frame(gObjectEventPic_Azumarill, 4, 4, 3), + overworld_frame(gObjectEventPic_Azumarill, 4, 4, 4), + overworld_frame(gObjectEventPic_Azumarill, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sudowoodo[] = { + overworld_frame(gObjectEventPic_Sudowoodo, 4, 4, 0), + overworld_frame(gObjectEventPic_Sudowoodo, 4, 4, 1), + overworld_frame(gObjectEventPic_Sudowoodo, 4, 4, 2), + overworld_frame(gObjectEventPic_Sudowoodo, 4, 4, 3), + overworld_frame(gObjectEventPic_Sudowoodo, 4, 4, 4), + overworld_frame(gObjectEventPic_Sudowoodo, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Politoed[] = { + overworld_frame(gObjectEventPic_Politoed, 4, 4, 0), + overworld_frame(gObjectEventPic_Politoed, 4, 4, 1), + overworld_frame(gObjectEventPic_Politoed, 4, 4, 2), + overworld_frame(gObjectEventPic_Politoed, 4, 4, 3), + overworld_frame(gObjectEventPic_Politoed, 4, 4, 4), + overworld_frame(gObjectEventPic_Politoed, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Hoppip[] = { + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 0), + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 1), + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 2), + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 3), + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 4), + overworld_frame(gObjectEventPic_Hoppip, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Skiploom[] = { + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 0), + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 1), + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 2), + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 3), + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 4), + overworld_frame(gObjectEventPic_Skiploom, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Jumpluff[] = { + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 0), + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 1), + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 2), + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 3), + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 4), + overworld_frame(gObjectEventPic_Jumpluff, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Aipom[] = { + overworld_frame(gObjectEventPic_Aipom, 4, 4, 0), + overworld_frame(gObjectEventPic_Aipom, 4, 4, 1), + overworld_frame(gObjectEventPic_Aipom, 4, 4, 2), + overworld_frame(gObjectEventPic_Aipom, 4, 4, 3), + overworld_frame(gObjectEventPic_Aipom, 4, 4, 4), + overworld_frame(gObjectEventPic_Aipom, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sunkern[] = { + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 0), + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 1), + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 2), + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 3), + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 4), + overworld_frame(gObjectEventPic_Sunkern, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sunflora[] = { + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 0), + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 1), + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 2), + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 3), + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 4), + overworld_frame(gObjectEventPic_Sunflora, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Yanma[] = { + overworld_frame(gObjectEventPic_Yanma, 4, 4, 0), + overworld_frame(gObjectEventPic_Yanma, 4, 4, 1), + overworld_frame(gObjectEventPic_Yanma, 4, 4, 2), + overworld_frame(gObjectEventPic_Yanma, 4, 4, 3), + overworld_frame(gObjectEventPic_Yanma, 4, 4, 4), + overworld_frame(gObjectEventPic_Yanma, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Wooper[] = { + overworld_frame(gObjectEventPic_Wooper, 4, 4, 0), + overworld_frame(gObjectEventPic_Wooper, 4, 4, 1), + overworld_frame(gObjectEventPic_Wooper, 4, 4, 2), + overworld_frame(gObjectEventPic_Wooper, 4, 4, 3), + overworld_frame(gObjectEventPic_Wooper, 4, 4, 4), + overworld_frame(gObjectEventPic_Wooper, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Quagsire[] = { + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 0), + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 1), + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 2), + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 3), + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 4), + overworld_frame(gObjectEventPic_Quagsire, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Espeon[] = { + overworld_frame(gObjectEventPic_Espeon, 4, 4, 0), + overworld_frame(gObjectEventPic_Espeon, 4, 4, 1), + overworld_frame(gObjectEventPic_Espeon, 4, 4, 2), + overworld_frame(gObjectEventPic_Espeon, 4, 4, 3), + overworld_frame(gObjectEventPic_Espeon, 4, 4, 4), + overworld_frame(gObjectEventPic_Espeon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Umbreon[] = { + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 0), + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 1), + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 2), + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 3), + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 4), + overworld_frame(gObjectEventPic_Umbreon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Murkrow[] = { + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 0), + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 1), + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 2), + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 3), + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 4), + overworld_frame(gObjectEventPic_Murkrow, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Slowking[] = { + overworld_frame(gObjectEventPic_Slowking, 4, 4, 0), + overworld_frame(gObjectEventPic_Slowking, 4, 4, 1), + overworld_frame(gObjectEventPic_Slowking, 4, 4, 2), + overworld_frame(gObjectEventPic_Slowking, 4, 4, 3), + overworld_frame(gObjectEventPic_Slowking, 4, 4, 4), + overworld_frame(gObjectEventPic_Slowking, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Misdreavus[] = { + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 0), + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 1), + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 2), + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 3), + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 4), + overworld_frame(gObjectEventPic_Misdreavus, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_A[] = { + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_A, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_B[] = { + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_B, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_C[] = { + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_C, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_D[] = { + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_D, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_E[] = { + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_E, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_F[] = { + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_F, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_G[] = { + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_G, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_H[] = { + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_H, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_I[] = { + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_I, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_J[] = { + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_J, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_K[] = { + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_K, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_L[] = { + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_L, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_M[] = { + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_M, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_N[] = { + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_N, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_O[] = { + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_O, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_P[] = { + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_P, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_Q[] = { + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Q, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_R[] = { + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_R, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_S[] = { + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_S, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_T[] = { + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_T, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_U[] = { + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_U, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_V[] = { + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_V, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_W[] = { + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_W, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_X[] = { + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_X, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_Y[] = { + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Y, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_Z[] = { + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Z, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_Exclamation[] = { + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Exclamation, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Unown_Question[] = { + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 0), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 1), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 2), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 3), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 4), + overworld_frame(gObjectEventPic_Unown_Question, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Wobbuffet[] = { + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 0), + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 1), + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 2), + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 3), + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 4), + overworld_frame(gObjectEventPic_Wobbuffet, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Girafarig[] = { + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 0), + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 1), + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 2), + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 3), + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 4), + overworld_frame(gObjectEventPic_Girafarig, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Pineco[] = { + overworld_frame(gObjectEventPic_Pineco, 4, 4, 0), + overworld_frame(gObjectEventPic_Pineco, 4, 4, 1), + overworld_frame(gObjectEventPic_Pineco, 4, 4, 2), + overworld_frame(gObjectEventPic_Pineco, 4, 4, 3), + overworld_frame(gObjectEventPic_Pineco, 4, 4, 4), + overworld_frame(gObjectEventPic_Pineco, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Forretress[] = { + overworld_frame(gObjectEventPic_Forretress, 4, 4, 0), + overworld_frame(gObjectEventPic_Forretress, 4, 4, 1), + overworld_frame(gObjectEventPic_Forretress, 4, 4, 2), + overworld_frame(gObjectEventPic_Forretress, 4, 4, 3), + overworld_frame(gObjectEventPic_Forretress, 4, 4, 4), + overworld_frame(gObjectEventPic_Forretress, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Dunsparce[] = { + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 0), + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 1), + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 2), + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 3), + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 4), + overworld_frame(gObjectEventPic_Dunsparce, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Gligar[] = { + overworld_frame(gObjectEventPic_Gligar, 4, 4, 0), + overworld_frame(gObjectEventPic_Gligar, 4, 4, 1), + overworld_frame(gObjectEventPic_Gligar, 4, 4, 2), + overworld_frame(gObjectEventPic_Gligar, 4, 4, 3), + overworld_frame(gObjectEventPic_Gligar, 4, 4, 4), + overworld_frame(gObjectEventPic_Gligar, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Steelix[] = { + overworld_frame(gObjectEventPic_Steelix, 4, 4, 0), + overworld_frame(gObjectEventPic_Steelix, 4, 4, 1), + overworld_frame(gObjectEventPic_Steelix, 4, 4, 2), + overworld_frame(gObjectEventPic_Steelix, 4, 4, 3), + overworld_frame(gObjectEventPic_Steelix, 4, 4, 4), + overworld_frame(gObjectEventPic_Steelix, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Snubbull[] = { + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 0), + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 1), + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 2), + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 3), + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 4), + overworld_frame(gObjectEventPic_Snubbull, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Granbull[] = { + overworld_frame(gObjectEventPic_Granbull, 4, 4, 0), + overworld_frame(gObjectEventPic_Granbull, 4, 4, 1), + overworld_frame(gObjectEventPic_Granbull, 4, 4, 2), + overworld_frame(gObjectEventPic_Granbull, 4, 4, 3), + overworld_frame(gObjectEventPic_Granbull, 4, 4, 4), + overworld_frame(gObjectEventPic_Granbull, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Qwilfish[] = { + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 0), + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 1), + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 2), + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 3), + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 4), + overworld_frame(gObjectEventPic_Qwilfish, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Scizor[] = { + overworld_frame(gObjectEventPic_Scizor, 4, 4, 0), + overworld_frame(gObjectEventPic_Scizor, 4, 4, 1), + overworld_frame(gObjectEventPic_Scizor, 4, 4, 2), + overworld_frame(gObjectEventPic_Scizor, 4, 4, 3), + overworld_frame(gObjectEventPic_Scizor, 4, 4, 4), + overworld_frame(gObjectEventPic_Scizor, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Shuckle[] = { + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 0), + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 1), + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 2), + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 3), + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 4), + overworld_frame(gObjectEventPic_Shuckle, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Heracross[] = { + overworld_frame(gObjectEventPic_Heracross, 4, 4, 0), + overworld_frame(gObjectEventPic_Heracross, 4, 4, 1), + overworld_frame(gObjectEventPic_Heracross, 4, 4, 2), + overworld_frame(gObjectEventPic_Heracross, 4, 4, 3), + overworld_frame(gObjectEventPic_Heracross, 4, 4, 4), + overworld_frame(gObjectEventPic_Heracross, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sneasel[] = { + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 0), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 1), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 2), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 3), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 4), + overworld_frame(gObjectEventPic_Sneasel, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Teddiursa[] = { + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 0), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 1), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 2), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 3), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 4), + overworld_frame(gObjectEventPic_Teddiursa, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ursaring[] = { + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 0), + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 1), + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 2), + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 3), + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 4), + overworld_frame(gObjectEventPic_Ursaring, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Slugma[] = { + overworld_frame(gObjectEventPic_Slugma, 4, 4, 0), + overworld_frame(gObjectEventPic_Slugma, 4, 4, 1), + overworld_frame(gObjectEventPic_Slugma, 4, 4, 2), + overworld_frame(gObjectEventPic_Slugma, 4, 4, 3), + overworld_frame(gObjectEventPic_Slugma, 4, 4, 4), + overworld_frame(gObjectEventPic_Slugma, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Magcargo[] = { + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 0), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 1), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 2), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 3), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 4), + overworld_frame(gObjectEventPic_Magcargo, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Swinub[] = { + overworld_frame(gObjectEventPic_Swinub, 4, 4, 0), + overworld_frame(gObjectEventPic_Swinub, 4, 4, 1), + overworld_frame(gObjectEventPic_Swinub, 4, 4, 2), + overworld_frame(gObjectEventPic_Swinub, 4, 4, 3), + overworld_frame(gObjectEventPic_Swinub, 4, 4, 4), + overworld_frame(gObjectEventPic_Swinub, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Piloswine[] = { + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 0), + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 1), + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 2), + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 3), + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 4), + overworld_frame(gObjectEventPic_Piloswine, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Corsola[] = { + overworld_frame(gObjectEventPic_Corsola, 4, 4, 0), + overworld_frame(gObjectEventPic_Corsola, 4, 4, 1), + overworld_frame(gObjectEventPic_Corsola, 4, 4, 2), + overworld_frame(gObjectEventPic_Corsola, 4, 4, 3), + overworld_frame(gObjectEventPic_Corsola, 4, 4, 4), + overworld_frame(gObjectEventPic_Corsola, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Remoraid[] = { + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 0), + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 1), + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 2), + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 3), + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 4), + overworld_frame(gObjectEventPic_Remoraid, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Octillery[] = { + overworld_frame(gObjectEventPic_Octillery, 4, 4, 0), + overworld_frame(gObjectEventPic_Octillery, 4, 4, 1), + overworld_frame(gObjectEventPic_Octillery, 4, 4, 2), + overworld_frame(gObjectEventPic_Octillery, 4, 4, 3), + overworld_frame(gObjectEventPic_Octillery, 4, 4, 4), + overworld_frame(gObjectEventPic_Octillery, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Delibird[] = { + overworld_frame(gObjectEventPic_Delibird, 4, 4, 0), + overworld_frame(gObjectEventPic_Delibird, 4, 4, 1), + overworld_frame(gObjectEventPic_Delibird, 4, 4, 2), + overworld_frame(gObjectEventPic_Delibird, 4, 4, 3), + overworld_frame(gObjectEventPic_Delibird, 4, 4, 4), + overworld_frame(gObjectEventPic_Delibird, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mantine[] = { + overworld_frame(gObjectEventPic_Mantine, 4, 4, 0), + overworld_frame(gObjectEventPic_Mantine, 4, 4, 1), + overworld_frame(gObjectEventPic_Mantine, 4, 4, 2), + overworld_frame(gObjectEventPic_Mantine, 4, 4, 3), + overworld_frame(gObjectEventPic_Mantine, 4, 4, 4), + overworld_frame(gObjectEventPic_Mantine, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Skarmory[] = { + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 0), + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 1), + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 2), + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 3), + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 4), + overworld_frame(gObjectEventPic_Skarmory, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Houndour[] = { + overworld_frame(gObjectEventPic_Houndour, 4, 4, 0), + overworld_frame(gObjectEventPic_Houndour, 4, 4, 1), + overworld_frame(gObjectEventPic_Houndour, 4, 4, 2), + overworld_frame(gObjectEventPic_Houndour, 4, 4, 3), + overworld_frame(gObjectEventPic_Houndour, 4, 4, 4), + overworld_frame(gObjectEventPic_Houndour, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Houndoom[] = { + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 0), + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 1), + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 2), + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 3), + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 4), + overworld_frame(gObjectEventPic_Houndoom, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Kingdra[] = { + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 0), + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 1), + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 2), + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 3), + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 4), + overworld_frame(gObjectEventPic_Kingdra, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Phanpy[] = { + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 0), + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 1), + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 2), + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 3), + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 4), + overworld_frame(gObjectEventPic_Phanpy, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Donphan[] = { + overworld_frame(gObjectEventPic_Donphan, 4, 4, 0), + overworld_frame(gObjectEventPic_Donphan, 4, 4, 1), + overworld_frame(gObjectEventPic_Donphan, 4, 4, 2), + overworld_frame(gObjectEventPic_Donphan, 4, 4, 3), + overworld_frame(gObjectEventPic_Donphan, 4, 4, 4), + overworld_frame(gObjectEventPic_Donphan, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Porygon2[] = { + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 0), + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 1), + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 2), + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 3), + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 4), + overworld_frame(gObjectEventPic_Porygon2, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Stantler[] = { + overworld_frame(gObjectEventPic_Stantler, 4, 4, 0), + overworld_frame(gObjectEventPic_Stantler, 4, 4, 1), + overworld_frame(gObjectEventPic_Stantler, 4, 4, 2), + overworld_frame(gObjectEventPic_Stantler, 4, 4, 3), + overworld_frame(gObjectEventPic_Stantler, 4, 4, 4), + overworld_frame(gObjectEventPic_Stantler, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Smeargle[] = { + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 0), + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 1), + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 2), + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 3), + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 4), + overworld_frame(gObjectEventPic_Smeargle, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Tyrogue[] = { + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 0), + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 1), + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 2), + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 3), + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 4), + overworld_frame(gObjectEventPic_Tyrogue, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Hitmontop[] = { + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 0), + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 1), + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 2), + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 3), + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 4), + overworld_frame(gObjectEventPic_Hitmontop, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Smoochum[] = { + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 0), + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 1), + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 2), + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 3), + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 4), + overworld_frame(gObjectEventPic_Smoochum, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Elekid[] = { + overworld_frame(gObjectEventPic_Elekid, 4, 4, 0), + overworld_frame(gObjectEventPic_Elekid, 4, 4, 1), + overworld_frame(gObjectEventPic_Elekid, 4, 4, 2), + overworld_frame(gObjectEventPic_Elekid, 4, 4, 3), + overworld_frame(gObjectEventPic_Elekid, 4, 4, 4), + overworld_frame(gObjectEventPic_Elekid, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Magby[] = { + overworld_frame(gObjectEventPic_Magby, 4, 4, 0), + overworld_frame(gObjectEventPic_Magby, 4, 4, 1), + overworld_frame(gObjectEventPic_Magby, 4, 4, 2), + overworld_frame(gObjectEventPic_Magby, 4, 4, 3), + overworld_frame(gObjectEventPic_Magby, 4, 4, 4), + overworld_frame(gObjectEventPic_Magby, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Miltank[] = { + overworld_frame(gObjectEventPic_Miltank, 4, 4, 0), + overworld_frame(gObjectEventPic_Miltank, 4, 4, 1), + overworld_frame(gObjectEventPic_Miltank, 4, 4, 2), + overworld_frame(gObjectEventPic_Miltank, 4, 4, 3), + overworld_frame(gObjectEventPic_Miltank, 4, 4, 4), + overworld_frame(gObjectEventPic_Miltank, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Blissey[] = { + overworld_frame(gObjectEventPic_Blissey, 4, 4, 0), + overworld_frame(gObjectEventPic_Blissey, 4, 4, 1), + overworld_frame(gObjectEventPic_Blissey, 4, 4, 2), + overworld_frame(gObjectEventPic_Blissey, 4, 4, 3), + overworld_frame(gObjectEventPic_Blissey, 4, 4, 4), + overworld_frame(gObjectEventPic_Blissey, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Raikou[] = { + overworld_frame(gObjectEventPic_Raikou, 4, 4, 0), + overworld_frame(gObjectEventPic_Raikou, 4, 4, 1), + overworld_frame(gObjectEventPic_Raikou, 4, 4, 2), + overworld_frame(gObjectEventPic_Raikou, 4, 4, 3), + overworld_frame(gObjectEventPic_Raikou, 4, 4, 4), + overworld_frame(gObjectEventPic_Raikou, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Entei[] = { + overworld_frame(gObjectEventPic_Entei, 4, 4, 0), + overworld_frame(gObjectEventPic_Entei, 4, 4, 1), + overworld_frame(gObjectEventPic_Entei, 4, 4, 2), + overworld_frame(gObjectEventPic_Entei, 4, 4, 3), + overworld_frame(gObjectEventPic_Entei, 4, 4, 4), + overworld_frame(gObjectEventPic_Entei, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Suicune[] = { + overworld_frame(gObjectEventPic_Suicune, 4, 4, 0), + overworld_frame(gObjectEventPic_Suicune, 4, 4, 1), + overworld_frame(gObjectEventPic_Suicune, 4, 4, 2), + overworld_frame(gObjectEventPic_Suicune, 4, 4, 3), + overworld_frame(gObjectEventPic_Suicune, 4, 4, 4), + overworld_frame(gObjectEventPic_Suicune, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Larvitar[] = { + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 0), + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 1), + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 2), + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 3), + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 4), + overworld_frame(gObjectEventPic_Larvitar, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Pupitar[] = { + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 0), + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 1), + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 2), + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 3), + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 4), + overworld_frame(gObjectEventPic_Pupitar, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Tyranitar[] = { + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 0), + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 1), + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 2), + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 3), + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 4), + overworld_frame(gObjectEventPic_Tyranitar, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Lugia[] = { + overworld_frame(gObjectEventPic_Lugia, 8, 8, 0), + overworld_frame(gObjectEventPic_Lugia, 8, 8, 1), + overworld_frame(gObjectEventPic_Lugia, 8, 8, 2), + overworld_frame(gObjectEventPic_Lugia, 8, 8, 3), + overworld_frame(gObjectEventPic_Lugia, 8, 8, 4), + overworld_frame(gObjectEventPic_Lugia, 8, 8, 5), +}; +static const struct SpriteFrameImage sPicTable_Ho_oh[] = { + overworld_frame(gObjectEventPic_Ho_oh, 8, 8, 0), + overworld_frame(gObjectEventPic_Ho_oh, 8, 8, 1), + overworld_frame(gObjectEventPic_Ho_oh, 8, 8, 2), + overworld_frame(gObjectEventPic_Ho_oh, 8, 8, 3), + overworld_frame(gObjectEventPic_Ho_oh, 8, 8, 4), + overworld_frame(gObjectEventPic_Ho_oh, 8, 8, 5), +}; +static const struct SpriteFrameImage sPicTable_Celebi[] = { + overworld_frame(gObjectEventPic_Celebi, 4, 4, 0), + overworld_frame(gObjectEventPic_Celebi, 4, 4, 1), + overworld_frame(gObjectEventPic_Celebi, 4, 4, 2), + overworld_frame(gObjectEventPic_Celebi, 4, 4, 3), + overworld_frame(gObjectEventPic_Celebi, 4, 4, 4), + overworld_frame(gObjectEventPic_Celebi, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Treecko[] = { + overworld_frame(gObjectEventPic_Treecko, 4, 4, 0), + overworld_frame(gObjectEventPic_Treecko, 4, 4, 1), + overworld_frame(gObjectEventPic_Treecko, 4, 4, 2), + overworld_frame(gObjectEventPic_Treecko, 4, 4, 3), + overworld_frame(gObjectEventPic_Treecko, 4, 4, 4), + overworld_frame(gObjectEventPic_Treecko, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Grovyle[] = { + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 0), + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 1), + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 2), + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 3), + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 4), + overworld_frame(gObjectEventPic_Grovyle, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sceptile[] = { + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 0), + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 1), + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 2), + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 3), + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 4), + overworld_frame(gObjectEventPic_Sceptile, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Torchic[] = { + overworld_frame(gObjectEventPic_Torchic, 4, 4, 0), + overworld_frame(gObjectEventPic_Torchic, 4, 4, 1), + overworld_frame(gObjectEventPic_Torchic, 4, 4, 2), + overworld_frame(gObjectEventPic_Torchic, 4, 4, 3), + overworld_frame(gObjectEventPic_Torchic, 4, 4, 4), + overworld_frame(gObjectEventPic_Torchic, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Combusken[] = { + overworld_frame(gObjectEventPic_Combusken, 4, 4, 0), + overworld_frame(gObjectEventPic_Combusken, 4, 4, 1), + overworld_frame(gObjectEventPic_Combusken, 4, 4, 2), + overworld_frame(gObjectEventPic_Combusken, 4, 4, 3), + overworld_frame(gObjectEventPic_Combusken, 4, 4, 4), + overworld_frame(gObjectEventPic_Combusken, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Blaziken[] = { + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 0), + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 1), + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 2), + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 3), + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 4), + overworld_frame(gObjectEventPic_Blaziken, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mudkip[] = { + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 0), + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 1), + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 2), + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 3), + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 4), + overworld_frame(gObjectEventPic_Mudkip, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Marshtomp[] = { + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 0), + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 1), + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 2), + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 3), + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 4), + overworld_frame(gObjectEventPic_Marshtomp, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Swampert[] = { + overworld_frame(gObjectEventPic_Swampert, 4, 4, 0), + overworld_frame(gObjectEventPic_Swampert, 4, 4, 1), + overworld_frame(gObjectEventPic_Swampert, 4, 4, 2), + overworld_frame(gObjectEventPic_Swampert, 4, 4, 3), + overworld_frame(gObjectEventPic_Swampert, 4, 4, 4), + overworld_frame(gObjectEventPic_Swampert, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Poochyena[] = { + overworld_frame(gObjectEventPic_Poochyena, 4, 4, 0), + overworld_frame(gObjectEventPic_Poochyena, 4, 4, 1), + overworld_frame(gObjectEventPic_Poochyena, 4, 4, 2), + overworld_frame(gObjectEventPic_Poochyena, 4, 4, 3), + overworld_frame(gObjectEventPic_Poochyena, 4, 4, 4), + overworld_frame(gObjectEventPic_Poochyena, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mightyena[] = { + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 0), + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 1), + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 2), + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 3), + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 4), + overworld_frame(gObjectEventPic_Mightyena, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Zigzagoon[] = { + overworld_frame(gObjectEventPic_Zigzagoon, 4, 4, 0), + overworld_frame(gObjectEventPic_Zigzagoon, 4, 4, 1), + overworld_frame(gObjectEventPic_Zigzagoon, 4, 4, 2), + overworld_frame(gObjectEventPic_Zigzagoon, 4, 4, 3), + overworld_frame(gObjectEventPic_Zigzagoon, 4, 4, 4), + overworld_frame(gObjectEventPic_Zigzagoon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Linoone[] = { + overworld_frame(gObjectEventPic_Linoone, 4, 4, 0), + overworld_frame(gObjectEventPic_Linoone, 4, 4, 1), + overworld_frame(gObjectEventPic_Linoone, 4, 4, 2), + overworld_frame(gObjectEventPic_Linoone, 4, 4, 3), + overworld_frame(gObjectEventPic_Linoone, 4, 4, 4), + overworld_frame(gObjectEventPic_Linoone, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Wurmple[] = { + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 0), + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 1), + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 2), + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 3), + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 4), + overworld_frame(gObjectEventPic_Wurmple, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Silcoon[] = { + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 0), + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 1), + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 2), + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 3), + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 4), + overworld_frame(gObjectEventPic_Silcoon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Beautifly[] = { + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 0), + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 1), + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 2), + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 3), + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 4), + overworld_frame(gObjectEventPic_Beautifly, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Cascoon[] = { + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 0), + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 1), + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 2), + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 3), + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 4), + overworld_frame(gObjectEventPic_Cascoon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Dustox[] = { + overworld_frame(gObjectEventPic_Dustox, 4, 4, 0), + overworld_frame(gObjectEventPic_Dustox, 4, 4, 1), + overworld_frame(gObjectEventPic_Dustox, 4, 4, 2), + overworld_frame(gObjectEventPic_Dustox, 4, 4, 3), + overworld_frame(gObjectEventPic_Dustox, 4, 4, 4), + overworld_frame(gObjectEventPic_Dustox, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Lotad[] = { + overworld_frame(gObjectEventPic_Lotad, 4, 4, 0), + overworld_frame(gObjectEventPic_Lotad, 4, 4, 1), + overworld_frame(gObjectEventPic_Lotad, 4, 4, 2), + overworld_frame(gObjectEventPic_Lotad, 4, 4, 3), + overworld_frame(gObjectEventPic_Lotad, 4, 4, 4), + overworld_frame(gObjectEventPic_Lotad, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Lombre[] = { + overworld_frame(gObjectEventPic_Lombre, 4, 4, 0), + overworld_frame(gObjectEventPic_Lombre, 4, 4, 1), + overworld_frame(gObjectEventPic_Lombre, 4, 4, 2), + overworld_frame(gObjectEventPic_Lombre, 4, 4, 3), + overworld_frame(gObjectEventPic_Lombre, 4, 4, 4), + overworld_frame(gObjectEventPic_Lombre, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ludicolo[] = { + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 0), + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 1), + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 2), + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 3), + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 4), + overworld_frame(gObjectEventPic_Ludicolo, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Seedot[] = { + overworld_frame(gObjectEventPic_Seedot, 4, 4, 0), + overworld_frame(gObjectEventPic_Seedot, 4, 4, 1), + overworld_frame(gObjectEventPic_Seedot, 4, 4, 2), + overworld_frame(gObjectEventPic_Seedot, 4, 4, 3), + overworld_frame(gObjectEventPic_Seedot, 4, 4, 4), + overworld_frame(gObjectEventPic_Seedot, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Nuzleaf[] = { + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 0), + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 1), + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 2), + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 3), + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 4), + overworld_frame(gObjectEventPic_Nuzleaf, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Shiftry[] = { + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 0), + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 1), + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 2), + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 3), + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 4), + overworld_frame(gObjectEventPic_Shiftry, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Taillow[] = { + overworld_frame(gObjectEventPic_Taillow, 4, 4, 0), + overworld_frame(gObjectEventPic_Taillow, 4, 4, 1), + overworld_frame(gObjectEventPic_Taillow, 4, 4, 2), + overworld_frame(gObjectEventPic_Taillow, 4, 4, 3), + overworld_frame(gObjectEventPic_Taillow, 4, 4, 4), + overworld_frame(gObjectEventPic_Taillow, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Swellow[] = { + overworld_frame(gObjectEventPic_Swellow, 4, 4, 0), + overworld_frame(gObjectEventPic_Swellow, 4, 4, 1), + overworld_frame(gObjectEventPic_Swellow, 4, 4, 2), + overworld_frame(gObjectEventPic_Swellow, 4, 4, 3), + overworld_frame(gObjectEventPic_Swellow, 4, 4, 4), + overworld_frame(gObjectEventPic_Swellow, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Wingull[] = { + overworld_frame(gObjectEventPic_Wingull, 4, 4, 0), + overworld_frame(gObjectEventPic_Wingull, 4, 4, 1), + overworld_frame(gObjectEventPic_Wingull, 4, 4, 2), + overworld_frame(gObjectEventPic_Wingull, 4, 4, 3), + overworld_frame(gObjectEventPic_Wingull, 4, 4, 4), + overworld_frame(gObjectEventPic_Wingull, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Pelipper[] = { + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 0), + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 1), + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 2), + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 3), + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 4), + overworld_frame(gObjectEventPic_Pelipper, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ralts[] = { + overworld_frame(gObjectEventPic_Ralts, 4, 4, 0), + overworld_frame(gObjectEventPic_Ralts, 4, 4, 1), + overworld_frame(gObjectEventPic_Ralts, 4, 4, 2), + overworld_frame(gObjectEventPic_Ralts, 4, 4, 3), + overworld_frame(gObjectEventPic_Ralts, 4, 4, 4), + overworld_frame(gObjectEventPic_Ralts, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Kirlia[] = { + overworld_frame(gObjectEventPic_Kirlia, 4, 4, 0), + overworld_frame(gObjectEventPic_Kirlia, 4, 4, 1), + overworld_frame(gObjectEventPic_Kirlia, 4, 4, 2), + overworld_frame(gObjectEventPic_Kirlia, 4, 4, 3), + overworld_frame(gObjectEventPic_Kirlia, 4, 4, 4), + overworld_frame(gObjectEventPic_Kirlia, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Gardevoir[] = { + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 0), + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 1), + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 2), + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 3), + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 4), + overworld_frame(gObjectEventPic_Gardevoir, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Surskit[] = { + overworld_frame(gObjectEventPic_Surskit, 4, 4, 0), + overworld_frame(gObjectEventPic_Surskit, 4, 4, 1), + overworld_frame(gObjectEventPic_Surskit, 4, 4, 2), + overworld_frame(gObjectEventPic_Surskit, 4, 4, 3), + overworld_frame(gObjectEventPic_Surskit, 4, 4, 4), + overworld_frame(gObjectEventPic_Surskit, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Masquerain[] = { + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 0), + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 1), + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 2), + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 3), + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 4), + overworld_frame(gObjectEventPic_Masquerain, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Shroomish[] = { + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 0), + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 1), + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 2), + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 3), + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 4), + overworld_frame(gObjectEventPic_Shroomish, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Breloom[] = { + overworld_frame(gObjectEventPic_Breloom, 4, 4, 0), + overworld_frame(gObjectEventPic_Breloom, 4, 4, 1), + overworld_frame(gObjectEventPic_Breloom, 4, 4, 2), + overworld_frame(gObjectEventPic_Breloom, 4, 4, 3), + overworld_frame(gObjectEventPic_Breloom, 4, 4, 4), + overworld_frame(gObjectEventPic_Breloom, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Slakoth[] = { + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 0), + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 1), + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 2), + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 3), + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 4), + overworld_frame(gObjectEventPic_Slakoth, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Vigoroth[] = { + overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 0), + overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 1), + overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 2), + overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 3), + overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), + overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Slaking[] = { + overworld_frame(gObjectEventPic_Slaking, 4, 4, 0), + overworld_frame(gObjectEventPic_Slaking, 4, 4, 1), + overworld_frame(gObjectEventPic_Slaking, 4, 4, 2), + overworld_frame(gObjectEventPic_Slaking, 4, 4, 3), + overworld_frame(gObjectEventPic_Slaking, 4, 4, 4), + overworld_frame(gObjectEventPic_Slaking, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Nincada[] = { + overworld_frame(gObjectEventPic_Nincada, 4, 4, 0), + overworld_frame(gObjectEventPic_Nincada, 4, 4, 1), + overworld_frame(gObjectEventPic_Nincada, 4, 4, 2), + overworld_frame(gObjectEventPic_Nincada, 4, 4, 3), + overworld_frame(gObjectEventPic_Nincada, 4, 4, 4), + overworld_frame(gObjectEventPic_Nincada, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ninjask[] = { + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 0), + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 1), + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 2), + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 3), + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 4), + overworld_frame(gObjectEventPic_Ninjask, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Shedinja[] = { + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 0), + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 1), + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 2), + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 3), + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 4), + overworld_frame(gObjectEventPic_Shedinja, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Whismur[] = { + overworld_frame(gObjectEventPic_Whismur, 4, 4, 0), + overworld_frame(gObjectEventPic_Whismur, 4, 4, 1), + overworld_frame(gObjectEventPic_Whismur, 4, 4, 2), + overworld_frame(gObjectEventPic_Whismur, 4, 4, 3), + overworld_frame(gObjectEventPic_Whismur, 4, 4, 4), + overworld_frame(gObjectEventPic_Whismur, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Loudred[] = { + overworld_frame(gObjectEventPic_Loudred, 4, 4, 0), + overworld_frame(gObjectEventPic_Loudred, 4, 4, 1), + overworld_frame(gObjectEventPic_Loudred, 4, 4, 2), + overworld_frame(gObjectEventPic_Loudred, 4, 4, 3), + overworld_frame(gObjectEventPic_Loudred, 4, 4, 4), + overworld_frame(gObjectEventPic_Loudred, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Exploud[] = { + overworld_frame(gObjectEventPic_Exploud, 4, 4, 0), + overworld_frame(gObjectEventPic_Exploud, 4, 4, 1), + overworld_frame(gObjectEventPic_Exploud, 4, 4, 2), + overworld_frame(gObjectEventPic_Exploud, 4, 4, 3), + overworld_frame(gObjectEventPic_Exploud, 4, 4, 4), + overworld_frame(gObjectEventPic_Exploud, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Makuhita[] = { + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 0), + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 1), + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 2), + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 3), + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 4), + overworld_frame(gObjectEventPic_Makuhita, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Hariyama[] = { + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 0), + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 1), + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 2), + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 3), + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 4), + overworld_frame(gObjectEventPic_Hariyama, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Azurill[] = { + overworld_frame(gObjectEventPic_Azurill, 4, 4, 0), + overworld_frame(gObjectEventPic_Azurill, 4, 4, 1), + overworld_frame(gObjectEventPic_Azurill, 4, 4, 2), + overworld_frame(gObjectEventPic_Azurill, 4, 4, 3), + overworld_frame(gObjectEventPic_Azurill, 4, 4, 4), + overworld_frame(gObjectEventPic_Azurill, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Nosepass[] = { + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 0), + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 1), + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 2), + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 3), + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 4), + overworld_frame(gObjectEventPic_Nosepass, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Skitty[] = { + overworld_frame(gObjectEventPic_Skitty, 4, 4, 0), + overworld_frame(gObjectEventPic_Skitty, 4, 4, 1), + overworld_frame(gObjectEventPic_Skitty, 4, 4, 2), + overworld_frame(gObjectEventPic_Skitty, 4, 4, 3), + overworld_frame(gObjectEventPic_Skitty, 4, 4, 4), + overworld_frame(gObjectEventPic_Skitty, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Delcatty[] = { + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 0), + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 1), + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 2), + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 3), + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 4), + overworld_frame(gObjectEventPic_Delcatty, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sableye[] = { + overworld_frame(gObjectEventPic_Sableye, 4, 4, 0), + overworld_frame(gObjectEventPic_Sableye, 4, 4, 1), + overworld_frame(gObjectEventPic_Sableye, 4, 4, 2), + overworld_frame(gObjectEventPic_Sableye, 4, 4, 3), + overworld_frame(gObjectEventPic_Sableye, 4, 4, 4), + overworld_frame(gObjectEventPic_Sableye, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mawile[] = { + overworld_frame(gObjectEventPic_Mawile, 4, 4, 0), + overworld_frame(gObjectEventPic_Mawile, 4, 4, 1), + overworld_frame(gObjectEventPic_Mawile, 4, 4, 2), + overworld_frame(gObjectEventPic_Mawile, 4, 4, 3), + overworld_frame(gObjectEventPic_Mawile, 4, 4, 4), + overworld_frame(gObjectEventPic_Mawile, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Aron[] = { + overworld_frame(gObjectEventPic_Aron, 4, 4, 0), + overworld_frame(gObjectEventPic_Aron, 4, 4, 1), + overworld_frame(gObjectEventPic_Aron, 4, 4, 2), + overworld_frame(gObjectEventPic_Aron, 4, 4, 3), + overworld_frame(gObjectEventPic_Aron, 4, 4, 4), + overworld_frame(gObjectEventPic_Aron, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Lairon[] = { + overworld_frame(gObjectEventPic_Lairon, 4, 4, 0), + overworld_frame(gObjectEventPic_Lairon, 4, 4, 1), + overworld_frame(gObjectEventPic_Lairon, 4, 4, 2), + overworld_frame(gObjectEventPic_Lairon, 4, 4, 3), + overworld_frame(gObjectEventPic_Lairon, 4, 4, 4), + overworld_frame(gObjectEventPic_Lairon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Aggron[] = { + overworld_frame(gObjectEventPic_Aggron, 4, 4, 0), + overworld_frame(gObjectEventPic_Aggron, 4, 4, 1), + overworld_frame(gObjectEventPic_Aggron, 4, 4, 2), + overworld_frame(gObjectEventPic_Aggron, 4, 4, 3), + overworld_frame(gObjectEventPic_Aggron, 4, 4, 4), + overworld_frame(gObjectEventPic_Aggron, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Meditite[] = { + overworld_frame(gObjectEventPic_Meditite, 4, 4, 0), + overworld_frame(gObjectEventPic_Meditite, 4, 4, 1), + overworld_frame(gObjectEventPic_Meditite, 4, 4, 2), + overworld_frame(gObjectEventPic_Meditite, 4, 4, 3), + overworld_frame(gObjectEventPic_Meditite, 4, 4, 4), + overworld_frame(gObjectEventPic_Meditite, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Medicham[] = { + overworld_frame(gObjectEventPic_Medicham, 4, 4, 0), + overworld_frame(gObjectEventPic_Medicham, 4, 4, 1), + overworld_frame(gObjectEventPic_Medicham, 4, 4, 2), + overworld_frame(gObjectEventPic_Medicham, 4, 4, 3), + overworld_frame(gObjectEventPic_Medicham, 4, 4, 4), + overworld_frame(gObjectEventPic_Medicham, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Electrike[] = { + overworld_frame(gObjectEventPic_Electrike, 4, 4, 0), + overworld_frame(gObjectEventPic_Electrike, 4, 4, 1), + overworld_frame(gObjectEventPic_Electrike, 4, 4, 2), + overworld_frame(gObjectEventPic_Electrike, 4, 4, 3), + overworld_frame(gObjectEventPic_Electrike, 4, 4, 4), + overworld_frame(gObjectEventPic_Electrike, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Manectric[] = { + overworld_frame(gObjectEventPic_Manectric, 4, 4, 0), + overworld_frame(gObjectEventPic_Manectric, 4, 4, 1), + overworld_frame(gObjectEventPic_Manectric, 4, 4, 2), + overworld_frame(gObjectEventPic_Manectric, 4, 4, 3), + overworld_frame(gObjectEventPic_Manectric, 4, 4, 4), + overworld_frame(gObjectEventPic_Manectric, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Plusle[] = { + overworld_frame(gObjectEventPic_Plusle, 4, 4, 0), + overworld_frame(gObjectEventPic_Plusle, 4, 4, 1), + overworld_frame(gObjectEventPic_Plusle, 4, 4, 2), + overworld_frame(gObjectEventPic_Plusle, 4, 4, 3), + overworld_frame(gObjectEventPic_Plusle, 4, 4, 4), + overworld_frame(gObjectEventPic_Plusle, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Minun[] = { + overworld_frame(gObjectEventPic_Minun, 4, 4, 0), + overworld_frame(gObjectEventPic_Minun, 4, 4, 1), + overworld_frame(gObjectEventPic_Minun, 4, 4, 2), + overworld_frame(gObjectEventPic_Minun, 4, 4, 3), + overworld_frame(gObjectEventPic_Minun, 4, 4, 4), + overworld_frame(gObjectEventPic_Minun, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Volbeat[] = { + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 0), + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 1), + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 2), + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 3), + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 4), + overworld_frame(gObjectEventPic_Volbeat, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Illumise[] = { + overworld_frame(gObjectEventPic_Illumise, 4, 4, 0), + overworld_frame(gObjectEventPic_Illumise, 4, 4, 1), + overworld_frame(gObjectEventPic_Illumise, 4, 4, 2), + overworld_frame(gObjectEventPic_Illumise, 4, 4, 3), + overworld_frame(gObjectEventPic_Illumise, 4, 4, 4), + overworld_frame(gObjectEventPic_Illumise, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Roselia[] = { + overworld_frame(gObjectEventPic_Roselia, 4, 4, 0), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 1), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 2), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 3), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 4), + overworld_frame(gObjectEventPic_Roselia, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Gulpin[] = { + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 0), + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 1), + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 2), + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 3), + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 4), + overworld_frame(gObjectEventPic_Gulpin, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Swalot[] = { + overworld_frame(gObjectEventPic_Swalot, 4, 4, 0), + overworld_frame(gObjectEventPic_Swalot, 4, 4, 1), + overworld_frame(gObjectEventPic_Swalot, 4, 4, 2), + overworld_frame(gObjectEventPic_Swalot, 4, 4, 3), + overworld_frame(gObjectEventPic_Swalot, 4, 4, 4), + overworld_frame(gObjectEventPic_Swalot, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Carvanha[] = { + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 0), + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 1), + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 2), + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 3), + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 4), + overworld_frame(gObjectEventPic_Carvanha, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sharpedo[] = { + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 0), + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 1), + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 2), + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 3), + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 4), + overworld_frame(gObjectEventPic_Sharpedo, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Wailmer[] = { + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 0), + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 1), + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 2), + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 3), + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 4), + overworld_frame(gObjectEventPic_Wailmer, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Wailord[] = { + overworld_frame(gObjectEventPic_Wailord, 4, 4, 0), + overworld_frame(gObjectEventPic_Wailord, 4, 4, 1), + overworld_frame(gObjectEventPic_Wailord, 4, 4, 2), + overworld_frame(gObjectEventPic_Wailord, 4, 4, 3), + overworld_frame(gObjectEventPic_Wailord, 4, 4, 4), + overworld_frame(gObjectEventPic_Wailord, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Numel[] = { + overworld_frame(gObjectEventPic_Numel, 4, 4, 0), + overworld_frame(gObjectEventPic_Numel, 4, 4, 1), + overworld_frame(gObjectEventPic_Numel, 4, 4, 2), + overworld_frame(gObjectEventPic_Numel, 4, 4, 3), + overworld_frame(gObjectEventPic_Numel, 4, 4, 4), + overworld_frame(gObjectEventPic_Numel, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Camerupt[] = { + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 0), + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 1), + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 2), + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 3), + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 4), + overworld_frame(gObjectEventPic_Camerupt, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Torkoal[] = { + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 0), + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 1), + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 2), + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 3), + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 4), + overworld_frame(gObjectEventPic_Torkoal, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Spoink[] = { + overworld_frame(gObjectEventPic_Spoink, 4, 4, 0), + overworld_frame(gObjectEventPic_Spoink, 4, 4, 1), + overworld_frame(gObjectEventPic_Spoink, 4, 4, 2), + overworld_frame(gObjectEventPic_Spoink, 4, 4, 3), + overworld_frame(gObjectEventPic_Spoink, 4, 4, 4), + overworld_frame(gObjectEventPic_Spoink, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Grumpig[] = { + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 0), + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 1), + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 2), + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 3), + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 4), + overworld_frame(gObjectEventPic_Grumpig, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Spinda[] = { + overworld_frame(gObjectEventPic_Spinda, 4, 4, 0), + overworld_frame(gObjectEventPic_Spinda, 4, 4, 1), + overworld_frame(gObjectEventPic_Spinda, 4, 4, 2), + overworld_frame(gObjectEventPic_Spinda, 4, 4, 3), + overworld_frame(gObjectEventPic_Spinda, 4, 4, 4), + overworld_frame(gObjectEventPic_Spinda, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Trapinch[] = { + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 0), + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 1), + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 2), + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 3), + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 4), + overworld_frame(gObjectEventPic_Trapinch, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Vibrava[] = { + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 0), + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 1), + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 2), + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 3), + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 4), + overworld_frame(gObjectEventPic_Vibrava, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Flygon[] = { + overworld_frame(gObjectEventPic_Flygon, 4, 4, 0), + overworld_frame(gObjectEventPic_Flygon, 4, 4, 1), + overworld_frame(gObjectEventPic_Flygon, 4, 4, 2), + overworld_frame(gObjectEventPic_Flygon, 4, 4, 3), + overworld_frame(gObjectEventPic_Flygon, 4, 4, 4), + overworld_frame(gObjectEventPic_Flygon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Cacnea[] = { + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 0), + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 1), + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 2), + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 3), + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 4), + overworld_frame(gObjectEventPic_Cacnea, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Cacturne[] = { + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 0), + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 1), + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 2), + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 3), + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 4), + overworld_frame(gObjectEventPic_Cacturne, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Swablu[] = { + overworld_frame(gObjectEventPic_Swablu, 4, 4, 0), + overworld_frame(gObjectEventPic_Swablu, 4, 4, 1), + overworld_frame(gObjectEventPic_Swablu, 4, 4, 2), + overworld_frame(gObjectEventPic_Swablu, 4, 4, 3), + overworld_frame(gObjectEventPic_Swablu, 4, 4, 4), + overworld_frame(gObjectEventPic_Swablu, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Altaria[] = { + overworld_frame(gObjectEventPic_Altaria, 4, 4, 0), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 1), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 2), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 3), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 4), + overworld_frame(gObjectEventPic_Altaria, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Zangoose[] = { + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 0), + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 1), + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 2), + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 3), + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 4), + overworld_frame(gObjectEventPic_Zangoose, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Seviper[] = { + overworld_frame(gObjectEventPic_Seviper, 4, 4, 0), + overworld_frame(gObjectEventPic_Seviper, 4, 4, 1), + overworld_frame(gObjectEventPic_Seviper, 4, 4, 2), + overworld_frame(gObjectEventPic_Seviper, 4, 4, 3), + overworld_frame(gObjectEventPic_Seviper, 4, 4, 4), + overworld_frame(gObjectEventPic_Seviper, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Lunatone[] = { + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 0), + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 1), + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 2), + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 3), + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 4), + overworld_frame(gObjectEventPic_Lunatone, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Solrock[] = { + overworld_frame(gObjectEventPic_Solrock, 4, 4, 0), + overworld_frame(gObjectEventPic_Solrock, 4, 4, 1), + overworld_frame(gObjectEventPic_Solrock, 4, 4, 2), + overworld_frame(gObjectEventPic_Solrock, 4, 4, 3), + overworld_frame(gObjectEventPic_Solrock, 4, 4, 4), + overworld_frame(gObjectEventPic_Solrock, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Barboach[] = { + overworld_frame(gObjectEventPic_Barboach, 4, 4, 0), + overworld_frame(gObjectEventPic_Barboach, 4, 4, 1), + overworld_frame(gObjectEventPic_Barboach, 4, 4, 2), + overworld_frame(gObjectEventPic_Barboach, 4, 4, 3), + overworld_frame(gObjectEventPic_Barboach, 4, 4, 4), + overworld_frame(gObjectEventPic_Barboach, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Whiscash[] = { + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 0), + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 1), + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 2), + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 3), + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 4), + overworld_frame(gObjectEventPic_Whiscash, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Corphish[] = { + overworld_frame(gObjectEventPic_Corphish, 4, 4, 0), + overworld_frame(gObjectEventPic_Corphish, 4, 4, 1), + overworld_frame(gObjectEventPic_Corphish, 4, 4, 2), + overworld_frame(gObjectEventPic_Corphish, 4, 4, 3), + overworld_frame(gObjectEventPic_Corphish, 4, 4, 4), + overworld_frame(gObjectEventPic_Corphish, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Crawdaunt[] = { + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 0), + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 1), + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 2), + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 3), + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 4), + overworld_frame(gObjectEventPic_Crawdaunt, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Baltoy[] = { + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 0), + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 1), + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 2), + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 3), + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 4), + overworld_frame(gObjectEventPic_Baltoy, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Claydol[] = { + overworld_frame(gObjectEventPic_Claydol, 4, 4, 0), + overworld_frame(gObjectEventPic_Claydol, 4, 4, 1), + overworld_frame(gObjectEventPic_Claydol, 4, 4, 2), + overworld_frame(gObjectEventPic_Claydol, 4, 4, 3), + overworld_frame(gObjectEventPic_Claydol, 4, 4, 4), + overworld_frame(gObjectEventPic_Claydol, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Lileep[] = { + overworld_frame(gObjectEventPic_Lileep, 4, 4, 0), + overworld_frame(gObjectEventPic_Lileep, 4, 4, 1), + overworld_frame(gObjectEventPic_Lileep, 4, 4, 2), + overworld_frame(gObjectEventPic_Lileep, 4, 4, 3), + overworld_frame(gObjectEventPic_Lileep, 4, 4, 4), + overworld_frame(gObjectEventPic_Lileep, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Cradily[] = { + overworld_frame(gObjectEventPic_Cradily, 4, 4, 0), + overworld_frame(gObjectEventPic_Cradily, 4, 4, 1), + overworld_frame(gObjectEventPic_Cradily, 4, 4, 2), + overworld_frame(gObjectEventPic_Cradily, 4, 4, 3), + overworld_frame(gObjectEventPic_Cradily, 4, 4, 4), + overworld_frame(gObjectEventPic_Cradily, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Anorith[] = { + overworld_frame(gObjectEventPic_Anorith, 4, 4, 0), + overworld_frame(gObjectEventPic_Anorith, 4, 4, 1), + overworld_frame(gObjectEventPic_Anorith, 4, 4, 2), + overworld_frame(gObjectEventPic_Anorith, 4, 4, 3), + overworld_frame(gObjectEventPic_Anorith, 4, 4, 4), + overworld_frame(gObjectEventPic_Anorith, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Armaldo[] = { + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 0), + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 1), + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 2), + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 3), + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 4), + overworld_frame(gObjectEventPic_Armaldo, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Feebas[] = { + overworld_frame(gObjectEventPic_Feebas, 4, 4, 0), + overworld_frame(gObjectEventPic_Feebas, 4, 4, 1), + overworld_frame(gObjectEventPic_Feebas, 4, 4, 2), + overworld_frame(gObjectEventPic_Feebas, 4, 4, 3), + overworld_frame(gObjectEventPic_Feebas, 4, 4, 4), + overworld_frame(gObjectEventPic_Feebas, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Milotic[] = { + overworld_frame(gObjectEventPic_Milotic, 4, 4, 0), + overworld_frame(gObjectEventPic_Milotic, 4, 4, 1), + overworld_frame(gObjectEventPic_Milotic, 4, 4, 2), + overworld_frame(gObjectEventPic_Milotic, 4, 4, 3), + overworld_frame(gObjectEventPic_Milotic, 4, 4, 4), + overworld_frame(gObjectEventPic_Milotic, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Castform[] = { + overworld_frame(gObjectEventPic_Castform, 4, 4, 0), + overworld_frame(gObjectEventPic_Castform, 4, 4, 1), + overworld_frame(gObjectEventPic_Castform, 4, 4, 2), + overworld_frame(gObjectEventPic_Castform, 4, 4, 3), + overworld_frame(gObjectEventPic_Castform, 4, 4, 4), + overworld_frame(gObjectEventPic_Castform, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_CastformSunny[] = { + overworld_frame(gObjectEventPic_CastformSunny, 4, 4, 0), + overworld_frame(gObjectEventPic_CastformSunny, 4, 4, 1), + overworld_frame(gObjectEventPic_CastformSunny, 4, 4, 2), + overworld_frame(gObjectEventPic_CastformSunny, 4, 4, 3), + overworld_frame(gObjectEventPic_CastformSunny, 4, 4, 4), + overworld_frame(gObjectEventPic_CastformSunny, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_CastformRainy[] = { + overworld_frame(gObjectEventPic_CastformRainy, 4, 4, 0), + overworld_frame(gObjectEventPic_CastformRainy, 4, 4, 1), + overworld_frame(gObjectEventPic_CastformRainy, 4, 4, 2), + overworld_frame(gObjectEventPic_CastformRainy, 4, 4, 3), + overworld_frame(gObjectEventPic_CastformRainy, 4, 4, 4), + overworld_frame(gObjectEventPic_CastformRainy, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_CastformSnowy[] = { + overworld_frame(gObjectEventPic_CastformSnowy, 4, 4, 0), + overworld_frame(gObjectEventPic_CastformSnowy, 4, 4, 1), + overworld_frame(gObjectEventPic_CastformSnowy, 4, 4, 2), + overworld_frame(gObjectEventPic_CastformSnowy, 4, 4, 3), + overworld_frame(gObjectEventPic_CastformSnowy, 4, 4, 4), + overworld_frame(gObjectEventPic_CastformSnowy, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Kecleon[] = { + overworld_frame(gObjectEventPic_Kecleon, 4, 4, 0), + overworld_frame(gObjectEventPic_Kecleon, 4, 4, 1), + overworld_frame(gObjectEventPic_Kecleon, 4, 4, 2), + overworld_frame(gObjectEventPic_Kecleon, 4, 4, 3), + overworld_frame(gObjectEventPic_Kecleon, 4, 4, 4), + overworld_frame(gObjectEventPic_Kecleon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Shuppet[] = { + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 0), + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 1), + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 2), + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 3), + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 4), + overworld_frame(gObjectEventPic_Shuppet, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Banette[] = { + overworld_frame(gObjectEventPic_Banette, 4, 4, 0), + overworld_frame(gObjectEventPic_Banette, 4, 4, 1), + overworld_frame(gObjectEventPic_Banette, 4, 4, 2), + overworld_frame(gObjectEventPic_Banette, 4, 4, 3), + overworld_frame(gObjectEventPic_Banette, 4, 4, 4), + overworld_frame(gObjectEventPic_Banette, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Duskull[] = { + overworld_frame(gObjectEventPic_Duskull, 4, 4, 0), + overworld_frame(gObjectEventPic_Duskull, 4, 4, 1), + overworld_frame(gObjectEventPic_Duskull, 4, 4, 2), + overworld_frame(gObjectEventPic_Duskull, 4, 4, 3), + overworld_frame(gObjectEventPic_Duskull, 4, 4, 4), + overworld_frame(gObjectEventPic_Duskull, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Dusclops[] = { + overworld_frame(gObjectEventPic_Dusclops, 4, 4, 0), + overworld_frame(gObjectEventPic_Dusclops, 4, 4, 1), + overworld_frame(gObjectEventPic_Dusclops, 4, 4, 2), + overworld_frame(gObjectEventPic_Dusclops, 4, 4, 3), + overworld_frame(gObjectEventPic_Dusclops, 4, 4, 4), + overworld_frame(gObjectEventPic_Dusclops, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Tropius[] = { + overworld_frame(gObjectEventPic_Tropius, 4, 4, 0), + overworld_frame(gObjectEventPic_Tropius, 4, 4, 1), + overworld_frame(gObjectEventPic_Tropius, 4, 4, 2), + overworld_frame(gObjectEventPic_Tropius, 4, 4, 3), + overworld_frame(gObjectEventPic_Tropius, 4, 4, 4), + overworld_frame(gObjectEventPic_Tropius, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Chimecho[] = { + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 0), + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 1), + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 2), + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 3), + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 4), + overworld_frame(gObjectEventPic_Chimecho, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Absol[] = { + overworld_frame(gObjectEventPic_Absol, 4, 4, 0), + overworld_frame(gObjectEventPic_Absol, 4, 4, 1), + overworld_frame(gObjectEventPic_Absol, 4, 4, 2), + overworld_frame(gObjectEventPic_Absol, 4, 4, 3), + overworld_frame(gObjectEventPic_Absol, 4, 4, 4), + overworld_frame(gObjectEventPic_Absol, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Wynaut[] = { + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 0), + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 1), + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 2), + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 3), + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 4), + overworld_frame(gObjectEventPic_Wynaut, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Snorunt[] = { + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 0), + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 1), + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 2), + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 3), + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 4), + overworld_frame(gObjectEventPic_Snorunt, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Glalie[] = { + overworld_frame(gObjectEventPic_Glalie, 4, 4, 0), + overworld_frame(gObjectEventPic_Glalie, 4, 4, 1), + overworld_frame(gObjectEventPic_Glalie, 4, 4, 2), + overworld_frame(gObjectEventPic_Glalie, 4, 4, 3), + overworld_frame(gObjectEventPic_Glalie, 4, 4, 4), + overworld_frame(gObjectEventPic_Glalie, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Spheal[] = { + overworld_frame(gObjectEventPic_Spheal, 4, 4, 0), + overworld_frame(gObjectEventPic_Spheal, 4, 4, 1), + overworld_frame(gObjectEventPic_Spheal, 4, 4, 2), + overworld_frame(gObjectEventPic_Spheal, 4, 4, 3), + overworld_frame(gObjectEventPic_Spheal, 4, 4, 4), + overworld_frame(gObjectEventPic_Spheal, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Sealeo[] = { + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 0), + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 1), + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 2), + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 3), + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 4), + overworld_frame(gObjectEventPic_Sealeo, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Walrein[] = { + overworld_frame(gObjectEventPic_Walrein, 4, 4, 0), + overworld_frame(gObjectEventPic_Walrein, 4, 4, 1), + overworld_frame(gObjectEventPic_Walrein, 4, 4, 2), + overworld_frame(gObjectEventPic_Walrein, 4, 4, 3), + overworld_frame(gObjectEventPic_Walrein, 4, 4, 4), + overworld_frame(gObjectEventPic_Walrein, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Clamperl[] = { + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 0), + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 1), + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 2), + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 3), + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 4), + overworld_frame(gObjectEventPic_Clamperl, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Huntail[] = { + overworld_frame(gObjectEventPic_Huntail, 4, 4, 0), + overworld_frame(gObjectEventPic_Huntail, 4, 4, 1), + overworld_frame(gObjectEventPic_Huntail, 4, 4, 2), + overworld_frame(gObjectEventPic_Huntail, 4, 4, 3), + overworld_frame(gObjectEventPic_Huntail, 4, 4, 4), + overworld_frame(gObjectEventPic_Huntail, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Gorebyss[] = { + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 0), + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 1), + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 2), + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 3), + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 4), + overworld_frame(gObjectEventPic_Gorebyss, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Relicanth[] = { + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 0), + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 1), + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 2), + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 3), + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 4), + overworld_frame(gObjectEventPic_Relicanth, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Luvdisc[] = { + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 0), + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 1), + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 2), + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 3), + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 4), + overworld_frame(gObjectEventPic_Luvdisc, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Bagon[] = { + overworld_frame(gObjectEventPic_Bagon, 4, 4, 0), + overworld_frame(gObjectEventPic_Bagon, 4, 4, 1), + overworld_frame(gObjectEventPic_Bagon, 4, 4, 2), + overworld_frame(gObjectEventPic_Bagon, 4, 4, 3), + overworld_frame(gObjectEventPic_Bagon, 4, 4, 4), + overworld_frame(gObjectEventPic_Bagon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Shelgon[] = { + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 0), + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 1), + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 2), + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 3), + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 4), + overworld_frame(gObjectEventPic_Shelgon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Salamence[] = { + overworld_frame(gObjectEventPic_Salamence, 4, 4, 0), + overworld_frame(gObjectEventPic_Salamence, 4, 4, 1), + overworld_frame(gObjectEventPic_Salamence, 4, 4, 2), + overworld_frame(gObjectEventPic_Salamence, 4, 4, 3), + overworld_frame(gObjectEventPic_Salamence, 4, 4, 4), + overworld_frame(gObjectEventPic_Salamence, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Beldum[] = { + overworld_frame(gObjectEventPic_Beldum, 4, 4, 0), + overworld_frame(gObjectEventPic_Beldum, 4, 4, 1), + overworld_frame(gObjectEventPic_Beldum, 4, 4, 2), + overworld_frame(gObjectEventPic_Beldum, 4, 4, 3), + overworld_frame(gObjectEventPic_Beldum, 4, 4, 4), + overworld_frame(gObjectEventPic_Beldum, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Metang[] = { + overworld_frame(gObjectEventPic_Metang, 4, 4, 0), + overworld_frame(gObjectEventPic_Metang, 4, 4, 1), + overworld_frame(gObjectEventPic_Metang, 4, 4, 2), + overworld_frame(gObjectEventPic_Metang, 4, 4, 3), + overworld_frame(gObjectEventPic_Metang, 4, 4, 4), + overworld_frame(gObjectEventPic_Metang, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Metagross[] = { + overworld_frame(gObjectEventPic_Metagross, 4, 4, 0), + overworld_frame(gObjectEventPic_Metagross, 4, 4, 1), + overworld_frame(gObjectEventPic_Metagross, 4, 4, 2), + overworld_frame(gObjectEventPic_Metagross, 4, 4, 3), + overworld_frame(gObjectEventPic_Metagross, 4, 4, 4), + overworld_frame(gObjectEventPic_Metagross, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Regirock[] = { + overworld_frame(gObjectEventPic_Regirock, 4, 4, 0), + overworld_frame(gObjectEventPic_Regirock, 4, 4, 1), + overworld_frame(gObjectEventPic_Regirock, 4, 4, 2), + overworld_frame(gObjectEventPic_Regirock, 4, 4, 3), + overworld_frame(gObjectEventPic_Regirock, 4, 4, 4), + overworld_frame(gObjectEventPic_Regirock, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Regice[] = { + overworld_frame(gObjectEventPic_Regice, 4, 4, 0), + overworld_frame(gObjectEventPic_Regice, 4, 4, 1), + overworld_frame(gObjectEventPic_Regice, 4, 4, 2), + overworld_frame(gObjectEventPic_Regice, 4, 4, 3), + overworld_frame(gObjectEventPic_Regice, 4, 4, 4), + overworld_frame(gObjectEventPic_Regice, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Registeel[] = { + overworld_frame(gObjectEventPic_Registeel, 4, 4, 0), + overworld_frame(gObjectEventPic_Registeel, 4, 4, 1), + overworld_frame(gObjectEventPic_Registeel, 4, 4, 2), + overworld_frame(gObjectEventPic_Registeel, 4, 4, 3), + overworld_frame(gObjectEventPic_Registeel, 4, 4, 4), + overworld_frame(gObjectEventPic_Registeel, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Latias[] = { + overworld_frame(gObjectEventPic_Latias, 4, 4, 0), + overworld_frame(gObjectEventPic_Latias, 4, 4, 1), + overworld_frame(gObjectEventPic_Latias, 4, 4, 2), + overworld_frame(gObjectEventPic_Latias, 4, 4, 3), + overworld_frame(gObjectEventPic_Latias, 4, 4, 4), + overworld_frame(gObjectEventPic_Latias, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Latios[] = { + overworld_frame(gObjectEventPic_Latios, 4, 4, 0), + overworld_frame(gObjectEventPic_Latios, 4, 4, 1), + overworld_frame(gObjectEventPic_Latios, 4, 4, 2), + overworld_frame(gObjectEventPic_Latios, 4, 4, 3), + overworld_frame(gObjectEventPic_Latios, 4, 4, 4), + overworld_frame(gObjectEventPic_Latios, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Kyogre[] = { + overworld_frame(gObjectEventPic_Kyogre, 8, 8, 0), + overworld_frame(gObjectEventPic_Kyogre, 8, 8, 1), + overworld_frame(gObjectEventPic_Kyogre, 8, 8, 2), + overworld_frame(gObjectEventPic_Kyogre, 8, 8, 3), + overworld_frame(gObjectEventPic_Kyogre, 8, 8, 4), + overworld_frame(gObjectEventPic_Kyogre, 8, 8, 5), +}; +static const struct SpriteFrameImage sPicTable_Groudon[] = { + overworld_frame(gObjectEventPic_Groudon, 8, 8, 0), + overworld_frame(gObjectEventPic_Groudon, 8, 8, 1), + overworld_frame(gObjectEventPic_Groudon, 8, 8, 2), + overworld_frame(gObjectEventPic_Groudon, 8, 8, 3), + overworld_frame(gObjectEventPic_Groudon, 8, 8, 4), + overworld_frame(gObjectEventPic_Groudon, 8, 8, 5), +}; +static const struct SpriteFrameImage sPicTable_Rayquaza[] = { + overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 0), + overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 1), + overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 2), + overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 3), + overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 4), + overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 5), +}; +static const struct SpriteFrameImage sPicTable_Jirachi[] = { + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 0), + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 1), + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 2), + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 3), + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 4), + overworld_frame(gObjectEventPic_Jirachi, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Deoxys[] = { + overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Ambipom[] = { + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 0), + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 1), + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 2), + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 3), + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 4), + overworld_frame(gObjectEventPic_Ambipom, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Arceus[] = { + overworld_frame(gObjectEventPic_Arceus, 8, 8, 0), + overworld_frame(gObjectEventPic_Arceus, 8, 8, 1), + overworld_frame(gObjectEventPic_Arceus, 8, 8, 2), + overworld_frame(gObjectEventPic_Arceus, 8, 8, 3), + overworld_frame(gObjectEventPic_Arceus, 8, 8, 4), + overworld_frame(gObjectEventPic_Arceus, 8, 8, 5), +}; +static const struct SpriteFrameImage sPicTable_Budew[] = { + overworld_frame(gObjectEventPic_Budew, 4, 4, 0), + overworld_frame(gObjectEventPic_Budew, 4, 4, 1), + overworld_frame(gObjectEventPic_Budew, 4, 4, 2), + overworld_frame(gObjectEventPic_Budew, 4, 4, 3), + overworld_frame(gObjectEventPic_Budew, 4, 4, 4), + overworld_frame(gObjectEventPic_Budew, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Bonsly[] = { + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 0), + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 1), + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 2), + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 3), + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 4), + overworld_frame(gObjectEventPic_Bonsly, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Chingling[] = { + overworld_frame(gObjectEventPic_Chingling, 4, 4, 0), + overworld_frame(gObjectEventPic_Chingling, 4, 4, 1), + overworld_frame(gObjectEventPic_Chingling, 4, 4, 2), + overworld_frame(gObjectEventPic_Chingling, 4, 4, 3), + overworld_frame(gObjectEventPic_Chingling, 4, 4, 4), + overworld_frame(gObjectEventPic_Chingling, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Deoxys_A[] = { + overworld_frame(gObjectEventPic_Deoxys_A, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_A, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_A, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_A, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_A, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_A, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Deoxys_D[] = { + overworld_frame(gObjectEventPic_Deoxys_D, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_D, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_D, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_D, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_D, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_D, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Deoxys_S[] = { + overworld_frame(gObjectEventPic_Deoxys_S, 4, 4, 0), + overworld_frame(gObjectEventPic_Deoxys_S, 4, 4, 1), + overworld_frame(gObjectEventPic_Deoxys_S, 4, 4, 2), + overworld_frame(gObjectEventPic_Deoxys_S, 4, 4, 3), + overworld_frame(gObjectEventPic_Deoxys_S, 4, 4, 4), + overworld_frame(gObjectEventPic_Deoxys_S, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Dusknoir[] = { + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 0), + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 1), + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 2), + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 3), + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 4), + overworld_frame(gObjectEventPic_Dusknoir, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Electivire[] = { + overworld_frame(gObjectEventPic_Electivire, 4, 4, 0), + overworld_frame(gObjectEventPic_Electivire, 4, 4, 1), + overworld_frame(gObjectEventPic_Electivire, 4, 4, 2), + overworld_frame(gObjectEventPic_Electivire, 4, 4, 3), + overworld_frame(gObjectEventPic_Electivire, 4, 4, 4), + overworld_frame(gObjectEventPic_Electivire, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Froslass[] = { + overworld_frame(gObjectEventPic_Froslass, 4, 4, 0), + overworld_frame(gObjectEventPic_Froslass, 4, 4, 1), + overworld_frame(gObjectEventPic_Froslass, 4, 4, 2), + overworld_frame(gObjectEventPic_Froslass, 4, 4, 3), + overworld_frame(gObjectEventPic_Froslass, 4, 4, 4), + overworld_frame(gObjectEventPic_Froslass, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Gallade[] = { + overworld_frame(gObjectEventPic_Gallade, 4, 4, 0), + overworld_frame(gObjectEventPic_Gallade, 4, 4, 1), + overworld_frame(gObjectEventPic_Gallade, 4, 4, 2), + overworld_frame(gObjectEventPic_Gallade, 4, 4, 3), + overworld_frame(gObjectEventPic_Gallade, 4, 4, 4), + overworld_frame(gObjectEventPic_Gallade, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Glaceon[] = { + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 0), + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 1), + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 2), + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 3), + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 4), + overworld_frame(gObjectEventPic_Glaceon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Gliscor[] = { + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 0), + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 1), + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 2), + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 3), + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 4), + overworld_frame(gObjectEventPic_Gliscor, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Happiny[] = { + overworld_frame(gObjectEventPic_Happiny, 4, 4, 0), + overworld_frame(gObjectEventPic_Happiny, 4, 4, 1), + overworld_frame(gObjectEventPic_Happiny, 4, 4, 2), + overworld_frame(gObjectEventPic_Happiny, 4, 4, 3), + overworld_frame(gObjectEventPic_Happiny, 4, 4, 4), + overworld_frame(gObjectEventPic_Happiny, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Honchkrow[] = { + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 0), + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 1), + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 2), + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 3), + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 4), + overworld_frame(gObjectEventPic_Honchkrow, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Leafeon[] = { + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 0), + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 1), + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 2), + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 3), + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 4), + overworld_frame(gObjectEventPic_Leafeon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Lickilicky[] = { + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 0), + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 1), + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 2), + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 3), + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 4), + overworld_frame(gObjectEventPic_Lickilicky, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Magmortar[] = { + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 0), + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 1), + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 2), + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 3), + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 4), + overworld_frame(gObjectEventPic_Magmortar, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Magnezone[] = { + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 0), + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 1), + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 2), + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 3), + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 4), + overworld_frame(gObjectEventPic_Magnezone, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mamoswine[] = { + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 0), + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 1), + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 2), + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 3), + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 4), + overworld_frame(gObjectEventPic_Mamoswine, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mantyke[] = { + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 0), + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 1), + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 2), + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 3), + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 4), + overworld_frame(gObjectEventPic_Mantyke, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Mismagius[] = { + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 0), + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 1), + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 2), + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 3), + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 4), + overworld_frame(gObjectEventPic_Mismagius, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_MimeJr[] = { + overworld_frame(gObjectEventPic_MimeJr, 4, 4, 0), + overworld_frame(gObjectEventPic_MimeJr, 4, 4, 1), + overworld_frame(gObjectEventPic_MimeJr, 4, 4, 2), + overworld_frame(gObjectEventPic_MimeJr, 4, 4, 3), + overworld_frame(gObjectEventPic_MimeJr, 4, 4, 4), + overworld_frame(gObjectEventPic_MimeJr, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Munchlax[] = { + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 0), + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 1), + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 2), + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 3), + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 4), + overworld_frame(gObjectEventPic_Munchlax, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_PorygonZ[] = { + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 0), + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 1), + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 2), + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 3), + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 4), + overworld_frame(gObjectEventPic_PorygonZ, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Probopass[] = { + overworld_frame(gObjectEventPic_Probopass, 4, 4, 0), + overworld_frame(gObjectEventPic_Probopass, 4, 4, 1), + overworld_frame(gObjectEventPic_Probopass, 4, 4, 2), + overworld_frame(gObjectEventPic_Probopass, 4, 4, 3), + overworld_frame(gObjectEventPic_Probopass, 4, 4, 4), + overworld_frame(gObjectEventPic_Probopass, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Regidrago[] = { + overworld_frame(gObjectEventPic_Regidrago, 4, 4, 0), + overworld_frame(gObjectEventPic_Regidrago, 4, 4, 1), + overworld_frame(gObjectEventPic_Regidrago, 4, 4, 2), + overworld_frame(gObjectEventPic_Regidrago, 4, 4, 3), + overworld_frame(gObjectEventPic_Regidrago, 4, 4, 4), + overworld_frame(gObjectEventPic_Regidrago, 4, 4, 5), + overworld_frame(gObjectEventPic_Regidrago, 4, 4, 6), + overworld_frame(gObjectEventPic_Regidrago, 4, 4, 7), +}; +static const struct SpriteFrameImage sPicTable_Regieleki[] = { + overworld_frame(gObjectEventPic_Regieleki, 4, 4, 0), + overworld_frame(gObjectEventPic_Regieleki, 4, 4, 1), + overworld_frame(gObjectEventPic_Regieleki, 4, 4, 2), + overworld_frame(gObjectEventPic_Regieleki, 4, 4, 3), + overworld_frame(gObjectEventPic_Regieleki, 4, 4, 4), + overworld_frame(gObjectEventPic_Regieleki, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Regigigas[] = { + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 0), + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 1), + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 2), + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 3), + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 4), + overworld_frame(gObjectEventPic_Regigigas, 8, 8, 5), +}; +static const struct SpriteFrameImage sPicTable_Rhyperior[] = { + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 0), + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 1), + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 2), + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 3), + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 4), + overworld_frame(gObjectEventPic_Rhyperior, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Roserade[] = { + overworld_frame(gObjectEventPic_Roserade, 4, 4, 0), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 1), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 2), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 3), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 4), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 5), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 6), + overworld_frame(gObjectEventPic_Roserade, 4, 4, 7), +}; +static const struct SpriteFrameImage sPicTable_Sylveon[] = { + overworld_frame(gObjectEventPic_Sylveon, 4, 4, 0), + overworld_frame(gObjectEventPic_Sylveon, 4, 4, 1), + overworld_frame(gObjectEventPic_Sylveon, 4, 4, 2), + overworld_frame(gObjectEventPic_Sylveon, 4, 4, 3), + overworld_frame(gObjectEventPic_Sylveon, 4, 4, 4), + overworld_frame(gObjectEventPic_Sylveon, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Tangrowth[] = { + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 0), + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 1), + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 2), + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 3), + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 4), + overworld_frame(gObjectEventPic_Tangrowth, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Togekiss[] = { + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 0), + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 1), + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 2), + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 3), + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 4), + overworld_frame(gObjectEventPic_Togekiss, 4, 4, 5), +}; +static const struct SpriteFrameImage sPicTable_Weavile[] = { + overworld_frame(gObjectEventPic_Weavile, 4, 4, 0), + overworld_frame(gObjectEventPic_Weavile, 4, 4, 1), + overworld_frame(gObjectEventPic_Weavile, 4, 4, 2), + overworld_frame(gObjectEventPic_Weavile, 4, 4, 3), + overworld_frame(gObjectEventPic_Weavile, 4, 4, 4), + overworld_frame(gObjectEventPic_Weavile, 4, 4, 5), +}; + +static const struct SpriteFrameImage sPicTable_Yanmega[] = { + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 0), + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 1), + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 2), + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 3), + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 4), + overworld_frame(gObjectEventPic_Yanmega, 4, 4, 5), +}; + +static const struct SpriteFrameImage sPicTable_DeoxysOld[] = { + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 1), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 1), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), +}; + +static const struct SpriteFrameImage sPicTable_MewOld[] = { + overworld_frame(gObjectEventPic_MewOld, 2, 4, 0), + overworld_frame(gObjectEventPic_MewOld, 2, 4, 1), + overworld_frame(gObjectEventPic_MewOld, 2, 4, 2), + overworld_frame(gObjectEventPic_MewOld, 2, 4, 3), + overworld_frame(gObjectEventPic_MewOld, 2, 4, 4), + overworld_frame(gObjectEventPic_MewOld, 2, 4, 5), + overworld_frame(gObjectEventPic_MewOld, 2, 4, 6), + overworld_frame(gObjectEventPic_MewOld, 2, 4, 7), + overworld_frame(gObjectEventPic_MewOld, 2, 4, 8), +}; + +static const struct SpriteFrameImage sPicTable_DusclopsOld[] = { + overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 0), + overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 1), + overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 2), + overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 3), + overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 4), + overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 5), + overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 6), + overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 7), + overworld_frame(gObjectEventPic_DusclopsOld, 2, 4, 8), +}; + +static const struct SpriteFrameImage sPicTable_AzurillOld[] = { + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 2), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 2), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_KecleonOld[] = { + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 2), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 2), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_WingullOld[] = { + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 0), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 2), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 4), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 1), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 1), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 3), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 3), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 5), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 5), +}; + +static const struct SpriteFrameImage sPicTable_AzumarillOld[] = { + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 2), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 2), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_PikachuOld[] = { + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 0), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 1), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 2), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 0), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 0), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 1), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 1), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 2), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_ZigzagoonOld[] = { + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 2), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 2), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_SkittyOld[] = { + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 0), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 1), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 2), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 0), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 0), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 1), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 1), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 2), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_PoochyenaOld[] = { + overworld_frame(gObjectEventPic_PoochyenaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_PoochyenaOld, 4, 4, 1), + overworld_frame(gObjectEventPic_PoochyenaOld, 4, 4, 2), + overworld_frame(gObjectEventPic_PoochyenaOld, 4, 4, 3), + overworld_frame(gObjectEventPic_PoochyenaOld, 4, 4, 4), + overworld_frame(gObjectEventPic_PoochyenaOld, 4, 4, 5), + overworld_frame(gObjectEventPic_PoochyenaOld, 4, 4, 6), + overworld_frame(gObjectEventPic_PoochyenaOld, 4, 4, 7), + overworld_frame(gObjectEventPic_PoochyenaOld, 4, 4, 8), +}; + +static const struct SpriteFrameImage sPicTable_LugiaOld[] = { + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 1), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 1), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 1), +}; + +static const struct SpriteFrameImage sPicTable_HoOhOld[] = { + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 1), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 1), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 1), }; static const struct SpriteFrameImage sPicTable_RubySapphireBrendan[] = { @@ -2161,6 +5790,18 @@ static const struct SpriteFrameImage sPicTable_RubySapphireBrendan[] = { overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 8), }; +static const struct SpriteFrameImage sPicTable_KirliaOld[] = { + overworld_frame(gObjectEventPic_KirliaOld, 2, 4, 0), + overworld_frame(gObjectEventPic_KirliaOld, 2, 4, 1), + overworld_frame(gObjectEventPic_KirliaOld, 2, 4, 2), + overworld_frame(gObjectEventPic_KirliaOld, 2, 4, 3), + overworld_frame(gObjectEventPic_KirliaOld, 2, 4, 4), + overworld_frame(gObjectEventPic_KirliaOld, 2, 4, 5), + overworld_frame(gObjectEventPic_KirliaOld, 2, 4, 6), + overworld_frame(gObjectEventPic_KirliaOld, 2, 4, 7), + overworld_frame(gObjectEventPic_KirliaOld, 2, 4, 8), +}; + static const struct SpriteFrameImage sPicTable_RubySapphireMay[] = { overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 0), overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 1), diff --git a/src/data/text/follower_messages.h b/src/data/text/follower_messages.h new file mode 100755 index 000000000..3fbec109c --- /dev/null +++ b/src/data/text/follower_messages.h @@ -0,0 +1,301 @@ +extern const u8 EventScript_FollowerIsShivering[]; +extern const u8 EventScript_FollowerNostalgia[]; +extern const u8 EventScript_FollowerHopping[]; +extern const u8 EventScript_FollowerJumpOnPlayer[]; +extern const u8 EventScript_FollowerCuddling[]; +extern const u8 EventScript_FollowerShiverCuddling[]; +extern const u8 EventScript_FollowerGetCloser[]; +extern const u8 EventScript_FollowerPokingPlayer[]; +extern const u8 EventScript_FollowerLookAround[]; +extern const u8 EventScript_FollowerLookAway[]; +extern const u8 EventScript_FollowerLookAwayBark[]; +extern const u8 EventScript_FollowerLookAwayPoke[]; +extern const u8 EventScript_FollowerPokeGround[]; +extern const u8 EventScript_FollowerStartled[]; +extern const u8 EventScript_FollowerFastHopping[]; +extern const u8 EventScript_FollowerDizzy[]; +extern const u8 EventScript_FollowerLookAroundScared[]; +extern const u8 EventScript_FollowerDance[]; +extern const u8 EventScript_FollowerLookUp[]; + +// 'Generic', unconditional happy messages +static const u8 sHappyMsg00[] = _("{STR_VAR_1} began poking you in the\nstomach."); +static const u8 sHappyMsg01[] = _("{STR_VAR_1} is happy but shy."); +static const u8 sHappyMsg02[] = _("{STR_VAR_1} is coming along happily."); +static const u8 sHappyMsg03[] = _("{STR_VAR_1} is composed."); +static const u8 sHappyMsg04[] = _("{STR_VAR_1} seems to be feeling\ngreat about walking with you!"); +static const u8 sHappyMsg05[] = _("{STR_VAR_1} is glowing with health."); +static const u8 sHappyMsg06[] = _("{STR_VAR_1} looks very happy."); +static const u8 sHappyMsg07[] = _("{STR_VAR_1} put in extra effort."); +static const u8 sHappyMsg08[] = _("{STR_VAR_1} is smelling the scents\nof the surrounding air."); +static const u8 sHappyMsg09[] = _("{STR_VAR_1} is jumping for joy!"); +static const u8 sHappyMsg10[] = _("{STR_VAR_1} is still feeling great!"); +static const u8 sHappyMsg11[] = _("Your POKéMON has caught the scent of\nsmoke."); +static const u8 sHappyMsg12[] = _("{STR_VAR_1} is poking at your belly."); +static const u8 sHappyMsg13[] = _("Your POKéMON stretched out its body\nand is relaxing."); +static const u8 sHappyMsg14[] = _("{STR_VAR_1} looks like it wants to\nlead!"); +static const u8 sHappyMsg15[] = _("{STR_VAR_1} is doing it's best to\nkeep up with you."); +static const u8 sHappyMsg16[] = _("{STR_VAR_1} is happily cuddling up\nto you!"); +static const u8 sHappyMsg17[] = _("{STR_VAR_1} is full of life!"); +static const u8 sHappyMsg18[] = _("{STR_VAR_1} seems to be very happy!"); +static const u8 sHappyMsg19[] = _("{STR_VAR_1} is so happy that it\ncan't stand still!"); +static const u8 sHappyMsg20[] = _("{STR_VAR_1} nodded slowly."); +static const u8 sHappyMsg21[] = _("{STR_VAR_1} is very eager!"); +static const u8 sHappyMsg22[] = _("{STR_VAR_1} is wandering around and\nlistening to the different sounds."); +static const u8 sHappyMsg23[] = _("{STR_VAR_1} looks very interested."); +static const u8 sHappyMsg24[] = _("{STR_VAR_1} is somehow forcing\nitself to keep going."); +static const u8 sHappyMsg25[] = _("{STR_VAR_1} gave you a sunny look!"); +static const u8 sHappyMsg26[] = _("{STR_VAR_1} gives you a happy look\nand a smile."); +static const u8 sHappyMsg27[] = _("Your POKéMON is smelling the scent\nof flowers."); +static const u8 sHappyMsg28[] = _("{STR_VAR_1} seems very happy to see\nyou!"); +static const u8 sHappyMsg29[] = _("{STR_VAR_1} faced this way and\ngrinned."); +static const u8 sHappyMsg30[] = _("{STR_VAR_1} happily cuddled up to\nyou!"); + // Conditional messages begin here, index 31 +static const u8 sHappyMsg31[] = _("Your POKéMON seems happy about the\ngreat weather."); +static const u8 sHappyMsg32[] = _("{STR_VAR_1} is very composed and\nsure of itself!"); + +const struct FollowerMsgInfo gFollowerHappyMessages[] = { + {sHappyMsg00, EventScript_FollowerPokingPlayer}, + {sHappyMsg01}, {sHappyMsg02}, {sHappyMsg03}, {sHappyMsg04}, {sHappyMsg05}, {sHappyMsg06}, {sHappyMsg07}, + {sHappyMsg08, EventScript_FollowerLookAround}, + {sHappyMsg09, EventScript_FollowerHopping}, + {sHappyMsg10}, {sHappyMsg11}, + {sHappyMsg12, EventScript_FollowerPokingPlayer}, + {sHappyMsg13, EventScript_FollowerLookAround}, + {sHappyMsg14}, {sHappyMsg15}, + {sHappyMsg16, EventScript_FollowerCuddling}, + {sHappyMsg17}, {sHappyMsg18}, + {sHappyMsg19, EventScript_FollowerFastHopping}, + {sHappyMsg20}, {sHappyMsg21}, {sHappyMsg22}, {sHappyMsg23}, {sHappyMsg24}, {sHappyMsg25}, {sHappyMsg26}, {sHappyMsg27}, {sHappyMsg28}, {sHappyMsg29}, + {sHappyMsg30, EventScript_FollowerCuddling}, + {sHappyMsg31}, {sHappyMsg32}, +}; + +// Unconditional neutral messages +static const u8 sNeutralMsg00[] = _("{STR_VAR_1} is steadily poking at\nthe ground."); +static const u8 sNeutralMsg01[] = _("{STR_VAR_1} is standing guard."); +static const u8 sNeutralMsg02[] = _("{STR_VAR_1} is staring patiently at\nnothing at all."); +static const u8 sNeutralMsg03[] = _("{STR_VAR_1} is wandering around."); +static const u8 sNeutralMsg04[] = _("Your POKéMON yawned loudly!"); +static const u8 sNeutralMsg05[] = _("Your POKéMON is looking around\nrestlessly."); +static const u8 sNeutralMsg06[] = _("{STR_VAR_1} is looking this way and\nsmiling."); +static const u8 sNeutralMsg07[] = _("{STR_VAR_1} is gazing around\nrestlessly."); +static const u8 sNeutralMsg08[] = _("{STR_VAR_1} let out a battle cry."); +static const u8 sNeutralMsg09[] = _("{STR_VAR_1} danced a wonderful\ndance!"); +static const u8 sNeutralMsg10[] = _("{STR_VAR_1} is very eager."); +static const u8 sNeutralMsg11[] = _("{STR_VAR_1} is staring intently into\nthe distance."); +static const u8 sNeutralMsg12[] = _("{STR_VAR_1} is on the lookout!"); +static const u8 sNeutralMsg13[] = _("{STR_VAR_1} looked off into the\ndistance and barked!"); + +const struct FollowerMsgInfo gFollowerNeutralMessages[] = { + {sNeutralMsg00, EventScript_FollowerPokeGround}, + {sNeutralMsg01}, + {sNeutralMsg02, EventScript_FollowerLookAway}, + {sNeutralMsg03, EventScript_FollowerLookAround}, + {sNeutralMsg04}, + {sNeutralMsg05, EventScript_FollowerLookAround}, + {sNeutralMsg06}, {sNeutralMsg07}, {sNeutralMsg08}, + {sNeutralMsg09, EventScript_FollowerDance}, + {sNeutralMsg10}, + {sNeutralMsg11, EventScript_FollowerLookAway}, + {sNeutralMsg12}, + {sNeutralMsg13, EventScript_FollowerLookAwayBark}, +}; + +// Unconditional sad messages +static const u8 sSadMsg00[] = _("{STR_VAR_1} is dizzy."); +static const u8 sSadMsg01[] = _("{STR_VAR_1} is stepping on your\nfeet!"); +static const u8 sSadMsg02[] = _("{STR_VAR_1} seems a little tired."); + // Conditional messages begin, index 3 +static const u8 sSadMsg03[] = _("{STR_VAR_1} is not happy."); +static const u8 sSadMsg04[] = _("{STR_VAR_1} is going to fall down!\n"); +static const u8 sSadMsg05[] = _("{STR_VAR_1} seems to be about to\nfall over!"); +static const u8 sSadMsg06[] = _("{STR_VAR_1} is trying very hard to\nkeep up with you…"); +static const u8 sSadMsg07[] = _("{STR_VAR_1} is nervous."); + +const struct FollowerMsgInfo gFollowerSadMessages[] = { + {sSadMsg00, EventScript_FollowerDizzy}, + {sSadMsg01}, {sSadMsg02}, + {sSadMsg03}, {sSadMsg04}, {sSadMsg05}, {sSadMsg06}, {sSadMsg07}, +}; + +// Unconditional upset messages +static const u8 sUpsetMsg00[] = _("{STR_VAR_1} seems unhappy somehow…"); +static const u8 sUpsetMsg01[] = _("{STR_VAR_1} is making an unhappy\nface."); +static const u8 sUpsetMsg02[] = _("…Your POKéMON seems a little\ncold."); + // Conditional messages, index 3 +static const u8 sUpsetMsg03[] = _("{STR_VAR_1} is taking shelter in the\ngrass from the rain."); + +const struct FollowerMsgInfo gFollowerUpsetMessages[] = { + {sUpsetMsg00}, {sUpsetMsg01}, + {sUpsetMsg02, EventScript_FollowerIsShivering}, + {sUpsetMsg03}, +}; + +// Unconditional angry messages +static const u8 sAngryMsg00[] = _("{STR_VAR_1} let out a roar!"); +static const u8 sAngryMsg01[] = _("{STR_VAR_1} is making a face like\nits angry!"); +static const u8 sAngryMsg02[] = _("{STR_VAR_1} seems to be angry for\nsome reason."); +static const u8 sAngryMsg03[] = _("Your POKéMON turned to face the\nother way, showing a defiant face."); +static const u8 sAngryMsg04[] = _("{STR_VAR_1} cried out."); + +const struct FollowerMsgInfo gFollowerAngryMessages[] = { + {sAngryMsg00}, {sAngryMsg01}, {sAngryMsg02}, + {sAngryMsg03, EventScript_FollowerLookAway}, + {sAngryMsg04}, +}; + +// Unconditional pensive messages +static const u8 sPensiveMsg00[] = _("{STR_VAR_1} is looking down\nsteadily."); +static const u8 sPensiveMsg01[] = _("{STR_VAR_1} is surveying the area."); +static const u8 sPensiveMsg02[] = _("{STR_VAR_1} is peering down."); +static const u8 sPensiveMsg03[] = _("{STR_VAR_1} is somehow fighting off\nsleep…"); +static const u8 sPensiveMsg04[] = _("{STR_VAR_1} seems to be wandering\naround."); +static const u8 sPensiveMsg05[] = _("{STR_VAR_1} is looking around\nabsentmindedly."); +static const u8 sPensiveMsg06[] = _("{STR_VAR_1} yawned very loudly!"); +static const u8 sPensiveMsg07[] = _("{STR_VAR_1} is relaxing comfortably."); +static const u8 sPensiveMsg08[] = _("{STR_VAR_1} is staring steadfastly\nat your face."); +static const u8 sPensiveMsg09[] = _("{STR_VAR_1} is staring intently at\nyour face."); +static const u8 sPensiveMsg10[] = _("{STR_VAR_1} is focusing its\nattention on you."); +static const u8 sPensiveMsg11[] = _("{STR_VAR_1} is staring into the\ndepths."); +static const u8 sPensiveMsg12[] = _("{STR_VAR_1} is sniffing at the\nground."); +static const u8 sPensiveMsg13[] = _("Your POKéMON is staring intently at\nnothing."); +static const u8 sPensiveMsg14[] = _("{STR_VAR_1} focused with a sharp\ngaze!"); +static const u8 sPensiveMsg15[] = _("{STR_VAR_1} is concentrating."); +static const u8 sPensiveMsg16[] = _("{STR_VAR_1} faced this way and\nnodded."); +static const u8 sPensiveMsg17[] = _("{STR_VAR_1} seems a bit nervous…"); +static const u8 sPensiveMsg18[] = _("{STR_VAR_1} is looking at your\nfootprints."); +static const u8 sPensiveMsg19[] = _("{STR_VAR_1} is staring straight into\nyour eyes."); + +const struct FollowerMsgInfo gFollowerPensiveMessages[] = { + {sPensiveMsg00}, + {sPensiveMsg01, EventScript_FollowerLookAround}, + {sPensiveMsg02}, {sPensiveMsg03}, {sPensiveMsg04}, + {sPensiveMsg05, EventScript_FollowerLookAround}, + {sPensiveMsg06}, {sPensiveMsg07}, {sPensiveMsg08}, {sPensiveMsg09}, {sPensiveMsg10}, + {sPensiveMsg11, EventScript_FollowerLookAway}, + {sPensiveMsg12, EventScript_FollowerPokeGround}, + {sPensiveMsg13, EventScript_FollowerLookAway}, + {sPensiveMsg14}, {sPensiveMsg15}, {sPensiveMsg16}, {sPensiveMsg17}, {sPensiveMsg18}, {sPensiveMsg19}, +}; + +// All 'love' messages are unconditional +static const u8 sLoveMsg00[] = _("{STR_VAR_1} suddenly started walking\ncloser!"); +static const u8 sLoveMsg01[] = _("{STR_VAR_1} cheeks are becoming\nrosy!"); +static const u8 sLoveMsg02[] = _("Woah! {STR_VAR_1} suddenly hugged\nyou!"); +static const u8 sLoveMsg03[] = _("Woah! {STR_VAR_1} is suddenly\nplayful!"); +static const u8 sLoveMsg04[] = _("{STR_VAR_1} is rubbing against your\nlegs!"); +static const u8 sLoveMsg05[] = _("{STR_VAR_1} blushes."); +static const u8 sLoveMsg06[] = _("Ah! {STR_VAR_1} cuddles you!"); +static const u8 sLoveMsg07[] = _("{STR_VAR_1} is regarding you with\nadoration!"); +static const u8 sLoveMsg08[] = _("{STR_VAR_1} got closer to you."); +static const u8 sLoveMsg09[] = _("{STR_VAR_1} is keeping close to your\nfeet."); + +const struct FollowerMsgInfo gFollowerLoveMessages[] = { + {sLoveMsg00, EventScript_FollowerGetCloser}, + {sLoveMsg01}, + {sLoveMsg02, EventScript_FollowerCuddling}, + {sLoveMsg03}, + {sLoveMsg04, EventScript_FollowerCuddling}, + {sLoveMsg05}, + {sLoveMsg06, EventScript_FollowerCuddling}, + {sLoveMsg07}, + {sLoveMsg08, EventScript_FollowerGetCloser}, + {sLoveMsg09}, +}; + +// Unconditional surprised messages +static const u8 sSurpriseMsg00[] = _("{STR_VAR_1} is in danger of falling\nover!"); +static const u8 sSurpriseMsg01[] = _("{STR_VAR_1} bumped into you!"); +static const u8 sSurpriseMsg02[] = _("{STR_VAR_1} doesn't seem to be used\nto its own name yet."); +static const u8 sSurpriseMsg03[] = _("{STR_VAR_1} is peering down."); +static const u8 sSurpriseMsg04[] = _("Your POKéMON stumbled and nearly\nfell!"); +static const u8 sSurpriseMsg05[] = _("{STR_VAR_1} feels something and is\nhowling!"); +static const u8 sSurpriseMsg06[] = _("{STR_VAR_1} seems refreshed!"); +static const u8 sSurpriseMsg07[] = _("{STR_VAR_1} suddenly turned around\nand started barking!"); +static const u8 sSurpriseMsg08[] = _("{STR_VAR_1} suddenly turned around!"); +static const u8 sSurpriseMsg09[] = _("Your POKéMON was surprised that you\nsuddenly spoke to it!"); +static const u8 sSurpriseMsg10[] = _("Sniff sniff, something smells really\ngood!"); +static const u8 sSurpriseMsg11[] = _("{STR_VAR_1} feels refreshed."); +static const u8 sSurpriseMsg12[] = _("{STR_VAR_1} is wobbling and seems\nabout to fall over."); +static const u8 sSurpriseMsg13[] = _("{STR_VAR_1} is in danger of falling\nover."); +static const u8 sSurpriseMsg14[] = _("{STR_VAR_1} is walking along\ncautiously."); +static const u8 sSurpriseMsg15[] = _("{STR_VAR_1} is getting tense with\nnervous energy."); +static const u8 sSurpriseMsg16[] = _("{STR_VAR_1} sensed something strange\nand was surprised!"); +static const u8 sSurpriseMsg17[] = _("{STR_VAR_1} is scared and snuggled\nup to you!"); +static const u8 sSurpriseMsg18[] = _("{STR_VAR_1} is feeling an unusual\npresence…"); +static const u8 sSurpriseMsg19[] = _("{STR_VAR_1} is getting tense with\nnervous energy."); + // Conditional messages, index 20 +static const u8 sSurpriseMsg20[] = _("{STR_VAR_1} seems to be very\nsurprised that it is raining!"); + +const struct FollowerMsgInfo gFollowerSurpriseMessages[] = { + {sSurpriseMsg00}, + {sSurpriseMsg01, EventScript_FollowerPokingPlayer}, + {sSurpriseMsg02}, {sSurpriseMsg03}, {sSurpriseMsg04}, {sSurpriseMsg05}, {sSurpriseMsg06}, + {sSurpriseMsg07, EventScript_FollowerLookAwayBark}, + {sSurpriseMsg08, EventScript_FollowerLookAway}, + {sSurpriseMsg09}, + {sSurpriseMsg10, EventScript_FollowerLookAround}, + {sSurpriseMsg11}, {sSurpriseMsg12}, {sSurpriseMsg13}, {sSurpriseMsg14}, {sSurpriseMsg15}, {sSurpriseMsg16}, + {sSurpriseMsg17, EventScript_FollowerCuddling}, + {sSurpriseMsg18}, + {sSurpriseMsg19, EventScript_FollowerLookAround}, + {sSurpriseMsg20}, +}; + +// Unconditional curious messages +static const u8 sCuriousMsg00[] = _("Your POKéMON is looking around\nrestlessly for something."); +static const u8 sCuriousMsg01[] = _("Your POKéMON wasn't watching where\nit was going and ran into you!"); +static const u8 sCuriousMsg02[] = _("Sniff, sniff! Is there something\nnearby?"); +static const u8 sCuriousMsg03[] = _("{STR_VAR_1} is rolling a pebble\naround playfully."); +static const u8 sCuriousMsg04[] = _("{STR_VAR_1} is wandering around and\nsearching for something."); +static const u8 sCuriousMsg05[] = _("{STR_VAR_1} is sniffing at you."); +static const u8 sCuriousMsg06[] = _("{STR_VAR_1} seems to be a little\nhesitant…"); + +const struct FollowerMsgInfo gFollowerCuriousMessages[] = { + {sCuriousMsg00, EventScript_FollowerLookAround}, + {sCuriousMsg01, EventScript_FollowerPokingPlayer}, + {sCuriousMsg02}, {sCuriousMsg03}, + {sCuriousMsg04, EventScript_FollowerLookAround}, + {sCuriousMsg05}, {sCuriousMsg06}, +}; + +// Unconditional music messages +static const u8 sMusicMsg00[] = _("{STR_VAR_1} is showing off its\nagility!"); +static const u8 sMusicMsg01[] = _("{STR_VAR_1} is moving around\nhappily!"); +static const u8 sMusicMsg02[] = _("Woah! {STR_VAR_1} suddenly started\ndancing in happiness!"); +static const u8 sMusicMsg03[] = _("{STR_VAR_1} is steadily keeping up\nwith you!"); +static const u8 sMusicMsg04[] = _("{STR_VAR_1} seems to want to play\nwith you."); +static const u8 sMusicMsg05[] = _("{STR_VAR_1} is happy skipping about."); +static const u8 sMusicMsg06[] = _("{STR_VAR_1} is singing and humming."); +static const u8 sMusicMsg07[] = _("{STR_VAR_1} is nipping at your feet!"); +static const u8 sMusicMsg08[] = _("{STR_VAR_1} turns around and looks\nat you."); +static const u8 sMusicMsg09[] = _("{STR_VAR_1} is working hard to show\noff its mighty power!"); +static const u8 sMusicMsg10[] = _("Whoa! {STR_VAR_1} suddenly danced in\nhappiness!"); +static const u8 sMusicMsg11[] = _("{STR_VAR_1} is cheerful!"); +static const u8 sMusicMsg12[] = _("{STR_VAR_1} is jumping around in a\ncarefree way!"); +static const u8 sMusicMsg13[] = _("Your POKéMON seems to be smelling a\nnostalgically familiar scent…"); +// Conditional music messages, index 14 +static const u8 sMusicMsg14[] = _("{STR_VAR_1} is very happy about the\nrain."); + +const struct FollowerMsgInfo gFollowerMusicMessages[] = { + {sMusicMsg00, EventScript_FollowerLookAround}, + {sMusicMsg01}, + {sMusicMsg02, EventScript_FollowerDance}, + {sMusicMsg03}, + {sMusicMsg04, EventScript_FollowerHopping}, + {sMusicMsg05, EventScript_FollowerHopping}, + {sMusicMsg06}, {sMusicMsg07}, {sMusicMsg08}, {sMusicMsg09}, + {sMusicMsg10, EventScript_FollowerDance}, + {sMusicMsg11}, + {sMusicMsg12, EventScript_FollowerHopping}, + {sMusicMsg13, EventScript_FollowerNostalgia}, + {sMusicMsg14} +}; + + +static const u8 sPoisonedMsg00[] = _("{STR_VAR_1} is shivering with the\neffects of being poisoned."); + +const struct FollowerMsgInfo gFollowerPoisonedMessages[] = { + {sPoisonedMsg00, EventScript_FollowerIsShivering}, +}; diff --git a/src/data/tilesets/graphics.h b/src/data/tilesets/graphics.h index 2fdc28d21..a6ca2746b 100755 --- a/src/data/tilesets/graphics.h +++ b/src/data/tilesets/graphics.h @@ -1,6 +1,6 @@ const u32 gTilesetTiles_Petalburg[] = INCBIN_U32("data/tilesets/secondary/petalburg/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Petalburg[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Petalburg[][16] = { INCBIN_U16("data/tilesets/secondary/petalburg/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/petalburg/palettes/01.gbapal"), @@ -22,7 +22,7 @@ const u16 gTilesetPalettes_Petalburg[][16] = const u32 gTilesetTiles_Rustboro[] = INCBIN_U32("data/tilesets/secondary/rustboro/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Rustboro[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Rustboro[][16] = { INCBIN_U16("data/tilesets/secondary/rustboro/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/rustboro/palettes/01.gbapal"), @@ -44,7 +44,7 @@ const u16 gTilesetPalettes_Rustboro[][16] = const u32 gTilesetTiles_Dewford[] = INCBIN_U32("data/tilesets/secondary/dewford/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Dewford[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Dewford[][16] = { INCBIN_U16("data/tilesets/secondary/dewford/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/dewford/palettes/01.gbapal"), @@ -66,7 +66,7 @@ const u16 gTilesetPalettes_Dewford[][16] = const u32 gTilesetTiles_Slateport[] = INCBIN_U32("data/tilesets/secondary/slateport/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Slateport[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Slateport[][16] = { INCBIN_U16("data/tilesets/secondary/slateport/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/slateport/palettes/01.gbapal"), @@ -88,7 +88,7 @@ const u16 gTilesetPalettes_Slateport[][16] = const u32 gTilesetTiles_Mauville[] = INCBIN_U32("data/tilesets/secondary/mauville/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Mauville[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Mauville[][16] = { INCBIN_U16("data/tilesets/secondary/mauville/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/mauville/palettes/01.gbapal"), @@ -110,7 +110,7 @@ const u16 gTilesetPalettes_Mauville[][16] = const u32 gTilesetTiles_Lavaridge[] = INCBIN_U32("data/tilesets/secondary/lavaridge/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Lavaridge[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Lavaridge[][16] = { INCBIN_U16("data/tilesets/secondary/lavaridge/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/lavaridge/palettes/01.gbapal"), @@ -132,7 +132,7 @@ const u16 gTilesetPalettes_Lavaridge[][16] = const u32 gTilesetTiles_Fallarbor[] = INCBIN_U32("data/tilesets/secondary/fallarbor/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Fallarbor[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Fallarbor[][16] = { INCBIN_U16("data/tilesets/secondary/fallarbor/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/fallarbor/palettes/01.gbapal"), @@ -154,7 +154,7 @@ const u16 gTilesetPalettes_Fallarbor[][16] = const u32 gTilesetTiles_Fortree[] = INCBIN_U32("data/tilesets/secondary/fortree/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Fortree[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Fortree[][16] = { INCBIN_U16("data/tilesets/secondary/fortree/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/fortree/palettes/01.gbapal"), @@ -176,7 +176,7 @@ const u16 gTilesetPalettes_Fortree[][16] = const u32 gTilesetTiles_Lilycove[] = INCBIN_U32("data/tilesets/secondary/lilycove/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Lilycove[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Lilycove[][16] = { INCBIN_U16("data/tilesets/secondary/lilycove/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/lilycove/palettes/01.gbapal"), @@ -198,7 +198,7 @@ const u16 gTilesetPalettes_Lilycove[][16] = const u32 gTilesetTiles_Mossdeep[] = INCBIN_U32("data/tilesets/secondary/mossdeep/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Mossdeep[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Mossdeep[][16] = { INCBIN_U16("data/tilesets/secondary/mossdeep/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/mossdeep/palettes/01.gbapal"), @@ -220,7 +220,7 @@ const u16 gTilesetPalettes_Mossdeep[][16] = const u32 gTilesetTiles_EverGrande[] = INCBIN_U32("data/tilesets/secondary/ever_grande/tiles.4bpp.lz"); -const u16 gTilesetPalettes_EverGrande[][16] = +const u16 ALIGNED(4) gTilesetPalettes_EverGrande[][16] = { INCBIN_U16("data/tilesets/secondary/ever_grande/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/ever_grande/palettes/01.gbapal"), @@ -242,7 +242,7 @@ const u16 gTilesetPalettes_EverGrande[][16] = const u32 gTilesetTiles_Pacifidlog[] = INCBIN_U32("data/tilesets/secondary/pacifidlog/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Pacifidlog[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Pacifidlog[][16] = { INCBIN_U16("data/tilesets/secondary/pacifidlog/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/pacifidlog/palettes/01.gbapal"), @@ -264,7 +264,7 @@ const u16 gTilesetPalettes_Pacifidlog[][16] = const u32 gTilesetTiles_Sootopolis[] = INCBIN_U32("data/tilesets/secondary/sootopolis/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Sootopolis[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Sootopolis[][16] = { INCBIN_U16("data/tilesets/secondary/sootopolis/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/sootopolis/palettes/01.gbapal"), @@ -286,7 +286,7 @@ const u16 gTilesetPalettes_Sootopolis[][16] = const u32 gTilesetTiles_BattleFrontierOutsideWest[] = INCBIN_U32("data/tilesets/secondary/battle_frontier_outside_west/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattleFrontierOutsideWest[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattleFrontierOutsideWest[][16] = { INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/palettes/01.gbapal"), @@ -308,7 +308,7 @@ const u16 gTilesetPalettes_BattleFrontierOutsideWest[][16] = const u32 gTilesetTiles_BattleFrontierOutsideEast[] = INCBIN_U32("data/tilesets/secondary/battle_frontier_outside_east/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattleFrontierOutsideEast[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattleFrontierOutsideEast[][16] = { INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/palettes/01.gbapal"), @@ -330,7 +330,7 @@ const u16 gTilesetPalettes_BattleFrontierOutsideEast[][16] = const u32 gTilesetTiles_InsideBuilding[] = INCBIN_U32("data/tilesets/primary/building/tiles.4bpp.lz"); -const u16 gTilesetPalettes_InsideBuilding[][16] = +const u16 ALIGNED(4) gTilesetPalettes_InsideBuilding[][16] = { INCBIN_U16("data/tilesets/primary/building/palettes/00.gbapal"), INCBIN_U16("data/tilesets/primary/building/palettes/01.gbapal"), @@ -352,7 +352,7 @@ const u16 gTilesetPalettes_InsideBuilding[][16] = const u32 gTilesetTiles_Shop[] = INCBIN_U32("data/tilesets/secondary/shop/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Shop[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Shop[][16] = { INCBIN_U16("data/tilesets/secondary/shop/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/shop/palettes/01.gbapal"), @@ -374,7 +374,7 @@ const u16 gTilesetPalettes_Shop[][16] = const u32 gTilesetTiles_PokemonCenter[] = INCBIN_U32("data/tilesets/secondary/pokemon_center/tiles.4bpp.lz"); -const u16 gTilesetPalettes_PokemonCenter[][16] = +const u16 ALIGNED(4) gTilesetPalettes_PokemonCenter[][16] = { INCBIN_U16("data/tilesets/secondary/pokemon_center/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/pokemon_center/palettes/01.gbapal"), @@ -396,7 +396,7 @@ const u16 gTilesetPalettes_PokemonCenter[][16] = const u32 gTilesetTiles_Cave[] = INCBIN_U32("data/tilesets/secondary/cave/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Cave[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Cave[][16] = { INCBIN_U16("data/tilesets/secondary/cave/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/cave/palettes/01.gbapal"), @@ -418,7 +418,7 @@ const u16 gTilesetPalettes_Cave[][16] = const u32 gTilesetTiles_PokemonSchool[] = INCBIN_U32("data/tilesets/secondary/pokemon_school/tiles.4bpp.lz"); -const u16 gTilesetPalettes_PokemonSchool[][16] = +const u16 ALIGNED(4) gTilesetPalettes_PokemonSchool[][16] = { INCBIN_U16("data/tilesets/secondary/pokemon_school/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/pokemon_school/palettes/01.gbapal"), @@ -440,7 +440,7 @@ const u16 gTilesetPalettes_PokemonSchool[][16] = const u32 gTilesetTiles_PokemonFanClub[] = INCBIN_U32("data/tilesets/secondary/pokemon_fan_club/tiles.4bpp.lz"); -const u16 gTilesetPalettes_PokemonFanClub[][16] = +const u16 ALIGNED(4) gTilesetPalettes_PokemonFanClub[][16] = { INCBIN_U16("data/tilesets/secondary/pokemon_fan_club/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/pokemon_fan_club/palettes/01.gbapal"), @@ -462,7 +462,7 @@ const u16 gTilesetPalettes_PokemonFanClub[][16] = const u32 gTilesetTiles_Unused1[] = INCBIN_U32("data/tilesets/secondary/unused_1/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Unused1[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Unused1[][16] = { INCBIN_U16("data/tilesets/secondary/unused_1/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/unused_1/palettes/01.gbapal"), @@ -484,7 +484,7 @@ const u16 gTilesetPalettes_Unused1[][16] = const u32 gTilesetTiles_MeteorFalls[] = INCBIN_U32("data/tilesets/secondary/meteor_falls/tiles.4bpp.lz"); -const u16 gTilesetPalettes_MeteorFalls[][16] = +const u16 ALIGNED(4) gTilesetPalettes_MeteorFalls[][16] = { INCBIN_U16("data/tilesets/secondary/meteor_falls/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/meteor_falls/palettes/01.gbapal"), @@ -506,7 +506,7 @@ const u16 gTilesetPalettes_MeteorFalls[][16] = const u32 gTilesetTiles_OceanicMuseum[] = INCBIN_U32("data/tilesets/secondary/oceanic_museum/tiles.4bpp.lz"); -const u16 gTilesetPalettes_OceanicMuseum[][16] = +const u16 ALIGNED(4) gTilesetPalettes_OceanicMuseum[][16] = { INCBIN_U16("data/tilesets/secondary/oceanic_museum/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/oceanic_museum/palettes/01.gbapal"), @@ -529,7 +529,7 @@ const u16 gTilesetPalettes_OceanicMuseum[][16] = const u32 gTilesetTiles_CableClub[] = INCBIN_U32("data/tilesets/secondary/cable_club/tiles.4bpp"); const u32 gTilesetTiles_UnknownCableClub[] = INCBIN_U32("data/tilesets/secondary/cable_club/unknown_tiles.4bpp"); -const u16 gTilesetPalettes_CableClub[][16] = +const u16 ALIGNED(4) gTilesetPalettes_CableClub[][16] = { INCBIN_U16("data/tilesets/secondary/cable_club/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/cable_club/palettes/01.gbapal"), @@ -551,7 +551,7 @@ const u16 gTilesetPalettes_CableClub[][16] = const u32 gTilesetTiles_SeashoreHouse[] = INCBIN_U32("data/tilesets/secondary/seashore_house/tiles.4bpp.lz"); -const u16 gTilesetPalettes_SeashoreHouse[][16] = +const u16 ALIGNED(4) gTilesetPalettes_SeashoreHouse[][16] = { INCBIN_U16("data/tilesets/secondary/seashore_house/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/seashore_house/palettes/01.gbapal"), @@ -573,7 +573,7 @@ const u16 gTilesetPalettes_SeashoreHouse[][16] = const u32 gTilesetTiles_PrettyPetalFlowerShop[] = INCBIN_U32("data/tilesets/secondary/pretty_petal_flower_shop/tiles.4bpp.lz"); -const u16 gTilesetPalettes_PrettyPetalFlowerShop[][16] = +const u16 ALIGNED(4) gTilesetPalettes_PrettyPetalFlowerShop[][16] = { INCBIN_U16("data/tilesets/secondary/pretty_petal_flower_shop/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/pretty_petal_flower_shop/palettes/01.gbapal"), @@ -595,7 +595,7 @@ const u16 gTilesetPalettes_PrettyPetalFlowerShop[][16] = const u32 gTilesetTiles_PokemonDayCare[] = INCBIN_U32("data/tilesets/secondary/pokemon_day_care/tiles.4bpp.lz"); -const u16 gTilesetPalettes_PokemonDayCare[][16] = +const u16 ALIGNED(4) gTilesetPalettes_PokemonDayCare[][16] = { INCBIN_U16("data/tilesets/secondary/pokemon_day_care/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/pokemon_day_care/palettes/01.gbapal"), @@ -617,7 +617,7 @@ const u16 gTilesetPalettes_PokemonDayCare[][16] = const u32 gTilesetTiles_Facility[] = INCBIN_U32("data/tilesets/secondary/facility/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Facility[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Facility[][16] = { INCBIN_U16("data/tilesets/secondary/facility/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/facility/palettes/01.gbapal"), @@ -639,7 +639,7 @@ const u16 gTilesetPalettes_Facility[][16] = const u32 gTilesetTiles_BikeShop[] = INCBIN_U32("data/tilesets/secondary/bike_shop/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BikeShop[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BikeShop[][16] = { INCBIN_U16("data/tilesets/secondary/bike_shop/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/bike_shop/palettes/01.gbapal"), @@ -661,7 +661,7 @@ const u16 gTilesetPalettes_BikeShop[][16] = const u32 gTilesetTiles_RusturfTunnel[] = INCBIN_U32("data/tilesets/secondary/rusturf_tunnel/tiles.4bpp.lz"); -const u16 gTilesetPalettes_RusturfTunnel[][16] = +const u16 ALIGNED(4) gTilesetPalettes_RusturfTunnel[][16] = { INCBIN_U16("data/tilesets/secondary/rusturf_tunnel/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/rusturf_tunnel/palettes/01.gbapal"), @@ -683,7 +683,7 @@ const u16 gTilesetPalettes_RusturfTunnel[][16] = const u32 gTilesetTiles_SecretBaseBrownCaveCompressed[] = INCBIN_U32("data/tilesets/secondary/secret_base/brown_cave/unused_tiles.4bpp.lz"); -const u16 gTilesetPalettes_SecretBaseBrownCave[][16] = +const u16 ALIGNED(4) gTilesetPalettes_SecretBaseBrownCave[][16] = { INCBIN_U16("data/tilesets/secondary/secret_base/brown_cave/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/secret_base/brown_cave/palettes/01.gbapal"), @@ -705,7 +705,7 @@ const u16 gTilesetPalettes_SecretBaseBrownCave[][16] = const u32 gTilesetTiles_SecretBaseTreeCompressed[] = INCBIN_U32("data/tilesets/secondary/secret_base/tree/unused_tiles.4bpp.lz"); -const u16 gTilesetPalettes_SecretBaseTree[][16] = +const u16 ALIGNED(4) gTilesetPalettes_SecretBaseTree[][16] = { INCBIN_U16("data/tilesets/secondary/secret_base/tree/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/secret_base/tree/palettes/01.gbapal"), @@ -727,7 +727,7 @@ const u16 gTilesetPalettes_SecretBaseTree[][16] = const u32 gTilesetTiles_SecretBaseShrubCompressed[] = INCBIN_U32("data/tilesets/secondary/secret_base/shrub/unused_tiles.4bpp.lz"); -const u16 gTilesetPalettes_SecretBaseShrub[][16] = +const u16 ALIGNED(4) gTilesetPalettes_SecretBaseShrub[][16] = { INCBIN_U16("data/tilesets/secondary/secret_base/shrub/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/secret_base/shrub/palettes/01.gbapal"), @@ -749,7 +749,7 @@ const u16 gTilesetPalettes_SecretBaseShrub[][16] = const u32 gTilesetTiles_SecretBaseBlueCaveCompressed[] = INCBIN_U32("data/tilesets/secondary/secret_base/blue_cave/unused_tiles.4bpp.lz"); -const u16 gTilesetPalettes_SecretBaseBlueCave[][16] = +const u16 ALIGNED(4) gTilesetPalettes_SecretBaseBlueCave[][16] = { INCBIN_U16("data/tilesets/secondary/secret_base/blue_cave/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/secret_base/blue_cave/palettes/01.gbapal"), @@ -771,7 +771,7 @@ const u16 gTilesetPalettes_SecretBaseBlueCave[][16] = const u32 gTilesetTiles_SecretBaseYellowCaveCompressed[] = INCBIN_U32("data/tilesets/secondary/secret_base/yellow_cave/unused_tiles.4bpp.lz"); -const u16 gTilesetPalettes_SecretBaseYellowCave[][16] = +const u16 ALIGNED(4) gTilesetPalettes_SecretBaseYellowCave[][16] = { INCBIN_U16("data/tilesets/secondary/secret_base/yellow_cave/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/secret_base/yellow_cave/palettes/01.gbapal"), @@ -793,7 +793,7 @@ const u16 gTilesetPalettes_SecretBaseYellowCave[][16] = const u32 gTilesetTiles_SecretBaseRedCaveCompressed[] = INCBIN_U32("data/tilesets/secondary/secret_base/red_cave/unused_tiles.4bpp.lz"); -const u16 gTilesetPalettes_SecretBaseRedCave[][16] = +const u16 ALIGNED(4) gTilesetPalettes_SecretBaseRedCave[][16] = { INCBIN_U16("data/tilesets/secondary/secret_base/red_cave/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/secret_base/red_cave/palettes/01.gbapal"), @@ -822,7 +822,7 @@ const u32 gTilesetTiles_SecretBaseRedCave[] = INCBIN_U32("data/tilesets/secondar const u32 gTilesetTiles_InsideOfTruck[] = INCBIN_U32("data/tilesets/secondary/inside_of_truck/tiles.4bpp.lz"); -const u16 gTilesetPalettes_InsideOfTruck[][16] = +const u16 ALIGNED(4) gTilesetPalettes_InsideOfTruck[][16] = { INCBIN_U16("data/tilesets/secondary/inside_of_truck/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/inside_of_truck/palettes/01.gbapal"), @@ -844,7 +844,7 @@ const u16 gTilesetPalettes_InsideOfTruck[][16] = const u32 gTilesetTiles_Contest[] = INCBIN_U32("data/tilesets/secondary/contest/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Contest[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Contest[][16] = { INCBIN_U16("data/tilesets/secondary/contest/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/contest/palettes/01.gbapal"), @@ -866,7 +866,7 @@ const u16 gTilesetPalettes_Contest[][16] = const u32 gTilesetTiles_LilycoveMuseum[] = INCBIN_U32("data/tilesets/secondary/lilycove_museum/tiles.4bpp.lz"); -const u16 gTilesetPalettes_LilycoveMuseum[][16] = +const u16 ALIGNED(4) gTilesetPalettes_LilycoveMuseum[][16] = { INCBIN_U16("data/tilesets/secondary/lilycove_museum/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/lilycove_museum/palettes/01.gbapal"), @@ -888,7 +888,7 @@ const u16 gTilesetPalettes_LilycoveMuseum[][16] = const u32 gTilesetTiles_BrendansMaysHouse[] = INCBIN_U32("data/tilesets/secondary/brendans_mays_house/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BrendansMaysHouse[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BrendansMaysHouse[][16] = { INCBIN_U16("data/tilesets/secondary/brendans_mays_house/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/brendans_mays_house/palettes/01.gbapal"), @@ -910,7 +910,7 @@ const u16 gTilesetPalettes_BrendansMaysHouse[][16] = const u32 gTilesetTiles_Lab[] = INCBIN_U32("data/tilesets/secondary/lab/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Lab[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Lab[][16] = { INCBIN_U16("data/tilesets/secondary/lab/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/lab/palettes/01.gbapal"), @@ -932,7 +932,7 @@ const u16 gTilesetPalettes_Lab[][16] = const u32 gTilesetTiles_Underwater[] = INCBIN_U32("data/tilesets/secondary/underwater/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Underwater[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Underwater[][16] = { INCBIN_U16("data/tilesets/secondary/underwater/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/underwater/palettes/01.gbapal"), @@ -954,7 +954,7 @@ const u16 gTilesetPalettes_Underwater[][16] = const u32 gTilesetTiles_GenericBuilding[] = INCBIN_U32("data/tilesets/secondary/generic_building/tiles.4bpp.lz"); -const u16 gTilesetPalettes_GenericBuilding[][16] = +const u16 ALIGNED(4) gTilesetPalettes_GenericBuilding[][16] = { INCBIN_U16("data/tilesets/secondary/generic_building/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/generic_building/palettes/01.gbapal"), @@ -976,7 +976,7 @@ const u16 gTilesetPalettes_GenericBuilding[][16] = const u32 gTilesetTiles_MauvilleGameCorner[] = INCBIN_U32("data/tilesets/secondary/mauville_game_corner/tiles.4bpp.lz"); -const u16 gTilesetPalettes_MauvilleGameCorner[][16] = +const u16 ALIGNED(4) gTilesetPalettes_MauvilleGameCorner[][16] = { INCBIN_U16("data/tilesets/secondary/mauville_game_corner/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/mauville_game_corner/palettes/01.gbapal"), @@ -998,7 +998,7 @@ const u16 gTilesetPalettes_MauvilleGameCorner[][16] = const u32 gTilesetTiles_Unused2[] = INCBIN_U32("data/tilesets/secondary/unused_2/tiles.4bpp.lz"); -const u16 gTilesetPalettes_Unused2[][16] = +const u16 ALIGNED(4) gTilesetPalettes_Unused2[][16] = { INCBIN_U16("data/tilesets/secondary/unused_2/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/unused_2/palettes/01.gbapal"), @@ -1020,7 +1020,7 @@ const u16 gTilesetPalettes_Unused2[][16] = const u32 gTilesetTiles_RustboroGym[] = INCBIN_U32("data/tilesets/secondary/rustboro_gym/tiles.4bpp.lz"); -const u16 gTilesetPalettes_RustboroGym[][16] = +const u16 ALIGNED(4) gTilesetPalettes_RustboroGym[][16] = { INCBIN_U16("data/tilesets/secondary/rustboro_gym/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/rustboro_gym/palettes/01.gbapal"), @@ -1042,7 +1042,7 @@ const u16 gTilesetPalettes_RustboroGym[][16] = const u32 gTilesetTiles_DewfordGym[] = INCBIN_U32("data/tilesets/secondary/dewford_gym/tiles.4bpp.lz"); -const u16 gTilesetPalettes_DewfordGym[][16] = +const u16 ALIGNED(4) gTilesetPalettes_DewfordGym[][16] = { INCBIN_U16("data/tilesets/secondary/dewford_gym/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/dewford_gym/palettes/01.gbapal"), @@ -1064,7 +1064,7 @@ const u16 gTilesetPalettes_DewfordGym[][16] = const u32 gTilesetTiles_MauvilleGym[] = INCBIN_U32("data/tilesets/secondary/mauville_gym/tiles.4bpp.lz"); -const u16 gTilesetPalettes_MauvilleGym[][16] = +const u16 ALIGNED(4) gTilesetPalettes_MauvilleGym[][16] = { INCBIN_U16("data/tilesets/secondary/mauville_gym/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/mauville_gym/palettes/01.gbapal"), @@ -1086,7 +1086,7 @@ const u16 gTilesetPalettes_MauvilleGym[][16] = const u32 gTilesetTiles_LavaridgeGym[] = INCBIN_U32("data/tilesets/secondary/lavaridge_gym/tiles.4bpp.lz"); -const u16 gTilesetPalettes_LavaridgeGym[][16] = +const u16 ALIGNED(4) gTilesetPalettes_LavaridgeGym[][16] = { INCBIN_U16("data/tilesets/secondary/lavaridge_gym/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/lavaridge_gym/palettes/01.gbapal"), @@ -1108,7 +1108,7 @@ const u16 gTilesetPalettes_LavaridgeGym[][16] = const u32 gTilesetTiles_PetalburgGym[] = INCBIN_U32("data/tilesets/secondary/petalburg_gym/tiles.4bpp.lz"); -const u16 gTilesetPalettes_PetalburgGym[][16] = +const u16 ALIGNED(4) gTilesetPalettes_PetalburgGym[][16] = { INCBIN_U16("data/tilesets/secondary/petalburg_gym/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/petalburg_gym/palettes/01.gbapal"), @@ -1130,7 +1130,7 @@ const u16 gTilesetPalettes_PetalburgGym[][16] = const u32 gTilesetTiles_FortreeGym[] = INCBIN_U32("data/tilesets/secondary/fortree_gym/tiles.4bpp.lz"); -const u16 gTilesetPalettes_FortreeGym[][16] = +const u16 ALIGNED(4) gTilesetPalettes_FortreeGym[][16] = { INCBIN_U16("data/tilesets/secondary/fortree_gym/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/fortree_gym/palettes/01.gbapal"), @@ -1152,7 +1152,7 @@ const u16 gTilesetPalettes_FortreeGym[][16] = const u32 gTilesetTiles_MossdeepGym[] = INCBIN_U32("data/tilesets/secondary/mossdeep_gym/tiles.4bpp.lz"); -const u16 gTilesetPalettes_MossdeepGym[][16] = +const u16 ALIGNED(4) gTilesetPalettes_MossdeepGym[][16] = { INCBIN_U16("data/tilesets/secondary/mossdeep_gym/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/mossdeep_gym/palettes/01.gbapal"), @@ -1174,7 +1174,7 @@ const u16 gTilesetPalettes_MossdeepGym[][16] = const u32 gTilesetTiles_SootopolisGym[] = INCBIN_U32("data/tilesets/secondary/sootopolis_gym/tiles.4bpp.lz"); -const u16 gTilesetPalettes_SootopolisGym[][16] = +const u16 ALIGNED(4) gTilesetPalettes_SootopolisGym[][16] = { INCBIN_U16("data/tilesets/secondary/sootopolis_gym/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/sootopolis_gym/palettes/01.gbapal"), @@ -1196,7 +1196,7 @@ const u16 gTilesetPalettes_SootopolisGym[][16] = const u32 gTilesetTiles_TrickHousePuzzle[] = INCBIN_U32("data/tilesets/secondary/trick_house_puzzle/tiles.4bpp.lz"); -const u16 gTilesetPalettes_TrickHousePuzzle[][16] = +const u16 ALIGNED(4) gTilesetPalettes_TrickHousePuzzle[][16] = { INCBIN_U16("data/tilesets/secondary/trick_house_puzzle/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/trick_house_puzzle/palettes/01.gbapal"), @@ -1218,7 +1218,7 @@ const u16 gTilesetPalettes_TrickHousePuzzle[][16] = const u32 gTilesetTiles_InsideShip[] = INCBIN_U32("data/tilesets/secondary/inside_ship/tiles.4bpp.lz"); -const u16 gTilesetPalettes_InsideShip[][16] = +const u16 ALIGNED(4) gTilesetPalettes_InsideShip[][16] = { INCBIN_U16("data/tilesets/secondary/inside_ship/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/inside_ship/palettes/01.gbapal"), @@ -1241,7 +1241,7 @@ const u16 gTilesetPalettes_InsideShip[][16] = const u32 gTilesetTiles_SecretBase[] = INCBIN_U32("data/tilesets/primary/secret_base/tiles.4bpp"); const u32 gTilesetTiles_UnknownSecretBase[] = INCBIN_U32("data/tilesets/primary/secret_base/unknown_tiles.4bpp"); -const u16 gTilesetPalettes_SecretBase[][16] = +const u16 ALIGNED(4) gTilesetPalettes_SecretBase[][16] = { INCBIN_U16("data/tilesets/primary/secret_base/palettes/00.gbapal"), INCBIN_U16("data/tilesets/primary/secret_base/palettes/01.gbapal"), @@ -1263,7 +1263,7 @@ const u16 gTilesetPalettes_SecretBase[][16] = const u32 gTilesetTiles_EliteFour[] = INCBIN_U32("data/tilesets/secondary/elite_four/tiles.4bpp.lz"); -const u16 gTilesetPalettes_EliteFour[][16] = +const u16 ALIGNED(4) gTilesetPalettes_EliteFour[][16] = { INCBIN_U16("data/tilesets/secondary/elite_four/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/elite_four/palettes/01.gbapal"), @@ -1285,7 +1285,7 @@ const u16 gTilesetPalettes_EliteFour[][16] = const u32 gTilesetTiles_BattleFrontier[] = INCBIN_U32("data/tilesets/secondary/battle_frontier/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattleFrontier[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattleFrontier[][16] = { INCBIN_U16("data/tilesets/secondary/battle_frontier/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_frontier/palettes/01.gbapal"), @@ -1307,7 +1307,7 @@ const u16 gTilesetPalettes_BattleFrontier[][16] = const u32 gTilesetTiles_BattlePalace[] = INCBIN_U32("data/tilesets/secondary/battle_palace/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattlePalace[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattlePalace[][16] = { INCBIN_U16("data/tilesets/secondary/battle_palace/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_palace/palettes/01.gbapal"), @@ -1329,7 +1329,7 @@ const u16 gTilesetPalettes_BattlePalace[][16] = const u32 gTilesetTiles_BattleDome[] = INCBIN_U32("data/tilesets/secondary/battle_dome/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattleDome[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattleDome[][16] = { INCBIN_U16("data/tilesets/secondary/battle_dome/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_dome/palettes/01.gbapal"), @@ -1351,7 +1351,7 @@ const u16 gTilesetPalettes_BattleDome[][16] = const u32 gTilesetTiles_BattleFactory[] = INCBIN_U32("data/tilesets/secondary/battle_factory/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattleFactory[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattleFactory[][16] = { INCBIN_U16("data/tilesets/secondary/battle_factory/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_factory/palettes/01.gbapal"), @@ -1373,7 +1373,7 @@ const u16 gTilesetPalettes_BattleFactory[][16] = const u32 gTilesetTiles_BattlePike[] = INCBIN_U32("data/tilesets/secondary/battle_pike/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattlePike[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattlePike[][16] = { INCBIN_U16("data/tilesets/secondary/battle_pike/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_pike/palettes/01.gbapal"), @@ -1395,7 +1395,7 @@ const u16 gTilesetPalettes_BattlePike[][16] = const u32 gTilesetTiles_BattleArena[] = INCBIN_U32("data/tilesets/secondary/battle_arena/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattleArena[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattleArena[][16] = { INCBIN_U16("data/tilesets/secondary/battle_arena/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_arena/palettes/01.gbapal"), @@ -1417,7 +1417,7 @@ const u16 gTilesetPalettes_BattleArena[][16] = const u32 gTilesetTiles_BattlePyramid[] = INCBIN_U32("data/tilesets/secondary/battle_pyramid/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattlePyramid[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattlePyramid[][16] = { INCBIN_U16("data/tilesets/secondary/battle_pyramid/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_pyramid/palettes/01.gbapal"), @@ -1439,7 +1439,7 @@ const u16 gTilesetPalettes_BattlePyramid[][16] = const u32 gTilesetTiles_MirageTower[] = INCBIN_U32("data/tilesets/secondary/mirage_tower/tiles.4bpp.lz"); -const u16 gTilesetPalettes_MirageTower[][16] = +const u16 ALIGNED(4) gTilesetPalettes_MirageTower[][16] = { INCBIN_U16("data/tilesets/secondary/mirage_tower/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/mirage_tower/palettes/01.gbapal"), @@ -1461,7 +1461,7 @@ const u16 gTilesetPalettes_MirageTower[][16] = const u32 gTilesetTiles_MossdeepGameCorner[] = INCBIN_U32("data/tilesets/secondary/mossdeep_game_corner/tiles.4bpp.lz"); -const u16 gTilesetPalettes_MossdeepGameCorner[][16] = +const u16 ALIGNED(4) gTilesetPalettes_MossdeepGameCorner[][16] = { INCBIN_U16("data/tilesets/secondary/mossdeep_game_corner/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/mossdeep_game_corner/palettes/01.gbapal"), @@ -1483,7 +1483,7 @@ const u16 gTilesetPalettes_MossdeepGameCorner[][16] = const u32 gTilesetTiles_IslandHarbor[] = INCBIN_U32("data/tilesets/secondary/island_harbor/tiles.4bpp.lz"); -const u16 gTilesetPalettes_IslandHarbor[][16] = +const u16 ALIGNED(4) gTilesetPalettes_IslandHarbor[][16] = { INCBIN_U16("data/tilesets/secondary/island_harbor/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/island_harbor/palettes/01.gbapal"), @@ -1505,7 +1505,7 @@ const u16 gTilesetPalettes_IslandHarbor[][16] = const u32 gTilesetTiles_TrainerHill[] = INCBIN_U32("data/tilesets/secondary/trainer_hill/tiles.4bpp.lz"); -const u16 gTilesetPalettes_TrainerHill[][16] = +const u16 ALIGNED(4) gTilesetPalettes_TrainerHill[][16] = { INCBIN_U16("data/tilesets/secondary/trainer_hill/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/trainer_hill/palettes/01.gbapal"), @@ -1527,7 +1527,7 @@ const u16 gTilesetPalettes_TrainerHill[][16] = const u32 gTilesetTiles_NavelRock[] = INCBIN_U32("data/tilesets/secondary/navel_rock/tiles.4bpp.lz"); -const u16 gTilesetPalettes_NavelRock[][16] = +const u16 ALIGNED(4) gTilesetPalettes_NavelRock[][16] = { INCBIN_U16("data/tilesets/secondary/navel_rock/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/navel_rock/palettes/01.gbapal"), @@ -1549,7 +1549,7 @@ const u16 gTilesetPalettes_NavelRock[][16] = const u32 gTilesetTiles_BattleFrontierRankingHall[] = INCBIN_U32("data/tilesets/secondary/battle_frontier_ranking_hall/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattleFrontierRankingHall[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattleFrontierRankingHall[][16] = { INCBIN_U16("data/tilesets/secondary/battle_frontier_ranking_hall/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_frontier_ranking_hall/palettes/01.gbapal"), @@ -1571,7 +1571,7 @@ const u16 gTilesetPalettes_BattleFrontierRankingHall[][16] = const u32 gTilesetTiles_BattleTent[] = INCBIN_U32("data/tilesets/secondary/battle_tent/tiles.4bpp.lz"); -const u16 gTilesetPalettes_BattleTent[][16] = +const u16 ALIGNED(4) gTilesetPalettes_BattleTent[][16] = { INCBIN_U16("data/tilesets/secondary/battle_tent/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/battle_tent/palettes/01.gbapal"), @@ -1593,7 +1593,7 @@ const u16 gTilesetPalettes_BattleTent[][16] = const u32 gTilesetTiles_MysteryEventsHouse[] = INCBIN_U32("data/tilesets/secondary/mystery_events_house/tiles.4bpp.lz"); -const u16 gTilesetPalettes_MysteryEventsHouse[][16] = +const u16 ALIGNED(4) gTilesetPalettes_MysteryEventsHouse[][16] = { INCBIN_U16("data/tilesets/secondary/mystery_events_house/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/mystery_events_house/palettes/01.gbapal"), @@ -1613,7 +1613,7 @@ const u16 gTilesetPalettes_MysteryEventsHouse[][16] = INCBIN_U16("data/tilesets/secondary/mystery_events_house/palettes/15.gbapal"), }; -const u16 gTilesetPalettes_UnionRoom[][16] = +const u16 ALIGNED(4) gTilesetPalettes_UnionRoom[][16] = { INCBIN_U16("data/tilesets/secondary/union_room/palettes/00.gbapal"), INCBIN_U16("data/tilesets/secondary/union_room/palettes/01.gbapal"), diff --git a/src/data/tilesets/headers.h b/src/data/tilesets/headers.h index 2eae1be1e..8a7907c6c 100755 --- a/src/data/tilesets/headers.h +++ b/src/data/tilesets/headers.h @@ -1,7 +1,17 @@ +#include "fieldmap.h" + +// Whether a palette has a night version, located at ((x + 9) % 16).pal +#define SWAP_PAL(x) ((x) < NUM_PALS_IN_PRIMARY ? 1 << (x) : 1 << ((x) - NUM_PALS_IN_PRIMARY)) +// Whether a palette has lights +// the color indices to blend are stored in the palette's color 0 +#define LIGHT_PAL(x) ((x) < NUM_PALS_IN_PRIMARY ? 1 << (x) : 1 << ((x) - NUM_PALS_IN_PRIMARY)) + const struct Tileset gTileset_General = { .isCompressed = TRUE, + .swapPalettes = SWAP_PAL(4), .isSecondary = FALSE, + .lightPalettes = LIGHT_PAL(4), .tiles = gTilesetTiles_General, .palettes = gTilesetPalettes_General, .metatiles = gMetatiles_General, @@ -12,7 +22,9 @@ const struct Tileset gTileset_General = const struct Tileset gTileset_Petalburg = { .isCompressed = TRUE, + .swapPalettes = SWAP_PAL(9), .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(6) | LIGHT_PAL(7) | LIGHT_PAL(9), .tiles = gTilesetTiles_Petalburg, .palettes = gTilesetPalettes_Petalburg, .metatiles = gMetatiles_Petalburg, @@ -24,6 +36,7 @@ const struct Tileset gTileset_Rustboro = { .isCompressed = TRUE, .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(6), .tiles = gTilesetTiles_Rustboro, .palettes = gTilesetPalettes_Rustboro, .metatiles = gMetatiles_Rustboro, @@ -45,7 +58,9 @@ const struct Tileset gTileset_Dewford = const struct Tileset gTileset_Slateport = { .isCompressed = TRUE, + .swapPalettes = SWAP_PAL(6), .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(6) | LIGHT_PAL(12), .tiles = gTilesetTiles_Slateport, .palettes = gTilesetPalettes_Slateport, .metatiles = gMetatiles_Slateport, @@ -57,6 +72,7 @@ const struct Tileset gTileset_Mauville = { .isCompressed = TRUE, .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(7) | LIGHT_PAL(10) | LIGHT_PAL(11), .tiles = gTilesetTiles_Mauville, .palettes = gTilesetPalettes_Mauville, .metatiles = gMetatiles_Mauville, @@ -68,6 +84,8 @@ const struct Tileset gTileset_Lavaridge = { .isCompressed = TRUE, .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(6), + .customLightColor = LIGHT_PAL(6), .tiles = gTilesetTiles_Lavaridge, .palettes = gTilesetPalettes_Lavaridge, .metatiles = gMetatiles_Lavaridge, @@ -78,7 +96,9 @@ const struct Tileset gTileset_Lavaridge = const struct Tileset gTileset_Fallarbor = { .isCompressed = TRUE, + .swapPalettes = SWAP_PAL(7), .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(7), .tiles = gTilesetTiles_Fallarbor, .palettes = gTilesetPalettes_Fallarbor, .metatiles = gMetatiles_Fallarbor, @@ -90,6 +110,8 @@ const struct Tileset gTileset_Fortree = { .isCompressed = TRUE, .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(8), + .customLightColor = LIGHT_PAL(8), .tiles = gTilesetTiles_Fortree, .palettes = gTilesetPalettes_Fortree, .metatiles = gMetatiles_Fortree, @@ -100,7 +122,9 @@ const struct Tileset gTileset_Fortree = const struct Tileset gTileset_Lilycove = { .isCompressed = TRUE, + .swapPalettes = SWAP_PAL(6), .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(6), .tiles = gTilesetTiles_Lilycove, .palettes = gTilesetPalettes_Lilycove, .metatiles = gMetatiles_Lilycove, @@ -111,7 +135,9 @@ const struct Tileset gTileset_Lilycove = const struct Tileset gTileset_Mossdeep = { .isCompressed = TRUE, + .swapPalettes = SWAP_PAL(8), .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(8), .tiles = gTilesetTiles_Mossdeep, .palettes = gTilesetPalettes_Mossdeep, .metatiles = gMetatiles_Mossdeep, @@ -128,12 +154,16 @@ const struct Tileset gTileset_EverGrande = .metatiles = gMetatiles_EverGrande, .metatileAttributes = gMetatileAttributes_EverGrande, .callback = InitTilesetAnim_EverGrande, + .lightPalettes = LIGHT_PAL(8), + .swapPalettes = SWAP_PAL(8), }; const struct Tileset gTileset_Pacifidlog = { .isCompressed = TRUE, + .swapPalettes = SWAP_PAL(9), .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(9), .tiles = gTilesetTiles_Pacifidlog, .palettes = gTilesetPalettes_Pacifidlog, .metatiles = gMetatiles_Pacifidlog, @@ -144,7 +174,10 @@ const struct Tileset gTileset_Pacifidlog = const struct Tileset gTileset_Sootopolis = { .isCompressed = TRUE, + .swapPalettes = SWAP_PAL(6), .isSecondary = TRUE, + .lightPalettes = LIGHT_PAL(6) | LIGHT_PAL(10), + .customLightColor = LIGHT_PAL(6) | LIGHT_PAL(10), .tiles = gTilesetTiles_Sootopolis, .palettes = gTilesetPalettes_Sootopolis, .metatiles = gMetatiles_Sootopolis, diff --git a/src/data/trainer_graphics/back_pic_anims.h b/src/data/trainer_graphics/back_pic_anims.h index ed12e0cb4..fa55ed719 100755 --- a/src/data/trainer_graphics/back_pic_anims.h +++ b/src/data/trainer_graphics/back_pic_anims.h @@ -18,6 +18,16 @@ static const union AnimCmd sAnimCmd_May_Steven_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnimCmd_Point_HGSS[] = +{ + ANIMCMD_FRAME(3, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(2, 24), + ANIMCMD_FRAME(2, 24), + ANIMCMD_FRAME(3, 50), + ANIMCMD_END, +}; + static const union AnimCmd sAnimCmd_Wally_1[] = { ANIMCMD_FRAME(0, 24), @@ -48,6 +58,16 @@ static const union AnimCmd sAnimCmd_Leaf_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnimCmd_Point_HGSS_Red_Leaf[] = +{ + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(3, 24), + ANIMCMD_FRAME(3, 24), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; + static const union AnimCmd sAnimCmd_RubySapphireBrendan_1[] = { ANIMCMD_FRAME(0, 24), @@ -72,48 +92,56 @@ static const union AnimCmd *const sBackAnims_Brendan[] = { sAnim_GeneralFrame3, sAnimCmd_Brendan_1, + sAnimCmd_Point_HGSS, }; static const union AnimCmd *const sBackAnims_May[] = { sAnim_GeneralFrame3, sAnimCmd_May_Steven_1, + sAnimCmd_Point_HGSS, }; static const union AnimCmd *const sBackAnims_Red[] = { sAnim_GeneralFrame0, sAnimCmd_Red_1, + sAnimCmd_Point_HGSS_Red_Leaf, }; static const union AnimCmd *const sBackAnims_Leaf[] = { sAnim_GeneralFrame0, sAnimCmd_Leaf_1, + sAnimCmd_Point_HGSS_Red_Leaf, }; static const union AnimCmd *const sBackAnims_RubySapphireBrendan[] = { sAnim_GeneralFrame3, sAnimCmd_RubySapphireBrendan_1, + sAnimCmd_Point_HGSS, }; static const union AnimCmd *const sBackAnims_RubySapphireMay[] = { sAnim_GeneralFrame3, sAnimCmd_RubySapphireMay_1, + sAnimCmd_Point_HGSS, }; static const union AnimCmd *const sBackAnims_Wally[] = { sAnim_GeneralFrame3, sAnimCmd_Wally_1, + sAnimCmd_Point_HGSS, }; static const union AnimCmd *const sBackAnims_Steven[] = { sAnim_GeneralFrame3, sAnimCmd_May_Steven_1, + sAnimCmd_Point_HGSS, }; const union AnimCmd *const *const gTrainerBackAnimsPtrTable[] = diff --git a/src/daycare.c b/src/daycare.c index e3e7087b9..167d33cb3 100755 --- a/src/daycare.c +++ b/src/daycare.c @@ -1103,7 +1103,9 @@ static u8 GetDaycareCompatibilityScore(struct DayCare *daycare) static u8 GetDaycareCompatibilityScoreFromSave(void) { - return GetDaycareCompatibilityScore(&gSaveBlock1Ptr->daycare); + // Changed to also store result for scripts + gSpecialVar_Result = GetDaycareCompatibilityScore(&gSaveBlock1Ptr->daycare); + return gSpecialVar_Result; } void SetDaycareCompatibilityString(void) diff --git a/src/decoration.c b/src/decoration.c index 6d95cfbdc..a43d2dcbd 100755 --- a/src/decoration.c +++ b/src/decoration.c @@ -41,7 +41,7 @@ #define PLACE_DECORATION_SELECTOR_TAG 0xbe5 #define PLACE_DECORATION_PLAYER_TAG 0x008 -#define NUM_DECORATION_FLAGS (FLAG_DECORATION_14 - FLAG_DECORATION_1 + 1) +#define NUM_DECORATION_FLAGS (FLAG_DECORATION_13 - FLAG_DECORATION_1 + 1) #define tCursorX data[0] #define tCursorY data[1] @@ -1360,6 +1360,7 @@ static void Task_PlaceDecoration(u8 taskId) } break; case 1: + RemoveFollowingPokemon(); gPaletteFade.bufferTransferDisabled = TRUE; ConfigureCameraObjectForPlacingDecoration(&sPlaceDecorationGraphicsDataBuffer, gCurDecorationItems[gCurDecorationIndex]); SetUpDecorationShape(taskId); @@ -1615,6 +1616,14 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration) } break; } + + // If sprite(like), check if there is an available object event slot for it + if (decoration->permission == DECORPERM_SPRITE) { + for (i = 0; i < NUM_DECORATION_FLAGS; i++) + if (FlagGet(FLAG_DECORATION_1 + i) == TRUE) + return TRUE; + return FALSE; + } return TRUE; } @@ -2110,7 +2119,7 @@ static u8 AddDecorationIconObjectFromObjectEvent(u16 tilesTag, u16 paletteTag, u } else { - spriteId = CreateObjectGraphicsSprite(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1); + spriteId = CreateObjectGraphicsSpriteWithTag(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1, paletteTag); } return spriteId; } @@ -2316,6 +2325,7 @@ static void Task_ContinuePuttingAwayDecorations(u8 taskId) } break; case 1: + RemoveFollowingPokemon(); SetUpPuttingAwayDecorationPlayerAvatar(); FadeInFromBlack(); tState = 2; diff --git a/src/event_data.c b/src/event_data.c index b8dd2d8d7..8536031bf 100755 --- a/src/event_data.c +++ b/src/event_data.c @@ -202,7 +202,7 @@ bool8 VarSet(u16 id, u16 value) return TRUE; } -u8 VarGetObjectEventGraphicsId(u8 id) +u16 VarGetObjectEventGraphicsId(u8 id) { return VarGet(VAR_OBJ_GFX_ID_0 + id); } diff --git a/src/event_object_lock.c b/src/event_object_lock.c index 29575111f..8d32a8ce4 100755 --- a/src/event_object_lock.c +++ b/src/event_object_lock.c @@ -151,6 +151,7 @@ static void Task_FreezeObjectAndPlayer(u8 taskId) void FreezeForApproachingTrainers(void) { u8 trainerObjectId1, trainerObjectId2, taskId; + struct ObjectEvent *followerObj = GetFollowerObject(); trainerObjectId1 = GetChosenApproachingTrainerObjectEventId(0); if (gNoOfApproachingTrainers == 2) @@ -188,6 +189,8 @@ void FreezeForApproachingTrainers(void) gTasks[taskId].tObjectFrozen = TRUE; } } + if (followerObj) // Unfreeze follower so it can move behind player + UnfreezeObjectEvent(followerObj); } bool8 IsFreezeObjectAndPlayerFinished(void) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 5cfc51925..efa4b623d 100755 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1,9 +1,12 @@ #include "global.h" #include "malloc.h" #include "battle_pyramid.h" +#include "battle_script_commands.h" #include "berry.h" #include "debug.h" +#include "data.h" #include "decoration.h" +#include "decompress.h" #include "event_data.h" #include "event_object_movement.h" #include "event_scripts.h" @@ -12,24 +15,40 @@ #include "field_effect.h" #include "field_effect_helpers.h" #include "field_player_avatar.h" +#include "field_weather.h" #include "fieldmap.h" +#include "follower_helper.h" +#include "gpu_regs.h" #include "mauville_old_man.h" #include "metatile_behavior.h" #include "overworld.h" #include "palette.h" +#include "pokemon.h" #include "random.h" +#include "region_map.h" +#include "script.h" +#include "sound.h" #include "sprite.h" #include "task.h" #include "trainer_see.h" #include "trainer_hill.h" #include "util.h" +#include "wild_encounter.h" #include "constants/event_object_movement.h" +#include "constants/abilities.h" +#include "constants/battle.h" #include "constants/event_objects.h" #include "constants/field_effects.h" #include "constants/items.h" +#include "constants/map_types.h" #include "constants/mauville_old_man.h" +#include "constants/rgb.h" +#include "constants/region_map_sections.h" +#include "constants/songs.h" +#include "constants/species.h" #include "constants/trainer_types.h" #include "constants/union_room.h" +#include "constants/weather.h" // this file was known as evobjmv.c in Game Freak's original source @@ -115,7 +134,10 @@ static void InitObjectPriorityByElevation(struct Sprite *, u8); static void ObjectEventUpdateSubpriority(struct ObjectEvent *, struct Sprite *); static void DoTracksGroundEffect_None(struct ObjectEvent *, struct Sprite *, u8); static void DoTracksGroundEffect_Footprints(struct ObjectEvent *, struct Sprite *, u8); +static void DoTracksGroundEffect_FootprintsB(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_FootprintsC(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *, struct Sprite *, u8); +static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoRippleFieldEffect(struct ObjectEvent *, struct Sprite *); static void DoGroundEffects_OnSpawn(struct ObjectEvent *, struct Sprite *); static void DoGroundEffects_OnBeginStep(struct ObjectEvent *, struct Sprite *); @@ -135,10 +157,10 @@ static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *); static void MakeSpriteTemplateFromObjectEventTemplate(const struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); static void GetObjectEventMovingCameraOffset(s16 *, s16 *); static const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8); -static void LoadObjectEventPalette(u16); static void RemoveObjectEventIfOutsideView(struct ObjectEvent *); static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); +static u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct Sprite * sprite); static void ResetObjectEventFldEffData(struct ObjectEvent *); static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *); static u8 FindObjectEventPaletteIndexByTag(u16); @@ -149,11 +171,13 @@ static void CameraObject_0(struct Sprite *); static void CameraObject_1(struct Sprite *); static void CameraObject_2(struct Sprite *); static const struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8, const struct ObjectEventTemplate *, u8); -static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *); static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8); static void SetSpriteDataForNormalStep(struct Sprite *, u8, u8); static void InitSpriteForFigure8Anim(struct Sprite *); static bool8 AnimateSpriteInFigure8(struct Sprite *); +u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2); +static void FollowerSetGraphics(struct ObjectEvent *, u16, u8, bool8, bool8); +static void ObjectEventSetGraphics(struct ObjectEvent *, const struct ObjectEventGraphicsInfo *); static void SpriteCB_VirtualObject(struct Sprite *); static void DoShadowFieldEffect(struct ObjectEvent *); static void SetJumpSpriteData(struct Sprite *, u8, u8, u8); @@ -163,9 +187,14 @@ static u8 DoJumpSpriteMovement(struct Sprite *); static u8 DoJumpSpecialSpriteMovement(struct Sprite *); static void CreateLevitateMovementTask(struct ObjectEvent *); static void DestroyLevitateMovementTask(u8); +static bool8 GetFollowerInfo(u16 *species, u8 *form, u8 *shiny); +static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool8 shiny); +static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species, u8 form); static bool8 NpcTakeStep(struct Sprite *); static bool8 IsElevationMismatchAt(u8, s16, s16); static bool8 AreElevationsCompatible(u8, u8); +static u16 PackGraphicsId(const struct ObjectEventTemplate *template); +static void CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(u16 graphicsId, u16 movementType, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables); static const struct SpriteFrameImage sPicTable_PechaBerryTree[]; @@ -286,6 +315,7 @@ static void (*const sMovementTypeCallbacks[])(struct Sprite *) = [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = MovementType_WalkSlowlyInPlace, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = MovementType_WalkSlowlyInPlace, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = MovementType_WalkSlowlyInPlace, + [MOVEMENT_TYPE_FOLLOW_PLAYER] = MovementType_FollowPlayer, }; static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { @@ -452,7 +482,16 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_LUGIA 0x1121 #define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 #define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 -#define OBJ_EVENT_PAL_TAG_NONE 0x11FF +#define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1124 +#define OBJ_EVENT_PAL_TAG_CASTFORM_SUNNY 0x1125 +#define OBJ_EVENT_PAL_TAG_CASTFORM_RAINY 0x1126 +#define OBJ_EVENT_PAL_TAG_CASTFORM_SNOWY 0x1127 +#define OBJ_EVENT_PAL_TAG_RAYQUAZA 0x1128 +#define OBJ_EVENT_PAL_TAG_LIGHT 0x8001 +#define OBJ_EVENT_PAL_TAG_LIGHT_2 0x8002 +#define OBJ_EVENT_PAL_TAG_EMOTES 0x8003 +#define OBJ_EVENT_PAL_TAG_NEON_LIGHT 0x8004 +#define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" #include "data/field_effects/field_effect_object_template_pointers.h" @@ -461,6 +500,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { #include "data/object_events/base_oam.h" #include "data/object_events/object_event_subsprites.h" #include "data/object_events/object_event_graphics_info.h" +#include "data/object_events/object_event_graphics_info_followers.h" static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_NPC_1}, @@ -498,12 +538,15 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Lugia, OBJ_EVENT_PAL_TAG_LUGIA}, {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, -#ifdef BUGFIX - {NULL, OBJ_EVENT_PAL_TAG_NONE}, -#else - {}, // BUG: FindObjectEventPaletteIndexByTag looks for OBJ_EVENT_PAL_TAG_NONE and not 0x0. - // If it's looking for a tag that isn't in this table, the game locks in an infinite loop. -#endif + {gObjectEventPal_CastformSunny, OBJ_EVENT_PAL_TAG_CASTFORM_SUNNY}, + {gObjectEventPal_CastformRainy, OBJ_EVENT_PAL_TAG_CASTFORM_RAINY}, + {gObjectEventPal_CastformSnowy, OBJ_EVENT_PAL_TAG_CASTFORM_SNOWY}, + {gObjectEventPal_Rayquaza, OBJ_EVENT_PAL_TAG_RAYQUAZA}, + {gObjectEventPaletteLight, OBJ_EVENT_PAL_TAG_LIGHT}, + {gObjectEventPaletteLight2, OBJ_EVENT_PAL_TAG_LIGHT_2}, + {gObjectEventPaletteEmotes, OBJ_EVENT_PAL_TAG_EMOTES}, + {gObjectEventPaletteNeonLight, OBJ_EVENT_PAL_TAG_NEON_LIGHT}, + {NULL, OBJ_EVENT_PAL_TAG_NONE}, }; static const u16 sReflectionPaletteTags_Brendan[] = { @@ -1217,7 +1260,7 @@ u8 GetFirstInactiveObjectEventId(void) u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId) { - if (localId < OBJ_EVENT_ID_PLAYER) + if (localId < OBJ_EVENT_ID_FOLLOWER) return GetObjectEventIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); return GetObjectEventIdByLocalId(localId); @@ -1283,7 +1326,14 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem y = template->y + MAP_OFFSET; objectEvent->active = TRUE; objectEvent->triggerGroundEffectsOnMove = TRUE; - objectEvent->graphicsId = template->graphicsId; + objectEvent->graphicsId = PackGraphicsId(template); + SetObjectEventDynamicGraphicsId(objectEvent); + if (objectEvent->graphicsId >= OBJ_EVENT_GFX_MON_BASE) { + if (template->script && template->script[0] == 0x7d) + objectEvent->shiny = T1_READ_16(&template->script[2]) >> 15; + else if (template->trainerRange_berryTreeId) + objectEvent->shiny = VarGet(template->trainerRange_berryTreeId) >> 5; + } objectEvent->movementType = template->movementType; objectEvent->localId = template->localId; objectEvent->mapNum = mapNum; @@ -1303,7 +1353,6 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId; objectEvent->previousMovementDirection = gInitialMovementTypeFacingDirections[template->movementType]; SetObjectEventDirection(objectEvent, objectEvent->previousMovementDirection); - SetObjectEventDynamicGraphicsId(objectEvent); if (sMovementTypeHasRange[objectEvent->movementType]) { if (objectEvent->rangeX == 0) @@ -1368,6 +1417,8 @@ static void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; RemoveObjectEventInternal(objectEvent); + // zero potential species info + objectEvent->graphicsId = objectEvent->shiny = 0; } void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) @@ -1382,10 +1433,21 @@ void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) static void RemoveObjectEventInternal(struct ObjectEvent *objectEvent) { + u8 paletteNum; struct SpriteFrameImage image; image.size = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->size; gSprites[objectEvent->spriteId].images = ℑ - DestroySprite(&gSprites[objectEvent->spriteId]); + paletteNum = gSprites[objectEvent->spriteId].oam.paletteNum; + // It's possible that this function is called while the sprite pointed to `== sDummySprite`, i.e during map resume; + // In this case, don't free the palette as `paletteNum` is likely blank dummy data + if (!gSprites[objectEvent->spriteId].inUse && + !gSprites[objectEvent->spriteId].oam.paletteNum && + gSprites[objectEvent->spriteId].callback == SpriteCallbackDummy) { + DestroySprite(&gSprites[objectEvent->spriteId]); + } else { + DestroySprite(&gSprites[objectEvent->spriteId]); + FieldEffectFreePaletteIfUnused(paletteNum); + } } void RemoveAllObjectEventsExceptPlayer(void) @@ -1402,7 +1464,6 @@ void RemoveAllObjectEventsExceptPlayer(void) static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 spriteId; - u8 paletteSlot; u8 objectEventId; struct Sprite *sprite; struct ObjectEvent *objectEvent; @@ -1414,25 +1475,13 @@ static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEven objectEvent = &gObjectEvents[objectEventId]; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == PALSLOT_PLAYER) - { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteSlot); - } - else if (paletteSlot == PALSLOT_NPC_SPECIAL) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); + if (spriteTemplate->paletteTag != TAG_NONE && spriteTemplate->paletteTag != OBJ_EVENT_PAL_TAG_DYNAMIC) { + LoadObjectEventPalette(spriteTemplate->paletteTag); } if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) objectEvent->invisible = TRUE; - *(u16 *)&spriteTemplate->paletteTag = TAG_NONE; spriteId = CreateSprite(spriteTemplate, 0, 0, 0); if (spriteId == MAX_SPRITES) { @@ -1441,12 +1490,15 @@ static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEven } sprite = &gSprites[spriteId]; + // Use palette from species palette table + if (spriteTemplate->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { + sprite->oam.paletteNum = LoadDynamicFollowerPalette(OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); + } GetMapCoordsFromSpritePos(objectEvent->currentCoords.x + cameraX, objectEvent->currentCoords.y + cameraY, &sprite->x, &sprite->y); sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->x += 8; sprite->y += 16 + sprite->centerToCornerVecY; - sprite->oam.paletteNum = paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = spriteId; @@ -1459,27 +1511,50 @@ static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEven return objectEventId; } -static u8 TrySpawnObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) -{ - u8 objectEventId; - struct SpriteTemplate spriteTemplate; - struct SpriteFrameImage spriteFrameImage; - const struct ObjectEventGraphicsInfo *graphicsInfo; - const struct SubspriteTable *subspriteTables = NULL; +// Pack pokemon form info into a graphicsId, from a template's script +static u16 PackGraphicsId(const struct ObjectEventTemplate *template) { + u16 graphicsId = template->graphicsId; + u32 form = 0; + // set form based on template's script, + // if first command is bufferspeciesname + if (graphicsId >= OBJ_EVENT_GFX_MON_BASE) { + if (template->script && template->script[0] == 0x7d) { + form = T1_READ_16(&template->script[2]); + form = (form >> 10) & 0x1F; + } else if (template->trainerRange_berryTreeId) { + form = template->trainerRange_berryTreeId & 0x1F; + } + graphicsId |= form << OBJ_EVENT_GFX_SPECIES_BITS; + } + return graphicsId; +} - graphicsInfo = GetObjectEventGraphicsInfo(objectEventTemplate->graphicsId); - MakeSpriteTemplateFromObjectEventTemplate(objectEventTemplate, &spriteTemplate, &subspriteTables); - spriteFrameImage.size = graphicsInfo->size; - spriteTemplate.images = &spriteFrameImage; - objectEventId = TrySetupObjectEventSprite(objectEventTemplate, &spriteTemplate, mapNum, mapGroup, cameraX, cameraY); - if (objectEventId == OBJECT_EVENTS_COUNT) - return OBJECT_EVENTS_COUNT; +static u8 +TrySpawnObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, + u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { + u8 objectEventId; + u16 graphicsId = PackGraphicsId(objectEventTemplate); + struct SpriteTemplate spriteTemplate; + struct SpriteFrameImage spriteFrameImage; + const struct ObjectEventGraphicsInfo *graphicsInfo; + const struct SubspriteTable *subspriteTables = NULL; + u16 species; + u8 form = 0; + bool8 shiny = FALSE; - gSprites[gObjectEvents[objectEventId].spriteId].images = graphicsInfo->images; - if (subspriteTables) - SetSubspriteTables(&gSprites[gObjectEvents[objectEventId].spriteId], subspriteTables); + graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(graphicsId, objectEventTemplate->movementType, &spriteTemplate, &subspriteTables); + spriteFrameImage.size = graphicsInfo->size; + spriteTemplate.images = &spriteFrameImage; + objectEventId = TrySetupObjectEventSprite(objectEventTemplate, &spriteTemplate, mapNum, mapGroup, cameraX, cameraY); + if (objectEventId == OBJECT_EVENTS_COUNT) + return OBJECT_EVENTS_COUNT; - return objectEventId; + gSprites[gObjectEvents[objectEventId].spriteId].images = graphicsInfo->images; + if (subspriteTables) + SetSubspriteTables(&gSprites[gObjectEvents[objectEventId].spriteId], subspriteTables); + + return objectEventId; } u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate) @@ -1491,7 +1566,7 @@ u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate) return TrySpawnObjectEventTemplate(objectEventTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); } -u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation) +u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation) { struct ObjectEventTemplate objectEventTemplate; @@ -1499,7 +1574,7 @@ u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 l y -= MAP_OFFSET; objectEventTemplate.localId = localId; objectEventTemplate.graphicsId = graphicsId; - objectEventTemplate.inConnection = 0; + // objectEventTemplate.inConnection = 0; objectEventTemplate.x = x; objectEventTemplate.y = y; objectEventTemplate.elevation = elevation; @@ -1548,18 +1623,55 @@ static void MakeSpriteTemplateFromObjectEventTemplate(const struct ObjectEventTe CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEventTemplate->graphicsId, objectEventTemplate->movementType, spriteTemplate, subspriteTables); } +// Loads information from graphicsId, with shininess separate +// also can write palette tag to the template +static u8 LoadDynamicFollowerPaletteFromGraphicsId(u16 graphicsId, bool8 shiny, struct SpriteTemplate *template) { + u16 species = ((graphicsId & OBJ_EVENT_GFX_SPECIES_MASK) - OBJ_EVENT_GFX_MON_BASE); + u8 form = (graphicsId >> OBJ_EVENT_GFX_SPECIES_BITS); + const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species]; + u8 paletteNum = LoadDynamicFollowerPalette(species, form, shiny); + if (template) + template->paletteTag = spritePalette->tag; + return paletteNum; +} + +// Like LoadObjectEventPalette, but overwrites the palette tag that is loaded +static u8 LoadObjectEventPaletteWithTag(u16 paletteTag, u16 overTag) { + u32 i = FindObjectEventPaletteIndexByTag(paletteTag); + struct SpritePalette spritePalette; + if (i == 0xFF) + return i; + spritePalette = sObjectEventSpritePalettes[i]; + if (overTag != TAG_NONE) + spritePalette.tag = overTag; // overwrite palette tag + return LoadSpritePaletteIfTagExists(&spritePalette); +} + // Used to create a sprite using a graphicsId associated with object events. -u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) +u8 CreateObjectGraphicsSpriteWithTag(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u16 paletteTag) { struct SpriteTemplate *spriteTemplate; const struct SubspriteTable *subspriteTables; struct Sprite *sprite; u8 spriteId; + u32 paletteNum; spriteTemplate = Alloc(sizeof(struct SpriteTemplate)); CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables); - if (spriteTemplate->paletteTag != TAG_NONE) - LoadObjectEventPalette(spriteTemplate->paletteTag); + + if (spriteTemplate->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { + struct ObjectEvent *obj = GetFollowerObject(); + // Use shininess info from follower object + // in future this should be passed in + paletteNum = LoadDynamicFollowerPaletteFromGraphicsId(graphicsId, obj ? obj->shiny : FALSE, spriteTemplate); + } else if (spriteTemplate->paletteTag != TAG_NONE) { + if (paletteTag == TAG_NONE) + LoadObjectEventPalette(spriteTemplate->paletteTag); + else { + LoadObjectEventPaletteWithTag(spriteTemplate->paletteTag, paletteTag); + spriteTemplate->paletteTag = paletteTag; + } + } spriteId = CreateSprite(spriteTemplate, x, y, subpriority); Free(spriteTemplate); @@ -1573,6 +1685,10 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), return spriteId; } +u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) { + return CreateObjectGraphicsSpriteWithTag(graphicsId, callback, x, y, subpriority, TAG_NONE); +} + #define sVirtualObjId data[0] #define sVirtualObjElev data[1] @@ -1581,7 +1697,7 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), // A unique id is given as an argument and stored in the sprite data to allow referring back to the same virtual object. // They can be turned (and, in the case of the Union Room, animated teleporting in and out) but do not have movement types // or any of the other data normally associated with object events. -u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction) +u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction) { u8 spriteId; struct Sprite *sprite; @@ -1591,10 +1707,12 @@ u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevatio graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, SpriteCB_VirtualObject, &spriteTemplate, &subspriteTables); - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; x += MAP_OFFSET; y += MAP_OFFSET; SetSpritePosToOffsetMapCoords(&x, &y, 8, 16); + if (spriteTemplate.paletteTag != TAG_NONE) + LoadObjectEventPalette(spriteTemplate.paletteTag); + spriteId = CreateSpriteAtEnd(&spriteTemplate, x, y, 0); if (spriteId != MAX_SPRITES) { @@ -1602,17 +1720,10 @@ u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevatio sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->y += sprite->centerToCornerVecY; - sprite->oam.paletteNum = graphicsInfo->paletteSlot; - if (sprite->oam.paletteNum >= 16) - sprite->oam.paletteNum -= 16; sprite->coordOffsetEnabled = TRUE; sprite->sVirtualObjId = virtualObjId; sprite->sVirtualObjElev = elevation; - if (graphicsInfo->paletteSlot == PALSLOT_NPC_SPECIAL) - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - else if (graphicsInfo->paletteSlot >= 16) - _PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0); if (subspriteTables != NULL) { @@ -1626,6 +1737,590 @@ u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevatio return spriteId; } +struct Pokemon * GetFirstLiveMon(void) { // Return address of first conscious party mon or NULL + u8 i; + for (i=0; i 0 && !(gPlayerParty[i].box.isEgg || gPlayerParty[i].box.isBadEgg)) + return &gPlayerParty[i]; + } + return NULL; +} + +struct ObjectEvent * GetFollowerObject(void) { // Return follower ObjectEvent or NULL + u8 i; + for (i=0; i < OBJECT_EVENTS_COUNT; i++) { + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER && gObjectEvents[i].active) + return &gObjectEvents[i]; + } + return NULL; +} + +// Return graphicsInfo for a pokemon species & form +static const struct ObjectEventGraphicsInfo * SpeciesToGraphicsInfo(u16 species, u8 form) { + const struct ObjectEventGraphicsInfo *graphicsInfo; + switch (species) { + case SPECIES_UNOWN: // Letters >A are defined as species >= NUM_SPECIES, so are not contiguous with A + form %= NUM_UNOWN_FORMS; + graphicsInfo = &gPokemonObjectGraphics[form ? SPECIES_UNOWN_B + form - 1 : species]; + break; + case SPECIES_CASTFORM: // Sunny, rainy, snowy forms stored separately + graphicsInfo = &gCastformObjectGraphics[form % NUM_CASTFORM_FORMS]; + break; + default: + graphicsInfo = &gPokemonObjectGraphics[species]; + break; + } + return graphicsInfo->tileTag == TAG_NONE ? graphicsInfo : &gPokemonObjectGraphics[SPECIES_PORYGON]; // avoid OOB access +} + +// Find, or load, the palette for the specified pokemon info +static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool8 shiny) { + u8 paletteNum; + // Note that the shiny palette tag is `species + SPECIES_SHINY_TAG`, which must be increased with more pokemon + // so that palette tags do not overlap + const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species]; + if ((paletteNum = IndexOfSpritePaletteTag(spritePalette->tag)) == 0xFF) { // Load compressed palette + LoadCompressedSpritePalette(spritePalette); + paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + if (species == SPECIES_AMPHAROS) { // palette should be light-blended TODO: Add more glowing pokemon + // CHARIZARD LINE ? CHINCHOU LANTERN FLAAFY MAREEP UMBREON VOLBEAT ? + u16 * palette = &gPlttBufferUnfaded[(paletteNum+16)*16]; + palette[0] |= 0x8000; + if (palette[0] & 0x4000) // If color 15 is blended, use it as the alternate color + palette[15] |= 0x8000; + } + UpdateSpritePaletteWithWeather(paletteNum, FALSE); + } + return paletteNum; +} + +// Set graphics & sprite for a follower object event by species & shininess. +static void FollowerSetGraphics(struct ObjectEvent *objEvent, u16 species, u8 form, bool8 shiny, bool8 doPalette) { + const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); + ObjectEventSetGraphics(objEvent, graphicsInfo); + objEvent->graphicsId = (OBJ_EVENT_GFX_MON_BASE + species) & OBJ_EVENT_GFX_SPECIES_MASK; + objEvent->graphicsId |= form << OBJ_EVENT_GFX_SPECIES_BITS; + objEvent->shiny = shiny; + if (graphicsInfo->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC && doPalette) { // Use palette from species palette table + struct Sprite *sprite = &gSprites[objEvent->spriteId]; + // Free palette if otherwise unused + sprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); + sprite->inUse = TRUE; + sprite->oam.paletteNum = LoadDynamicFollowerPalette(species, form, shiny); + } +} + +// Like FollowerSetGraphics, but does not reposition sprite; intended to be used for mid-movement form changes, etc. +// TODO: Reposition sprite if size changes +static void RefreshFollowerGraphics(struct ObjectEvent *objEvent) { + u16 species = OW_SPECIES(objEvent); + u8 form = OW_FORM(objEvent); + u8 shiny = objEvent->shiny; + const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); + struct Sprite *sprite = &gSprites[objEvent->spriteId]; + u8 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag); + + sprite->oam.shape = graphicsInfo->oam->shape; + sprite->oam.size = graphicsInfo->oam->size; + sprite->images = graphicsInfo->images; + sprite->anims = graphicsInfo->anims; + sprite->subspriteTables = graphicsInfo->subspriteTables; + objEvent->inanimate = graphicsInfo->inanimate; + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + + if (graphicsInfo->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) { + sprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); + sprite->inUse = TRUE; + sprite->oam.paletteNum = LoadDynamicFollowerPalette(species, form, shiny); + } else if (i != 0xFF) { + UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); + } +} + +// Like CastformDataTypeChange, but for overworld weather +static u8 GetOverworldCastformForm(void) { + switch (GetCurrentWeather()) + { + case WEATHER_SUNNY_CLOUDS: + case WEATHER_DROUGHT: + return CASTFORM_FIRE; + case WEATHER_RAIN: + case WEATHER_RAIN_THUNDERSTORM: + case WEATHER_DOWNPOUR: + return CASTFORM_WATER; + case WEATHER_SNOW: + return CASTFORM_ICE; + } + return CASTFORM_NORMAL; +} + +static bool8 GetMonInfo(struct Pokemon * mon, u16 *species, u8 *form, u8 *shiny) { + if (!mon) { + *species = SPECIES_NONE; + *form = 0; + *shiny = 0; + return FALSE; + } + *species = GetMonData(mon, MON_DATA_SPECIES); + *shiny = IsMonShiny(mon); + *form = 0; // default + switch (*species) + { + case SPECIES_UNOWN: + *form = GET_UNOWN_LETTER(mon->box.personality); + break; + case SPECIES_CASTFORM: // form is based on overworld weather + *form = GetOverworldCastformForm(); + break; + } + return TRUE; +} + +// Retrieve graphic information about the following pokemon, if any +static bool8 GetFollowerInfo(u16 *species, u8 *form, u8 *shiny) +{ + return GetMonInfo(GetFirstLiveMon(), species, form, shiny); +} + +void UpdateFollowingPokemon(void) { // Update following pokemon if any + struct ObjectEvent *objEvent = GetFollowerObject(); + struct Sprite *sprite; + u16 species; + bool8 shiny; + u8 form; + if (FlagGet(FLAG_ENABLE_FOLLOWER) == TRUE) //if enabled, enable following mons + // Avoid spawning large (64x64) follower pokemon inside buildings + if (GetFollowerInfo(&species, &form, &shiny) && !(gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(species, 0)->height == 64) && !FlagGet(FLAG_TEMP_HIDE_FOLLOWER)) { + if (objEvent == NULL) { // Spawn follower + struct ObjectEventTemplate template = { + .localId = OBJ_EVENT_ID_FOLLOWER, + .graphicsId = OBJ_EVENT_GFX_MON_BASE + species, + .flagId = 0, + .x = gSaveBlock1Ptr->pos.x, + .y = gSaveBlock1Ptr->pos.y, + // If player active, copy player elevation + .elevation = gObjectEvents[gPlayerAvatar.objectEventId].active ? gObjectEvents[gPlayerAvatar.objectEventId].currentElevation : 3, + .movementType = MOVEMENT_TYPE_FOLLOW_PLAYER, + // store form info in template + .trainerRange_berryTreeId = (form & 0x1F) | (shiny << 5), + }; + objEvent = &gObjectEvents[SpawnSpecialObjectEvent(&template)]; + objEvent->invisible = TRUE; + } + sprite = &gSprites[objEvent->spriteId]; + // Follower appearance changed; move to player and set invisible + if (species != OW_SPECIES(objEvent) || shiny != objEvent->shiny || form != OW_FORM(objEvent)) { + MoveObjectEventToMapCoords(objEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + FollowerSetGraphics(objEvent, species, form, shiny, TRUE); + objEvent->invisible = TRUE; + } + sprite->data[6] = 0; // set animation data + } else { + RemoveFollowingPokemon(); + } +} + +void RemoveFollowingPokemon(void) { // Remove follower object. Idempotent. + struct ObjectEvent *objectEvent = GetFollowerObject(); + if (objectEvent == NULL) + return; + RemoveObjectEvent(objectEvent); +} + +static bool8 IsFollowerVisible(void) { // Determine whether follower *should* be visible + return + !(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_ACRO_BIKE | PLAYER_AVATAR_FLAG_MACH_BIKE) + || MetatileBehavior_IsSurfableWaterOrUnderwater(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) + || MetatileBehavior_IsSurfableWaterOrUnderwater(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior) + || MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior) + || MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior) + || gWeatherPtr->currWeather == WEATHER_UNDERWATER + || gWeatherPtr->currWeather == WEATHER_UNDERWATER_BUBBLES); +} + +static bool8 SpeciesHasType(u16 species, u8 type) { + return gSpeciesInfo[species].types[0] == type || gSpeciesInfo[species].types[1] == type; +} + +// Returns a random index according to a list of weights +static u8 RandomWeightedIndex(u8 *weights, u8 length) { + u8 i; + u16 random_value; + u16 cum_weight = 0; + for (i = 0; i < length; i++) + cum_weight += weights[i]; + random_value = Random() % cum_weight; + cum_weight = 0; + for (i = 0; i < length; i++) { + cum_weight += weights[i]; + if (random_value <= cum_weight) + return i; + } +} + +// Pool of "unconditional" follower messages TODO: Should this be elsewhere ? +static const struct FollowerMessagePool followerBasicMessages[] = { + [FOLLOWER_EMOTION_HAPPY] = {gFollowerHappyMessages, EventScript_FollowerGeneric, N_FOLLOWER_HAPPY_MESSAGES}, + [FOLLOWER_EMOTION_NEUTRAL] = {gFollowerNeutralMessages, EventScript_FollowerGeneric, N_FOLLOWER_NEUTRAL_MESSAGES}, + [FOLLOWER_EMOTION_SAD] = {gFollowerSadMessages, EventScript_FollowerGeneric, N_FOLLOWER_SAD_MESSAGES}, + [FOLLOWER_EMOTION_UPSET] = {gFollowerUpsetMessages, EventScript_FollowerGeneric, N_FOLLOWER_UPSET_MESSAGES}, + [FOLLOWER_EMOTION_ANGRY] = {gFollowerAngryMessages, EventScript_FollowerGeneric, N_FOLLOWER_ANGRY_MESSAGES}, + [FOLLOWER_EMOTION_PENSIVE] = {gFollowerPensiveMessages, EventScript_FollowerGeneric, N_FOLLOWER_PENSIVE_MESSAGES}, + [FOLLOWER_EMOTION_LOVE] = {gFollowerLoveMessages, EventScript_FollowerGeneric, N_FOLLOWER_LOVE_MESSAGES}, + [FOLLOWER_EMOTION_SURPRISE] = {gFollowerSurpriseMessages, EventScript_FollowerGeneric, N_FOLLOWER_SURPRISE_MESSAGES}, + [FOLLOWER_EMOTION_CURIOUS] = {gFollowerCuriousMessages, EventScript_FollowerGeneric, N_FOLLOWER_CURIOUS_MESSAGES}, + [FOLLOWER_EMOTION_MUSIC] = {gFollowerMusicMessages, EventScript_FollowerGeneric, N_FOLLOWER_MUSIC_MESSAGES}, + [FOLLOWER_EMOTION_POISONED] = {gFollowerPoisonedMessages, EventScript_FollowerGeneric, N_FOLLOWER_POISONED_MESSAGES}, +}; + +// Display an emote above an object event +// Note that this is not a movement action +static void ObjectEventEmote(struct ObjectEvent *objEvent, u8 emotion) { + emotion %= FOLLOWER_EMOTION_LENGTH; + ObjectEventGetLocalIdAndMap(objEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + gFieldEffectArguments[7] = emotion; + FieldEffectStart(FLDEFF_EMOTE); +} + +// Script-accessible version of the above +bool8 ScrFunc_emote(struct ScriptContext *ctx) { + u8 localId = ScriptReadByte(ctx); + u8 emotion = ScriptReadByte(ctx) % FOLLOWER_EMOTION_LENGTH; + u8 i = GetObjectEventIdByLocalId(localId); + if (i < OBJECT_EVENTS_COUNT) + ObjectEventEmote(&gObjectEvents[i], emotion); + return FALSE; +} + +struct SpecialEmote { // Used for storing conditional emotes + u16 index; + u8 emotion; +}; + +// Find and return direction of metatile behavior within distance +static u32 FindMetatileBehaviorWithinRange(s32 x, s32 y, u32 mb, u8 distance) { + s32 i; + for (i = y+1; i <= y + distance; i++) + if (MapGridGetMetatileBehaviorAt(x, i) == mb) + return DIR_SOUTH; + for (i = y-1; i >= y - distance; i--) + if (MapGridGetMetatileBehaviorAt(x, i) == mb) + return DIR_NORTH; + for (i = x+1; i <= x + distance; i++) + if (MapGridGetMetatileBehaviorAt(i, y) == mb) + return DIR_EAST; + for (i = x-1; i >= x - distance; i--) + if (MapGridGetMetatileBehaviorAt(i, y) == mb) + return DIR_WEST; + + return DIR_NONE; +} + +// Call an applicable follower message script +bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big switch for follower messages +{ + u16 species; + s32 multi, multi2; + struct SpecialEmote cond_emotes[16] = {0}; + u8 emotion, n_choices = 0; + struct ObjectEvent *objEvent = GetFollowerObject(); + struct Pokemon *mon = GetFirstLiveMon(); + u8 emotion_weight[FOLLOWER_EMOTION_LENGTH] = { + [FOLLOWER_EMOTION_HAPPY] = 10, + [FOLLOWER_EMOTION_NEUTRAL] = 15, + [FOLLOWER_EMOTION_SAD] = 5, + [FOLLOWER_EMOTION_UPSET] = 15, + [FOLLOWER_EMOTION_ANGRY] = 15, + [FOLLOWER_EMOTION_PENSIVE] = 15, + [FOLLOWER_EMOTION_SURPRISE] = 10, // TODO: Scale this with how long the follower has been out? + [FOLLOWER_EMOTION_CURIOUS] = 10, // TODO: Increase this if there is an item nearby? + [FOLLOWER_EMOTION_MUSIC] = 15, + }; + u32 i, j; + bool32 pickedCondition = FALSE; + if (mon == NULL) { + ScriptCall(ctx, EventScript_FollowerLovesYou); + return FALSE; + } + // If map is not flyable, set the script to jump past the fly check TODO: Should followers ask to fly? + if (TRUE || !Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType)) + ScriptJump(ctx, EventScript_FollowerEnd); + species = GetMonData(mon, MON_DATA_SPECIES); + multi = GetMonData(mon, MON_DATA_FRIENDSHIP); + if (multi > 80) { + emotion_weight[FOLLOWER_EMOTION_HAPPY] = 20; + emotion_weight[FOLLOWER_EMOTION_UPSET] = 5; + emotion_weight[FOLLOWER_EMOTION_ANGRY] = 5; + emotion_weight[FOLLOWER_EMOTION_LOVE] = 20; + emotion_weight[FOLLOWER_EMOTION_MUSIC] = 20; + } + if (multi > 170) { + emotion_weight[FOLLOWER_EMOTION_HAPPY] = 30; + emotion_weight[FOLLOWER_EMOTION_LOVE] = 30; + } + // Conditional messages follow + // Health & status-related + multi = mon->hp * 100 / mon->maxHP; + if (multi < 20) { + emotion_weight[FOLLOWER_EMOTION_SAD] = 30; + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=4}; + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=5}; + } + if (multi < 50 || mon->status & STATUS1_PARALYSIS) { + emotion_weight[FOLLOWER_EMOTION_SAD] = 30; + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=6}; + } + // Gym type advantage/disadvantage scripts + if (GetCurrentMapMusic() == MUS_GYM || GetCurrentMapMusic() == MUS_RG_GYM) { + switch (gMapHeader.regionMapSectionId) + { + case MAPSEC_RUSTBORO_CITY: + case MAPSEC_PEWTER_CITY: + multi = TYPE_ROCK; + break; + case MAPSEC_DEWFORD_TOWN: + multi = TYPE_FIGHTING; + break; + case MAPSEC_MAUVILLE_CITY: + case MAPSEC_VERMILION_CITY: + multi = TYPE_ELECTRIC; + break; + case MAPSEC_LAVARIDGE_TOWN: + case MAPSEC_CINNABAR_ISLAND: + multi = TYPE_FIRE; + break; + case MAPSEC_PETALBURG_CITY: + multi = TYPE_NORMAL; + break; + case MAPSEC_FORTREE_CITY: + multi = TYPE_FLYING; + break; + case MAPSEC_MOSSDEEP_CITY: + case MAPSEC_SAFFRON_CITY: + multi = TYPE_PSYCHIC; + break; + case MAPSEC_SOOTOPOLIS_CITY: + case MAPSEC_CERULEAN_CITY: + multi = TYPE_WATER; + break; + case MAPSEC_CELADON_CITY: + multi = TYPE_GRASS; + break; + case MAPSEC_FUCHSIA_CITY: + multi = TYPE_POISON; + break; + case MAPSEC_VIRIDIAN_CITY: + multi = TYPE_GROUND; + break; + default: + multi = NUMBER_OF_MON_TYPES; + } + if (multi < NUMBER_OF_MON_TYPES) { + multi = GetTypeEffectiveness(mon, multi); + if (multi & (MOVE_RESULT_NOT_VERY_EFFECTIVE | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_NO_EFFECT)) + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_HAPPY, .index=32}; + else if (multi & MOVE_RESULT_SUPER_EFFECTIVE) + cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=7}; + } + } + + emotion = RandomWeightedIndex(emotion_weight, FOLLOWER_EMOTION_LENGTH); + #ifdef BATTLE_ENGINE + if ((mon->status & STATUS1_PSN_ANY) && GetMonAbility(mon) != ABILITY_POISON_HEAL) + #else + if (mon->status & STATUS1_PSN_ANY) + #endif + emotion = FOLLOWER_EMOTION_POISONED; + multi = Random() % followerBasicMessages[emotion].length; + // With 50% chance, select special message using reservoir sampling + for (i = (Random() & 1) ? n_choices : 0, j = 1; i < n_choices; i++) { + if (cond_emotes[i].emotion == emotion && (Random() < 0x10000 / (j++))) // Replace item with 1/j chance + multi = cond_emotes[i].index; + } + // Match scripted conditional messages + // With 50% chance, try to match scripted conditional messages + for (i = (Random() & 1) ? COND_MSG_COUNT : 0, j = 1; i < COND_MSG_COUNT; i++) { + const struct FollowerMsgInfoExtended *info = &gFollowerConditionalMessages[i]; + if (info->stFlags == 1 && species != info->st.species) + continue; + if (info->stFlags == 2 && (info->st.types.type2 >= NUMBER_OF_MON_TYPES ? SpeciesHasType(species, info->st.types.type1) : !(SpeciesHasType(species, info->st.types.type1) || SpeciesHasType(species, info->st.types.type2)))) + continue; + if (info->stFlags == 3 && !(mon->status & info->st.status)) + continue; + if (info->mmFlags == 1 && gMapHeader.regionMapSectionId != info->mm.mapSec.mapSec) + continue; + if (info->mmFlags == 2 && !(gSaveBlock1Ptr->location.mapNum == info->mm.map.mapNum && gSaveBlock1Ptr->location.mapGroup == info->mm.map.mapGroup)) + continue; + if (info->mmFlags == 3 && !(objEvent->currentMetatileBehavior == info->mm.mb.behavior1 || objEvent->currentMetatileBehavior == info->mm.mb.behavior2)) + continue; + if (info->wtFlags == 1 && !(GetCurrentWeather() == info->wt.weather.weather1 || GetCurrentWeather() == info->wt.weather.weather2)) + continue; + if (info->wtFlags == 2 && GetCurrentMapMusic() != info->wt.song) + continue; + if (info->wtFlags == 3 && (!MapHasNaturalLight(gMapHeader.mapType) || gTimeOfDay != info->wt.timeOfDay || GetCurrentWeather() >= WEATHER_RAIN)) + continue; + if (info->nearFlags == 1) { + if ((multi2 = FindMetatileBehaviorWithinRange(objEvent->currentCoords.x, objEvent->currentCoords.y, info->near.mb.behavior, info->near.mb.distance))) + gSpecialVar_Result = multi2; + else + continue; + } + + // replace choice with weight/j chance + if (Random() < (0x10000 / (j++)) * (info->weight ? info->weight : 1)) { + multi = i; + pickedCondition = TRUE; + } + } + if (pickedCondition) { // conditional message was chosen + emotion = gFollowerConditionalMessages[multi].emotion; + ObjectEventEmote(objEvent, emotion); + ctx->data[0] = (u32) gFollowerConditionalMessages[multi].text; + // text choices are spread across array; pick a random one + if (gFollowerConditionalMessages[multi].textSpread) { + for (i = 0; i < 4; i++) + if (!((u32*)gFollowerConditionalMessages[multi].text)[i]) + break; + ctx->data[0] = i ? ((u32*)gFollowerConditionalMessages[multi].text)[Random() % i] : 0; + } + ScriptCall(ctx, gFollowerConditionalMessages[multi].script ? gFollowerConditionalMessages[multi].script : followerBasicMessages[emotion].script); + return FALSE; + } + ObjectEventEmote(objEvent, emotion); + ctx->data[0] = (u32) followerBasicMessages[emotion].messages[multi].text; // Load message text + ScriptCall(ctx, followerBasicMessages[emotion].messages[multi].script ? + followerBasicMessages[emotion].messages[multi].script : followerBasicMessages[emotion].script); + return FALSE; +} + +bool8 ScrFunc_followerfly(struct ScriptContext *ctx) { + SetMainCallback2(CB2_OpenFlyMap); + return FALSE; +} + +// Sprite callback for light sprites +void UpdateLightSprite(struct Sprite *sprite) { + s16 left = gSaveBlock1Ptr->pos.x - 2; + s16 right = gSaveBlock1Ptr->pos.x + 17; + s16 top = gSaveBlock1Ptr->pos.y; + s16 bottom = gSaveBlock1Ptr->pos.y + 15; + s16 x = sprite->data[6]; + s16 y = sprite->data[7]; + u16 sheetTileStart; + u32 paletteNum; + // Ripped from RemoveObjectEventIfOutsideView + if (!(x >= left && x <= right && y >= top && y <= bottom)) { + sheetTileStart = sprite->sheetTileStart; + paletteNum = sprite->oam.paletteNum; + DestroySprite(sprite); + FieldEffectFreeTilesIfUnused(sheetTileStart); + FieldEffectFreePaletteIfUnused(paletteNum); + Weather_SetBlendCoeffs(7, 12); // TODO: Restore original blend coeffs at dawn + return; + } + + if (gTimeOfDay != TIME_OF_DAY_NIGHT) { + sprite->invisible = TRUE; + return; + } + + /*switch (sprite->data[5]) { // lightType + case 0: + if (gPaletteFade.active) { // if palette fade is active, don't flicker since the timer won't be updated + Weather_SetBlendCoeffs(7, 12); + sprite->invisible = FALSE; + } else if (gPlayerAvatar.tileTransitionState) { + Weather_SetBlendCoeffs(7, 12); // As long as the second coefficient stays 12, shadows will not change + sprite->invisible = FALSE; + if (GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum) == OBJ_EVENT_PAL_TAG_LIGHT_2) + LoadSpritePaletteInSlot(&sObjectEventSpritePalettes[FindObjectEventPaletteIndexByTag(OBJ_EVENT_PAL_TAG_LIGHT)], sprite->oam.paletteNum); + } else if ((sprite->invisible = gTimeUpdateCounter & 1)) { + Weather_SetBlendCoeffs(12, 12); + if (GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum) == OBJ_EVENT_PAL_TAG_LIGHT) + LoadSpritePaletteInSlot(&sObjectEventSpritePalettes[FindObjectEventPaletteIndexByTag(OBJ_EVENT_PAL_TAG_LIGHT_2)], sprite->oam.paletteNum); + } + break; + case 1 ... 2: + Weather_SetBlendCoeffs(12, 12); + sprite->invisible = FALSE; + break; + }*/ +} + +// Spawn a light at a map coordinate +static void SpawnLightSprite(s16 x, s16 y, s16 camX, s16 camY, u32 lightType) { + struct Sprite *sprite; + const struct SpriteTemplate *template; + u8 i; + for (i = 0; i < MAX_SPRITES; i++) { + sprite = &gSprites[i]; + if (sprite->inUse && sprite->callback == UpdateLightSprite && sprite->data[6] == x && sprite->data[7] == y) + return; + } + lightType = min(lightType, ARRAY_COUNT(gFieldEffectLightTemplates) - 1); // bounds checking + template = gFieldEffectLightTemplates[lightType]; + LoadSpriteSheetByTemplate(template, 0); + sprite = &gSprites[CreateSprite(template, 0, 0, 0)]; + if (lightType == 0 && (i = IndexOfSpritePaletteTag(template->paletteTag + 1)) < 16) + sprite->oam.paletteNum = i; + else + UpdateSpritePaletteByTemplate(template, sprite); + GetMapCoordsFromSpritePos(x + camX, y + camY, &sprite->x, &sprite->y); + sprite->data[5] = lightType; + sprite->data[6] = x; + sprite->data[7] = y; + sprite->affineAnims = gDummySpriteAffineAnimTable; + sprite->affineAnimBeginning = TRUE; + sprite->coordOffsetEnabled = TRUE; + switch (lightType) { + case 0: // Rustboro lanterns + sprite->centerToCornerVecX = -(32 >> 1); + sprite->centerToCornerVecY = -(32 >> 1); + sprite->oam.priority = 1; + sprite->oam.objMode = 1; // BLEND + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + sprite->x += 8; + sprite->y += 22 + sprite->centerToCornerVecY; + break; + case 1 ... 2: // Pokemon Center & mart + sprite->centerToCornerVecX = -(16 >> 1); + sprite->centerToCornerVecY = -(16 >> 1); + sprite->oam.priority = 2; + sprite->subpriority = 0xFF; + sprite->oam.objMode = 1; // BLEND + } +} + +void TrySpawnLightSprites(s16 camX, s16 camY) { + u8 i; + u8 objectCount; + s16 left = gSaveBlock1Ptr->pos.x - 2; + s16 right = gSaveBlock1Ptr->pos.x + MAP_OFFSET_W + 2; + s16 top = gSaveBlock1Ptr->pos.y; + s16 bottom = gSaveBlock1Ptr->pos.y + MAP_OFFSET_H + 2; + if (gMapHeader.events == NULL) + return; + + if (InBattlePyramid()) + objectCount = GetNumBattlePyramidObjectEvents(); + else if (InTrainerHill()) + objectCount = 2; + else + objectCount = gMapHeader.events->objectEventCount; + + for (i = 0; i < objectCount; i++) { + struct ObjectEventTemplate *template = &gSaveBlock1Ptr->objectEventTemplates[i]; + s16 npcX = template->x + MAP_OFFSET; + s16 npcY = template->y + MAP_OFFSET; + if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX && !FlagGet(template->flagId)) + if (template->graphicsId == OBJ_EVENT_GFX_LIGHT_SPRITE) // event is light sprite instead + SpawnLightSprite(npcX, npcY, camX, camY, template->trainerRange_berryTreeId); + } +} + void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) { u8 i; @@ -1651,9 +2346,12 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) s16 npcX = template->x + MAP_OFFSET; s16 npcY = template->y + MAP_OFFSET; - if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX - && !FlagGet(template->flagId)) - TrySpawnObjectEventTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); + if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX && !FlagGet(template->flagId)) { + if (template->graphicsId == OBJ_EVENT_GFX_LIGHT_SPRITE) { // light sprite instead + SpawnLightSprite(npcX, npcY, cameraX, cameraY, template->trainerRange_berryTreeId); + } else + TrySpawnObjectEventTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); + } } } } @@ -1674,7 +2372,9 @@ void RemoveObjectEventsOutsideView(void) { struct ObjectEvent *objectEvent = &gObjectEvents[i]; - if (objectEvent->active && !objectEvent->isPlayer) + // Followers should not go OOB, or their sprites may be freed early during a cross-map scripting event, + // such as Wally's Ralts catch sequence + if (objectEvent->active && !objectEvent->isPlayer && objectEvent->localId != OBJ_EVENT_ID_FOLLOWER) RemoveObjectEventIfOutsideView(objectEvent); } } @@ -1707,12 +2407,12 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) SpawnObjectEventOnReturnToField(i, x, y); } CreateReflectionEffectSprites(); + TrySpawnLightSprites(x, y); } static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) { u8 i; - u8 paletteSlot; struct Sprite *sprite; struct ObjectEvent *objectEvent; struct SpriteTemplate spriteTemplate; @@ -1732,28 +2432,16 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) spriteFrameImage.size = graphicsInfo->size; CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables); spriteTemplate.images = &spriteFrameImage; - - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == PALSLOT_PLAYER) - { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); + if (spriteTemplate.paletteTag != TAG_NONE && spriteTemplate.paletteTag != OBJ_EVENT_PAL_TAG_DYNAMIC) { + LoadObjectEventPalette(spriteTemplate.paletteTag); } - else if (paletteSlot == PALSLOT_NPC_SPECIAL) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); - } - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; - i = CreateSprite(&spriteTemplate, 0, 0, 0); if (i != MAX_SPRITES) { sprite = &gSprites[i]; + // Use palette from species palette table + if (spriteTemplate.paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) + sprite->oam.paletteNum = LoadDynamicFollowerPalette(OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); GetMapCoordsFromSpritePos(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->x, &sprite->y); sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); @@ -1765,10 +2453,9 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) SetPlayerAvatarObjectEventIdAndObjectId(objectEventId, i); objectEvent->warpArrowSpriteId = CreateWarpArrowSprite(); } - if (subspriteTables != NULL) + if (subspriteTables != NULL) { SetSubspriteTables(sprite, subspriteTables); - - sprite->oam.paletteNum = paletteSlot; + } sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = i; @@ -1784,7 +2471,7 @@ static void ResetObjectEventFldEffData(struct ObjectEvent *objectEvent) { objectEvent->singleMovementActive = FALSE; objectEvent->triggerGroundEffectsOnMove = TRUE; - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; objectEvent->hasReflection = FALSE; objectEvent->inShortGrass = FALSE; objectEvent->inShallowFlowingWater = FALSE; @@ -1801,46 +2488,62 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_CONTROLLABLE); } -void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) -{ - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *sprite; - u8 paletteSlot; +// Update sprite's palette, freeing old palette if necessary +static u8 UpdateSpritePalette(const struct SpritePalette * spritePalette, struct Sprite * sprite) { + // Free palette if otherwise unused + sprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); + sprite->inUse = TRUE; + if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) { + sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum, FALSE); + } else { + sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + } - graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); - sprite = &gSprites[objectEvent->spriteId]; - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == PALSLOT_PLAYER) - { - PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot == PALSLOT_NPC_SPECIAL) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); - } - sprite->oam.shape = graphicsInfo->oam->shape; - sprite->oam.size = graphicsInfo->oam->size; - sprite->images = graphicsInfo->images; - sprite->anims = graphicsInfo->anims; - sprite->subspriteTables = graphicsInfo->subspriteTables; - sprite->oam.paletteNum = paletteSlot; - objectEvent->inanimate = graphicsInfo->inanimate; - objectEvent->graphicsId = graphicsId; - SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y); - sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); - sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); - sprite->x += 8; - sprite->y += 16 + sprite->centerToCornerVecY; - if (objectEvent->trackedByCamera) - CameraObjectReset1(); + return sprite->oam.paletteNum; } -void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) +// Find and update based on template's paletteTag +// TODO: Add a better way to associate tags -> palettes besides listing them in sObjectEventSpritePalettes +u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate * template, struct Sprite * sprite) { + u8 i = FindObjectEventPaletteIndexByTag(template->paletteTag); + if (i == 0xFF) + return i; + return UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); +} + +// Set graphics *by info* +static void ObjectEventSetGraphics(struct ObjectEvent *objectEvent, const struct ObjectEventGraphicsInfo *graphicsInfo) { + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + u8 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag); + if (i != 0xFF) + UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); + sprite->oam.shape = graphicsInfo->oam->shape; + sprite->oam.size = graphicsInfo->oam->size; + sprite->images = graphicsInfo->images; + sprite->anims = graphicsInfo->anims; + sprite->subspriteTables = graphicsInfo->subspriteTables; + objectEvent->inanimate = graphicsInfo->inanimate; + SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->x += 8; + sprite->y += 16 + sprite->centerToCornerVecY; + if (objectEvent->trackedByCamera) + { + CameraObjectReset1(); + } +} + +void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) +{ + objectEvent->graphicsId = graphicsId; + ObjectEventSetGraphics(objectEvent, GetObjectEventGraphicsInfo(graphicsId)); + objectEvent->graphicsId = graphicsId; +} + +void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u16 graphicsId) { u8 objectEventId; @@ -1871,7 +2574,30 @@ void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction) ObjectEventTurn(&gObjectEvents[playerAvatar->objectEventId], direction); } -static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, u8 berryId, u8 berryStage) { + const u16 graphicsId = gBerryTreeObjectEventGraphicsIdTablePointers[berryId][berryStage]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + UpdateSpritePalette(&sObjectEventSpritePalettes[gBerryTreePaletteSlotTablePointers[berryId][berryStage]-2], sprite); + sprite->oam.shape = graphicsInfo->oam->shape; + sprite->oam.size = graphicsInfo->oam->size; + sprite->images = gBerryTreePicTablePointers[berryId]; + sprite->anims = graphicsInfo->anims; + sprite->subspriteTables = graphicsInfo->subspriteTables; + objectEvent->inanimate = graphicsInfo->inanimate; + objectEvent->graphicsId = graphicsId; + SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->x += 8; + sprite->y += 16 + sprite->centerToCornerVecY; + if (objectEvent->trackedByCamera) + { + CameraObjectReset1(); + } +} + +static void get_berry_tree_graphics(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 berryStage; u8 berryId; @@ -1888,26 +2614,31 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite if (berryId > ITEM_TO_BERRY(LAST_BERRY_INDEX)) berryId = 0; - ObjectEventSetGraphicsId(objectEvent, gBerryTreeObjectEventGraphicsIdTablePointers[berryId][berryStage]); - sprite->images = gBerryTreePicTablePointers[berryId]; - sprite->oam.paletteNum = gBerryTreePaletteSlotTablePointers[berryId][berryStage]; + SetBerryTreeGraphics(objectEvent, berryId, berryStage); StartSpriteAnim(sprite, berryStage); } } -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId) { - u8 bard; + u32 form = 0; - if (graphicsId >= OBJ_EVENT_GFX_VARS) + if (graphicsId >= OBJ_EVENT_GFX_VARS && graphicsId <= OBJ_EVENT_GFX_VAR_F) graphicsId = VarGetObjectEventGraphicsId(graphicsId - OBJ_EVENT_GFX_VARS); - if (graphicsId == OBJ_EVENT_GFX_BARD) - { - bard = GetCurrentMauvilleOldMan(); - return gMauvilleOldManGraphicsInfoPointers[bard]; + // graphicsId may contain mon form info + if (graphicsId > OBJ_EVENT_GFX_SPECIES_MASK) { + form = graphicsId >> OBJ_EVENT_GFX_SPECIES_BITS; + graphicsId = graphicsId & OBJ_EVENT_GFX_SPECIES_MASK; } + if (graphicsId == OBJ_EVENT_GFX_BARD) { + return gMauvilleOldManGraphicsInfoPointers[GetCurrentMauvilleOldMan()]; + } + + if (graphicsId >= OBJ_EVENT_GFX_MON_BASE) + return SpeciesToGraphicsInfo(graphicsId - OBJ_EVENT_GFX_MON_BASE, form); + if (graphicsId >= NUM_OBJ_EVENT_GFX) graphicsId = OBJ_EVENT_GFX_NINJA_BOY; @@ -1916,7 +2647,7 @@ const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) static void SetObjectEventDynamicGraphicsId(struct ObjectEvent *objectEvent) { - if (objectEvent->graphicsId >= OBJ_EVENT_GFX_VARS) + if (objectEvent->graphicsId >= OBJ_EVENT_GFX_VARS && objectEvent->graphicsId <= OBJ_EVENT_GFX_VAR_F) objectEvent->graphicsId = VarGetObjectEventGraphicsId(objectEvent->graphicsId - OBJ_EVENT_GFX_VARS); } @@ -1995,17 +2726,12 @@ void FreeAndReserveObjectSpritePalettes(void) gReservedSpritePaletteCount = OBJ_PALSLOT_COUNT; } -static void LoadObjectEventPalette(u16 paletteTag) +u8 LoadObjectEventPalette(u16 paletteTag) { u16 i = FindObjectEventPaletteIndexByTag(paletteTag); - -// FindObjectEventPaletteIndexByTag returns 0xFF on failure, not OBJ_EVENT_PAL_TAG_NONE. -#ifdef BUGFIX - if (i != 0xFF) -#else - if (i != OBJ_EVENT_PAL_TAG_NONE) -#endif - LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]); + if (i == 0xFF) + return i; + return LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]); } // Unused @@ -2017,12 +2743,16 @@ static void LoadObjectEventPaletteSet(u16 *paletteTags) LoadObjectEventPalette(paletteTags[i]); } +// Really just loads the palette and applies weather fade static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette) { - if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF) - return 0xFF; - - return LoadSpritePalette(spritePalette); + u8 paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); + if (paletteNum != 0xFF) // don't load twice; return + return paletteNum; + paletteNum = LoadSpritePalette(spritePalette); + if (paletteNum != 0xFF) + UpdateSpritePaletteWithWeather(paletteNum, FALSE); + return paletteNum; } void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) @@ -2365,6 +3095,9 @@ void SetObjectEventDirection(struct ObjectEvent *objectEvent, u8 direction) static const u8 *GetObjectEventScriptPointerByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { + if (localId == OBJ_EVENT_ID_FOLLOWER) { + return EventScript_Follower; + } return GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->script; } @@ -3074,7 +3807,7 @@ void MovementType_BerryTreeGrowth(struct Sprite *sprite) objectEvent = &gObjectEvents[sprite->sObjEventId]; if (!(sprite->sBerryTreeFlags & BERRY_FLAG_SET_GFX)) { - SetBerryTreeGraphics(objectEvent, sprite); + get_berry_tree_graphics(objectEvent, sprite); sprite->sBerryTreeFlags |= BERRY_FLAG_SET_GFX; } UpdateObjectEventCurrentMovement(objectEvent, sprite, ObjectEventCB2_BerryTree); @@ -3113,7 +3846,7 @@ bool8 MovementType_BerryTreeGrowth_Normal(struct ObjectEvent *objectEvent, struc sprite->sTypeFuncId = BERRYTREEFUNC_SPARKLE_START; return TRUE; } - SetBerryTreeGraphics(objectEvent, sprite); + get_berry_tree_graphics(objectEvent, sprite); ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION); sprite->sTypeFuncId = BERRYTREEFUNC_MOVE; return TRUE; @@ -3153,7 +3886,7 @@ bool8 MovementType_BerryTreeGrowth_Sparkle(struct ObjectEvent *objectEvent, stru sprite->animPaused = TRUE; if (sprite->sTimer > 64) { - SetBerryTreeGraphics(objectEvent, sprite); + get_berry_tree_graphics(objectEvent, sprite); sprite->sTypeFuncId = BERRYTREEFUNC_SPARKLE_END; sprite->sTimer = 0; return TRUE; @@ -4336,6 +5069,330 @@ bool8 CopyablePlayerMovement_Jump2(struct ObjectEvent *objectEvent, struct Sprit return TRUE; } +static bool8 EndFollowerTransformEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + if (!sprite) + return FALSE; + SetGpuReg(REG_OFFSET_MOSAIC, 0); + if (!sprite->data[7]) + return FALSE; + sprite->oam.mosaic = FALSE; + sprite->data[7] = 0; + return FALSE; +} + +static bool8 TryStartFollowerTransformEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + u32 multi; + if (OW_SPECIES(objectEvent) == SPECIES_CASTFORM && OW_FORM(objectEvent) != (multi = GetOverworldCastformForm())) { + sprite->data[7] = TRANSFORM_TYPE_PERMANENT << 8; + objectEvent->graphicsId &= OBJ_EVENT_GFX_SPECIES_MASK; + objectEvent->graphicsId |= multi << OBJ_EVENT_GFX_SPECIES_BITS; + return TRUE; + } else if ((gRngValue >> 16) < 18 && GetLocalWildMon(FALSE) + && (OW_SPECIES(objectEvent) == SPECIES_MEW || OW_SPECIES(objectEvent) == SPECIES_DITTO)) { + sprite->data[7] = TRANSFORM_TYPE_RANDOM_WILD << 8; + PlaySE(SE_M_MINIMIZE); + return TRUE; + } + return FALSE; +} + +static bool8 UpdateFollowerTransformEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + u8 type = sprite->data[7] >> 8; + u8 frames = sprite->data[7] & 0xFF; + u8 stretch; + u32 multi; + if (!type) + return TryStartFollowerTransformEffect(objectEvent, sprite); + sprite->oam.mosaic = TRUE; + if (frames < 8) + stretch = frames >> 1; + else if (frames < 16) + stretch = (16 - frames) >> 1; + else { + return EndFollowerTransformEffect(objectEvent, sprite); + } + if (frames == 8) { + switch (type) + { + case TRANSFORM_TYPE_PERMANENT: + RefreshFollowerGraphics(objectEvent); + break; + case TRANSFORM_TYPE_RANDOM_WILD: + multi = objectEvent->graphicsId; + objectEvent->graphicsId = GetLocalWildMon(FALSE); + if (!objectEvent->graphicsId) { + objectEvent->graphicsId = multi; + break; + } + objectEvent->graphicsId += OBJ_EVENT_GFX_MON_BASE; + RefreshFollowerGraphics(objectEvent); + objectEvent->graphicsId = multi; + break; + } + } + + SetGpuReg(REG_OFFSET_MOSAIC, (stretch << 12) | (stretch << 8)); + frames++; + sprite->data[7] = (sprite->data[7] & 0xFF00) | frames; + return TRUE; +} + +movement_type_def(MovementType_FollowPlayer, gMovementTypeFuncs_FollowPlayer) + +bool8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + if (!IsFollowerVisible()) { // Shadow player's position + objectEvent->invisible = TRUE; + MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + objectEvent->triggerGroundEffectsOnMove = FALSE; // Stop endless reflection spawning + return FALSE; + } + // Move follower to player, in case we end up in the shadowing state for only 1 frame + // This way the player cannot talk to the invisible follower before it appears + if (objectEvent->invisible) { + MoveObjectEventToMapCoords(objectEvent, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + objectEvent->triggerGroundEffectsOnMove = FALSE; // Stop endless reflection spawning + } + sprite->sTypeFuncId = 1; // Enter active state; if the player moves the follower will appear + return TRUE; +} + +bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (gPlayerAvatar.tileTransitionState == T_NOT_MOVING && !gObjectEvents[gPlayerAvatar.objectEventId].heldMovementActive ) { // do nothing if player is stationary + return FALSE; + } else if (!IsFollowerVisible()) { + if (objectEvent->invisible) { // Return to shadowing state + sprite->sTypeFuncId = 0; + return FALSE; + } + // Animate entering pokeball + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_ENTER_POKEBALL); + objectEvent->singleMovementActive = 1; + sprite->sTypeFuncId = 2; // movement action sets state to 0 + return TRUE; + } + // TODO: Remove dependence on PlayerGetCopyableMovement + return gFollowPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), NULL); +} + +bool8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE + // Copied from ObjectEventExecSingleMovementAction + if (gMovementActionFuncs[objectEvent->movementActionId][sprite->sActionFuncId](objectEvent, sprite)) { + objectEvent->movementActionId = MOVEMENT_ACTION_NONE; + sprite->sActionFuncId = 0; + #else + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { + #endif + objectEvent->singleMovementActive = 0; + if (sprite->sTypeFuncId) { // restore nonzero state + sprite->sTypeFuncId = 1; + } + } else if (objectEvent->movementActionId != MOVEMENT_ACTION_EXIT_POKEBALL) { + UpdateFollowerTransformEffect(objectEvent, sprite); + } + return FALSE; +} + +bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u8 direction; + if (!objectEvent->singleMovementActive) { // walk in place + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection)); + sprite->sTypeFuncId = 1; + objectEvent->singleMovementActive = 1; + return TRUE; + } else if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { // finish movement action + objectEvent->singleMovementActive = 0; + } + UpdateFollowerTransformEffect(objectEvent, sprite); + return FALSE; +} + +bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + s16 targetX; + s16 targetY; + #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE + u8 playerAction = gObjectEvents[gPlayerAvatar.objectEventId].movementActionId; + #endif + + targetX = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x; + targetY = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y; + x = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x; + y = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y; + + if ((x == targetX && y == targetY) || !IsFollowerVisible()) { // don't move on player collision or if not visible + return FALSE; + } + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + ClearObjectEventMovement(objectEvent, sprite); + + if (objectEvent->invisible) { // Animate exiting pokeball + // Player is jumping, but follower is invisible + if (PlayerGetCopyableMovement() == COPY_MOVE_JUMP2) { + sprite->sTypeFuncId = 0; // return to shadowing state + return FALSE; + } + MoveObjectEventToMapCoords(objectEvent, targetX, targetY); + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_EXIT_POKEBALL); + objectEvent->singleMovementActive = 1; + sprite->sTypeFuncId = 2; + return TRUE; + } else if (x == targetX && y == targetY) { // don't move if already in the player's last position + return FALSE; + } + + // Follow player + direction = GetDirectionToFace(x, y, targetX, targetY); + MoveCoords(direction, &x, &y); + #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE // https://github.com/ghoulslash/pokeemerald/tree/sideways_stairs + GetCollisionAtCoords(objectEvent, x, y, direction); // Sets directionOverwrite for stairs + if (GetLedgeJumpDirection(x, y, direction) != DIR_NONE) // InitJumpRegular will set the proper speed + ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { // Set follow speed according to player's speed + if (playerAction >= MOVEMENT_ACTION_RUN_DOWN_SLOW && playerAction <= MOVEMENT_ACTION_RUN_RIGHT_SLOW) + objectEvent->movementActionId = GetWalkNormalMovementAction(direction); + else + objectEvent->movementActionId = GetWalkFastMovementAction(direction); + + } else if (PlayerGetCopyableMovement() == COPY_MOVE_JUMP2) { + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowMovementAction(direction)); + } else { + if (playerAction >= MOVEMENT_ACTION_WALK_SLOW_DOWN && playerAction <= MOVEMENT_ACTION_WALK_SLOW_RIGHT) + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowMovementAction(direction)); + else + objectEvent->movementActionId = GetWalkNormalMovementAction(direction); + } + sprite->sActionFuncId = 0; + #else + if (GetLedgeJumpDirection(x, y, direction) != DIR_NONE) // InitJumpRegular will set the proper speed + ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) // Set follow speed according to player's speed + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); + // If *player* jumps, make step take twice as long + else if (PlayerGetCopyableMovement() == COPY_MOVE_JUMP2) + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowMovementAction(direction)); + else + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(direction)); + #endif + objectEvent->singleMovementActive = 1; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 FollowablePlayerMovement_GoSpeed1(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 FollowablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFasterMovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 FollowablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetSlideMovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 fph_IM_DIFFERENT(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpInPlaceMovementAction(direction)); + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 FollowablePlayerMovement_GoSpeed4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpMovementAction(direction)); + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + } + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 FollowablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + MoveCoordsInDirection(direction, &x, &y, 2, 2); + ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + movement_type_def(MovementType_CopyPlayerInGrass, gMovementTypeFuncs_CopyPlayerInGrass) bool8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -4478,7 +5535,7 @@ bool8 MovementType_Invisible_Step2(struct ObjectEvent *objectEvent, struct Sprit return FALSE; } -static void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite) +void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite) { objectEvent->singleMovementActive = FALSE; objectEvent->heldMovementActive = FALSE; @@ -4628,6 +5685,41 @@ u8 GetDirectionToFace(s16 x, s16 y, s16 targetX, s16 targetY) return DIR_SOUTH; } +// Uses the above, but script accessible, and uses localIds +bool8 ScrFunc_GetDirectionToFace(struct ScriptContext *ctx) { + u16 *var = GetVarPointer(ScriptReadHalfword(ctx)); + u8 id0 = GetObjectEventIdByLocalId(ScriptReadByte(ctx)); // source + u8 id1 = GetObjectEventIdByLocalId(ScriptReadByte(ctx)); // target + if (var == NULL) + return FALSE; + if (id0 >= OBJECT_EVENTS_COUNT || id1 >= OBJECT_EVENTS_COUNT) + *var = DIR_NONE; + else + *var = GetDirectionToFace( + gObjectEvents[id0].currentCoords.x, + gObjectEvents[id0].currentCoords.y, + gObjectEvents[id1].currentCoords.x, + gObjectEvents[id1].currentCoords.y); + return FALSE; +} + +// Whether following pokemon is also the user of the field move +// Intended to be called before the field effect itself +bool8 ScrFunc_IsFollowerFieldMoveUser(struct ScriptContext *ctx) { + u16 *var = GetVarPointer(ScriptReadHalfword(ctx)); + u16 userIndex = gFieldEffectArguments[0]; // field move user index + struct Pokemon *follower = GetFirstLiveMon(); + struct ObjectEvent *obj = GetFollowerObject(); + if (var == NULL) + return FALSE; + *var = FALSE; + if (follower && obj && !obj->invisible) { + u16 followIndex = ((u32)follower - (u32)gPlayerParty) / sizeof(struct Pokemon); + *var = userIndex == followIndex; + } else + return FALSE; +} + void SetTrainerMovementType(struct ObjectEvent *objectEvent, u8 movementType) { objectEvent->movementType = movementType; @@ -4727,10 +5819,13 @@ static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 u8 i; struct ObjectEvent *curObject; + if (objectEvent->localId == OBJ_EVENT_ID_FOLLOWER) + return FALSE; // follower cannot collide with other objects, but they can collide with it + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { curObject = &gObjectEvents[i]; - if (curObject->active && curObject != objectEvent) + if (curObject->active && (curObject->movementType != MOVEMENT_TYPE_FOLLOW_PLAYER || objectEvent != &gObjectEvents[gPlayerAvatar.objectEventId]) && curObject != objectEvent) { if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { @@ -5424,6 +6519,8 @@ enum { JUMP_TYPE_HIGH, JUMP_TYPE_LOW, JUMP_TYPE_NORMAL, + JUMP_TYPE_FAST, + JUMP_TYPE_FASTER, }; static void InitJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 distance, u8 type) @@ -5447,6 +6544,13 @@ static void InitJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 static void InitJumpRegular(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 distance, u8 type) { + // For follower only, match the anim duration of the player's movement, whether dashing, walking or jumping + if (objectEvent->localId == OBJ_EVENT_ID_FOLLOWER + && type == JUMP_TYPE_HIGH + && distance == JUMP_DISTANCE_FAR + // In some areas (i.e Meteor Falls), the player can jump as the follower jumps, so preserve type in this case + && PlayerGetCopyableMovement() != COPY_MOVE_JUMP2) + type = TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) ? JUMP_TYPE_FASTER : JUMP_TYPE_FAST; InitJump(objectEvent, sprite, direction, distance, type); SetStepAnimHandleAlternation(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); DoShadowFieldEffect(objectEvent); @@ -5534,7 +6638,7 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -5551,7 +6655,7 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -5568,7 +6672,7 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -5585,7 +6689,7 @@ bool8 MovementAction_Jump2Right_Step1(struct ObjectEvent *objectEvent, struct Sp { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -5737,6 +6841,150 @@ bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent, return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); } +// Copy and load objectEvent's palette, but set all opaque colors to white +static u8 LoadWhiteFlashPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + u16 paletteData[16]; + struct SpritePalette dynamicPalette = {.tag = OBJ_EVENT_PAL_TAG_NONE-1, .data = paletteData}; // TODO: Use a proper palette tag here + CpuFill16(RGB_WHITE, paletteData, 32); + return UpdateSpritePalette(&dynamicPalette, sprite); +} + +bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + u8 direction = gObjectEvents[gPlayerAvatar.objectEventId].facingDirection; + u16 graphicsId = objectEvent->graphicsId; + objectEvent->invisible = FALSE; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) { // If player is dashing, the pokemon must come out faster + StartSpriteAnimInDirection(objectEvent, sprite, direction, GetMoveDirectionFastestAnimNum(direction) + 4); + sprite->data[3] = 8; // duration + sprite->data[6] = 0; // fast speed + } else { + StartSpriteAnimInDirection(objectEvent, sprite, direction, GetMoveDirectionFastestAnimNum(direction)); + sprite->data[3] = 16; // duration + sprite->data[6] = 1; // slow speed + } + sprite->data[6] |= (direction == DIR_EAST ? 1 : 0) << 4; + ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); + objectEvent->graphicsId = graphicsId; + objectEvent->inanimate = FALSE; + return MovementAction_ExitPokeball_Step1(objectEvent, sprite); +} + +static const union AffineAnimCmd sAffineAnim_PokeballExit[] = +{ + AFFINEANIMCMD_FRAME(0x40, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xC0, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sAffineAnim_PokeballExitEast[] = // sprite is h-flipped when east +{ + AFFINEANIMCMD_FRAME(0xFFC0, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF40, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF00, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sAffineAnim_PokeballEnter[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xC0, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x40, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sAffineAnim_PokeballEnterEast[] = // sprtie is h-flipped when east +{ + AFFINEANIMCMD_FRAME(0xFF00, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF40, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFFC0, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sAffineAnims_PokeballFollower[] = +{ + sAffineAnim_PokeballExit, + sAffineAnim_PokeballExitEast, + sAffineAnim_PokeballEnter, + sAffineAnim_PokeballEnterEast, +}; + +bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 duration = sprite->data[6] & 0xF; + sprite->data[3]--; + if (sprite->data[3] == 0) + { + sprite->sActionFuncId = 2; + sprite->animCmdIndex = 0; + sprite->animPaused = TRUE; + return TRUE; + // Set graphics, palette, and affine animation + } else if ((duration == 0 && sprite->data[3] == 3) || (duration == 1 && sprite->data[3] == 7)) { + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny, FALSE); + LoadWhiteFlashPalette(objectEvent, sprite); + // Initialize affine animation + sprite->affineAnims = sAffineAnims_PokeballFollower; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + StartSpriteAffineAnim(sprite, sprite->data[6] >> 4); + // Restore original palette & disable affine + } else if ((duration == 0 && sprite->data[3] == 1) || (duration == 1 && sprite->data[3] == 3)) { + sprite->affineAnimEnded = TRUE; + FreeSpriteOamMatrix(sprite); + sprite->oam.affineMode = ST_OAM_AFFINE_OFF; + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny, TRUE); + } + return FALSE; +} + +bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + u8 direction = objectEvent->facingDirection; + StartSpriteAnimInDirection(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction)); + sprite->data[3] = 16; // duration + sprite->data[6] = direction == DIR_EAST ? 3 : 2; // affine animation number + EndFollowerTransformEffect(objectEvent, sprite); + return MovementAction_EnterPokeball_Step1(objectEvent, sprite); +} + +bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u16 graphicsId = objectEvent->graphicsId; + sprite->data[3]--; + if (sprite->data[3] == 0) { + sprite->data[2] = 2; + return FALSE; + } else if (sprite->data[3] == 11) { // Set palette to white & start affine + LoadWhiteFlashPalette(objectEvent, sprite); + sprite->affineAnims = sAffineAnims_PokeballFollower; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + StartSpriteAffineAnim(sprite, sprite->data[6]); + } else if (sprite->data[3] == 7) { // Free white palette and change to pokeball, disable affine + sprite->affineAnimEnded = TRUE; + FreeSpriteOamMatrix(sprite); + sprite->oam.affineMode = ST_OAM_AFFINE_OFF; + ObjectEventSetGraphicsId(objectEvent, OBJ_EVENT_GFX_ANIMATED_BALL); + objectEvent->graphicsId = graphicsId; + objectEvent->inanimate = FALSE; + } + return FALSE; +} + +bool8 MovementAction_EnterPokeball_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny, FALSE); + objectEvent->invisible = TRUE; + sprite->data[1] = 0; + sprite->data[6] = 0; + sprite->animPaused = TRUE; + return TRUE; +} + bool8 MovementAction_WalkInPlaceSlowUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32); @@ -6230,7 +7478,7 @@ bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Spri { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6247,7 +7495,7 @@ bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6264,7 +7512,7 @@ bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Spri { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6281,7 +7529,7 @@ bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Spr { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6298,7 +7546,7 @@ bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, stru { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6315,7 +7563,7 @@ bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6332,7 +7580,7 @@ bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, stru { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6349,7 +7597,7 @@ bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, str { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6366,7 +7614,7 @@ bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6383,7 +7631,7 @@ bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6400,7 +7648,7 @@ bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6417,7 +7665,7 @@ bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *objectEvent, { if (DoJumpInPlaceAnim(objectEvent, sprite)) { - objectEvent->hasShadow = 0; + objectEvent->noShadow = 0; sprite->sActionFuncId = 2; return TRUE; } @@ -6489,6 +7737,7 @@ bool8 MovementAction_EmoteExclamationMark_Step0(struct ObjectEvent *objectEvent, bool8 MovementAction_EmoteQuestionMark_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + gFieldEffectArguments[7] = -1; FieldEffectStart(FLDEFF_QUESTION_MARK_ICON); sprite->sActionFuncId = 1; return TRUE; @@ -6861,7 +8110,7 @@ bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEven { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6878,7 +8127,7 @@ bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6895,7 +8144,7 @@ bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEven { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6912,7 +8161,7 @@ bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEve { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6929,7 +8178,7 @@ bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, s { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6946,7 +8195,7 @@ bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, str { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6963,7 +8212,7 @@ bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, s { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6980,7 +8229,7 @@ bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -6997,7 +8246,7 @@ bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7014,7 +8263,7 @@ bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, st { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7031,7 +8280,7 @@ bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7048,7 +8297,7 @@ bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent, { if (DoJumpAnim(objectEvent, sprite)) { - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = FALSE; sprite->sActionFuncId = 2; return TRUE; } @@ -7872,18 +9121,21 @@ static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, st [TRACKS_NONE] = DoTracksGroundEffect_None, [TRACKS_FOOT] = DoTracksGroundEffect_Footprints, [TRACKS_BIKE_TIRE] = DoTracksGroundEffect_BikeTireTracks, + [TRACKS_SLITHER] = DoTracksGroundEffect_SlitherTracks, + [TRACKS_SPOT] = DoTracksGroundEffect_FootprintsC, + [TRACKS_BUG] = DoTracksGroundEffect_FootprintsB, }; void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); - sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, FALSE); + sGroundEffectTracksFuncs[objEvent->invisible ? TRACKS_NONE : info->tracks](objEvent, sprite, FALSE); } void GroundEffect_DeepSandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); - sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, TRUE); + sGroundEffectTracksFuncs[objEvent->invisible ? TRACKS_NONE : info->tracks](objEvent, sprite, TRUE); } static void DoTracksGroundEffect_None(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) @@ -7906,6 +9158,40 @@ static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct FieldEffectStart(sandFootprints_FieldEffectData[isDeepSand]); } +static void DoTracksGroundEffect_FootprintsB(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) +{ + // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) + u16 otherFootprintsA_FieldEffectData[2] = { + FLDEFF_TRACKS_SPOT, + FLDEFF_TRACKS_SPOT + }; + + gFieldEffectArguments[0] = objEvent->previousCoords.x; + gFieldEffectArguments[1] = objEvent->previousCoords.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = objEvent->facingDirection; + gFieldEffectArguments[5] = objEvent->previousMetatileBehavior; + FieldEffectStart(otherFootprintsA_FieldEffectData[a]); +} + +static void DoTracksGroundEffect_FootprintsC(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) +{ + // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) + u16 otherFootprintsB_FieldEffectData[2] = { + FLDEFF_TRACKS_BUG, + FLDEFF_TRACKS_BUG + }; + + gFieldEffectArguments[0] = objEvent->previousCoords.x; + gFieldEffectArguments[1] = objEvent->previousCoords.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = objEvent->facingDirection; + gFieldEffectArguments[5] = objEvent->previousMetatileBehavior; + FieldEffectStart(otherFootprintsB_FieldEffectData[a]); +} + static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) { // Specifies which bike track shape to show next. @@ -7933,6 +9219,34 @@ static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, st } } +static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) +{ + // Specifies which bike track shape to show next. + // For example, when the bike turns from up to right, it will show + // a track that curves to the right. + // Each 4-byte row corresponds to the initial direction of the bike, and + // each byte in that row is for the next direction of the bike in the order + // of down, up, left, right. + static const u8 slitherTracks_Transitions[4][4] = { + 1, 2, 7, 8, + 1, 2, 6, 5, + 5, 8, 3, 4, + 6, 7, 3, 4, + }; + + if (objEvent->currentCoords.x != objEvent->previousCoords.x || objEvent->currentCoords.y != objEvent->previousCoords.y) + { + gFieldEffectArguments[0] = objEvent->previousCoords.x; + gFieldEffectArguments[1] = objEvent->previousCoords.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = + slitherTracks_Transitions[objEvent->previousMovementDirection][objEvent->facingDirection - 5]; + gFieldEffectArguments[5] = objEvent->previousMetatileBehavior; + FieldEffectStart(FLDEFF_TRACKS_SLITHER); + } +} + void GroundEffect_Ripple(struct ObjectEvent *objEvent, struct Sprite *sprite) { DoRippleFieldEffect(objEvent, sprite); @@ -8045,16 +9359,21 @@ static void (*const sGroundEffectFuncs[])(struct ObjectEvent *objEvent, struct S GroundEffect_Seaweed // GROUND_EFFECT_FLAG_SEAWEED }; +static void GroundEffect_Shadow(struct ObjectEvent *objEvent, struct Sprite *sprite) { + SetUpShadow(objEvent, sprite); +} + static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite *sprite, u32 flags) { u8 i; - if (ObjectEventIsFarawayIslandMew(objEvent) == TRUE && !ShouldMewShakeGrass(objEvent)) return; for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1) if (flags & 1) sGroundEffectFuncs[i](objEvent, sprite); + if (!(gWeatherPtr->noShadows || objEvent->inHotSprings || objEvent->inSandPile || MetatileBehavior_IsPuddle(objEvent->currentMetatileBehavior))) + GroundEffect_Shadow(objEvent, sprite); } void filters_out_some_ground_effects(struct ObjectEvent *objEvent, u32 *flags) @@ -8468,7 +9787,16 @@ static u8 DoJumpSpriteMovement(struct Sprite *sprite) if (sprite->sDistance != JUMP_DISTANCE_IN_PLACE) Step1(sprite, sprite->sDirection); - sprite->y2 = GetJumpY(sprite->sTimer >> distanceToShift[sprite->sDistance], sprite->sJumpType); + if (sprite->sJumpType == JUMP_TYPE_FASTER) { + Step3(sprite, sprite->sDirection); + sprite->y2 = GetJumpY(sprite->sTimer >> distanceToShift[sprite->sDistance], JUMP_TYPE_NORMAL); + sprite->sTimer += 3; + } else if (sprite->sJumpType == JUMP_TYPE_FAST) { + Step1(sprite, sprite->sDirection); + sprite->y2 = GetJumpY(sprite->sTimer >> distanceToShift[sprite->sDistance], JUMP_TYPE_NORMAL); + sprite->sTimer++; + } else + sprite->y2 = GetJumpY(sprite->sTimer >> distanceToShift[sprite->sDistance], sprite->sJumpType); sprite->sTimer++; @@ -8621,7 +9949,7 @@ void TurnVirtualObject(u8 virtualObjId, u8 direction) StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(direction)); } -void SetVirtualObjectGraphics(u8 virtualObjId, u8 graphicsId) +void SetVirtualObjectGraphics(u8 virtualObjId, u16 graphicsId) { int spriteId = GetVirtualObjectSpriteId(virtualObjId); @@ -8630,10 +9958,12 @@ void SetVirtualObjectGraphics(u8 virtualObjId, u8 graphicsId) struct Sprite *sprite = &gSprites[spriteId]; const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); u16 tileNum = sprite->oam.tileNum; + u8 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag); + if (i != 0xFF) + UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); sprite->oam = *graphicsInfo->oam; sprite->oam.tileNum = tileNum; - sprite->oam.paletteNum = graphicsInfo->paletteSlot; sprite->images = graphicsInfo->images; if (graphicsInfo->subspriteTables == NULL) @@ -8760,9 +10090,9 @@ u32 StartFieldEffectForObjectEvent(u8 fieldEffectId, struct ObjectEvent *objectE static void DoShadowFieldEffect(struct ObjectEvent *objectEvent) { - if (!objectEvent->hasShadow) + if (objectEvent->noShadow) { - objectEvent->hasShadow = TRUE; + objectEvent->noShadow = FALSE; StartFieldEffectForObjectEvent(FLDEFF_SHADOW, objectEvent); } } @@ -8972,3 +10302,25 @@ u8 MovementAction_Fly_Finish(struct ObjectEvent *objectEvent, struct Sprite *spr { return TRUE; } + +// Get gfx data from daycare pokemon and store it in vars +bool8 ScrFunc_getdaycaregfx(struct ScriptContext *ctx) { + u16 varGfx[] = {ScriptReadHalfword(ctx), ScriptReadHalfword(ctx)}; + u16 varForm[] = {ScriptReadHalfword(ctx), ScriptReadHalfword(ctx)}; + u16 specGfx; + u8 form; + u8 shiny; + s32 i; + for (i = 0; i < 2; i++) { + GetMonInfo((struct Pokemon *) &gSaveBlock1Ptr->daycare.mons[i].mon, &specGfx, &form, &shiny); + if (specGfx == SPECIES_NONE) + break; + // Assemble gfx ID like FollowerSetGraphics + specGfx = (OBJ_EVENT_GFX_MON_BASE + specGfx) & OBJ_EVENT_GFX_SPECIES_MASK; + specGfx |= form << OBJ_EVENT_GFX_SPECIES_BITS; + VarSet(varGfx[i], specGfx); + VarSet(varForm[i], form | (shiny << 5)); + } + gSpecialVar_Result = i; + return FALSE; +} diff --git a/src/faraway_island.c b/src/faraway_island.c index 4f34cf30e..68be69d26 100755 --- a/src/faraway_island.c +++ b/src/faraway_island.c @@ -392,7 +392,7 @@ void SetMewAboveGrass(void) gSprites[mew->spriteId].subpriority = 1; LoadSpritePalette(&gSpritePalette_GeneralFieldEffect1); - UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(gSpritePalette_GeneralFieldEffect1.tag)); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(gSpritePalette_GeneralFieldEffect1.tag), FALSE); x = mew->currentCoords.x; y = mew->currentCoords.y; diff --git a/src/field_effect.c b/src/field_effect.c index ff230f6d5..9c8af89aa 100755 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -27,6 +27,7 @@ #include "trig.h" #include "util.h" #include "constants/field_effects.h" +#include "constants/event_objects.h" #include "constants/event_object_movement.h" #include "constants/metatile_behaviors.h" #include "constants/rgb.h" @@ -66,7 +67,6 @@ static void PokeballGlowEffect_WaitForSound(struct Sprite *); static void PokeballGlowEffect_Idle(struct Sprite *); static void SpriteCB_PokeballGlow(struct Sprite *); -static void FieldCallback_UseFly(void); static void Task_UseFly(u8); static void FieldCallback_FlyIntoMap(void); static void Task_FlyIntoMap(u8); @@ -782,7 +782,7 @@ void FieldEffectScript_LoadFadedPalette(u8 **script) { struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); LoadSpritePalette(palette); - UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag), TRUE); (*script) += 4; } @@ -925,8 +925,10 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority) u8 CreateMonSprite_FieldMove(u16 species, u32 otId, u32 personality, s16 x, s16 y, u8 subpriority) { const struct CompressedSpritePalette *spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); - u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, x, y, 0, spritePalette->tag); - PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10); + // force load unique tag here to avoid collision with follower pokemon + u8 paletteSlot = AllocSpritePalette(FLDEFF_PAL_TAG_FIELD_MOVE_MON); + u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, x, y, paletteSlot, TAG_NONE); + PreservePaletteInWeather(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_FIELD_MOVE_MON) + 0x10); if (spriteId == 0xFFFF) return MAX_SPRITES; else @@ -935,12 +937,14 @@ u8 CreateMonSprite_FieldMove(u16 species, u32 otId, u32 personality, s16 x, s16 void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId) { + u8 paletteNum = sprite->oam.paletteNum; ResetPreservedPalettesInWeather(); if (sprite->oam.affineMode != ST_OAM_AFFINE_OFF) { FreeOamMatrix(sprite->oam.matrixNum); } - FreeAndDestroyMonPicSprite(spriteId); + FreeAndDestroyMonPicSpriteNoPalette(spriteId); + FieldEffectFreePaletteIfUnused(paletteNum); // Clear palette only if unused, in case follower is using it } // r, g, b are between 0 and 16 @@ -1340,10 +1344,10 @@ static void SpriteCB_HallOfFameMonitor(struct Sprite *sprite) void ReturnToFieldFromFlyMapSelect(void) { SetMainCallback2(CB2_ReturnToField); - gFieldCallback = FieldCallback_UseFly; + gFieldCallback = FieldCallback_Fly; } -static void FieldCallback_UseFly(void) +void FieldCallback_Fly(void) { FadeInFromBlack(); CreateTask(Task_UseFly, 0); @@ -1560,6 +1564,14 @@ static bool8 FallWarpEffect_End(struct Task *task) #define tState data[0] #define tGoingUp data[1] +static void HideFollowerForFieldEffect(void) { + struct ObjectEvent *followerObj = GetFollowerObject(); + if (!followerObj || followerObj->invisible) + return; + ClearObjectEventMovement(followerObj, &gSprites[followerObj->spriteId]); + ObjectEventSetHeldMovement(followerObj, MOVEMENT_ACTION_ENTER_POKEBALL); +} + void StartEscalatorWarp(u8 metatileBehavior, u8 priority) { u8 taskId; @@ -1583,6 +1595,7 @@ static bool8 EscalatorWarpOut_Init(struct Task *task) FreezeObjectEvents(); CameraObjectReset2(); StartEscalator(task->tGoingUp); + HideFollowerForFieldEffect(); // Hide follower before warping task->tState++; return FALSE; } @@ -1594,6 +1607,7 @@ static bool8 EscalatorWarpOut_WaitForPlayer(struct Task *task) if (!ObjectEventIsMovementOverridden(objectEvent) || ObjectEventClearHeldMovementIfFinished(objectEvent)) { ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetPlayerFacingDirection())); + objectEvent->noShadow = TRUE; // hide shadow for cleaner movement task->tState++; task->data[2] = 0; task->data[3] = 0; @@ -1715,6 +1729,7 @@ static bool8 EscalatorWarpIn_Init(struct Task *task) u8 behavior; CameraObjectReset2(); objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + objectEvent->noShadow = TRUE; ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(DIR_EAST)); PlayerGetDestCoords(&x, &y); behavior = MapGridGetMetatileBehaviorAt(x, y); @@ -1811,6 +1826,7 @@ static bool8 EscalatorWarpIn_End(struct Task *task) { struct ObjectEvent *objectEvent; objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + objectEvent->noShadow = FALSE; if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { CameraObjectReset1(); @@ -1963,8 +1979,11 @@ static bool8 LavaridgeGymB1FWarpEffect_Init(struct Task *task, struct ObjectEven SetCameraPanningCallback(NULL); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; + objectEvent->noShadow = TRUE; task->data[1] = 1; task->data[0]++; + if (objectEvent->localId == OBJ_EVENT_ID_PLAYER) // Hide follower before warping + HideFollowerForFieldEffect(); return TRUE; } @@ -2155,7 +2174,10 @@ static bool8 LavaridgeGym1FWarpEffect_Init(struct Task *task, struct ObjectEvent CameraObjectReset2(); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; + objectEvent->noShadow = TRUE; task->data[0]++; + if (objectEvent->localId == OBJ_EVENT_ID_PLAYER) // Hide follower before warping + HideFollowerForFieldEffect(); return FALSE; } @@ -2241,6 +2263,7 @@ void StartEscapeRopeFieldEffect(void) { LockPlayerFieldControls(); FreezeObjectEvents(); + HideFollowerForFieldEffect(); // hide follower before warping CreateTask(Task_EscapeRopeWarpOut, 80); } @@ -3005,6 +3028,8 @@ static void SurfFieldEffect_Init(struct Task *task) { LockPlayerFieldControls(); FreezeObjectEvents(); + // Put follower into pokeball before using Surf + HideFollowerForFieldEffect(); gPlayerAvatar.preventStep = TRUE; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING); PlayerGetDestCoords(&task->tDestX, &task->tDestY); @@ -3055,13 +3080,15 @@ static void SurfFieldEffect_JumpOnSurfBlob(struct Task *task) static void SurfFieldEffect_End(struct Task *task) { - struct ObjectEvent *objectEvent; - objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *followerObject = GetFollowerObject(); if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { gPlayerAvatar.preventStep = FALSE; gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_CONTROLLABLE; ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection)); + if (followerObject) + ObjectEventClearHeldMovementIfFinished(followerObject); SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_PLAYER_AND_MON); UnfreezeObjectEvents(); UnlockPlayerFieldControls(); @@ -3082,7 +3109,7 @@ u8 FldEff_RayquazaSpotlight(void) struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; - sprite->oam.paletteNum = 4; + sprite->oam.paletteNum = 4; // TODO: What (dynamic) palette should this Raquaza use? sprite->data[0] = 0; sprite->data[1] = 0; sprite->data[2] = 0; @@ -3117,10 +3144,10 @@ u8 FldEff_NPCFlyOut(void) u8 spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0x78, 0, 1); struct Sprite *sprite = &gSprites[spriteId]; - sprite->oam.paletteNum = 0; sprite->oam.priority = 1; sprite->callback = SpriteCB_NPCFlyOut; sprite->data[1] = gFieldEffectArguments[0]; + sprite->oam.paletteNum = LoadObjectEventPalette(gSaveBlock2Ptr->playerGender ? FLDEFF_PAL_TAG_MAY : FLDEFF_PAL_TAG_BRENDAN); PlaySE(SE_M_FLY); return spriteId; } @@ -3268,7 +3295,7 @@ static void FlyOutFieldEffect_FlyOffWithBird(struct Task *task) struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; ObjectEventClearHeldMovementIfActive(objectEvent); objectEvent->inanimate = FALSE; - objectEvent->hasShadow = FALSE; + objectEvent->noShadow = TRUE; // TODO: Make shadow smaller instead of disappearing completely ? SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId); CameraObjectReset2(); task->tState++; @@ -3299,9 +3326,9 @@ static u8 CreateFlyBirdSprite(void) struct Sprite *sprite; spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0xff, 0xb4, 0x1); sprite = &gSprites[spriteId]; - sprite->oam.paletteNum = 0; sprite->oam.priority = 1; sprite->callback = SpriteCB_FlyBirdLeaveBall; + sprite->oam.paletteNum = LoadObjectEventPalette(gSaveBlock2Ptr->playerGender ? FLDEFF_PAL_TAG_MAY : FLDEFF_PAL_TAG_BRENDAN); return spriteId; } @@ -3489,6 +3516,7 @@ static void FlyInFieldEffect_BirdSwoopDown(struct Task *task) ObjectEventTurn(objectEvent, DIR_WEST); StartSpriteAnim(&gSprites[objectEvent->spriteId], ANIM_GET_ON_OFF_POKEMON_WEST); objectEvent->invisible = FALSE; + objectEvent->noShadow = TRUE; task->tBirdSpriteId = CreateFlyBirdSprite(); StartFlyBirdSwoopDown(task->tBirdSpriteId); SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9421aaf27..01fbc9140 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -7,18 +7,23 @@ #include "fieldmap.h" #include "gpu_regs.h" #include "metatile_behavior.h" +#include "palette.h" #include "sound.h" #include "sprite.h" #include "trig.h" +#include "constants/event_objects.h" #include "constants/field_effects.h" #include "constants/songs.h" #define OBJ_EVENT_PAL_TAG_NONE 0x11FF // duplicate of define in event_object_movement.c +#define PAL_TAG_REFLECTION_OFFSET 0x2000 // reflection tag value is paletteTag + 0x2000 +#define PAL_RAW_REFLECTION_OFFSET 0x4000 // raw reflection tag is paletteNum + 0x4000 static void UpdateObjectReflectionSprite(struct Sprite *); static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *, u8); -static void LoadObjectRegularReflectionPalette(struct ObjectEvent *, u8); +static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *, struct Sprite *sprite); +static void LoadObjectRegularReflectionPalette(struct ObjectEvent *, struct Sprite *); + static void UpdateGrassFieldEffectSubpriority(struct Sprite *, u8, u8); static void FadeFootprintsTireTracks_Step0(struct Sprite *); static void FadeFootprintsTireTracks_Step1(struct Sprite *); @@ -31,6 +36,7 @@ static void SynchroniseSurfPosition(struct ObjectEvent *, struct Sprite *); static void UpdateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sprite *); static void SpriteCB_UnderwaterSurfBlob(struct Sprite *); static u32 ShowDisguiseFieldEffect(u8, u8, u8); +u32 FldEff_Shadow(void); // Used by several field effects to determine which of a group it is #define sFldEff data[1] @@ -40,6 +46,13 @@ static u32 ShowDisguiseFieldEffect(u8, u8, u8); #define sReflectionVerticalOffset data[2] #define sIsStillReflection data[7] +void SetUpShadow(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + gFieldEffectArguments[0] = objectEvent->localId; + gFieldEffectArguments[1] = gSaveBlock1Ptr->location.mapNum; + gFieldEffectArguments[2] = gSaveBlock1Ptr->location.mapGroup; + FldEff_Shadow(); +} + void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, bool8 stillReflection) { struct Sprite *reflectionSprite; @@ -47,7 +60,6 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 0x98)]; reflectionSprite->callback = UpdateObjectReflectionSprite; reflectionSprite->oam.priority = 3; - reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum]; reflectionSprite->usingSheet = TRUE; reflectionSprite->anims = gDummySpriteAnimTable; StartSpriteAnim(reflectionSprite, 0); @@ -81,87 +93,155 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct && ((bridgeType = MetatileBehavior_GetBridgeType(objectEvent->previousMetatileBehavior)) || (bridgeType = MetatileBehavior_GetBridgeType(objectEvent->currentMetatileBehavior)))) { - reflectionSprite->sReflectionVerticalOffset = bridgeReflectionVerticalOffsets[bridgeType - 1]; - LoadObjectHighBridgeReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum); + reflectionSprite->data[2] = bridgeReflectionVerticalOffsets[bridgeType - 1]; + LoadObjectHighBridgeReflectionPalette(objectEvent, reflectionSprite); } else { - LoadObjectRegularReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum); + LoadObjectRegularReflectionPalette(objectEvent, reflectionSprite); } } -static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteIndex) +// Apply a blue tint effect to a palette +static void ApplyPondFilter(u8 paletteNum, u16 *dest) { + u8 i; + s32 r, g, b; + u16 *src = gPlttBufferUnfaded + 0x100 + paletteNum * 16; + for (i = 0; i < 16; i++) { + u32 color = *src++; + r = (color << 27) >> 27; + g = (color << 22) >> 27; + b = (color << 17) >> 27; + b += 10; + if (b > 31) + b = 31; + *dest++ = r | (g << 5) | (b << 10); + } +} + +// Apply a ice tint effect to a palette +static void ApplyIceFilter(u8 paletteNum, u16 *dest) { + u8 i; + s32 r, g, b; + u16 *src = gPlttBufferUnfaded + 0x100 + paletteNum * 16; + for (i = 0; i < 16; i++) { + u32 color = *src++; + r = (color << 27) >> 27; + g = (color << 22) >> 27; + b = (color << 17) >> 27; + r -= 5; + if (r < 0) + r = 0; + g += 3; + if (g > 31) + g = 31; + b += 16; + if (b > 31) + b = 31; + *dest++ = r | (g << 5) | (b << 10); + } +} + +static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - const struct ObjectEventGraphicsInfo *graphicsInfo; - - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) - { - if (graphicsInfo->paletteSlot == PALSLOT_PLAYER) - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex); - else if (graphicsInfo->paletteSlot == PALSLOT_NPC_SPECIAL) - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex); - else - PatchObjectPalette(GetObjectPaletteTag(paletteIndex), paletteIndex); - UpdateSpritePaletteWithWeather(paletteIndex); + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + const struct Sprite *mainSprite = &gSprites[objectEvent->spriteId]; + u16 baseTag = GetSpritePaletteTagByPaletteNum(mainSprite->oam.paletteNum); + u16 paletteTag = baseTag == 0xFFFF ? mainSprite->oam.paletteNum + PAL_RAW_REFLECTION_OFFSET : baseTag + PAL_TAG_REFLECTION_OFFSET; + u8 paletteNum = IndexOfSpritePaletteTag(paletteTag); + if (paletteNum == 0xFF) { // Load filtered palette + u16 filteredData[16] = {0}; + struct SpritePalette filteredPalette = {.tag = paletteTag, .data = filteredData}; + if (sprite->data[7] == FALSE) { + ApplyPondFilter(mainSprite->oam.paletteNum, filteredData); + } else { + ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); + } + paletteNum = LoadSpritePalette(&filteredPalette); + UpdateSpritePaletteWithWeather(paletteNum, TRUE); } + sprite->oam.paletteNum = paletteNum; + sprite->oam.objMode = 1; // Alpha blending } +#define HIGH_BRIDGE_PAL_TAG 0x4010 + // When walking on a bridge high above water (Route 120), the reflection is a solid dark blue color. // This is so the sprite blends in with the dark water metatile underneath the bridge. -static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteNum) +static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - const struct ObjectEventGraphicsInfo *graphicsInfo; - - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) - { - PatchObjectPalette(graphicsInfo->reflectionPaletteTag, paletteNum); - UpdateSpritePaletteWithWeather(paletteNum); + u16 blueData[16] = {0}; + struct SpritePalette bluePalette = {.tag = HIGH_BRIDGE_PAL_TAG, .data = blueData}; + u8 i; + for (i = 1; i < 16; i++) { + blueData[i] = 0x55c9; } + sprite->oam.paletteNum = LoadSpritePalette(&bluePalette); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum, TRUE); } static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) { - struct ObjectEvent *objectEvent; - struct Sprite *mainSprite; + struct ObjectEvent *objectEvent = &gObjectEvents[reflectionSprite->data[0]]; + struct Sprite *mainSprite = &gSprites[objectEvent->spriteId]; - objectEvent = &gObjectEvents[reflectionSprite->sReflectionObjEventId]; - mainSprite = &gSprites[objectEvent->spriteId]; - if (!objectEvent->active || !objectEvent->hasReflection || objectEvent->localId != reflectionSprite->sReflectionObjEventLocalId) + if (!objectEvent->active || !objectEvent->hasReflection || objectEvent->localId != reflectionSprite->data[1]) { reflectionSprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(reflectionSprite->oam.paletteNum); + return; } - else - { - reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[mainSprite->oam.paletteNum]; - reflectionSprite->oam.shape = mainSprite->oam.shape; - reflectionSprite->oam.size = mainSprite->oam.size; - reflectionSprite->oam.matrixNum = mainSprite->oam.matrixNum | ST_OAM_VFLIP; - reflectionSprite->oam.tileNum = mainSprite->oam.tileNum; - reflectionSprite->subspriteTables = mainSprite->subspriteTables; - reflectionSprite->subspriteTableNum = mainSprite->subspriteTableNum; - reflectionSprite->invisible = mainSprite->invisible; - reflectionSprite->x = mainSprite->x; - reflectionSprite->y = mainSprite->y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset; - reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX; - reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY; - reflectionSprite->x2 = mainSprite->x2; - reflectionSprite->y2 = -mainSprite->y2; - reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled; - if (objectEvent->hideReflection == TRUE) - reflectionSprite->invisible = TRUE; - - if (reflectionSprite->sIsStillReflection == FALSE) - { - // Sets the reflection sprite's rot/scale matrix to the appropriate - // matrix based on whether or not the main sprite is horizontally flipped. - // If the sprite is facing to the east, then it is flipped, and its matrixNum is 8. - reflectionSprite->oam.matrixNum = 0; - if (mainSprite->oam.matrixNum & ST_OAM_HFLIP) - reflectionSprite->oam.matrixNum = 1; + // Only filter palette if not using the high bridge blue palette + if (IndexOfSpritePaletteTag(HIGH_BRIDGE_PAL_TAG) != reflectionSprite->oam.paletteNum) { + u16 baseTag = GetSpritePaletteTagByPaletteNum(mainSprite->oam.paletteNum); + u16 paletteTag = baseTag == 0xFFFF ? mainSprite->oam.paletteNum + PAL_RAW_REFLECTION_OFFSET : baseTag + PAL_TAG_REFLECTION_OFFSET; + u8 paletteNum = IndexOfSpritePaletteTag(paletteTag); + if (paletteNum == 0xFF) { // Build filtered palette + u16 filteredData[16] = {0}; + struct SpritePalette filteredPalette = {.tag = paletteTag, .data = filteredData}; + // Free palette if unused + reflectionSprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(reflectionSprite->oam.paletteNum); + reflectionSprite->inUse = TRUE; + if (reflectionSprite->data[7] == FALSE) { + ApplyPondFilter(mainSprite->oam.paletteNum, filteredData); + } else { + ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); } + paletteNum = LoadSpritePalette(&filteredPalette); + UpdateSpritePaletteWithWeather(paletteNum, TRUE); + } + reflectionSprite->oam.paletteNum = paletteNum; + } + reflectionSprite->oam.shape = mainSprite->oam.shape; + reflectionSprite->oam.size = mainSprite->oam.size; + reflectionSprite->oam.matrixNum = mainSprite->oam.matrixNum | ST_OAM_VFLIP; + reflectionSprite->oam.tileNum = mainSprite->oam.tileNum; + reflectionSprite->subspriteTables = mainSprite->subspriteTables; + reflectionSprite->subspriteTableNum = mainSprite->subspriteTableNum; + reflectionSprite->invisible = mainSprite->invisible; + reflectionSprite->x = mainSprite->x; + // reflectionSprite->data[2] holds an additional vertical offset, used by the high bridges on Route 120 + reflectionSprite->y = mainSprite->y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->data[2]; + reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX; + reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY; + reflectionSprite->x2 = mainSprite->x2; + reflectionSprite->y2 = -mainSprite->y2; + reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled; + + if (objectEvent->hideReflection == TRUE) + reflectionSprite->invisible = TRUE; + + // Check if the reflection is not still. + if (reflectionSprite->data[7] == FALSE) + { + // Sets the reflection sprite's rot/scale matrix to the appropriate + // matrix based on whether or not the main sprite is horizontally flipped. + // If the sprite is facing to the east, then it is flipped, and its matrixNum is 8. + reflectionSprite->oam.matrixNum = 0; + if (mainSprite->oam.matrixNum & ST_OAM_HFLIP) + reflectionSprite->oam.matrixNum = 1; } } @@ -181,6 +261,8 @@ u8 CreateWarpArrowSprite(void) if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; + // Can use either gender's palette, so try to use the one that should be loaded + sprite->oam.paletteNum = LoadObjectEventPalette(gSaveBlock2Ptr->playerGender ? FLDEFF_PAL_TAG_MAY : FLDEFF_PAL_TAG_BRENDAN); sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; sprite->invisible = TRUE; @@ -232,12 +314,22 @@ u32 FldEff_Shadow(void) u8 objectEventId; const struct ObjectEventGraphicsInfo *graphicsInfo; u8 spriteId; - + s32 i; + for (i = MAX_SPRITES - 1; i > -1; i--) { // Search backwards, because of CreateSpriteAtEnd + // Return early if a shadow sprite already exists + if (gSprites[i].data[0] == gFieldEffectArguments[0] && gSprites[i].callback == UpdateShadowFieldEffect) + return 0; + } objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94); + if (graphicsInfo->shadowSize == SHADOW_SIZE_NONE) // don't create a shadow at all + return 0; + LoadSpriteSheetByTemplate(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94 + 1); // higher = farther back; shadows should be behind object events if (spriteId != MAX_SPRITES) { + // SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 12)); + gSprites[spriteId].oam.objMode = 1; // BLEND gSprites[spriteId].coordOffsetEnabled = TRUE; gSprites[spriteId].data[0] = gFieldEffectArguments[0]; gSprites[spriteId].data[1] = gFieldEffectArguments[1]; @@ -264,12 +356,16 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) sprite->oam.priority = linkedSprite->oam.priority; sprite->x = linkedSprite->x; sprite->y = linkedSprite->y + sprite->data[3]; - if (!objectEvent->active || !objectEvent->hasShadow + sprite->invisible = linkedSprite->invisible; + if (!objectEvent->active + || objectEvent->noShadow + || objectEvent->inHotSprings + || objectEvent->inSandPile + || gWeatherPtr->noShadows || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) + || MetatileBehavior_IsPuddle(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) - || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->previousMetatileBehavior) - || MetatileBehavior_IsReflective(objectEvent->currentMetatileBehavior) - || MetatileBehavior_IsReflective(objectEvent->previousMetatileBehavior)) + || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->previousMetatileBehavior)) { FieldEffectStop(sprite, FLDEFF_SHADOW); } @@ -597,6 +693,42 @@ u32 FldEff_DeepSandFootprints(void) return spriteId; } +u32 FldEff_TracksBug(void) +{ + u8 spriteId; + struct Sprite *sprite; + + SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TRACKS_BUG], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data[7] = FLDEFF_TRACKS_BUG; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return 0; +} + +u32 FldEff_TracksSpot(void) +{ + u8 spriteId; + struct Sprite *sprite; + + SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TRACKS_SPOT], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data[7] = FLDEFF_TRACKS_SPOT; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return 0; +} + u32 FldEff_BikeTireTracks(void) { u8 spriteId; @@ -615,6 +747,24 @@ u32 FldEff_BikeTireTracks(void) return spriteId; } +u32 FldEff_TracksSlither(void) +{ + u8 spriteId; + struct Sprite *sprite; + + SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TRACKS_SLITHER], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data[7] = FLDEFF_TRACKS_SLITHER; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return spriteId; +} + void (*const gFadeFootprintsTireTracksFuncs[])(struct Sprite *) = { FadeFootprintsTireTracks_Step0, FadeFootprintsTireTracks_Step1 @@ -1014,8 +1164,9 @@ u32 FldEff_SurfBlob(void) { sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.paletteNum = 0; sprite->tPlayerObjId = gFieldEffectArguments[2]; + // Can use either gender's palette, so try to use the one that should be loaded + sprite->oam.paletteNum = LoadObjectEventPalette(gSaveBlock2Ptr->playerGender ? FLDEFF_PAL_TAG_MAY : FLDEFF_PAL_TAG_BRENDAN); sprite->data[3] = -1; sprite->data[6] = -1; sprite->data[7] = -1; @@ -1297,7 +1448,7 @@ u32 FldEff_BerryTreeGrowthSparkle(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->oam.paletteNum = 5; + UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], sprite); sprite->data[0] = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } return 0; @@ -1339,8 +1490,8 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) if (spriteId != MAX_SPRITES) { sprite = &gSprites[spriteId]; + sprite->oam.paletteNum = LoadObjectEventPalette(gFieldEffectObjectTemplatePointers[fldEffObj]->paletteTag); sprite->coordOffsetEnabled ++; - sprite->oam.paletteNum = paletteNum; sprite->sFldEff = fldEff; sprite->sLocalId = gFieldEffectArguments[0]; sprite->sMapNum = gFieldEffectArguments[1]; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 25debf7e4..51fda6591 100755 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -1234,50 +1234,32 @@ void StopPlayerAvatar(void) } } -u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) +u16 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) { return sRivalAvatarGfxIds[state][gender]; } -u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) +u16 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) { return sPlayerAvatarGfxIds[state][gender]; } -u8 GetFRLGAvatarGraphicsIdByGender(u8 gender) +u16 GetFRLGAvatarGraphicsIdByGender(u8 gender) { return sFRLGAvatarGfxIds[gender]; } -u8 GetRSAvatarGraphicsIdByGender(u8 gender) +u16 GetRSAvatarGraphicsIdByGender(u8 gender) { return sRSAvatarGfxIds[gender]; } -u8 GetPlayerAvatarGraphicsIdByStateId(u8 state) +u16 GetPlayerAvatarGraphicsIdByStateId(u8 state) { return GetPlayerAvatarGraphicsIdByStateIdAndGender(state, gPlayerAvatar.gender); } -u8 unref_GetRivalAvatarGenderByGraphicsId(u8 gfxId) -{ - switch (gfxId) - { - case OBJ_EVENT_GFX_RIVAL_MAY_NORMAL: - case OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE: - case OBJ_EVENT_GFX_RIVAL_MAY_ACRO_BIKE: - case OBJ_EVENT_GFX_RIVAL_MAY_SURFING: - case OBJ_EVENT_GFX_RIVAL_MAY_FIELD_MOVE: - case OBJ_EVENT_GFX_MAY_UNDERWATER: - case OBJ_EVENT_GFX_MAY_FISHING: - case OBJ_EVENT_GFX_MAY_WATERING: - return FEMALE; - default: - return MALE; - } -} - -u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId) +u16 GetPlayerAvatarGenderByGraphicsId(u16 gfxId) { switch (gfxId) { @@ -1348,7 +1330,7 @@ void SetPlayerAvatarStateMask(u8 flags) gPlayerAvatar.flags |= flags; } -static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) +static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) { u8 i; @@ -1360,7 +1342,7 @@ static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) return PLAYER_AVATAR_FLAG_ON_FOOT; } -u8 GetPlayerAvatarGraphicsIdByCurrentState(void) +u16 GetPlayerAvatarGraphicsIdByCurrentState(void) { u8 i; u8 flags = gPlayerAvatar.flags; @@ -1373,7 +1355,7 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void) return 0; } -void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 transitionFlag) +void SetPlayerAvatarExtraStateTransition(u16 graphicsId, u8 transitionFlag) { u8 stateFlag = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender); diff --git a/src/field_poison.c b/src/field_poison.c index 3026a38db..f1e304915 100755 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -3,6 +3,7 @@ #include "battle_pike.h" #include "battle_pyramid.h" #include "event_data.h" +#include "event_object_movement.h" #include "field_message_box.h" #include "field_poison.h" #include "fldeff_misc.h" @@ -101,6 +102,7 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId) else { gSpecialVar_Result = FLDPSN_NO_WHITEOUT; + UpdateFollowingPokemon(); } ScriptContext_Enable(); DestroyTask(taskId); diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 616444116..c3a34bc60 100755 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -679,6 +679,7 @@ static void Task_DoDoorWarp(u8 taskId) struct Task *task = &gTasks[taskId]; s16 *x = &task->data[2]; s16 *y = &task->data[3]; + struct ObjectEvent *followerObject = GetFollowerObject(); switch (task->tState) { @@ -686,6 +687,10 @@ static void Task_DoDoorWarp(u8 taskId) FreezeObjectEvents(); PlayerGetDestCoords(x, y); PlaySE(GetDoorSoundEffect(*x, *y - 1)); + if (followerObject) { // Put follower into pokeball + ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); + ObjectEventSetHeldMovement(followerObject, MOVEMENT_ACTION_ENTER_POKEBALL); + } task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); task->tState = 1; break; @@ -1132,6 +1137,7 @@ static void Task_OrbEffect(u8 taskId) ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); SetGpuRegBits(REG_OFFSET_BLDCNT, gOrbEffectBackgroundLayerFlags[0]); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 7)); + UpdateShadowColor(0x2109); // force shadows to gray SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ); SetBgTilemapPalette(0, 0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT, 0xF); @@ -1162,6 +1168,9 @@ static void Task_OrbEffect(u8 taskId) tState = 4; break; case 4: + // If the caller script is delayed after starting the orb effect, a `waitstate` might be reached *after* + // we enable the ScriptContext in case 2; enabling it here as well avoids softlocks in this scenario + ScriptContext_Enable(); if (--tShakeDelay == 0) { s32 panning; @@ -1196,6 +1205,7 @@ static void Task_OrbEffect(u8 taskId) SetGpuReg(REG_OFFSET_DISPCNT, tDispCnt); SetGpuReg(REG_OFFSET_BLDCNT, tBldCnt); SetGpuReg(REG_OFFSET_BLDALPHA, tBldAlpha); + UpdateShadowColor(RGB_BLACK); // force shadows to gray SetGpuReg(REG_OFFSET_WININ, tWinIn); SetGpuReg(REG_OFFSET_WINOUT, tWinOut); ScriptContext_Enable(); diff --git a/src/field_specials.c b/src/field_specials.c index ddf481abc..19e2b3c08 100755 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -104,7 +104,7 @@ void SetPlayerGotFirstFans(void); u16 GetNumFansOfPlayerInTrainerFanClub(void); static void RecordCyclingRoadResults(u32, u8); -static void LoadLinkPartnerObjectEventSpritePalette(u8, u8, u8); +static void LoadLinkPartnerObjectEventSpritePalette(u16, u8, u8); static void Task_PetalburgGymSlideOpenRoomDoors(u8); static void PetalburgGymSetDoorMetatiles(u8, u16); static void Task_PCTurnOnEffect(u8); @@ -577,7 +577,7 @@ void SpawnLinkPartnerObjectEvent(void) } } -static void LoadLinkPartnerObjectEventSpritePalette(u8 graphicsId, u8 localEventId, u8 paletteNum) +static void LoadLinkPartnerObjectEventSpritePalette(u16 graphicsId, u8 localEventId, u8 paletteNum) { u8 adjustedPaletteNum; // Note: This temp var is necessary; paletteNum += 6 doesn't match. @@ -3054,7 +3054,8 @@ static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused) case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2: case SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR: case SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR: - DestroySpriteAndFreeResources(&gSprites[sScrollableMultichoice_ItemSpriteId]); + // This makes sure deleting the icon will not clear palettes in use by object events + FieldEffectFreeGraphicsResources(&gSprites[sScrollableMultichoice_ItemSpriteId]); break; } sScrollableMultichoice_ItemSpriteId = MAX_SPRITES; diff --git a/src/field_weather.c b/src/field_weather.c index 2b0210b56..95d6882fd 100755 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -17,6 +17,7 @@ #include "trig.h" #include "gpu_regs.h" #include "field_camera.h" +#include "overworld.h" #define DROUGHT_COLOR_INDEX(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) @@ -134,15 +135,15 @@ static const u8 sBasePaletteColorMapTypes[32] = // sprite palettes COLOR_MAP_CONTRAST, COLOR_MAP_DARK_CONTRAST, - COLOR_MAP_CONTRAST, - COLOR_MAP_CONTRAST, - COLOR_MAP_CONTRAST, - COLOR_MAP_CONTRAST, COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, - COLOR_MAP_CONTRAST, + COLOR_MAP_DARK_CONTRAST, + COLOR_MAP_DARK_CONTRAST, + COLOR_MAP_DARK_CONTRAST, + COLOR_MAP_DARK_CONTRAST, + COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, @@ -160,7 +161,7 @@ void StartWeather(void) CpuCopy32(gFogPalette, &gPlttBufferUnfaded[0x100 + index * 16], 32); BuildColorMaps(); gWeatherPtr->contrastColorMapSpritePalIndex = index; - gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(PALTAG_WEATHER_2); + gWeatherPtr->weatherPicSpritePalIndex = 0xFF; // defer allocation until needed gWeatherPtr->rainSpriteCount = 0; gWeatherPtr->curRainSpriteIndex = 0; gWeatherPtr->cloudSpritesCreated = 0; @@ -251,6 +252,8 @@ static void Task_WeatherMain(u8 taskId) static void None_Init(void) { + Weather_SetBlendCoeffs(8, 12); // Indoor shadows + gWeatherPtr->noShadows = FALSE; gWeatherPtr->targetColorMapIndex = 0; gWeatherPtr->colorMapStepDelay = 0; } @@ -472,18 +475,31 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) if (colorMapIndex > 0) { + // Create the palette mask + u32 palettes = PALETTES_ALL; + numPalettes += startPalIndex; + palettes = (palettes >> startPalIndex) << startPalIndex; + palettes = (palettes << (32-numPalettes)) >> (32-numPalettes); + numPalettes -= startPalIndex; colorMapIndex--; palOffset = startPalIndex * 16; + UpdateAltBgPalettes(palettes & PALETTES_BG); + // Thunder gamma-shift looks bad on night-blended palettes, so ignore time blending in some situations + if (!(colorMapIndex > 3) && MapHasNaturalLight(gMapHeader.mapType)) + UpdatePalettesWithTime(palettes); + else + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 32 * numPalettes); numPalettes += startPalIndex; curPalIndex = startPalIndex; // Loop through the specified palette range and apply necessary color maps. while (curPalIndex < numPalettes) { - if (sPaletteColorMapTypes[curPalIndex] == COLOR_MAP_NONE) + // don't blend special palettes immune to blending + if (sPaletteColorMapTypes[curPalIndex] == COLOR_MAP_NONE || + (curPalIndex >= 16 && GetSpritePaletteTagByPaletteNum(curPalIndex - 16) >> 15)) { // No palette change. - CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); palOffset += 16; } else @@ -498,7 +514,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) for (i = 0; i < 16; i++) { // Apply color map to the original color. - struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferFaded[palOffset]; r = colorMap[baseColor.r]; g = colorMap[baseColor.g]; b = colorMap[baseColor.b]; @@ -539,8 +555,13 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) } else { - // No palette blending. - CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); + if (MapHasNaturalLight(gMapHeader.mapType)) { // Time-blend + u32 palettes = ((1 << numPalettes) - 1) << startPalIndex; + UpdateAltBgPalettes(palettes & PALETTES_BG); + UpdatePalettesWithTime(palettes); + } else { // copy + CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); + } } } @@ -561,10 +582,13 @@ static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMap while (curPalIndex < numPalettes) { + UpdateAltBgPalettes((1 << (palOffset >> 4)) & PALETTES_BG); + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); + UpdatePalettesWithTime(1 << (palOffset >> 4)); // Apply TOD blend if (sPaletteColorMapTypes[curPalIndex] == COLOR_MAP_NONE) { // No color map. Simply blend the colors. - BlendPalette(palOffset, 16, blendCoeff, blendColor); + BlendPalettesFine(1, gPlttBufferFaded + palOffset, gPlttBufferFaded + palOffset, blendCoeff, blendColor); palOffset += 16; } else @@ -578,7 +602,7 @@ static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMap for (i = 0; i < 16; i++) { - struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferFaded[palOffset]; u8 r = colorMap[baseColor.r]; u8 g = colorMap[baseColor.g]; u8 b = colorMap[baseColor.b]; @@ -650,51 +674,27 @@ static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 b } } +// This is only called during fade-in/fade-out in fog +// blendCoeff & blendColor are the *fade* colors, not fog colors static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) { - struct RGBColor color; - u8 rBlend; - u8 gBlend; - u8 bBlend; - u16 curPalIndex; + u32 curPalIndex; + u16 fogCoeff = min((gTimeOfDay + 1) * 4, 12); - BlendPalette(BG_PLTT_ID(0), 16 * 16, blendCoeff, blendColor); - color = *(struct RGBColor *)&blendColor; - rBlend = color.r; - gBlend = color.g; - bBlend = color.b; + // First blend all palettes with time + UpdateAltBgPalettes(PALETTES_BG); + CpuFastCopy(gPlttBufferUnfaded, gPlttBufferFaded, PLTT_BUFFER_SIZE * 2); + UpdatePalettesWithTime(PALETTES_ALL); + // Then blend tile palettes [0, 12] faded->faded with fadeIn color + BlendPalettesFine(0x1FFF, gPlttBufferFaded, gPlttBufferFaded, blendCoeff, blendColor); - for (curPalIndex = 16; curPalIndex < 32; curPalIndex++) - { + // Do fog blending on marked sprite palettes + for (curPalIndex = 16; curPalIndex < 32; curPalIndex++) { if (LightenSpritePaletteInFog(curPalIndex)) - { - u16 palEnd = (curPalIndex + 1) * 16; - u16 palOffset = curPalIndex * 16; - - while (palOffset < palEnd) - { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; - u8 r = color.r; - u8 g = color.g; - u8 b = color.b; - - r += ((28 - r) * 3) >> 2; - g += ((31 - g) * 3) >> 2; - b += ((28 - b) * 3) >> 2; - - r += ((rBlend - r) * blendCoeff) >> 4; - g += ((gBlend - g) * blendCoeff) >> 4; - b += ((bBlend - b) * blendCoeff) >> 4; - - gPlttBufferFaded[palOffset] = RGB2(r, g, b); - palOffset++; - } - } - else - { - BlendPalette(PLTT_ID(curPalIndex), 16, blendCoeff, blendColor); - } + BlendPalettesFine(1, gPlttBufferFaded + PLTT_ID(curPalIndex), gPlttBufferFaded + PLTT_ID(curPalIndex), fogCoeff, RGB(28, 31, 28)); } + // Finally blend all sprite palettes faded->faded with fadeIn color + BlendPalettesFine(PALETTES_OBJECTS, gPlttBufferFaded, gPlttBufferFaded, blendCoeff, blendColor); } static void MarkFogSpritePalToLighten(u8 paletteIndex) @@ -710,6 +710,9 @@ static bool8 LightenSpritePaletteInFog(u8 paletteIndex) { u16 i; + if (paletteIndex >= 16 && (GetSpritePaletteTagByPaletteNum(i - 16) >> 15)) // don't blend specialpalette tags + return FALSE; + for (i = 0; i < gWeatherPtr->lightenedFogSpritePalsCount; i++) { if (gWeatherPtr->lightenedFogSpritePals[i] == paletteIndex) @@ -787,8 +790,10 @@ void FadeScreen(u8 mode, s8 delay) if (fadeOut) { - if (useWeatherPal) - CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2); + // Note: Copying faded -> unfaded like this works fine, except if the screen is faded back in + // without transitioning to a different screen + // For cases like that, use fadescreenswapbuffers + CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2); BeginNormalPaletteFade(PALETTES_ALL, delay, 0, 16, fadeColor); gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT; @@ -796,10 +801,20 @@ void FadeScreen(u8 mode, s8 delay) else { gWeatherPtr->fadeDestColor = fadeColor; + UpdateTimeOfDay(); if (useWeatherPal) - gWeatherPtr->fadeScreenCounter = 0; - else + gWeatherPtr->fadeScreenCounter = 0; // Triggers gamma-shift-based fade-in + else { + if (MapHasNaturalLight(gMapHeader.mapType)) { + UpdateAltBgPalettes(PALETTES_BG); + BeginTimeOfDayPaletteFade(PALETTES_ALL, delay, 16, 0, + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time0], + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time1], + currentTimeBlend.weight, fadeColor); + } else { BeginNormalPaletteFade(PALETTES_ALL, delay, 16, 0, fadeColor); + } + } gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_IN; gWeatherPtr->fadeInFirstFrame = TRUE; @@ -814,11 +829,10 @@ bool8 IsWeatherNotFadingIn(void) return (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_IN); } -void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) +void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex, bool8 allowFog) { u16 paletteIndex = 16 + spritePaletteIndex; u16 i; - switch (gWeatherPtr->palProcessingState) { case WEATHER_PAL_STATE_SCREEN_FADING_IN: @@ -839,24 +853,37 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) // WEATHER_PAL_STATE_CHANGING_WEATHER // WEATHER_PAL_STATE_CHANGING_IDLE default: - if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) - { - ApplyColorMap(paletteIndex, 1, gWeatherPtr->colorMapIndex); - } - else - { - paletteIndex = PLTT_ID(paletteIndex); - BlendPalette(paletteIndex, 16, 12, RGB(28, 31, 28)); + if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) { + if (gWeatherPtr->colorMapIndex) + ApplyColorMap(paletteIndex, 1, gWeatherPtr->colorMapIndex); + else + UpdateSpritePaletteWithTime(spritePaletteIndex); + } else { // In horizontal fog, only specific palettes should be fog-blended + if (allowFog) { + i = min((gTimeOfDay + 1) * 4, 12); // fog coeff, highest in day and lowest at night + paletteIndex = PLTT_ID(paletteIndex); + // First blend with time + CpuFastCopy(gPlttBufferUnfaded + paletteIndex, gPlttBufferFaded + paletteIndex, PLTT_SIZE_4BPP); + UpdateSpritePaletteWithTime(spritePaletteIndex); + // Then blend faded->faded with fog coeff + BlendPalettesFine(1, gPlttBufferFaded + paletteIndex, gPlttBufferFaded + paletteIndex, i, RGB(28, 31, 28)); + } else { // Otherwise, just time-blend the palette + UpdateSpritePaletteWithTime(spritePaletteIndex); + } } break; } } -void ApplyWeatherColorMapToPal(u8 paletteIndex) +void ApplyWeatherColorMapToPal(u8 paletteIndex) // now unused / obselete { ApplyColorMap(paletteIndex, 1, gWeatherPtr->colorMapIndex); } +void ApplyWeatherColorMapToPals(u8 startPalIndex, u8 numPalettes) { + ApplyColorMap(startPalIndex, numPalettes, gWeatherPtr->colorMapIndex); +} + // Unused static bool8 IsFirstFrameOfWeatherFadeIn(void) { @@ -868,8 +895,11 @@ static bool8 IsFirstFrameOfWeatherFadeIn(void) void LoadCustomWeatherSpritePalette(const u16 *palette) { + if (gWeatherPtr->weatherPicSpritePalIndex > 16) // haven't allocated palette yet + if ((gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(PALTAG_WEATHER_2)) > 16) + return; LoadPalette(palette, OBJ_PLTT_ID(gWeatherPtr->weatherPicSpritePalIndex), PLTT_SIZE_4BPP); - UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); + UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex, TRUE); } static void LoadDroughtWeatherPalette(u8 *palsIndex, u8 *palsOffset) diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 5fcde489e..7c65cd6b3 100755 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -8,11 +8,13 @@ #include "script.h" #include "constants/weather.h" #include "constants/songs.h" +#include "constants/rgb.h" #include "sound.h" #include "sprite.h" #include "task.h" #include "trig.h" #include "gpu_regs.h" +#include "palette.h" EWRAM_DATA static u8 sCurrentAbnormalWeather = 0; EWRAM_DATA static u16 sUnusedWeatherRelated = 0; @@ -94,6 +96,7 @@ static const struct SpriteTemplate sCloudSpriteTemplate = void Clouds_InitVars(void) { + gWeatherPtr->noShadows = FALSE; gWeatherPtr->targetColorMapIndex = 0; gWeatherPtr->colorMapStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; @@ -154,6 +157,8 @@ void Sunny_InitVars(void) { gWeatherPtr->targetColorMapIndex = 0; gWeatherPtr->colorMapStepDelay = 20; + Weather_SetBlendCoeffs(8, 12); + gWeatherPtr->noShadows = FALSE; } void Sunny_InitAll(void) @@ -237,6 +242,7 @@ void Drought_InitVars(void) gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->targetColorMapIndex = 0; gWeatherPtr->colorMapStepDelay = 0; + gWeatherPtr->noShadows = FALSE; } void Drought_InitAll(void) @@ -479,6 +485,8 @@ void Rain_InitVars(void) gWeatherPtr->targetColorMapIndex = 3; gWeatherPtr->colorMapStepDelay = 20; SetRainStrengthFromSoundEffect(SE_RAIN); + Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Rain_InitAll(void) @@ -772,6 +780,8 @@ void Snow_InitVars(void) gWeatherPtr->colorMapStepDelay = 20; gWeatherPtr->targetSnowflakeSpriteCount = 32; gWeatherPtr->snowflakeVisibleCounter = 0; + Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Snow_InitAll(void) @@ -1022,6 +1032,8 @@ void Thunderstorm_InitVars(void) gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment gWeatherPtr->thunderEnqueued = FALSE; SetRainStrengthFromSoundEffect(SE_THUNDERSTORM); + Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Thunderstorm_InitAll(void) @@ -1050,6 +1062,8 @@ void Downpour_InitVars(void) gWeatherPtr->colorMapStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment SetRainStrengthFromSoundEffect(SE_DOWNPOUR); + Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Downpour_InitAll(void) @@ -1342,6 +1356,27 @@ void FogHorizontal_Main(void); static void CreateFogHorizontalSprites(void); static void DestroyFogHorizontalSprites(void); +// Within the weather palette, shadow sprites' color index +#define SHADOW_COLOR_INDEX 9 + +// Updates just the color of shadows to match special weather blending +u8 UpdateShadowColor(u16 color) { + u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); + u16 tempBuffer[16]; + u16 blendedColor; + if (paletteNum != 0xFF) { + u16 index = (paletteNum+16)*16+SHADOW_COLOR_INDEX; + gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = color; + // Copy to temporary buffer, blend, and keep just the shadow color index + CpuFastCopy(&gPlttBufferFaded[index-SHADOW_COLOR_INDEX], tempBuffer, 32); + UpdateSpritePaletteWithTime(paletteNum); + blendedColor = gPlttBufferFaded[index]; + CpuFastCopy(tempBuffer, &gPlttBufferFaded[index-SHADOW_COLOR_INDEX], 32); + gPlttBufferFaded[index] = blendedColor; + } + return paletteNum; +} + void FogHorizontal_InitVars(void) { gWeatherPtr->initStep = 0; @@ -1355,6 +1390,7 @@ void FogHorizontal_InitVars(void) gWeatherPtr->fogHScrollPosX = 0; Weather_SetBlendCoeffs(0, 16); } + gWeatherPtr->noShadows = FALSE; } void FogHorizontal_InitAll(void) @@ -1376,9 +1412,11 @@ void FogHorizontal_Main(void) { case 0: CreateFogHorizontalSprites(); - if (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL) - Weather_SetTargetBlendCoeffs(12, 8, 3); - else + if (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL) { + u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START); + Weather_SetTargetBlendCoeffs(12, 8, 3); + UpdateShadowColor(0x3DEF); // Gray + } else Weather_SetTargetBlendCoeffs(4, 16, 0); gWeatherPtr->initStep++; break; @@ -1416,6 +1454,7 @@ bool8 FogHorizontal_Finish(void) gWeatherPtr->finishStep++; break; default: + UpdateShadowColor(RGB_BLACK); return FALSE; } return TRUE; @@ -1506,9 +1545,10 @@ void Ash_InitVars(void) gWeatherPtr->ashUnused = 20; // Never read if (!gWeatherPtr->ashSpritesCreated) { - Weather_SetBlendCoeffs(0, 16); - SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(64, 63)); // These aren't valid blend coefficients! + Weather_SetBlendCoeffs(0, 12); + // SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(64, 63)); // These aren't valid blend coefficients! } + gWeatherPtr->noShadows = FALSE; } void Ash_InitAll(void) @@ -1534,7 +1574,7 @@ void Ash_Main(void) if (!gWeatherPtr->ashSpritesCreated) CreateAshSprites(); - Weather_SetTargetBlendCoeffs(16, 0, 1); + Weather_SetTargetBlendCoeffs(10, 12, 1); gWeatherPtr->initStep++; break; case 2: @@ -1555,7 +1595,7 @@ bool8 Ash_Finish(void) switch (gWeatherPtr->finishStep) { case 0: - Weather_SetTargetBlendCoeffs(0, 16, 1); + Weather_SetTargetBlendCoeffs(0, 12, 1); gWeatherPtr->finishStep++; break; case 1: @@ -1725,6 +1765,7 @@ void FogDiagonal_InitVars(void) gWeatherPtr->fogDPosY = 0; Weather_SetBlendCoeffs(0, 16); } + gWeatherPtr->noShadows = TRUE; } void FogDiagonal_InitAll(void) @@ -1938,6 +1979,7 @@ void Sandstorm_InitVars(void) Weather_SetBlendCoeffs(0, 16); } + gWeatherPtr->noShadows = FALSE; } void Sandstorm_InitAll(void) @@ -1962,7 +2004,8 @@ void Sandstorm_Main(void) gWeatherPtr->initStep++; break; case 1: - Weather_SetTargetBlendCoeffs(16, 0, 0); + Weather_SetTargetBlendCoeffs(16, 2, 0); + UpdateShadowColor(0x3DEF); gWeatherPtr->initStep++; break; case 2: @@ -1988,9 +2031,12 @@ bool8 Sandstorm_Finish(void) case 1: if (Weather_UpdateBlend()) gWeatherPtr->finishStep++; + if (gWeatherPtr->currBlendEVB == 12) + UpdateShadowColor(RGB_BLACK); break; case 2: DestroySandstormSprites(); + UpdateShadowColor(RGB_BLACK); gWeatherPtr->finishStep++; break; default: @@ -2224,6 +2270,8 @@ void Shade_InitVars(void) gWeatherPtr->initStep = 0; gWeatherPtr->targetColorMapIndex = 3; gWeatherPtr->colorMapStepDelay = 20; + Weather_SetBlendCoeffs(8, 12); // preserve shadow darkness + gWeatherPtr->noShadows = FALSE; } void Shade_InitAll(void) @@ -2285,6 +2333,7 @@ void Bubbles_InitVars(void) gWeatherPtr->bubblesCoordsIndex = 0; gWeatherPtr->bubblesSpriteCount = 0; } + gWeatherPtr->noShadows = TRUE; } void Bubbles_InitAll(void) @@ -2608,5 +2657,3 @@ static void UpdateRainCounter(u8 newWeather, u8 oldWeather) && (newWeather == WEATHER_RAIN || newWeather == WEATHER_RAIN_THUNDERSTORM)) IncrementGameStat(GAME_STAT_GOT_RAINED_ON); } - - diff --git a/src/fieldmap.c b/src/fieldmap.c index 6c3593c56..169576b2b 100755 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -873,28 +873,50 @@ static void ApplyGlobalTintToPaletteSlot(u8 slot, u8 count) } -void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) +void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size, bool8 skipFaded) { - u16 black = RGB_BLACK; + u32 low = 0; + u32 high = 0; if (tileset) { if (tileset->isSecondary == FALSE) { - LoadPalette(&black, destOffset, PLTT_SIZEOF(1)); - LoadPalette(tileset->palettes[0] + 1, destOffset + 1, size - PLTT_SIZEOF(1)); - ApplyGlobalTintToPaletteEntries(destOffset + 1, (size - PLTT_SIZEOF(1)) >> 1); + // LoadPalette(&black, destOffset, 2); + if (skipFaded) + CpuFastCopy(tileset->palettes, &gPlttBufferUnfaded[destOffset], size); + else + LoadPaletteFast(tileset->palettes, destOffset, size); + gPlttBufferFaded[destOffset] = gPlttBufferUnfaded[destOffset] = RGB_BLACK; // why does it have to be black? + ApplyGlobalTintToPaletteEntries(destOffset + 1, (size - 2) >> 1); + low = 0; + high = NUM_PALS_IN_PRIMARY; } else if (tileset->isSecondary == TRUE) { - LoadPalette(tileset->palettes[NUM_PALS_IN_PRIMARY], destOffset, size); - ApplyGlobalTintToPaletteEntries(destOffset, size >> 1); + if (skipFaded) + CpuFastCopy(tileset->palettes[NUM_PALS_IN_PRIMARY], &gPlttBufferUnfaded[destOffset], size); + else + LoadPaletteFast(tileset->palettes[NUM_PALS_IN_PRIMARY], destOffset, size); + low = NUM_PALS_IN_PRIMARY; + high = NUM_PALS_TOTAL; } else { LoadCompressedPalette((const u32 *)tileset->palettes, destOffset, size); ApplyGlobalTintToPaletteEntries(destOffset, size >> 1); } + if (tileset->isSecondary == FALSE || tileset->isSecondary == TRUE) { + u32 i; + for (i = low; i < high; i++) { + if (tileset->lightPalettes & (1 << (i - low))) { // Mark as light palette + u32 index = i * 16; + gPlttBufferFaded[index] = gPlttBufferUnfaded[index] |= 0x8000; + if (tileset->customLightColor & (1 << (i - low))) // Mark as custom light color + gPlttBufferFaded[index+15] = gPlttBufferUnfaded[index+15] |= 0x8000; + } + } + } } } @@ -915,12 +937,12 @@ void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout) static void LoadPrimaryTilesetPalette(struct MapLayout const *mapLayout) { - LoadTilesetPalette(mapLayout->primaryTileset, BG_PLTT_ID(0), NUM_PALS_IN_PRIMARY * PLTT_SIZE_4BPP); + LoadTilesetPalette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * PLTT_SIZE_4BPP, FALSE); } -void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout) +void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout, bool8 skipFaded) { - LoadTilesetPalette(mapLayout->secondaryTileset, BG_PLTT_ID(NUM_PALS_IN_PRIMARY), (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * PLTT_SIZE_4BPP); + LoadTilesetPalette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * PLTT_SIZE_4BPP, skipFaded); } void CopyMapTilesetsToVram(struct MapLayout const *mapLayout) @@ -937,6 +959,6 @@ void LoadMapTilesetPalettes(struct MapLayout const *mapLayout) if (mapLayout) { LoadPrimaryTilesetPalette(mapLayout); - LoadSecondaryTilesetPalette(mapLayout); + LoadSecondaryTilesetPalette(mapLayout, FALSE); } } diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index c01e88b51..0b254b6af 100755 --- a/src/fldeff_misc.c +++ b/src/fldeff_misc.c @@ -1024,7 +1024,7 @@ void DoSecretBaseGlitterMatSparkle(void) { gSprites[spriteId].coordOffsetEnabled = TRUE; gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].oam.paletteNum = 5; + UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], &gSprites[spriteId]); gSprites[spriteId].callback = SpriteCB_GlitterMatSparkle; gSprites[spriteId].data[0] = 0; } diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index 27689b02e..39f64adb8 100755 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -27,7 +27,7 @@ static void Task_DoFieldMove_RunFunc(u8 taskId); static void FieldCallback_RockSmash(void); static void FieldMove_RockSmash(void); -bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId) +bool8 CheckObjectGraphicsInFrontOfPlayer(u16 graphicsId) { u8 objEventId; @@ -61,9 +61,11 @@ static void Task_DoFieldMove_Init(u8 taskId) if (!ObjectEventIsMovementOverridden(&gObjectEvents[objEventId]) || ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId])) { - if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER || gFieldEffectArguments[3]) { - // Skip field move pose underwater + // Skip field move pose underwater, or if arg3 is nonzero + if (gFieldEffectArguments[3]) + gFieldEffectArguments[3] = 0; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); gTasks[taskId].func = Task_DoFieldMove_WaitForMon; } diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c index 3f087e5da..c17dc9360 100755 --- a/src/fldeff_teleport.c +++ b/src/fldeff_teleport.c @@ -14,7 +14,7 @@ bool8 SetUpFieldMove_Teleport(void) { if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) { - gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu; + gFieldCallback2 = FieldCallback_PrepareFadeInForTeleport; gPostMenuFieldCallback = FieldCallback_Teleport; return TRUE; } diff --git a/src/follower_helper.c b/src/follower_helper.c new file mode 100755 index 000000000..af4556584 --- /dev/null +++ b/src/follower_helper.c @@ -0,0 +1,320 @@ +#include "global.h" +#include "data.h" +#include "event_scripts.h" +#include "follower_helper.h" +#include "overworld.h" +#include "constants/battle.h" +#include "constants/metatile_behaviors.h" +#include "constants/pokemon.h" +#include "constants/region_map_sections.h" +#include "constants/songs.h" +#include "constants/weather.h" + +#define TYPE_NOT_TYPE1 NUMBER_OF_MON_TYPES + +// difficult conditional messages follow +static const u8 sCondMsg00[] = _("{STR_VAR_1} danced happily."); +static const u8 sCondMsg01[] = _("{STR_VAR_1} danced beautifully."); +static const u8* const sCelebiTexts[] = {sCondMsg00, sCondMsg01, NULL}; +static const u8 sCondMsg02[] = _("{STR_VAR_1} emitted fire and shouted."); +static const u8 sCondMsg03[] = _("{STR_VAR_1} is vigorously producing\nfire!"); +static const u8 sCondMsg04[] = _("{STR_VAR_1} spat fire!"); +static const u8 sCondMsg05[] = _("{STR_VAR_1} is vigorously breathing\nfire!"); +static const u8* const sFireTexts[] = {sCondMsg02, sCondMsg03, sCondMsg04, sCondMsg05, NULL}; +static const u8 sCondMsg06[] = _("{STR_VAR_1} is staring straight at\nthe POKéMON LEAGUE."); +static const u8 sCondMsg07[] = _("Your POKéMON is staring intently at\nthe mountain peak."); +static const u8 sCondMsg08[] = _("Sniff sniff, something smells good!"); +static const u8 sCondMsg09[] = _("Your POKéMON is surveying the\nshelves restlessly."); +static const u8 sCondMsg10[] = _("{STR_VAR_1} is staring intently at\nthe shelves."); +static const u8* const sShopTexts[] = {sCondMsg09, sCondMsg10, NULL}; +static const u8 sCondMsg11[] = _("{STR_VAR_1} focused with a sharp\ngaze!"); +static const u8 sCondMsg12[] = _("{STR_VAR_1} seems very interested in\nthe bicycles."); +static const u8 sCondMsg13[] = _("{STR_VAR_1} seems to want to touch\nthe machines!"); +static const u8 sCondMsg14[] = _("{STR_VAR_1} is swaying with the\nboat!"); +static const u8 sCondMsg15[] = _("{STR_VAR_1} is dancing along with\nthe rolling of the ship."); +static const u8 sCondMsg16[] = _("{STR_VAR_1} doesn't want to get off\nthe boat yet!"); +static const u8* const sBoatTexts[] = {sCondMsg14, sCondMsg15, sCondMsg16, NULL}; +static const u8 sCondMsg17[] = _("{STR_VAR_1} is listening to the\nsound of the machines."); +static const u8* const sMachineTexts[] = {sCondMsg13, sCondMsg17, NULL}; +static const u8 sCondMsg18[] = _("Waah! your POKéMON suddenly splashed\nwater!"); +static const u8 sCondMsg19[] = _("Your POKéMON is blowing sand in the\nair!"); +static const u8 sCondMsg20[] = _("{STR_VAR_1} is playing around,\nplucking bits of grass."); +static const u8 sCondMsg21[] = _("Your POKéMON is happily looking at\nyour footprints!"); +static const u8 sCondMsg22[] = _("{STR_VAR_1} is feeling nervous and a\ntouch claustrophobic."); +static const u8 sCondMsg23[] = _("{STR_VAR_1} is cautious about the\nconfined area!"); +static const u8* const sElevatorTexts[] = {sCondMsg22, sCondMsg23, NULL}; +static const u8 sCondMsg24[] = _("A cold wind suddenly blew by!"); +static const u8 sCondMsg25[] = _("Your POKéMON almost slipped and fell\nover!"); +static const u8 sCondMsg26[] = _("Your POKéMON seems surprised to\ntouch ice."); +static const u8* const sColdTexts[] = {sCondMsg24, sCondMsg25, sCondMsg26, NULL}; +static const u8 sCondMsg27[] = _("Your POKéMON has a flower petal on\nits face!"); +static const u8 sCondMsg28[] = _("{STR_VAR_1} is growling softly."); +static const u8 sCondMsg29[] = _("{STR_VAR_1} is trembling with fear."); +static const u8 sCondMsg30[] = _("{STR_VAR_1} seems somehow sad…"); +static const u8* const sFearTexts[] = {sCondMsg29, sCondMsg30, NULL}; +static const u8 sCondMsg31[] = _("{STR_VAR_1} is taking shelter in the\ngrass from the rain."); +static const u8 sCondMsg32[] = _("{STR_VAR_1} seems very cold."); +static const u8 sCondMsg33[] = _("{STR_VAR_1} is staring at the sea."); +static const u8 sCondMsg34[] = _("Your pokemon is staring intently at\nthe sea!"); +static const u8 sCondMsg35[] = _("{STR_VAR_1} is looking at the\nsurging sea."); +static const u8* const sSeaTexts[] = {sCondMsg33, sCondMsg34, sCondMsg35, NULL}; +static const u8 sCondMsg36[] = _("{STR_VAR_1} is listening to the\nsound of the waterfall."); +static const u8 sCondMsg37[] = _("{STR_VAR_1} seems to be happy about\nthe rain!"); +static const u8 sCondMsg38[] = _("{STR_VAR_1} is staring at its\nreflection in the water."); +static const u8 sCondMsg39[] = _("{STR_VAR_1} seems to relax as it\nhears the sound of rustling leaves…"); +static const u8 sCondMsg40[] = _("{STR_VAR_1} is gnawing at the ice."); +static const u8 sCondMsg41[] = _("{STR_VAR_1} is touching the ice."); +static const u8* const sIceTexts[] = {sCondMsg26, sCondMsg40, sCondMsg41, NULL}; +static const u8 sCondMsg42[] = _("{STR_VAR_1}'s burn looks painful!"); +static const u8 sCondMsg43[] = _("{STR_VAR_1} is happy to see what's\noutdoors!"); +static const u8 sCondMsg44[] = _("{STR_VAR_1} is looking up at the\nsky."); +static const u8* const sDayTexts[] = {sCondMsg43, sCondMsg44, NULL}; +static const u8 sCondMsg45[] = _("Your POKéMON is staring spellbound\nat the night sky!"); +static const u8 sCondMsg46[] = _("Your POKéMON is happily gazing at\nthe beautiful, starry sky!"); +static const u8* const sNightTexts[] = {sCondMsg45, sCondMsg46, NULL}; + +// See the struct definition in follower_helper.h for more info +const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT] = { + [COND_MSG_CELEBI] = + { + .text = (u8*)sCelebiTexts, + .textSpread = 1, + .script = EventScript_FollowerDance, + .st = {.species = SPECIES_CELEBI}, + .stFlags = ST_FLAGS_SPECIES, + .emotion = FOLLOWER_EMOTION_NEUTRAL, + }, + [COND_MSG_FIRE] = + { + .text = (u8*)sFireTexts, + .st = {.types = {.type1 = TYPE_FIRE, .type2 = TYPE_FIRE}}, + .stFlags = ST_FLAGS_TYPE, + .emotion = FOLLOWER_EMOTION_NEUTRAL, + .textSpread = 1, + }, + [COND_MSG_EVER_GRANDE] = + { + .text = sCondMsg06, + .script = EventScript_FollowerFaceUp, + .mm = {.map = {.mapNum = MAP_NUM(EVER_GRANDE_CITY), .mapGroup = MAP_GROUP(EVER_GRANDE_CITY)}}, + .mmFlags = MM_FLAGS_MAP, + .emotion = FOLLOWER_EMOTION_HAPPY, + }, + [COND_MSG_ROUTE_112] = + { + .text = sCondMsg07, + .mm = {.map = {.mapNum = MAP_NUM(ROUTE112), .mapGroup = MAP_GROUP(ROUTE112)}}, + .mmFlags = MM_FLAGS_MAP, + .emotion = FOLLOWER_EMOTION_HAPPY, + }, + [COND_MSG_DAY_CARE] = + { + .text = sCondMsg08, + .script = EventScript_FollowerNostalgia, + .mm = {.map = {.mapNum = MAP_NUM(ROUTE117_POKEMON_DAY_CARE), .mapGroup = MAP_GROUP(ROUTE117_POKEMON_DAY_CARE)}}, + .mmFlags = MM_FLAGS_MAP, + .emotion = FOLLOWER_EMOTION_NEUTRAL, + }, + [COND_MSG_MART] = + { + .text = (u8*)sShopTexts, + .textSpread = 1, + .script = EventScript_FollowerLookAround, + .wt = {.song = MUS_POKE_MART}, + .wtFlags = WT_FLAGS_MUSIC, + .emotion = FOLLOWER_EMOTION_NEUTRAL, + }, + [COND_MSG_VICTORY_ROAD] = + { + .text = sCondMsg11, + .wt = {.song = MUS_VICTORY_ROAD}, + .wtFlags = WT_FLAGS_MUSIC, + .emotion = FOLLOWER_EMOTION_PENSIVE, + }, + [COND_MSG_BIKE_SHOP] = + { + .text = sCondMsg12, + .mm = {.map = {.mapNum = MAP_NUM(MAUVILLE_CITY_BIKE_SHOP), .mapGroup = MAP_GROUP(MAUVILLE_CITY_BIKE_SHOP)}}, + .mmFlags = MM_FLAGS_MAP, + .emotion = FOLLOWER_EMOTION_PENSIVE, + }, + [COND_MSG_MACHINES] = + { + .text = (u8*)sMachineTexts, + .mm = {.map = {.mapNum = MAP_NUM(NEW_MAUVILLE_INSIDE), .mapGroup = MAP_GROUP(NEW_MAUVILLE_INSIDE)}}, + .mmFlags = MM_FLAGS_MAP, + .emotion = FOLLOWER_EMOTION_MUSIC, + .textSpread = 1, + }, + [COND_MSG_SAILING] = + { + .text = (u8*)sBoatTexts, + .script = EventScript_FollowerLookAround, + .wt = {.song = MUS_SAILING}, + .wtFlags = WT_FLAGS_MUSIC, + .emotion = FOLLOWER_EMOTION_MUSIC, + .textSpread = 1, + }, + [COND_MSG_PUDDLE] = + { + .text = sCondMsg18, + .script = EventScript_FollowerHopping, + .mm = {.mb = {.behavior1 = MB_SHALLOW_WATER, .behavior2 = MB_PUDDLE}}, + .mmFlags = MM_FLAGS_MB, + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + [COND_MSG_SAND] = + { + .text = sCondMsg19, + .mm = {.mb = {.behavior1 = MB_SAND, .behavior2 = MB_DEEP_SAND}}, + .mmFlags = MM_FLAGS_MB, + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + [COND_MSG_GRASS] = + { + .text = sCondMsg20, + .mm = {.mb = {.behavior1 = MB_TALL_GRASS, .behavior2 = MB_LONG_GRASS}}, + .mmFlags = MM_FLAGS_MB, + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + [COND_MSG_FOOTPRINTS] = + { + .text = sCondMsg21, + .mm = {.mb = {.behavior1 = MB_SAND, .behavior2 = MB_FOOTPRINTS}}, + .mmFlags = MM_FLAGS_MB, + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + [COND_MSG_ELEVATOR] = + { + .text = (u8*)sElevatorTexts, + .textSpread = 1, + .mm = {.map = {.mapNum = MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR), .mapGroup = MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR)}}, + .mmFlags = MM_FLAGS_MAP, + .emotion = FOLLOWER_EMOTION_SURPRISE, + }, + [COND_MSG_ICE_ROOM] = + { + .text = (u8*)sColdTexts, + .textSpread = 1, + .mm = {.map = {.mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ICE_ROOM), .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ICE_ROOM)}}, + .mmFlags = MM_FLAGS_MAP, + .emotion = FOLLOWER_EMOTION_SURPRISE, + }, + [COND_MSG_ROUTE_117] = + { + .text = sCondMsg27, + .mm = {.map = {.mapNum = MAP_NUM(ROUTE117), .mapGroup = MAP_GROUP(ROUTE117)}}, + .mmFlags = MM_FLAGS_MAP, + .emotion = FOLLOWER_EMOTION_SURPRISE, + }, + [COND_MSG_DRAGON_GROWL] = + { + .text = sCondMsg28, + .st = {.types = {.type1 = TYPE_DRAGON, .type2 = TYPE_DRAGON}}, + .stFlags = ST_FLAGS_TYPE, + .mm = {.mapSec = {.mapSec = MAPSEC_SKY_PILLAR}}, + .mmFlags = MM_FLAGS_MAPSEC, + .emotion = FOLLOWER_EMOTION_UPSET, + }, + [COND_MSG_FEAR] = + { + .text = (u8*)sFearTexts, + .textSpread = 1, + .st = {.types = {.type1 = TYPE_GHOST, .type2 = TYPE_NOT_TYPE1}}, + .stFlags = ST_FLAGS_TYPE, + .mm = {.mapSec = {.mapSec = MAPSEC_MT_PYRE}}, + .mmFlags = MM_FLAGS_MAPSEC, + .wt = {.song = MUS_MT_PYRE}, + .wtFlags = WT_FLAGS_MUSIC, + .emotion = FOLLOWER_EMOTION_UPSET, + }, + [COND_MSG_FIRE_RAIN] = + { + .text = sCondMsg31, + .st = {.types = {.type1 = TYPE_FIRE, .type2 = TYPE_FIRE}}, + .stFlags = ST_FLAGS_TYPE, + .wt = {.weather = {.weather1 = WEATHER_RAIN, .weather2 = WEATHER_RAIN_THUNDERSTORM}}, + .wtFlags = WT_FLAGS_WEATHER, + .emotion = FOLLOWER_EMOTION_UPSET, + }, + [COND_MSG_FROZEN] = + { + .text = sCondMsg32, + .st = {.status = STATUS1_FREEZE}, + .stFlags = ST_FLAGS_STATUS, + .emotion = FOLLOWER_EMOTION_UPSET, + }, + [COND_MSG_SEASIDE] = + { + .text = (u8*)sSeaTexts, + .textSpread = 1, + .script = EventScript_FollowerFaceResult, + .near = {.mb = {.behavior = MB_OCEAN_WATER, .distance = 5}}, + .nearFlags = NEAR_FLAGS_MB, + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + [COND_MSG_WATERFALL] = + { + .text = sCondMsg36, + .script = EventScript_FollowerFaceResult, + .near = {.mb = {.behavior = MB_WATERFALL, .distance = 5}}, + .nearFlags = NEAR_FLAGS_MB, + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + [COND_MSG_RAIN] = + { + .text = sCondMsg37, + .st = {.types = {.type1 = TYPE_FIRE, .type2 = TYPE_NOT_TYPE1}}, + .stFlags = ST_FLAGS_TYPE, + .wt = {.weather = {.weather1 = WEATHER_RAIN, .weather2 = WEATHER_RAIN_THUNDERSTORM}}, + .wtFlags = WT_FLAGS_WEATHER, + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + [COND_MSG_REFLECTION] = + { + .text = sCondMsg38, + .script = EventScript_FollowerFaceResult, + .near = {.mb = {.behavior = MB_POND_WATER, .distance = 1}}, + .nearFlags = NEAR_FLAGS_MB, + .emotion = FOLLOWER_EMOTION_PENSIVE, + }, + [COND_MSG_LEAVES] = + { + .text = sCondMsg39, + .mm = {.mapSec = {.mapSec = MAPSEC_PETALBURG_WOODS}}, + .mmFlags = MM_FLAGS_MAPSEC, + .emotion = FOLLOWER_EMOTION_PENSIVE, + }, + [COND_MSG_ICE] = + { + .text = (u8*)sIceTexts, + .textSpread = 1, + .script = EventScript_FollowerFaceResult, + .near = {.mb = {.behavior = MB_ICE, .distance = 1}}, + .nearFlags = NEAR_FLAGS_MB, + .emotion = FOLLOWER_EMOTION_PENSIVE, + }, + [COND_MSG_BURN] = + { + .text = sCondMsg42, + .st = {.status = STATUS1_BURN}, + .stFlags = ST_FLAGS_STATUS, + .emotion = FOLLOWER_EMOTION_SAD, + }, + [COND_MSG_DAY] = + { + .text = (u8*)sDayTexts, + .textSpread = 1, + .wt = {.timeOfDay = TIME_OF_DAY_DAY}, + .wtFlags = 3, // time + .emotion = FOLLOWER_EMOTION_MUSIC, + }, + [COND_MSG_NIGHT] = + { + .text = (u8*)sNightTexts, + .textSpread = 1, + .wt = {.timeOfDay = TIME_OF_DAY_NIGHT}, + .wtFlags = 3, // time + .emotion = FOLLOWER_EMOTION_MUSIC, + }, +}; diff --git a/src/graphics.c b/src/graphics.c index 07fc58d33..8922b43b1 100755 --- a/src/graphics.c +++ b/src/graphics.c @@ -1434,7 +1434,7 @@ const u32 gUnionRoomChat_Keyboard_Gfx[] = INCBIN_U32("graphics/union_room_chat/k const u32 gUnionRoomChat_Keyboard_Tilemap[] = INCBIN_U32("graphics/union_room_chat/keyboard.bin.lz"); const u32 gUnionRoomChat_RButtonLabels[] = INCBIN_U32("graphics/union_room_chat/r_button_labels.4bpp.lz"); -const u16 gTilesetPalettes_General[][16] = +const u16 ALIGNED(4) gTilesetPalettes_General[][16] = { INCBIN_U16("data/tilesets/primary/general/palettes/00.gbapal"), INCBIN_U16("data/tilesets/primary/general/palettes/01.gbapal"), diff --git a/src/load_save.c b/src/load_save.c index 881d372ff..d0fd528da 100755 --- a/src/load_save.c +++ b/src/load_save.c @@ -14,6 +14,7 @@ #include "decoration_inventory.h" #include "agb_flash.h" #include "tx_randomizer_and_challenges.h" +#include "constants/event_objects.h" static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); @@ -181,17 +182,43 @@ void LoadPlayerParty(void) void SaveObjectEvents(void) { int i; + u16 graphicsId; - for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { gSaveBlock1Ptr->objectEvents[i] = gObjectEvents[i]; + // Swap graphicsId bytes when saving and loading + // This keeps compatibility with vanilla, + // since the lower graphicsIds will be in the same place as vanilla + graphicsId = gObjectEvents[i].graphicsId; + gSaveBlock1Ptr->objectEvents[i].graphicsId = (graphicsId >> 8) | (graphicsId << 8); + gSaveBlock1Ptr->objectEvents[i].spriteId = 127; // magic number + // To avoid crash on vanilla, save follower as inactive + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER) + gSaveBlock1Ptr->objectEvents[i].active = FALSE; + } } void LoadObjectEvents(void) { int i; + u16 graphicsId; - for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { gObjectEvents[i] = gSaveBlock1Ptr->objectEvents[i]; + // Swap graphicsId bytes when saving and loading + // This keeps compatibility with vanilla, + // since the lower graphicsIds will be in the same place as vanilla + graphicsId = gObjectEvents[i].graphicsId; + gObjectEvents[i].graphicsId = (graphicsId >> 8) | (graphicsId << 8); + if (gObjectEvents[i].spriteId != 127) + gObjectEvents[i].graphicsId &= 0xFF; + gObjectEvents[i].spriteId = 0; + // Try to restore saved inactive follower + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER && + !gObjectEvents[i].active && + gObjectEvents[i].graphicsId >= OBJ_EVENT_GFX_MON_BASE) + gObjectEvents[i].active = TRUE; + } } void CopyPartyAndObjectsToSave(void) diff --git a/src/main.c b/src/main.c index 24adef4d3..d3824dc0d 100755 --- a/src/main.c +++ b/src/main.c @@ -437,3 +437,13 @@ void ClearPokemonCrySongs(void) { CpuFill16(0, gPokemonCrySongs, MAX_POKEMON_CRIES * sizeof(struct PokemonCrySong)); } + +// TODO: Needs to be updated if compiling for a different processor than the GBA's +bool8 IsAccurateGBA(void) { // tests to see whether running on either an accurate emulator in >=2020, or real hardware + u32 code[5] = {0xFF1EE12F, 0xE1DF00B0, 0xE12FFF1E, 0xAAAABBBB, 0xCCCCDDDD}; // ARM: _;ldrh r0, [pc];bx lr + u32 func = (u32) &code[0]; + if (func & 3) // not word aligned; safer to just return false here + return FALSE; + func = (func & ~3) | 0x2; // misalign PC to test PC-relative loading + return ((u32 (*)(void)) func)() == code[3] >> 16; +} diff --git a/src/mirage_tower.c b/src/mirage_tower.c index 01b87393a..4b9558d71 100755 --- a/src/mirage_tower.c +++ b/src/mirage_tower.c @@ -4,6 +4,7 @@ #include "event_data.h" #include "event_object_movement.h" #include "field_camera.h" +#include "field_effect.h" #include "fieldmap.h" #include "gpu_regs.h" #include "menu.h" @@ -150,10 +151,13 @@ static const union AnimCmd *const sAnims_FallingFossil[] = sAnim_FallingFossil, }; +// Duplicate of event_object_movement +#define OBJ_EVENT_PAL_TAG_NPC_1 0x1103 + static const struct SpriteTemplate sSpriteTemplate_FallingFossil = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, .oam = &sOamData_FallingFossil, .anims = sAnims_FallingFossil, .images = NULL, @@ -689,6 +693,7 @@ static void Task_FossilFallAndSink(u8 taskId) { struct SpriteTemplate fossilTemplate = sSpriteTemplate_FallingFossil; fossilTemplate.images = sFallingFossil->frameImage; + LoadObjectEventPalette(sSpriteTemplate_FallingFossil.paletteTag); sFallingFossil->spriteId = CreateSprite(&fossilTemplate, 128, -16, 1); gSprites[sFallingFossil->spriteId].centerToCornerVecX = 0; gSprites[sFallingFossil->spriteId].data[0] = gSprites[sFallingFossil->spriteId].x; @@ -714,6 +719,9 @@ static void Task_FossilFallAndSink(u8 taskId) // Wait for fossil to finish falling / disintegrating if (gSprites[sFallingFossil->spriteId].callback != SpriteCallbackDummy) return; + gSprites[sFallingFossil->spriteId].inUse = FALSE; + FieldEffectFreePaletteIfUnused(gSprites[sFallingFossil->spriteId].oam.paletteNum); + gSprites[sFallingFossil->spriteId].inUse = TRUE; DestroySprite(&gSprites[sFallingFossil->spriteId]); FREE_AND_SET_NULL(sFallingFossil->disintegrateRand);; FREE_AND_SET_NULL(sFallingFossil->frameImage); diff --git a/src/naming_screen.c b/src/naming_screen.c index 0b1c8dbee..eb8a757b5 100755 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1396,7 +1396,7 @@ static void NamingScreen_NoIcon(void) static void NamingScreen_CreatePlayerIcon(void) { - u8 rivalGfxId; + u16 rivalGfxId; u8 spriteId; rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, sNamingScreen->monSpecies); @@ -2587,5 +2587,3 @@ static const struct SpritePalette sSpritePalettes[] = {gNamingScreenMenu_Pal[4], PALTAG_OK_BUTTON}, {} }; - - diff --git a/src/overworld.c b/src/overworld.c index 2f0134448..bd74c0343 100755 --- a/src/overworld.c +++ b/src/overworld.c @@ -42,6 +42,7 @@ #include "random.h" #include "roamer.h" #include "rotating_gate.h" +#include "rtc.h" #include "safari_zone.h" #include "save.h" #include "save_location.h" @@ -197,6 +198,11 @@ bool8 (*gFieldCallback2)(void); u8 gLocalLinkPlayerId; // This is our player id in a multiplayer mode. u8 gFieldLinkPlayerCount; +u8 gTimeOfDay; +struct TimeBlendSettings currentTimeBlend; +u16 gTimeUpdateCounter; // playTimeVBlanks will eventually overflow, so this is used to update TOD + +// EWRAM vars EWRAM_DATA static u8 sObjectEventLoadFlag = 0; EWRAM_DATA struct WarpData gLastUsedWarp = {0}; EWRAM_DATA static struct WarpData sWarpDestination = {0}; // new warp position @@ -208,6 +214,7 @@ EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0}; + static const struct WarpData sDummyWarpData = { .mapGroup = MAP_GROUP(UNDEFINED), @@ -822,10 +829,9 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) RunOnTransitionMapScript(); InitMap(); CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout); - LoadSecondaryTilesetPalette(gMapHeader.mapLayout); + LoadSecondaryTilesetPalette(gMapHeader.mapLayout, TRUE); // skip copying to Faded, gamma shift will take care of it - for (paletteIndex = NUM_PALS_IN_PRIMARY; paletteIndex < NUM_PALS_TOTAL; paletteIndex++) - ApplyWeatherColorMapToPal(paletteIndex); + ApplyWeatherColorMapToPals(NUM_PALS_IN_PRIMARY, NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY); // palettes [6,12] InitSecondaryTilesetAnimation(); UpdateLocationHistoryForRoamer(); @@ -1507,6 +1513,126 @@ void CB1_Overworld(void) DoCB1_Overworld(gMain.newKeys, gMain.heldKeys); } +#define TINT_NIGHT Q_8_8(0.456) | Q_8_8(0.456) << 8 | Q_8_8(0.615) << 16 + +const struct BlendSettings gTimeOfDayBlend[] = +{ + [TIME_OF_DAY_NIGHT] = {.coeff = 10, .blendColor = TINT_NIGHT, .isTint = TRUE}, + [TIME_OF_DAY_TWILIGHT] = {.coeff = 4, .blendColor = 0xA8B0E0, .isTint = TRUE}, + [TIME_OF_DAY_DAY] = {.coeff = 0, .blendColor = 0}, +}; + +u8 UpdateTimeOfDay(void) { + s32 hours, minutes; + RtcCalcLocalTime(); + hours = gLocalTime.hours; + minutes = gLocalTime.minutes; + if (hours < 4) { // night + currentTimeBlend.weight = 256; + currentTimeBlend.altWeight = 0; + gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_NIGHT; + } else if (hours < 7) { // night->twilight + currentTimeBlend.time0 = TIME_OF_DAY_NIGHT; + currentTimeBlend.time1 = TIME_OF_DAY_TWILIGHT; + currentTimeBlend.weight = 256 - 256 * ((hours - 4) * 60 + minutes) / ((7-4)*60); + currentTimeBlend.altWeight = (256 - currentTimeBlend.weight) / 2; + gTimeOfDay = TIME_OF_DAY_DAY; + } else if (hours < 10) { // twilight->day + currentTimeBlend.time0 = TIME_OF_DAY_TWILIGHT; + currentTimeBlend.time1 = TIME_OF_DAY_DAY; + currentTimeBlend.weight = 256 - 256 * ((hours - 7) * 60 + minutes) / ((10-7)*60); + currentTimeBlend.altWeight = (256 - currentTimeBlend.weight) / 2 + 128; + gTimeOfDay = TIME_OF_DAY_DAY; + } else if (hours < 18) { // day + currentTimeBlend.weight = currentTimeBlend.altWeight = 256; + gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_DAY; + } else if (hours < 20) { // day->twilight + currentTimeBlend.time0 = TIME_OF_DAY_DAY; + currentTimeBlend.time1 = TIME_OF_DAY_TWILIGHT; + currentTimeBlend.weight = 256 - 256 * ((hours - 18) * 60 + minutes) / ((20-18)*60); + currentTimeBlend.altWeight = currentTimeBlend.weight / 2 + 128; + gTimeOfDay = TIME_OF_DAY_TWILIGHT; + } else if (hours < 22) { // twilight->night + currentTimeBlend.time0 = TIME_OF_DAY_TWILIGHT; + currentTimeBlend.time1 = TIME_OF_DAY_NIGHT; + currentTimeBlend.weight = 256 - 256 * ((hours - 20) * 60 + minutes) / ((22-20)*60); + currentTimeBlend.altWeight = currentTimeBlend.weight / 2; + gTimeOfDay = TIME_OF_DAY_NIGHT; + } else { // 22-24, night + currentTimeBlend.weight = 256; + currentTimeBlend.altWeight = 0; + gTimeOfDay = currentTimeBlend.time0 = currentTimeBlend.time1 = TIME_OF_DAY_NIGHT; + } + return gTimeOfDay; +} + +bool8 MapHasNaturalLight(u8 mapType) { // Whether a map type is naturally lit/outside + return mapType == MAP_TYPE_TOWN || mapType == MAP_TYPE_CITY || mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_OCEAN_ROUTE; +} + +// Update & mix day / night bg palettes (into unfaded) +void UpdateAltBgPalettes(u16 palettes) { + struct Tileset *primary = gMapHeader.mapLayout->primaryTileset; + struct Tileset *secondary = gMapHeader.mapLayout->secondaryTileset; + u32 i = 1; + if (!MapHasNaturalLight(gMapHeader.mapType)) + return; + palettes &= ~((1 << NUM_PALS_IN_PRIMARY) - 1) | primary->swapPalettes; + palettes &= ((1 << NUM_PALS_IN_PRIMARY) - 1) | (secondary->swapPalettes << NUM_PALS_IN_PRIMARY); + palettes &= 0x1FFE; // don't blend palette 0, [13,15] + palettes >>= 1; // start at palette 1 + if (!palettes) + return; + while (palettes) { + if (palettes & 1) { + if (i < NUM_PALS_IN_PRIMARY) + AvgPaletteWeighted(&((u16*)primary->palettes)[i*16], &((u16*)primary->palettes)[((i+9)%16)*16], gPlttBufferUnfaded + i * 16, currentTimeBlend.altWeight); + else + AvgPaletteWeighted(&((u16*)secondary->palettes)[i*16], &((u16*)secondary->palettes)[((i+9)%16)*16], gPlttBufferUnfaded + i * 16, currentTimeBlend.altWeight); + } + i++; + palettes >>= 1; + } +} + +void UpdatePalettesWithTime(u32 palettes) { + if (MapHasNaturalLight(gMapHeader.mapType)) { + u32 i; + u32 mask = 1 << 16; + if (palettes >= 0x10000) + for (i = 0; i < 16; i++, mask <<= 1) + if (GetSpritePaletteTagByPaletteNum(i) >> 15) // Don't blend special sprite palette tags + palettes &= ~(mask); + + palettes &= 0xFFFF1FFF; // Don't blend UI BG palettes [13,15] + if (!palettes) + return; + TimeMixPalettes(palettes, + gPlttBufferUnfaded, + gPlttBufferFaded, + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time0], + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time1], + currentTimeBlend.weight); + } +} + +u8 UpdateSpritePaletteWithTime(u8 paletteNum) { + if (MapHasNaturalLight(gMapHeader.mapType)) { + u16 offset; + if (GetSpritePaletteTagByPaletteNum(paletteNum) >> 15) + return paletteNum; + offset = (paletteNum + 16) << 4; + TimeMixPalettes(1, + gPlttBufferUnfaded + offset, + gPlttBufferFaded + offset, + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time0], + (struct BlendSettings *)&gTimeOfDayBlend[currentTimeBlend.time1], + currentTimeBlend.weight); + } + return paletteNum; +} + static void OverworldBasic(void) { ScriptContext_RunScript(); @@ -1518,6 +1644,22 @@ static void OverworldBasic(void) UpdatePaletteFade(); UpdateTilesetAnimations(); DoScheduledBgTilemapCopiesToVram(); + // Every minute if no palette fade is active, update TOD blending as needed + if (!gPaletteFade.active && ++gTimeUpdateCounter >= 3600) { + struct TimeBlendSettings cachedBlend = { + .time0 = currentTimeBlend.time0, + .time1 = currentTimeBlend.time1, + .weight = currentTimeBlend.weight, + }; + gTimeUpdateCounter = 0; + UpdateTimeOfDay(); + if (cachedBlend.time0 != currentTimeBlend.time0 + || cachedBlend.time1 != currentTimeBlend.time1 + || cachedBlend.weight != currentTimeBlend.weight) { + UpdateAltBgPalettes(PALETTES_BG); + UpdatePalettesWithTime(PALETTES_ALL); + } + } } // This CB2 is used when starting @@ -1532,8 +1674,10 @@ void CB2_Overworld(void) if (fading) SetVBlankCallback(NULL); OverworldBasic(); - if (fading) - SetFieldVBlankCallback(); + if (fading) { + SetFieldVBlankCallback(); + return; + } } void SetMainCallback1(MainCallback cb) @@ -2017,6 +2161,10 @@ static bool32 ReturnToFieldLocal(u8 *state) ResetScreenForMapLoad(); ResumeMap(FALSE); InitObjectEventsReturnToField(); + if (gFieldCallback == FieldCallback_Fly) + RemoveFollowingPokemon(); + else + UpdateFollowingPokemon(); SetCameraToTrackPlayer(); (*state)++; break; @@ -2032,7 +2180,6 @@ static bool32 ReturnToFieldLocal(u8 *state) case 3: return TRUE; } - return FALSE; } @@ -2187,10 +2334,7 @@ static void ResumeMap(bool32 a1) ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); - if (!a1) - InitObjectEventPalettes(0); - else - InitObjectEventPalettes(1); + FreeAllSpritePalettes(); FieldEffectActiveListClear(); StartWeather(); @@ -2224,6 +2368,7 @@ static void InitObjectEventsLocal(void) SetPlayerAvatarTransitionFlags(player->transitionFlags); ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); + UpdateFollowingPokemon(); TryRunOnWarpIntoMapScript(); } diff --git a/src/palette.c b/src/palette.c index 577257eff..d2a8476dd 100755 --- a/src/palette.c +++ b/src/palette.c @@ -11,6 +11,7 @@ enum NORMAL_FADE, FAST_FADE, HARDWARE_FADE, + TIME_OF_DAY_FADE, }; // These are structs for some unused palette system. @@ -52,6 +53,7 @@ static u8 UpdateNormalPaletteFade(void); static void BeginFastPaletteFadeInternal(u8); static u8 UpdateFastPaletteFade(void); static u8 UpdateHardwarePaletteFade(void); +static u8 UpdateTimeOfDayPaletteFade(void); static void UpdateBlendRegisters(void); static bool8 IsSoftwarePaletteFadeFinishing(void); static void Task_BlendPalettesGradually(u8 taskId); @@ -94,6 +96,15 @@ void LoadPalette(const void *src, u16 offset, u16 size) CpuCopy16(src, &gPlttBufferFaded[offset], size); } +// Drop in replacement for LoadPalette, uses CpuFastCopy, size must be 0 % 32 +void LoadPaletteFast(const void *src, u16 offset, u16 size) { + if ((u32)src & 3) // In case palette is not 4 byte aligned + return LoadPalette(src, offset, size); + CpuFastCopy(src, &gPlttBufferUnfaded[offset], size); + // Copying from EWRAM->EWRAM is faster than ROM->EWRAM + CpuFastCopy(&gPlttBufferUnfaded[offset], &gPlttBufferFaded[offset], size); +} + void FillPalette(u16 value, u16 offset, u16 size) { CpuFill16(value, &gPlttBufferUnfaded[offset], size); @@ -125,6 +136,8 @@ u8 UpdatePaletteFade(void) result = UpdateNormalPaletteFade(); else if (gPaletteFade.mode == FAST_FADE) result = UpdateFastPaletteFade(); + else if (gPaletteFade.mode == TIME_OF_DAY_FADE) + result = UpdateTimeOfDayPaletteFade(); else result = UpdateHardwarePaletteFade(); @@ -201,6 +214,56 @@ bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targe } } +// Like normal palette fade but respects sprite/tile palettes immune to time of day fading +bool8 BeginTimeOfDayPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, struct BlendSettings *bld0, struct BlendSettings *bld1, u16 weight, u16 color) +{ + u8 temp; + + if (gPaletteFade.active) + { + return FALSE; + } + else + { + gPaletteFade.deltaY = 2; + + if (delay < 0) + { + gPaletteFade.deltaY += (delay * -1); + delay = 0; + } + + gPaletteFade_selectedPalettes = selectedPalettes; + gPaletteFade.delayCounter = delay; + gPaletteFade_delay = delay; + gPaletteFade.y = startY; + gPaletteFade.targetY = targetY; + gPaletteFade.active = 1; + gPaletteFade.mode = TIME_OF_DAY_FADE; + + gPaletteFade.blendColor = color; + gPaletteFade.bld0 = bld0; + gPaletteFade.bld1 = bld1; + gPaletteFade.weight = weight; + + if (startY < targetY) + gPaletteFade.yDec = 0; + else + gPaletteFade.yDec = 1; + + UpdatePaletteFade(); + + temp = gPaletteFade.bufferTransferDisabled; + gPaletteFade.bufferTransferDisabled = 0; + CpuCopy32(gPlttBufferFaded, (void *)PLTT, PLTT_SIZE); + sPlttBufferTransferPending = 0; + if (gPaletteFade.mode == HARDWARE_FADE && gPaletteFade.active) + UpdateBlendRegisters(); + gPaletteFade.bufferTransferDisabled = temp; + return TRUE; + } +} + // Unused static bool8 BeginPlttFade(u32 selectedPalettes, u8 delay, u8 startY, u8 targetY, u16 blendColor) { @@ -407,6 +470,115 @@ static u8 PaletteStruct_GetPalNum(u16 id) return NUM_PALETTE_STRUCTS; } +// Like normal palette fade, but respects sprite/tile palettes immune to time of day fading +static u8 UpdateTimeOfDayPaletteFade(void) +{ + u8 paletteNum; + u16 paletteOffset; + u16 selectedPalettes; + u16 timePalettes = 0; // palettes passed to the time-blender + u16 copyPalettes; + u16 * src; + u16 * dst; + + if (!gPaletteFade.active) + return PALETTE_FADE_STATUS_DONE; + + if (IsSoftwarePaletteFadeFinishing()) + return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; + + if (!gPaletteFade.objPaletteToggle) + { + if (gPaletteFade.delayCounter < gPaletteFade_delay) + { + gPaletteFade.delayCounter++; + return 2; + } + gPaletteFade.delayCounter = 0; + } + + paletteOffset = 0; + + if (!gPaletteFade.objPaletteToggle) + { + selectedPalettes = gPaletteFade_selectedPalettes; + } + else + { + selectedPalettes = gPaletteFade_selectedPalettes >> 16; + paletteOffset = 256; + } + + src = gPlttBufferUnfaded + paletteOffset; + dst = gPlttBufferFaded + paletteOffset; + + // First pply TOD blend to relevant subset of palettes + if (gPaletteFade.objPaletteToggle) { // Sprite palettes, don't blend those with tags + u8 i; + u16 j = 1; + for (i = 0; i < 16; i++, j <<= 1) { // Mask out palettes that should not be light blended + if ((selectedPalettes & j) && !(GetSpritePaletteTagByPaletteNum(i) >> 15)) + timePalettes |= j; + } + + } else { // tile palettes, don't blend [13, 15] + timePalettes = selectedPalettes & 0x1FFF; + } + TimeMixPalettes(timePalettes, src, dst, gPaletteFade.bld0, gPaletteFade.bld1, gPaletteFade.weight); + + // palettes that were not blended above must be copied through + if ((copyPalettes = ~timePalettes)) { + u16 * src1 = src; + u16 * dst1 = dst; + while (copyPalettes) { + if (copyPalettes & 1) + CpuFastCopy(src1, dst1, 32); + copyPalettes >>= 1; + src1 += 16; + dst1 += 16; + } + } + + // Then, blend from faded->faded with native BlendPalettes + BlendPalettesFine(selectedPalettes, dst, dst, gPaletteFade.y, gPaletteFade.blendColor); + + gPaletteFade.objPaletteToggle ^= 1; + + if (!gPaletteFade.objPaletteToggle) + { + if ((gPaletteFade.yDec && gPaletteFade.y == 0) || (!gPaletteFade.yDec && gPaletteFade.y == gPaletteFade.targetY)) + { + gPaletteFade_selectedPalettes = 0; + gPaletteFade.softwareFadeFinishing = 1; + } + else + { + s8 val; + + if (!gPaletteFade.yDec) + { + val = gPaletteFade.y; + val += gPaletteFade.deltaY; + if (val > gPaletteFade.targetY) + val = gPaletteFade.targetY; + gPaletteFade.y = val; + } + else + { + val = gPaletteFade.y; + val -= gPaletteFade.deltaY; + if (val < 0) + val = 0; + gPaletteFade.y = val; + } + } + } + + // gPaletteFade.active cannot change since the last time it was checked. So this + // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` + return PALETTE_FADE_STATUS_ACTIVE; +} + static u8 UpdateNormalPaletteFade(void) { u16 paletteOffset; @@ -589,7 +761,6 @@ static u8 UpdateFastPaletteFade(void) if (IsSoftwarePaletteFadeFinishing()) return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; - if (gPaletteFade.objPaletteToggle) { paletteOffsetStart = 256; @@ -723,7 +894,6 @@ static u8 UpdateFastPaletteFade(void) gPaletteFade.mode = NORMAL_FADE; gPaletteFade.softwareFadeFinishing = TRUE; } - // gPaletteFade.active cannot change since the last time it was checked. So this // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;` return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE; @@ -831,15 +1001,247 @@ static bool8 IsSoftwarePaletteFadeFinishing(void) } } -void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color) -{ - u16 paletteOffset; +// optimized based on lucktyphlosion's BlendPalettesFine +void BlendPalettesFine(u32 palettes, u16 *src, u16 *dst, u32 coeff, u32 color) { + s32 newR, newG, newB; - for (paletteOffset = 0; selectedPalettes; paletteOffset += 16) - { - if (selectedPalettes & 1) - BlendPalette(paletteOffset, 16, coeff, color); - selectedPalettes >>= 1; + if (!palettes) + return; + + coeff *= 2; + newR = (color << 27) >> 27; + newG = (color << 22) >> 27; + newB = (color << 17) >> 27; + + do { + if (palettes & 1) { + u16 *srcEnd = src + 16; + while (src != srcEnd) { // Transparency is blended because it can matter for tile palettes + u32 srcColor = *src; + s32 r = (srcColor << 27) >> 27; + s32 g = (srcColor << 22) >> 27; + s32 b = (srcColor << 17) >> 27; + + *dst++ = ((r + (((newR - r) * coeff) >> 5)) << 0) + | ((g + (((newG - g) * coeff) >> 5)) << 5) + | ((b + (((newB - b) * coeff) >> 5)) << 10); + src++; + } + } else { + src += 16; + dst += 16; + } + palettes >>= 1; + } while (palettes); +} + +void BlendPalettes(u32 palettes, u8 coeff, u16 color) { + BlendPalettesFine(palettes, gPlttBufferUnfaded, gPlttBufferFaded, coeff, color); +} + +#define DEFAULT_LIGHT_COLOR 0x3f9f + +// Like BlendPalette, but ignores blendColor if the transparency high bit is set +// Optimization help by lucktyphlosion +void TimeBlendPalette(u16 palOffset, u32 coeff, u32 blendColor) { + s32 newR, newG, newB, defR, defG, defB; + u16 * src = gPlttBufferUnfaded + palOffset; + u16 * dst = gPlttBufferFaded + palOffset; + u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; + u16 *srcEnd = src + 16; + u16 altBlendIndices = *dst++ = *src++; // color 0 is copied through unchanged + u32 altBlendColor; + + coeff *= 2; + newR = (blendColor << 27) >> 27; + newG = (blendColor << 22) >> 27; + newB = (blendColor << 17) >> 27; + + if (altBlendIndices >> 15) { // High bit set; bitmask of which colors to alt-blend + // Note that bit 0 of altBlendIndices specifies color 1 + altBlendColor = src[14]; // color 15 + if (altBlendColor >> 15) { // Set alternate blend color + defR = (altBlendColor << 27) >> 27; + defG = (altBlendColor << 22) >> 27; + defB = (altBlendColor << 17) >> 27; + } else { // Set default blend color + defR = (defaultBlendColor << 27) >> 27; + defG = (defaultBlendColor << 22) >> 27; + defB = (defaultBlendColor << 17) >> 27; + } + } else { + altBlendIndices = 0; + } + while (src != srcEnd) { + u32 srcColor = *src; + s32 r = (srcColor << 27) >> 27; + s32 g = (srcColor << 22) >> 27; + s32 b = (srcColor << 17) >> 27; + + if (altBlendIndices & 1) { + *dst = ((r + (((defR - r) * coeff) >> 5)) << 0) + | ((g + (((defG - g) * coeff) >> 5)) << 5) + | ((b + (((defB - b) * coeff) >> 5)) << 10); + } else { // Use provided blend color + *dst = ((r + (((newR - r) * coeff) >> 5)) << 0) + | ((g + (((newG - g) * coeff) >> 5)) << 5) + | ((b + (((newB - b) * coeff) >> 5)) << 10); + } + src++; + dst++; + altBlendIndices >>= 1; + } +} + +// Blends a weighted average of two blend parameters +// Parameters can be either blended (as in BlendPalettes) or tinted (as in TintPaletteRGB_Copy) +void TimeMixPalettes(u32 palettes, u16 *src, u16 *dst, struct BlendSettings *blend0, struct BlendSettings *blend1, u16 weight0) { + s32 r0, g0, b0, r1, g1, b1, defR, defG, defB, altR, altG, altB; + u32 color0, coeff0, color1, coeff1; + bool8 tint0, tint1; + u16 weight1; + u32 defaultColor = DEFAULT_LIGHT_COLOR; + + if (!palettes) + return; + + color0 = blend0->blendColor; + tint0 = blend0->isTint; + coeff0 = tint0 ? 8*2 : blend0->coeff*2; + color1 = blend1->blendColor; + tint1 = blend1->isTint; + coeff1 = tint1 ? 8*2 : blend1->coeff*2; + + if (tint0) { + r0 = (color0 << 24) >> 24; + g0 = (color0 << 16) >> 24; + b0 = (color0 << 8) >> 24; + } else { + r0 = (color0 << 27) >> 27; + g0 = (color0 << 22) >> 27; + b0 = (color0 << 17) >> 27; + } + if (tint1) { + r1 = (color1 << 24) >> 24; + g1 = (color1 << 16) >> 24; + b1 = (color1 << 8) >> 24; + } else { + r1 = (color1 << 27) >> 27; + g1 = (color1 << 22) >> 27; + b1 = (color1 << 17) >> 27; + } + defR = (defaultColor << 27) >> 27; + defG = (defaultColor << 22) >> 27; + defB = (defaultColor << 17) >> 27; + weight1 = 256 - weight0; + + do { + if (palettes & 1) { + u16 *srcEnd = src + 16; + u16 altBlendIndices = *dst++ = *src++; // color 0 is copied through + u32 altBlendColor; + if (altBlendIndices >> 15) { // High bit set; bitmask of which colors to alt-blend + // Note that bit 0 of altBlendIndices specifies color 1 + altBlendColor = src[14]; // color 15 + if (altBlendColor >> 15) { // Set alternate blend color + altR = (altBlendColor << 27) >> 27; + altG = (altBlendColor << 22) >> 27; + altB = (altBlendColor << 17) >> 27; + } else { + altBlendColor = 0; + } + } else { + altBlendIndices = 0; + } + while (src != srcEnd) { + u32 srcColor = *src; + s32 r = (srcColor << 27) >> 27; + s32 g = (srcColor << 22) >> 27; + s32 b = (srcColor << 17) >> 27; + + if (altBlendIndices & 1) { + if (altBlendColor) { // Use alternate blend color + r = (weight0*(r + (((altR - r) * coeff0) >> 5)) + weight1*(r + (((altR - r) * coeff1) >> 5))) >> 8; + g = (weight0*(g + (((altG - g) * coeff0) >> 5)) + weight1*(g + (((altG - g) * coeff1) >> 5))) >> 8; + b = (weight0*(b + (((altB - b) * coeff0) >> 5)) + weight1*(b + (((altB - b) * coeff1) >> 5))) >> 8; + *dst = RGB2(r, g, b); + } else { // Use default blend color + r = (weight0*(r + (((defR - r) * coeff0) >> 5)) + weight1*(r + (((defR - r) * coeff1) >> 5))) >> 8; + g = (weight0*(g + (((defG - g) * coeff0) >> 5)) + weight1*(g + (((defG - g) * coeff1) >> 5))) >> 8; + b = (weight0*(b + (((defB - b) * coeff0) >> 5)) + weight1*(b + (((defB - b) * coeff1) >> 5))) >> 8; + *dst = RGB2(r, g, b); + } + } else { // Use provided blend colors + s32 r2, g2, b2, r3, g3, b3; + if (!tint0) { // blend-based + r2 = (r + (((r0 - r) * coeff0) >> 5)); + g2 = (g + (((g0 - g) * coeff0) >> 5)); + b2 = (b + (((b0 - b) * coeff0) >> 5)); + } else { // tint-based + r2 = (u16)((r0 * r)) >> 8; + g2 = (u16)((g0 * g)) >> 8; + b2 = (u16)((b0 * b)) >> 8; + if (r2 > 31) + r2 = 31; + if (g2 > 31) + g2 = 31; + if (b2 > 31) + b2 = 31; + } + if (!tint1) { // blend-based + r3 = (r + (((r1 - r) * coeff1) >> 5)); + g3 = (g + (((g1 - g) * coeff1) >> 5)); + b3 = (b + (((b1 - b) * coeff1) >> 5)); + } else { // tint-based + r3 = (u16)((r1 * r)) >> 8; + g3 = (u16)((g1 * g)) >> 8; + b3 = (u16)((b1 * b)) >> 8; + if (r3 > 31) + r3 = 31; + if (g3 > 31) + g3 = 31; + if (b3 > 31) + b3 = 31; + } + r = (weight0*r2 + weight1*r3) >> 8; + g = (weight0*g2 + weight1*g3) >> 8; + b = (weight0*b2 + weight1*b3) >> 8; + *dst = RGB2(r, g, b); + } + src++; + dst++; + altBlendIndices >>= 1; + } + } else { + src += 16; + dst += 16; + } + palettes >>= 1; + } while (palettes); +} + +// Apply weighted average to palettes, preserving high bits of dst throughout +void AvgPaletteWeighted(u16 *src0, u16 *src1, u16 *dst, u16 weight0) { + u16 *srcEnd = src0 + 16; + u16 weight1 = 256 - weight0; + src0++; + src1++; + dst++; // leave dst transparency unchanged + while (src0 != srcEnd) { + u32 src0Color = *src0++; + s32 r0 = (src0Color << 27) >> 27; + s32 g0 = (src0Color << 22) >> 27; + s32 b0 = (src0Color << 17) >> 27; + u32 src1Color = *src1++; + s32 r1 = (src1Color << 27) >> 27; + s32 g1 = (src1Color << 22) >> 27; + s32 b1 = (src1Color << 17) >> 27; + + // Average and bitwise-OR + r0 = (weight0*r0 + weight1*r1) >> 8; + g0 = (weight0*g0 + weight1*g1) >> 8; + b0 = (weight0*b0 + weight1*b1) >> 8; + *dst++ = (*dst & 0x8000) | RGB2(r0, g0, b0); // preserve high bit of dst } } @@ -942,6 +1344,62 @@ void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 b } } +// Tints from Unfaded to Faded, using a 15-bit GBA color +void TintPalette_RGB_Copy(u16 palOffset, u32 blendColor) { + s32 newR, newG, newB, rTone, gTone, bTone; + u16 * src = gPlttBufferUnfaded + palOffset; + u16 * dst = gPlttBufferFaded + palOffset; + u32 defaultBlendColor = DEFAULT_LIGHT_COLOR; + u16 *srcEnd = src + 16; + u16 altBlendIndices = *dst++ = *src++; // color 0 is copied through unchanged + u32 altBlendColor; + + newR = ((blendColor << 27) >> 27) << 3; + newG = ((blendColor << 22) >> 27) << 3; + newB = ((blendColor << 17) >> 27) << 3; + + if (altBlendIndices >> 15) { // High bit set; bitmask of which colors to alt-blend + // Note that bit 0 of altBlendIndices specifies color 1 + altBlendColor = src[14]; // color 15 + if (altBlendColor >> 15) { // Set alternate blend color + rTone = ((altBlendColor << 27) >> 27) << 3; + gTone = ((altBlendColor << 22) >> 27) << 3; + bTone = ((altBlendColor << 17) >> 27) << 3; + } else { // Set default blend color + rTone = ((defaultBlendColor << 27) >> 27) << 3; + gTone = ((defaultBlendColor << 22) >> 27) << 3; + bTone = ((defaultBlendColor << 17) >> 27) << 3; + } + } else { + altBlendIndices = 0; + } + while (src != srcEnd) { + u32 srcColor = *src; + s32 r = (srcColor << 27) >> 27; + s32 g = (srcColor << 22) >> 27; + s32 b = (srcColor << 17) >> 27; + + if (altBlendIndices & 1) { + r = (u16)((rTone * r)) >> 8; + g = (u16)((gTone * g)) >> 8; + b = (u16)((bTone * b)) >> 8; + } else { // Use provided blend color + r = (u16)((newR * r)) >> 8; + g = (u16)((newG * g)) >> 8; + b = (u16)((newB * b)) >> 8; + } + if (r > 31) + r = 31; + if (g > 31) + g = 31; + if (b > 31) + b = 31; + src++; + *dst++ = RGB2(r, g, b); + altBlendIndices >>= 1; + } +} + #define tCoeff data[0] #define tCoeffTarget data[1] #define tCoeffDelta data[2] diff --git a/src/palette_util.c b/src/palette_util.c index 08239c336..4a2a6c55e 100755 --- a/src/palette_util.c +++ b/src/palette_util.c @@ -2,6 +2,7 @@ #include "palette.h" #include "palette_util.h" #include "util.h" +#include "overworld.h" // "RouletteFlash" is more accurately a general flashing/fading util // this file handles fading the palettes for the color/icon selections on the Roulette wheel @@ -385,7 +386,12 @@ void UpdatePulseBlend(struct PulseBlend *pulseBlend) if (--pulseBlendPalette->delayCounter == 0xFF) { pulseBlendPalette->delayCounter = pulseBlendPalette->pulseBlendSettings.delay; - BlendPalette(pulseBlendPalette->pulseBlendSettings.paletteOffset, pulseBlendPalette->pulseBlendSettings.numColors, pulseBlendPalette->blendCoeff, pulseBlendPalette->pulseBlendSettings.blendColor); + // TODO: Optimize pulse blending + CpuFastCopy(gPlttBufferUnfaded + pulseBlendPalette->pulseBlendSettings.paletteOffset, gPlttBufferFaded + pulseBlendPalette->pulseBlendSettings.paletteOffset, 32); + UpdatePalettesWithTime(1 << (pulseBlendPalette->pulseBlendSettings.paletteOffset >> 4)); + // pulseBlendSettings has a numColors field, but it is only ever set to 16 (for mirage tower) + // So, it's ok to use the fine blending here which blends the entire palette + BlendPalettesFine(1, gPlttBufferFaded + pulseBlendPalette->pulseBlendSettings.paletteOffset, gPlttBufferFaded + pulseBlendPalette->pulseBlendSettings.paletteOffset, pulseBlendPalette->blendCoeff, pulseBlendPalette->pulseBlendSettings.blendColor); switch (pulseBlendPalette->pulseBlendSettings.fadeType) { case 0: // Fade all the way to the max blend amount, then wrap around diff --git a/src/party_menu.c b/src/party_menu.c index 070df3672..c758f4c1d 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -14,6 +14,7 @@ #include "decompress.h" #include "easy_chat.h" #include "event_data.h" +#include "event_object_movement.h" #include "evolution_scene.h" #include "field_control_avatar.h" #include "field_effect.h" @@ -3869,6 +3870,11 @@ bool8 FieldCallback_PrepareFadeInFromMenu(void) return TRUE; } +bool8 FieldCallback_PrepareFadeInForTeleport(void) { // same as above, but removes follower pokemon + RemoveFollowingPokemon(); + return FieldCallback_PrepareFadeInFromMenu(); +} + static void Task_FieldMoveWaitForFade(u8 taskId) { if (IsWeatherNotFadingIn() == TRUE) diff --git a/src/pokeball.c b/src/pokeball.c index 2633fd574..5d48bdd2b 100755 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -380,6 +380,11 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) switch (throwCaseId) { + case POKEBALL_PLAYER_SLIDEIN: // don't actually send out, trigger the slide-in animation + gBattlerTarget = battlerId; + gSprites[ballSpriteId].callback = HandleBallAnimEnd; + gSprites[ballSpriteId].invisible = TRUE; + break; case POKEBALL_PLAYER_SENDOUT: gBattlerTarget = battlerId; gSprites[ballSpriteId].x = 24; @@ -847,6 +852,12 @@ static void HandleBallAnimEnd(struct Sprite *sprite) bool8 affineAnimEnded = FALSE; u8 battlerId = sprite->sBattler; + if (sprite->data[7] == POKEBALL_PLAYER_SLIDEIN) { + gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_PlayerMonSlideIn; + AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]); + gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000; + } + gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; if (sprite->animEnded) sprite->invisible = TRUE; diff --git a/src/pokemon.c b/src/pokemon.c index 534b4ec79..b3d728ef0 100755 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8425,15 +8425,13 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_FRIENDSHIP_DAY: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 7 && gLocalTime.hours < 20 && friendship >= 220) + UpdateTimeOfDay(); + if (gTimeOfDay != TIME_OF_DAY_NIGHT && friendship >= 220) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_FRIENDSHIP_NIGHT: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 0 && gLocalTime.hours < 7 && friendship >= 220) - targetSpecies = gEvolutionTable[species][i].targetSpecies; - if (gLocalTime.hours >= 20 && gLocalTime.hours < 24 && friendship >= 220) + UpdateTimeOfDay(); + if (gTimeOfDay == TIME_OF_DAY_NIGHT && friendship >= 220) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL: @@ -8480,36 +8478,28 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_FEMALE_MORNING: - RtcCalcLocalTime(); + UpdateTimeOfDay(); if (gEvolutionTable[species][i].param <= level && GetMonGender(mon) == MON_FEMALE && gLocalTime.hours >= 6 && gLocalTime.hours < 9 && gEvolutionTable[species][i].param <= level) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_MALE_MORNING: - RtcCalcLocalTime(); + UpdateTimeOfDay(); if (gEvolutionTable[species][i].param <= level && GetMonGender(mon) == MON_MALE && gLocalTime.hours >= 6 && gLocalTime.hours < 9 && gEvolutionTable[species][i].param <= level) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_NIGHT: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 0 && gLocalTime.hours < 7 && gEvolutionTable[species][i].param <= level) - targetSpecies = gEvolutionTable[species][i].targetSpecies; - if (gLocalTime.hours >= 20 && gLocalTime.hours < 24 && gEvolutionTable[species][i].param <= level) + UpdateTimeOfDay(); + if (gLocalTime.hours = TIME_OF_DAY_NIGHT && gEvolutionTable[species][i].param <= level) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_DAY: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 7 && gLocalTime.hours < 20 && gEvolutionTable[species][i].param <= level) + UpdateTimeOfDay(); + if (gLocalTime.hours != TIME_OF_DAY_NIGHT && gEvolutionTable[species][i].param <= level) targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_ITEM_HOLD_NIGHT: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 0 && gLocalTime.hours < 7 && heldItem == gEvolutionTable[species][i].param) - { - heldItem = 0; - SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); - targetSpecies = gEvolutionTable[species][i].targetSpecies; - } - if (gLocalTime.hours >= 20 && gLocalTime.hours < 24 && heldItem == gEvolutionTable[species][i].param) + UpdateTimeOfDay(); + if (gLocalTime.hours = TIME_OF_DAY_NIGHT && heldItem == gEvolutionTable[species][i].param) { heldItem = 0; SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); @@ -8517,8 +8507,8 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem) } break; case EVO_ITEM_HOLD_DAY: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 7 && gLocalTime.hours < 20 && heldItem == gEvolutionTable[species][i].param) + UpdateTimeOfDay(); + if (gLocalTime.hours != TIME_OF_DAY_NIGHT && heldItem == gEvolutionTable[species][i].param) { heldItem = 0; SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c index c984dfec8..38d0dbd75 100755 --- a/src/rayquaza_scene.c +++ b/src/rayquaza_scene.c @@ -1,5 +1,6 @@ #include "global.h" #include "rayquaza_scene.h" +#include "event_object_movement.h" #include "sprite.h" #include "task.h" #include "graphics.h" @@ -15,6 +16,7 @@ #include "sound.h" #include "constants/songs.h" #include "constants/rgb.h" +#include "constants/event_objects.h" #include "random.h" /* @@ -1294,9 +1296,13 @@ void DoRayquazaScene(u8 animId, bool8 endEarly, void (*exitCallback)(void)) static void CB2_InitRayquazaScene(void) { + u32 i; SetVBlankHBlankCallbacksToNull(); ClearScheduledBgCopiesToVram(); ScanlineEffect_Stop(); + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + if (gObjectEvents[i].graphicsId == OBJ_EVENT_GFX_RAYQUAZA) + gObjectEvents[i].invisible = FALSE; FreeAllSpritePalettes(); ResetPaletteFade(); ResetSpriteData(); diff --git a/src/rotating_gate.c b/src/rotating_gate.c index f9e732eb7..738bc8cda 100755 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -456,11 +456,12 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = sSpriteAffineAnim_RotatingClockwise270to360Faster, }; +#define OBJ_EVENT_PAL_TAG_NPC_1 0x1103 static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = { .tileTag = ROTATING_GATE_TILE_TAG, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, .oam = &sOamData_RotatingGateLarge, .anims = sSpriteAnimTable_RotatingGateLarge, .images = NULL, @@ -471,7 +472,7 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = { .tileTag = ROTATING_GATE_TILE_TAG, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, .oam = &sOamData_RotatingGateRegular, .anims = sSpriteAnimTable_RotatingGateRegular, .images = NULL, @@ -737,7 +738,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) template.tileTag = gate->shape + ROTATING_GATE_TILE_TAG; - spriteId = CreateSprite(&template, 0, 0, 0x94); + spriteId = CreateSprite(&template, 0, 0, 0x93); if (spriteId == MAX_SPRITES) return MAX_SPRITES; @@ -745,6 +746,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) y = gate->y + MAP_OFFSET; sprite = &gSprites[spriteId]; + UpdateSpritePaletteByTemplate(&template, sprite); sprite->data[0] = gateId; sprite->coordOffsetEnabled = 1; diff --git a/src/scrcmd.c b/src/scrcmd.c index c423c0212..792b76961 100755 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -15,6 +15,7 @@ #include "field_effect.h" #include "event_object_lock.h" #include "event_object_movement.h" +#include "event_scripts.h" #include "field_message_box.h" #include "field_player_avatar.h" #include "field_screen_effect.h" @@ -106,6 +107,7 @@ bool8 ScrCmd_nop1(struct ScriptContext *ctx) bool8 ScrCmd_end(struct ScriptContext *ctx) { + FlagClear(FLAG_SAFE_FOLLOWER_MOVEMENT); StopScript(ctx); return FALSE; } @@ -136,12 +138,17 @@ bool8 ScrCmd_specialvar(struct ScriptContext *ctx) bool8 ScrCmd_callnative(struct ScriptContext *ctx) { - NativeFunc func = (NativeFunc)ScriptReadWord(ctx); - - func(); + u32 func = ScriptReadWord(ctx); + ((NativeFunc) func)(); return FALSE; } +bool8 ScrCmd_callfunc(struct ScriptContext *ctx) +{ + u32 func = ScriptReadWord(ctx); + return ((ScrCmdFunc) func)(ctx); +} + bool8 ScrCmd_waitstate(struct ScriptContext *ctx) { ScriptContext_Stop(); @@ -291,6 +298,7 @@ bool8 ScrCmd_returnram(struct ScriptContext *ctx) bool8 ScrCmd_endram(struct ScriptContext *ctx) { + FlagClear(FLAG_SAFE_FOLLOWER_MOVEMENT); ClearRamScript(); StopScript(ctx); return TRUE; @@ -635,6 +643,12 @@ static bool8 IsPaletteNotActive(void) return FALSE; } +// pauses script until palette fade inactive +bool8 ScrFunc_WaitPaletteNotActive(struct ScriptContext *ctx) { + SetupNativeScript(ctx, IsPaletteNotActive); + return TRUE; +} + bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) { FadeScreen(ScriptReadByte(ctx), 0); @@ -655,6 +669,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx) { u8 mode = ScriptReadByte(ctx); + u8 nowait = ScriptReadByte(ctx); switch (mode) { @@ -671,6 +686,8 @@ bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx) break; } + if (nowait) + return FALSE; SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } @@ -1005,9 +1022,23 @@ bool8 ScrCmd_applymovement(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); const void *movementScript = (const void *)ScriptReadWord(ctx); + struct ObjectEvent *objEvent; + // When applying script movements to follower, it may have frozen animation that must be cleared + if (localId == OBJ_EVENT_ID_FOLLOWER && (objEvent = GetFollowerObject()) && objEvent->frozen) { + ClearObjectEventMovement(objEvent, &gSprites[objEvent->spriteId]); + gSprites[objEvent->spriteId].animCmdIndex = 0; // Needed to set start frame of animation + } ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); sMovingNpcId = localId; + if (localId != OBJ_EVENT_ID_FOLLOWER && !FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT)) { // Force follower into pokeball + objEvent = GetFollowerObject(); + // return early if no follower or in shadowing state + if (objEvent == NULL || gSprites[objEvent->spriteId].data[1] == 0) + return FALSE; + ClearObjectEventMovement(objEvent, &gSprites[objEvent->spriteId]); + ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_FOLLOWER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, EnterPokeballMovement); + } return FALSE; } @@ -1025,7 +1056,15 @@ bool8 ScrCmd_applymovementat(struct ScriptContext *ctx) static bool8 WaitForMovementFinish(void) { - return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapNum, sMovingNpcMapGroup); + if (ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapNum, sMovingNpcMapGroup)) { + struct ObjectEvent *objEvent = GetFollowerObject(); + // If the follower is still entering the pokeball, wait for it to finish too + // This prevents a `release` after this script command from getting the follower stuck in an intermediate state + if (sMovingNpcId != OBJ_EVENT_ID_FOLLOWER && objEvent && ObjectEventGetHeldMovementActionId(objEvent) == MOVEMENT_ACTION_ENTER_POKEBALL) + return ScriptMovement_IsObjectMovementFinished(objEvent->localId, objEvent->mapNum, objEvent->mapGroup); + return TRUE; + } + return FALSE; } bool8 ScrCmd_waitmovement(struct ScriptContext *ctx) @@ -1188,7 +1227,7 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) bool8 ScrCmd_createvobject(struct ScriptContext *ctx) { - u8 graphicsId = ScriptReadByte(ctx); + u16 graphicsId = ScriptReadByte(ctx); // Support u16 in createvobject u8 virtualObjId = ScriptReadByte(ctx); u16 x = VarGet(ScriptReadHalfword(ctx)); u32 y = VarGet(ScriptReadHalfword(ctx)); @@ -1251,6 +1290,10 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx) bool8 ScrCmd_releaseall(struct ScriptContext *ctx) { u8 playerObjectId; + struct ObjectEvent *followerObject = GetFollowerObject(); + // Release follower from movement iff it exists and is in the shadowing state + if (followerObject && gSprites[followerObject->spriteId].data[1] == 0) + ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); HideFieldMessageBox(); playerObjectId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); @@ -1263,6 +1306,10 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx) bool8 ScrCmd_release(struct ScriptContext *ctx) { u8 playerObjectId; + struct ObjectEvent *followerObject = GetFollowerObject(); + // Release follower from movement iff it exists and is in the shadowing state + if (followerObject && gSprites[followerObject->spriteId].data[1] == 0) + ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); HideFieldMessageBox(); if (gObjectEvents[gSelectedObjectEvent].active) @@ -1561,7 +1608,7 @@ bool8 ScrCmd_vmessage(struct ScriptContext *ctx) bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); - u16 species = VarGet(ScriptReadHalfword(ctx)); + u16 species = VarGet(ScriptReadHalfword(ctx)) & ((1 << 10) - 1); // ignore possible shiny / form bits StringCopy(sScriptStringVars[stringVarIndex], gSpeciesNames[species]); return FALSE; @@ -1578,6 +1625,15 @@ bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) return FALSE; } +bool8 ScrFunc_bufferlivemonnickname(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + + GetMonData(GetFirstLiveMon(), MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); + StringGet_Nickname(sScriptStringVars[stringVarIndex]); + return FALSE; +} + bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); @@ -2066,6 +2122,13 @@ bool8 ScrCmd_playmoncry(struct ScriptContext *ctx) return FALSE; } +bool8 ScrFunc_playfirstmoncry(struct ScriptContext *ctx) +{ + u16 species = GetMonData(GetFirstLiveMon(), MON_DATA_SPECIES); + PlayCry_Script(species, 0); + return FALSE; +} + bool8 ScrCmd_waitmoncry(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsCryFinished); diff --git a/src/secret_base.c b/src/secret_base.c index 1a4a0ac9c..836cf1b3d 100755 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -157,7 +157,7 @@ static const struct YesNoFuncTable sDeleteRegistryYesNoFuncs = .noFunc = DeleteRegistry_No, }; -static const u8 sSecretBaseOwnerGfxIds[10] = +static const u16 sSecretBaseOwnerGfxIds[10] = { // Male OBJ_EVENT_GFX_YOUNGSTER, diff --git a/src/shop.c b/src/shop.c index 412622fb3..91ed2bc72 100755 --- a/src/shop.c +++ b/src/shop.c @@ -35,13 +35,14 @@ #include "text_window.h" #include "tv.h" #include "constants/decorations.h" +#include "constants/event_objects.h" #include "constants/items.h" #include "constants/metatile_behaviors.h" #include "constants/rgb.h" #include "constants/songs.h" #define TAG_SCROLL_ARROW 2100 -#define TAG_ITEM_ICON_BASE 2110 +#define TAG_ITEM_ICON_BASE 9110 // immune to time blending #define MAX_ITEMS_SHOWN 8 @@ -1065,7 +1066,8 @@ static void BuyMenuCollectObjectEventData(void) { u8 objEventId = GetObjectEventIdByXY(facingX - 4 + x, facingY - 2 + y); - if (objEventId != OBJECT_EVENTS_COUNT) + // skip if invalid or an overworld pokemon that is not following the player + if (objEventId != OBJECT_EVENTS_COUNT && !(gObjectEvents[objEventId].active && gObjectEvents[objEventId].graphicsId >= OBJ_EVENT_GFX_MON_BASE && gObjectEvents[objEventId].localId != OBJ_EVENT_ID_FOLLOWER)) { sShopData->viewportObjects[numObjects][OBJ_EVENT_ID] = objEventId; sShopData->viewportObjects[numObjects][X_COORD] = x; @@ -1099,7 +1101,12 @@ static void BuyMenuDrawObjectEvents(void) u8 i; u8 spriteId; const struct ObjectEventGraphicsInfo *graphicsInfo; + u8 weatherTemp = gWeatherPtr->palProcessingState; + // This function runs during fadeout, so the weather palette processing state must be temporarily changed, + // so that time-blending will work properly + if (weatherTemp == WEATHER_PAL_STATE_SCREEN_FADING_OUT) + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { if (sShopData->viewportObjects[i][OBJ_EVENT_ID] == OBJECT_EVENTS_COUNT) @@ -1122,6 +1129,9 @@ static void BuyMenuDrawObjectEvents(void) StartSpriteAnim(&gSprites[spriteId], sShopData->viewportObjects[i][ANIM_NUM]); } + + gWeatherPtr->palProcessingState = weatherTemp; // restore weather state + CpuFastCopy(gPlttBufferFaded + 16*16, gPlttBufferUnfaded + 16*16, PLTT_BUFFER_SIZE); } static bool8 BuyMenuCheckIfObjectEventOverlapsMenuBg(s16 *object) diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index 3d7823cf3..e7542c65c 100755 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -273,7 +273,7 @@ u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags, return spriteId; } -static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId) +static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId, bool8 clearPalette) { u8 i; u8 *framePics; @@ -289,7 +289,7 @@ static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId) framePics = sSpritePics[i].frames; images = sSpritePics[i].images; - if (sSpritePics[i].paletteTag != TAG_NONE) + if (clearPalette && sSpritePics[i].paletteTag != TAG_NONE) FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); DestroySprite(&gSprites[spriteId]); Free(framePics); @@ -334,7 +334,12 @@ u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool u16 FreeAndDestroyMonPicSprite(u16 spriteId) { - return FreeAndDestroyPicSpriteInternal(spriteId); + return FreeAndDestroyPicSpriteInternal(spriteId, TRUE); +} + +u16 FreeAndDestroyMonPicSpriteNoPalette(u16 spriteId) +{ + return FreeAndDestroyPicSpriteInternal(spriteId, FALSE); } // Unused @@ -356,7 +361,7 @@ u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 palet u16 FreeAndDestroyTrainerPicSprite(u16 spriteId) { - return FreeAndDestroyPicSpriteInternal(spriteId); + return FreeAndDestroyPicSpriteInternal(spriteId, TRUE); } // Unused diff --git a/src/trainer_see.c b/src/trainer_see.c index 81657f292..78ef3232c 100755 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -63,6 +63,9 @@ EWRAM_DATA u8 gApproachingTrainerId = 0; static const u8 sEmotion_ExclamationMarkGfx[] = INCBIN_U8("graphics/field_effects/pics/emotion_exclamation.4bpp"); static const u8 sEmotion_QuestionMarkGfx[] = INCBIN_U8("graphics/field_effects/pics/emotion_question.4bpp"); static const u8 sEmotion_HeartGfx[] = INCBIN_U8("graphics/field_effects/pics/emotion_heart.4bpp"); +// TODO: Credit https://www.spriters-resource.com/ds_dsi/pokemonheartgoldsoulsilver/sheet/30497/ +static const u8 sEmotion_Gfx[] = INCBIN_U8("graphics/misc/emotes.4bpp"); + static u8 (*const sDirectionalApproachDistanceFuncs[])(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) = { @@ -148,6 +151,109 @@ static const struct SpriteFrameImage sSpriteImageTable_HeartIcon[] = } }; +static const struct SpriteFrameImage sSpriteImageTable_Emotes[] = +{ + { .data = (u8 *)sEmotion_Gfx+0*0x80, .size = 0x80}, // FOLLOWER_EMOTION_HAPPY + { .data = (u8 *)sEmotion_Gfx+1*0x80, .size = 0x80}, // FOLLOWER_EMOTION_HAPPY + { .data = (u8 *)sEmotion_Gfx+2*0x80, .size = 0x80}, // FOLLOWER_EMOTION_NEUTRAL + { .data = (u8 *)sEmotion_Gfx+3*0x80, .size = 0x80}, // FOLLOWER_EMOTION_NEUTRAL + { .data = (u8 *)sEmotion_Gfx+4*0x80, .size = 0x80}, // FOLLOWER_EMOTION_SAD + { .data = (u8 *)sEmotion_Gfx+5*0x80, .size = 0x80}, // FOLLOWER_EMOTION_SAD + { .data = (u8 *)sEmotion_Gfx+6*0x80, .size = 0x80}, // FOLLOWER_EMOTION_UPSET + { .data = (u8 *)sEmotion_Gfx+7*0x80, .size = 0x80}, // FOLLOWER_EMOTION_UPSET + { .data = (u8 *)sEmotion_Gfx+8*0x80, .size = 0x80}, // FOLLOWER_EMOTION_ANGRY + { .data = (u8 *)sEmotion_Gfx+9*0x80, .size = 0x80}, // FOLLOWER_EMOTION_ANGRY + { .data = (u8 *)sEmotion_Gfx+10*0x80, .size = 0x80}, // FOLLOWER_EMOTION_PENSIVE + { .data = (u8 *)sEmotion_Gfx+11*0x80, .size = 0x80}, // FOLLOWER_EMOTION_PENSIVE + { .data = (u8 *)sEmotion_Gfx+12*0x80, .size = 0x80}, // FOLLOWER_EMOTION_LOVE + { .data = (u8 *)sEmotion_Gfx+13*0x80, .size = 0x80}, // FOLLOWER_EMOTION_LOVE + { .data = (u8 *)sEmotion_Gfx+14*0x80, .size = 0x80}, // FOLLOWER_EMOTION_SURPRISE + { .data = (u8 *)sEmotion_Gfx+15*0x80, .size = 0x80}, // FOLLOWER_EMOTION_SURPRISE + { .data = (u8 *)sEmotion_Gfx+16*0x80, .size = 0x80}, // FOLLOWER_EMOTION_CURIOUS + { .data = (u8 *)sEmotion_Gfx+17*0x80, .size = 0x80}, // FOLLOWER_EMOTION_CURIOUS + { .data = (u8 *)sEmotion_Gfx+18*0x80, .size = 0x80}, // FOLLOWER_EMOTION_MUSIC + { .data = (u8 *)sEmotion_Gfx+19*0x80, .size = 0x80}, // FOLLOWER_EMOTION_MUSIC + { .data = (u8 *)sEmotion_Gfx+20*0x80, .size = 0x80}, // FOLLOWER_EMOTION_POISONED + { .data = (u8 *)sEmotion_Gfx+21*0x80, .size = 0x80}, // FOLLOWER_EMOTION_POISONED +}; + +static const union AnimCmd sSpriteAnim_Emotes0[] = { + ANIMCMD_FRAME(0*2, 30), + ANIMCMD_FRAME(0*2+1, 25), + ANIMCMD_FRAME(0*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes1[] = { + ANIMCMD_FRAME(1*2, 30), + ANIMCMD_FRAME(1*2+1, 25), + ANIMCMD_FRAME(1*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes2[] = { + ANIMCMD_FRAME(2*2, 30), + ANIMCMD_FRAME(2*2+1, 25), + ANIMCMD_FRAME(2*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes3[] = { + ANIMCMD_FRAME(3*2, 30), + ANIMCMD_FRAME(3*2+1, 25), + ANIMCMD_FRAME(3*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes4[] = { + ANIMCMD_FRAME(4*2, 30), + ANIMCMD_FRAME(4*2+1, 25), + ANIMCMD_FRAME(4*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes5[] = { + ANIMCMD_FRAME(5*2, 30), + ANIMCMD_FRAME(5*2+1, 25), + ANIMCMD_FRAME(5*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes6[] = { + ANIMCMD_FRAME(6*2, 30), + ANIMCMD_FRAME(6*2+1, 25), + ANIMCMD_FRAME(6*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes7[] = { + ANIMCMD_FRAME(7*2, 30), + ANIMCMD_FRAME(7*2+1, 25), + ANIMCMD_FRAME(7*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes8[] = { + ANIMCMD_FRAME(8*2, 30), + ANIMCMD_FRAME(8*2+1, 25), + ANIMCMD_FRAME(8*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes9[] = { + ANIMCMD_FRAME(9*2, 30), + ANIMCMD_FRAME(9*2+1, 25), + ANIMCMD_FRAME(9*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes10[] = { + ANIMCMD_FRAME(10*2, 30), + ANIMCMD_FRAME(10*2+1, 25), + ANIMCMD_FRAME(10*2, 30), + ANIMCMD_END +}; + static const union AnimCmd sSpriteAnim_Icons1[] = { ANIMCMD_FRAME(0, 60), @@ -166,10 +272,28 @@ static const union AnimCmd *const sSpriteAnimTable_Icons[] = sSpriteAnim_Icons2 }; +static const union AnimCmd *const sSpriteAnimTable_Emotes[] = { + sSpriteAnim_Emotes0, + sSpriteAnim_Emotes1, + sSpriteAnim_Emotes2, + sSpriteAnim_Emotes3, + sSpriteAnim_Emotes4, + sSpriteAnim_Emotes5, + sSpriteAnim_Emotes6, + sSpriteAnim_Emotes7, + sSpriteAnim_Emotes8, + sSpriteAnim_Emotes9, + sSpriteAnim_Emotes10, +}; + +// TODO: Move these declarations into even_object_movement.h +#define OBJ_EVENT_PAL_TAG_MAY 0x1110 +#define OBJ_EVENT_PAL_TAG_EMOTES 0x8003 + static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_MAY, .oam = &sOamData_Icons, .anims = sSpriteAnimTable_Icons, .images = sSpriteImageTable_ExclamationQuestionMark, @@ -180,7 +304,7 @@ static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark = static const struct SpriteTemplate sSpriteTemplate_HeartIcon = { .tileTag = TAG_NONE, - .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .paletteTag = FLDEFF_PAL_TAG_NPC_1, .oam = &sOamData_Icons, .anims = sSpriteAnimTable_Icons, .images = sSpriteImageTable_HeartIcon, @@ -188,6 +312,16 @@ static const struct SpriteTemplate sSpriteTemplate_HeartIcon = .callback = SpriteCB_TrainerIcons }; +static const struct SpriteTemplate sSpriteTemplate_Emote = { + .tileTag = 0xffff, + .paletteTag = OBJ_EVENT_PAL_TAG_EMOTES, + .oam = &sOamData_Icons, + .anims = sSpriteAnimTable_Emotes, + .images = sSpriteImageTable_Emotes, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_TrainerIcons +}; + // code bool8 CheckForTrainersWantingBattle(void) { @@ -470,7 +604,7 @@ static bool8 TrainerExclamationMark(u8 taskId, struct Task *task, struct ObjectE FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON); direction = GetFaceDirectionMovementAction(trainerObj->facingDirection); ObjectEventSetHeldMovement(trainerObj, direction); - task->tFuncId++; // TRSEE_EXCLAMATION_WAIT + task->tFuncId++; return TRUE; } @@ -703,18 +837,32 @@ u8 FldEff_ExclamationMarkIcon(void) { u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x53); - if (spriteId != MAX_SPRITES) - SetIconSpriteData(&gSprites[spriteId], FLDEFF_EXCLAMATION_MARK_ICON, 0); + if (spriteId != MAX_SPRITES) { + SetIconSpriteData(&gSprites[spriteId], FLDEFF_EXCLAMATION_MARK_ICON, 0); + UpdateSpritePaletteByTemplate(&sSpriteTemplate_ExclamationQuestionMark, &gSprites[spriteId]); + } return 0; } u8 FldEff_QuestionMarkIcon(void) { - u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); + u8 spriteId; + if (gFieldEffectArguments[7] >= 0) { // Use follower emotes + u8 emotion = gFieldEffectArguments[7]; + spriteId = CreateSpriteAtEnd(&sSpriteTemplate_Emote, 0, 0, 0x52); + if (spriteId == MAX_SPRITES) + return 0; + SetIconSpriteData(&gSprites[spriteId], FLDEFF_EMOTE, emotion); // Set animation based on emotion + UpdateSpritePaletteByTemplate(&sSpriteTemplate_Emote, &gSprites[spriteId]); + return 0; + } + spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); - if (spriteId != MAX_SPRITES) - SetIconSpriteData(&gSprites[spriteId], FLDEFF_QUESTION_MARK_ICON, 1); + if (spriteId != MAX_SPRITES) { + SetIconSpriteData(&gSprites[spriteId], FLDEFF_QUESTION_MARK_ICON, 1); + UpdateSpritePaletteByTemplate(&sSpriteTemplate_ExclamationQuestionMark, &gSprites[spriteId]); + } return 0; } @@ -722,13 +870,12 @@ u8 FldEff_QuestionMarkIcon(void) u8 FldEff_HeartIcon(void) { u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_HeartIcon, 0, 0, 0x52); - if (spriteId != MAX_SPRITES) { struct Sprite *sprite = &gSprites[spriteId]; SetIconSpriteData(sprite, FLDEFF_HEART_ICON, 0); - sprite->oam.paletteNum = 2; + UpdateSpritePaletteByTemplate(&sSpriteTemplate_HeartIcon, sprite); } return 0; diff --git a/src/union_room_player_avatar.c b/src/union_room_player_avatar.c index a7d5045b3..d8d1da49c 100755 --- a/src/union_room_player_avatar.c +++ b/src/union_room_player_avatar.c @@ -23,9 +23,8 @@ static u8 CreateTask_AnimateUnionRoomPlayers(void); static u32 IsUnionRoomPlayerInvisible(u32, u32); static void SetUnionRoomObjectFacingDirection(s32, s32, u8); -// + 2 is just to match, those elements are empty and never read // Graphics ids should correspond with the classes in gUnionRoomFacilityClasses -static const u8 sUnionRoomObjGfxIds[GENDER_COUNT][NUM_UNION_ROOM_CLASSES + 2] = { +static const u16 sUnionRoomObjGfxIds[GENDER_COUNT][NUM_UNION_ROOM_CLASSES] = { [MALE] = { OBJ_EVENT_GFX_MAN_3, OBJ_EVENT_GFX_BLACK_BELT, @@ -131,7 +130,7 @@ static bool32 IsPlayerStandingStill(void) } // Gender and trainer id are used to determine which sprite a player appears as -static u8 GetUnionRoomPlayerGraphicsId(u32 gender, u32 id) +static u16 GetUnionRoomPlayerGraphicsId(u32 gender, u32 id) { return sUnionRoomObjGfxIds[gender][id % NUM_UNION_ROOM_CLASSES]; } @@ -442,7 +441,7 @@ static bool32 IsUnionRoomPlayerInvisible(u32 leaderId, u32 memberId) return IsVirtualObjectInvisible(UR_PLAYER_SPRITE_ID(leaderId, memberId) - UR_SPRITE_START_ID); } -static void SpawnGroupMember(u32 leaderId, u32 memberId, u8 graphicsId, struct RfuGameData * gameData) +static void SpawnGroupMember(u32 leaderId, u32 memberId, u16 graphicsId, struct RfuGameData * gameData) { s32 x, y; s32 id = UR_PLAYER_SPRITE_ID(leaderId, memberId); diff --git a/src/util.c b/src/util.c index 32f31a26d..40a21a8cf 100755 --- a/src/util.c +++ b/src/util.c @@ -264,6 +264,7 @@ u32 CalcByteArraySum(const u8 *data, u32 length) void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) { u16 i; + struct PlttData *data2 = (struct PlttData *)&blendColor; for (i = 0; i < numEntries; i++) { u16 index = i + palOffset; @@ -271,7 +272,7 @@ void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) s8 r = data1->r; s8 g = data1->g; s8 b = data1->b; - struct PlttData *data2 = (struct PlttData *)&blendColor; + gPlttBufferFaded[index] = RGB(r + (((data2->r - r) * coeff) >> 4), g + (((data2->g - g) * coeff) >> 4), b + (((data2->b - b) * coeff) >> 4));